GTPv2: Update IE 8.12 Indication

This commit is contained in:
Anders Broman 2020-12-17 09:59:52 +01:00 committed by AndersBroman
parent cf6f049456
commit 1694820e84
5 changed files with 69 additions and 13 deletions

View File

@ -1595,6 +1595,7 @@ libwireshark.so.0 libwireshark0 #MINVER#
tfs_allocated_by_receiver_sender@Base 1.99.1 tfs_allocated_by_receiver_sender@Base 1.99.1
tfs_allow_block@Base 1.9.1 tfs_allow_block@Base 1.9.1
tfs_allowed_not_allowed@Base 1.9.1 tfs_allowed_not_allowed@Base 1.9.1
tfs_applicable_not_applicable@Base 3.5.0
tfs_asynchronous_synchronous@Base 1.99.1 tfs_asynchronous_synchronous@Base 1.99.1
tfs_available_not_available@Base 1.9.1 tfs_available_not_available@Base 1.9.1
tfs_c2s_s2c@Base 2.5.0 tfs_c2s_s2c@Base 2.5.0

View File

@ -141,8 +141,6 @@ static const value_string elmi_evc_type[] = {
{ 0, NULL } { 0, NULL }
}; };
const true_false_string tfs_applicable_not_applicable = { "Applicable", "Not Applicable" };
static gint static gint
dissect_elmi_sub_info_elem( dissect_elmi_sub_info_elem(
tvbuff_t *tvb, gint offset, proto_tree *tree) tvbuff_t *tvb, gint offset, proto_tree *tree)

View File

@ -50,7 +50,10 @@ static int hf_gtpv2_response_to = -1;
static int hf_gtpv2_response_time = -1; static int hf_gtpv2_response_time = -1;
static int hf_gtpv2_spare_half_octet = -1; static int hf_gtpv2_spare_half_octet = -1;
//static int hf_gtpv2_spare_b7_b1 = -1; //static int hf_gtpv2_spare_b7_b1 = -1;
static int hf_gtpv2_spare_b7_b2 = -1;
static int hf_gtpv2_spare_b7_b3 = -1; static int hf_gtpv2_spare_b7_b3 = -1;
static int hf_gtpv2_spare_b7_b5 = -1;
static int hf_gtpv2_spare_bits = -1; static int hf_gtpv2_spare_bits = -1;
static int hf_gtpv2_flags = -1; static int hf_gtpv2_flags = -1;
static int hf_gtpv2_version = -1; static int hf_gtpv2_version = -1;
@ -159,11 +162,18 @@ static int hf_gtpv2_ltempi = -1;
static int hf_gtpv2_enbcrsi = -1; static int hf_gtpv2_enbcrsi = -1;
static int hf_gtpv2_tspcmi = -1; static int hf_gtpv2_tspcmi = -1;
static int hf_gtpv2_ethpdn = -1; static int hf_gtpv2_ethpdn = -1;
static int hf_gtpv2_csrmfi = -1;
static int hf_gtpv2_mtedtn = -1;
static int hf_gtpv2_mtedta = -1;
static int hf_gtpv2_n5gnmi = -1; static int hf_gtpv2_n5gnmi = -1;
static int hf_gtpv2_5gcnrs = -1; static int hf_gtpv2_5gcnrs = -1;
static int hf_gtpv2_5gcnri = -1; static int hf_gtpv2_5gcnri = -1;
static int hf_gtpv2_5srhoi = -1; static int hf_gtpv2_5srhoi = -1;
static int hf_gtpv2_nsenbi = -1;
static int hf_gtpv2_idfupf = -1;
static int hf_gtpv2_emci = -1;
static int hf_gtpv2_pdn_type = -1; static int hf_gtpv2_pdn_type = -1;
static int hf_gtpv2_pdn_ipv4 = -1; static int hf_gtpv2_pdn_ipv4 = -1;
@ -781,8 +791,6 @@ static int hf_gtpv2_max_pkt_loss_rte_dl_flg = -1;
static int hf_gtpv2_max_pkt_loss_rte_ul = -1; static int hf_gtpv2_max_pkt_loss_rte_ul = -1;
static int hf_gtpv2_max_pkt_loss_rte_dl = -1; static int hf_gtpv2_max_pkt_loss_rte_dl = -1;
static int hf_gtpv2_spare_b7_b2 = -1;
static int hf_gtpv2_spare_b7_b5 = -1;
static int hf_gtpv2_mm_context_iov_updates_counter = -1; static int hf_gtpv2_mm_context_iov_updates_counter = -1;
static int hf_gtpv2_mm_context_ear_len = -1; static int hf_gtpv2_mm_context_ear_len = -1;
static int hf_gtpv2_node_number_len = -1; static int hf_gtpv2_node_number_len = -1;
@ -2339,7 +2347,6 @@ dissect_gtpv2_ind(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_ite
/* Octet 5 DAF DTF HI DFI OI ISRSI ISRAI SGWCI */ /* Octet 5 DAF DTF HI DFI OI ISRSI ISRAI SGWCI */
proto_tree_add_bitmask_list(tree, tvb, offset, 1, oct5_flags, ENC_NA); proto_tree_add_bitmask_list(tree, tvb, offset, 1, oct5_flags, ENC_NA);
if (length == 1) { if (length == 1) {
proto_tree_add_expert_format(tree, pinfo, &ei_gtpv2_ie_len_invalid, tvb, 0, length, "Older version?, should be 2 octets in 8.0.0"); proto_tree_add_expert_format(tree, pinfo, &ei_gtpv2_ie_len_invalid, tvb, 0, length, "Older version?, should be 2 octets in 8.0.0");
return; return;
@ -2468,7 +2475,9 @@ dissect_gtpv2_ind(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_ite
} }
static int* const oct12_flags[] = { static int* const oct12_flags[] = {
&hf_gtpv2_spare_b7_b5, &hf_gtpv2_csrmfi,
&hf_gtpv2_mtedtn,
&hf_gtpv2_mtedta,
&hf_gtpv2_n5gnmi, &hf_gtpv2_n5gnmi,
&hf_gtpv2_5gcnrs, &hf_gtpv2_5gcnrs,
&hf_gtpv2_5gcnri, &hf_gtpv2_5gcnri,
@ -2476,7 +2485,8 @@ dissect_gtpv2_ind(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_ite
&hf_gtpv2_ethpdn, &hf_gtpv2_ethpdn,
NULL NULL
}; };
/*Octet 12 Spare ETHPDN */ /* Octet 12 CSRMFI MTEDTN MTEDTA N5GNMI 5GCNRS 5GCNRI 5SRHOI ETHPDN */
proto_tree_add_bitmask_list(tree, tvb, offset, 1, oct12_flags, ENC_NA); proto_tree_add_bitmask_list(tree, tvb, offset, 1, oct12_flags, ENC_NA);
offset += 1; offset += 1;
@ -2484,6 +2494,23 @@ dissect_gtpv2_ind(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_ite
return; return;
} }
static int* const oct13_flags[] = {
&hf_gtpv2_spare_b7_b3,
&hf_gtpv2_nsenbi,
&hf_gtpv2_idfupf,
&hf_gtpv2_emci,
NULL
};
/* Octet 13 Spare Spare Spare Spare Spare NSENBI IDFUPF EMCI */
proto_tree_add_bitmask_list(tree, tvb, offset, 1, oct13_flags, ENC_NA);
offset += 1;
if (length == 9) {
return;
}
proto_tree_add_expert_format(tree, pinfo, &ei_gtpv2_ie_data_not_dissected, tvb, offset, -1, "The rest of the IE not dissected yet"); proto_tree_add_expert_format(tree, pinfo, &ei_gtpv2_ie_data_not_dissected, tvb, offset, -1, "The rest of the IE not dissected yet");
@ -3083,7 +3110,7 @@ static const value_string geographic_location_type_vals[] = {
{137, "5GS TAI and NCGI"}, {137, "5GS TAI and NCGI"},
{138, "NG-RAN Node ID"}, {138, "NG-RAN Node ID"},
{139, "5GS TAI and NG-RAN Node ID"}, {139, "5GS TAI and NG-RAN Node ID"},
/* 140-255 Spare for future use */ /* 140-255 Spare for future use */
{0, NULL} {0, NULL}
}; };
@ -4486,14 +4513,14 @@ dissect_gtpv2_mm_context_utms_q(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
return; return;
} }
/* s+3 IOV_updates counter */ /* s+3 IOV_updates counter */
if (offset < (gint)length) { if (offset < (gint)length) {
proto_tree_add_item(tree, hf_gtpv2_mm_context_iov_updates_counter, tvb, offset, 1, ENC_BIG_ENDIAN); proto_tree_add_item(tree, hf_gtpv2_mm_context_iov_updates_counter, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1; offset += 1;
} else { } else {
return; return;
} }
/* s+4 Length of Extended Access Restriction Data */ /* s+4 Length of Extended Access Restriction Data */
if (offset < (gint)length) { if (offset < (gint)length) {
ear_len = tvb_get_guint8(tvb, offset); ear_len = tvb_get_guint8(tvb, offset);
proto_tree_add_item(tree, hf_gtpv2_mm_context_ear_len, tvb, offset, 1, ENC_BIG_ENDIAN); proto_tree_add_item(tree, hf_gtpv2_mm_context_ear_len, tvb, offset, 1, ENC_BIG_ENDIAN);
@ -4785,7 +4812,7 @@ dissect_gtpv2_mm_context_eps_qq(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
proto_tree_add_item_ret_uint(tree, hf_gtpv2_mm_context_cnr_len, tvb, offset, 1, ENC_BIG_ENDIAN, &ie_len); proto_tree_add_item_ret_uint(tree, hf_gtpv2_mm_context_cnr_len, tvb, offset, 1, ENC_BIG_ENDIAN, &ie_len);
offset += 1; offset += 1;
if (ie_len) { if (ie_len) {
/* (l+2) to (l+5) Core Network Restrictions */ /* (l+2) to (l+5) Core Network Restrictions */
/* The Core Network Restrictions coding is specified in clause 7.2.230 of 3GPP TS 29.272 [70]. /* The Core Network Restrictions coding is specified in clause 7.2.230 of 3GPP TS 29.272 [70].
If Length of Core Network Restrictions is zero, then the field of Core Network Restrictions If Length of Core Network Restrictions is zero, then the field of Core Network Restrictions
in octets "(l+2) to (l+5)" shall not be present. in octets "(l+2) to (l+5)" shall not be present.
@ -9288,9 +9315,23 @@ void proto_register_gtpv2(void)
{"TSPCMI (Triggering SGSN Initiated PDP Context Creation/Modification Indication)", "gtpv2.tspcmi", {"TSPCMI (Triggering SGSN Initiated PDP Context Creation/Modification Indication)", "gtpv2.tspcmi",
FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL} FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL}
}, },
{&hf_gtpv2_csrmfi,
{ "CSRMFI (Create Session Request Message Forwarded Indication)", "gtpv2.csrmfi",
FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }
},
{&hf_gtpv2_mtedtn,
{ "MTEDTN (MT-EDT Not Applicable)", "gtpv2.mtedtn",
FT_BOOLEAN, 8, TFS(&tfs_applicable_not_applicable), 0x40, NULL, HFILL }
},
{&hf_gtpv2_mtedta,
{ "MTEDTA (MT-EDT Applicable)", "gtpv2.mtedta",
FT_BOOLEAN, 8, TFS(&tfs_applicable_not_applicable), 0x20, NULL, HFILL }
},
{&hf_gtpv2_n5gnmi, {&hf_gtpv2_n5gnmi,
{ "N5GNMI (No 5GS N26 Mobility Indication", "gtpv2.n5gnmi", { "N5GNMI (No 5GS N26 Mobility Indication)", "gtpv2.n5gnmi",
FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x10, NULL, HFILL } FT_BOOLEAN, 8, NULL, 0x10, NULL, HFILL }
}, },
{ &hf_gtpv2_5gcnrs, { &hf_gtpv2_5gcnrs,
{ "5GCNRS (5GC Not Restricted Support)", "gtpv2.5gcnrs", { "5GCNRS (5GC Not Restricted Support)", "gtpv2.5gcnrs",
@ -9308,6 +9349,20 @@ void proto_register_gtpv2(void)
{"ETHPDN (Ethernet PDN Support Indication)", "gtpv2.ethpdn", {"ETHPDN (Ethernet PDN Support Indication)", "gtpv2.ethpdn",
FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01, NULL, HFILL} FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01, NULL, HFILL}
}, },
{ &hf_gtpv2_nsenbi,
{"NSENBI (Notify Source eNodeB Indication)", "gtpv2.nsenbi",
FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL}
},
{ &hf_gtpv2_idfupf,
{"IDFUPF (Indirect Data Forwarding with UPF Indication)", "gtpv2.idfupf",
FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL}
},
{ &hf_gtpv2_emci,
{"EMCI (Emergency PDU Session Indication)", "gtpv2.emci",
FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL}
},
{ &hf_gtpv2_pdn_type, { &hf_gtpv2_pdn_type,
{"PDN Type", "gtpv2.pdn_type", {"PDN Type", "gtpv2.pdn_type",
FT_UINT8, BASE_DEC, VALS(gtpv2_pdn_type_vals), 0x07, FT_UINT8, BASE_DEC, VALS(gtpv2_pdn_type_vals), 0x07,

View File

@ -107,6 +107,7 @@ const true_false_string tfs_selected_not_selected = { "Selected", "Not Selected"
const true_false_string tfs_add_drop = { "Add", "Drop" }; const true_false_string tfs_add_drop = { "Add", "Drop" };
const true_false_string tfs_no_extension_extension = { "No Extension", "Extension" }; const true_false_string tfs_no_extension_extension = { "No Extension", "Extension" };
const true_false_string tfs_user_provider = { "User", "Provider" }; const true_false_string tfs_user_provider = { "User", "Provider" };
const true_false_string tfs_applicable_not_applicable = { "Applicable", "Not Applicable" };
/* /*
* Editor modelines - https://www.wireshark.org/tools/modelines.html * Editor modelines - https://www.wireshark.org/tools/modelines.html

View File

@ -126,6 +126,7 @@ WS_DLL_PUBLIC const true_false_string tfs_selected_not_selected;
WS_DLL_PUBLIC const true_false_string tfs_add_drop; WS_DLL_PUBLIC const true_false_string tfs_add_drop;
WS_DLL_PUBLIC const true_false_string tfs_no_extension_extension; WS_DLL_PUBLIC const true_false_string tfs_no_extension_extension;
WS_DLL_PUBLIC const true_false_string tfs_user_provider; WS_DLL_PUBLIC const true_false_string tfs_user_provider;
WS_DLL_PUBLIC const true_false_string tfs_applicable_not_applicable;
#ifdef __cplusplus #ifdef __cplusplus
} }