From 1902204f960d6d03c528963d220a9ea91a98afb8 Mon Sep 17 00:00:00 2001 From: AndersBroman Date: Tue, 30 May 2017 13:31:14 +0200 Subject: [Diameter 3GPP] Add subdissection of AVP 1679 AIR-Flags Change-Id: I783385b85cfb67d3b0d4affc82a6071e4de51062 Reviewed-on: https://code.wireshark.org/review/21824 Petri-Dish: Anders Broman Tested-by: Petri Dish Buildbot Reviewed-by: Anders Broman --- epan/dissectors/packet-diameter_3gpp.c | 40 ++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'epan/dissectors/packet-diameter_3gpp.c') diff --git a/epan/dissectors/packet-diameter_3gpp.c b/epan/dissectors/packet-diameter_3gpp.c index 956694d7df..aa34064784 100644 --- a/epan/dissectors/packet-diameter_3gpp.c +++ b/epan/dissectors/packet-diameter_3gpp.c @@ -323,6 +323,9 @@ static int hf_diameter_3gpp_sar_flags = -1; static int hf_diameter_3gpp_sar_flags_flags_bit0 = -1; static int hf_diameter_3gpp_emergency_services_flags = -1; static int hf_diameter_3gpp_emergency_services_flags_bit0 = -1; +static int hf_diameter_3gpp_air_flags = -1; +static int hf_diameter_3gpp_air_flags_spare_bits = -1; +static int hf_diameter_3gpp_air_flags_bit0 = -1; static int hf_diameter_3gpp_uar_flags_flags_spare_bits = -1; static int hf_diameter_3gpp_feature_list1_sh_flags_spare_bits = -1; @@ -383,6 +386,7 @@ static gint diameter_3gpp_tmgi_allocation_result_ett = -1; static gint diameter_3gpp_tmgi_deallocation_result_ett = -1; static gint diameter_3gpp_sar_flags_ett = -1; static gint diameter_3gpp_emergency_services_flags_ett = -1; +static gint diameter_3gpp_air_flags_ett = -1; static int hf_diameter_3gpp_feature_list1_rx_flags_bit0 = -1; static int hf_diameter_3gpp_feature_list1_rx_flags_bit1 = -1; @@ -1913,6 +1917,23 @@ dissect_diameter_3gpp_emergency_services(tvbuff_t *tvb, packet_info *pinfo _U_, } +/* 3GPP TS 29.272 +* 7.3.201 AIR-Flags +* AVP Code: 1679 AIR-Flags +*/ +static int +dissect_diameter_3gpp_air_flags(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_) +{ + static const int *flags[] = { + &hf_diameter_3gpp_air_flags_spare_bits, + &hf_diameter_3gpp_air_flags_bit0, + NULL + }; + + proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_air_flags, diameter_3gpp_air_flags_ett, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND); + return 4; +} + /* AVP Code: 2516 EUTRAN-Positioning-Data */ static int dissect_diameter_3gpp_eutran_positioning_data(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_) @@ -2243,6 +2264,9 @@ proto_reg_handoff_diameter_3gpp(void) /* AVP Code: 1538 Emergency-Services */ dissector_add_uint("diameter.3gpp", 1538, create_dissector_handle(dissect_diameter_3gpp_emergency_services, proto_diameter_3gpp)); + /* AVP Code: 1679 AIR-Flags */ + dissector_add_uint("diameter.3gpp", 1679, create_dissector_handle(dissect_diameter_3gpp_air_flags, proto_diameter_3gpp)); + /* AVP Code: 2516 EUTRAN-Positioning-Data */ dissector_add_uint("diameter.3gpp", 2516, create_dissector_handle(dissect_diameter_3gpp_eutran_positioning_data, proto_diameter_3gpp)); @@ -4116,6 +4140,21 @@ proto_register_diameter_3gpp(void) FT_UINT32, BASE_HEX, NULL, 0xFFFFFFFE, NULL, HFILL } }, + { &hf_diameter_3gpp_air_flags, + { "AIR Flags", "diameter.3gpp.air_flags", + FT_UINT32, BASE_HEX, NULL, 0x0, + NULL, HFILL } + }, + { &hf_diameter_3gpp_air_flags_spare_bits, + { "Spare", "diameter.3gpp.ulr_flags_spare", + FT_UINT32, BASE_HEX, NULL, 0xFFFFFFFE, + NULL, HFILL } + }, + { &hf_diameter_3gpp_air_flags_bit0, + { "Send UE Usage Type", "diameter.3gpp.air_flags_bit0", + FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001, + NULL, HFILL } + }, }; @@ -4148,6 +4187,7 @@ proto_register_diameter_3gpp(void) &diameter_3gpp_tmgi_deallocation_result_ett, &diameter_3gpp_sar_flags_ett, &diameter_3gpp_emergency_services_flags_ett, + &diameter_3gpp_air_flags_ett, }; expert_module_t *expert_diameter_3gpp; -- cgit v1.2.1