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