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


Change subject: ipa: Use ASP name as ipa_unit_name on dynamic ASPs
......................................................................

ipa: Use ASP name as ipa_unit_name on dynamic ASPs

A recent patch fixed a long problem where the ASP name (instead of
expected AS name) was used as ipa_unit_name in IPA based ASPs.
For server side it doesn't matter much, sense anyway the ipa_unit_name
is actually restored on the struct with what's received in IPA GET_RESP
message (see ipa_asp_fsm_wait_id_resp()). So the fix was actually for
the client side in the scenario where a non-dynamic ASP with an assigned
AS was configured in the VTY.

However, dynamic ASPs usually have no assigned AS (because in general it
is really not created/configured, as the ASP is created on the flight).
As a result, the recent patch (see "Fixes" below), broke dynamic ASPs
case because from then one ipa_asp_fsm_start() would fail and terminate
the FSM because ipa_find_as_for_asp() was returning NULL.

So improve the recent patch by applying the previous logic for dynamic
ASPs:
* On the server side, it really doesn't matter since as mentioned, the
  field will be repopulated later on, but allows the code to avoid
terminating the FSM.
* On the client case, this is how dynamic IPA ASPs were mento be used
  when they were introduced anyway.

Fixes: 65741dca056e3a16973ad156dd4c09760a6a945b
Change-Id: I0a741449450c998253b1e44a76a3b7fc224e0903
Related: SYS#5914
---
M src/xua_asp_fsm.c
1 file changed, 48 insertions(+), 6 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/libosmo-sccp refs/changes/48/35348/1

diff --git a/src/xua_asp_fsm.c b/src/xua_asp_fsm.c
index cc9a13a..6d81ce2 100644
--- a/src/xua_asp_fsm.c
+++ b/src/xua_asp_fsm.c
@@ -1191,24 +1191,33 @@
        struct osmo_fsm_inst *fi;
        struct ipa_asp_fsm_priv *iafp;
        struct osmo_ss7_as *as = ipa_find_as_for_asp(asp);
+       const char *unit_name;

        /* allocate as child of AS? */
        fi = osmo_fsm_inst_alloc(&ipa_asp_fsm, asp, NULL, log_level, 
asp->cfg.name);

-       if (!as) {
-               osmo_fsm_inst_term(fi, OSMO_FSM_TERM_ERROR, NULL);
-               return NULL;
-       }
-
        iafp = talloc_zero(fi, struct ipa_asp_fsm_priv);
        if (!iafp) {
                osmo_fsm_inst_term(fi, OSMO_FSM_TERM_ERROR, NULL);
                return NULL;
        }
+
+       if (as) {
+               unit_name = as->cfg.name;
+       } else if (asp->dyn_allocated) {
+               LOGPFSML(fi, LOGL_INFO, "Dynamic ASP is not assigned to any AS, 
"
+                        "using ASP name instead of AS name as 
ipa_unit_name\n");
+               unit_name = asp->cfg.name;
+       } else {
+               LOGPFSML(fi, LOGL_ERROR, "ASP is not assigned to any AS, fix 
your config!\n");
+               osmo_fsm_inst_term(fi, OSMO_FSM_TERM_ERROR, NULL);
+               return NULL;
+       }
+
        iafp->role = role;
        iafp->asp = asp;
        iafp->ipa_unit = talloc_zero(iafp, struct ipaccess_unit);
-       iafp->ipa_unit->unit_name = talloc_strdup(iafp->ipa_unit, as->cfg.name);
+       iafp->ipa_unit->unit_name = talloc_strdup(iafp->ipa_unit, unit_name);
        iafp->pong_timer.cb = ipa_pong_timer_cb;
        iafp->pong_timer.data = fi;


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

Gerrit-Project: libosmo-sccp
Gerrit-Branch: master
Gerrit-Change-Id: I0a741449450c998253b1e44a76a3b7fc224e0903
Gerrit-Change-Number: 35348
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pes...@sysmocom.de>
Gerrit-MessageType: newchange

Reply via email to