pespin submitted this change.
xua_lm: Use XLM SAP to send M-ASP_{UP, ACTIVE}.req
Change-Id: I5850d9ec9092ff3d099627856697a4184b0d5853
---
M src/xua_default_lm_fsm.c
M src/xua_lm_sap.c
M src/xua_lm_sap.h
3 files changed, 27 insertions(+), 4 deletions(-)
diff --git a/src/xua_default_lm_fsm.c b/src/xua_default_lm_fsm.c
index 9a3cb69..3e36daf 100644
--- a/src/xua_default_lm_fsm.c
+++ b/src/xua_default_lm_fsm.c
@@ -196,7 +196,7 @@
lmp->asp->cfg.role == OSMO_SS7_ASP_ROLE_IPSP) {
/* Try to transition to ASP-UP, wait to receive message for a few seconds */
lm_fsm_state_chg(fi, S_WAIT_ASP_UP);
- osmo_fsm_inst_dispatch(lmp->asp->fi, XUA_ASP_E_M_ASP_UP_REQ, NULL);
+ xlm_sap_down_simple(lmp->asp, OSMO_XLM_PRIM_M_ASP_UP, PRIM_OP_REQUEST);
}
/* role SG: Unimplemented, do nothing, stay in this state forever. */
break;
@@ -249,7 +249,7 @@
break;
lm_fsm_state_chg(fi, S_ACTIVE);
- osmo_fsm_inst_dispatch(lmp->asp->fi, XUA_ASP_E_M_ASP_ACTIVE_REQ, NULL);
+ xlm_sap_down_simple(lmp->asp, OSMO_XLM_PRIM_M_ASP_ACTIVE, PRIM_OP_REQUEST);
break;
case LM_E_ASP_ACT_IND:
ENSURE_SG_OR_IPSP(fi, event);
@@ -262,7 +262,7 @@
* hopefully will bring the AS to active, too) */
lm_fsm_state_chg(fi, S_ACTIVE);
if (lmp->asp->cfg.role != OSMO_SS7_ASP_ROLE_SG)
- osmo_fsm_inst_dispatch(lmp->asp->fi, XUA_ASP_E_M_ASP_ACTIVE_REQ, NULL);
+ xlm_sap_down_simple(lmp->asp, OSMO_XLM_PRIM_M_ASP_ACTIVE, PRIM_OP_REQUEST);
break;
}
};
@@ -306,7 +306,7 @@
break;
case LM_E_AS_INACTIVE_IND:
/* request the ASP to go into active state */
- osmo_fsm_inst_dispatch(lmp->asp->fi, XUA_ASP_E_M_ASP_ACTIVE_REQ, NULL);
+ xlm_sap_down_simple(lmp->asp, OSMO_XLM_PRIM_M_ASP_ACTIVE, PRIM_OP_REQUEST);
break;
case LM_E_NOTIFY_IND:
oxp = data;
diff --git a/src/xua_lm_sap.c b/src/xua_lm_sap.c
index 6d870d6..8e89afb 100644
--- a/src/xua_lm_sap.c
+++ b/src/xua_lm_sap.c
@@ -35,6 +35,7 @@
#include <osmocom/sigtran/osmo_ss7.h>
#include <osmocom/sigtran/sigtran_sap.h>
+#include "xua_asp_fsm.h"
#include "xua_internal.h"
#include "ss7_asp.h"
@@ -142,6 +143,14 @@
osmo_xlm_prim_name(&prim->oph));
switch (OSMO_PRIM_HDR(&prim->oph)) {
+ case OSMO_PRIM(OSMO_XLM_PRIM_M_ASP_UP, PRIM_OP_REQUEST):
+ /* Layer Manager asks us to send an ASPUP REQ */
+ osmo_fsm_inst_dispatch(asp->fi, XUA_ASP_E_M_ASP_UP_REQ, NULL);
+ break;
+ case OSMO_PRIM(OSMO_XLM_PRIM_M_ASP_ACTIVE, PRIM_OP_REQUEST):
+ /* Layer Manager asks us to send an ASPAC REQ */
+ osmo_fsm_inst_dispatch(asp->fi, XUA_ASP_E_M_ASP_ACTIVE_REQ, NULL);
+ break;
case OSMO_PRIM(OSMO_XLM_PRIM_M_RK_REG, PRIM_OP_REQUEST):
/* Layer Manager asks us to send a Routing Key Reg Request */
xua_rkm_send_reg_req(asp, &prim->u.rk_reg.key, prim->u.rk_reg.traf_mode);
@@ -159,3 +168,13 @@
msgb_free(prim->oph.msg);
return 0;
}
+
+/* wrapper around osmo_xlm_sap_down for primitives without data */
+int xlm_sap_down_simple(struct osmo_ss7_asp *asp,
+ enum osmo_xlm_prim_type prim_type,
+ enum osmo_prim_operation op)
+{
+ struct osmo_xlm_prim *prim = xua_xlm_prim_alloc(prim_type, op);
+ OSMO_ASSERT(prim);
+ return osmo_xlm_sap_down(asp, &prim->oph);
+}
diff --git a/src/xua_lm_sap.h b/src/xua_lm_sap.h
index 3609eb2..01fe6fc 100644
--- a/src/xua_lm_sap.h
+++ b/src/xua_lm_sap.h
@@ -22,3 +22,7 @@
void xua_asp_send_xlm_prim_simple(struct osmo_ss7_asp *asp,
enum osmo_xlm_prim_type prim_type,
enum osmo_prim_operation op);
+
+int xlm_sap_down_simple(struct osmo_ss7_asp *asp,
+ enum osmo_xlm_prim_type prim_type,
+ enum osmo_prim_operation op);
To view, visit change 42562. To unsubscribe, or for help writing mail filters, visit settings.