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


Change subject: xua_default_lm_fsm: Move timer_cb further below
......................................................................

xua_default_lm_fsm: Move timer_cb further below

As usually done in osmo_fsm implemnetations.

Change-Id: Ibdc04d9ece0b3955da44849755a87ec28c17f140
---
M src/xua_default_lm_fsm.c
1 file changed, 51 insertions(+), 52 deletions(-)



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

diff --git a/src/xua_default_lm_fsm.c b/src/xua_default_lm_fsm.c
index aa60db2..bfd00e9 100644
--- a/src/xua_default_lm_fsm.c
+++ b/src/xua_default_lm_fsm.c
@@ -185,58 +185,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:
-               /* we have been waiting for the ASP to come up, but it
-                * failed to do so */
-               LOGPFSML(fi, LOGL_NOTICE, "Peer didn't send any ASP_UP in time! 
Restarting ASP\n");
-               ss7_asp_disconnect_stream(lmp->asp);
-               break;
-       case SS7_ASP_LM_T_WAIT_NOTIFY:
-               if (lmp->asp->cfg.quirks & OSMO_SS7_ASP_QUIRK_NO_NOTIFY) {
-                       /* some implementations don't send the NOTIFY which 
they SHOULD
-                        * according to RFC4666 (see OS#5145) */
-                       LOGPFSM(fi, "quirk no_notify active; locally emulate 
AS-INACTIVE.ind\n");
-                       osmo_fsm_inst_dispatch(fi, LM_E_AS_INACTIVE_IND, NULL);
-                       break;
-               }
-               /* No AS has reported via NOTIFY that is was
-                * (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 = find_first_as_in_asp(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);
-               break;
-       case SS7_ASP_LM_T_WAIT_NOTIY_RKM:
-               /* No AS has reported via NOTIFY even after dynamic RKM
-                * configuration */
-               ss7_asp_disconnect_stream(lmp->asp);
-               break;
-       case SS7_ASP_LM_T_WAIT_RK_REG_RESP:
-               /* timeout of registration of routing key */
-               ss7_asp_disconnect_stream(lmp->asp);
-               break;
-       }
-       return 0;
-}
-
 static void lm_wait_notify(struct osmo_fsm_inst *fi, uint32_t event, void 
*data)
 {
        struct xua_layer_manager_default_priv *lmp = fi->priv;
@@ -327,6 +275,57 @@
        }
 }

+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:
+               /* we have been waiting for the ASP to come up, but it
+                * failed to do so */
+               LOGPFSML(fi, LOGL_NOTICE, "Peer didn't send any ASP_UP in time! 
Restarting ASP\n");
+               ss7_asp_disconnect_stream(lmp->asp);
+               break;
+       case SS7_ASP_LM_T_WAIT_NOTIFY:
+               if (lmp->asp->cfg.quirks & OSMO_SS7_ASP_QUIRK_NO_NOTIFY) {
+                       /* some implementations don't send the NOTIFY which 
they SHOULD
+                        * according to RFC4666 (see OS#5145) */
+                       LOGPFSM(fi, "quirk no_notify active; locally emulate 
AS-INACTIVE.ind\n");
+                       osmo_fsm_inst_dispatch(fi, LM_E_AS_INACTIVE_IND, NULL);
+                       break;
+               }
+               /* No AS has reported via NOTIFY that is was
+                * (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 = find_first_as_in_asp(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);
+               break;
+       case SS7_ASP_LM_T_WAIT_NOTIY_RKM:
+               /* No AS has reported via NOTIFY even after dynamic RKM
+                * configuration */
+               ss7_asp_disconnect_stream(lmp->asp);
+               break;
+       case SS7_ASP_LM_T_WAIT_RK_REG_RESP:
+               /* timeout of registration of routing key */
+               ss7_asp_disconnect_stream(lmp->asp);
+               break;
+       }
+       return 0;
+}
+
 static const struct osmo_fsm_state lm_states[] = {
        [S_IDLE] = {
                .in_event_mask = S(LM_E_SCTP_EST_IND),

--
To view, visit https://gerrit.osmocom.org/c/libosmo-sigtran/+/42060?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: Ibdc04d9ece0b3955da44849755a87ec28c17f140
Gerrit-Change-Number: 42060
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <[email protected]>

Reply via email to