pespin has submitted this change. ( https://gerrit.osmocom.org/c/libosmo-sigtran/+/42562?usp=email )
Change subject: xua_lm: Use XLM SAP to send M-ASP_{UP, ACTIVE}.req ......................................................................
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(-)
Approvals: Jenkins Builder: Verified laforge: Looks good to me, but someone else must approve pespin: Looks good to me, approved fixeria: Looks good to me, but someone else must approve
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);