diff --git a/lib/gtp/gtpv2c_tlv.c b/lib/gtp/gtpv2c_tlv.c index 20946a0c9..76f792d87 100644 --- a/lib/gtp/gtpv2c_tlv.c +++ b/lib/gtp/gtpv2c_tlv.c @@ -26,7 +26,7 @@ /******************************************************************************* * This file had been created by gtpv2c_tlv.py script v0.1.0 * Please do not modify this file but regenerate it via script. - * Created on: 2017-03-15 12:04:54.127641 by acetcom + * Created on: 2017-03-15 13:39:46.685583 by acetcom * from 29274-d80.docx ******************************************************************************/ diff --git a/lib/gtp/gtpv2c_tlv.h b/lib/gtp/gtpv2c_tlv.h index d39f5888c..578a18063 100644 --- a/lib/gtp/gtpv2c_tlv.h +++ b/lib/gtp/gtpv2c_tlv.h @@ -26,7 +26,7 @@ /******************************************************************************* * This file had been created by gtpv2c_tlv.py script v0.1.0 * Please do not modify this file but regenerate it via script. - * Created on: 2017-03-15 12:04:54.117763 by acetcom + * Created on: 2017-03-15 13:39:46.675078 by acetcom * from 29274-d80.docx ******************************************************************************/ diff --git a/lib/gtp/support/cache/gtpv2c_group_list.py b/lib/gtp/support/cache/gtpv2c_group_list.py index 5cde02f22..371d07f26 100644 --- a/lib/gtp/support/cache/gtpv2c_group_list.py +++ b/lib/gtp/support/cache/gtpv2c_group_list.py @@ -1,25 +1,29 @@ -type_list["Bearer Context"] = { "type" : "93" } group = [] group.append({ "ie_type" : "EBI", "ie_value" : "EPS Bearer ID", "presence" : "M", "instance" : "0", "comment" : ""}) group.append({ "ie_type" : "Bearer TFT", "ie_value" : "TFT", "presence" : "O", "instance" : "0", "comment" : "This IE may be included on the S4/S11 interfaces."}) group.append({ "ie_type" : "F-TEID", "ie_value" : "S1-U eNodeB F-TEID", "presence" : "C", "instance" : "0", "comment" : "This IE shall be included on the S11 interface for X2-based handover with SGW relocation."}) +type_list["F-TEID"]["max_instance"] = "1" group.append({ "ie_type" : "F-TEID", "ie_value" : "S4-U SGSN F-TEID", "presence" : "C", "instance" : "1", "comment" : "This IE shall be included on the S4 interface if the S4-U interface is used."}) +type_list["F-TEID"]["max_instance"] = "2" group.append({ "ie_type" : "F-TEID", "ie_value" : "S5/S8-U SGW F-TEID", "presence" : "C", "instance" : "2", "comment" : "This IE shall be included on the S5/S8 interface for an E-UTRAN Initial Attach, a Handover from Trusted or Untrusted Non-3GPP IP Access to E-UTRAN, a PDP Context Activation, a Handover from Trusted or Untrusted Non-3GPP IP Access to UTRAN/GERAN or a UE Requested PDN Connectivity."}) +type_list["F-TEID"]["max_instance"] = "3" group.append({ "ie_type" : "F-TEID", "ie_value" : "S5/S8-U PGW F-TEID", "presence" : "C", "instance" : "3", "comment" : "This IE shall be included on the S4 and S11 interfaces for the TAU/RAU/Handover cases when the GTP-based S5/S8 is used."}) +type_list["F-TEID"]["max_instance"] = "4" group.append({ "ie_type" : "F-TEID", "ie_value" : "S12 RNC F-TEID", "presence" : "CO", "instance" : "4", "comment" : "This IE shall be included on the S4 interface if the S12 interface is used in the Enhanced serving RNS relocation with SGW relocation procedure."}) +type_list["F-TEID"]["max_instance"] = "5" group.append({ "ie_type" : "F-TEID", "ie_value" : "S2b-U ePDG F-TEID", "presence" : "C", "instance" : "5", "comment" : "This IE shall be included on the S2b interface for an Attach with GTP on S2b, a UE initiated Connectivity to Additional PDN with GTP on S2b, a Handover to Untrusted Non-3GPP IP Access with GTP on S2b and an Initial Attach for emergency session (GTP on S2b)."}) +type_list["F-TEID"]["max_instance"] = "6" group.append({ "ie_type" : "F-TEID", "ie_value" : "S2a-U TWAN F-TEID", "presence" : "C", "instance" : "6", "comment" : "This IE shall be included on the S2a interface for an Initial Attach in WLAN on GTP S2a, a UE initiated Connectivity to Additional PDN with GTP on S2a and a Handover to TWAN with GTP on S2a."}) group.append({ "ie_type" : "Bearer QoS", "ie_value" : "Bearer Level QoS", "presence" : "M", "instance" : "0", "comment" : ""}) +type_list["F-TEID"]["max_instance"] = "7" group.append({ "ie_type" : "F-TEID", "ie_value" : "S11-U MME F-TEID", "presence" : "CO", "instance" : "7", "comment" : "This IE shall be sent on the S11 interface, if S11-U is being used, during the E-UTRAN Initial Attach and UE requested PDN connectivity procedures. This IE may also be sent on the S11 interface, if S11-U is being used, during a Tracking Area Update procedure with Serving GW change, if the MME needs to establish the S11-U tunnel. See NOTE 2."}) group_list["Bearer Context"] = { "type" : "93", "group" : group } added_group = group_list["Bearer Context"]["group"] -type_list["Overload Control Information"] = { "type" : "180" } group = [] group.append({ "ie_type" : "Sequence Number", "ie_value" : "Overload Control Sequence Number", "presence" : "M", "instance" : "0", "comment" : "See clause 12.3.5.1.2.1 for the description and use of this parameter."}) group.append({ "ie_type" : "Metric", "ie_value" : "Overload Reduction Metric", "presence" : "M", "instance" : "0", "comment" : "See clause 12.3.5.1.2.3 for the description and use of this parameter."}) group.append({ "ie_type" : "EPC Timer", "ie_value" : "Period of Validity", "presence" : "M", "instance" : "0", "comment" : "See clause 12.3.5.1.2.2 for the description and use of this parameter.This IE should be set to 0 if the Overload Reduction Metric is null. This IE shall be ignored by the receiver if the Overload Reduction Metric is null."}) group_list["Overload Control Information"] = { "type" : "180", "group" : group } -type_list["Remote UE Context"] = { "type" : "191" } group = [] group.append({ "ie_type" : "Remote User ID", "ie_value" : "Remote User ID", "presence" : "M", "instance" : "0", "comment" : "See subclause 8.123 for the description and use of this parameter"}) group.append({ "ie_type" : "Remote UE IP Information", "ie_value" : "Remote UE IP Information", "presence" : "M", "instance" : "0", "comment" : "See subclause 8.124 for the description and use of this parameter"}) @@ -30,7 +34,6 @@ added_group.append({ "ie_type" : "Charging ID", "ie_value" : "Charging Id", "pre added_group.append({ "ie_type" : "Bearer Flags", "ie_value" : "Bearer Flags", "presence" : "O", "instance" : "0", "comment" : "Applicable flags are:PPC (Prohibit Payload Compression) : this flag may be set on the S5/S8 and S4 interfaces."}) group_list["Bearer Context"] = { "type" : "93", "group" : added_group } added_group = group_list["Bearer Context"]["group"] -type_list["Load Control Information"] = { "type" : "181" } group = [] group.append({ "ie_type" : "Sequence Number", "ie_value" : "Load Control Sequence Number", "presence" : "M", "instance" : "0", "comment" : "See clause 12.2.5.1.2.1 for the description and use of this parameter."}) group.append({ "ie_type" : "Metric", "ie_value" : "Load Metric", "presence" : "M", "instance" : "0", "comment" : "See clauses 12.2.5.1.2.2 and 12.2.5.1.2.3 for the description and use of this parameter."}) @@ -46,7 +49,9 @@ group_list["Bearer Context"] = { "type" : "93", "group" : added_group } added_group = group_list["Load Control Information"]["group"] added_group = group_list["Overload Control Information"]["group"] added_group = group_list["Bearer Context"]["group"] +type_list["F-TEID"]["max_instance"] = "8" added_group.append({ "ie_type" : "F-TEID", "ie_value" : "S2b-U ePDG F-TEID", "presence" : "C", "instance" : "8", "comment" : "This IE shall be sent on the S2b interface."}) +type_list["F-TEID"]["max_instance"] = "9" added_group.append({ "ie_type" : "F-TEID", "ie_value" : "S2b-U PGW F-TEID", "presence" : "C", "instance" : "9", "comment" : "This IE shall be sent on the S2b interface. It shall be used to correlate the bearers with those in the Create Bearer Request."}) added_group.append({ "ie_type" : "F-TEID", "ie_value" : "S2a-U TWAN F-TEID", "presence" : "C", "instance" : "10", "comment" : "This IE shall be sent on the S2a interface."}) added_group.append({ "ie_type" : "F-TEID", "ie_value" : "S2a-U PGW F-TEID", "presence" : "C", "instance" : "11", "comment" : "This IE shall be sent on the S2a interface. It shall be used to correlate the bearers with those in the Create Bearer Request."}) @@ -98,7 +103,6 @@ added_group = group_list["Load Control Information"]["group"] added_group = group_list["Overload Control Information"]["group"] added_group = group_list["Remote UE Context"]["group"] added_group = group_list["Remote UE Context"]["group"] -type_list["PDN Connection"] = { "type" : "109" } group = [] group_list["PDN Connection"] = { "type" : "109", "group" : group } added_group = group_list["Bearer Context"]["group"] @@ -106,7 +110,6 @@ added_group.append({ "ie_type" : "F-Container", "ie_value" : "BSS Container", "p added_group.append({ "ie_type" : "TI", "ie_value" : "Transaction Identifier", "presence" : "C", "instance" : "0", "comment" : "This IE shall be sent over S3/S10/S16 if the UE supports A/Gb and/or Iu mode."}) group_list["Bearer Context"] = { "type" : "93", "group" : added_group } added_group = group_list["Remote UE Context"]["group"] -type_list["SCEF PDN Connection"] = { "type" : "195" } group = [] group.append({ "ie_type" : "APN", "ie_value" : "APN", "presence" : "M", "instance" : "0", "comment" : ""}) group.append({ "ie_type" : "EBI", "ie_value" : "Default EPS Bearer ID", "presence" : "M", "instance" : "0", "comment" : "This IE shall identify the default bearer of the SCEF PDN Connection."}) diff --git a/lib/gtp/support/cache/gtpv2c_ies-32.py b/lib/gtp/support/cache/gtpv2c_ies-32.py index 558dd6e3d..3daefe4d7 100644 --- a/lib/gtp/support/cache/gtpv2c_ies-32.py +++ b/lib/gtp/support/cache/gtpv2c_ies-32.py @@ -17,35 +17,49 @@ ies.append({ "ie_type" : "EBI", "ie_value" : "Linked EPS Bearer ID", "presence" ies.append({ "ie_type" : "TWMI", "ie_value" : "Trusted WLAN Mode Indication", "presence" : "CO", "instance" : "0", "comment" : "The TWAN shall include this IE on S2a interface (during initial attach, handover to TWAN with GTP on S2a procedure, UE-initiated additional PDN connectivity procedures), if the single-connection mode or multiple-connection mode is used.The TWAN shall not include this IE if transparent single-connection mode is used. The PGW shall assume that transparent single-connection mode is used if it receives this message without this IE from the TWAN."}) ies.append({ "ie_type" : "PCO", "ie_value" : "Protocol Configuration Options", "presence" : "C", "instance" : "0", "comment" : "If MME/SGSN receives PCO from the UE during the Attach, PDN connectivity or Handover to 3GPP access procedures, the MME/SGSN shall forward the PCO IE to SGW. The SGW shall also forward it to PGW."}) ies.append({ "ie_type" : "Bearer Context", "ie_value" : "Bearer Contexts to be created", "presence" : "M", "instance" : "0", "comment" : "S Several IEs with the same type and instance value shall be included on the S4/S11 and S5/S8 interfaces as necessary to represent a list of Bearers. One single IE shall be included on the S2a/S2b interface.One bearer shall be included for E-UTRAN Initial Attach, PDP Context Activation, UE requested PDN Connectivity, Attach with GTP on S2b, UE initiated Connectivity to Additional PDN with GTP on S2b, Handovers between Untrusted Non-3GPP IP Access with GTP on S2b and 3GPP Access, Initial Attach for emergency session (GTP on S2b), Initial Attach in WLAN on GTP S2a, Handovers between TWAN with GTP on S2a and 3GPP Access and UE initiated Connectivity to Additional PDN with GTP on S2a.One or more bearers shall be included for a Handover/TAU/RAU with an SGW change. See NOTE 6 and NOTE 7."}) +type_list["Bearer Context"]["max_instance"] = "1" ies.append({ "ie_type" : "Bearer Context", "ie_value" : "Bearer Contexts to be removed", "presence" : "C", "instance" : "1", "comment" : "This IE shall be included on the S4/S11 interfaces for the TAU/RAU/Handover cases where any of the bearers existing before the TAU/RAU/Handover procedure will be deactivated as consequence of the TAU/RAU/Handover procedure.For each of those bearers, an IE with the same type and instance value shall be included.See NOTE 6 and NOTE 7."}) ies.append({ "ie_type" : "Trace Information", "ie_value" : "Trace Information", "presence" : "C", "instance" : "0", "comment" : "This IE shall be included on the S4/S11 interface if an SGW trace is activated, and/or on the S5/S8 and S2a/2b interfaces if a PGW trace is activated. See 3GPP TS 32.422 [18]."}) ies.append({ "ie_type" : "FQ-CSID", "ie_value" : "MME-FQ-CSID", "presence" : "C", "instance" : "0", "comment" : "This IE shall be included by the MME on the S11 interface and shall be forwarded by an SGW on the S5/S8 interfaces according to the requirements in 3GPP TS 23.007 [17]."}) +type_list["FQ-CSID"]["max_instance"] = "1" ies.append({ "ie_type" : "FQ-CSID", "ie_value" : "SGW-FQ-CSID", "presence" : "C", "instance" : "1", "comment" : "This IE shall included by the SGW on the S5/S8 interfaces according to the requirements in 3GPP TS 23.007 [17]."}) +type_list["FQ-CSID"]["max_instance"] = "2" ies.append({ "ie_type" : "FQ-CSID", "ie_value" : "ePDG-FQ-CSID", "presence" : "C", "instance" : "2", "comment" : "This IE shall be included by the ePDG on the S2b interface according to the requirements in 3GPP TS 23.007 [17]."}) +type_list["FQ-CSID"]["max_instance"] = "3" ies.append({ "ie_type" : "FQ-CSID", "ie_value" : "TWAN-FQ-CSID", "presence" : "C", "instance" : "3", "comment" : "This IE shall be included by the TWAN on the S2a interface according to the requirements in 3GPP TS 23.007 [17]."}) ies.append({ "ie_type" : "UE Time Zone", "ie_value" : "UE Time Zone", "presence" : "CO", "instance" : "0", "comment" : "This IE shall be included by the MME over S11 during Initial Attach, a Handover from Trusted or Untrusted Non-3GPP IP Access to E-UTRAN and UE Requested PDN Connectivity procedure.This IE shall be included by the SGSN over S4 during PDP Context Activation procedure and a Handover from Trusted or Untrusted Non-3GPP IP Access to UTRAN/GERAN.This IE shall be included by the MME/SGSN over S11/S4 TAU/RAU/Handover with SGW relocation."}) ies.append({ "ie_type" : "UCI", "ie_value" : "User CSG Information", "presence" : "CO", "instance" : "0", "comment" : "This IE shall be included on the S4/S11 interface for E-UTRAN Initial Attach, a Handover from Trusted or Untrusted Non-3GPP IP Access to E-UTRAN, UE-requested PDN Connectivity, PDP Context Activation and a Handover from Trusted or Untrusted Non-3GPP IP Access to UTRAN using S4 procedures, if the UE is accessed via CSG cell or hybrid cell. The MME/SGSN shall also include it for TAU/RAU/Handover procedures with SGW relocation if the UE is accessed via a CSG cell or hybrid cell or leaves a CSG or hybrid cell and the PGW/PCRF has requested CSG info reporting and MME/SGSN support CSG info reporting. NOTE 11.The SGW shall include this IE on S5/S8 if it receives the User CSG information from MME/SGSN.See NOTE 10."}) ies.append({ "ie_type" : "Charging Characteristics", "ie_value" : "Charging Characteristics", "presence" : "C", "instance" : "0", "comment" : "This IE shall be included on the S4/S11, S5/S8 and S2a/S2b interfaces according to 3GPP TS 32.251 [8]"}) ies.append({ "ie_type" : "LDN", "ie_value" : "MME/S4-SGSN LDN", "presence" : "O", "instance" : "0", "comment" : "This IE is optionally sent by the MME to the SGW on the S11 interface and by the S4-SGSN to the SGW on the S4 interface (see 3GPP TS 32.423 [44]), when communicating the LDN to the peer node for the first time."}) +type_list["LDN"]["max_instance"] = "1" ies.append({ "ie_type" : "LDN", "ie_value" : "SGW LDN", "presence" : "O", "instance" : "1", "comment" : "This IE is optionally sent by the SGW to the PGW on the S5/S8 interfaces (see 3GPP TS 32.423 [44]), when communicating the LDN to the peer node for the first time."}) +type_list["LDN"]["max_instance"] = "2" ies.append({ "ie_type" : "LDN", "ie_value" : "ePDG LDN", "presence" : "O", "instance" : "2", "comment" : "This IE is optionally sent by the ePDG to the PGW on the S2b interfaces (see 3GPP TS 32.423 [44]), when contacting the peer node for the first time. "}) +type_list["LDN"]["max_instance"] = "3" ies.append({ "ie_type" : "LDN", "ie_value" : "TWAN LDN", "presence" : "O", "instance" : "3", "comment" : "This IE may be sent by the TWAN to the PGW on the S2a interfaces (see 3GPP TS 32.423 [44]), when contacting the peer node for the first time. "}) ies.append({ "ie_type" : "Signalling Priority Indication", "ie_value" : "Signalling Priority Indication", "presence" : "CO", "instance" : "0", "comment" : "The SGSN/MME shall include this IE on the S4/S11 interface if the UE indicates low access priority when requesting to establish the PDN connection. The SGW shall forward this IE in the Create Session Request message on the S5/S8 interfaces if received from the MME/SGSN. "}) ies.append({ "ie_type" : "IP Address", "ie_value" : "UE Local IP Address", "presence" : "CO", "instance" : "0", "comment" : "The ePDG shall include this IE on the S2b interface during an Initial Attach for emergency session (GTP on S2b). Otherwise the ePDG shall include this IE on the S2b interface based on local policy. "}) ies.append({ "ie_type" : "Port Number", "ie_value" : "UE UDP Port", "presence" : "CO", "instance" : "0", "comment" : "The ePDG shall include this IE on the S2b interface if NAT is detected, the UDP encapsulation is used and the UE Local IP Address is present."}) ies.append({ "ie_type" : "APCO", "ie_value" : "Additional Protocol Configuration Options", "presence" : "CO", "instance" : "0", "comment" : "If multiple authentications are supported by the ePDG, the ePDG shall include this IE on the S2b interface and perform the corresponding procedures as specified for PAP and CHAP authentication of the UE with external networks in 3GPP TS 33.402 [50]."}) +type_list["IP Address"]["max_instance"] = "1" ies.append({ "ie_type" : "IP Address", "ie_value" : "HNB Local IP Address", "presence" : "CO", "instance" : "1", "comment" : "The MME/SGSN shall include this IE on S11/S4 interface if the MME/SGSN receives this information from H(e)NB in UE associated S1/Iu signalling according (see 3GPP TS 23.139 [51]) during: E-UTRAN Initial Attach, a Handover from Trusted or Untrusted Non-3GPP IP Access to E-UTRAN, UE-requested PDN Connectivity, PDP Context Activation and a a Handover from Trusted or Untrusted Non-3GPP IP Access to UTRAN using S4;TAU/RAU/X2-based handover/Enhanced Serving RNS Relocation Procedure with SGW change, if the PGW/PCRF has requested H(e)NB information reporting for the PDN connection.The SGW shall forward this IE on S5/S8 interface if the SGW receives it from the MME/SGSN."}) +type_list["Port Number"]["max_instance"] = "1" ies.append({ "ie_type" : "Port Number", "ie_value" : "HNB UDP Port", "presence" : "CO", "instance" : "1", "comment" : "The MME/SGSN shall include this IE on S11/S4 interface if the MME/SGSN receives this information from H(e)NB in UE associated S1/Iu signalling according (see 3GPP TS 23.139 [51]) during: E-UTRAN Initial Attach, a Handover from Trusted or Untrusted Non-3GPP IP Access to E-UTRAN, UE-requested PDN Connectivity, PDP Context Activation and a Handover from Trusted or Untrusted Non-3GPP IP Access to UTRAN using S4;TAU/RAU/X2-based handover/Enhanced Serving RNS Relocation Procedure with SGW relocation, if the PGW/PCRF has requested H(e)NB information reporting for the PDN connection.The SGW shall forward this IE on S5/S8 interface if the SGW receives it from the MME/SGSN."}) +type_list["IP Address"]["max_instance"] = "2" ies.append({ "ie_type" : "IP Address", "ie_value" : "MME/S4-SGSN Identifier", "presence" : "CO", "instance" : "2", "comment" : "If the PGW triggered SGW restoration procedure is supported, the MME/S4-SGSN shall include this IE on S11/S4 interface and the SGW shall forward this IE on S5 interface in the existing signalling as specified in 3GPP TS 23.007 [17].If the overload control feature is supported by the MME/S4-SGSN and is activated for the PLMN to which the PGW belongs (see subclause 12.3.11), the MME/S4-SGSN shall include this IE on the S11/S4 interface. In that case, the SGW shall forward this IE on the S5/S8 interface."}) ies.append({ "ie_type" : "TWAN Identifier", "ie_value" : "TWAN Identifier", "presence" : "CO", "instance" : "0", "comment" : "This IE shall be included on the S2a interface for Initial Attach in WLAN procedure, UE-initiated Connectivity to Additional PDN with GTP on S2a and handover to TWAN with GTP on S2a procedure as specified in 3GPP TS 23.402 [45]. "}) +type_list["IP Address"]["max_instance"] = "3" ies.append({ "ie_type" : "IP Address", "ie_value" : "ePDG IP Address", "presence" : "O", "instance" : "3", "comment" : "This IE may be included on the S2b interface based on local policy for Fixed Broadband access network interworking, see 3GPPTS23.139[51]. If present, it shall contain the ePDG IP address which is used as IKEv2 tunnel endpoint with the UE."}) ies.append({ "ie_type" : "CN Operator Selection Entity", "ie_value" : "CN Operator Selection Entity", "presence" : "CO", "instance" : "0", "comment" : "In shared networks, the SGSN shall include this IE on the S4 interface for a PDP Context Activation, a Handover from Trusted or Untrusted Non-3GPP IP Access to UTRAN/GERAN and RAU with SGW relocation procedures, if the information is available, to indicate whether the Serving Network has been selected by the UE or by the network."}) ies.append({ "ie_type" : "Presence Reporting Area Information", "ie_value" : "Presence Reporting Area Information", "presence" : "CO", "instance" : "0", "comment" : "The MME/SGSN shall include this IE in the following procedures, if the PGW/PCRF requested reporting changes of UE presence in a Presence Reporting Area and the MME/SGSN supports such reporting:- TAU/RAU/Handover procedures with SGW relocation and MME/SGSN change. The new MME/SGSN shall then indicate whether the UE is inside or outside the Presence Reporting Area; - TAU/RAU/Handover procedures with SGW relocation and without MME/SGSN change, if the UE enters or leaves the Presence Reporting Area."}) ies.append({ "ie_type" : "Overload Control Information", "ie_value" : "MME/S4-SGSN's Overload Control Information", "presence" : "O", "instance" : "0", "comment" : "During an overload condition, the MME/S4-SGSN may include this IE on the S11/S4 interface if the overload control feature is supported by the MME/S4-SGSN and is activated for the PLMN to which the PGW belongs (see clause 12.3.11).When present, the MME/S4-SGSN shall provide only one instance of this IE, representing its overload information."}) +type_list["Overload Control Information"]["max_instance"] = "1" ies.append({ "ie_type" : "Overload Control Information", "ie_value" : "SGW's Overload Control Information", "presence" : "O", "instance" : "1", "comment" : "During an overload condition, the SGW may include this IE over the S5/S8 interface if the overload control feature is supported by the SGW and is activated for the PLMN to which the PGW belongs (see clause 12.3.11).When present, the SGW shall provide only one instance of this IE, representing its overload information."}) +type_list["Overload Control Information"]["max_instance"] = "2" ies.append({ "ie_type" : "Overload Control Information", "ie_value" : "TWAN/ePDG's Overload Control Information", "presence" : "O", "instance" : "2", "comment" : "During an overload condition, the TWAN/ePDG may include this IE over the S2a/S2b interface if the overload control feature is supported by the TWAN/ePDG and is activated for the PLMN to which the PGW belongs (see clause 12.3.11).When present, the TWAN/ePDG shall provide only one instance of this IE, representing its overload information."}) ies.append({ "ie_type" : "Millisecond Time Stamp", "ie_value" : "Origination Time Stamp", "presence" : "CO", "instance" : "0", "comment" : "The MME/SGSN and the TWAN/ePDG shall include this IE on the S11/S4 and S2a/S2b interface respectively, in the conditions specified in subclause 13.2.When present, the Origination Time Stamp shall contain the UTC time when the originating entity initiated the request."}) ies.append({ "ie_type" : "Integer Number", "ie_value" : "Maximum Wait Time", "presence" : "CO", "instance" : "0", "comment" : "The MME/SGSN and the TWAN/ePDG shall include this IE on the S11/S4 and S2a/S2b interface respectively, in the conditions specified in subclause 13.3.When present, the Maximum Wait Time shall contain the duration (number of milliseconds since the Origination Time Stamp) during which the originator of the request waits for a response."}) +type_list["TWAN Identifier"]["max_instance"] = "1" ies.append({ "ie_type" : "TWAN Identifier", "ie_value" : "WLAN Location Information", "presence" : "CO", "instance" : "1", "comment" : "This IE shall be included on the S2b interface if the WLAN Location Information is available. "}) ies.append({ "ie_type" : "TWAN Identifier Timestamp", "ie_value" : "WLAN Location Timestamp", "presence" : "CO", "instance" : "0", "comment" : "This IE shall be included on the S2b interface, if the WLAN Location Timestamp is available. "}) ies.append({ "ie_type" : "F-Container", "ie_value" : "NBIFOM Container", "presence" : "CO", "instance" : "0", "comment" : "This IE shall be included on the S11/S4 or S2a/S2b interfaces if the MME/S4-SGSN or the TWAN/ePDG receives an NBIFOM Container from the UE as specified in TS 24.161 73]. The Container Type shall be set to 4."}) @@ -54,5 +68,6 @@ ies.append({ "ie_type" : "Node Identifier", "ie_value" : "3GPP AAA Server Identi ies.append({ "ie_type" : "ePCO", "ie_value" : "Extended Protocol Configuration Options", "presence" : "CO", "instance" : "0", "comment" : "If the MME receives ePCO from the UE during the Initial Attach, UE requested PDN Connectivity procedures, the MME shall forward the ePCO IE to the SGW if the MME supports ePCO. The SGW shall also forward it to the PGW if the SGW supports ePCO. See NOTE 15."}) ies.append({ "ie_type" : "Serving PLMN Rate Control", "ie_value" : "Serving PLMN Rate Control", "presence" : "CO", "instance" : "0", "comment" : "The MME shall include this IE on the S11 interface if Serving PLMN Rate control is configured by the MME operator and the PDN Connection is set to Control Plane Only:- during an Initial Attach, or a UE Requested PDN Connectivity procedure.- during an inter MME TAU with SGW relocation procedureSee NOTE 18.The SGW shall include this IE on S5/S8 if it receives this IE from MME. "}) ies.append({ "ie_type" : "Counter", "ie_value" : "MO Exception Data Counter", "presence" : "CO", "instance" : "0", "comment" : "The MME shall include the counter if it has received the counter for RRC cause MO Exception data in the Context Response message during a TAU with an MME and SGW change."}) +type_list["Port Number"]["max_instance"] = "2" ies.append({ "ie_type" : "Port Number", "ie_value" : "UE TCP Port", "presence" : "CO", "instance" : "2", "comment" : "The ePDG shall include this IE on the S2b interface if NAT is detected, the TCP encapsulation is used and the UE Local IP Address is present."}) msg_list[key]["ies"] = ies diff --git a/lib/gtp/support/cache/gtpv2c_type_list.py b/lib/gtp/support/cache/gtpv2c_type_list.py index 9f1589169..5ee2c945c 100644 --- a/lib/gtp/support/cache/gtpv2c_type_list.py +++ b/lib/gtp/support/cache/gtpv2c_type_list.py @@ -1,121 +1,121 @@ -type_list["IMSI"] = { "type" : "1" } -type_list["Cause"] = { "type" : "2" } -type_list["Recovery"] = { "type" : "3" } -type_list["STN-SR"] = { "type" : "51" } -type_list["APN"] = { "type" : "71" } -type_list["AMBR"] = { "type" : "72" } -type_list["EBI"] = { "type" : "73" } -type_list["IP Address"] = { "type" : "74" } -type_list["MEI"] = { "type" : "75" } -type_list["MSISDN"] = { "type" : "76" } -type_list["Indication"] = { "type" : "77" } -type_list["PCO"] = { "type" : "78" } -type_list["PAA"] = { "type" : "79" } -type_list["Bearer QoS"] = { "type" : "80" } -type_list["Flow QoS"] = { "type" : "81" } -type_list["RAT Type"] = { "type" : "82" } -type_list["Serving Network"] = { "type" : "83" } -type_list["Bearer TFT"] = { "type" : "84" } -type_list["TAD"] = { "type" : "85" } -type_list["ULI"] = { "type" : "86" } -type_list["F-TEID"] = { "type" : "87" } -type_list["TMSI"] = { "type" : "88" } -type_list["Global CN-Id"] = { "type" : "89" } -type_list["S103PDF"] = { "type" : "90" } -type_list["S1UDF"] = { "type" : "91" } -type_list["Delay Value"] = { "type" : "92" } -type_list["Bearer Context"] = { "type" : "93" } -type_list["Charging ID"] = { "type" : "94" } -type_list["Charging Characteristics"] = { "type" : "95" } -type_list["Trace Information"] = { "type" : "96" } -type_list["Bearer Flags"] = { "type" : "97" } -type_list["PDN Type"] = { "type" : "99" } -type_list["Procedure Transaction ID"] = { "type" : "100" } -type_list["PDN Connection"] = { "type" : "109" } -type_list["PDU Numbers"] = { "type" : "110" } -type_list["P-TMSI"] = { "type" : "111" } -type_list["P-TMSI Signature"] = { "type" : "112" } -type_list["Hop Counter"] = { "type" : "113" } -type_list["UE Time Zone"] = { "type" : "114" } -type_list["Trace Reference"] = { "type" : "115" } -type_list["Complete Request Message"] = { "type" : "116" } -type_list["GUTI"] = { "type" : "117" } -type_list["F-Container"] = { "type" : "118" } -type_list["F-Cause"] = { "type" : "119" } -type_list["PLMN ID"] = { "type" : "120" } -type_list["Target Identification"] = { "type" : "121" } -type_list["Packet Flow ID"] = { "type" : "123" } -type_list["RAB Context"] = { "type" : "124" } -type_list["Source RNC PDCP Context Info"] = { "type" : "125" } -type_list["Port Number"] = { "type" : "126" } -type_list["APN Restriction"] = { "type" : "127" } -type_list["Selection Mode"] = { "type" : "128" } -type_list["Source Identification"] = { "type" : "129" } -type_list["Change Reporting Action"] = { "type" : "131" } -type_list["FQ-CSID"] = { "type" : "132" } -type_list["Channel needed"] = { "type" : "133" } -type_list["eMLPP Priority"] = { "type" : "134" } -type_list["Node Type"] = { "type" : "135" } -type_list["FQDN"] = { "type" : "136" } -type_list["TI"] = { "type" : "137" } -type_list["MBMS Session Duration"] = { "type" : "138" } -type_list["MBMS Service Area"] = { "type" : "139" } -type_list["MBMS Session Identifier"] = { "type" : "140" } -type_list["MBMS Flow Identifier"] = { "type" : "141" } -type_list["MBMS IP Multicast Distribution"] = { "type" : "142" } -type_list["MBMS Distribution Acknowledge"] = { "type" : "143" } -type_list["RFSP Index"] = { "type" : "144" } -type_list["UCI"] = { "type" : "145" } -type_list["CSG Information Reporting Action"] = { "type" : "146" } -type_list["CSG ID"] = { "type" : "147" } -type_list["CMI"] = { "type" : "148" } -type_list["Service indicator"] = { "type" : "149" } -type_list["Detach Type"] = { "type" : "150" } -type_list["LDN"] = { "type" : "151" } -type_list["Node Features"] = { "type" : "152" } -type_list["MBMS Time to Data Transfer"] = { "type" : "153" } -type_list["Throttling"] = { "type" : "154" } -type_list["ARP"] = { "type" : "155" } -type_list["EPC Timer"] = { "type" : "156" } -type_list["Signalling Priority Indication"] = { "type" : "157" } -type_list["TMGI"] = { "type" : "158" } -type_list["Additional MM context for SRVCC"] = { "type" : "159" } -type_list["Additional flags for SRVCC"] = { "type" : "160" } -type_list["MDT Configuration"] = { "type" : "162" } -type_list["APCO"] = { "type" : "163" } -type_list["Absolute Time of MBMS Data Transfer"] = { "type" : "164" } -type_list["eNB Information Reporting"] = { "type" : "165" } -type_list["IP4CP"] = { "type" : "166" } -type_list["Change to Report Flags"] = { "type" : "167" } -type_list["Action Indication"] = { "type" : "168" } -type_list["TWAN Identifier"] = { "type" : "169" } -type_list["ULI Timestamp"] = { "type" : "170" } -type_list["MBMS Flags"] = { "type" : "171" } -type_list["RAN/NAS Cause"] = { "type" : "172" } -type_list["CN Operator Selection Entity"] = { "type" : "173" } -type_list["TWMI"] = { "type" : "174" } -type_list["Node Number"] = { "type" : "175" } -type_list["Node Identifier"] = { "type" : "176" } -type_list["Presence Reporting Area Action"] = { "type" : "177" } -type_list["Presence Reporting Area Information"] = { "type" : "178" } -type_list["TWAN Identifier Timestamp"] = { "type" : "179" } -type_list["Overload Control Information"] = { "type" : "180" } -type_list["Load Control Information"] = { "type" : "181" } -type_list["Metric"] = { "type" : "182" } -type_list["Sequence Number"] = { "type" : "183" } -type_list["APN and Relative Capacity"] = { "type" : "184" } -type_list["WLAN Offloadability Indication"] = { "type" : "185" } -type_list["Paging and Service Information"] = { "type" : "186" } -type_list["Integer Number"] = { "type" : "187" } -type_list["Millisecond Time Stamp"] = { "type" : "188" } -type_list["Monitoring Event Information"] = { "type" : "189" } -type_list["ECGI List"] = { "type" : "190" } -type_list["Remote UE Context"] = { "type" : "191" } -type_list["Remote User ID"] = { "type" : "192" } -type_list["Remote UE IP Information"] = { "type" : "193" } -type_list["CIoT Optimizations Support Indication"] = { "type" : "194" } -type_list["SCEF PDN Connection"] = { "type" : "195" } -type_list["Header Compression Configuration"] = { "type" : "196" } -type_list["ePCO"] = { "type" : "197" } -type_list["Serving PLMN Rate Control"] = { "type" : "198" } -type_list["Counter"] = { "type" : "199" } +type_list["IMSI"] = { "type" : "1", "max_instance" : "0" } +type_list["Cause"] = { "type" : "2", "max_instance" : "0" } +type_list["Recovery"] = { "type" : "3", "max_instance" : "0" } +type_list["STN-SR"] = { "type" : "51", "max_instance" : "0" } +type_list["APN"] = { "type" : "71", "max_instance" : "0" } +type_list["AMBR"] = { "type" : "72", "max_instance" : "0" } +type_list["EBI"] = { "type" : "73", "max_instance" : "0" } +type_list["IP Address"] = { "type" : "74", "max_instance" : "0" } +type_list["MEI"] = { "type" : "75", "max_instance" : "0" } +type_list["MSISDN"] = { "type" : "76", "max_instance" : "0" } +type_list["Indication"] = { "type" : "77", "max_instance" : "0" } +type_list["PCO"] = { "type" : "78", "max_instance" : "0" } +type_list["PAA"] = { "type" : "79", "max_instance" : "0" } +type_list["Bearer QoS"] = { "type" : "80", "max_instance" : "0" } +type_list["Flow QoS"] = { "type" : "81", "max_instance" : "0" } +type_list["RAT Type"] = { "type" : "82", "max_instance" : "0" } +type_list["Serving Network"] = { "type" : "83", "max_instance" : "0" } +type_list["Bearer TFT"] = { "type" : "84", "max_instance" : "0" } +type_list["TAD"] = { "type" : "85", "max_instance" : "0" } +type_list["ULI"] = { "type" : "86", "max_instance" : "0" } +type_list["F-TEID"] = { "type" : "87", "max_instance" : "0" } +type_list["TMSI"] = { "type" : "88", "max_instance" : "0" } +type_list["Global CN-Id"] = { "type" : "89", "max_instance" : "0" } +type_list["S103PDF"] = { "type" : "90", "max_instance" : "0" } +type_list["S1UDF"] = { "type" : "91", "max_instance" : "0" } +type_list["Delay Value"] = { "type" : "92", "max_instance" : "0" } +type_list["Bearer Context"] = { "type" : "93", "max_instance" : "0" } +type_list["Charging ID"] = { "type" : "94", "max_instance" : "0" } +type_list["Charging Characteristics"] = { "type" : "95", "max_instance" : "0" } +type_list["Trace Information"] = { "type" : "96", "max_instance" : "0" } +type_list["Bearer Flags"] = { "type" : "97", "max_instance" : "0" } +type_list["PDN Type"] = { "type" : "99", "max_instance" : "0" } +type_list["Procedure Transaction ID"] = { "type" : "100", "max_instance" : "0" } +type_list["PDN Connection"] = { "type" : "109", "max_instance" : "0" } +type_list["PDU Numbers"] = { "type" : "110", "max_instance" : "0" } +type_list["P-TMSI"] = { "type" : "111", "max_instance" : "0" } +type_list["P-TMSI Signature"] = { "type" : "112", "max_instance" : "0" } +type_list["Hop Counter"] = { "type" : "113", "max_instance" : "0" } +type_list["UE Time Zone"] = { "type" : "114", "max_instance" : "0" } +type_list["Trace Reference"] = { "type" : "115", "max_instance" : "0" } +type_list["Complete Request Message"] = { "type" : "116", "max_instance" : "0" } +type_list["GUTI"] = { "type" : "117", "max_instance" : "0" } +type_list["F-Container"] = { "type" : "118", "max_instance" : "0" } +type_list["F-Cause"] = { "type" : "119", "max_instance" : "0" } +type_list["PLMN ID"] = { "type" : "120", "max_instance" : "0" } +type_list["Target Identification"] = { "type" : "121", "max_instance" : "0" } +type_list["Packet Flow ID"] = { "type" : "123", "max_instance" : "0" } +type_list["RAB Context"] = { "type" : "124", "max_instance" : "0" } +type_list["Source RNC PDCP Context Info"] = { "type" : "125", "max_instance" : "0" } +type_list["Port Number"] = { "type" : "126", "max_instance" : "0" } +type_list["APN Restriction"] = { "type" : "127", "max_instance" : "0" } +type_list["Selection Mode"] = { "type" : "128", "max_instance" : "0" } +type_list["Source Identification"] = { "type" : "129", "max_instance" : "0" } +type_list["Change Reporting Action"] = { "type" : "131", "max_instance" : "0" } +type_list["FQ-CSID"] = { "type" : "132", "max_instance" : "0" } +type_list["Channel needed"] = { "type" : "133", "max_instance" : "0" } +type_list["eMLPP Priority"] = { "type" : "134", "max_instance" : "0" } +type_list["Node Type"] = { "type" : "135", "max_instance" : "0" } +type_list["FQDN"] = { "type" : "136", "max_instance" : "0" } +type_list["TI"] = { "type" : "137", "max_instance" : "0" } +type_list["MBMS Session Duration"] = { "type" : "138", "max_instance" : "0" } +type_list["MBMS Service Area"] = { "type" : "139", "max_instance" : "0" } +type_list["MBMS Session Identifier"] = { "type" : "140", "max_instance" : "0" } +type_list["MBMS Flow Identifier"] = { "type" : "141", "max_instance" : "0" } +type_list["MBMS IP Multicast Distribution"] = { "type" : "142", "max_instance" : "0" } +type_list["MBMS Distribution Acknowledge"] = { "type" : "143", "max_instance" : "0" } +type_list["RFSP Index"] = { "type" : "144", "max_instance" : "0" } +type_list["UCI"] = { "type" : "145", "max_instance" : "0" } +type_list["CSG Information Reporting Action"] = { "type" : "146", "max_instance" : "0" } +type_list["CSG ID"] = { "type" : "147", "max_instance" : "0" } +type_list["CMI"] = { "type" : "148", "max_instance" : "0" } +type_list["Service indicator"] = { "type" : "149", "max_instance" : "0" } +type_list["Detach Type"] = { "type" : "150", "max_instance" : "0" } +type_list["LDN"] = { "type" : "151", "max_instance" : "0" } +type_list["Node Features"] = { "type" : "152", "max_instance" : "0" } +type_list["MBMS Time to Data Transfer"] = { "type" : "153", "max_instance" : "0" } +type_list["Throttling"] = { "type" : "154", "max_instance" : "0" } +type_list["ARP"] = { "type" : "155", "max_instance" : "0" } +type_list["EPC Timer"] = { "type" : "156", "max_instance" : "0" } +type_list["Signalling Priority Indication"] = { "type" : "157", "max_instance" : "0" } +type_list["TMGI"] = { "type" : "158", "max_instance" : "0" } +type_list["Additional MM context for SRVCC"] = { "type" : "159", "max_instance" : "0" } +type_list["Additional flags for SRVCC"] = { "type" : "160", "max_instance" : "0" } +type_list["MDT Configuration"] = { "type" : "162", "max_instance" : "0" } +type_list["APCO"] = { "type" : "163", "max_instance" : "0" } +type_list["Absolute Time of MBMS Data Transfer"] = { "type" : "164", "max_instance" : "0" } +type_list["eNB Information Reporting"] = { "type" : "165", "max_instance" : "0" } +type_list["IP4CP"] = { "type" : "166", "max_instance" : "0" } +type_list["Change to Report Flags"] = { "type" : "167", "max_instance" : "0" } +type_list["Action Indication"] = { "type" : "168", "max_instance" : "0" } +type_list["TWAN Identifier"] = { "type" : "169", "max_instance" : "0" } +type_list["ULI Timestamp"] = { "type" : "170", "max_instance" : "0" } +type_list["MBMS Flags"] = { "type" : "171", "max_instance" : "0" } +type_list["RAN/NAS Cause"] = { "type" : "172", "max_instance" : "0" } +type_list["CN Operator Selection Entity"] = { "type" : "173", "max_instance" : "0" } +type_list["TWMI"] = { "type" : "174", "max_instance" : "0" } +type_list["Node Number"] = { "type" : "175", "max_instance" : "0" } +type_list["Node Identifier"] = { "type" : "176", "max_instance" : "0" } +type_list["Presence Reporting Area Action"] = { "type" : "177", "max_instance" : "0" } +type_list["Presence Reporting Area Information"] = { "type" : "178", "max_instance" : "0" } +type_list["TWAN Identifier Timestamp"] = { "type" : "179", "max_instance" : "0" } +type_list["Overload Control Information"] = { "type" : "180", "max_instance" : "0" } +type_list["Load Control Information"] = { "type" : "181", "max_instance" : "0" } +type_list["Metric"] = { "type" : "182", "max_instance" : "0" } +type_list["Sequence Number"] = { "type" : "183", "max_instance" : "0" } +type_list["APN and Relative Capacity"] = { "type" : "184", "max_instance" : "0" } +type_list["WLAN Offloadability Indication"] = { "type" : "185", "max_instance" : "0" } +type_list["Paging and Service Information"] = { "type" : "186", "max_instance" : "0" } +type_list["Integer Number"] = { "type" : "187", "max_instance" : "0" } +type_list["Millisecond Time Stamp"] = { "type" : "188", "max_instance" : "0" } +type_list["Monitoring Event Information"] = { "type" : "189", "max_instance" : "0" } +type_list["ECGI List"] = { "type" : "190", "max_instance" : "0" } +type_list["Remote UE Context"] = { "type" : "191", "max_instance" : "0" } +type_list["Remote User ID"] = { "type" : "192", "max_instance" : "0" } +type_list["Remote UE IP Information"] = { "type" : "193", "max_instance" : "0" } +type_list["CIoT Optimizations Support Indication"] = { "type" : "194", "max_instance" : "0" } +type_list["SCEF PDN Connection"] = { "type" : "195", "max_instance" : "0" } +type_list["Header Compression Configuration"] = { "type" : "196", "max_instance" : "0" } +type_list["ePCO"] = { "type" : "197", "max_instance" : "0" } +type_list["Serving PLMN Rate Control"] = { "type" : "198", "max_instance" : "0" } +type_list["Counter"] = { "type" : "199", "max_instance" : "0" } diff --git a/lib/gtp/support/gtpv2c_tlv.py b/lib/gtp/support/gtpv2c_tlv.py index d641bc95a..afc4a7f40 100644 --- a/lib/gtp/support/gtpv2c_tlv.py +++ b/lib/gtp/support/gtpv2c_tlv.py @@ -30,6 +30,10 @@ import getpass version = "0.1.0" +msg_list = {} +type_list = {} +group_list = {} + verbosity = 0 filename = "" outdir = './' @@ -121,6 +125,11 @@ def get_cells(cells): ie_value = re.sub('\s*\n*\s*\([^\)]*\)*', '', cells[0].text).encode('ascii', 'ignore') comment = cells[2].text.encode('ascii', 'ignore') comment = re.sub('\n|\"|\'|\\\\', '', comment); + + if instance > type_list[ie_type]["max_instance"]: + type_list[ie_type]["max_instance"] = instance + write_file(f, "type_list[\"" + ie_type + "\"][\"max_instance\"] = \"" + instance + "\"\n") + return { "ie_type" : ie_type, "ie_value" : ie_value, "presence" : presence, "instance" : instance, "comment" : comment } def write_cells_to_file(name, cells): @@ -160,7 +169,6 @@ else: d_error("Cannot find file : " + filename) d_info("[Message List]") -msg_list = {} cachefile = cachedir + 'gtpv2c_msg_list.py' if os.path.isfile(cachefile) and os.access(cachefile, os.R_OK): execfile(cachefile) @@ -193,7 +201,6 @@ else: f.close() d_info("[IE Type List]") -type_list = {} cachefile = cachedir + 'gtpv2c_type_list.py' if os.path.isfile(cachefile) and os.access(cachefile, os.R_OK): execfile(cachefile) @@ -230,13 +237,13 @@ else: key = re.sub('\)', '', key) key = re.sub('\s*$', '', key) type = row.cells[0].text.encode('ascii', 'ignore') - type_list[key] = { "type": type } - write_file(f, "type_list[\"" + key + "\"] = { \"type\" : \"" + type + "\" }\n") + type_list[key] = { "type": type , "max_instance" : "0" } + write_file(f, "type_list[\"" + key + "\"] = { \"type\" : \"" + type) + write_file(f, "\", \"max_instance\" : \"0\" }\n") f.close() -type_list['MM Context'] = { "type": "107" } +type_list['MM Context'] = { "type": "107", "max_instance" : "0" } d_info("[Group IE List]") -group_list = {} cachefile = cachedir + 'gtpv2c_group_list.py' if os.path.isfile(cachefile) and os.access(cachefile, os.R_OK): execfile(cachefile) @@ -258,9 +265,6 @@ else: ie_name = re.sub('\s*IE Type.*', '', row.cells[2].text.encode('ascii', 'ignore')) if ie_name not in group_list.keys(): - type_list[ie_name] = { "type": ie_type } - write_file(f, "type_list[\"" + ie_name + "\"] = { \"type\" : \"" + ie_type + "\" }\n") - group = [] write_file(f, "group = []\n") for row in table.rows[4:]: @@ -335,8 +339,6 @@ for key in msg_list.keys(): msg_list[key]["ies"] = ies write_file(f, "msg_list[key][\"ies\"] = ies\n") f.close() -# Errata Standard Specification Document -type_list["Overload Control Information"] = { "type" : "180" } f = open(outdir + 'gtpv2c_tlv.h', 'w') output_header_to_file(f)