[Diameter] Added feature list dissection for 3GPP Sh interface

Bug: 11218
Change-Id: I83838cc4af1d3eeaed04032c3127f2d4707d0fd3
Reviewed-on: https://code.wireshark.org/review/8583
Reviewed-by: Anders Broman <a.broman58@gmail.com>
This commit is contained in:
Anders 2015-05-22 13:05:06 +02:00 committed by Anders Broman
parent 99e43f93f6
commit a0fcd0b726
2 changed files with 38 additions and 0 deletions

View File

@ -46,6 +46,7 @@ typedef struct _diam_sub_dis_t {
} diam_sub_dis_t;
#define DIAM_APPID_3GPP_CX 16777216
#define DIAM_APPID_3GPP_SH 16777217
#define DIAM_APPID_3GPP_GX 16777238
#define DIAM_APPID_3GPP_S6A_S6D 16777251
#define DIAM_APPID_3GPP_S13 16777252

View File

@ -61,6 +61,10 @@ static int hf_diameter_3gpp_feature_list_flags = -1;
static int hf_diameter_3gpp_feature_list_flags_bit0 = -1;
static int hf_diameter_3gpp_feature_list_flags_bit1 = -1;
static int hf_diameter_3gpp_feature_list_flags_bit2 = -1;
static int hf_diameter_3gpp_feature_list1_sh_flags_bit0 = -1;
static int hf_diameter_3gpp_feature_list1_sh_flags_bit1 = -1;
static int hf_diameter_3gpp_feature_list1_sh_flags_bit2 = -1;
static int hf_diameter_3gpp_feature_list1_sh_flags_bit3 = -1;
static int hf_diameter_3gpp_feature_list1_s6a_flags_bit0 = -1;
static int hf_diameter_3gpp_feature_list1_s6a_flags_bit1 = -1;
static int hf_diameter_3gpp_feature_list1_s6a_flags_bit2 = -1;
@ -491,6 +495,19 @@ dissect_diameter_3gpp_feature_list(tvbuff_t *tvb, packet_info *pinfo _U_, proto_
bit_offset++;
/*offset = bit_offset>>3;*/
}
else if (application_id == DIAM_APPID_3GPP_SH) {
proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_spare_bits, tvb, bit_offset, 28, ENC_BIG_ENDIAN);
bit_offset += 28;
proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_feature_list1_sh_flags_bit3, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset++;
proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_feature_list1_sh_flags_bit2, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset++;
proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_feature_list1_sh_flags_bit1, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset++;
proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_feature_list1_sh_flags_bit0, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
bit_offset++;
} else if(application_id == DIAM_APPID_3GPP_S6A_S6D) {
if(feature_list_id == 1) {
/* 3GPP TS 29.272 Table 7.3.10/1: Features of Feature-List-ID 1 used in S6a/S6d */
@ -1435,6 +1452,26 @@ proto_register_diameter_3gpp(void)
FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
NULL, HFILL }
},
{ &hf_diameter_3gpp_feature_list1_sh_flags_bit0,
{ "Notif-Eff", "diameter.3gpp.feature_list1_sh_flags_bit0",
FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
NULL, HFILL }
},
{ &hf_diameter_3gpp_feature_list1_sh_flags_bit1,
{ "Update-Eff", "diameter.3gpp.feature_list1_sh_flags_bit1",
FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
NULL, HFILL }
},
{ &hf_diameter_3gpp_feature_list1_sh_flags_bit2,
{ "Update-Eff-Enhance", "diameter.3gpp.feature_list1_sh_flags_bit2",
FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
NULL, HFILL }
},
{ &hf_diameter_3gpp_feature_list1_sh_flags_bit3,
{ "Additional-MSISDN", "diameter.3gpp.feature_list1_sh_flags_bit3",
FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,
NULL, HFILL }
},
{ &hf_diameter_3gpp_feature_list1_s6a_flags_bit0,
{ "Operator Determined Barring of all Packet Oriented Services", "diameter.3gpp.feature_list1_s6a_flags_bit0",
FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0,