aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-diameter_3gpp.c
diff options
context:
space:
mode:
authorPascal Quantin <pascal.quantin@gmail.com>2018-10-10 13:12:33 +0200
committerPascal Quantin <pascal.quantin@gmail.com>2018-10-10 12:41:26 +0000
commitb7107f5fcb9bcc20be33b6263f90d1b20cc1591d (patch)
tree77a4f6781c73a77e787ee57f5bea7f6b98151dbc /epan/dissectors/packet-diameter_3gpp.c
parent03bf0e23062d481f396b0fc4d96697c9a449dc5a (diff)
Diameter: add a few more AVPs from 3GPP 29.272 v15.5.0
Change-Id: Id01c2c79b0923eb469ab03f7cbc7fe9e0be59a3d Reviewed-on: https://code.wireshark.org/review/30112 Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com> Tested-by: Petri Dish Buildbot Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-diameter_3gpp.c')
-rw-r--r--epan/dissectors/packet-diameter_3gpp.c79
1 files changed, 77 insertions, 2 deletions
diff --git a/epan/dissectors/packet-diameter_3gpp.c b/epan/dissectors/packet-diameter_3gpp.c
index bde1554d17..94ff59e9fc 100644
--- a/epan/dissectors/packet-diameter_3gpp.c
+++ b/epan/dissectors/packet-diameter_3gpp.c
@@ -254,6 +254,10 @@ static int hf_diameter_3gpp_dsr_flags_bit23 = -1;
static int hf_diameter_3gpp_dsr_flags_bit24 = -1;
static int hf_diameter_3gpp_dsr_flags_bit25 = -1;
static int hf_diameter_3gpp_dsr_flags_bit26 = -1;
+static int hf_diameter_3gpp_dsr_flags_bit27 = -1;
+static int hf_diameter_3gpp_dsr_flags_bit28 = -1;
+static int hf_diameter_3gpp_dsr_flags_bit29 = -1;
+static int hf_diameter_3gpp_dsr_flags_bit30 = -1;
static int hf_diameter_3gpp_dsa_flags = -1;
static int hf_diameter_3gpp_dsa_flags_bit0 = -1;
static int hf_diameter_3gpp_ida_flags = -1;
@@ -374,6 +378,10 @@ static int hf_diameter_3gpp_v2x_permission = -1;
static int hf_diameter_3gpp_v2x_permission_spare_bits = -1;
static int hf_diameter_3gpp_v2x_permission_bit1 = -1;
static int hf_diameter_3gpp_v2x_permission_bit0 = -1;
+static int hf_diameter_3gpp_core_network_restrictions = -1;
+static int hf_diameter_3gpp_core_network_restrictions_spare_bits = -1;
+static int hf_diameter_3gpp_core_network_restrictions_bit1 = -1;
+static int hf_diameter_3gpp_core_network_restrictions_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;
static int hf_diameter_3gpp_feature_list2_s6a_flags_spare_bits = -1;
@@ -445,6 +453,7 @@ static gint diameter_3gpp_wlan_offloadability_utran_ett = -1;
static gint diameter_3gpp_air_flags_ett = -1;
static gint diameter_3gpp_preferred_data_mode_ett = -1;
static gint diameter_3gpp_v2x_permission_ett = -1;
+static gint diameter_3gpp_core_network_restrictions_ett = -1;
static int hf_diameter_3gpp_feature_list1_rx_flags_bit0 = -1;
static int hf_diameter_3gpp_feature_list1_rx_flags_bit1 = -1;
@@ -1762,6 +1771,10 @@ dissect_diameter_3gpp_dsr_flags(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
{
static const int *flags[] = {
&hf_diameter_3gpp_dsr_flags_spare_bits,
+ &hf_diameter_3gpp_dsr_flags_bit30,
+ &hf_diameter_3gpp_dsr_flags_bit29,
+ &hf_diameter_3gpp_dsr_flags_bit28,
+ &hf_diameter_3gpp_dsr_flags_bit27,
&hf_diameter_3gpp_dsr_flags_bit26,
&hf_diameter_3gpp_dsr_flags_bit25,
&hf_diameter_3gpp_dsr_flags_bit24,
@@ -2211,6 +2224,24 @@ dissect_diameter_3gpp_v2x_permission(tvbuff_t *tvb, packet_info *pinfo _U_, prot
return 4;
}
+/* 3GPP TS 29.272
+* 7.3.230 Core-Network-Restrictions
+* AVP Code: 1704 Core-Network-Restrictions
+*/
+static int
+dissect_diameter_3gpp_core_network_restrictions(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
+{
+ static const int *flags[] = {
+ &hf_diameter_3gpp_core_network_restrictions_spare_bits,
+ &hf_diameter_3gpp_core_network_restrictions_bit1,
+ &hf_diameter_3gpp_core_network_restrictions_bit0,
+ NULL
+ };
+
+ proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_core_network_restrictions, diameter_3gpp_core_network_restrictions_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, proto_tree *tree, void *data _U_)
@@ -2593,6 +2624,9 @@ proto_reg_handoff_diameter_3gpp(void)
/* AVP Code: 1689 V2X-Permission */
dissector_add_uint("diameter.3gpp", 1689, create_dissector_handle(dissect_diameter_3gpp_v2x_permission, proto_diameter_3gpp));
+ /* AVP Code: 1704 Core-Network-Restrictions */
+ dissector_add_uint("diameter.3gpp", 1704, create_dissector_handle(dissect_diameter_3gpp_core_network_restrictions, 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));
@@ -3818,9 +3852,29 @@ proto_register_diameter_3gpp(void)
FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x04000000,
NULL, HFILL }
},
+ { &hf_diameter_3gpp_dsr_flags_bit27,
+ { "Aerial-UE-Subscription-Withdrawal", "diameter.3gpp.dsr_flags_bit27",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x08000000,
+ NULL, HFILL }
+ },
+ { &hf_diameter_3gpp_dsr_flags_bit28,
+ { "Paging-Time-Window-Subscription-Withdrawal", "diameter.3gpp.dsr_flags_bit28",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x10000000,
+ NULL, HFILL }
+ },
+ { &hf_diameter_3gpp_dsr_flags_bit29,
+ { "Active-Time-Withdrawal", "diameter.3gpp.dsr_flags_bit29",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x20000000,
+ NULL, HFILL }
+ },
+ { &hf_diameter_3gpp_dsr_flags_bit30,
+ { "eDRX-Cycle-Length-Withdrawal", "diameter.3gpp.dsr_flags_bit30",
+ FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x40000000,
+ NULL, HFILL }
+ },
{ &hf_diameter_3gpp_dsr_flags_spare_bits,
{ "Spare", "diameter.3gpp.dsr_flags_spare",
- FT_UINT32, BASE_HEX, NULL, 0xF8000000,
+ FT_UINT32, BASE_HEX, NULL, 0x80000000,
NULL, HFILL }
},
{ &hf_diameter_3gpp_dsa_flags,
@@ -4796,6 +4850,26 @@ proto_register_diameter_3gpp(void)
FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
NULL, HFILL }
},
+ { &hf_diameter_3gpp_core_network_restrictions,
+ { "Core Network Restrictions", "diameter.3gpp.core_network_restrictions",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_diameter_3gpp_core_network_restrictions_spare_bits,
+ { "Spare", "diameter.3gpp.core_network_restrictions_spare",
+ FT_UINT32, BASE_HEX, NULL, 0xFFFFFFFC,
+ NULL, HFILL }
+ },
+ { &hf_diameter_3gpp_core_network_restrictions_bit1,
+ { "5GC", "diameter.3gpp.core_network_restrictions_bit1",
+ FT_BOOLEAN, 32, TFS(&tfs_not_allowed_allowed), 0x00000002,
+ NULL, HFILL }
+ },
+ { &hf_diameter_3gpp_core_network_restrictions_bit0,
+ { "EPS", "diameter.3gpp.core_network_restrictions_bit0",
+ FT_BOOLEAN, 32, TFS(&tfs_not_allowed_allowed), 0x00000001,
+ NULL, HFILL }
+ },
};
@@ -4836,7 +4910,8 @@ proto_register_diameter_3gpp(void)
&diameter_3gpp_wlan_offloadability_utran_ett,
&diameter_3gpp_air_flags_ett,
&diameter_3gpp_preferred_data_mode_ett,
- &diameter_3gpp_v2x_permission_ett
+ &diameter_3gpp_v2x_permission_ett,
+ &diameter_3gpp_core_network_restrictions_ett
};
expert_module_t *expert_diameter_3gpp;