diff options
author | Jan Spevak <jan.spevak@nokia.com> | 2016-11-14 08:54:39 +0100 |
---|---|---|
committer | Roland Knall <rknall@gmail.com> | 2016-11-14 10:53:55 +0000 |
commit | 17db0dca8bb0a79af28260fe7e6c71a2adc4f524 (patch) | |
tree | 014ecf7bd550bd4717e844be3f679c5b2bbe2244 /epan/dissectors/packet-diameter_3gpp.c | |
parent | 271ee471ddc801dc89b3c7953f4f2bcff75ffa83 (diff) |
diameter_3gpp: add decoding of Sd feature list
Change-Id: I431cb2cb39328a7aa537eaa00b1cb1ab07723d3e
Reviewed-on: https://code.wireshark.org/review/18815
Reviewed-by: Anders Broman <a.broman58@gmail.com>
Petri-Dish: Anders Broman <a.broman58@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Roland Knall <rknall@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-diameter_3gpp.c')
-rw-r--r-- | epan/dissectors/packet-diameter_3gpp.c | 100 |
1 files changed, 99 insertions, 1 deletions
diff --git a/epan/dissectors/packet-diameter_3gpp.c b/epan/dissectors/packet-diameter_3gpp.c index 555c05bf44..82d03812e2 100644 --- a/epan/dissectors/packet-diameter_3gpp.c +++ b/epan/dissectors/packet-diameter_3gpp.c @@ -156,6 +156,19 @@ static int hf_diameter_3gpp_feature_list_gx_flags_bit28 = -1; static int hf_diameter_3gpp_feature_list_gx_flags_bit29 = -1; static int hf_diameter_3gpp_feature_list_gx_flags_bit30 = -1; static int hf_diameter_3gpp_feature_list_gx_flags_bit31 = -1; +static int hf_diameter_3gpp_feature_list_sd_flags = -1; +static int hf_diameter_3gpp_feature_list_sd_flags_bit0 = -1; +static int hf_diameter_3gpp_feature_list_sd_flags_bit1 = -1; +static int hf_diameter_3gpp_feature_list_sd_flags_bit2 = -1; +static int hf_diameter_3gpp_feature_list_sd_flags_bit3 = -1; +static int hf_diameter_3gpp_feature_list_sd_flags_bit4 = -1; +static int hf_diameter_3gpp_feature_list_sd_flags_bit5 = -1; +static int hf_diameter_3gpp_feature_list_sd_flags_bit6 = -1; +static int hf_diameter_3gpp_feature_list_sd_flags_bit7 = -1; +static int hf_diameter_3gpp_feature_list_sd_flags_bit8 = -1; +static int hf_diameter_3gpp_feature_list_sd_flags_bit9 = -1; +static int hf_diameter_3gpp_feature_list_sd_flags_bit10 = -1; +static int hf_diameter_3gpp_feature_list_sd_flags_spare_bits = -1; static int hf_diameter_3gpp_cms_no_gyn_session_serv_not_allowed = -1; static int hf_diameter_3gpp_cms_no_gyn_session_serv_allowed = -1; static int hf_diameter_3gpp_cms_rating_failed = -1; @@ -709,6 +722,23 @@ static const int *diameter_3gpp_gx_feature_list_1_fields[] = { NULL }; +/* 3GPP TS 29.212 V14.0.0 (2016-09) */ +static const int *diameter_3gpp_sd_feature_list_fields[] = { + &hf_diameter_3gpp_feature_list_sd_flags_spare_bits, + &hf_diameter_3gpp_feature_list_sd_flags_bit10, + &hf_diameter_3gpp_feature_list_sd_flags_bit9, + &hf_diameter_3gpp_feature_list_sd_flags_bit8, + &hf_diameter_3gpp_feature_list_sd_flags_bit7, + &hf_diameter_3gpp_feature_list_sd_flags_bit6, + &hf_diameter_3gpp_feature_list_sd_flags_bit5, + &hf_diameter_3gpp_feature_list_sd_flags_bit4, + &hf_diameter_3gpp_feature_list_sd_flags_bit3, + &hf_diameter_3gpp_feature_list_sd_flags_bit2, + &hf_diameter_3gpp_feature_list_sd_flags_bit1, + &hf_diameter_3gpp_feature_list_sd_flags_bit0, + NULL +}; + static int dissect_diameter_3gpp_feature_list(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data) { @@ -853,6 +883,10 @@ dissect_diameter_3gpp_feature_list(tvbuff_t *tvb, packet_info *pinfo _U_, proto_ diameter_3gpp_feature_list_ett, diameter_3gpp_gx_feature_list_1_fields, ENC_BIG_ENDIAN, BMT_NO_APPEND); break; + case DIAM_APPID_3GPP_SD: /* 3GPP TS 29.212 V14.0.0 (2016-09) */ + proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_feature_list_sd_flags, + diameter_3gpp_feature_list_ett, diameter_3gpp_sd_feature_list_fields, ENC_BIG_ENDIAN, BMT_NO_APPEND); + break; default: break; } @@ -3785,7 +3819,71 @@ proto_register_diameter_3gpp(void) FT_UINT32, BASE_HEX, NULL, 0xFFFFFFFE, NULL, HFILL } }, - + { &hf_diameter_3gpp_feature_list_sd_flags, + { "SD Feature-List Flags", "diameter.3gpp.sd_feature_list_flags", + FT_UINT32, BASE_HEX, NULL, 0x0, + NULL, HFILL } + }, + { &hf_diameter_3gpp_feature_list_sd_flags_bit0, + { "UMCH", "diameter.3gpp.feature_list_sd_flags_bit0", + FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000001, + NULL, HFILL} + }, + { &hf_diameter_3gpp_feature_list_sd_flags_bit1, + { "Trusted-WLAN", "diameter.3gpp.feature_list_sd_flags_bit1", + FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000002, + NULL, HFILL} + }, + { &hf_diameter_3gpp_feature_list_sd_flags_bit2, + { "TimeBasedUM", "diameter.3gpp.feature_list_sd_flags_bit2", + FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000004, + NULL, HFILL} + }, + { &hf_diameter_3gpp_feature_list_sd_flags_bit3, + { "PendingTransaction", "diameter.3gpp.feature_list_sd_flags_bit3", + FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000008, + NULL, HFILL} + }, + { &hf_diameter_3gpp_feature_list_sd_flags_bit4, + { "ABC", "diameter.3gpp.feature_list_sd_flags_bit4", + FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000010, + NULL, HFILL} + }, + { &hf_diameter_3gpp_feature_list_sd_flags_bit5, + { "CNO-ULI", "diameter.3gpp.feature_list_sd_flags_bit5", + FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000020, + NULL, HFILL} + }, + { &hf_diameter_3gpp_feature_list_sd_flags_bit6, + { "ExUsage", "diameter.3gpp.feature_list_sd_flags_bit6", + FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000040, + NULL, HFILL} + }, + { &hf_diameter_3gpp_feature_list_sd_flags_bit7, + { "DLDSCPMarking", "diameter.3gpp.feature_list_sd_flags_bit7", + FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000080, + NULL, HFILL} + }, + { &hf_diameter_3gpp_feature_list_sd_flags_bit8, + { "TSC", "diameter.3gpp.feature_list_sd_flags_bit8", + FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000100, + NULL, HFILL} + }, + { &hf_diameter_3gpp_feature_list_sd_flags_bit9, + { "ENB-Change", "diameter.3gpp.feature_list_sd_flags_bit9", + FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000200, + NULL, HFILL} + }, + { &hf_diameter_3gpp_feature_list_sd_flags_bit10, + { "SponsoredConnectivity-Sd", "diameter.3gpp.feature_list_sd_flags_bit10", + FT_BOOLEAN, 32, TFS(&tfs_supported_not_supported), 0x00000400, + NULL, HFILL} + }, + { &hf_diameter_3gpp_feature_list_sd_flags_spare_bits, + { "Spare", "diameter.3gpp.feature_list_sd_flags_spare", + FT_UINT32, BASE_HEX, NULL, 0xFFFFF800, + NULL, HFILL} + }, }; |