diff options
author | Marius <mareko.paliga@gmail.com> | 2015-05-04 11:00:27 +0200 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2015-05-04 11:08:51 +0000 |
commit | ae949aa9e5ba5c7c6254dd5eeea13ab766b1941c (patch) | |
tree | 5ccbbd0be6e0c794768af69644ca45604341fb64 /epan/dissectors/packet-diameter_3gpp.c | |
parent | 800fd17ecebf21f83d76da3ee72bdadeede911d4 (diff) |
Add support for decoding all Feature-List Gx flags
Bug: 11167
Change-Id: I1c9af7c942cbc5e6abb2ea1520a8937968d52107
Reviewed-on: https://code.wireshark.org/review/8289
Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-diameter_3gpp.c')
-rw-r--r-- | epan/dissectors/packet-diameter_3gpp.c | 118 |
1 files changed, 116 insertions, 2 deletions
diff --git a/epan/dissectors/packet-diameter_3gpp.c b/epan/dissectors/packet-diameter_3gpp.c index 58a5a24ad7..726942559a 100644 --- a/epan/dissectors/packet-diameter_3gpp.c +++ b/epan/dissectors/packet-diameter_3gpp.c @@ -108,6 +108,20 @@ static int hf_diameter_3gpp_feature_list_gx_flags_bit9 = -1; static int hf_diameter_3gpp_feature_list_gx_flags_bit10 = -1; static int hf_diameter_3gpp_feature_list_gx_flags_bit11 = -1; static int hf_diameter_3gpp_feature_list_gx_flags_bit12 = -1; +static int hf_diameter_3gpp_feature_list_gx_flags_bit13 = -1; +static int hf_diameter_3gpp_feature_list_gx_flags_bit14 = -1; +static int hf_diameter_3gpp_feature_list_gx_flags_bit15 = -1; +static int hf_diameter_3gpp_feature_list_gx_flags_bit16 = -1; +static int hf_diameter_3gpp_feature_list_gx_flags_bit17 = -1; +static int hf_diameter_3gpp_feature_list_gx_flags_bit19 = -1; +static int hf_diameter_3gpp_feature_list_gx_flags_bit20 = -1; +static int hf_diameter_3gpp_feature_list_gx_flags_bit21 = -1; +static int hf_diameter_3gpp_feature_list_gx_flags_bit22 = -1; +static int hf_diameter_3gpp_feature_list_gx_flags_bit23 = -1; +static int hf_diameter_3gpp_feature_list_gx_flags_bit24 = -1; +static int hf_diameter_3gpp_feature_list_gx_flags_bit25 = -1; +static int hf_diameter_3gpp_feature_list_gx_flags_bit26 = -1; +static int hf_diameter_3gpp_feature_list_gx_flags_bit27 = -1; static int hf_diameter_3gpp_ulr_flags = -1; static int hf_diameter_3gpp_ulr_flags_bit0 = -1; static int hf_diameter_3gpp_ulr_flags_bit1 = -1; @@ -535,8 +549,38 @@ dissect_diameter_3gpp_feature_list(tvbuff_t *tvb, packet_info *pinfo _U_, proto_ proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_feature_list2_s6a_flags_bit0, tvb, bit_offset, 1, ENC_BIG_ENDIAN); } } else if(application_id == DIAM_APPID_3GPP_GX) { - proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_spare_bits, tvb, bit_offset, 19, ENC_BIG_ENDIAN); - bit_offset+=19; + proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_spare_bits, tvb, bit_offset, 4, ENC_BIG_ENDIAN); + bit_offset+=4; + proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_feature_list_gx_flags_bit27, tvb, bit_offset, 1, ENC_BIG_ENDIAN); + bit_offset++; + proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_feature_list_gx_flags_bit26, tvb, bit_offset, 1, ENC_BIG_ENDIAN); + bit_offset++; + proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_feature_list_gx_flags_bit25, tvb, bit_offset, 1, ENC_BIG_ENDIAN); + bit_offset++; + proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_feature_list_gx_flags_bit24, tvb, bit_offset, 1, ENC_BIG_ENDIAN); + bit_offset++; + proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_feature_list_gx_flags_bit23, tvb, bit_offset, 1, ENC_BIG_ENDIAN); + bit_offset++; + proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_feature_list_gx_flags_bit22, tvb, bit_offset, 1, ENC_BIG_ENDIAN); + bit_offset++; + proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_feature_list_gx_flags_bit21, tvb, bit_offset, 1, ENC_BIG_ENDIAN); + bit_offset++; + proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_feature_list_gx_flags_bit20, tvb, bit_offset, 1, ENC_BIG_ENDIAN); + bit_offset++; + proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_feature_list_gx_flags_bit19, tvb, bit_offset, 1, ENC_BIG_ENDIAN); + bit_offset++; + proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_spare_bits, tvb, bit_offset, 1, ENC_BIG_ENDIAN); + bit_offset++; + proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_feature_list_gx_flags_bit17, tvb, bit_offset, 1, ENC_BIG_ENDIAN); + bit_offset++; + proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_feature_list_gx_flags_bit16, tvb, bit_offset, 1, ENC_BIG_ENDIAN); + bit_offset++; + proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_feature_list_gx_flags_bit15, tvb, bit_offset, 1, ENC_BIG_ENDIAN); + bit_offset++; + proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_feature_list_gx_flags_bit14, tvb, bit_offset, 1, ENC_BIG_ENDIAN); + bit_offset++; + proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_feature_list_gx_flags_bit13, tvb, bit_offset, 1, ENC_BIG_ENDIAN); + bit_offset++; proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_feature_list_gx_flags_bit12, tvb, bit_offset, 1, ENC_BIG_ENDIAN); bit_offset++; proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_feature_list_gx_flags_bit11, tvb, bit_offset, 1, ENC_BIG_ENDIAN); @@ -1582,6 +1626,76 @@ proto_register_diameter_3gpp(void) FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0, NULL, HFILL } }, + { &hf_diameter_3gpp_feature_list_gx_flags_bit13, + { "Trusted WLAN Access", "diameter.3gpp.feature_list_gx_flags_bit13", + FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0, + NULL, HFILL } + }, + { &hf_diameter_3gpp_feature_list_gx_flags_bit14, + { "SGW Restoration procedures", "diameter.3gpp.feature_list_gx_flags_bit14", + FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0, + NULL, HFILL } + }, + { &hf_diameter_3gpp_feature_list_gx_flags_bit15, + { "Time based Usage Monitoring Control", "diameter.3gpp.feature_list_gx_flags_bit15", + FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0, + NULL, HFILL } + }, + { &hf_diameter_3gpp_feature_list_gx_flags_bit16, + { "Pending Transaction", "diameter.3gpp.feature_list_gx_flags_bit16", + FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0, + NULL, HFILL } + }, + { &hf_diameter_3gpp_feature_list_gx_flags_bit17, + { "Application Based Charging", "diameter.3gpp.feature_list_gx_flags_bit17", + FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0, + NULL, HFILL } + }, + { &hf_diameter_3gpp_feature_list_gx_flags_bit19, + { "NetLoc Trusted WLAN", "diameter.3gpp.feature_list_gx_flags_bit19", + FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0, + NULL, HFILL } + }, + { &hf_diameter_3gpp_feature_list_gx_flags_bit20, + { "Fixed Broadband Access Convergence", "diameter.3gpp.feature_list_gx_flags_bit20", + FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0, + NULL, HFILL } + }, + { &hf_diameter_3gpp_feature_list_gx_flags_bit21, + { "Conditionali APN Policy Info", "diameter.3gpp.feature_list_gx_flags_bit21", + FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0, + NULL, HFILL } + }, + { &hf_diameter_3gpp_feature_list_gx_flags_bit22, + { "RAN and/or NAS release cause", "diameter.3gpp.feature_list_gx_flags_bit22", + FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0, + NULL, HFILL } + }, + { &hf_diameter_3gpp_feature_list_gx_flags_bit23, + { "Presence Reporting Area Information reporting", "diameter.3gpp.feature_list_gx_flags_bit23", + FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0, + NULL, HFILL } + }, + { &hf_diameter_3gpp_feature_list_gx_flags_bit24, + { "P-CSCF Restoration Enhancement", "diameter.3gpp.feature_list_gx_flags_bit24", + FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0, + NULL, HFILL } + }, + { &hf_diameter_3gpp_feature_list_gx_flags_bit25, + { "Mission Critical QCIs", "diameter.3gpp.feature_list_gx_flags_bit25", + FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0, + NULL, HFILL } + }, + { &hf_diameter_3gpp_feature_list_gx_flags_bit26, + { "ResShare", "diameter.3gpp.feature_list_gx_flags_bit26", + FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0, + NULL, HFILL } + }, + { &hf_diameter_3gpp_feature_list_gx_flags_bit27, + { "ExUsage", "diameter.3gpp.feature_list_gx_flags_bit27", + FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported_not_supported), 0x0, + NULL, HFILL } + }, { &hf_diameter_3gpp_ulr_flags, { "ULR Flags", "diameter.3gpp.ulr_flags", FT_UINT32, BASE_HEX, NULL, 0x0, |