diff options
-rw-r--r-- | epan/dissectors/packet-cops.c | 185 |
1 files changed, 104 insertions, 81 deletions
diff --git a/epan/dissectors/packet-cops.c b/epan/dissectors/packet-cops.c index e1e6f94832..f10687f4ae 100644 --- a/epan/dissectors/packet-cops.c +++ b/epan/dissectors/packet-cops.c @@ -568,7 +568,7 @@ static gint hf_cops_obj_c_num = -1; static gint hf_cops_obj_c_type = -1; static gint hf_cops_obj_s_num = -1; -/* static gint hf_cops_obj_s_type = -1; */ +static gint hf_cops_obj_s_type = -1; static gint hf_cops_handle = -1; @@ -627,6 +627,10 @@ static gint hf_cops_epd_opaque = -1; static gint hf_cops_epd_i64 = -1; static gint hf_cops_epd_u64 = -1; static gint hf_cops_epd_unknown = -1; +static gint hf_cops_reserved8 = -1; +static gint hf_cops_reserved16 = -1; +static gint hf_cops_reserved24 = -1; + /* For PacketCable D-QoS */ static gint hf_cops_subtree = -1; @@ -780,6 +784,11 @@ static gint ett_cops_cperror = -1; static gint ett_cops_pdp = -1; static expert_field ei_cops_pepid_not_null = EI_INIT; +static expert_field ei_cops_trailing_garbage = EI_INIT; +static expert_field ei_cops_bad_cops_object_length = EI_INIT; +static expert_field ei_cops_bad_cops_pr_object_length = EI_INIT; +static expert_field ei_cops_unknown_c_num = EI_INIT; +static expert_field ei_cops_unknown_s_num = EI_INIT; /* For PacketCable */ static gint ett_cops_subtree = -1; @@ -992,10 +1001,9 @@ dissect_cops_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) } garbage = tvb_length_remaining(tvb, offset); - if (garbage > 0) - proto_tree_add_text(cops_tree, tvb, offset, garbage, - "Trailing garbage: %d byte%s", garbage, - plurality(garbage, "", "s")); + if (garbage > 0) { + proto_tree_add_expert_format(tree, pinfo, &ei_cops_trailing_garbage, tvb, offset, garbage, "Trailing garbage: %d byte%s", garbage, plurality(garbage, "", "s")); + } /* Start request/response matching */ @@ -1196,9 +1204,10 @@ static int dissect_cops_object(tvbuff_t *tvb, packet_info *pinfo, guint8 op_code object_len = tvb_get_ntohs(tvb, offset); if (object_len < COPS_OBJECT_HDR_SIZE) { /* Bogus! */ - proto_tree_add_text(tree, tvb, offset, 2, - "Bad COPS object length: %u, should be at least %u", - object_len, COPS_OBJECT_HDR_SIZE); + ti = proto_tree_add_uint(tree, hf_cops_obj_len, tvb, offset, 2, object_len); + expert_add_info_format_text(pinfo, ti, &ei_cops_bad_cops_object_length, + "Bad COPS object length: %u, should be at least %u", + object_len, COPS_OBJECT_HDR_SIZE); return -1; } c_num = tvb_get_guint8(tvb, offset + 2); @@ -1250,12 +1259,14 @@ static void dissect_cops_pr_objects(tvbuff_t *tvb, packet_info *pinfo, guint32 o object_len = tvb_get_ntohs(tvb, offset); if (object_len < COPS_OBJECT_HDR_SIZE) { /* Bogus! */ - proto_tree_add_text(tree, tvb, offset, 2, - "Bad COPS PR object length: %u, should be at least %u", - object_len, COPS_OBJECT_HDR_SIZE); + ti = proto_tree_add_uint(cops_pr_tree, hf_cops_obj_len, tvb, offset, 2, object_len); + expert_add_info_format_text(pinfo, ti, &ei_cops_bad_cops_pr_object_length, + "Bad COPS-PR object length: %u, should be at least %u", + object_len, COPS_OBJECT_HDR_SIZE); return; } s_num = tvb_get_guint8(tvb, offset + 2); + s_type = tvb_get_guint8(tvb, offset + 3); ti = proto_tree_add_uint_format(cops_pr_tree, hf_cops_obj_s_num, tvb, offset, object_len, s_num, "%s", val_to_str_const(s_num, cops_s_num_vals, "Unknown")); @@ -1271,11 +1282,12 @@ static void dissect_cops_pr_objects(tvbuff_t *tvb, packet_info *pinfo, guint32 o s_type = tvb_get_guint8(tvb, offset); type_str = val_to_str_const(s_type, cops_s_type_vals, "Unknown"); - proto_tree_add_text(obj_tree, tvb, offset, 1, "S-Type: %s%s%u%s", - type_str, - strlen(type_str) ? " (" : "", - s_type, - strlen(type_str) ? ")" : ""); + proto_tree_add_uint_format_value(obj_tree, hf_cops_obj_s_type, tvb, offset, 1, s_type, + "%s%s%u%s", + type_str, + strlen(type_str) ? " (" : "", + s_type, + strlen(type_str) ? ")" : ""); offset++; pr_len--; @@ -1299,7 +1311,8 @@ static void dissect_cops_object_data(tvbuff_t *tvb, packet_info *pinfo, guint32 { proto_item *ti; proto_tree *r_type_tree, *itf_tree, *reason_tree, *dec_tree, *error_tree, *clientsi_tree, *pdp_tree; - guint16 r_type, m_type, reason, reason_sub, cmd_code, cmd_flags, error, error_sub, tcp_port; + guint16 r_type, m_type, reason, reason_sub, cmd_code, cmd_flags, error, error_sub, + tcp_port, katimer, accttimer; guint32 ipv4addr, ifindex; struct e_in6_addr ipv6addr; oid_info_t* oid_info = NULL; @@ -1363,7 +1376,7 @@ static void dissect_cops_object_data(tvbuff_t *tvb, packet_info *pinfo, guint32 reason_tree = proto_item_add_subtree(ti, ett_cops_reason); proto_tree_add_uint(reason_tree, hf_cops_reason, tvb, offset, 2, reason); offset += 2; - if (reason == 13) { + if (reason == 13) { /* RFC 2748 2.2.5 */ proto_tree_add_text(reason_tree, tvb, offset, 2, "Reason Sub-code: " "Unknown object's C-Num %u, C-Type %u", tvb_get_guint8(tvb, offset), tvb_get_guint8(tvb, offset + 1)); @@ -1384,7 +1397,7 @@ static void dissect_cops_object_data(tvbuff_t *tvb, packet_info *pinfo, guint32 offset += 2; proto_tree_add_uint(dec_tree, hf_cops_dec_flags, tvb, offset, 2, cmd_flags); } else if (c_type == 5) { /*COPS-PR Data*/ - ti = proto_tree_add_text(tree, tvb, offset, 4, "Contents: %d bytes", len); + ti = proto_tree_add_text(tree, tvb, offset, len, "Contents: %d bytes", len); dec_tree = proto_item_add_subtree(ti, ett_cops_decision); dissect_cops_pr_objects(tvb, pinfo, offset, dec_tree, len, &oid_info, &pprid_subids, &pprid_subids_len); } @@ -1408,7 +1421,7 @@ static void dissect_cops_object_data(tvbuff_t *tvb, packet_info *pinfo, guint32 error_tree = proto_item_add_subtree(ti, ett_cops_error); proto_tree_add_uint(error_tree, hf_cops_error, tvb, offset, 2, error); offset += 2; - if (error == 13) { + if (error == 13) { /* RFC 2748 2.2.8 */ proto_tree_add_text(error_tree, tvb, offset, 2, "Error Sub-code: " "Unknown object's C-Num %u, C-Type %u", tvb_get_guint8(tvb, offset), tvb_get_guint8(tvb, offset + 1)); @@ -1440,10 +1453,12 @@ static void dissect_cops_object_data(tvbuff_t *tvb, packet_info *pinfo, guint32 if (c_type != 1) break; - proto_tree_add_item(tree, hf_cops_katimer, tvb, offset + 2, 2, ENC_BIG_ENDIAN); - if (tvb_get_ntohs(tvb, offset + 2) == 0) - proto_tree_add_text(tree, tvb, offset, 0, "Value of zero implies infinity."); - + katimer = tvb_get_ntohs(tvb, offset + 2); + if (katimer == 0) { + proto_tree_add_uint_format_value(tree, hf_cops_katimer, tvb, offset + 2, 2, katimer, "0 (infinity)"); + } else { + proto_tree_add_item(tree, hf_cops_katimer, tvb, offset + 2, 2, ENC_BIG_ENDIAN); + } break; case COPS_OBJ_PEPID: if (c_type != 1) @@ -1498,11 +1513,13 @@ static void dissect_cops_object_data(tvbuff_t *tvb, packet_info *pinfo, guint32 if (c_type != 1) break; - proto_tree_add_item(tree, hf_cops_accttimer, tvb, offset + 2, 2, ENC_BIG_ENDIAN); - if (tvb_get_ntohs(tvb, offset + 2) == 0) - proto_tree_add_text(tree, tvb, offset, 0, "Value of zero means " - "there SHOULD be no unsolicited accounting updates."); - + accttimer = tvb_get_ntohs(tvb, offset + 2); + if (accttimer == 0) { + proto_tree_add_uint_format_value(tree, hf_cops_accttimer, tvb, offset + 2, 2, accttimer, + "0 (there SHOULD be no unsolicited accounting updates)"); + } else { + proto_tree_add_item(tree, hf_cops_accttimer, tvb, offset + 2, 2, ENC_BIG_ENDIAN); + } break; case COPS_OBJ_INTEGRITY: if (c_type != 1) @@ -1514,8 +1531,7 @@ static void dissect_cops_object_data(tvbuff_t *tvb, packet_info *pinfo, guint32 break; default: - proto_tree_add_text(tree, tvb, offset, len, "Contents: %d bytes", len); - + proto_tree_add_expert_format(tree, pinfo, &ei_cops_unknown_c_num, tvb, offset, len, "Unknown C-Num %d, Contents: %d bytes", c_num, len); break; } } @@ -1751,7 +1767,7 @@ static int dissect_cops_pr_object_data(tvbuff_t *tvb, packet_info *pinfo, guint3 gperror_tree = proto_item_add_subtree(ti, ett_cops_gperror); proto_tree_add_uint(gperror_tree, hf_cops_gperror, tvb, offset, 2, gperror); offset += 2; - if (gperror == 13) { + if (gperror == 13) { /* RFC 3084 4.4 */ proto_tree_add_text(gperror_tree, tvb, offset, 2, "Error Sub-code: " "Unknown object's C-Num %u, C-Type %u", tvb_get_guint8(tvb, offset), tvb_get_guint8(tvb, offset + 1)); @@ -1770,7 +1786,7 @@ static int dissect_cops_pr_object_data(tvbuff_t *tvb, packet_info *pinfo, guint3 cperror_tree = proto_item_add_subtree(ti, ett_cops_cperror); proto_tree_add_uint(cperror_tree, hf_cops_cperror, tvb, offset, 2, cperror); offset += 2; - if (cperror == 13) { + if (cperror == 13) { /* RFC 3084 4.5 */ proto_tree_add_text(cperror_tree, tvb, offset, 2, "Error Sub-code: " "Unknown object's S-Num %u, C-Type %u", tvb_get_guint8(tvb, offset), tvb_get_guint8(tvb, offset + 1)); @@ -1858,14 +1874,11 @@ void proto_register_cops(void) FT_UINT8, BASE_DEC, VALS(cops_s_num_vals), 0x0, "S-Num in COPS-PR Object Header", HFILL } }, -#if 0 { &hf_cops_obj_s_type, { "S-Type", "cops.s_type", FT_UINT8, BASE_DEC, NULL, 0x0, "S-Type in COPS-PR Object Header", HFILL } }, -#endif - { &hf_cops_handle, { "Handle", "cops.handle", FT_UINT32, BASE_HEX, NULL, 0x0, @@ -2011,6 +2024,11 @@ void proto_register_cops(void) FT_UINT16, BASE_HEX, NULL, 0, "Error Sub-code in Error object", HFILL } }, + + { &hf_cops_reserved8, { "Reserved", "cops.reserved", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL } }, + { &hf_cops_reserved16, { "Reserved", "cops.reserved", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL } }, + { &hf_cops_reserved24, { "Reserved", "cops.reserved", FT_UINT24, BASE_HEX, NULL, 0, NULL, HFILL } }, + { &hf_cops_prid_oid, { "PRID Instance Identifier", "cops.prid.instance_id", FT_OID, BASE_NONE, NULL, 0, NULL, HFILL } }, { &hf_cops_pprid_oid, { "Prefix Identifier", "cops.pprid.prefix_id", FT_OID, BASE_NONE, NULL, 0, NULL, HFILL } }, { &hf_cops_errprid_oid, { "ErrorPRID Instance Identifier", "cops.errprid.instance_id", FT_OID, BASE_NONE, NULL, 0, NULL, HFILL } }, @@ -2730,6 +2748,11 @@ void proto_register_cops(void) static ei_register_info ei[] = { { &ei_cops_pepid_not_null, { "cops.pepid.not_null", PI_MALFORMED, PI_NOTE, "PEP Id is not a NULL terminated ASCII string", EXPFILL }}, + { &ei_cops_trailing_garbage, { "cops.trailing_garbage", PI_UNDECODED, PI_NOTE, "Trailing garbage", EXPFILL }}, + { &ei_cops_bad_cops_object_length, { "cops.bad_cops_object_length", PI_MALFORMED, PI_ERROR, "COPS object length is too short", EXPFILL }}, + { &ei_cops_bad_cops_pr_object_length, { "cops.bad_cops_pr_object_length", PI_MALFORMED, PI_ERROR, "COPS-PR object length is too short", EXPFILL }}, + { &ei_cops_unknown_c_num, { "cops.unknown_c_num", PI_UNDECODED, PI_NOTE, "Unknown C-Num value", EXPFILL }}, + { &ei_cops_unknown_s_num, { "cops.unknown_s_num", PI_UNDECODED, PI_NOTE, "Unknown S-Num value", EXPFILL }}, }; @@ -3785,7 +3808,7 @@ cops_docsis_service_class_name(tvbuff_t *tvb, proto_tree *st, guint object_len, info_to_display(tvb,stt,offset,1,"Envelope",NULL,FMT_DEC,&hf_cops_pcmm_envelope); offset += 1; - proto_tree_add_text(stt, tvb, offset, 3, "Reserved"); + proto_tree_add_item(stt, hf_cops_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN); offset += 3; if (object_len >= 12) { @@ -3818,7 +3841,7 @@ cops_best_effort_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, guint32 info_to_display(tvb,stt,offset,1,"Envelope",NULL,FMT_DEC,&hf_cops_pcmm_envelope); offset += 1; - proto_tree_add_text(stt, tvb, offset, 3, "Reserved"); + proto_tree_add_item(stt, hf_cops_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN); offset += 3; /* Authorized Envelope */ @@ -3829,7 +3852,7 @@ cops_best_effort_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, guint32 info_to_display(tvb,object_tree,offset,1,"Traffic Priority",NULL,FMT_HEX,&hf_cops_pcmm_traffic_priority); offset += 1; - proto_tree_add_text(object_tree, tvb, offset, 3, "Reserved"); + proto_tree_add_item(object_tree, hf_cops_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN); offset += 3; /* Request Transmission Policy */ @@ -3880,7 +3903,7 @@ cops_best_effort_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, guint32 info_to_display(tvb,object_tree,offset,1,"Traffic Priority",NULL,FMT_HEX,&hf_cops_pcmm_traffic_priority); offset += 1; - proto_tree_add_text(object_tree, tvb, offset, 3, "Reserved"); + proto_tree_add_item(object_tree, hf_cops_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN); offset += 3; /* Request Transmission Policy */ @@ -3931,7 +3954,7 @@ cops_best_effort_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, guint32 info_to_display(tvb,object_tree,offset,1,"Traffic Priority",NULL,FMT_HEX,&hf_cops_pcmm_traffic_priority); offset += 1; - proto_tree_add_text(object_tree, tvb, offset, 3, "Reserved"); + proto_tree_add_item(object_tree, hf_cops_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN); offset += 3; /* Request Transmission Policy */ @@ -3989,7 +4012,7 @@ cops_non_real_time_polling_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint info_to_display(tvb,stt,offset,1,"Envelope",NULL,FMT_DEC,&hf_cops_pcmm_envelope); offset += 1; - proto_tree_add_text(stt, tvb, offset, 3, "Reserved"); + proto_tree_add_item(stt, hf_cops_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN); offset += 3; /* Authorized Envelope */ @@ -4000,7 +4023,7 @@ cops_non_real_time_polling_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint info_to_display(tvb,object_tree,offset,1,"Traffic Priority",NULL,FMT_HEX,&hf_cops_pcmm_traffic_priority); offset += 1; - proto_tree_add_text(object_tree, tvb, offset, 3, "Reserved"); + proto_tree_add_item(object_tree, hf_cops_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN); offset += 3; /* Request Transmission Policy */ @@ -4055,7 +4078,7 @@ cops_non_real_time_polling_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint info_to_display(tvb,object_tree,offset,1,"Traffic Priority",NULL,FMT_HEX,&hf_cops_pcmm_traffic_priority); offset += 1; - proto_tree_add_text(object_tree, tvb, offset, 3, "Reserved"); + proto_tree_add_item(object_tree, hf_cops_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN); offset += 3; /* Request Transmission Policy */ @@ -4110,7 +4133,7 @@ cops_non_real_time_polling_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint info_to_display(tvb,object_tree,offset,1,"Traffic Priority",NULL,FMT_HEX,&hf_cops_pcmm_traffic_priority); offset += 1; - proto_tree_add_text(object_tree, tvb, offset, 3, "Reserved"); + proto_tree_add_item(object_tree, hf_cops_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN); offset += 3; /* Request Transmission Policy */ @@ -4172,7 +4195,7 @@ cops_real_time_polling_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, g info_to_display(tvb,stt,offset,1,"Envelope",NULL,FMT_DEC,&hf_cops_pcmm_envelope); offset += 1; - proto_tree_add_text(stt, tvb, offset, 3, "Reserved"); + proto_tree_add_item(stt, hf_cops_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN); offset += 3; /* Authorized Envelope */ @@ -4346,7 +4369,7 @@ cops_unsolicited_grant_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, g info_to_display(tvb,stt,offset,1,"Envelope",NULL,FMT_DEC,&hf_cops_pcmm_envelope); offset += 1; - proto_tree_add_text(stt, tvb, offset, 3, "Reserved"); + proto_tree_add_item(stt, hf_cops_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN); offset += 3; /* Authorized Envelope */ @@ -4365,7 +4388,7 @@ cops_unsolicited_grant_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, g info_to_display(tvb,object_tree,offset,1,"Grants Per Interval",NULL,FMT_DEC,&hf_cops_pcmm_grants_per_interval); offset += 1; - proto_tree_add_text(object_tree, tvb, offset, 1, "Reserved"); + proto_tree_add_item(object_tree, hf_cops_reserved8, tvb, offset, 1, ENC_NA); offset += 1; /* Nominal Grant Interval */ @@ -4408,7 +4431,7 @@ cops_unsolicited_grant_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, g info_to_display(tvb,object_tree,offset,1,"Grants Per Interval",NULL,FMT_DEC,&hf_cops_pcmm_grants_per_interval); offset += 1; - proto_tree_add_text(object_tree, tvb, offset, 1, "Reserved"); + proto_tree_add_item(object_tree, hf_cops_reserved8, tvb, offset, 1, ENC_NA); offset += 1; /* Nominal Grant Interval */ @@ -4451,7 +4474,7 @@ cops_unsolicited_grant_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, g info_to_display(tvb,object_tree,offset,1,"Grants Per Interval",NULL,FMT_DEC,&hf_cops_pcmm_grants_per_interval); offset += 1; - proto_tree_add_text(object_tree, tvb, offset, 1, "Reserved"); + proto_tree_add_item(object_tree, hf_cops_reserved8, tvb, offset, 1, ENC_NA); offset += 1; /* Nominal Grant Interval */ @@ -4493,7 +4516,7 @@ cops_ugs_with_activity_detection_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, info_to_display(tvb,stt,offset,1,"Envelope",NULL,FMT_DEC,&hf_cops_pcmm_envelope); offset += 1; - proto_tree_add_text(stt, tvb, offset, 3, "Reserved"); + proto_tree_add_item(stt, hf_cops_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN); offset += 3; /* Authorized Envelope */ @@ -4512,7 +4535,7 @@ cops_ugs_with_activity_detection_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, info_to_display(tvb,object_tree,offset,1,"Grants Per Interval",NULL,FMT_DEC,&hf_cops_pcmm_grants_per_interval); offset += 1; - proto_tree_add_text(object_tree, tvb, offset, 1, "Reserved"); + proto_tree_add_item(object_tree, hf_cops_reserved8, tvb, offset, 1, ENC_NA); offset += 1; /* Nominal Grant Interval */ @@ -4563,7 +4586,7 @@ cops_ugs_with_activity_detection_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, info_to_display(tvb,object_tree,offset,1,"Grants Per Interval",NULL,FMT_DEC,&hf_cops_pcmm_grants_per_interval); offset += 1; - proto_tree_add_text(object_tree, tvb, offset, 1, "Reserved"); + proto_tree_add_item(object_tree, hf_cops_reserved8, tvb, offset, 1, ENC_NA); offset += 1; /* Nominal Grant Interval */ @@ -4614,7 +4637,7 @@ cops_ugs_with_activity_detection_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, info_to_display(tvb,object_tree,offset,1,"Grants Per Interval",NULL,FMT_DEC,&hf_cops_pcmm_grants_per_interval); offset += 1; - proto_tree_add_text(object_tree, tvb, offset, 1, "Reserved"); + proto_tree_add_item(object_tree, hf_cops_reserved8, tvb, offset, 1, ENC_NA); offset += 1; /* Nominal Grant Interval */ @@ -4664,7 +4687,7 @@ cops_downstream_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, guint32 info_to_display(tvb,stt,offset,1,"Envelope",NULL,FMT_DEC,&hf_cops_pcmm_envelope); offset += 1; - proto_tree_add_text(stt, tvb, offset, 3, "Reserved"); + proto_tree_add_item(stt, hf_cops_reserved24, tvb, offset, 3, ENC_NA); offset += 3; /* Authorized Envelope */ @@ -4679,7 +4702,7 @@ cops_downstream_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, guint32 info_to_display(tvb,object_tree,offset,1,"Downstream Resequencing",NULL,FMT_HEX,&hf_cops_pcmm_down_resequencing); offset += 1; - proto_tree_add_text(object_tree, tvb, offset, 2, "Reserved"); + proto_tree_add_item(object_tree, hf_cops_reserved16, tvb, offset, 2, ENC_BIG_ENDIAN); offset += 2; /* Maximum Sustained Traffic Rate */ @@ -4738,7 +4761,7 @@ cops_downstream_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, guint32 info_to_display(tvb,object_tree,offset,1,"Downstream Resequencing",NULL,FMT_HEX,&hf_cops_pcmm_down_resequencing); offset += 1; - proto_tree_add_text(object_tree, tvb, offset, 2, "Reserved"); + proto_tree_add_item(object_tree, hf_cops_reserved16, tvb, offset, 2, ENC_BIG_ENDIAN); offset += 2; /* Maximum Sustained Traffic Rate */ @@ -4797,7 +4820,7 @@ cops_downstream_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, guint32 info_to_display(tvb,object_tree,offset,1,"Downstream Resequencing",NULL,FMT_HEX,&hf_cops_pcmm_down_resequencing); offset += 1; - proto_tree_add_text(object_tree, tvb, offset, 2, "Reserved"); + proto_tree_add_item(object_tree, hf_cops_reserved16, tvb, offset, 2, ENC_BIG_ENDIAN); offset += 2; /* Maximum Sustained Traffic Rate */ @@ -4858,7 +4881,7 @@ cops_upstream_drop_i04(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) { info_to_display(tvb,stt,offset,1,"Envelope",NULL,FMT_DEC,&hf_cops_pcmm_envelope); offset += 1; - proto_tree_add_text(stt, tvb, offset, 3, "Reserved"); + proto_tree_add_item(stt, hf_cops_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN); offset += 3; return offset; @@ -4880,7 +4903,7 @@ cops_best_effort_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) info_to_display(tvb,stt,offset,1,"Envelope",NULL,FMT_DEC,&hf_cops_pcmm_envelope); offset += 1; - proto_tree_add_text(stt, tvb, offset, 3, "Reserved"); + proto_tree_add_item(stt, hf_cops_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN); offset += 3; /* Authorized Envelope */ @@ -4891,7 +4914,7 @@ cops_best_effort_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) info_to_display(tvb,object_tree,offset,1,"Traffic Priority",NULL,FMT_HEX,&hf_cops_pcmm_traffic_priority); offset += 1; - proto_tree_add_text(object_tree, tvb, offset, 3, "Reserved"); + proto_tree_add_item(object_tree, hf_cops_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN); offset += 3; /* Request Transmission Policy */ @@ -4928,7 +4951,7 @@ cops_best_effort_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) info_to_display(tvb,object_tree,offset,1,"Traffic Priority",NULL,FMT_HEX,&hf_cops_pcmm_traffic_priority); offset += 1; - proto_tree_add_text(object_tree, tvb, offset, 3, "Reserved"); + proto_tree_add_item(object_tree, hf_cops_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN); offset += 3; /* Request Transmission Policy */ @@ -4965,7 +4988,7 @@ cops_best_effort_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) info_to_display(tvb,object_tree,offset,1,"Traffic Priority",NULL,FMT_HEX,&hf_cops_pcmm_traffic_priority); offset += 1; - proto_tree_add_text(object_tree, tvb, offset, 3, "Reserved"); + proto_tree_add_item(object_tree, hf_cops_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN); offset += 3; /* Request Transmission Policy */ @@ -5009,7 +5032,7 @@ cops_non_real_time_polling_service(tvbuff_t *tvb, proto_tree *st, guint n, guint info_to_display(tvb,stt,offset,1,"Envelope",NULL,FMT_DEC,&hf_cops_pcmm_envelope); offset += 1; - proto_tree_add_text(stt, tvb, offset, 3, "Reserved"); + proto_tree_add_item(stt, hf_cops_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN); offset += 3; /* Authorized Envelope */ @@ -5020,7 +5043,7 @@ cops_non_real_time_polling_service(tvbuff_t *tvb, proto_tree *st, guint n, guint info_to_display(tvb,object_tree,offset,1,"Traffic Priority",NULL,FMT_HEX,&hf_cops_pcmm_traffic_priority); offset += 1; - proto_tree_add_text(object_tree, tvb, offset, 3, "Reserved"); + proto_tree_add_item(object_tree, hf_cops_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN); offset += 3; /* Request Transmission Policy */ @@ -5061,7 +5084,7 @@ cops_non_real_time_polling_service(tvbuff_t *tvb, proto_tree *st, guint n, guint info_to_display(tvb,object_tree,offset,1,"Traffic Priority",NULL,FMT_HEX,&hf_cops_pcmm_traffic_priority); offset += 1; - proto_tree_add_text(object_tree, tvb, offset, 3, "Reserved"); + proto_tree_add_item(object_tree, hf_cops_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN); offset += 3; /* Request Transmission Policy */ @@ -5102,7 +5125,7 @@ cops_non_real_time_polling_service(tvbuff_t *tvb, proto_tree *st, guint n, guint info_to_display(tvb,object_tree,offset,1,"Traffic Priority",NULL,FMT_HEX,&hf_cops_pcmm_traffic_priority); offset += 1; - proto_tree_add_text(object_tree, tvb, offset, 3, "Reserved"); + proto_tree_add_item(object_tree, hf_cops_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN); offset += 3; /* Request Transmission Policy */ @@ -5150,7 +5173,7 @@ cops_real_time_polling_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 o info_to_display(tvb,stt,offset,1,"Envelope",NULL,FMT_DEC,&hf_cops_pcmm_envelope); offset += 1; - proto_tree_add_text(stt, tvb, offset, 3, "Reserved"); + proto_tree_add_item(stt, hf_cops_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN); offset += 3; /* Authorized Envelope */ @@ -5282,7 +5305,7 @@ cops_unsolicited_grant_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 o info_to_display(tvb,stt,offset,1,"Envelope",NULL,FMT_DEC,&hf_cops_pcmm_envelope); offset += 1; - proto_tree_add_text(stt, tvb, offset, 3, "Reserved"); + proto_tree_add_item(stt, hf_cops_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN); offset += 3; /* Authorized Envelope */ @@ -5301,7 +5324,7 @@ cops_unsolicited_grant_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 o info_to_display(tvb,object_tree,offset,1,"Grants Per Interval",NULL,FMT_DEC,&hf_cops_pcmm_grants_per_interval); offset += 1; - proto_tree_add_text(object_tree, tvb, offset, 1, "Reserved"); + proto_tree_add_item(object_tree, hf_cops_reserved8, tvb, offset, 1, ENC_NA); offset += 1; /* Nominal Grant Interval */ @@ -5330,7 +5353,7 @@ cops_unsolicited_grant_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 o info_to_display(tvb,object_tree,offset,1,"Grants Per Interval",NULL,FMT_DEC,&hf_cops_pcmm_grants_per_interval); offset += 1; - proto_tree_add_text(object_tree, tvb, offset, 1, "Reserved"); + proto_tree_add_item(object_tree, hf_cops_reserved8, tvb, offset, 1, ENC_NA); offset += 1; /* Nominal Grant Interval */ @@ -5359,7 +5382,7 @@ cops_unsolicited_grant_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 o info_to_display(tvb,object_tree,offset,1,"Grants Per Interval",NULL,FMT_DEC,&hf_cops_pcmm_grants_per_interval); offset += 1; - proto_tree_add_text(object_tree, tvb, offset, 1, "Reserved"); + proto_tree_add_item(object_tree, hf_cops_reserved8, tvb, offset, 1, ENC_NA); offset += 1; /* Nominal Grant Interval */ @@ -5387,7 +5410,7 @@ cops_ugs_with_activity_detection(tvbuff_t *tvb, proto_tree *st, guint n, guint32 info_to_display(tvb,stt,offset,1,"Envelope",NULL,FMT_DEC,&hf_cops_pcmm_envelope); offset += 1; - proto_tree_add_text(stt, tvb, offset, 3, "Reserved"); + proto_tree_add_item(stt, hf_cops_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN); offset += 3; /* Authorized Envelope */ @@ -5406,7 +5429,7 @@ cops_ugs_with_activity_detection(tvbuff_t *tvb, proto_tree *st, guint n, guint32 info_to_display(tvb,object_tree,offset,1,"Grants Per Interval",NULL,FMT_DEC,&hf_cops_pcmm_grants_per_interval); offset += 1; - proto_tree_add_text(object_tree, tvb, offset, 1, "Reserved"); + proto_tree_add_item(object_tree, hf_cops_reserved8, tvb, offset, 1, ENC_NA); offset += 1; /* Nominal Grant Interval */ @@ -5443,7 +5466,7 @@ cops_ugs_with_activity_detection(tvbuff_t *tvb, proto_tree *st, guint n, guint32 info_to_display(tvb,object_tree,offset,1,"Grants Per Interval",NULL,FMT_DEC,&hf_cops_pcmm_grants_per_interval); offset += 1; - proto_tree_add_text(object_tree, tvb, offset, 1, "Reserved"); + proto_tree_add_item(object_tree, hf_cops_reserved8, tvb, offset, 1, ENC_NA); offset += 1; /* Nominal Grant Interval */ @@ -5480,7 +5503,7 @@ cops_ugs_with_activity_detection(tvbuff_t *tvb, proto_tree *st, guint n, guint32 info_to_display(tvb,object_tree,offset,1,"Grants Per Interval",NULL,FMT_DEC,&hf_cops_pcmm_grants_per_interval); offset += 1; - proto_tree_add_text(object_tree, tvb, offset, 1, "Reserved"); + proto_tree_add_item(object_tree, hf_cops_reserved8, tvb, offset, 1, ENC_NA); offset += 1; /* Nominal Grant Interval */ @@ -5516,7 +5539,7 @@ cops_downstream_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) info_to_display(tvb,stt,offset,1,"Envelope",NULL,FMT_DEC,&hf_cops_pcmm_envelope); offset += 1; - proto_tree_add_text(stt, tvb, offset, 3, "Reserved"); + proto_tree_add_item(stt, hf_cops_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN); offset += 3; /* Authorized Envelope */ @@ -5527,7 +5550,7 @@ cops_downstream_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) info_to_display(tvb,object_tree,offset,1,"Traffic Priority",NULL,FMT_HEX,&hf_cops_pcmm_traffic_priority); offset += 1; - proto_tree_add_text(object_tree, tvb, offset, 3, "Reserved"); + proto_tree_add_item(object_tree, hf_cops_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN); offset += 3; /* Maximum Sustained Traffic Rate */ @@ -5564,7 +5587,7 @@ cops_downstream_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) info_to_display(tvb,object_tree,offset,1,"Traffic Priority",NULL,FMT_HEX,&hf_cops_pcmm_traffic_priority); offset += 1; - proto_tree_add_text(object_tree, tvb, offset, 3, "Reserved"); + proto_tree_add_item(object_tree, hf_cops_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN); offset += 3; /* Maximum Sustained Traffic Rate */ @@ -5601,7 +5624,7 @@ cops_downstream_service(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) info_to_display(tvb,object_tree,offset,1,"Traffic Priority",NULL,FMT_HEX,&hf_cops_pcmm_traffic_priority); offset += 1; - proto_tree_add_text(object_tree, tvb, offset, 3, "Reserved"); + proto_tree_add_item(object_tree, hf_cops_reserved24, tvb, offset, 3, ENC_BIG_ENDIAN); offset += 3; /* Maximum Sustained Traffic Rate */ @@ -5860,7 +5883,7 @@ cops_synch_options(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) { stt = info_to_cops_subtree(tvb,st,n,offset,"Synch Options"); offset += 4; - proto_tree_add_text(stt, tvb, offset, 2, "Reserved"); + proto_tree_add_item(stt, hf_cops_reserved16, tvb, offset, 2, ENC_BIG_ENDIAN); offset += 2; /* Report Type */ |