osmith has uploaded this change for review. (
https://gerrit.osmocom.org/c/osmo-msc/+/41041?usp=email )
Change subject: gsm48_cc_tx_setup_encode_msg: split out
......................................................................
gsm48_cc_tx_setup_encode_msg: split out
Change-Id: I443b4b54c6ad40d852e4c21c896c2d0da5fac239
---
M src/libmsc/gsm_04_08_cc.c
1 file changed, 42 insertions(+), 34 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/41/41041/1
diff --git a/src/libmsc/gsm_04_08_cc.c b/src/libmsc/gsm_04_08_cc.c
index 46f72dc..a429bc4 100644
--- a/src/libmsc/gsm_04_08_cc.c
+++ b/src/libmsc/gsm_04_08_cc.c
@@ -984,10 +984,50 @@
return 0;
}
+static struct msgb *gsm48_cc_tx_setup_encode_msg(const struct gsm_mncc *setup,
+ const struct gsm_mncc_bearer_cap *bearer_cap)
+{
+ struct msgb *msg = gsm48_msgb_alloc_name("GSM 04.08 CC SETUP");
+ struct gsm48_hdr *gh = (struct gsm48_hdr *) msgb_put(msg, sizeof(*gh));
+
+ gh->msg_type = GSM48_MT_CC_SETUP;
+
+ gsm48_encode_bearer_cap(msg, 0, bearer_cap);
+
+ /* Facility */
+ if (setup->fields & MNCC_F_FACILITY)
+ gsm48_encode_facility(msg, 0, &setup->facility);
+ /* Progress */
+ if (setup->fields & MNCC_F_PROGRESS)
+ gsm48_encode_progress(msg, 0, &setup->progress);
+ /* Calling party BCD number */
+ if (setup->fields & MNCC_F_CALLING)
+ gsm48_encode_calling(msg, &setup->calling);
+ /* Called party BCD number */
+ if (setup->fields & MNCC_F_CALLED)
+ gsm48_encode_called(msg, &setup->called);
+ /* Low layer compatibility */
+ if (setup->fields & MNCC_F_LOWL_COMPAT && setup->llc.len > 0
&& setup->llc.len <= sizeof(setup->llc.compat))
+ msgb_tlv_put(msg, GSM48_IE_LOWL_COMPAT, setup->llc.len, setup->llc.compat);
+ /* High layer compatibility */
+ if (setup->fields & MNCC_F_HIGHL_COMPAT && setup->hlc.len > 0
&& setup->hlc.len <= sizeof(setup->hlc.compat))
+ msgb_tlv_put(msg, GSM48_IE_HIGHL_COMPAT, setup->hlc.len, setup->hlc.compat);
+ /* User-user */
+ if (setup->fields & MNCC_F_USERUSER)
+ gsm48_encode_useruser(msg, 0, &setup->useruser);
+ /* Redirecting party BCD number */
+ if (setup->fields & MNCC_F_REDIRECTING)
+ gsm48_encode_redirecting(msg, &setup->redirecting);
+ /* Signal */
+ if (setup->fields & MNCC_F_SIGNAL)
+ gsm48_encode_signal(msg, setup->signal);
+
+ return msg;
+}
+
static int gsm48_cc_tx_setup(struct gsm_trans *trans, void *arg)
{
struct msgb *msg;
- struct gsm48_hdr *gh;
struct gsm_mncc *setup = arg;
int rc;
struct gsm_mncc_bearer_cap bearer_cap;
@@ -1009,39 +1049,7 @@
if (rc < 0)
goto error;
- msg = gsm48_msgb_alloc_name("GSM 04.08 CC SETUP");
- gh = (struct gsm48_hdr *) msgb_put(msg, sizeof(*gh));
- gh->msg_type = GSM48_MT_CC_SETUP;
-
- gsm48_encode_bearer_cap(msg, 0, &bearer_cap);
-
- /* facility */
- if (setup->fields & MNCC_F_FACILITY)
- gsm48_encode_facility(msg, 0, &setup->facility);
- /* progress */
- if (setup->fields & MNCC_F_PROGRESS)
- gsm48_encode_progress(msg, 0, &setup->progress);
- /* calling party BCD number */
- if (setup->fields & MNCC_F_CALLING)
- gsm48_encode_calling(msg, &setup->calling);
- /* called party BCD number */
- if (setup->fields & MNCC_F_CALLED)
- gsm48_encode_called(msg, &setup->called);
- /* low layer compatibility */
- if (setup->fields & MNCC_F_LOWL_COMPAT && setup->llc.len > 0
&& setup->llc.len <= sizeof(setup->llc.compat))
- msgb_tlv_put(msg, GSM48_IE_LOWL_COMPAT, setup->llc.len, setup->llc.compat);
- /* high layer compatibility */
- if (setup->fields & MNCC_F_HIGHL_COMPAT && setup->hlc.len > 0
&& setup->hlc.len <= sizeof(setup->hlc.compat))
- msgb_tlv_put(msg, GSM48_IE_HIGHL_COMPAT, setup->hlc.len, setup->hlc.compat);
- /* user-user */
- if (setup->fields & MNCC_F_USERUSER)
- gsm48_encode_useruser(msg, 0, &setup->useruser);
- /* redirecting party BCD number */
- if (setup->fields & MNCC_F_REDIRECTING)
- gsm48_encode_redirecting(msg, &setup->redirecting);
- /* signal */
- if (setup->fields & MNCC_F_SIGNAL)
- gsm48_encode_signal(msg, setup->signal);
+ msg = gsm48_cc_tx_setup_encode_msg(setup, &bearer_cap);
new_cc_state(trans, GSM_CSTATE_CALL_PRESENT);
--
To view, visit
https://gerrit.osmocom.org/c/osmo-msc/+/41041?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: osmo-msc
Gerrit-Branch: master
Gerrit-Change-Id: I443b4b54c6ad40d852e4c21c896c2d0da5fac239
Gerrit-Change-Number: 41041
Gerrit-PatchSet: 1
Gerrit-Owner: osmith <osmith(a)sysmocom.de>