lists.osmocom.org
Sign In Sign Up
Manage this list Sign In Sign Up

Keyboard Shortcuts

Thread View

  • j: Next unread message
  • k: Previous unread message
  • j a: Jump to all threads
  • j l: Jump to MailingList overview

gerrit-log

Thread Start a new thread
Download
Threads by month
  • ----- 2026 -----
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2025 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2024 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2023 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2022 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
gerrit-log@lists.osmocom.org

March 2025

  • 1 participants
  • 1378 discussions
[S] Change in ...osmo-s1gw[master]: sctp_server: invalidate handler's Pid on 'EXIT'
by fixeria 03 Mar '25

03 Mar '25
fixeria has submitted this change. ( https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/39631?usp=email ) Change subject: sctp_server: invalidate handler's Pid on 'EXIT' ...................................................................... sctp_server: invalidate handler's Pid on 'EXIT' An 'EXIT' signal indicates that a connection handling process is dead, so the respective pid shall not be referenced anymore. When this happens, the current implementation shuts the eNB association down gracefully and simply erases the respective client state from the clients dictionary. The problem with this approach is that we're bypassing the logic in client_del/2 and, as a result, never decrementing the ?S1GW_GAUGE_S1AP_ENB_NUM_SCTP_CONNECTIONS. When in sctp_recv/2 we receive a 'shutdown_comp' event and call client_del/2, the client state is already gone. Instead of erasing the client state on 'EXIT', invalidate handler's pid by setting it to undefined and keep the clients dictionary intact. Leave the task of dictionary manipulation up to client_{add,del} API. Change-Id: I21fedf8579baa54dc1e7ade348abffd7ee9b04c4 Related: SYS#7288 --- M src/sctp_server.erl 1 file changed, 9 insertions(+), 3 deletions(-) Approvals: Jenkins Builder: Verified pespin: Looks good to me, approved diff --git a/src/sctp_server.erl b/src/sctp_server.erl index 9b10bbe..0a42011 100644 --- a/src/sctp_server.erl +++ b/src/sctp_server.erl @@ -69,7 +69,7 @@ }). -record(client_state, {addr_port :: addr_port(), - pid :: pid() + pid :: pid() | undefined }). @@ -153,10 +153,12 @@ #server_state{sock = Sock, clients = Clients} = S0) -> ?LOG_DEBUG("Child process ~p terminated with reason ~p", [Pid, Reason]), case client_find(Pid, S0) of - {ok, {Aid, _Client}} -> + {ok, {Aid, C0}} -> %% gracefully close the eNB connection gen_sctp:eof(Sock, #sctp_assoc_change{assoc_id = Aid}), - S1 = S0#server_state{clients = dict:erase(Aid, Clients)}, + %% invalidate pid in the client's state + C1 = C0#client_state{pid = undefined}, + S1 = S0#server_state{clients = dict:store(Aid, C1, Clients)}, {noreply, S1}; error -> {noreply, S0} @@ -207,6 +209,9 @@ ?LOG_DEBUG("eNB connection (id=~p, ~p:~p) -> MME: ~p", [Aid, FromAddr, FromPort, Data]), s1gw_metrics:ctr_inc(?S1GW_CTR_S1AP_ENB_ALL_RX), case dict:find(Aid, Clients) of + {ok, #client_state{pid = undefined}} -> + ?LOG_NOTICE("eNB connection (id=~p, ~p:~p) -> MME data ignored (no handler)", + [Aid, FromAddr, FromPort]); {ok, #client_state{pid = Pid}} -> Handler:send_data(Pid, Data); error -> @@ -247,6 +252,7 @@ s1gw_metrics:gauge_dec(?S1GW_GAUGE_S1AP_ENB_NUM_SCTP_CONNECTIONS), S#server_state{clients = dict:erase(Aid, Clients)}; error -> + ?LOG_ERROR("eNB connection (id=~p) is not known to us?!?", [Aid]), S end. -- To view, visit https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/39631?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: erlang/osmo-s1gw Gerrit-Branch: master Gerrit-Change-Id: I21fedf8579baa54dc1e7ade348abffd7ee9b04c4 Gerrit-Change-Number: 39631 Gerrit-PatchSet: 2 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
1 0
0 0
[M] Change in osmo-ttcn3-hacks[master]: stp: Fix brokeness in STP_Tests_M3UA.TC_tmt_loadshare
by pespin 03 Mar '25

03 Mar '25
Attention is currently required from: fixeria, laforge, osmith. pespin has posted comments on this change by pespin. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39651?usp=email ) Change subject: stp: Fix brokeness in STP_Tests_M3UA.TC_tmt_loadshare ...................................................................... Patch Set 6: (1 comment) Commit Message: https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39651/comment/b06ce705_2f93… : PS1, Line 9: UIT > IUT? Done -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39651?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: comment Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: I16d81cb2f88bb2927f248182ad4f8f27c8c24859 Gerrit-Change-Number: 39651 Gerrit-PatchSet: 6 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Attention: osmith <osmith(a)sysmocom.de> Gerrit-Attention: laforge <laforge(a)osmocom.org> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Comment-Date: Mon, 03 Mar 2025 20:25:20 +0000 Gerrit-HasComments: Yes Gerrit-Has-Labels: No Comment-In-Reply-To: osmith <osmith(a)sysmocom.de>
1 0
0 0
[M] Change in osmo-ttcn3-hacks[master]: stp: Fix brokeness in STP_Tests_M3UA.TC_tmt_loadshare
by pespin 03 Mar '25

03 Mar '25
Attention is currently required from: fixeria, laforge, osmith, pespin. Hello Jenkins Builder, fixeria, laforge, osmith, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39651?usp=email to look at the new patch set (#6). Change subject: stp: Fix brokeness in STP_Tests_M3UA.TC_tmt_loadshare ...................................................................... stp: Fix brokeness in STP_Tests_M3UA.TC_tmt_loadshare The test was not even setting the traffic-mode in the IUT. Furthermore, it was expecting pure round-robin behavior, which was the older behavior of osmo-stp when loadshare traffic-mode was selected. Actually split the test into 2, naming them properly (since round robin is not a AS traffic mode in itself, but a possible implementation of the loadshare traffic-mode. The new test validates the usual loadshare traffic-mode based on SLS distribution. Related: SYS#7112 Depends: libosmo-sigtran.git Change-Id I61340549c596f1c04bc2269dbc165c327bf72037 Change-Id: I16d81cb2f88bb2927f248182ad4f8f27c8c24859 --- M stp/STP_Tests_M3UA.ttcn M stp/expected-results.xml 2 files changed, 107 insertions(+), 9 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/51/39651/6 -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39651?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: newpatchset Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: I16d81cb2f88bb2927f248182ad4f8f27c8c24859 Gerrit-Change-Number: 39651 Gerrit-PatchSet: 6 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Attention: osmith <osmith(a)sysmocom.de> Gerrit-Attention: laforge <laforge(a)osmocom.org> Gerrit-Attention: pespin <pespin(a)sysmocom.de> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de>
1 0
0 0
[M] Change in osmo-ttcn3-hacks[master]: stp: Introduce tests TC_dyn_(2)asp_as_rkm_permitted
by pespin 03 Mar '25

03 Mar '25
pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39647?usp=email ) Change subject: stp: Introduce tests TC_dyn_(2)asp_as_rkm_permitted ...................................................................... stp: Introduce tests TC_dyn_(2)asp_as_rkm_permitted These tests allows testing behavior of scenarios related to dynamic ASP/AS/RKM improved/fixed in libosmo-sigtran.git Change-Ids: I986044944282cea9a13ed59424f2220fee6fe567 I85948ab98623a8a53521eb2d2e84244011b39a93 I3dffa2e9c554f03c7c721b757ff33a89961665b5 Change-Id: Ic3116cbe63832003876ae19b31491275aebb41a9 --- M stp/STP_Tests_M3UA.ttcn M stp/expected-results.xml 2 files changed, 109 insertions(+), 0 deletions(-) Approvals: Jenkins Builder: Verified osmith: Looks good to me, but someone else must approve pespin: Looks good to me, approved diff --git a/stp/STP_Tests_M3UA.ttcn b/stp/STP_Tests_M3UA.ttcn index 674097a..c3598d3 100644 --- a/stp/STP_Tests_M3UA.ttcn +++ b/stp/STP_Tests_M3UA.ttcn @@ -815,6 +815,109 @@ f_clear_m3ua(); } +/* RFC 4666 5.1.1.2 "Single ASP in Application Server ("1+0" Sparing), Dynamic Registration" */ +testcase TC_dyn_asp_as_rkm_permitted() runs on RAW_M3UA_CT { + /* Pick ports not configured in osmo-stp for any ASP: */ + var M3uaConfigs m3ua_configs := { + { + use_tcp := false, + remote_port := 2905, + local_port := 2222, + point_code := 22, + routing_ctx := 220 + } + }; + var OCT4 rctx0 := int2oct(m3ua_configs[0].routing_ctx, 4); + f_init_common(); + f_vty_config2(VTY, {"cs7 instance 0"}, "xua rkm routing-key-allocation dynamic-permitted"); + f_init_m3ua(m3ua_configs := m3ua_configs, m3ua_num_clients := 1, m3ua_num_servers := 0); + + /* ASPUP + ACK */ + f_M3UA_asp_up(0); + + /* REG REQ + RESP */ + f_M3UA_send(0, ts_M3UA_REG_REQ({ts_M3UA_rkey(id:='00000001'O, + dpc:=int2oct(m3ua_configs[0].point_code, 3), + tmt := c_M3UA_TMT_loadshare, + rctx := rctx0)})); + f_M3UA_exp(0, tr_M3UA_REG_RSP({tr_M3UA_reg_res(id:='00000001'O, status:=c_M3UA_REGSTS_SUCCESS, + rctx:=rctx0)})); + f_M3UA_exp(0, tr_M3UA_NOTIFY(c_M3UA_ST_T_STATE_CHG, c_M3UA_ST_I_AS_INACTIVE, *)); + + /* ASPAC + ACK */ + f_M3UA_asp_act(0, c_M3UA_TMT_loadshare, rctx0); + f_M3UA_exp(0, tr_M3UA_NOTIFY(c_M3UA_ST_T_STATE_CHG, c_M3UA_ST_I_AS_ACTIVE, *)); + + f_vty_config2(VTY, {"cs7 instance 0"}, "xua rkm routing-key-allocation static-only"); + f_clear_m3ua(); +} + +/* RFC 4666 5.1.3 "Two ASPs in an Application Server ("1+1" Sparing, Loadsharing Case)" */ +testcase TC_dyn_2asp_as_rkm_permitted() runs on RAW_M3UA_CT { + /* Pick ports not configured in osmo-stp for any ASP: */ + var M3uaConfigs m3ua_configs := { + { + use_tcp := false, + remote_port := 2905, + local_port := 2222, + point_code := 22, + routing_ctx := 220 + }, { + use_tcp := false, + remote_port := 2905, + local_port := 2223, + point_code := 22, + routing_ctx := 220 + } + }; + var OCT4 rctx0 := int2oct(m3ua_configs[0].routing_ctx, 4); + var OCT4 rctx1 := int2oct(m3ua_configs[0].routing_ctx, 4); + f_init_common(); + f_vty_config2(VTY, {"cs7 instance 0"}, "xua rkm routing-key-allocation dynamic-permitted"); + f_init_m3ua(m3ua_configs := m3ua_configs, m3ua_num_clients := 2, m3ua_num_servers := 0); + + ///////// ASP 0 ///////////// + /* ASPUP + ACK */ + f_M3UA_asp_up(0); + + /* REG REQ + RESP */ + f_M3UA_send(0, ts_M3UA_REG_REQ({ts_M3UA_rkey(id:='00000001'O, + dpc:=int2oct(m3ua_configs[0].point_code, 3), + tmt := c_M3UA_TMT_loadshare, + rctx := rctx0)})); + f_M3UA_exp(0, tr_M3UA_REG_RSP({tr_M3UA_reg_res(id:='00000001'O, status:=c_M3UA_REGSTS_SUCCESS, + rctx:=rctx0)})); + f_M3UA_exp(0, tr_M3UA_NOTIFY(c_M3UA_ST_T_STATE_CHG, c_M3UA_ST_I_AS_INACTIVE, *)); + + /* ASPAC + ACK */ + f_M3UA_asp_act(0, c_M3UA_TMT_loadshare, rctx0); + f_M3UA_exp(0, tr_M3UA_NOTIFY(c_M3UA_ST_T_STATE_CHG, c_M3UA_ST_I_AS_ACTIVE, *)); + + ///////// ASP 1 ///////////// + /* ASPUP + ACK */ + f_M3UA_asp_up(1); + + /* REG REQ + RESP */ + f_M3UA_send(1, ts_M3UA_REG_REQ({ts_M3UA_rkey(id:='00000001'O, + dpc:=int2oct(m3ua_configs[1].point_code, 3), + tmt := c_M3UA_TMT_loadshare, + rctx := rctx1)})); + f_M3UA_exp(1, tr_M3UA_REG_RSP({tr_M3UA_reg_res(id:='00000001'O, status:=c_M3UA_REGSTS_SUCCESS, + rctx:=rctx1)})); + /* See RFC4666 4.3.4.5: There's a NOTIFY sent to this ASP after + * ASPUP+ASPUP-ACK to let it know AS state. */ + f_M3UA_exp(1, tr_M3UA_NOTIFY(c_M3UA_ST_T_STATE_CHG, c_M3UA_ST_I_AS_ACTIVE, *)); + + /* ASPAC + ACK */ + f_M3UA_asp_act(1, c_M3UA_TMT_loadshare, rctx1); + /* See RFC 4666 5.1.4: No NOTIFY is sent because there's no state change. + * f_M3UA_exp(1, tr_M3UA_NOTIFY(c_M3UA_ST_T_STATE_CHG, c_M3UA_ST_I_AS_ACTIVE, *)); + */ + + f_vty_config2(VTY, {"cs7 instance 0"}, "xua rkm routing-key-allocation static-only"); + f_clear_m3ua(); +} + /*********************************************************************** * Test the STP in M3UA ASP role (we are SG) ***********************************************************************/ @@ -1333,6 +1436,10 @@ /* TODO: register/unregister multiple routing contexts in one message; including mixed success/failure situations */ + /* test dynamic ASP & AS with dynamic RKM */ + execute( TC_dyn_asp_as_rkm_permitted() ); + execute( TC_dyn_2asp_as_rkm_permitted() ); + /* Test STP as SCTP client + M3UA ASP role */ execute( TC_clnt_connect_asp_up() ); execute( TC_clnt_asp_act() ); diff --git a/stp/expected-results.xml b/stp/expected-results.xml index fdb4e44..bc9c861 100644 --- a/stp/expected-results.xml +++ b/stp/expected-results.xml @@ -22,6 +22,8 @@ <testcase classname='STP_Tests_M3UA' name='TC_rkm_unreg_invalid' time='MASKED'/> <testcase classname='STP_Tests_M3UA' name='TC_rkm_unreg_registered' time='MASKED'/> <testcase classname='STP_Tests_M3UA' name='TC_rkm_unreg_active' time='MASKED'/> + <testcase classname='STP_Tests_M3UA' name='TC_dyn_asp_as_rkm_permitted' time='MASKED'/> + <testcase classname='STP_Tests_M3UA' name='TC_dyn_2asp_as_rkm_permitted' time='MASKED'/> <testcase classname='STP_Tests_M3UA' name='TC_clnt_connect_asp_up' time='MASKED'/> <testcase classname='STP_Tests_M3UA' name='TC_clnt_asp_act' time='MASKED'/> <testcase classname='STP_Tests_M3UA' name='TC_clnt_sg_to_asp' time='MASKED'/> -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39647?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: Ic3116cbe63832003876ae19b31491275aebb41a9 Gerrit-Change-Number: 39647 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
1 0
0 0
[XS] Change in osmo-ttcn3-hacks[master]: stp: Fix expectancies of TC_clnt_quirk_snm_inactive
by pespin 03 Mar '25

03 Mar '25
pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39619?usp=email ) Change subject: stp: Fix expectancies of TC_clnt_quirk_snm_inactive ...................................................................... stp: Fix expectancies of TC_clnt_quirk_snm_inactive The test STP_Tests_M3UA.TC_clnt_quirk_snm_inactive validates the snm_inactive quirk by sending a DAUD before the link being activated, and expecting a DAVA to make sure osmo-stp did indeed process the SNM message. However, osmo-stp used to lack proper route validation based on link state, which means it would incorrectly assumed the link for the affected PC (55) in the test was active and hence would answer with a DAVA. After libosmo-sigtran.git Change-Id I928fb1ef5db6922f1386a188e3fbf9e70780f25d this wrong behavior is fixed, and hence osmo-stp starts answering with a DUNA instead of a DAVA, since AS "as-client" has not yet been activated during the test. Fix the test expectancies by expecting a DUNA instead of a DAVA. Change-Id: I907981c1487b299df852c405bae1fefff4bf5191 Depends: libosmo-sigtran.git Change-Id I928fb1ef5db6922f1386a188e3fbf9e70780f25d Related: SYS#7112 --- M stp/STP_Tests_M3UA.ttcn 1 file changed, 1 insertion(+), 1 deletion(-) Approvals: laforge: Looks good to me, but someone else must approve Jenkins Builder: Verified osmith: Looks good to me, approved fixeria: Looks good to me, but someone else must approve diff --git a/stp/STP_Tests_M3UA.ttcn b/stp/STP_Tests_M3UA.ttcn index c3598d3..3fb3fc0 100644 --- a/stp/STP_Tests_M3UA.ttcn +++ b/stp/STP_Tests_M3UA.ttcn @@ -1325,7 +1325,7 @@ var template (value) M3UA_Point_Codes aff_pcs := { ts_M3UA_PC(f_m3ua_srv_config(0).point_code) }; f_M3UA_send(M3UA_SRV(0), ts_M3UA_DAUD(aff_pcs)); - f_M3UA_exp(M3UA_SRV(0), tr_M3UA_DAVA(aff_pcs)); + f_M3UA_exp(M3UA_SRV(0), tr_M3UA_DUNA(aff_pcs)); setverdict(pass); f_no_quirk("no_notify"); -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39619?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: I907981c1487b299df852c405bae1fefff4bf5191 Gerrit-Change-Number: 39619 Gerrit-PatchSet: 2 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: daniel <dwillmann(a)sysmocom.de> Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
1 0
0 0
[M] Change in osmo-ttcn3-hacks[master]: stp: Introduce tests TC_dyn_(2)asp_as_rkm_permitted
by pespin 03 Mar '25

03 Mar '25
pespin has posted comments on this change by pespin. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39647?usp=email ) Change subject: stp: Introduce tests TC_dyn_(2)asp_as_rkm_permitted ...................................................................... Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39647?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: comment Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: Ic3116cbe63832003876ae19b31491275aebb41a9 Gerrit-Change-Number: 39647 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Comment-Date: Mon, 03 Mar 2025 20:05:12 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes
1 0
0 0
[M] Change in libosmo-sigtran[master]: Make sure to NOTIFY current state to peer after ASP UP ACK / REG RESP
by pespin 03 Mar '25

03 Mar '25
pespin has submitted this change. ( https://gerrit.osmocom.org/c/libosmo-sigtran/+/39640?usp=email ) Change subject: Make sure to NOTIFY current state to peer after ASP UP ACK / REG RESP ...................................................................... Make sure to NOTIFY current state to peer after ASP UP ACK / REG RESP As per RFC4666 4.3.4.5: """ When an ASP moves from ASP-DOWN to ASP-INACTIVE within a particular AS, a Notify message SHOULD be sent, by the ASP-UP receptor, after sending the ASP-UP-ACK, in order to inform the ASP of the current AS state.""" It also needs to be done for REG RESP in order to support dynamic ASPs/ASs, since in that case if dynamic ASP sends to SG an ASP-UP msg, it contains no RCTX/AS reference, and hence the ASP will only be assigned to an AS after the REG-REQ is sent, at which point we can send the AS status to it. Change-Id: I3dffa2e9c554f03c7c721b757ff33a89961665b5 --- M src/xua_as_fsm.c M src/xua_as_fsm.h M src/xua_asp_fsm.c M src/xua_rkm.c 4 files changed, 129 insertions(+), 27 deletions(-) Approvals: laforge: Looks good to me, but someone else must approve osmith: Looks good to me, but someone else must approve Jenkins Builder: Verified pespin: Looks good to me, approved diff --git a/src/xua_as_fsm.c b/src/xua_as_fsm.c index 577c7d3..c4a167c 100644 --- a/src/xua_as_fsm.c +++ b/src/xua_as_fsm.c @@ -39,6 +39,19 @@ return msg; } +static void tx_notify(struct osmo_ss7_asp *asp, const struct osmo_xlm_prim_notify *npar) +{ + const char *type_name, *info_name, *info_str; + type_name = get_value_string(m3ua_ntfy_type_names, npar->status_type); + info_name = m3ua_ntfy_info_name(npar->status_type, npar->status_info); + info_str = npar->info_string ? npar->info_string : ""; + + LOGPASP(asp, DLSS7, LOGL_INFO, "Tx NOTIFY Type %s:%s (%s)\n", + type_name, info_name, info_str); + struct msgb *msg = encode_notify(npar); + osmo_ss7_asp_send(asp, msg); +} + static int as_notify_all_asp(struct osmo_ss7_as *as, struct osmo_xlm_prim_notify *npar) { struct msgb *msg; @@ -184,6 +197,37 @@ bool ipa_route_created; }; +static void fill_notify_statchg_pars(const struct osmo_fsm_inst *fi, struct osmo_xlm_prim_notify *npar) +{ + struct xua_as_fsm_priv *xafp = (struct xua_as_fsm_priv *) fi->priv; + struct osmo_ss7_as *as = xafp->as; + *npar = (struct osmo_xlm_prim_notify){ + .status_type = M3UA_NOTIFY_T_STATCHG, + }; + + switch (fi->state) { + case XUA_AS_S_INACTIVE: + npar->status_info = M3UA_NOTIFY_I_AS_INACT; + break; + case XUA_AS_S_ACTIVE: + npar->status_info = M3UA_NOTIFY_I_AS_ACT; + break; + case XUA_AS_S_PENDING: + npar->status_info = M3UA_NOTIFY_I_AS_PEND; + break; + case XUA_AS_S_DOWN: + default: + /* Nothing will be sent anyway... */ + return; + } + + /* Add the routing context, if it is configured */ + if (as->cfg.routing_key.context) { + npar->presence |= NOTIFY_PAR_P_ROUTE_CTX; + npar->route_ctx = as->cfg.routing_key.context; + } +} + /* is the given AS one with a single ASP of IPA type? */ static bool is_single_ipa_asp(struct osmo_ss7_as *as) { @@ -351,21 +395,21 @@ { struct xua_as_fsm_priv *xafp = (struct xua_as_fsm_priv *) fi->priv; struct osmo_ss7_as *as = xafp->as; - struct osmo_xlm_prim_notify npar = { - .status_type = M3UA_NOTIFY_T_STATCHG, - }; + struct osmo_xlm_prim_notify npar; + + fill_notify_statchg_pars(fi, &npar); switch (fi->state) { case XUA_AS_S_INACTIVE: - npar.status_info = M3UA_NOTIFY_I_AS_INACT; + /* continue below */ break; case XUA_AS_S_ACTIVE: if (is_single_ipa_asp(as)) ipa_add_route(fi); - npar.status_info = M3UA_NOTIFY_I_AS_ACT; + /* continue below */ break; case XUA_AS_S_PENDING: - npar.status_info = M3UA_NOTIFY_I_AS_PEND; + /* continue below */ break; case XUA_AS_S_DOWN: if (is_single_ipa_asp(as)) @@ -384,11 +428,7 @@ return; } - /* Add the routing context, if it is configured */ - if (as->cfg.routing_key.context) { - npar.presence |= NOTIFY_PAR_P_ROUTE_CTX; - npar.route_ctx = as->cfg.routing_key.context; - } + fill_notify_statchg_pars(fi, &npar); /* TODO: ASP-Id of ASP triggering this state change */ @@ -409,10 +449,13 @@ static void xua_as_fsm_inactive(struct osmo_fsm_inst *fi, uint32_t event, void *data) { struct xua_as_fsm_priv *xafp = (struct xua_as_fsm_priv *) fi->priv; - struct osmo_ss7_asp *asp = data; + struct osmo_ss7_asp *asp; + struct xua_as_event_asp_inactive_ind_pars *inact_ind_pars; + struct osmo_xlm_prim_notify npar; switch (event) { case XUA_ASPAS_ASP_DOWN_IND: + asp = data; /* one ASP transitions into ASP-DOWN */ if (check_any_other_asp_not_down(xafp->as, asp)) { /* ignore, we stay AS_INACTIVE */ @@ -424,7 +467,11 @@ osmo_fsm_inst_state_chg(fi, XUA_AS_S_ACTIVE, 0, 0); break; case XUA_ASPAS_ASP_INACTIVE_IND: - /* ignore */ + inact_ind_pars = data; + if (inact_ind_pars->asp_requires_notify) { + fill_notify_statchg_pars(fi, &npar); + tx_notify(inact_ind_pars->asp, &npar); + } break; } } @@ -433,14 +480,19 @@ { struct xua_as_fsm_priv *xafp = (struct xua_as_fsm_priv *) fi->priv; struct osmo_ss7_asp *asp; + struct xua_as_event_asp_inactive_ind_pars *inact_ind_pars; struct msgb *msg; + struct osmo_xlm_prim_notify npar; switch (event) { case XUA_ASPAS_ASP_DOWN_IND: case XUA_ASPAS_ASP_INACTIVE_IND: - asp = data; - if (check_any_other_asp_in_active(xafp->as, asp)) { - /* ignore, we stay AS_ACTIVE */ + inact_ind_pars = data; + if (check_any_other_asp_in_active(xafp->as, inact_ind_pars->asp)) { + if (event == XUA_ASPAS_ASP_INACTIVE_IND && inact_ind_pars->asp_requires_notify) { + fill_notify_statchg_pars(fi, &npar); + tx_notify(inact_ind_pars->asp, &npar); + } /* ASP_DOWN_IND: ignore, nothing to be sent */ } else { uint32_t recovery_msec = xafp->as->cfg.recovery_timeout_msec; osmo_fsm_inst_state_chg(fi, XUA_AS_S_PENDING, 0, 0); @@ -467,7 +519,9 @@ static void xua_as_fsm_pending(struct osmo_fsm_inst *fi, uint32_t event, void *data) { struct xua_as_fsm_priv *xafp = (struct xua_as_fsm_priv *) fi->priv; + struct xua_as_event_asp_inactive_ind_pars *inact_ind_pars; struct msgb *msg; + struct osmo_xlm_prim_notify npar; switch (event) { case XUA_ASPAS_ASP_ACTIVE_IND: @@ -479,7 +533,11 @@ xua_as_transmit_msg(xafp->as, msg); break; case XUA_ASPAS_ASP_INACTIVE_IND: - /* ignore */ + inact_ind_pars = data; + if (inact_ind_pars->asp_requires_notify) { + fill_notify_statchg_pars(fi, &npar); + tx_notify(inact_ind_pars->asp, &npar); + } break; case XUA_ASPAS_ASP_DOWN_IND: /* ignore */ diff --git a/src/xua_as_fsm.h b/src/xua_as_fsm.h index 0e71350..cf897e2 100644 --- a/src/xua_as_fsm.h +++ b/src/xua_as_fsm.h @@ -1,6 +1,7 @@ #pragma once struct osmo_ss7_as; +struct osmo_ss7_asp; enum xua_as_state { XUA_AS_S_DOWN, @@ -9,8 +10,17 @@ XUA_AS_S_PENDING, }; +struct xua_as_event_asp_inactive_ind_pars { + struct osmo_ss7_asp *asp; + /* RFC4666 4.3.4.5: "When an ASP moves from ASP-DOWN to ASP-INACTIVE within a + * particular AS, a Notify message SHOULD be sent, by the ASP-UP receptor, + * after sending the ASP-UP-ACK, in order to inform the ASP of the current AS + * state." */ + bool asp_requires_notify; +}; + enum xua_as_event { - XUA_ASPAS_ASP_INACTIVE_IND, + XUA_ASPAS_ASP_INACTIVE_IND, /* param: struct xua_as_event_asp_inactive_ind_pars* */ XUA_ASPAS_ASP_DOWN_IND, XUA_ASPAS_ASP_ACTIVE_IND, XUA_AS_E_RECOVERY_EXPD, diff --git a/src/xua_asp_fsm.c b/src/xua_asp_fsm.c index 12640d6..0e39b0d 100644 --- a/src/xua_asp_fsm.c +++ b/src/xua_asp_fsm.c @@ -355,7 +355,7 @@ /* Helper function to dispatch an ASP->AS event to all AS of which this * ASP is a memmber. Ignores routing contexts for now. */ -static void dispatch_to_all_as(struct osmo_fsm_inst *fi, uint32_t event) +static void dispatch_to_all_as(struct osmo_fsm_inst *fi, uint32_t event, void *data) { struct xua_asp_fsm_priv *xafp = fi->priv; struct osmo_ss7_asp *asp = xafp->asp; @@ -365,7 +365,7 @@ llist_for_each_entry(as, &inst->as_list, list) { if (!osmo_ss7_as_has_asp(as, asp)) continue; - osmo_fsm_inst_dispatch(as->fi, event, asp); + osmo_fsm_inst_dispatch(as->fi, event, data); } } @@ -418,7 +418,9 @@ static void xua_asp_fsm_down_onenter(struct osmo_fsm_inst *fi, uint32_t prev_state) { - dispatch_to_all_as(fi, XUA_ASPAS_ASP_DOWN_IND); + struct xua_asp_fsm_priv *xafp = fi->priv; + struct osmo_ss7_asp *asp = xafp->asp; + dispatch_to_all_as(fi, XUA_ASPAS_ASP_DOWN_IND, asp); } static void xua_asp_fsm_down(struct osmo_fsm_inst *fi, uint32_t event, void *data) @@ -478,7 +480,17 @@ static void xua_asp_fsm_inactive_onenter(struct osmo_fsm_inst *fi, uint32_t prev_state) { - dispatch_to_all_as(fi, XUA_ASPAS_ASP_INACTIVE_IND); + struct xua_asp_fsm_priv *xafp = fi->priv; + /* RFC4666 4.3.4.5: "When an ASP moves from ASP-DOWN to ASP-INACTIVE within a + * particular AS, a Notify message SHOULD be sent, by the ASP-UP receptor, + * after sending the ASP-UP-ACK, in order to inform the ASP of the current AS + * state." + */ + struct xua_as_event_asp_inactive_ind_pars pars = { + .asp = xafp->asp, + .asp_requires_notify = (prev_state == XUA_ASP_S_DOWN), + }; + dispatch_to_all_as(fi, XUA_ASPAS_ASP_INACTIVE_IND, &pars); } static void xua_asp_fsm_inactive(struct osmo_fsm_inst *fi, uint32_t event, void *data) @@ -596,7 +608,9 @@ static void xua_asp_fsm_active_onenter(struct osmo_fsm_inst *fi, uint32_t prev_state) { - dispatch_to_all_as(fi, XUA_ASPAS_ASP_ACTIVE_IND); + struct xua_asp_fsm_priv *xafp = fi->priv; + struct osmo_ss7_asp *asp = xafp->asp; + dispatch_to_all_as(fi, XUA_ASPAS_ASP_ACTIVE_IND, asp); } static void xua_asp_fsm_active(struct osmo_fsm_inst *fi, uint32_t event, void *data) @@ -1047,8 +1061,14 @@ static void ipa_asp_fsm_active_onenter(struct osmo_fsm_inst *fi, uint32_t prev_state) { - dispatch_to_all_as(fi, XUA_ASPAS_ASP_INACTIVE_IND); - dispatch_to_all_as(fi, XUA_ASPAS_ASP_ACTIVE_IND); + struct ipa_asp_fsm_priv *iafp = fi->priv; + struct osmo_ss7_asp *asp = iafp->asp; + struct xua_as_event_asp_inactive_ind_pars pars = { + .asp = asp, + .asp_requires_notify = false, + }; + dispatch_to_all_as(fi, XUA_ASPAS_ASP_INACTIVE_IND, &pars); + dispatch_to_all_as(fi, XUA_ASPAS_ASP_ACTIVE_IND, asp); } /* Server + Client: We're actively transmitting user data */ @@ -1064,7 +1084,12 @@ static void ipa_asp_fsm_inactive_onenter(struct osmo_fsm_inst *fi, uint32_t prev_state) { - dispatch_to_all_as(fi, XUA_ASPAS_ASP_INACTIVE_IND); + struct ipa_asp_fsm_priv *iafp = fi->priv; + struct xua_as_event_asp_inactive_ind_pars pars = { + .asp = iafp->asp, + .asp_requires_notify = false, + }; + dispatch_to_all_as(fi, XUA_ASPAS_ASP_INACTIVE_IND, &pars); } static void ipa_asp_fsm_inactive(struct osmo_fsm_inst *fi, uint32_t event, void *data) diff --git a/src/xua_rkm.c b/src/xua_rkm.c index f616a3a..9e77095 100644 --- a/src/xua_rkm.c +++ b/src/xua_rkm.c @@ -346,7 +346,16 @@ if (!as) continue; /* Notify AS that it has an INACTIVE ASP */ - osmo_fsm_inst_dispatch(as->fi, XUA_ASPAS_ASP_INACTIVE_IND, asp); + /* RFC4666 4.3.4.5: "When an ASP moves from ASP-DOWN to ASP-INACTIVE within a + * particular AS, a Notify message SHOULD be sent, by the ASP-UP receptor, + * after sending the ASP-UP-ACK, in order to inform the ASP of the current AS + * state." + */ + struct xua_as_event_asp_inactive_ind_pars pars = { + .asp = asp, + .asp_requires_notify = true, + }; + osmo_fsm_inst_dispatch(as->fi, XUA_ASPAS_ASP_INACTIVE_IND, &pars); } return 0; -- To view, visit https://gerrit.osmocom.org/c/libosmo-sigtran/+/39640?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: libosmo-sigtran Gerrit-Branch: master Gerrit-Change-Id: I3dffa2e9c554f03c7c721b757ff33a89961665b5 Gerrit-Change-Number: 39640 Gerrit-PatchSet: 6 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
1 0
0 0
[XS] Change in libosmo-sigtran[master]: asp: Add debug log when transmitting on ASP
by pespin 03 Mar '25

03 Mar '25
pespin has submitted this change. ( https://gerrit.osmocom.org/c/libosmo-sigtran/+/39649?usp=email ) ( 1 is the latest approved patch-set. No files were changed between the latest approved patch-set and the submitted one. )Change subject: asp: Add debug log when transmitting on ASP ...................................................................... asp: Add debug log when transmitting on ASP Change-Id: I8095ea02fdb063f9928035a20f257dd6bf0e6420 --- M src/osmo_ss7_asp.c 1 file changed, 1 insertion(+), 0 deletions(-) Approvals: osmith: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/osmo_ss7_asp.c b/src/osmo_ss7_asp.c index b766071..3f6500c 100644 --- a/src/osmo_ss7_asp.c +++ b/src/osmo_ss7_asp.c @@ -1172,6 +1172,7 @@ } rate_ctr_inc2(asp->ctrg, SS7_ASP_CTR_PKT_TX_TOTAL); + LOGPASP(asp, DLSS7, LOGL_DEBUG, "Tx %d bytes: %s\n", msg->len, msgb_hexdump(msg)); if (asp->cfg.is_server) { if (!asp->server) { -- To view, visit https://gerrit.osmocom.org/c/libosmo-sigtran/+/39649?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: libosmo-sigtran Gerrit-Branch: master Gerrit-Change-Id: I8095ea02fdb063f9928035a20f257dd6bf0e6420 Gerrit-Change-Number: 39649 Gerrit-PatchSet: 3 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
1 0
0 0
[XS] Change in libosmo-sigtran[master]: Improve format of logline prefix in LOGAS(P) macro
by pespin 03 Mar '25

03 Mar '25
pespin has submitted this change. ( https://gerrit.osmocom.org/c/libosmo-sigtran/+/39648?usp=email ) ( 1 is the latest approved patch-set. No files were changed between the latest approved patch-set and the submitted one. )Change subject: Improve format of logline prefix in LOGAS(P) macro ...................................................................... Improve format of logline prefix in LOGAS(P) macro Adding "as-" and "asp" is totally misleading, because it's usual that we name ASs "as-XYZ" and ASPs "asp-XYZ". Intead, better use a usual prefix formatting to indicate the context. Change-Id: Ib7b6652f2a96bf5c2a2233043755e0c639d41544 --- M src/ss7_as.h M src/ss7_asp.h 2 files changed, 2 insertions(+), 2 deletions(-) Approvals: Jenkins Builder: Verified osmith: Looks good to me, approved diff --git a/src/ss7_as.h b/src/ss7_as.h index 9f4be25..4a7c50d 100644 --- a/src/ss7_as.h +++ b/src/ss7_as.h @@ -70,4 +70,4 @@ unsigned int osmo_ss7_as_count_asp(const struct osmo_ss7_as *as); #define LOGPAS(as, subsys, level, fmt, args ...) \ - _LOGSS7((as)->inst, subsys, level, "as-%s: " fmt, (as)->cfg.name, ## args) + _LOGSS7((as)->inst, subsys, level, "AS(%s) " fmt, (as)->cfg.name, ## args) diff --git a/src/ss7_asp.h b/src/ss7_asp.h index a05d870..483c5ea 100644 --- a/src/ss7_asp.h +++ b/src/ss7_asp.h @@ -114,4 +114,4 @@ void osmo_ss7_asp_remove_default_lm(struct osmo_ss7_asp *asp); #define LOGPASP(asp, subsys, level, fmt, args ...) \ - _LOGSS7((asp)->inst, subsys, level, "asp-%s: " fmt, (asp)->cfg.name, ## args) + _LOGSS7((asp)->inst, subsys, level, "ASP(%s) " fmt, (asp)->cfg.name, ## args) -- To view, visit https://gerrit.osmocom.org/c/libosmo-sigtran/+/39648?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: libosmo-sigtran Gerrit-Branch: master Gerrit-Change-Id: Ib7b6652f2a96bf5c2a2233043755e0c639d41544 Gerrit-Change-Number: 39648 Gerrit-PatchSet: 3 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
1 0
0 0
[S] Change in libosmo-sigtran[master]: m3ua: Log Tx NOTIFY msg
by pespin 03 Mar '25

03 Mar '25
pespin has submitted this change. ( https://gerrit.osmocom.org/c/libosmo-sigtran/+/39638?usp=email ) ( 3 is the latest approved patch-set. No files were changed between the latest approved patch-set and the submitted one. )Change subject: m3ua: Log Tx NOTIFY msg ...................................................................... m3ua: Log Tx NOTIFY msg Change-Id: Iae3f0922bd924e1472d551c8a3144b203da21f79 --- M src/m3ua.c M src/xua_as_fsm.c M src/xua_internal.h 3 files changed, 24 insertions(+), 14 deletions(-) Approvals: osmith: Looks good to me, but someone else must approve Jenkins Builder: Verified laforge: Looks good to me, approved diff --git a/src/m3ua.c b/src/m3ua.c index 5f94674..78f1aef 100644 --- a/src/m3ua.c +++ b/src/m3ua.c @@ -100,6 +100,19 @@ { 0, NULL } }; +const char *m3ua_ntfy_info_name(uint16_t ntfy_status_type, uint16_t ntfy_status_info) +{ + switch (ntfy_status_type) { + case M3UA_NOTIFY_T_STATCHG: + return get_value_string(m3ua_ntfy_stchg_names, ntfy_status_info); + case M3UA_NOTIFY_T_OTHER: + return get_value_string(m3ua_ntfy_other_names, ntfy_status_info); + default: + break; + } + return "NULL"; +} + static const struct value_string m3ua_iei_names[] = { { M3UA_IEI_INFO_STRING, "INFO String" }, { M3UA_IEI_ROUTE_CTX, "Routing Context" }, @@ -643,20 +656,7 @@ m3ua_decode_notify(&ntfy, asp, xua); type_name = get_value_string(m3ua_ntfy_type_names, ntfy.status_type); - - switch (ntfy.status_type) { - case M3UA_NOTIFY_T_STATCHG: - info_name = get_value_string(m3ua_ntfy_stchg_names, - ntfy.status_info); - break; - case M3UA_NOTIFY_T_OTHER: - info_name = get_value_string(m3ua_ntfy_other_names, - ntfy.status_info); - break; - default: - info_name = "NULL"; - break; - } + info_name = m3ua_ntfy_info_name(ntfy.status_type, ntfy.status_info); LOGPASP(asp, DLM3UA, LOGL_NOTICE, "Received NOTIFY Type %s:%s (%s)\n", type_name, info_name, ntfy.info_string ? ntfy.info_string : ""); diff --git a/src/xua_as_fsm.c b/src/xua_as_fsm.c index 6517f73..577c7d3 100644 --- a/src/xua_as_fsm.c +++ b/src/xua_as_fsm.c @@ -43,11 +43,18 @@ { struct msgb *msg; unsigned int i, sent = 0; + const char *type_name, *info_name, *info_str; /* we don't send notify to IPA peers! */ if (as->cfg.proto == OSMO_SS7_ASP_PROT_IPA) return 0; + type_name = get_value_string(m3ua_ntfy_type_names, npar->status_type); + info_name = m3ua_ntfy_info_name(npar->status_type, npar->status_info); + info_str = npar->info_string ? npar->info_string : ""; + LOGPFSM(as->fi, "Broadcasting NOTIFY Type %s:%s (%s) to all non-DOWN ASPs\n", + type_name, info_name, info_str); + /* iterate over all non-DOWN ASPs and send them the message */ for (i = 0; i < ARRAY_SIZE(as->cfg.asps); i++) { struct osmo_ss7_asp *asp = as->cfg.asps[i]; @@ -71,6 +78,8 @@ /* TODO: Optional Routing Context */ + LOGPASP(asp, DLSS7, LOGL_INFO, "Tx NOTIFY Type %s:%s (%s)\n", + type_name, info_name, info_str); msg = encode_notify(npar); osmo_ss7_asp_send(asp, msg); sent++; diff --git a/src/xua_internal.h b/src/xua_internal.h index 4f6e931..3e9c15b 100644 --- a/src/xua_internal.h +++ b/src/xua_internal.h @@ -71,6 +71,7 @@ extern const struct value_string m3ua_ntfy_type_names[]; extern const struct value_string m3ua_ntfy_stchg_names[]; extern const struct value_string m3ua_ntfy_other_names[]; +const char *m3ua_ntfy_info_name(uint16_t ntfy_status_type, uint16_t ntfy_status_info); struct xua_msg *m3ua_encode_notify(const struct osmo_xlm_prim_notify *npar); int m3ua_decode_notify(struct osmo_xlm_prim_notify *npar, void *ctx, -- To view, visit https://gerrit.osmocom.org/c/libosmo-sigtran/+/39638?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: libosmo-sigtran Gerrit-Branch: master Gerrit-Change-Id: Iae3f0922bd924e1472d551c8a3144b203da21f79 Gerrit-Change-Number: 39638 Gerrit-PatchSet: 4 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
1 0
0 0
  • ← Newer
  • 1
  • ...
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • ...
  • 138
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.