pespin has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/libosmo-sigtran/+/42113?usp=email )


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 thre 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(-)



  git pull ssh://gerrit.osmocom.org:29418/libosmo-sigtran 
refs/changes/13/42113/1

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

--
To view, visit https://gerrit.osmocom.org/c/libosmo-sigtran/+/42113?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings?usp=email

Gerrit-MessageType: newchange
Gerrit-Project: libosmo-sigtran
Gerrit-Branch: master
Gerrit-Change-Id: I932c1b05dfd37fd7b89adea0d1ea59a5dc6138b4
Gerrit-Change-Number: 42113
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <[email protected]>

Reply via email to