pespin has submitted this change. ( https://gerrit.osmocom.org/c/libosmo-sigtran/+/42113?usp=email )
(
2 is the latest approved patch-set. No files were changed between the latest approved patch-set and the submitted one. )Change subject: xua_default_lm_fsm: Submit RKM REG REQ for all AS in ASP ......................................................................
xua_default_lm_fsm: Submit RKM REG REQ for all AS in ASP
So far only the first rctx (AS) was being registered. This fixes RKM for ASPs serving multiple AS in ASP/IPSP role.
Relted: OS#6943 Change-Id: I932c1b05dfd37fd7b89adea0d1ea59a5dc6138b4 --- M src/xua_default_lm_fsm.c 1 file changed, 15 insertions(+), 14 deletions(-)
Approvals: osmith: Looks good to me, but someone else must approve laforge: Looks good to me, but someone else must approve Jenkins Builder: Verified pespin: Looks good to me, approved
diff --git a/src/xua_default_lm_fsm.c b/src/xua_default_lm_fsm.c index 1c8df3e..d526f74 100644 --- a/src/xua_default_lm_fsm.c +++ b/src/xua_default_lm_fsm.c @@ -174,6 +174,20 @@ return 0; }
+static void reg_req_all_assoc_as(struct osmo_ss7_asp *asp) +{ + struct ss7_as_asp_assoc *assoc; + llist_for_each_entry(assoc, &asp->assoc_as_list, asp_entry) { + struct osmo_ss7_as *as = assoc->as; + struct osmo_xlm_prim *prim; + prim = xua_xlm_prim_alloc(OSMO_XLM_PRIM_M_RK_REG, PRIM_OP_REQUEST); + OSMO_ASSERT(prim); + prim->u.rk_reg.key = as->cfg.routing_key; + prim->u.rk_reg.traf_mode = as->cfg.mode; + osmo_xlm_sap_down(asp, &prim->oph); + } +} + static void lm_idle(struct osmo_fsm_inst *fi, uint32_t event, void *data) { struct xua_layer_manager_default_priv *lmp = fi->priv; @@ -319,8 +333,6 @@ static int lm_timer_cb(struct osmo_fsm_inst *fi) { struct xua_layer_manager_default_priv *lmp = fi->priv; - struct osmo_xlm_prim *prim; - struct osmo_ss7_as *as;
switch (fi->T) { case SS7_ASP_LM_T_WAIT_ASP_UP: @@ -341,18 +353,7 @@ * (statically) configured at the SG for this ASP, so * let's dynamically register */ lm_fsm_state_chg(fi, S_RKM_REG); - prim = xua_xlm_prim_alloc(OSMO_XLM_PRIM_M_RK_REG, PRIM_OP_REQUEST); - OSMO_ASSERT(prim); - as = ss7_asp_get_first_as(lmp->asp); - if (!as) { - LOGPFSML(fi, LOGL_ERROR, "Unable to find AS!\n"); - ss7_asp_disconnect_stream(lmp->asp); - return 0; - } - /* Fill in settings from first AS (TODO: multiple AS support) */ - prim->u.rk_reg.key = as->cfg.routing_key; - prim->u.rk_reg.traf_mode = as->cfg.mode; - osmo_xlm_sap_down(lmp->asp, &prim->oph); + reg_req_all_assoc_as(lmp->asp); break; case SS7_ASP_LM_T_WAIT_NOTIY_RKM: /* No AS has reported via NOTIFY even after dynamic RKM