aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-radius_packetcable.c
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2014-11-27 23:18:32 -0500
committerAnders Broman <a.broman58@gmail.com>2014-12-09 05:57:41 +0000
commit301a5b7ceac60d0569ce1717e839241d10724003 (patch)
tree4e215647ae83ccdea4b70338b029061ac5009dce /epan/dissectors/packet-radius_packetcable.c
parent1952fefb8d386fb34eacc7c34debae9b22754be2 (diff)
Eliminate proto_tree_add_text from some dissectors.
Change-Id: I44cc6b70ec4dfc565934da499f46fca60a4ded93 Reviewed-on: https://code.wireshark.org/review/5524 Reviewed-by: Michael Mann <mmann78@netscape.net> Petri-Dish: Michael Mann <mmann78@netscape.net> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-radius_packetcable.c')
-rw-r--r--epan/dissectors/packet-radius_packetcable.c158
1 files changed, 95 insertions, 63 deletions
diff --git a/epan/dissectors/packet-radius_packetcable.c b/epan/dissectors/packet-radius_packetcable.c
index 9df03463f3..14ef0b7f20 100644
--- a/epan/dissectors/packet-radius_packetcable.c
+++ b/epan/dissectors/packet-radius_packetcable.c
@@ -86,12 +86,37 @@ static int hf_packetcable_terminal_display_info_general_display = -1;
static int hf_packetcable_terminal_display_info_calling_number = -1;
static int hf_packetcable_terminal_display_info_calling_name = -1;
static int hf_packetcable_terminal_display_info_message_waiting = -1;
+static int hf_packetcable_qos_desc_flags_sfst = -1;
+static int hf_packetcable_qos_desc_flags_gi = -1;
+static int hf_packetcable_qos_desc_flags_tgj = -1;
+static int hf_packetcable_qos_desc_flags_gpi = -1;
+static int hf_packetcable_qos_desc_flags_ugs = -1;
+static int hf_packetcable_qos_desc_flags_tp = -1;
+static int hf_packetcable_qos_desc_flags_msr = -1;
+static int hf_packetcable_qos_desc_flags_mtb = -1;
+static int hf_packetcable_qos_desc_flags_mrtr = -1;
+static int hf_packetcable_qos_desc_flags_mps = -1;
+static int hf_packetcable_qos_desc_flags_mcb = -1;
+static int hf_packetcable_qos_desc_flags_srtp = -1;
+static int hf_packetcable_qos_desc_flags_npi = -1;
+static int hf_packetcable_qos_desc_flags_tpj = -1;
+static int hf_packetcable_qos_desc_flags_toso = -1;
+static int hf_packetcable_qos_desc_flags_mdl = -1;
+
+/* Generated from convert_proto_tree_add_text.pl */
+static int hf_packetcable_bcid_time_zone_offset = -1;
+static int hf_packetcable_bcid_element_id = -1;
+static int hf_packetcable_electronic_surveillance_indication_df_df_key = -1;
+static int hf_packetcable_redirected_from_original_called_party = -1;
+static int hf_packetcable_em_header_element_id = -1;
+static int hf_packetcable_redirected_from_last_redirecting_party = -1;
+static int hf_packetcable_bcid_time_zone_dst = -1;
+static int hf_packetcable_em_header_time_zone_offset = -1;
+static int hf_packetcable_qos_service_class_name = -1;
+static int hf_packetcable_em_header_event_time = -1;
+static int hf_packetcable_em_header_time_zone_dst = -1;
/* This is slightly ugly. */
-static int hf_packetcable_qos_desc_flags[] =
-{
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-};
static int hf_packetcable_qos_desc_fields[] =
{
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -242,26 +267,18 @@ static const value_string packetcable_state_indication_vals[] =
/* Decode a PacketCable BCID. */
-/* XXX - This should probably be combinde with the equivalent COPS code */
+/* XXX - This should probably be combined with the equivalent COPS code */
static void decode_packetcable_bcid (tvbuff_t *tvb, proto_tree *tree, int offset)
{
- guint8 packetcable_buf[64];
-
- proto_tree_add_item(tree, hf_packetcable_bcid_timestamp,
- tvb, offset, 4, ENC_BIG_ENDIAN);
- tvb_memcpy(tvb, packetcable_buf, offset + 4, 8); packetcable_buf[8] = '\0';
- proto_tree_add_text(tree, tvb, offset + 4, 8,
- "Element ID: %s", packetcable_buf);
- tvb_memcpy(tvb, packetcable_buf, offset + 13, 7); packetcable_buf[7] = '\0';
- proto_tree_add_text(tree, tvb, offset + 12, 8,
- "Time Zone: DST: %c, Offset: %s", tvb_get_guint8(tvb, offset + 12),
- packetcable_buf);
- proto_tree_add_item(tree, hf_packetcable_bcid_event_counter,
- tvb, offset + 20, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(tree, hf_packetcable_bcid_timestamp, tvb, offset, 4, ENC_BIG_ENDIAN);
+ proto_tree_add_item(tree, hf_packetcable_bcid_element_id, tvb, offset + 4, 8, ENC_ASCII|ENC_NA);
+ proto_tree_add_item(tree, hf_packetcable_bcid_time_zone_dst, tvb, offset + 12, 1, ENC_NA);
+ proto_tree_add_item(tree, hf_packetcable_bcid_time_zone_offset, tvb, offset + 13, 7, ENC_ASCII|ENC_NA);
+ proto_tree_add_item(tree, hf_packetcable_bcid_event_counter, tvb, offset + 20, 4, ENC_BIG_ENDIAN);
}
static const gchar* dissect_packetcable_em_hdr(proto_tree* tree, tvbuff_t* tvb, packet_info *pinfo _U_) {
- guint8 packetcable_buf[64];
proto_item *ti;
proto_tree *obj_tree;
@@ -271,13 +288,11 @@ static const gchar* dissect_packetcable_em_hdr(proto_tree* tree, tvbuff_t* tvb,
proto_tree_add_item(tree, hf_packetcable_em_header_event_message_type, tvb, 26, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(tree, hf_packetcable_em_header_element_type, tvb, 28, 2, ENC_BIG_ENDIAN);
- tvb_memcpy(tvb, packetcable_buf, 30, 8); packetcable_buf[8] = '\0';
- proto_tree_add_text(tree, tvb, 30, 8, "Element ID: %s", packetcable_buf );
- tvb_memcpy(tvb, packetcable_buf, 39, 7); packetcable_buf[7] = '\0';
- proto_tree_add_text(tree, tvb, 38, 8, "Time Zone: DST: %c, Offset: %s", tvb_get_guint8(tvb, 38), packetcable_buf);
+ proto_tree_add_item(tree, hf_packetcable_em_header_element_id, tvb, 30, 8, ENC_ASCII|ENC_NA);
+ proto_tree_add_item(tree, hf_packetcable_em_header_time_zone_dst, tvb, 38, 1, ENC_NA);
+ proto_tree_add_item(tree, hf_packetcable_em_header_time_zone_offset, tvb, 39, 7, ENC_ASCII|ENC_NA);
proto_tree_add_item(tree, hf_packetcable_em_header_sequence_number, tvb, 46, 4, ENC_BIG_ENDIAN);
- tvb_memcpy(tvb, packetcable_buf, 50, 18); packetcable_buf[18] = '\0';
- proto_tree_add_text(tree, tvb, 50, 18, "Event Time: %s", packetcable_buf);
+ proto_tree_add_item(tree, hf_packetcable_em_header_event_time, tvb, 50, 18, ENC_ASCII|ENC_NA);
ti = proto_tree_add_item(tree, hf_packetcable_em_header_status, tvb, 68, 4, ENC_BIG_ENDIAN);
obj_tree = proto_item_add_subtree(ti, ett_radius_vendor_packetcable_status);
@@ -314,24 +329,34 @@ static const gchar* dissect_packetcable_trunk_group_id(proto_tree* tree, tvbuff_
}
static const gchar* dissect_packetcable_qos_descriptor(proto_tree* tree, tvbuff_t* tvb, packet_info *pinfo _U_) {
- guint8 packetcable_buf[64];
guint32 intval;
guint32 packetcable_qos_flags = tvb_get_ntohl(tvb, 0);
- proto_item* ti = proto_tree_add_item(tree, hf_packetcable_qos_status, tvb, 0, 4, ENC_BIG_ENDIAN);
- proto_tree* obj_tree = proto_item_add_subtree(ti, ett_radius_vendor_packetcable_qos_status);
-
guint packetcable_qos_off = 20;
+ static const int * qos_flags[] = {
+ &hf_packetcable_qos_status_indication,
+ &hf_packetcable_qos_desc_flags_sfst,
+ &hf_packetcable_qos_desc_flags_gi,
+ &hf_packetcable_qos_desc_flags_tgj,
+ &hf_packetcable_qos_desc_flags_gpi,
+ &hf_packetcable_qos_desc_flags_ugs,
+ &hf_packetcable_qos_desc_flags_tp,
+ &hf_packetcable_qos_desc_flags_msr,
+ &hf_packetcable_qos_desc_flags_mtb,
+ &hf_packetcable_qos_desc_flags_mrtr,
+ &hf_packetcable_qos_desc_flags_mps,
+ &hf_packetcable_qos_desc_flags_mcb,
+ &hf_packetcable_qos_desc_flags_srtp,
+ &hf_packetcable_qos_desc_flags_npi,
+ &hf_packetcable_qos_desc_flags_tpj,
+ &hf_packetcable_qos_desc_flags_toso,
+ &hf_packetcable_qos_desc_flags_mdl,
+ NULL
+ };
- proto_tree_add_item(obj_tree, hf_packetcable_qos_status_indication, tvb, 0, 4, ENC_BIG_ENDIAN);
-
- for (intval = 0; intval < PACKETCABLE_QOS_DESC_BITFIELDS; intval++) {
- proto_tree_add_item(obj_tree, hf_packetcable_qos_desc_flags[intval], tvb, 0, 4, ENC_BIG_ENDIAN);
- }
-
- tvb_memcpy(tvb, packetcable_buf, 4, 16);
- packetcable_buf[16] = '\0';
+ proto_tree_add_bitmask(tree, tvb, 0, hf_packetcable_qos_status,
+ ett_radius_vendor_packetcable_qos_status, qos_flags, ENC_BIG_ENDIAN);
- proto_tree_add_text(tree, tvb, 4, 16, "Service Class Name: %s", packetcable_buf);
+ proto_tree_add_item(tree, hf_packetcable_qos_service_class_name, tvb, 4, 16, ENC_ASCII|ENC_NA);
for (intval = 0; intval < PACKETCABLE_QOS_DESC_BITFIELDS; intval++) {
if (packetcable_qos_flags & packetcable_qos_desc_mask[intval]) {
@@ -351,15 +376,10 @@ static const gchar* dissect_packetcable_time_adjustment(proto_tree* tree, tvbuff
}
static const gchar* dissect_packetcable_redirected_from_info(proto_tree* tree, tvbuff_t* tvb, packet_info *pinfo _U_) {
- guint8 packetcable_buf[64];
- tvb_memcpy(tvb, packetcable_buf, 0, 20); packetcable_buf[20] = '\0';
- proto_tree_add_text(tree, tvb, 0, 20,
- "Last-Redirecting-Party: %s", packetcable_buf);
+ proto_tree_add_item(tree, hf_packetcable_redirected_from_last_redirecting_party, tvb, 0, 20, ENC_ASCII|ENC_NA);
- tvb_memcpy(tvb, packetcable_buf, 20, 20); packetcable_buf[20] = '\0';
- proto_tree_add_text(tree, tvb, 20, 20,
- "Original-Called-Party: %s", packetcable_buf);
+ proto_tree_add_item(tree, hf_packetcable_redirected_from_original_called_party, tvb, 20, 20, ENC_ASCII|ENC_NA);
proto_tree_add_item(tree, hf_packetcable_redirected_from_info_number_of_redirections,
tvb, 40, 2, ENC_BIG_ENDIAN);
@@ -380,7 +400,7 @@ static const gchar* dissect_packetcable_time_electr_surv_ind(proto_tree* tree, t
tvb, 8, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(tree, hf_packetcable_electronic_surveillance_indication_ccc_port,
tvb, 10, 2, ENC_BIG_ENDIAN);
- proto_tree_add_text(tree, tvb, 12, tvb_length(tvb) - 12, "DF-DF-Key");
+ proto_tree_add_item(tree, hf_packetcable_electronic_surveillance_indication_df_df_key, tvb, 12, -1, ENC_NA);
return "";
}
@@ -539,82 +559,82 @@ void proto_register_packetcable(void) {
FT_UINT32, BASE_DEC, VALS(packetcable_state_indication_vals), PACKETCABLE_QOS_STATE_INDICATION_MASK,
"PacketCable QoS Descriptor Attribute QoS State Indication", HFILL }
},
- { &hf_packetcable_qos_desc_flags[0],
+ { &hf_packetcable_qos_desc_flags_sfst,
{ "Service Flow Scheduling Type","packetcable_avps.qs.flags.sfst",
FT_UINT32, BASE_DEC, NULL, PACKETCABLE_SERVICE_FLOW_SCHEDULING_TYPE_MASK,
"PacketCable QoS Descriptor Attribute Bitmask: Service Flow Scheduling Type", HFILL }
},
- { &hf_packetcable_qos_desc_flags[1],
+ { &hf_packetcable_qos_desc_flags_gi,
{ "Grant Interval","packetcable_avps.qs.flags.gi",
FT_UINT32, BASE_DEC, NULL, PACKETCABLE_NOMINAL_GRANT_INTERVAL_MASK,
"PacketCable QoS Descriptor Attribute Bitmask: Grant Interval", HFILL }
},
- { &hf_packetcable_qos_desc_flags[2],
+ { &hf_packetcable_qos_desc_flags_tgj,
{ "Tolerated Grant Jitter","packetcable_avps.qs.flags.tgj",
FT_UINT32, BASE_DEC, NULL, PACKETCABLE_TOLERATED_GRANT_JITTER_MASK,
"PacketCable QoS Descriptor Attribute Bitmask: Tolerated Grant Jitter", HFILL }
},
- { &hf_packetcable_qos_desc_flags[3],
+ { &hf_packetcable_qos_desc_flags_gpi,
{ "Grants Per Interval","packetcable_avps.qs.flags.gpi",
FT_UINT32, BASE_DEC, NULL, PACKETCABLE_GRANTS_PER_INTERVAL_MASK,
"PacketCable QoS Descriptor Attribute Bitmask: Grants Per Interval", HFILL }
},
- { &hf_packetcable_qos_desc_flags[4],
+ { &hf_packetcable_qos_desc_flags_ugs,
{ "Unsolicited Grant Size","packetcable_avps.qs.flags.ugs",
FT_UINT32, BASE_DEC, NULL, PACKETCABLE_UNSOLICITED_GRANT_SIZE_MASK,
"PacketCable QoS Descriptor Attribute Bitmask: Unsolicited Grant Size", HFILL }
},
- { &hf_packetcable_qos_desc_flags[5],
+ { &hf_packetcable_qos_desc_flags_tp,
{ "Traffic Priority","packetcable_avps.qs.flags.tp",
FT_UINT32, BASE_DEC, NULL, PACKETCABLE_TRAFFIC_PRIORITY_MASK,
"PacketCable QoS Descriptor Attribute Bitmask: Traffic Priority", HFILL }
},
- { &hf_packetcable_qos_desc_flags[6],
+ { &hf_packetcable_qos_desc_flags_msr,
{ "Maximum Sustained Rate","packetcable_avps.qs.flags.msr",
FT_UINT32, BASE_DEC, NULL, PACKETCABLE_MAXIMUM_SUSTAINED_RATE_MASK,
"PacketCable QoS Descriptor Attribute Bitmask: Maximum Sustained Rate", HFILL }
},
- { &hf_packetcable_qos_desc_flags[7],
+ { &hf_packetcable_qos_desc_flags_mtb,
{ "Maximum Traffic Burst","packetcable_avps.qs.flags.mtb",
FT_UINT32, BASE_DEC, NULL, PACKETCABLE_MAXIMUM_TRAFFIC_BURST_MASK,
"PacketCable QoS Descriptor Attribute Bitmask: Maximum Traffic Burst", HFILL }
},
- { &hf_packetcable_qos_desc_flags[8],
+ { &hf_packetcable_qos_desc_flags_mrtr,
{ "Minimum Reserved Traffic Rate","packetcable_avps.qs.flags.mrtr",
FT_UINT32, BASE_DEC, NULL, PACKETCABLE_MINIMUM_RESERVED_TRAFFIC_RATE_MASK,
"PacketCable QoS Descriptor Attribute Bitmask: Minimum Reserved Traffic Rate", HFILL }
},
- { &hf_packetcable_qos_desc_flags[9],
+ { &hf_packetcable_qos_desc_flags_mps,
{ "Minimum Packet Size","packetcable_avps.qs.flags.mps",
FT_UINT32, BASE_DEC, NULL, PACKETCABLE_MINIMUM_PACKET_SIZE_MASK,
"PacketCable QoS Descriptor Attribute Bitmask: Minimum Packet Size", HFILL }
},
- { &hf_packetcable_qos_desc_flags[10],
+ { &hf_packetcable_qos_desc_flags_mcb,
{ "Maximum Concatenated Burst","packetcable_avps.qs.flags.mcb",
FT_UINT32, BASE_DEC, NULL, PACKETCABLE_MAXIMUM_CONCATENATED_BURST_MASK,
"PacketCable QoS Descriptor Attribute Bitmask: Maximum Concatenated Burst", HFILL }
},
- { &hf_packetcable_qos_desc_flags[11],
+ { &hf_packetcable_qos_desc_flags_srtp,
{ "Status Request/Transmission Policy","packetcable_avps.qs.flags.srtp",
FT_UINT32, BASE_DEC, NULL, PACKETCABLE_REQUEST_TRANSMISSION_POLICY_MASK,
"PacketCable QoS Descriptor Attribute Bitmask: Status Request/Transmission Policy", HFILL }
},
- { &hf_packetcable_qos_desc_flags[12],
+ { &hf_packetcable_qos_desc_flags_npi,
{ "Nominal Polling Interval","packetcable_avps.qs.flags.npi",
FT_UINT32, BASE_DEC, NULL, PACKETCABLE_NOMINAL_POLLING_INTERVAL_MASK,
"PacketCable QoS Descriptor Attribute Bitmask: Nominal Polling Interval", HFILL }
},
- { &hf_packetcable_qos_desc_flags[13],
+ { &hf_packetcable_qos_desc_flags_tpj,
{ "Tolerated Poll Jitter","packetcable_avps.qs.flags.tpj",
FT_UINT32, BASE_DEC, NULL, PACKETCABLE_TOLERATED_POLL_JITTER_MASK,
"PacketCable QoS Descriptor Attribute Bitmask: Tolerated Poll Jitter", HFILL }
},
- { &hf_packetcable_qos_desc_flags[14],
+ { &hf_packetcable_qos_desc_flags_toso,
{ "Type of Service Override","packetcable_avps.qs.flags.toso",
FT_UINT32, BASE_DEC, NULL, PACKETCABLE_IP_TYPE_OF_SERVICE_OVERRIDE_MASK,
"PacketCable QoS Descriptor Attribute Bitmask: Type of Service Override", HFILL }
},
- { &hf_packetcable_qos_desc_flags[15],
+ { &hf_packetcable_qos_desc_flags_mdl,
{ "Maximum Downstream Latency","packetcable_avps.qs.flags.mdl",
FT_UINT32, BASE_DEC, NULL, PACKETCABLE_MAXIMUM_DOWNSTREAM_LATENCY_MASK,
"PacketCable QoS Descriptor Attribute Bitmask: Maximum Downstream Latency", HFILL }
@@ -774,7 +794,19 @@ void proto_register_packetcable(void) {
{ "Message_Waiting","packetcable_avps.tdi.mw",
FT_STRING, BASE_NONE, NULL, 0,
"PacketCable Terminal_Display_Info Message_Waiting", HFILL }
- }
+ },
+ /* Generated from convert_proto_tree_add_text.pl */
+ { &hf_packetcable_bcid_element_id, { "Element ID", "packetcable_avps.bcid.element_id", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_packetcable_bcid_time_zone_dst, { "Time Zone: DST", "packetcable_avps.bcid.time_zone.dst", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
+ { &hf_packetcable_bcid_time_zone_offset, { "Time Zone: Offset", "packetcable_avps.bcid.time_zone.offset", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_packetcable_em_header_element_id, { "Element ID", "packetcable_avps.emh.element_id", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_packetcable_em_header_time_zone_dst, { "Time Zone: DST", "packetcable_avps.emh.time_zone.dst", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
+ { &hf_packetcable_em_header_time_zone_offset, { "Time Zone: Offset", "packetcable_avps.emh.time_zone.offset", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_packetcable_em_header_event_time, { "Event Time", "packetcable_avps.emh.event_time", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_packetcable_qos_service_class_name, { "Service Class Name", "packetcable_avps.qs.sc_name", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_packetcable_redirected_from_last_redirecting_party, { "Last-Redirecting-Party", "packetcable_avps.rfi.last_redirecting_party", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_packetcable_redirected_from_original_called_party, { "Original-Called-Party", "packetcable_avps.rfi.original_called_party", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_packetcable_electronic_surveillance_indication_df_df_key, { "DF-DF-Key", "packetcable_avps.esi.df_df_key", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
};
static gint *ett[] = {