[PATCH] libosmo-sccp[master]: m3ua: Generalize + Export function to generate MTP-TRANSFER ...

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

Harald Welte gerrit-no-reply at lists.osmocom.org
Sat Apr 15 20:54:51 UTC 2017


Review at  https://gerrit.osmocom.org/2360

m3ua: Generalize + Export function to generate MTP-TRANSFER xua_msg

Change-Id: If82956317ec703341514ad81057eceb3d0714f47
---
M src/m3ua.c
M src/osmo_ss7_hmrt.c
M src/xua_internal.h
3 files changed, 27 insertions(+), 16 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/libosmo-sccp refs/changes/60/2360/1

diff --git a/src/m3ua.c b/src/m3ua.c
index a7ef06c..b204708 100644
--- a/src/m3ua.c
+++ b/src/m3ua.c
@@ -318,6 +318,30 @@
 				   M3UA_MSG_HEADROOM, name);
 }
 
+struct xua_msg *m3ua_xfer_from_data(const struct m3ua_data_hdr *data_hdr,
+				    const uint8_t *data, unsigned int data_len)
+{
+	struct xua_msg *xua = xua_msg_alloc();
+	struct xua_msg_part *data_part;
+
+	xua->hdr = XUA_HDR(M3UA_MSGC_XFER, M3UA_XFER_DATA);
+	/* Network Appearance: Optional */
+	/* Routing Context: Conditional */
+	/* Protocol Data: Mandatory */
+	data_part = talloc_zero(xua, struct xua_msg_part);
+	OSMO_ASSERT(data_part);
+	data_part->tag = M3UA_IEI_PROT_DATA;
+	data_part->len = sizeof(*data_hdr) + data_len;
+	data_part->dat = talloc_size(data_part, data_part->len);
+	OSMO_ASSERT(data_part->dat);
+	memcpy(data_part->dat, data_hdr, sizeof(*data_hdr));
+	memcpy(data_part->dat+sizeof(*data_hdr), data, data_len);
+	llist_add_tail(&data_part->entry, &xua->headers);
+	/* Correlation Id: Optional */
+
+	return xua;
+}
+
 /***********************************************************************
  * ERROR generation
  ***********************************************************************/
diff --git a/src/osmo_ss7_hmrt.c b/src/osmo_ss7_hmrt.c
index 105a542..ce0728b 100644
--- a/src/osmo_ss7_hmrt.c
+++ b/src/osmo_ss7_hmrt.c
@@ -51,27 +51,12 @@
 static struct xua_msg *mtp_prim_to_m3ua(struct osmo_mtp_prim *prim)
 {
 	struct msgb *msg = prim->oph.msg;
-	struct xua_msg *xua = xua_msg_alloc();
 	struct osmo_mtp_transfer_param *param = &prim->u.transfer;
-	struct xua_msg_part *data_part;
 	struct m3ua_data_hdr data_hdr;
 
 	mtp_xfer_param_to_m3ua_dh(&data_hdr, param);
 
-	xua->hdr = XUA_HDR(M3UA_MSGC_XFER, M3UA_XFER_DATA);
-	/* Network Appearance: Optional */
-	/* Routing Context: Conditional */
-	/* Protocol Data: Mandatory */
-	data_part = talloc_zero(xua, struct xua_msg_part);
-	data_part->tag = M3UA_IEI_PROT_DATA;
-	data_part->len = sizeof(data_hdr) + msgb_l2len(msg);
-	data_part->dat = talloc_size(data_part, data_part->len);
-	memcpy(data_part->dat, &data_hdr, sizeof(data_hdr));
-	memcpy(data_part->dat+sizeof(data_hdr), msgb_l2(msg), msgb_l2len(msg));
-	llist_add_tail(&data_part->entry, &xua->headers);
-	/* Correlation Id: Optional */
-
-	return xua;
+	return m3ua_xfer_from_data(&data_hdr, msgb_l2(msg), msgb_l2len(msg));
 }
 
 /* delivery given XUA message to given SS7 user */
diff --git a/src/xua_internal.h b/src/xua_internal.h
index 31c941e..3831f56 100644
--- a/src/xua_internal.h
+++ b/src/xua_internal.h
@@ -25,6 +25,8 @@
 int m3ua_rx_msg(struct osmo_ss7_asp *asp, struct msgb *msg);
 
 struct msgb *m3ua_msgb_alloc(const char *name);
+struct xua_msg *m3ua_xfer_from_data(const struct m3ua_data_hdr *data_hdr,
+				    const uint8_t *data, unsigned int data_len);
 struct m3ua_data_hdr *data_hdr_from_m3ua(struct xua_msg *xua);
 void m3ua_dh_to_xfer_param(struct osmo_mtp_transfer_param *param,
 			   const struct m3ua_data_hdr *mdh);

-- 
To view, visit https://gerrit.osmocom.org/2360
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: If82956317ec703341514ad81057eceb3d0714f47
Gerrit-PatchSet: 1
Gerrit-Project: libosmo-sccp
Gerrit-Branch: master
Gerrit-Owner: Harald Welte <laforge at gnumonks.org>



More information about the gerrit-log mailing list