laforge has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43383?usp=email )
Change subject: stp: Use SI in valid range when transmitting data ......................................................................
stp: Use SI in valid range when transmitting data
ITU Q.704 14.2.1 defines Service Indicator as being 4 bits, hence valid range of the field is 0..0x0F. M3UA encodes it inside a full octet "justified to the least significant bit. Unused bits are coded `0'."
Make sure we send a value inside range, since newer libosmo-sigtran will validate the received m3ua field. Use SI=0010 "spare" since we are not really sending any meaningful data.
Change-Id: I1d0553b0ed57b9283dd988e0f686dea8a4f17ebb --- M stp/STP_Tests_M3UA.ttcn 1 file changed, 10 insertions(+), 10 deletions(-)
Approvals: laforge: Looks good to me, approved osmith: Looks good to me, but someone else must approve Jenkins Builder: Verified
diff --git a/stp/STP_Tests_M3UA.ttcn b/stp/STP_Tests_M3UA.ttcn index f1ce309..ff8f08a 100644 --- a/stp/STP_Tests_M3UA.ttcn +++ b/stp/STP_Tests_M3UA.ttcn @@ -776,7 +776,7 @@ /* Test if traffic is routed from idx_tx/pc_tx to idx_rx/pc_rx */ friend function f_test_traffic(integer idx_tx, template (omit) OCT4 rctx_sender, OCT4 pc_tx, integer idx_rx, template (omit) OCT4 rctx_receiver, OCT4 pc_rx, - OCT1 si := '23'O, OCT1 ni := mp_ni, OCT1 mp := '00'O, OCT1 sls := '00'O) + OCT1 si := '02'O, OCT1 ni := mp_ni, OCT1 mp := '00'O, OCT1 sls := '00'O) runs on RAW_M3UA_CT { var octetstring data := f_rnd_octstring_rnd_len(100); f_M3UA_send(idx_tx, ts_M3UA_DATA(rctx_sender, @@ -865,8 +865,8 @@ var octetstring data := f_rnd_octstring_rnd_len(100); var template (value) M3UA_Protocol_Data tx_pd; var template (present) M3UA_Protocol_Data rx_pd; - tx_pd := ts_M3UA_protocol_data(pc_sender, pc_receiver, '23'O, '00'O, '00'O, '00'O, data); - rx_pd := tr_M3UA_protocol_data(pc_sender, pc_receiver, '23'O, '00'O, '00'O, '00'O, data); + tx_pd := ts_M3UA_protocol_data(pc_sender, pc_receiver, '02'O, '00'O, '00'O, '00'O, data); + rx_pd := tr_M3UA_protocol_data(pc_sender, pc_receiver, '02'O, '00'O, '00'O, '00'O, data); f_M3UA_send(0, ts_M3UA_DATA(rctx_sender, tx_pd), 1); alt { [] as_count_rx(1, tr_M3UA_DATA(rctx_receiver, rx_pd), num_rx[1]); @@ -947,8 +947,8 @@ /* Distribute traffic over ASPs based on SLS, since OPC is always the same. * SLS in ITU is 4 bits. */ var OCT1 sls := int2oct(i mod 16, 1); - tx_pd := ts_M3UA_protocol_data(pc_sender, pc_receiver, '23'O, '00'O, '00'O, sls, data); - rx_pd := tr_M3UA_protocol_data(pc_sender, pc_receiver, '23'O, '00'O, '00'O, sls, data); + tx_pd := ts_M3UA_protocol_data(pc_sender, pc_receiver, '02'O, '00'O, '00'O, sls, data); + rx_pd := tr_M3UA_protocol_data(pc_sender, pc_receiver, '02'O, '00'O, '00'O, sls, data); f_M3UA_send(0, ts_M3UA_DATA(rctx_sender, tx_pd), 1); alt { [] as_count_rx_sls(1, tr_M3UA_DATA(rctx_receiver, rx_pd), sls_num_rx_1, num_rx_1); @@ -1016,8 +1016,8 @@ var octetstring data := f_rnd_octstring_rnd_len(100); var template (value) M3UA_Protocol_Data tx_pd; var template (present) M3UA_Protocol_Data rx_pd; - tx_pd := ts_M3UA_protocol_data(pc_sender, pc_receiver, '23'O, '00'O, '00'O, '00'O, data); - rx_pd := tr_M3UA_protocol_data(pc_sender, pc_receiver, '23'O, '00'O, '00'O, '00'O, data); + tx_pd := ts_M3UA_protocol_data(pc_sender, pc_receiver, '02'O, '00'O, '00'O, '00'O, data); + rx_pd := tr_M3UA_protocol_data(pc_sender, pc_receiver, '02'O, '00'O, '00'O, '00'O, data); f_M3UA_send(0, ts_M3UA_DATA(rctx_sender, tx_pd), 1); /* each message must be received both on 1 and 2 */ f_M3UA_exp(1, tr_M3UA_DATA(rctx_receiver, rx_pd)); @@ -1838,8 +1838,8 @@ /* Distribute traffic over ASPs based on SLS, since OPC is always the same. * SLS in ITU is 4 bits. */ var OCT1 sls := int2oct(i mod 16, 1); - tx_pd := ts_M3UA_protocol_data(pc_sender, pc_receiver, '23'O, '00'O, '00'O, sls, data); - rx_pd := tr_M3UA_protocol_data(pc_sender, pc_receiver, '23'O, '00'O, '00'O, sls, data); + tx_pd := ts_M3UA_protocol_data(pc_sender, pc_receiver, '02'O, '00'O, '00'O, sls, data); + rx_pd := tr_M3UA_protocol_data(pc_sender, pc_receiver, '02'O, '00'O, '00'O, sls, data); f_M3UA_send(0, ts_M3UA_DATA(rctx_sender, tx_pd), 1); alt { [] as_count_rx_sls(1, tr_M3UA_DATA(rctx_receiver, rx_pd), sls_num_rx_1, num_rx_1); @@ -1883,7 +1883,7 @@ f_M3UA_asp_up_act(idx_tx, rctx := rctx_sender);
/* check if DATA is accepted without Routing Context IE */ - m3ua_data := ts_M3UA_protocol_data(pc_sender, pc_receiver, si:= '23'O, ni := mp_ni, + m3ua_data := ts_M3UA_protocol_data(pc_sender, pc_receiver, si := '02'O, ni := mp_ni, mp := '00'O, sls := '00'O, data := data); f_M3UA_send(idx_tx, ts_M3UA_DATA(rctx_sender, m3ua_data), 1); f_M3UA_exp(idx_tx, tr_M3UA_DUNA({ts_M3UA_PC(oct2int(pc_receiver), 0)}, rctx_sender));