[Diameter] Ad dissetion of Access-Restriction-Data bitfield.
authorAndersBroman <anders.broman@ericsson.com>
Fri, 19 Aug 2016 08:18:44 +0000 (10:18 +0200)
committerAlexis La Goutte <alexis.lagoutte@gmail.com>
Fri, 19 Aug 2016 10:00:04 +0000 (10:00 +0000)
Change-Id: I3e751f07c540b056b55fc98fb9c26d23718bd8fc
Reviewed-on: https://code.wireshark.org/review/17164
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: Alexis La Goutte <alexis.lagoutte@gmail.com>
epan/dissectors/packet-diameter_3gpp.c

index 5c416e874a0c3c21a4d0b878c48625db75fccf7f..a9425441f7b08890a5a2e0fb25a8b2d198cb501a 100644 (file)
@@ -306,6 +306,15 @@ static int hf_diameter_3gpp_ulr_flags_spare_bits = -1;
 static int hf_diameter_3gpp_ula_flags_spare_bits = -1;
 static int hf_diameter_3gpp_dsr_flags_spare_bits = -1;
 static int hf_diameter_3gpp_dsa_flags_spare_bits = -1;
+static int hf_diameter_3gpp_acc_res_dat_flags = -1;
+static int hf_diameter_3gpp_acc_res_dat_flags_bit0 = -1;
+static int hf_diameter_3gpp_acc_res_dat_flags_bit1 = -1;
+static int hf_diameter_3gpp_acc_res_dat_flags_bit2 = -1;
+static int hf_diameter_3gpp_acc_res_dat_flags_bit3 = -1;
+static int hf_diameter_3gpp_acc_res_dat_flags_bit4 = -1;
+static int hf_diameter_3gpp_acc_res_dat_flags_bit5 = -1;
+static int hf_diameter_3gpp_acc_res_dat_flags_bit6 = -1;
+static int hf_diameter_3gpp_acc_res_dat_flags_spare_bits = -1;
 static int hf_diameter_3gpp_ida_flags_spare_bits = -1;
 static int hf_diameter_3gpp_pua_flags_spare_bits = -1;
 static int hf_diameter_3gpp_nor_flags_spare_bits = -1;
@@ -1560,6 +1569,27 @@ dissect_diameter_3gpp_dsa_flags(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
     return 4;
 }
 
+/* AVP Code: 1426 Access-Restriction-Data */
+static int
+dissect_diameter_3gpp_acc_res_data(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
+{
+    static const int *flags[] = {
+        &hf_diameter_3gpp_acc_res_dat_flags_spare_bits,
+        &hf_diameter_3gpp_acc_res_dat_flags_bit6,
+        &hf_diameter_3gpp_acc_res_dat_flags_bit5,
+        &hf_diameter_3gpp_acc_res_dat_flags_bit4,
+        &hf_diameter_3gpp_acc_res_dat_flags_bit3,
+        &hf_diameter_3gpp_acc_res_dat_flags_bit2,
+        &hf_diameter_3gpp_acc_res_dat_flags_bit1,
+        &hf_diameter_3gpp_acc_res_dat_flags_bit0,
+        NULL
+    };
+
+    proto_tree_add_bitmask_with_flags(tree, tvb, 0, hf_diameter_3gpp_acc_res_dat_flags, diameter_3gpp_dsa_flags_ett, flags, ENC_BIG_ENDIAN, BMT_NO_APPEND);
+    return 4;
+}
+
+
 /* AVP Code: 1441 IDA-Flags */
 static int
 dissect_diameter_3gpp_ida_flags(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
@@ -1906,6 +1936,9 @@ proto_reg_handoff_diameter_3gpp(void)
     /* AVP Code: 1422 DSA-Flags */
     dissector_add_uint("diameter.3gpp", 1422, create_dissector_handle(dissect_diameter_3gpp_dsa_flags, proto_diameter_3gpp));
 
+    /* AVP Code: 1426 Access-Restriction-Data */
+    dissector_add_uint("diameter.3gpp", 1426, create_dissector_handle(dissect_diameter_3gpp_acc_res_data, proto_diameter_3gpp));
+
     /* AVP Code: 1441 IDA-Flags */
     dissector_add_uint("diameter.3gpp", 1441, create_dissector_handle(dissect_diameter_3gpp_ida_flags, proto_diameter_3gpp));
 
@@ -3023,6 +3056,52 @@ proto_register_diameter_3gpp(void)
             FT_UINT32, BASE_HEX, NULL, 0xFFFFFFFE,
             NULL, HFILL }
         },
+        { &hf_diameter_3gpp_acc_res_dat_flags,
+        { "Access-Restriction-Data Flags", "diameter.3gpp.acc_res_dat_flags",
+            FT_UINT32, BASE_HEX, NULL, 0x0,
+            NULL, HFILL }
+        },
+        { &hf_diameter_3gpp_acc_res_dat_flags_bit0,
+        { "UTRAN Not Allowed", "diameter.3gpp.acc_res_dat_flags_bit0",
+            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000001,
+            NULL, HFILL }
+        },
+        { &hf_diameter_3gpp_acc_res_dat_flags_bit1,
+        { "GERAN Not Allowed", "diameter.3gpp.acc_res_dat_flags_bit1",
+            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000002,
+            NULL, HFILL }
+        },
+        { &hf_diameter_3gpp_acc_res_dat_flags_bit2,
+        { "GAN Not Allowed", "diameter.3gpp.acc_res_dat_flags_bit2",
+            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000004,
+            NULL, HFILL }
+        },
+        { &hf_diameter_3gpp_acc_res_dat_flags_bit3,
+        { "I-HSPA-Evolution Not Allowed", "diameter.3gpp.acc_res_dat_flags_bit3",
+            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000008,
+            NULL, HFILL }
+        },
+        { &hf_diameter_3gpp_acc_res_dat_flags_bit4,
+        { "WB-E-UTRAN Not Allowed", "diameter.3gpp.acc_res_dat_flags_bit4",
+            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000010,
+            NULL, HFILL }
+        },
+        { &hf_diameter_3gpp_acc_res_dat_flags_bit5,
+        { "HO-To-Non-3GPP-Access Not Allowed", "diameter.3gpp.acc_res_dat_flags_bit5",
+            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000020,
+            NULL, HFILL }
+        },
+        { &hf_diameter_3gpp_acc_res_dat_flags_bit6,
+        { "NB-IoT Not Allowed", "diameter.3gpp.acc_res_dat_flags_bit6",
+            FT_BOOLEAN, 32, TFS(&tfs_set_notset), 0x00000040,
+            NULL, HFILL }
+        },
+        { &hf_diameter_3gpp_acc_res_dat_flags_spare_bits,
+        { "Spare", "diameter.3gpp.acc_res_dat_flags_spare",
+            FT_UINT32, BASE_HEX, NULL, 0xFFFFFF80,
+            NULL, HFILL }
+        },
+
         { &hf_diameter_3gpp_ida_flags,
             { "IDA Flags", "diameter.3gpp.ida_flags",
             FT_UINT32, BASE_HEX, NULL, 0x0,