pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/libosmo-sigtran/+/42569?usp=email )
Change subject: xua_lm: Handle rx of unsolicited ASPIA ACK ......................................................................
xua_lm: Handle rx of unsolicited ASPIA ACK
Related: OS#6752 Change-Id: Ica4fbaefd08cdb5c4ca2e2a608606ddbec85297c --- M src/xua_default_lm_fsm.c 1 file changed, 12 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmo-sigtran refs/changes/69/42569/1
diff --git a/src/xua_default_lm_fsm.c b/src/xua_default_lm_fsm.c index dbca526..dbe88e1 100644 --- a/src/xua_default_lm_fsm.c +++ b/src/xua_default_lm_fsm.c @@ -62,6 +62,7 @@ LM_E_ASP_UP_CONF, LM_E_ASP_UP_IND, LM_E_ASP_ACT_IND, + LM_E_ASP_INACT_CONF, LM_E_ASP_INACT_IND, LM_E_NOTIFY_IND, LM_E_ERROR_IND, @@ -77,6 +78,7 @@ { LM_E_ASP_UP_CONF, "ASP-UP.conf" }, { LM_E_ASP_UP_IND, "ASP-UP.ind" }, { LM_E_ASP_ACT_IND, "ASP-ACT.ind" }, + { LM_E_ASP_INACT_CONF, "ASP-INACT.conf" }, { LM_E_ASP_INACT_IND, "ASP-INACT.ind" }, { LM_E_NOTIFY_IND, "NOTIFY.ind" }, { LM_E_ERROR_IND, "ERROR.ind" }, @@ -328,6 +330,14 @@ /* This may come in IPSP if we received ASPAC from peer before it answered our ASPAC: */ ENSURE_IPSP(fi, event); break; + case LM_E_ASP_INACT_CONF: + ENSURE_ASP_OR_IPSP(fi, event); + /* RFC 4666 RFC4666 4.3.4.4: Rx unsolicited ASPIA ACK, usually triggered because + * peer's ASP became administratively blocked. + * Try to re-activate, if peer's ASP is indeed blocked we'll probably receive an + * ERR msg and continue from there in the case LM_E_ERROR_IND below. */ + xlm_sap_down_simple(lmp->asp, OSMO_XLM_PRIM_M_ASP_ACTIVE, PRIM_OP_REQUEST); + break; case LM_E_AS_INACTIVE_IND: /* request the ASP to go into active state */ xlm_sap_down_simple(lmp->asp, OSMO_XLM_PRIM_M_ASP_ACTIVE, PRIM_OP_REQUEST); @@ -442,6 +452,7 @@ }, [S_ACTIVE] = { .in_event_mask = S(LM_E_ASP_ACT_IND) | + S(LM_E_ASP_INACT_CONF) | S(LM_E_AS_INACTIVE_IND) | S(LM_E_NOTIFY_IND) | S(LM_E_ERROR_IND), @@ -459,6 +470,7 @@ { XUA_SAP_LM, OSMO_XLM_PRIM_M_ASP_UP, PRIM_OP_CONFIRM, LM_E_ASP_UP_CONF }, { XUA_SAP_LM, OSMO_XLM_PRIM_M_ASP_UP, PRIM_OP_INDICATION, LM_E_ASP_UP_IND }, { XUA_SAP_LM, OSMO_XLM_PRIM_M_ASP_ACTIVE, PRIM_OP_INDICATION, LM_E_ASP_ACT_IND }, + { XUA_SAP_LM, OSMO_XLM_PRIM_M_ASP_INACTIVE, PRIM_OP_CONFIRM, LM_E_ASP_INACT_CONF }, { XUA_SAP_LM, OSMO_XLM_PRIM_M_ASP_INACTIVE, PRIM_OP_INDICATION, LM_E_ASP_INACT_IND }, { XUA_SAP_LM, OSMO_XLM_PRIM_M_AS_STATUS, PRIM_OP_INDICATION, LM_E_AS_STATUS_IND }, { XUA_SAP_LM, OSMO_XLM_PRIM_M_NOTIFY, PRIM_OP_INDICATION, LM_E_NOTIFY_IND },