pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38461?usp=email )
Change subject: library/GTPv1C_Templates: Lots of improvements in template declarations ......................................................................
library/GTPv1C_Templates: Lots of improvements in template declarations
Also most the compiler warnings are fixed, only some which require special more complex attention are left as is.
Change-Id: I38a4b1c5874fda173a7b89122c84cb83ac71a036 --- M library/GTPv1C_Templates.ttcn M mme/MME_Tests.ttcn M sgsn/SGSN_Tests.ttcn 3 files changed, 287 insertions(+), 176 deletions(-)
Approvals: Jenkins Builder: Verified fixeria: Looks good to me, but someone else must approve osmith: Looks good to me, approved
diff --git a/library/GTPv1C_Templates.ttcn b/library/GTPv1C_Templates.ttcn index b1059fe..5a25504 100644 --- a/library/GTPv1C_Templates.ttcn +++ b/library/GTPv1C_Templates.ttcn @@ -54,7 +54,8 @@ CellIdentity cell_id } with { encode "RAW" };
- template (value) GTP_CellId ts_GTP_CellId(template (value) RoutingAreaIdentification rai, CellIdentity cell_id) := { + template (value) GTP_CellId ts_GTP_CellId(template (value) RoutingAreaIdentification rai, + template (value) CellIdentity cell_id) := { ra_id := rai, cell_id := cell_id }; @@ -90,7 +91,7 @@ } else if (istemplatekind(inp, "?")) { return ?; } else { - return f_GTP_Cause_2_OCT1(inp); + return f_GTP_Cause_2_OCT1(valueof(inp)); } } template (present) Cause_gtpc tr_Cause_gtpc(template (present) GTP_Cause cause) := { @@ -109,7 +110,9 @@ }
/* generalized GTP-C receive template */ - template (present) PDU_GTPC tr_GTP1C_PDU(template (present) OCT1 msg_type, template (present) OCT4 teid, template (present) GTPC_PDUs pdu := ?) := { + template (present) PDU_GTPC tr_GTP1C_PDU(template (present) OCT1 msg_type, + template (present) OCT4 teid, + template (present) GTPC_PDUs pdu := ?) := { /* N-PDU Number flag (PN) shall be set to '0'. A GTP-C receiver shall not return an * error if this flag is set to '1'. */ pn_bit := '0'B, @@ -157,24 +160,24 @@ }
/* recovery IE */ - template (value) Recovery_gtpc ts_Recovery(OCT1 restart_counter) := { + template (value) Recovery_gtpc ts_Recovery(template (value) OCT1 restart_counter) := { type_gtpc := '0E'O, restartCounter := restart_counter }
- template (present) Recovery_gtpc tr_Recovery(template (present) OCT1 restart_counter) := { + template (present) Recovery_gtpc tr_Recovery(template (present) OCT1 restart_counter := ?) := { type_gtpc := '0E'O, restartCounter := restart_counter }
/* Packet TMSI - 7.7.5 */ - template (value) PacketTMSI ts_PTMSI(OCT4 ptmsi) := { + template (value) PacketTMSI ts_PTMSI(template (value) OCT4 ptmsi) := { type_gtpc := '05'O, p_tmsi := ptmsi }
/* PTMSI Signature - 7.7.9 */ - template (value) PTMSI_Signature ts_PTMSI_sig(OCT3 ptmsi_sig) := { + template (value) PTMSI_Signature ts_PTMSI_sig(template (value) OCT3 ptmsi_sig) := { type_gtpc := '0C'O, ptmsi_Signature := ptmsi_sig } @@ -204,7 +207,7 @@ if (istemplatekind(msValidated, "omit")) { return omit; } - return ts_MS_Validated(msValidated); + return ts_MS_Validated(valueof(msValidated)); }
/* 7.7.13 TEI Data I */ @@ -231,7 +234,7 @@ if (istemplatekind(teic, "omit")) { return omit; } - return ts_TEIC(teic); + return ts_TEIC(valueof(teic)); }
/* 7.7.15 Tunnel Endpoint Identifier Data II */ @@ -261,7 +264,7 @@ if (istemplatekind(imeisv, "omit")) { return omit; } - return ts_IMEISV(imeisv); + return ts_IMEISV(valueof(imeisv)); }
template (present) IMEISV_gtpc tr_IMEISV(template (present) OCT8 imeisv) := { @@ -287,12 +290,12 @@ return omit; } if (istemplatekind(timeZone, "omit")) { - return ts_MS_TimeZone(daylightSavingTime := daylightSavingTime); + return ts_MS_TimeZone(daylightSavingTime := valueof(daylightSavingTime)); } if (istemplatekind(daylightSavingTime, "omit")) { - return ts_MS_TimeZone(timeZone); + return ts_MS_TimeZone(valueof(timeZone)); } - return ts_MS_TimeZone(timeZone, daylightSavingTime); + return ts_MS_TimeZone(valueof(timeZone), valueof(daylightSavingTime)); }
template (present) MS_TimeZone tr_MS_TimeZone(template (present) OCT1 timeZone := ?, @@ -312,11 +315,11 @@ chargingChar := chargingChar } private function f_ts_ChargingCharacteristics(template (omit) OCT2 chargingChar) - return template (omit) ChargingCharacteristics_GTPC { + return template (omit) ChargingCharacteristics_GTPC { if (istemplatekind(chargingChar, "omit")) { return omit; } - return ts_ChargingCharacteristics(chargingChar); + return ts_ChargingCharacteristics(valueof(chargingChar)); }
template (present) ChargingCharacteristics_GTPC tr_ChargingCharacteristics(template (present) OCT2 chargingChar) := { @@ -405,9 +408,9 @@ }
/* 7.7.81 Direct Tunnel Flags */ - template (value) DirectTunnelFlags ts_DirectTunnelFlags(BIT1 dTI := '0'B, - BIT1 gCSI := '0'B, - BIT1 eI := '0'B) := { + template (value) DirectTunnelFlags ts_DirectTunnelFlags(template (value) BIT1 dTI := '0'B, + template (value) BIT1 gCSI := '0'B, + template (value) BIT1 eI := '0'B) := { type_gtpc := 'B6'O, lengthf := 0, /* overwritten */ dTI := dTI, @@ -486,7 +489,7 @@ /* template matching reception of GTP-C echo-response */ template (present) Gtp1cUnitdata tr_GTPC_PONG(template (present) Gtp1cPeer peer) := tr_GTPC_MsgType(peer, echoResponse, '00000000'O, tr_EchoRespPDU(?));
- template (value) GTPC_PDUs ts_EchoRespPDU(OCT1 restart_counter) := { + template (value) GTPC_PDUs ts_EchoRespPDU(template (value) OCT1 restart_counter) := { echoResponse := { recovery := ts_Recovery(restart_counter), private_extension_gtpc := omit @@ -494,9 +497,11 @@ }
/* master template for senidng a GTP-C echo response */ - template (value) Gtp1cUnitdata ts_GTPC_PONG(Gtp1cPeer peer, uint16_t seq, OCT1 rest_ctr) := { + template (value) Gtp1cUnitdata ts_GTPC_PONG(template (value) Gtp1cPeer peer, + template (value) uint16_t seq, + template (value) OCT1 rest_ctr) := { peer := peer, - gtpc := ts_GTP1C_PDU(echoResponse, '00000000'O, valueof(ts_EchoRespPDU(rest_ctr)), seq) + gtpc := ts_GTP1C_PDU(echoResponse, '00000000'O, ts_EchoRespPDU(rest_ctr), seq) }
template (value) GTPC_PDUs ts_EchoReqPDU := { @@ -506,9 +511,10 @@ }
/* master template for sending a GTP-C echo request */ - template (value) Gtp1cUnitdata ts_GTPC_PING(Gtp1cPeer peer, uint16_t seq) := { + template (value) Gtp1cUnitdata ts_GTPC_PING(template (value) Gtp1cPeer peer, + template (value) uint16_t seq) := { peer := peer, - gtpc := ts_GTP1C_PDU(echoRequest, '00000000'O, valueof(ts_EchoReqPDU), seq) + gtpc := ts_GTP1C_PDU(echoRequest, '00000000'O, ts_EchoReqPDU, seq) }
private function f_eua_ipv4_len(template OCT4 ip_addr) return template (present) integer { @@ -614,7 +620,7 @@ } }
- template (value) AccessPointName ts_APN(octetstring apn) := { + template (value) AccessPointName ts_APN(template (value) octetstring apn) := { type_gtpc := '83'O, lengthf := lengthof(apn), apn_value := apn @@ -625,13 +631,19 @@ lengthf := lengthof(ip_addr), addressf := ip_addr } + private function f_ts_GsnAddr(template (omit) octetstring ip_addr) return template (omit) GSN_Address_GTPC { + if (istemplatekind(ip_addr, "omit")) { + return omit; + } + return ts_GsnAddr(valueof(ip_addr)); + } template (present) GSN_Address_GTPC tr_GsnAddr(template (present) octetstring ip_addr := ?) := { type_gtpc := '85'O, lengthf := ?, addressf := ip_addr }
- template (value) MSISDN ts_Msisdn(octetstring msisdn) := { + template (value) MSISDN ts_Msisdn(template (value) octetstring msisdn) := { type_gtpc := '86'O, lengthf := lengthof(msisdn), msisdn := msisdn @@ -679,7 +691,7 @@ qos_ProfileValue := ts_QosValueDefault }
- template (value) IMSI_gtpc ts_Imsi(hexstring digits) := { + template (value) IMSI_gtpc ts_Imsi(template (value) hexstring digits) := { type_gtpc := '02'O, digits := digits, padding := 'F'H @@ -727,7 +739,7 @@ if (istemplatekind(rat_type, "omit")) { return omit; } else { - return ts_RATType(rat_type); + return ts_RATType(valueof(rat_type)); } } template (present) RATType tr_RATType(template (present) OCT1 rat_type) := { @@ -772,10 +784,17 @@ cI_value := cI_value }
- template (value) GTPC_PDUs ts_CreatePdpPDU(hexstring imsi, OCT1 restart_ctr, OCT4 teid_data, OCT4 teid_ctrl, - BIT4 nsapi, EndUserAddress eua, octetstring apn, - octetstring sgsn_ip_sign, octetstring sgsn_ip_data, - octetstring msisdn, template (omit) ProtConfigOptions pco := omit, + template (value) GTPC_PDUs ts_CreatePdpPDU(template (value) hexstring imsi, + template (value) OCT1 restart_ctr, + template (value) OCT4 teid_data, + template (value) OCT4 teid_ctrl, + template (value) BIT4 nsapi, + template (value) EndUserAddress eua, + template (value) octetstring apn, + template (value) octetstring sgsn_ip_sign, + template (value) octetstring sgsn_ip_data, + template (value) octetstring msisdn, + template (omit) ProtConfigOptions pco := omit, template (omit) OCT1 ratType := omit, template (omit) UserLocationInformation uli := omit, template (omit) OCT2 charging_char := omit, @@ -832,11 +851,18 @@ } }
- template (value) Gtp1cUnitdata ts_GTPC_CreatePDP(Gtp1cPeer peer, uint16_t seq, hexstring imsi, - OCT1 restart_ctr, OCT4 teid_data, - OCT4 teid_ctrl, BIT4 nsapi, EndUserAddress eua, - octetstring apn, octetstring sgsn_ip_sign, - octetstring sgsn_ip_data, octetstring msisdn, + template (value) Gtp1cUnitdata ts_GTPC_CreatePDP(template (value) Gtp1cPeer peer, + template (value) uint16_t seq, + template (value) hexstring imsi, + template (value) OCT1 restart_ctr, + template (value) OCT4 teid_data, + template (value) OCT4 teid_ctrl, + template (value) BIT4 nsapi, + template (value) EndUserAddress eua, + template (value) octetstring apn, + template (value) octetstring sgsn_ip_sign, + template (value) octetstring sgsn_ip_data, + template (value) octetstring msisdn, template (omit) ProtConfigOptions pco := omit, template (omit) OCT1 ratType := omit, template (omit) UserLocationInformation uli := omit, @@ -845,16 +871,21 @@ template (omit) MS_TimeZone ms_tz := omit) := { peer := peer, gtpc := ts_GTP1C_PDU(createPDPContextRequest, '00000000'O, - valueof(ts_CreatePdpPDU(imsi, restart_ctr, teid_data, teid_ctrl, - nsapi, eua, apn, sgsn_ip_sign, - sgsn_ip_data, msisdn, pco, ratType, uli, - charging_char, imeisv, ms_tz)), seq) + ts_CreatePdpPDU(imsi, restart_ctr, teid_data, teid_ctrl, + nsapi, eua, apn, sgsn_ip_sign, + sgsn_ip_data, msisdn, pco, ratType, uli, + charging_char, imeisv, ms_tz), + seq) }
- template (value) GTPC_PDUs ts_UpdatePdpPDU(hexstring imsi, OCT1 restart_ctr, OCT4 teid_data, OCT4 teid_ctrl, - BIT4 nsapi, - octetstring sgsn_ip_sign, octetstring sgsn_ip_data, + template (value) GTPC_PDUs ts_UpdatePdpPDU(template (value) hexstring imsi, + template (value) OCT1 restart_ctr, + template (value) OCT4 teid_data, + template (value) OCT4 teid_ctrl, + template (value) BIT4 nsapi, + template (value) octetstring sgsn_ip_sign, + template (value) octetstring sgsn_ip_data, template (omit) ProtConfigOptions pco := omit, template (omit) OCT1 ratType := omit, template (omit) UserLocationInformation uli := omit) := { @@ -900,18 +931,25 @@ } }
- template (value) Gtp1cUnitdata ts_GTPC_UpdatePDP(Gtp1cPeer peer, OCT4 teid, uint16_t seq, hexstring imsi, - OCT1 restart_ctr, OCT4 teid_data, - OCT4 teid_ctrl, BIT4 nsapi, octetstring sgsn_ip_sign, - octetstring sgsn_ip_data, + template (value) Gtp1cUnitdata ts_GTPC_UpdatePDP(template (value) Gtp1cPeer peer, + template (value) OCT4 teid, + template (value) uint16_t seq, + template (value) hexstring imsi, + template (value) OCT1 restart_ctr, + template (value) OCT4 teid_data, + template (value) OCT4 teid_ctrl, + template (value) BIT4 nsapi, + template (value) octetstring sgsn_ip_sign, + template (value) octetstring sgsn_ip_data, template (omit) ProtConfigOptions pco := omit, template (omit) OCT1 ratType := omit, template (omit) UserLocationInformation uli := omit) := { peer := peer, gtpc := ts_GTP1C_PDU(updatePDPContextRequest, teid, - valueof(ts_UpdatePdpPDU(imsi, restart_ctr, teid_data, teid_ctrl, - nsapi, sgsn_ip_sign, - sgsn_ip_data, pco, ratType, uli)), seq) + ts_UpdatePdpPDU(imsi, restart_ctr, teid_data, teid_ctrl, + nsapi, sgsn_ip_sign, + sgsn_ip_data, pco, ratType, uli), + seq) }
/* Update PPD Context Sent GGSN -> SGSN: */ @@ -968,16 +1006,20 @@ unused := '0000'B }
- template (value) ReorderingRequired ts_ReorderReq(boolean req := false) := { + template (value) ReorderingRequired ts_ReorderReq(template (value) boolean req := false) := { type_gtpc := '08'O, - reordreq := bool2bit(req), + reordreq := bool2bit(valueof(req)), spare := '0000000'B }
template (value) GTPC_PDUs ts_CreatePdpRespPDU(template (value) GTP_Cause cause, - OCT4 teid_data, OCT4 teid_ctrl, BIT4 nsapi, - octetstring ggsn_ip_sign, octetstring ggsn_ip_data, - OCT4 chg_id, template (omit) EndUserAddress eua := omit, + template (value) OCT4 teid_data, + template (value) OCT4 teid_ctrl, + template (value) BIT4 nsapi, + template (value) octetstring ggsn_ip_sign, + template (value) octetstring ggsn_ip_data, + template (value) OCT4 chg_id, + template (omit) EndUserAddress eua := omit, template (omit) Recovery_gtpc recovery := omit, template (omit) ProtConfigOptions pco := omit) := { createPDPContextResponse := { @@ -1017,25 +1059,34 @@ } }
- template (value) Gtp1cUnitdata ts_GTPC_CreatePdpResp(Gtp1cPeer peer, uint16_t seq, OCT4 teid, + template (value) Gtp1cUnitdata ts_GTPC_CreatePdpResp(template (value) Gtp1cPeer peer, + template (value) uint16_t seq, + template (value) OCT4 teid, template (value) GTP_Cause cause, - OCT4 teid_ctrl, OCT4 teid_data, - BIT4 nsapi, octetstring ggsn_ip_sign, - octetstring ggsn_ip_data, OCT4 chg_id, + template (value) OCT4 teid_ctrl, + template (value) OCT4 teid_data, + template (value) BIT4 nsapi, + template (value) octetstring ggsn_ip_sign, + template (value) octetstring ggsn_ip_data, + template (value) OCT4 chg_id, template (omit) EndUserAddress eua := omit, template (omit) Recovery_gtpc recovery := omit, template (omit) ProtConfigOptions pco := omit) := { peer := peer, gtpc := ts_GTP1C_PDU(createPDPContextResponse, teid, - valueof(ts_CreatePdpRespPDU(cause, teid_data, teid_ctrl, nsapi, - ggsn_ip_sign, ggsn_ip_data, chg_id, - eua, recovery, pco)), seq) + ts_CreatePdpRespPDU(cause, teid_data, teid_ctrl, nsapi, + ggsn_ip_sign, ggsn_ip_data, chg_id, + eua, recovery, pco), + seq) }
template (value) GTPC_PDUs ts_UpdatePdpRespGGSNPDU(template (value) GTP_Cause cause, - OCT4 teid_data, OCT4 teid_ctrl, - octetstring ggsn_ip_sign, octetstring ggsn_ip_data, - OCT4 chg_id, template (omit) EndUserAddress eua := omit, + template (value) OCT4 teid_data, + template (value) OCT4 teid_ctrl, + template (value) octetstring ggsn_ip_sign, + template (value) octetstring ggsn_ip_data, + template (value) OCT4 chg_id, + template (omit) EndUserAddress eua := omit, template (omit) Recovery_gtpc recovery := omit, template (omit) ProtConfigOptions pco := omit) := { updatePDPContextResponse := { @@ -1073,19 +1124,24 @@ } }
- template (value) Gtp1cUnitdata ts_GTPC_UpdatePdpRespGGSN(Gtp1cPeer peer, uint16_t seq, OCT4 teid, + template (value) Gtp1cUnitdata ts_GTPC_UpdatePdpRespGGSN(template (value) Gtp1cPeer peer, + template (value) uint16_t seq, + template (value) OCT4 teid, template (value) GTP_Cause cause, - OCT4 teid_ctrl, OCT4 teid_data, - octetstring ggsn_ip_sign, - octetstring ggsn_ip_data, OCT4 chg_id, + template (value) OCT4 teid_ctrl, + template (value) OCT4 teid_data, + template (value) octetstring ggsn_ip_sign, + template (value) octetstring ggsn_ip_data, + template (value) OCT4 chg_id, template (omit) EndUserAddress eua := omit, template (omit) Recovery_gtpc recovery := omit, template (omit) ProtConfigOptions pco := omit) := { peer := peer, gtpc := ts_GTP1C_PDU(updatePDPContextResponse, teid, - valueof(ts_UpdatePdpRespGGSNPDU(cause, teid_data, teid_ctrl, - ggsn_ip_sign, ggsn_ip_data, chg_id, - eua, recovery, pco)), seq) + ts_UpdatePdpRespGGSNPDU(cause, teid_data, teid_ctrl, + ggsn_ip_sign, ggsn_ip_data, chg_id, + eua, recovery, pco), + seq) }
/* Update PDP Context Resp sent SGSN -> GGSN: */ @@ -1160,7 +1216,7 @@ } }
- template (value) ProtConfigOptions ts_PCO_IPv4_DNS_IPCP(uint8_t ipcp_req_id := 0) modifies ts_PCO := { + template (value) ProtConfigOptions ts_PCO_IPv4_DNS_IPCP(template (value) uint8_t ipcp_req_id := 0) modifies ts_PCO := { protocols := { /* dummy PAP entry to check if our parser in the GGSN can properly iterate over * the list of protocols, see Change-Id Icc2e6716c33d78d3c3e000f529806228d8aa155e */ @@ -1200,7 +1256,7 @@ } }
- template (present) ProtocolElement tr_PCO_Proto(OCT2 prot_id) := { + template (present) ProtocolElement tr_PCO_Proto(template (present) OCT2 prot_id := ?) := { protocolID := prot_id, lengthProtoID := ?, protoIDContents := ? @@ -1217,7 +1273,7 @@ { protocolID := '8021'O, lengthProtoID := 16, protoIDContents := enc_IpcpPacket(valueof(ts_IPCP_ReqDNS)) } } } - template (present) ProtConfigOptions tr_PCO_Contains(OCT2 prot_id) modifies tr_PCO := { + template (present) ProtConfigOptions tr_PCO_Contains(template (present) OCT2 prot_id) modifies tr_PCO := { protocols := { *, tr_PCO_Proto(prot_id), * } }
@@ -1249,45 +1305,58 @@ return ''O; }
- template (present) IpcpPacket tr_IPCP(template (present) LcpCode code, template (present)uint8_t identifier, + template (present) IpcpPacket tr_IPCP(template (present) LcpCode code, + template (present) uint8_t identifier, template (present) IpcpOptionList opts) := { code := code, identifier := identifier, len := ?, options := opts } + template (value) IpcpPacket ts_IPCP(template (value) LcpCode code, + template (value) uint8_t identifier, + template (value) IpcpOptionList opts) := { + code := code, + identifier := identifier, + len := 0, /* overwritten */ + options := opts + } template (present) IpcpOption tr_IPCP_PrimaryDns(template (present) OCT4 addr) := { code := IPCP_OPT_PrimaryDNS, len := 6, data := addr } + template (value) IpcpOption ts_IPCP_PrimaryDns(template (value) OCT4 addr) := { + code := IPCP_OPT_PrimaryDNS, + len := 6, + data := addr + } template (present) IpcpOption tr_IPCP_SecondaryDns(template (present) OCT4 addr) := { code := IPCP_OPT_SecondaryDNS, len := 6, data := addr } + template (value) IpcpOption ts_IPCP_SecondaryDns(template (value) OCT4 addr) := { + code := IPCP_OPT_SecondaryDNS, + len := 6, + data := addr + } template (present) IpcpPacket tr_IPCP_Ack_DNS(template (present) uint8_t identifier := ?, template (present) OCT4 dns1 := ?, template (present) OCT4 dns2 := ?) := tr_IPCP(LCP_Configure_Ack, identifier, { *, tr_IPCP_PrimaryDns(dns1), *, tr_IPCP_SecondaryDns(dns2), * });
- template (value) IpcpPacket ts_IPCP(LcpCode code, uint8_t identifier, template (value) IpcpOptionList opts) := { - code := code, - identifier := identifier, - len := 0, /* overwritten */ - options := opts - } - template (value) IpcpPacket ts_IPCP_ReqDNS(uint8_t identifier := 0) := + template (value) IpcpPacket ts_IPCP_ReqDNS(template (value) uint8_t identifier := 0) := ts_IPCP(LCP_Configure_Request, identifier, - { tr_IPCP_PrimaryDns('00000000'O), tr_IPCP_SecondaryDns('00000000'O) }); + { ts_IPCP_PrimaryDns('00000000'O), ts_IPCP_SecondaryDns('00000000'O) });
- template (value) IpcpPacket ts_IPCP_ReqDNS_Primary(uint8_t identifier := 0) := + template (value) IpcpPacket ts_IPCP_ReqDNS_Primary(template (value) uint8_t identifier := 0) := ts_IPCP(LCP_Configure_Request, identifier, - { tr_IPCP_PrimaryDns('00000000'O) }); - template (value) IpcpPacket ts_IPCP_ReqDNS_Secondary(uint8_t identifier := 0) := + { ts_IPCP_PrimaryDns('00000000'O) }); + template (value) IpcpPacket ts_IPCP_ReqDNS_Secondary(template (value) uint8_t identifier := 0) := ts_IPCP(LCP_Configure_Request, identifier, - { tr_IPCP_SecondaryDns('00000000'O) }); + { ts_IPCP_SecondaryDns('00000000'O) });
function f_teardown_ind_IE(in template (omit) BIT1 ind) return template (omit) TearDownInd { if (istemplatekind(ind, "omit")) { @@ -1301,7 +1370,8 @@ return ret; }
- template (value) GTPC_PDUs ts_DeletePdpPDU(BIT4 nsapi, template (omit) BIT1 teardown_ind) := { + template (value) GTPC_PDUs ts_DeletePdpPDU(template (value) BIT4 nsapi, + template (omit) BIT1 teardown_ind) := { deletePDPContextRequest := { cause := omit, tearDownIndicator := f_teardown_ind_IE(teardown_ind), @@ -1315,11 +1385,15 @@ } }
- template (value) Gtp1cUnitdata ts_GTPC_DeletePDP(Gtp1cPeer peer, uint16_t seq, OCT4 teid, - BIT4 nsapi, template (omit) BIT1 teardown_ind) := { + template (value) Gtp1cUnitdata ts_GTPC_DeletePDP(template (value) Gtp1cPeer peer, + template (value) uint16_t seq, + template (value) OCT4 teid, + template (value) BIT4 nsapi, + template (omit) BIT1 teardown_ind) := { peer := peer, gtpc := ts_GTP1C_PDU(deletePDPContextRequest, teid, - valueof(ts_DeletePdpPDU(nsapi, teardown_ind)), seq) + ts_DeletePdpPDU(nsapi, teardown_ind), + seq) }
template (value) GTPC_PDUs ts_DeletePdpRespPDU(template (value) GTP_Cause cause := GTP_CAUSE_REQUEST_ACCEPTED, @@ -1334,24 +1408,27 @@ } }
- template (value) Gtp1cUnitdata ts_GTPC_DeletePdpResp(Gtp1cPeer peer, uint16_t seq, OCT4 teid, + template (value) Gtp1cUnitdata ts_GTPC_DeletePdpResp(template (value) Gtp1cPeer peer, + template (value) uint16_t seq, + template (value) OCT4 teid, template (value) GTP_Cause cause := GTP_CAUSE_REQUEST_ACCEPTED, template (omit) ProtConfigOptions pco := omit) := { peer := peer, gtpc := ts_GTP1C_PDU(deletePDPContextResponse, teid, - valueof(ts_DeletePdpRespPDU(cause, pco)), seq) + ts_DeletePdpRespPDU(cause, pco), + seq) }
/* SGSN Context Request - 7.5.3 */ template (present) GTPC_PDUs tr_SGSNContextReqPDU(template (present) RoutingAreaIdentity rai := ?, - template (present) OCT4 teic := ?, - template (present) octetstring sgsn_addr_control := ?, - template hexstring imsi := *, - template BIT1 msValidated := *, - template TLLI tlli := *, - template PacketTMSI ptmsi := *, - template PTMSI_Signature ptmsi_sig := *, - template OCT1 rat_type := *) := { + template (present) OCT4 teic := ?, + template (present) octetstring sgsn_addr_control := ?, + template hexstring imsi := *, + template BIT1 msValidated := *, + template TLLI tlli := *, + template PacketTMSI ptmsi := *, + template PTMSI_Signature ptmsi_sig := *, + template OCT1 rat_type := *) := { sgsn_ContextRequest := { imsi := f_tr_Imsi(imsi), routingAreaIdentity := rai, @@ -1404,15 +1481,16 @@ private_extension_gtpc := omit } } - template (value) Gtp1cUnitdata ts_GTPC_SGSNContextReq(Gtp1cPeer peer, uint16_t seq, + template (value) Gtp1cUnitdata ts_GTPC_SGSNContextReq(template (value) Gtp1cPeer peer, + template (value) uint16_t seq, template (value) GTPC_PDUs SGSNContextReqPDU) := { peer := peer, - gtpc := ts_GTP1C_PDU(sgsnContextRequest, '00000000'O, valueof(SGSNContextReqPDU), seq) + gtpc := ts_GTP1C_PDU(sgsnContextRequest, '00000000'O, SGSNContextReqPDU, seq) }
/* SGSN Context Response - 7.5.4 */ template (present) GTPC_PDUs tr_SGSNContextRespPDU(template (present) GTP_Cause cause := ?, - template hexstring imsi := *) := { + template hexstring imsi := *) := { sgsn_ContextResponse := { cause := tr_Cause_gtpc(cause), imsi := f_tr_Imsi(imsi), @@ -1451,11 +1529,11 @@ := tr_GTPC_MsgType(peer, sgsnContextResponse, teid, SGSNContextRespPDU);
template (value) GTPC_PDUs ts_SGSNContextRespPDU(template (value) GTP_Cause cause, - template (omit) hexstring imsi := omit, - template (omit) OCT4 teic := omit, - template (omit) octetstring sgsn_addr_control := omit, - template (omit) MM_Context mm_context := omit, - template (omit) PDP_Context_GTPC_List pdp_ctx_list := omit) := { + template (omit) hexstring imsi := omit, + template (omit) OCT4 teic := omit, + template (omit) octetstring sgsn_addr_control := omit, + template (omit) MM_Context mm_context := omit, + template (omit) PDP_Context_GTPC_List pdp_ctx_list := omit) := { sgsn_ContextResponse := { cause := ts_Cause_gtpc(cause), imsi := f_ts_Imsi(imsi), @@ -1467,7 +1545,7 @@ charging_char := omit, mm_Context := mm_context, pdp_Context := pdp_ctx_list, - sgsn_addr_controlPlane := ts_GsnAddr(sgsn_addr_control), + sgsn_addr_controlPlane := f_ts_GsnAddr(sgsn_addr_control), pdpContextPriorization := omit, radioPriority_LCS := omit, mBMS_UE_Context := omit, @@ -1488,10 +1566,12 @@ private_extension_gtpc := omit } } - template (value) Gtp1cUnitdata ts_GTPC_SGSNContextResp(Gtp1cPeer peer, OCT4 teid, uint16_t seq, - template (value) GTPC_PDUs SGSNContextRespPDU) := { + template (value) Gtp1cUnitdata ts_GTPC_SGSNContextResp(template (value) Gtp1cPeer peer, + template (value) OCT4 teid, + template (value) uint16_t seq, + template (value) GTPC_PDUs SGSNContextRespPDU) := { peer := peer, - gtpc := ts_GTP1C_PDU(sgsnContextResponse, teid, valueof(SGSNContextRespPDU), seq) + gtpc := ts_GTP1C_PDU(sgsnContextResponse, teid, SGSNContextRespPDU, seq) }
@@ -1507,8 +1587,8 @@ } } template (present) Gtp1cUnitdata tr_GTPC_SGSNContextAck(template (present) Gtp1cPeer peer := ?, - template (present) OCT4 teid := ?, - template (present) GTPC_PDUs SGSNContextAckPDU := ?) + template (present) OCT4 teid := ?, + template (present) GTPC_PDUs SGSNContextAckPDU := ?) := tr_GTPC_MsgType(peer, sgsnContextAcknowledge, teid, SGSNContextAckPDU); template (value) GTPC_PDUs ts_SGSNContextAckPDU(template (value) GTP_Cause cause := GTP_CAUSE_REQUEST_ACCEPTED) := { sgsn_ContextAcknowledge := { @@ -1521,15 +1601,17 @@ } }
- template (value) Gtp1cUnitdata ts_GTPC_SGSNContextAck(Gtp1cPeer peer, OCT4 teid, uint16_t seq, + template (value) Gtp1cUnitdata ts_GTPC_SGSNContextAck(template (value) Gtp1cPeer peer, + template (value) OCT4 teid, + template (value) uint16_t seq, template (value) GTPC_PDUs SGSNContextAckPDU := ts_SGSNContextAckPDU) := { peer := peer, - gtpc := ts_GTP1C_PDU(sgsnContextAcknowledge, teid, valueof(SGSNContextAckPDU), seq) + gtpc := ts_GTP1C_PDU(sgsnContextAcknowledge, teid, SGSNContextAckPDU, seq) }
/* GTP-C RIM */
- template (value) RIM_Application_Identity_GTPC ts_GTPC_RIM_Application_Identity(OCT1 app_id) := { + template (value) RIM_Application_Identity_GTPC ts_GTPC_RIM_Application_Identity(template (value) OCT1 app_id) := { iEI := '4B'O, ext := '1'B, lengthIndicator := { @@ -1538,35 +1620,36 @@ rIMApplicationIdentity := app_id } /* 3GPP TS 48.018 11.3.62 */ - template (value) RIM_Sequence_Number_GTPC ts_GTPC_RIM_Sequence_Number(integer seq) := { + template (value) RIM_Sequence_Number_GTPC ts_GTPC_RIM_Sequence_Number(template (value) integer seq) := { iEI := '4C'O, ext := '1'B, lengthIndicator := { length1 := 4 }, - rIMSequenceNumber := int2oct(seq, 4) + rIMSequenceNumber := int2oct(valueof(seq), 4) } - template (value) RIM_PDU_Indications_GTPC ts_GTPC_RIM_PDU_Indications(boolean ack, BIT3 type_ext) := { + template (value) RIM_PDU_Indications_GTPC ts_GTPC_RIM_PDU_Indications(template (value) boolean ack, + template (value) BIT3 type_ext) := { iEI := '4F'O, ext := '1'B, lengthIndicator := { length1 := 1 }, - ack := bool2bit(ack), + ack := bool2bit(valueof(ack)), pDU_Type_Extension := type_ext, reserved := '0000'B } /* 3GPP TS 48.018 11.3.67 */ - template (value) RIM_Protocol_Version_Number_GTPC ts_GTPC_RIM_Protocol_Version_Number(integer ver) := { + template (value) RIM_Protocol_Version_Number_GTPC ts_GTPC_RIM_Protocol_Version_Number(template (value) integer ver) := { iEI := '55'O, ext := '1'B, lengthIndicator := { length1 := 1 }, - rIMProtocolVersionNumber := int2oct(ver, 1) + rIMProtocolVersionNumber := int2oct(valueof(ver), 1) } function tr_GTPC_Cell_Identifier_V(template (present) GTP_CellId cid) return template (present) Cell_Identifier_V_GTPC { - var template Cell_Identifier_V_GTPC ret := { + var template (present) Cell_Identifier_V_GTPC ret := { mccDigit1 := ?, mccDigit2 := ?, mccDigit3 := ?, @@ -1590,30 +1673,30 @@ ret.mncDigit2 := cid.ra_id.lai.mcc_mnc[5]; } if (isvalue(cid.ra_id.lai.lac)) { - ret.lac := int2oct_tmpl(cid.ra_id.lai.lac, 2); + ret.lac := int2oct(valueof(cid.ra_id.lai.lac), 2); } } if (isvalue(cid) and isvalue(cid.ra_id)) { - ret.rac := int2oct_tmpl(cid.ra_id.rac, 1); + ret.rac := int2oct(valueof(cid.ra_id.rac), 1); } if (isvalue(cid)) { - ret.cI_value := int2oct_tmpl(cid.cell_id, 2); + ret.cI_value := int2oct(valueof(cid.cell_id), 2); } return ret; } - template (value) Cell_Identifier_V_GTPC ts_GTPC_Cell_Identifier_V(GTP_CellId cid) := { + template (value) Cell_Identifier_V_GTPC ts_GTPC_Cell_Identifier_V(template (value) GTP_CellId cid) := { mccDigit1 := cid.ra_id.lai.mcc_mnc[0], mccDigit2 := cid.ra_id.lai.mcc_mnc[1], mccDigit3 := cid.ra_id.lai.mcc_mnc[2], mncDigit3 := cid.ra_id.lai.mcc_mnc[3], mncDigit1 := cid.ra_id.lai.mcc_mnc[4], mncDigit2 := cid.ra_id.lai.mcc_mnc[5], - lac := int2oct(cid.ra_id.lai.lac, 2), - rac := int2oct(cid.ra_id.rac, 1), - cI_value := int2oct(cid.cell_id, 2) + lac := int2oct(valueof(cid.ra_id.lai.lac), 2), + rac := int2oct(valueof(cid.ra_id.rac), 1), + cI_value := int2oct(valueof(cid.cell_id), 2) } - template (value) RIM_Routing_Address_GTPC t_GTPC_RIM_Routing_Address_cid(GTP_CellId cid) := { - cell_Identifier := ts_GTPC_Cell_Identifier_V(cid) + template (value) RIM_Routing_Address_GTPC ts_GTPC_RIM_Routing_Address_cid(template (value) GTP_CellId cid) := { + cell_Identifier := ts_GTPC_Cell_Identifier_V(valueof(cid)) } function tr_GTPC_ENB_Identifier(template (present) GTP_CellId cid, template (present) integer tac, @@ -1650,21 +1733,27 @@
return ret; } - template (value) ENB_Identifier ts_GTPC_ENB_Identifier(GTP_CellId cid, integer tac, octetstring gnbid) := { + template (value) ENB_Identifier ts_GTPC_ENB_Identifier(template (value) GTP_CellId cid, + template (value) integer tac, + template (value) octetstring gnbid) := { mccDigit1 := cid.ra_id.lai.mcc_mnc[0], mccDigit2 := cid.ra_id.lai.mcc_mnc[1], mccDigit3 := cid.ra_id.lai.mcc_mnc[2], mncDigit3 := cid.ra_id.lai.mcc_mnc[3], mncDigit1 := cid.ra_id.lai.mcc_mnc[4], mncDigit2 := cid.ra_id.lai.mcc_mnc[5], - tAC := int2oct(tac, 2), + tAC := int2oct(valueof(tac), 2), globalENB_ID := gnbid } - template (value) RIM_Routing_Address_GTPC t_GTPC_RIM_Routing_Address_enbid(GTP_CellId cid, integer tac, octetstring gnbid) := { + template (value) RIM_Routing_Address_GTPC + ts_GTPC_RIM_Routing_Address_enbid(template (value) GTP_CellId cid, + template (value) integer tac, + template (value) octetstring gnbid) := { eNB_Identifier := ts_GTPC_ENB_Identifier(cid, tac, gnbid) } template (present) RIM_Routing_Information_GTPC - tr_GTPC_RIM_Routing_Information(HEX1 addr_discr, template (present) RIM_Routing_Address_GTPC addr) := { + tr_GTPC_RIM_Routing_Information(template (present) HEX1 addr_discr, + template (present) RIM_Routing_Address_GTPC addr) := { iEI := '54'O, ext := '1'B, lengthIndicator := { @@ -1675,7 +1764,8 @@ rIM_Routing_Address := addr } template (value) RIM_Routing_Information_GTPC - ts_GTPC_RIM_Routing_Information(HEX1 addr_discr, template (value) RIM_Routing_Address_GTPC addr) := { + ts_GTPC_RIM_Routing_Information(template (value) HEX1 addr_discr, + template (value) RIM_Routing_Address_GTPC addr) := { iEI := '54'O, ext := '1'B, lengthIndicator := { @@ -1696,7 +1786,7 @@ reporting_Cell_Identifier := tr_GTPC_Cell_Identifier_V(cid) } template (value) RAN_Information_Request_Application_Container_NACC_GTPC - ts_GTPC_RAN_Information_Request_Application_Container_NACC(GTP_CellId cid) := { + ts_GTPC_RAN_Information_Request_Application_Container_NACC(template (value) GTP_CellId cid) := { iEI := '4D'O, ext := '1'B, lengthIndicator := { @@ -1710,32 +1800,38 @@ nacc := tr_GTPC_RAN_Information_Request_Application_Container_NACC(cid) } template (value) RAN_Information_Request_Application_Container_GTPC - tsu_GTPC_RAN_Information_Request_Application_Container_NACC(GTP_CellId cid) := { + tsu_GTPC_RAN_Information_Request_Application_Container_NACC(template (value) GTP_CellId cid) := { nacc := ts_GTPC_RAN_Information_Request_Application_Container_NACC(cid) } /* 3GPP TS 48.018 11.3.63.2.1 */ template (present) RAN_Information_Application_Container_NACC_GTPC - tr_GTPC_RAN_Information_Application_Container_NACC(template (present) GTP_CellId cid, boolean psi_type, integer si_psi_num, octetstring si_psi) := { + tr_GTPC_RAN_Information_Application_Container_NACC(template (present) GTP_CellId cid, + template (value) boolean psi_type, + template (value) integer si_psi_num, + template (value) octetstring si_psi) := { iEI := '4E'O, ext := '1'B, lengthIndicator := { length1 := ? }, reporting_Cell_Identifier := tr_GTPC_Cell_Identifier_V(cid), - typeBit := bool2bit(psi_type), - number_of_SI_PSI := int2bit(si_psi_num, 7), + typeBit := bool2bit(valueof(psi_type)), + number_of_SI_PSI := int2bit(valueof(si_psi_num), 7), sI_PSI := si_psi } template (value) RAN_Information_Application_Container_NACC_GTPC - ts_GTPC_RAN_Information_Application_Container_NACC(GTP_CellId cid, boolean psi_type, integer si_psi_num, octetstring si_psi) := { + ts_GTPC_RAN_Information_Application_Container_NACC(template (value) GTP_CellId cid, + template (value) boolean psi_type, + template (value) integer si_psi_num, + template (value) octetstring si_psi) := { iEI := '4E'O, ext := '1'B, lengthIndicator := { length1 := 0 /* overwritten */ }, reporting_Cell_Identifier := ts_GTPC_Cell_Identifier_V(cid), - typeBit := bool2bit(psi_type), - number_of_SI_PSI := int2bit(si_psi_num, 7), + typeBit := bool2bit(valueof(psi_type)), + number_of_SI_PSI := int2bit(valueof(si_psi_num), 7), sI_PSI := si_psi } external function enc_RIM_Routing_Address_GTPC(in RIM_Routing_Address_GTPC ra) return octetstring @@ -1782,14 +1878,16 @@ rIM_Container := cont }
- template (value) RANTransparentContainer ts_RANTransparentContainer_RAN_INFO_REQ(template (value) PDU_BSSGP_RAN_INFORMATION_REQUEST_GTPC pdu) := { + template (value) RANTransparentContainer + ts_RANTransparentContainer_RAN_INFO_REQ(template (value) PDU_BSSGP_RAN_INFORMATION_REQUEST_GTPC pdu) := { type_gtpc := '90'O, lengthf := 0, /* FIXME */ rANTransparentContainerField := { pDU_BSSGP_RAN_INFORMATION_REQUEST := pdu } } - template (present) RANTransparentContainer tr_RANTransparentContainer_RAN_INFO_REQ(template (present) PDU_BSSGP_RAN_INFORMATION_REQUEST_GTPC pdu := ?) := { + template (present) RANTransparentContainer + tr_RANTransparentContainer_RAN_INFO_REQ(template (present) PDU_BSSGP_RAN_INFORMATION_REQUEST_GTPC pdu := ?) := { type_gtpc := '90'O, lengthf := ?, rANTransparentContainerField := { @@ -1799,11 +1897,17 @@
/* RAN_Information */ template (present) ApplContainer_or_ApplErrContainer_NACC_GTPC - tru_GTPC_ApplContainer_NACC(GTP_CellId cid, boolean psi_type, integer si_psi_num, octetstring si_psi) := { + tru_GTPC_ApplContainer_NACC(template (present) GTP_CellId cid, + template (value) boolean psi_type, + template (value) integer si_psi_num, + template (value) octetstring si_psi) := { application_Container := tr_GTPC_RAN_Information_Application_Container_NACC(cid, psi_type, si_psi_num, si_psi) } template (value) ApplContainer_or_ApplErrContainer_NACC_GTPC - tsu_GTPC_ApplContainer_NACC(GTP_CellId cid, boolean psi_type, integer si_psi_num, octetstring si_psi) := { + tsu_GTPC_ApplContainer_NACC(template (value) GTP_CellId cid, + template (value) boolean psi_type, + template (value) integer si_psi_num, + template (value) octetstring si_psi) := { application_Container := ts_GTPC_RAN_Information_Application_Container_NACC(cid, psi_type, si_psi_num, si_psi) } template (present) ApplContainer_or_ApplErrContainer_GTPC @@ -1835,11 +1939,11 @@ } template (value) RAN_Information_RIM_Container_GTPC ts_GTPC_RAN_Information_RIM_Container(template (value) RIM_Application_Identity_GTPC app_id, - template (value) RIM_Sequence_Number_GTPC seq, - template (value) RIM_PDU_Indications_GTPC ind, - template (omit) RIM_Protocol_Version_Number_GTPC ver := omit, - template (omit) ApplContainer_or_ApplErrContainer_GTPC app_cont := omit, - template (omit) SON_TransferApplicationIdentity son_app_id := omit) := { + template (value) RIM_Sequence_Number_GTPC seq, + template (value) RIM_PDU_Indications_GTPC ind, + template (omit) RIM_Protocol_Version_Number_GTPC ver := omit, + template (omit) ApplContainer_or_ApplErrContainer_GTPC app_cont := omit, + template (omit) SON_TransferApplicationIdentity son_app_id := omit) := { iEI := '58'O, ext := '1'B, lengthIndicator := { @@ -1870,14 +1974,16 @@ source_Cell_Identifier := src, rIM_Container := cont } - template (present) RANTransparentContainer tr_RANTransparentContainer_RAN_INFO(template (present) PDU_BSSGP_RAN_INFORMATION_GTPC pdu) := { + template (present) RANTransparentContainer + tr_RANTransparentContainer_RAN_INFO(template (present) PDU_BSSGP_RAN_INFORMATION_GTPC pdu) := { type_gtpc := '90'O, lengthf := ?, rANTransparentContainerField := { pDU_BSSGP_RAN_INFORMATION := pdu } } - template (value) RANTransparentContainer ts_RANTransparentContainer_RAN_INFO(template (value) PDU_BSSGP_RAN_INFORMATION_GTPC pdu) := { + template (value) RANTransparentContainer + ts_RANTransparentContainer_RAN_INFO(template (value) PDU_BSSGP_RAN_INFORMATION_GTPC pdu) := { type_gtpc := '90'O, lengthf := 0, /* overwritten */ rANTransparentContainerField := { @@ -1885,12 +1991,14 @@ } }
- template (present) RANTransparentContainer tr_RANTransparentContainer(template (present) RANTransparentContainerField rANTransparentContainerField) := { + template (present) RANTransparentContainer + tr_RANTransparentContainer(template (present) RANTransparentContainerField rANTransparentContainerField) := { type_gtpc := '90'O, lengthf := ?, rANTransparentContainerField := rANTransparentContainerField } - template (value) RANTransparentContainer ts_RANTransparentContainer(template (value) RANTransparentContainerField rANTransparentContainerField) := { + template (value) RANTransparentContainer + ts_RANTransparentContainer(template (value) RANTransparentContainerField rANTransparentContainerField) := { type_gtpc := '90'O, lengthf := 0, /* overwritten */ rANTransparentContainerField := rANTransparentContainerField @@ -1904,8 +2012,8 @@ } } template (value) GTPC_PDUs ts_RANInfoRelay(template (value) RANTransparentContainer transparentContainer, - template (omit) RIM_RoutingAddress ra := omit, - template (omit) RIM_RoutingAddress_Discriminator ra_discr := omit) := { + template (omit) RIM_RoutingAddress ra := omit, + template (omit) RIM_RoutingAddress_Discriminator ra_discr := omit) := { ranInformationRelay := { transparentContainer := transparentContainer, rIM_RoutingAddress := ra, @@ -1925,7 +2033,10 @@ template (omit) RIM_RoutingAddress ra := omit, template (omit) RIM_RoutingAddress_Discriminator ra_discr := omit) := { peer := peer, - gtpc := ts_GTP1C_PDU(rANInformationRelay, '00000000'O, valueof(ts_RANInfoRelay(transparentContainer, ra, ra_discr)), 0) + gtpc := ts_GTP1C_PDU(rANInformationRelay, + '00000000'O, + ts_RANInfoRelay(transparentContainer, ra, ra_discr), + 0) }
@@ -1950,7 +2061,7 @@ }
/* 3GPP TS 29.060, section 7.7.57 */ - template (value) RIM_RoutingAddress ts_RIM_RoutingAddress(octetstring addr_value) := { + template (value) RIM_RoutingAddress ts_RIM_RoutingAddress(template (value) octetstring addr_value) := { type_gtpc := '9F'O, lengthf := 0, /* we assume encoder overwrites this */ rIM_RoutingAddressValue := addr_value @@ -1962,7 +2073,7 @@ }
/* 3GPP TS 29.060, section 7.7.77 */ - template (value) RIM_RoutingAddress_Discriminator ts_RIM_RoutingAddress_Discriminator(bitstring addr_discr) := { + template (value) RIM_RoutingAddress_Discriminator ts_RIM_RoutingAddress_Discriminator(template (value) bitstring addr_discr) := { type_gtpc := 'B2'O, lengthf := 0, /* we assume encoder overwrites this */ rra_discriminator := addr_discr, diff --git a/mme/MME_Tests.ttcn b/mme/MME_Tests.ttcn index 21ec48d..934a251 100644 --- a/mme/MME_Tests.ttcn +++ b/mme/MME_Tests.ttcn @@ -1163,10 +1163,10 @@ eutran_gtp_ci.ra_id.lai.mcc_mnc := f_convert_plmn(g_pars.enb_pars[g_pars.mme_idx].global_enb_id.pLMNidentity);
gnbid := enc_S1AP_Global_ENB_ID(g_pars.enb_pars[g_pars.mme_idx].global_enb_id); - gtpc_dst_addr := t_GTPC_RIM_Routing_Address_cid(geran_gtp_ci); - gtpc_src_addr := t_GTPC_RIM_Routing_Address_enbid(eutran_gtp_ci, - oct2int(g_pars.enb_pars[g_pars.mme_idx].supported_tas[0].tAC), - gnbid); + gtpc_dst_addr := ts_GTPC_RIM_Routing_Address_cid(geran_gtp_ci); + gtpc_src_addr := ts_GTPC_RIM_Routing_Address_enbid(eutran_gtp_ci, + oct2int(g_pars.enb_pars[g_pars.mme_idx].supported_tas[0].tAC), + gnbid);
gtpc_rim_req_cont := ts_GTPC_RAN_Information_Request_RIM_Container( ts_GTPC_RIM_Application_Identity(RIM_APP_ID_NACC), @@ -1193,10 +1193,10 @@ eutran_gtp_ci.ra_id.lai.mcc_mnc := f_convert_plmn(g_pars.enb_pars[g_pars.mme_idx].global_enb_id.pLMNidentity);
gnbid := enc_S1AP_Global_ENB_ID(g_pars.enb_pars[g_pars.mme_idx].global_enb_id); - gtpc_dst_addr := t_GTPC_RIM_Routing_Address_cid(geran_gtp_ci); - gtpc_src_addr := t_GTPC_RIM_Routing_Address_enbid(eutran_gtp_ci, - oct2int(g_pars.enb_pars[g_pars.mme_idx].supported_tas[0].tAC), - gnbid); + gtpc_dst_addr := ts_GTPC_RIM_Routing_Address_cid(geran_gtp_ci); + gtpc_src_addr := ts_GTPC_RIM_Routing_Address_enbid(eutran_gtp_ci, + oct2int(g_pars.enb_pars[g_pars.mme_idx].supported_tas[0].tAC), + gnbid);
gtpc_rim_req_cont := tr_GTPC_RAN_Information_Request_RIM_Container( ts_GTPC_RIM_Application_Identity(RIM_APP_ID_NACC), diff --git a/sgsn/SGSN_Tests.ttcn b/sgsn/SGSN_Tests.ttcn index 4148c6c..1099798 100644 --- a/sgsn/SGSN_Tests.ttcn +++ b/sgsn/SGSN_Tests.ttcn @@ -2809,8 +2809,8 @@ var template (value) RIM_RoutingAddress_Discriminator gtpc_rim_ra_discr; var template (value) Gtp1cUnitdata gtpc_pdu;
- gtpc_dst_addr := t_GTPC_RIM_Routing_Address_cid(gtp_ci); - gtpc_src_addr := t_GTPC_RIM_Routing_Address_enbid(gtp_ci, tac := 3, gnbid := '12345678123456'O); + gtpc_dst_addr := ts_GTPC_RIM_Routing_Address_cid(gtp_ci); + gtpc_src_addr := ts_GTPC_RIM_Routing_Address_enbid(gtp_ci, tac := 3, gnbid := '12345678123456'O);
gtpc_rim_req_cont := ts_GTPC_RAN_Information_Request_RIM_Container(ts_GTPC_RIM_Application_Identity(RIM_APP_ID_NACC), ts_GTPC_RIM_Sequence_Number(1),