aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--epan/dissectors/packet-diameter_3gpp.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/epan/dissectors/packet-diameter_3gpp.c b/epan/dissectors/packet-diameter_3gpp.c
index ea6d49c311..9ec6374232 100644
--- a/epan/dissectors/packet-diameter_3gpp.c
+++ b/epan/dissectors/packet-diameter_3gpp.c
@@ -60,6 +60,8 @@ static int hf_diameter_3gpp_service_ind = -1;
static int hf_diameter_mbms_service_id = -1;
static int hf_diameter_address_digits = -1;
static int hf_diameter_3gpp_spare_bits = -1;
+static int hf_diameter_3gpp_uar_flags_flags = -1;
+static int hf_diameter_3gpp_uar_flags_flags_bit0 = -1;
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;
@@ -155,6 +157,7 @@ static int hf_diameter_3gpp_udp_port = -1;
static gint diameter_3gpp_path_ett = -1;
static gint diameter_3gpp_msisdn_ett = -1;
static gint diameter_3gpp_feature_list_ett = -1;
+static gint diameter_3gpp_uar_flags_ett = -1;
static gint diameter_3gpp_tmgi_ett = -1;
static gint diameter_3gpp_ulr_flags_ett = -1;
static gint diameter_3gpp_ula_flags_ett = -1;
@@ -241,6 +244,33 @@ dissect_diameter_3gpp_feature_list_id(tvbuff_t *tvb, packet_info *pinfo _U_, pro
return 4;
}
+/* AVP Code: 637 UAR-Flags
+ * imscxdx.xml
+ * IMS Cx Dx AVPS 3GPP TS 29.229
+ */
+
+static int
+dissect_diameter_3gpp_uar_flags(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_) {
+
+ proto_item* item;
+ proto_tree *sub_tree;
+ int offset = 0;
+ guint32 bit_offset;
+
+ item = proto_tree_add_item(tree, hf_diameter_3gpp_uar_flags_flags, tvb, offset, 4, ENC_BIG_ENDIAN);
+ sub_tree = proto_item_add_subtree(item, diameter_3gpp_uar_flags_ett);
+
+ bit_offset = 0;
+ proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_spare_bits, tvb, bit_offset, 31, ENC_BIG_ENDIAN);
+ bit_offset+=31;
+ proto_tree_add_bits_item(sub_tree, hf_diameter_3gpp_uar_flags_flags_bit0, tvb, bit_offset, 1, ENC_BIG_ENDIAN);
+ bit_offset++;
+
+ offset = bit_offset>>3;
+
+ return 4;
+}
+
/* AVP Code: 630 Feature-List
* Interpretation depends on Application Id
* imscxdx.xml
@@ -851,6 +881,9 @@ proto_reg_handoff_diameter_3gpp(void)
/* AVP Code: 630 Feature-List */
dissector_add_uint("diameter.3gpp", 630, new_create_dissector_handle(dissect_diameter_3gpp_feature_list, proto_diameter_3gpp));
+ /* AVP Code: 637 UAR-Flags */
+ dissector_add_uint("diameter.3gpp", 637, new_create_dissector_handle(dissect_diameter_3gpp_uar_flags, proto_diameter_3gpp));
+
/* AVP Code: 640 Path */
dissector_add_uint("diameter.3gpp", 640, new_create_dissector_handle(dissect_diameter_3gpp_path, proto_diameter_3gpp));
@@ -990,6 +1023,16 @@ proto_register_diameter_3gpp(void)
FT_UINT32, BASE_HEX, NULL, 0x0,
NULL, HFILL }
},
+ { &hf_diameter_3gpp_uar_flags_flags,
+ { "Flags", "diameter.3gpp.uar_flags_flags",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ NULL, HFILL }
+ },
+ { &hf_diameter_3gpp_uar_flags_flags_bit0,
+ { "Emergency registration", "diameter.3gpp.uar_flags_flags_bit0",
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0,
+ NULL, HFILL }
+ },
{ &hf_diameter_3gpp_feature_list_flags,
{ "Feature-List Flags", "diameter.3gpp.feature_list_flags",
FT_UINT32, BASE_HEX, NULL, 0x0,
@@ -1457,6 +1500,7 @@ proto_register_diameter_3gpp(void)
static gint *ett[] = {
&diameter_3gpp_path_ett,
&diameter_3gpp_msisdn_ett,
+ &diameter_3gpp_uar_flags_ett,
&diameter_3gpp_feature_list_ett,
&diameter_3gpp_tmgi_ett,
&diameter_3gpp_ulr_flags_ett,