[PATCH] libosmo-sccp[master]: xua: move notfiy parameters from xua_internal to sigtran_sap...

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
Sun Apr 9 19:31:09 UTC 2017


Hello Jenkins Builder,

I'd like you to reexamine a change.  Please visit

    https://gerrit.osmocom.org/2261

to look at the new patch set (#5).

xua: move notfiy parameters from xua_internal to sigtran_sap and rename them

Change-Id: I295b9d6755a4bb52a817d2791a302bdd9fc775dd
---
M include/osmocom/sigtran/sigtran_sap.h
M src/m3ua.c
M src/sua.c
M src/xua_as_fsm.c
M src/xua_asp_fsm.c
M src/xua_internal.h
6 files changed, 55 insertions(+), 44 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/libosmo-sccp refs/changes/61/2261/5

diff --git a/include/osmocom/sigtran/sigtran_sap.h b/include/osmocom/sigtran/sigtran_sap.h
index d29c37d..d18aa3d 100644
--- a/include/osmocom/sigtran/sigtran_sap.h
+++ b/include/osmocom/sigtran/sigtran_sap.h
@@ -1,6 +1,7 @@
 #pragma once
 #include <osmocom/core/prim.h>
 
+
 enum osmo_sigtran_sap {
 	SCCP_SAP_USER	= _SAP_SS7_BASE,
 	/* xUA Layer Manager */
@@ -29,10 +30,27 @@
 	OSMO_XLM_PRIM_M_RK_DEREG,
 };
 
+#define NOTIFY_PAR_P_ASP_ID	(1 << 0)
+#define NOTIFY_PAR_P_ROUTE_CTX	(1 << 1)
+
+struct osmo_xlm_prim_notify {
+	uint32_t presence;
+	uint16_t status_type;
+	uint16_t status_info;
+	uint32_t asp_id;
+	uint32_t route_ctx;
+	char *info_string;
+};
+
+struct osmo_xlm_prim_error {
+	uint32_t code;
+};
 
 struct osmo_xlm_prim {
 	struct osmo_prim_hdr oph;
 	union {
+		struct osmo_xlm_prim_notify notify;
+		struct osmo_xlm_prim_error error;
 	} u;
 };
 
diff --git a/src/m3ua.c b/src/m3ua.c
index 031e5cd..0ec4529 100644
--- a/src/m3ua.c
+++ b/src/m3ua.c
@@ -350,7 +350,7 @@
  ***********************************************************************/
 
 /* RFC4666 Ch. 3.8.2. Notify */
-struct xua_msg *m3ua_encode_notify(const struct m3ua_notify_params *npar)
+struct xua_msg *m3ua_encode_notify(const struct osmo_xlm_prim_notify *npar)
 {
 	struct xua_msg *xua = xua_msg_alloc();
 	uint32_t status;
@@ -379,7 +379,7 @@
 }
 
 /* RFC4666 Ch. 3.8.2. Notify */
-int m3ua_decode_notify(struct m3ua_notify_params *npar, void *ctx,
+int m3ua_decode_notify(struct osmo_xlm_prim_notify *npar, void *ctx,
 			const struct xua_msg *xua)
 {
 	struct xua_msg_part *info_ie, *aspid_ie, *status_ie, *rctx_ie;
@@ -538,7 +538,7 @@
 
 static int m3ua_rx_mgmt_ntfy(struct osmo_ss7_asp *asp, struct xua_msg *xua)
 {
-	struct m3ua_notify_params ntfy;
+	struct osmo_xlm_prim_notify ntfy;
 	const char *type_name, *info_name;
 
 	m3ua_decode_notify(&ntfy, asp, xua);
diff --git a/src/sua.c b/src/sua.c
index d9e303b..0f19bea 100644
--- a/src/sua.c
+++ b/src/sua.c
@@ -507,7 +507,7 @@
 
 static int sua_rx_mgmt_ntfy(struct osmo_ss7_asp *asp, struct xua_msg *xua)
 {
-	struct m3ua_notify_params ntfy;
+	struct osmo_xlm_prim_notify ntfy;
 	const char *type_name, *info_name;
 
 	m3ua_decode_notify(&ntfy, asp, xua);
diff --git a/src/xua_as_fsm.c b/src/xua_as_fsm.c
index d73f793..740070b 100644
--- a/src/xua_as_fsm.c
+++ b/src/xua_as_fsm.c
@@ -25,7 +25,7 @@
 #include "xua_as_fsm.h"
 #include "xua_internal.h"
 
-static struct msgb *encode_notify(const struct m3ua_notify_params *npar)
+static struct msgb *encode_notify(const struct osmo_xlm_prim_notify *npar)
 {
 	struct xua_msg *xua = m3ua_encode_notify(npar);
 	struct msgb *msg = xua_to_msg(M3UA_VERSION, xua);
@@ -33,7 +33,7 @@
 	return msg;
 }
 
-static int asp_notify_all_as(struct osmo_ss7_as *as, struct m3ua_notify_params *npar)
+static int asp_notify_all_as(struct osmo_ss7_as *as, struct osmo_xlm_prim_notify *npar)
 {
 	struct msgb *msg;
 	unsigned int i, sent = 0;
@@ -150,7 +150,7 @@
 {
 	struct xua_as_fsm_priv *xafp = (struct xua_as_fsm_priv *) fi->priv;
 	struct osmo_ss7_as *as = xafp->as;
-	struct m3ua_notify_params npar = {
+	struct osmo_xlm_prim_notify npar = {
 		.status_type = M3UA_NOTIFY_T_STATCHG,
 	};
 
diff --git a/src/xua_asp_fsm.c b/src/xua_asp_fsm.c
index aafc09f..d38a18a 100644
--- a/src/xua_asp_fsm.c
+++ b/src/xua_asp_fsm.c
@@ -89,42 +89,42 @@
 	} t_ack;
 };
 
-static struct msgb *xlm_msgb_alloc(void)
+struct osmo_xlm_prim *xua_xlm_prim_alloc(enum osmo_xlm_prim_type prim_type,
+					 enum osmo_prim_operation op)
 {
-	return msgb_alloc_headroom(2048+128, 128, "xua_asp-xlm msgb");
+	struct osmo_xlm_prim *prim;
+	struct msgb *msg = msgb_alloc_headroom(2048+128, 128, "xua_asp-xlm msgb");
+	if (!msg)
+		return NULL;
+
+	prim = (struct osmo_xlm_prim *) msgb_put(msg, sizeof(*prim));
+	osmo_prim_init(&prim->oph, XUA_SAP_LM, prim_type, op, msg);
+
+	return prim;
 }
 
 /* Send a XUA LM Primitive to the XUA Layer Manager (LM) */
-static int send_xlm_prim(struct osmo_fsm_inst *fi,
-			 enum osmo_xlm_prim_type prim_type,
-			 enum osmo_prim_operation op,
-			 const uint8_t *data, unsigned int data_len)
+void xua_asp_send_xlm_prim(struct osmo_ss7_asp *asp, struct osmo_xlm_prim *prim)
 {
-	struct xua_asp_fsm_priv *xafp = fi->priv;
-	struct msgb *xlmsg;
-	struct osmo_xlm_prim *prim;
+	struct xua_asp_fsm_priv *xafp = asp->fi->priv;
 	struct xua_layer_manager *lm = xafp->lm;
 
-	if (!lm || !lm->prim_cb)
-		return 0;
+	if (lm && lm->prim_cb)
+		lm->prim_cb(&prim->oph, xafp->asp);
 
-	xlmsg = xlm_msgb_alloc();
-	if (!xlmsg)
-		return -ENOMEM;
-	prim = (struct osmo_xlm_prim *) msgb_put(xlmsg, sizeof(*prim));
-	osmo_prim_init(&prim->oph, XUA_SAP_LM, prim_type, op, xlmsg);
-
-	lm->prim_cb(&prim->oph, xafp->asp);
-
-	return 0;
+	msgb_free(prim->oph.msg);
 }
 
 /* wrapper around send_xlm_prim for primitives without data */
-static int send_xlm_prim_simple(struct osmo_fsm_inst *fi,
-				enum osmo_xlm_prim_type prim,
+static void send_xlm_prim_simple(struct osmo_fsm_inst *fi,
+				enum osmo_xlm_prim_type prim_type,
 				enum osmo_prim_operation op)
 {
-	return send_xlm_prim(fi, prim, op, NULL, 0);
+	struct osmo_xlm_prim *prim = xua_xlm_prim_alloc(prim_type, op);
+	struct xua_asp_fsm_priv *xafp = fi->priv;
+	if (!prim)
+		return;
+	xua_asp_send_xlm_prim(xafp->asp, prim);
 }
 
 /* ask the xUA implementation to transmit a specific message */
diff --git a/src/xua_internal.h b/src/xua_internal.h
index 24fcb1c..6a3f723 100644
--- a/src/xua_internal.h
+++ b/src/xua_internal.h
@@ -43,19 +43,12 @@
 extern const struct value_string m3ua_ntfy_stchg_names[];
 extern const struct value_string m3ua_ntfy_other_names[];
 
-#define NOTIFY_PAR_P_ASP_ID	(1 << 0)
-#define NOTIFY_PAR_P_ROUTE_CTX	(1 << 1)
-
-struct m3ua_notify_params {
-	uint32_t presence;
-	uint16_t status_type;
-	uint16_t status_info;
-	uint32_t asp_id;
-	uint32_t route_ctx;
-	char *info_string;
-};
-
-struct xua_msg *m3ua_encode_notify(const struct m3ua_notify_params *npar);
-int m3ua_decode_notify(struct m3ua_notify_params *npar, void *ctx,
+struct xua_msg *m3ua_encode_notify(const struct osmo_xlm_prim_notify *npar);
+int m3ua_decode_notify(struct osmo_xlm_prim_notify *npar, void *ctx,
 			const struct xua_msg *xua);
 int m3ua_rx_rkm(struct osmo_ss7_asp *asp, struct xua_msg *xua);
+
+struct osmo_xlm_prim *xua_xlm_prim_alloc(enum osmo_xlm_prim_type prim_type,
+					 enum osmo_prim_operation op);
+
+void xua_asp_send_xlm_prim(struct osmo_ss7_asp *asp, struct osmo_xlm_prim *prim);

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

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I295b9d6755a4bb52a817d2791a302bdd9fc775dd
Gerrit-PatchSet: 5
Gerrit-Project: libosmo-sccp
Gerrit-Branch: master
Gerrit-Owner: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Jenkins Builder



More information about the gerrit-log mailing list