[GTPv2] Add dissection of 8.127 Header Compression Configuration.
Change-Id: Iace27ebf536cad73d9aaf4abceb6d235f34d68f6 Reviewed-on: https://code.wireshark.org/review/24208 Petri-Dish: Anders Broman <a.broman58@gmail.com> Tested-by: Petri Dish Buildbot Reviewed-by: Anders Broman <a.broman58@gmail.com>
This commit is contained in:
parent
dd4f8d08b2
commit
c571e69208
|
@ -71,7 +71,7 @@ static int hf_gtpv2_teid = -1;
|
||||||
static int hf_gtpv2_seq = -1;
|
static int hf_gtpv2_seq = -1;
|
||||||
static int hf_gtpv2_msg_prio = -1;
|
static int hf_gtpv2_msg_prio = -1;
|
||||||
static int hf_gtpv2_spare = -1;
|
static int hf_gtpv2_spare = -1;
|
||||||
|
static int hf_gtpv2_spare_w0 = -1;
|
||||||
|
|
||||||
static int hf_gtpv2_ie = -1;
|
static int hf_gtpv2_ie = -1;
|
||||||
static int hf_gtpv2_ie_len = -1;
|
static int hf_gtpv2_ie_len = -1;
|
||||||
|
@ -588,11 +588,21 @@ static int hf_gtpv2_node_name = -1;
|
||||||
static int hf_gtpv2_length_of_node_realm = -1;
|
static int hf_gtpv2_length_of_node_realm = -1;
|
||||||
static int hf_gtpv2_node_realm = -1;
|
static int hf_gtpv2_node_realm = -1;
|
||||||
static int hf_gtpv2_ms_ts = -1;
|
static int hf_gtpv2_ms_ts = -1;
|
||||||
|
static int hf_gtpv2_rohc_profiles_bit0 = -1;
|
||||||
|
static int hf_gtpv2_rohc_profiles_bit1 = -1;
|
||||||
|
static int hf_gtpv2_rohc_profiles_bit2 = -1;
|
||||||
|
static int hf_gtpv2_rohc_profiles_bit3 = -1;
|
||||||
|
static int hf_gtpv2_rohc_profiles_bit4 = -1;
|
||||||
|
static int hf_gtpv2_rohc_profiles_bit5 = -1;
|
||||||
|
static int hf_gtpv2_rohc_profiles_bit6 = -1;
|
||||||
|
static int hf_gtpv2_rohc_profiles_bit7 = -1;
|
||||||
|
static int hf_gtpv2_max_cid = -1;
|
||||||
static int hf_gtpv2_uplink_rate_limit = -1;
|
static int hf_gtpv2_uplink_rate_limit = -1;
|
||||||
static int hf_gtpv2_downlink_rate_limit = -1;
|
static int hf_gtpv2_downlink_rate_limit = -1;
|
||||||
static int hf_gtpv2_timestamp_value = -1;
|
static int hf_gtpv2_timestamp_value = -1;
|
||||||
static int hf_gtpv2_counter_value = -1;
|
static int hf_gtpv2_counter_value = -1;
|
||||||
static int hf_gtpv2_uli_flags = -1;
|
static int hf_gtpv2_uli_flags = -1;
|
||||||
|
static int hf_gtpv2_rohc_profile_flags = -1;
|
||||||
|
|
||||||
static gint ett_gtpv2 = -1;
|
static gint ett_gtpv2 = -1;
|
||||||
static gint ett_gtpv2_flags = -1;
|
static gint ett_gtpv2_flags = -1;
|
||||||
|
@ -651,6 +661,7 @@ static gint ett_gtpv2_load_control_inf = -1;
|
||||||
static gint ett_gtpv2_eci = -1;
|
static gint ett_gtpv2_eci = -1;
|
||||||
static gint ett_gtpv2_twan_flags = -1;
|
static gint ett_gtpv2_twan_flags = -1;
|
||||||
static gint ett_gtpv2_ciot_support_ind = -1;
|
static gint ett_gtpv2_ciot_support_ind = -1;
|
||||||
|
static gint ett_gtpv2_rohc_profile_flags = -1;
|
||||||
|
|
||||||
static expert_field ei_gtpv2_ie_data_not_dissected = EI_INIT;
|
static expert_field ei_gtpv2_ie_data_not_dissected = EI_INIT;
|
||||||
static expert_field ei_gtpv2_ie_len_invalid = EI_INIT;
|
static expert_field ei_gtpv2_ie_len_invalid = EI_INIT;
|
||||||
|
@ -993,8 +1004,8 @@ static gint ett_gtpv2_ies[NUM_GTPV2_IES];
|
||||||
#define GTPV2_IE_CIOT_OPT_SUPPORT_IND 194
|
#define GTPV2_IE_CIOT_OPT_SUPPORT_IND 194
|
||||||
/*
|
/*
|
||||||
195 SCEF PDN Connection
|
195 SCEF PDN Connection
|
||||||
196 Header Compression Configuration
|
|
||||||
*/
|
*/
|
||||||
|
#define GTPV2_IE_HEADER_COMP_CONF 196
|
||||||
#define GTPV2_IE_EXTENDED_PCO 197
|
#define GTPV2_IE_EXTENDED_PCO 197
|
||||||
#define GTPV2_IE_SERV_PLMN_RATE_CONTROL 198
|
#define GTPV2_IE_SERV_PLMN_RATE_CONTROL 198
|
||||||
#define GTPV2_IE_COUNTER 199
|
#define GTPV2_IE_COUNTER 199
|
||||||
|
@ -6591,6 +6602,41 @@ dissect_gtpv2_ciot_opt_support_ind(tvbuff_t *tvb, packet_info *pinfo, proto_tree
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 8.127 Header Compression Configuration
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
dissect_gtpv2_header_comp_comf(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, guint16 length _U_, guint8 message_type _U_, guint8 instance _U_, session_args_t * args _U_)
|
||||||
|
{
|
||||||
|
int offset = 0;
|
||||||
|
|
||||||
|
static const int * gtpv2_rohc_profile_flags_flags[] = {
|
||||||
|
&hf_gtpv2_rohc_profiles_bit7,
|
||||||
|
&hf_gtpv2_rohc_profiles_bit6,
|
||||||
|
&hf_gtpv2_rohc_profiles_bit5,
|
||||||
|
&hf_gtpv2_rohc_profiles_bit4,
|
||||||
|
&hf_gtpv2_rohc_profiles_bit3,
|
||||||
|
&hf_gtpv2_rohc_profiles_bit2,
|
||||||
|
&hf_gtpv2_rohc_profiles_bit1,
|
||||||
|
&hf_gtpv2_rohc_profiles_bit0,
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Octet 5 to 6 ROHC Profiles */
|
||||||
|
|
||||||
|
proto_tree_add_bitmask_with_flags(tree, tvb, offset, hf_gtpv2_rohc_profile_flags,
|
||||||
|
ett_gtpv2_rohc_profile_flags, gtpv2_rohc_profile_flags_flags, ENC_BIG_ENDIAN, BMT_NO_FALSE | BMT_NO_INT);
|
||||||
|
offset++;
|
||||||
|
proto_tree_add_item(tree, hf_gtpv2_spare_w0, tvb, offset, 1, ENC_BIG_ENDIAN);
|
||||||
|
offset++;
|
||||||
|
/* Octet 7 to 8 MAX_CID*/
|
||||||
|
proto_tree_add_item(tree, hf_gtpv2_max_cid, tvb, offset, 2, ENC_BIG_ENDIAN);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 8.129 Serving PLMN Rate Control
|
* 8.129 Serving PLMN Rate Control
|
||||||
*/
|
*/
|
||||||
|
@ -6774,7 +6820,7 @@ static const gtpv2_ie_t gtpv2_ies[] = {
|
||||||
/* 193, 8.124 Remote UE IP Information */
|
/* 193, 8.124 Remote UE IP Information */
|
||||||
{GTPV2_IE_CIOT_OPT_SUPPORT_IND, dissect_gtpv2_ciot_opt_support_ind}, /* 194, 8.125 CIoT Optimizations Support Indication */
|
{GTPV2_IE_CIOT_OPT_SUPPORT_IND, dissect_gtpv2_ciot_opt_support_ind}, /* 194, 8.125 CIoT Optimizations Support Indication */
|
||||||
/* 195, 8.126 SCEF PDN Connection */
|
/* 195, 8.126 SCEF PDN Connection */
|
||||||
/* 196, 8.127 Header Compression Configuration */
|
{GTPV2_IE_HEADER_COMP_CONF, dissect_gtpv2_header_comp_comf}, /* 196, 8.127 Header Compression Configuration */
|
||||||
{GTPV2_IE_EXTENDED_PCO, dissect_gtpv2_pco}, /* 197, 8.128 Extended Protocol Configuration Options (ePCO) */
|
{GTPV2_IE_EXTENDED_PCO, dissect_gtpv2_pco}, /* 197, 8.128 Extended Protocol Configuration Options (ePCO) */
|
||||||
{GTPV2_IE_SERV_PLMN_RATE_CONTROL, dissect_gtpv2_serv_plmn_rate_control}, /* 198, 8.129 Serving PLMN Rate Control */
|
{GTPV2_IE_SERV_PLMN_RATE_CONTROL, dissect_gtpv2_serv_plmn_rate_control}, /* 198, 8.129 Serving PLMN Rate Control */
|
||||||
{GTPV2_IE_COUNTER, dissect_gtpv2_counter}, /* 199, 8.130 Counter */
|
{GTPV2_IE_COUNTER, dissect_gtpv2_counter}, /* 199, 8.130 Counter */
|
||||||
|
@ -7318,6 +7364,11 @@ void proto_register_gtpv2(void)
|
||||||
FT_UINT16, BASE_DEC, NULL, 0x0,
|
FT_UINT16, BASE_DEC, NULL, 0x0,
|
||||||
NULL, HFILL}
|
NULL, HFILL}
|
||||||
},
|
},
|
||||||
|
{ &hf_gtpv2_spare_w0,
|
||||||
|
{ "Spare", "gtpv2.spare.w0",
|
||||||
|
FT_UINT8, BASE_DEC, NULL, 0x0,
|
||||||
|
NULL, HFILL }
|
||||||
|
},
|
||||||
{ &hf_gtpv2_ie,
|
{ &hf_gtpv2_ie,
|
||||||
{"IE Type", "gtpv2.ie_type",
|
{"IE Type", "gtpv2.ie_type",
|
||||||
FT_UINT8, BASE_DEC|BASE_EXT_STRING, >pv2_element_type_vals_ext, 0x0,
|
FT_UINT8, BASE_DEC|BASE_EXT_STRING, >pv2_element_type_vals_ext, 0x0,
|
||||||
|
@ -9415,6 +9466,56 @@ void proto_register_gtpv2(void)
|
||||||
FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0x0,
|
FT_ABSOLUTE_TIME, ABSOLUTE_TIME_UTC, NULL, 0x0,
|
||||||
NULL, HFILL }
|
NULL, HFILL }
|
||||||
},
|
},
|
||||||
|
{ &hf_gtpv2_rohc_profile_flags,
|
||||||
|
{ "ROHC Profiles flags", "gtpv2.rohc_profile_flags",
|
||||||
|
FT_UINT8, BASE_HEX, NULL, 0x0,
|
||||||
|
NULL, HFILL }
|
||||||
|
},
|
||||||
|
{ &hf_gtpv2_rohc_profiles_bit0,
|
||||||
|
{ "Profile Identifier: 0x0002, UDP/IP", "gtpv2.rohc_profiles.b0",
|
||||||
|
FT_BOOLEAN, 8, TFS(&tfs_allowed_not_allowed), 0x0001,
|
||||||
|
NULL, HFILL }
|
||||||
|
},
|
||||||
|
{ &hf_gtpv2_rohc_profiles_bit1,
|
||||||
|
{ "Profile Identifier: 0x0003, ESP/IP", "gtpv2.rohc_profiles.b1",
|
||||||
|
FT_BOOLEAN, 8, TFS(&tfs_allowed_not_allowed), 0x0002,
|
||||||
|
NULL, HFILL }
|
||||||
|
},
|
||||||
|
{ &hf_gtpv2_rohc_profiles_bit2,
|
||||||
|
{ "Profile Identifier: 0x0004, IP", "gtpv2.rohc_profiles.b2",
|
||||||
|
FT_BOOLEAN, 8, TFS(&tfs_allowed_not_allowed), 0x0004,
|
||||||
|
NULL, HFILL }
|
||||||
|
},
|
||||||
|
{ &hf_gtpv2_rohc_profiles_bit3,
|
||||||
|
{ "Profile Identifier: 0x0006, TCP/IP", "gtpv2.rohc_profiles.b3",
|
||||||
|
FT_BOOLEAN, 8, TFS(&tfs_allowed_not_allowed), 0x0008,
|
||||||
|
NULL, HFILL }
|
||||||
|
},
|
||||||
|
{ &hf_gtpv2_rohc_profiles_bit4,
|
||||||
|
{ "Profile Identifier: 0x0102, UDP/IP", "gtpv2.rohc_profiles.b4",
|
||||||
|
FT_BOOLEAN, 8, TFS(&tfs_allowed_not_allowed), 0x0010,
|
||||||
|
NULL, HFILL }
|
||||||
|
},
|
||||||
|
{ &hf_gtpv2_rohc_profiles_bit5,
|
||||||
|
{ "Profile Identifier: 0x0103, ESP/IP", "gtpv2.rohc_profiles.b5",
|
||||||
|
FT_BOOLEAN, 8, TFS(&tfs_allowed_not_allowed), 0x0020,
|
||||||
|
NULL, HFILL }
|
||||||
|
},
|
||||||
|
{ &hf_gtpv2_rohc_profiles_bit6,
|
||||||
|
{ "Profile Identifier: 0x0104, IP", "gtpv2.rohc_profiles.b6",
|
||||||
|
FT_BOOLEAN, 8, TFS(&tfs_allowed_not_allowed), 0x0040,
|
||||||
|
NULL, HFILL }
|
||||||
|
},
|
||||||
|
{ &hf_gtpv2_rohc_profiles_bit7,
|
||||||
|
{ "Spare", "gtpv2.rohc_profiles.b7",
|
||||||
|
FT_BOOLEAN, 8, NULL, 0x0080,
|
||||||
|
NULL, HFILL }
|
||||||
|
},
|
||||||
|
{ &hf_gtpv2_max_cid,
|
||||||
|
{ "MAX_CID", "gtpv2.max_cid",
|
||||||
|
FT_UINT16, BASE_DEC, NULL, 0x0,
|
||||||
|
NULL, HFILL }
|
||||||
|
},
|
||||||
{ &hf_gtpv2_uplink_rate_limit,
|
{ &hf_gtpv2_uplink_rate_limit,
|
||||||
{ "Uplink Rate Limit", "gtpv2.uplink_rate_limit",
|
{ "Uplink Rate Limit", "gtpv2.uplink_rate_limit",
|
||||||
FT_UINT16, BASE_DEC, NULL, 0x0,
|
FT_UINT16, BASE_DEC, NULL, 0x0,
|
||||||
|
@ -9443,7 +9544,7 @@ void proto_register_gtpv2(void)
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Setup protocol subtree array */
|
/* Setup protocol subtree array */
|
||||||
#define GTPV2_NUM_INDIVIDUAL_ELEMS 57
|
#define GTPV2_NUM_INDIVIDUAL_ELEMS 58
|
||||||
static gint *ett_gtpv2_array[GTPV2_NUM_INDIVIDUAL_ELEMS + NUM_GTPV2_IES];
|
static gint *ett_gtpv2_array[GTPV2_NUM_INDIVIDUAL_ELEMS + NUM_GTPV2_IES];
|
||||||
|
|
||||||
ett_gtpv2_array[0] = &ett_gtpv2;
|
ett_gtpv2_array[0] = &ett_gtpv2;
|
||||||
|
@ -9503,6 +9604,7 @@ void proto_register_gtpv2(void)
|
||||||
ett_gtpv2_array[54] = &ett_gtpv2_eci;
|
ett_gtpv2_array[54] = &ett_gtpv2_eci;
|
||||||
ett_gtpv2_array[55] = &ett_gtpv2_twan_flags;
|
ett_gtpv2_array[55] = &ett_gtpv2_twan_flags;
|
||||||
ett_gtpv2_array[56] = &ett_gtpv2_ciot_support_ind;
|
ett_gtpv2_array[56] = &ett_gtpv2_ciot_support_ind;
|
||||||
|
ett_gtpv2_array[57] = &ett_gtpv2_rohc_profile_flags;
|
||||||
|
|
||||||
last_offset = GTPV2_NUM_INDIVIDUAL_ELEMS;
|
last_offset = GTPV2_NUM_INDIVIDUAL_ELEMS;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue