diff --git a/ipa/IPA_Test.cfg b/ipa/IPA_Test.cfg index 5dd7a04b8..3a341023e 100644 --- a/ipa/IPA_Test.cfg +++ b/ipa/IPA_Test.cfg @@ -14,6 +14,8 @@ FileMask := LOG_ALL | TTCN_MATCHING; #mp_nat_port := 5000; #mp_nat_ip := "127.0.0.1"; +#mp_ipa_mgcp_uses_osmo_ext := true; + #mp_mgcp_uses_udp := true; #mp_callagent_ip := "127.0.0.1"; #mp_callagent_udp_port := 2727; diff --git a/library/IPA_Emulation.ttcn b/library/IPA_Emulation.ttcn index 146c4216e..e9894d1e7 100644 --- a/library/IPA_Emulation.ttcn +++ b/library/IPA_Emulation.ttcn @@ -9,10 +9,10 @@ import from MTP3asp_PortType all; import from MGCP_Types all; -/* modulepar { + /* Use Osmocom extended IPA mux header */ + boolean mp_ipa_mgcp_uses_osmo_ext := true; } -*/ type enumerated IpaMode { IPA_MODE_CLIENT, @@ -203,6 +203,14 @@ private function f_mgcp_to_user(octetstring msg) runs on IPA_Emulation_CT { } } +private function f_mgcp_to_ud(octetstring payload) runs on IPA_Emulation_CT return ASP_IPA_Unitdata { + if (mp_ipa_mgcp_uses_osmo_ext) { + return valueof(t_ASP_IPA_UD(IPAC_PROTO_MGCP_OLD, payload)); + } else { + return valueof(t_ASP_IPA_UD(IPAC_PROTO_OSMO, payload, IPAC_PROTO_EXT_MGCP)); + } +} + private function ScanEvents() runs on IPA_Emulation_CT { var IPA_RecvFrom ipa_rx; var ASP_IPA_Unitdata ipa_ud; @@ -265,13 +273,13 @@ private function ScanEvents() runs on IPA_Emulation_CT { /* Received MGCP -> down into IPA */ [] IPA_MGCP_PORT.receive(MgcpCommand:?) -> value mgcp_cmd { - payload := char2oct(enc_MgcpResponse(mgcp_rsp)); - ipa_ud := valueof(t_ASP_IPA_UD(IPAC_PROTO_OSMO, payload, IPAC_PROTO_EXT_MGCP)); + payload := char2oct(enc_MgcpCommand(mgcp_cmd)); + ipa_ud := f_mgcp_to_ud(payload); IPA_PORT.send(f_from_asp(g_ipa_conn_id, ipa_ud)); } [] IPA_MGCP_PORT.receive(MgcpResponse:?) -> value mgcp_rsp { payload := char2oct(enc_MgcpResponse(mgcp_rsp)); - ipa_ud := valueof(t_ASP_IPA_UD(IPAC_PROTO_OSMO, payload, IPAC_PROTO_EXT_MGCP)); + ipa_ud := f_mgcp_to_ud(payload); IPA_PORT.send(f_from_asp(g_ipa_conn_id, ipa_ud)); }