neels has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/35052?usp=email )


Change subject: msc: split off f_mo_call_establish__handle_assignment_request()
......................................................................

msc: split off f_mo_call_establish__handle_assignment_request()

Change-Id: I98c6171a592dfe1573e15136c4ecf4ff234048d7
---
M msc/BSC_ConnectionHandler.ttcn
1 file changed, 67 insertions(+), 51 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks 
refs/changes/52/35052/1

diff --git a/msc/BSC_ConnectionHandler.ttcn b/msc/BSC_ConnectionHandler.ttcn
index e25d496..1737071 100644
--- a/msc/BSC_ConnectionHandler.ttcn
+++ b/msc/BSC_ConnectionHandler.ttcn
@@ -1554,6 +1554,63 @@
        }
 }

+private function f_mo_call_establish__handle_assignment_request(inout 
CallParameters cpars, PDU_BSSAP ass_req,
+                                                               
BSSMAP_FIELD_CodecElement codec_chosen) runs on BSC_ConnHdlr {
+       var BSSMAP_IE_AoIP_TransportLayerAddress tla;
+       var BSSMAP_IE_SpeechCodec codec;
+       var BSSMAP_IE_Osmo_OsmuxCID osmuxCID;
+
+       if (not 
ispresent(ass_req.pdu.bssmap.assignmentRequest.aoIPTransportLayer)) {
+               setverdict(fail, "MSC sent Assignment Request without AoIP 
Transport Layer IE");
+               mtc.stop;
+       }
+
+       var template BSSMAP_IE_AoIP_TransportLayerAddress tla_ass1 :=
+               f_tr_BSSMAP_IE_AoIP_TLA(cpars.mgw_conn_1.mgw_rtp_ip, ?);
+       var template BSSMAP_IE_AoIP_TransportLayerAddress tla_ass2 :=
+               f_tr_BSSMAP_IE_AoIP_TLA(cpars.mgw_conn_2.mgw_rtp_ip, ?);
+
+       if (not match(ass_req.pdu.bssmap.assignmentRequest.aoIPTransportLayer, 
tla_ass1)
+           and not 
match(ass_req.pdu.bssmap.assignmentRequest.aoIPTransportLayer, tla_ass2)) {
+               log("Expected one of: 1:", tla_ass1, " 2:", tla_ass2);
+               log("Got:", 
ass_req.pdu.bssmap.assignmentRequest.aoIPTransportLayer);
+               setverdict(fail, "MSC sent Assignment Request with unexpected 
AoIP Transport Layer IE");
+               mtc.stop;
+       }
+
+       if (cpars.csd and not 
match(ass_req.pdu.bssmap.assignmentRequest.codecList.codecElements,
+                       {ts_CodecCSData})) {
+               setverdict(fail, "MSC sent Assignment Request with unexpected 
codec list for CSD ",
+                          ass_req.pdu.bssmap.assignmentRequest.codecList);
+               mtc.stop;
+       }
+
+       tla := valueof(f_ts_BSSMAP_IE_AoIP_TLA(cpars.bss_rtp_ip, 
cpars.bss_rtp_port));
+
+       if (cpars.csd) {
+               codec := valueof(ts_BSSMAP_IE_SpeechCodec({ts_CodecCSData}));
+       } else {
+               codec := valueof(ts_BSSMAP_IE_SpeechCodec({codec_chosen}));
+       }
+
+       var PDU_BSSAP bssap;
+       if (cpars.use_osmux) {
+               if (not 
ispresent(ass_req.pdu.bssmap.assignmentRequest.osmuxCID)) {
+                       setverdict(fail, "MSC sent AssignReq without expected 
OsmuxCID IE");
+                       mtc.stop;
+               }
+               osmuxCID := valueof(ts_OsmuxCID(0));
+               if (cpars.use_osmux and not 
match(ass_req.pdu.bssmap.assignmentRequest.osmuxCID, osmuxCID)) {
+                       setverdict(fail, "MSC sent AssignReq without expected 
OsmuxCID IE");
+                       mtc.stop;
+               }
+               bssap := valueof(ts_BSSMAP_AssignmentComplete(omit, tla, codec, 
osmuxCID));
+       } else {
+               bssap := valueof(ts_BSSMAP_AssignmentComplete(omit, tla, 
codec));
+       }
+       BSSAP.send(bssap);
+}
+
 function f_mo_call_establish(inout CallParameters cpars)
 runs on BSC_ConnHdlr {

@@ -1590,11 +1647,6 @@
                return;
        }

-       var template BSSMAP_IE_AoIP_TransportLayerAddress tla_ass1 :=
-               f_tr_BSSMAP_IE_AoIP_TLA(cpars.mgw_conn_1.mgw_rtp_ip, ?);
-       var template BSSMAP_IE_AoIP_TransportLayerAddress tla_ass2 :=
-               f_tr_BSSMAP_IE_AoIP_TLA(cpars.mgw_conn_2.mgw_rtp_ip, ?);
-
        var default mdcx := 
activate(as_optional_mgcp_mdcx(cpars.mgw_conn_2.mgw_rtp_ip, 
cpars.mgw_conn_2.mgw_rtp_port));
        var boolean got_mncc_setup_compl_ind := false;
        var boolean got_cc_connect := false;
@@ -1635,52 +1687,7 @@
        //[g_pars.ran_is_geran] BSSAP.receive(tr_BSSMAP_AssignmentReq(omit, 
tla_ass)) -> value bssap
        [] BSSAP.receive(tr_BSSMAP_AssignmentReq(omit)) -> value bssap {
                log("f_mo_call_establish 4: rx Assignment Request");
-               var BSSMAP_IE_AoIP_TransportLayerAddress tla;
-               var BSSMAP_IE_SpeechCodec codec;
-               var BSSMAP_IE_Osmo_OsmuxCID osmuxCID;
-
-               if (not 
ispresent(bssap.pdu.bssmap.assignmentRequest.aoIPTransportLayer)) {
-                       setverdict(fail, "MSC sent Assignment Request without 
AoIP Transport Layer IE");
-                       mtc.stop;
-               }
-               if (not 
match(bssap.pdu.bssmap.assignmentRequest.aoIPTransportLayer, tla_ass1)
-                   and not 
match(bssap.pdu.bssmap.assignmentRequest.aoIPTransportLayer, tla_ass2)) {
-                       log("Expected one of: 1:", tla_ass1, " 2:", tla_ass2);
-                       log("Got:", 
bssap.pdu.bssmap.assignmentRequest.aoIPTransportLayer);
-                       setverdict(fail, "MSC sent Assignment Request with 
unexpected AoIP Transport Layer IE");
-                       mtc.stop;
-               }
-
-               if (cpars.csd and not 
match(bssap.pdu.bssmap.assignmentRequest.codecList.codecElements,
-                               {ts_CodecCSData})) {
-                       setverdict(fail, "MSC sent Assignment Request with 
unexpected codec list for CSD ",
-                                  
bssap.pdu.bssmap.assignmentRequest.codecList);
-                       mtc.stop;
-               }
-
-               tla := valueof(f_ts_BSSMAP_IE_AoIP_TLA(cpars.bss_rtp_ip, 
cpars.bss_rtp_port));
-
-               if (cpars.csd) {
-                       codec := 
valueof(ts_BSSMAP_IE_SpeechCodec({ts_CodecCSData}));
-               } else {
-                       codec := 
valueof(ts_BSSMAP_IE_SpeechCodec({ts_CodecFR}));
-               }
-
-               if (cpars.use_osmux) {
-                       if (not 
ispresent(bssap.pdu.bssmap.assignmentRequest.osmuxCID)) {
-                               setverdict(fail, "MSC sent AssignReq without 
expected OsmuxCID IE");
-                               mtc.stop;
-                       }
-                       osmuxCID := valueof(ts_OsmuxCID(0));
-                       if (cpars.use_osmux and not 
match(bssap.pdu.bssmap.assignmentRequest.osmuxCID, osmuxCID)) {
-                               setverdict(fail, "MSC sent AssignReq without 
expected OsmuxCID IE");
-                               mtc.stop;
-                       }
-                       bssap := valueof(ts_BSSMAP_AssignmentComplete(omit, 
tla, codec, osmuxCID));
-               } else {
-                       bssap := valueof(ts_BSSMAP_AssignmentComplete(omit, 
tla, codec));
-               }
-               BSSAP.send(bssap);
+               f_mo_call_establish__handle_assignment_request(cpars, bssap, 
cpars.ass_compl_chosen_codec);
                }
        [] BSSAP.receive(tr_RANAP_RabAssReq(*)) -> value ranap {
                log("f_mo_call_establish 4.iu: rx RANAP RAB Assignment 
Request");

--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/35052?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I98c6171a592dfe1573e15136c4ecf4ff234048d7
Gerrit-Change-Number: 35052
Gerrit-PatchSet: 1
Gerrit-Owner: neels <[email protected]>
Gerrit-MessageType: newchange

Reply via email to