aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-cops.c
diff options
context:
space:
mode:
authorstig <stig@f5534014-38df-0310-8fa8-9805f1628bb7>2010-07-21 14:17:00 +0000
committerstig <stig@f5534014-38df-0310-8fa8-9805f1628bb7>2010-07-21 14:17:00 +0000
commite8c3370c5bf92d6ac592401076587dd78659e58d (patch)
tree0c8cd72adc0ecb4c6abc2ef281e5de6dc4322d25 /epan/dissectors/packet-cops.c
parent082db352f2ea16321a9afa580320b98422e7210f (diff)
Added "Attribute Aggregation Rule Mask" from PKT-SP-MM-I05-091029.
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@33605 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'epan/dissectors/packet-cops.c')
-rw-r--r--epan/dissectors/packet-cops.c416
1 files changed, 271 insertions, 145 deletions
diff --git a/epan/dissectors/packet-cops.c b/epan/dissectors/packet-cops.c
index 06869df180..1adf6cfba1 100644
--- a/epan/dissectors/packet-cops.c
+++ b/epan/dissectors/packet-cops.c
@@ -14,7 +14,7 @@
* Based on PKT-SP-DQOS-I09-040402 (April 2, 2004)
*
* PacketCable Multimedia Specification
- * Based on PKT-SP-MM-I04-080522
+ * Based on PKT-SP-MM-I04-080522 and PKT-SP-MM-I05-091029
*
* www.packetcable.com
*
@@ -724,6 +724,7 @@ static gint hf_cops_pcmm_ass_min_rtr_packet_size = -1;
static gint hf_cops_pcmm_max_concat_burst = -1;
static gint hf_cops_pcmm_req_att_mask = -1;
static gint hf_cops_pcmm_forbid_att_mask = -1;
+static gint hf_cops_pcmm_att_aggr_rule_mask = -1;
static gint hf_cops_pcmm_nominal_polling_interval = -1;
static gint hf_cops_pcmm_tolerated_poll_jitter = -1;
static gint hf_cops_pcmm_unsolicited_grant_size = -1;
@@ -2314,12 +2315,17 @@ void proto_register_cops(void)
{ "Required Attribute Mask", "cops.pc_mm_ramask",
FT_UINT16, BASE_DEC, NULL, 0,
"PacketCable Multimedia Committed Envelope Required Attribute Mask", HFILL }
- },
- { &hf_cops_pcmm_forbid_att_mask,
+ },
+ { &hf_cops_pcmm_forbid_att_mask,
{ "Forbidden Attribute Mask", "cops.pc_mm_famask",
FT_UINT16, BASE_DEC, NULL, 0,
"PacketCable Multimedia Committed Envelope Forbidden Attribute Mask", HFILL }
- },
+ },
+ { &hf_cops_pcmm_att_aggr_rule_mask,
+ { "Attribute Aggregation Rule Mask", "cops.pc_mm_aarmask",
+ FT_UINT16, BASE_DEC, NULL, 0,
+ "PacketCable Multimedia Committed Envelope Attribute Aggregation Rule Mask", HFILL }
+ },
{ &hf_cops_pcmm_nominal_polling_interval,
{ "Nominal Polling Interval", "cops.pc_mm_npi",
@@ -3552,7 +3558,7 @@ cops_docsis_service_class_name(tvbuff_t *tvb, proto_tree *st, guint object_len,
/* Cops - Section : Best Effort Service */
static void
-cops_best_effort_service_i04(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
+cops_best_effort_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset, gboolean i05) {
proto_item *ti;
proto_tree *stt, *object_tree;
@@ -3607,8 +3613,14 @@ cops_best_effort_service_i04(tvbuff_t *tvb, proto_tree *st, guint n, guint32 off
offset += 4;
/* Forbidden Attribute Mask */
- info_to_display(tvb,object_tree,offset,4,"Forbidden Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_forbid_att_mask);
- offset += 4;
+ info_to_display(tvb,object_tree,offset,4,"Forbidden Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_forbid_att_mask);
+ offset += 4;
+
+ if (i05) {
+ /* Attribute Aggregation Rule Mask */
+ info_to_display(tvb,object_tree,offset,4,"Attribute Aggregation Rule Mask",NULL,FMT_DEC,&hf_cops_pcmm_att_aggr_rule_mask);
+ offset += 4;
+ }
if (n < 56) return;
@@ -3644,16 +3656,22 @@ cops_best_effort_service_i04(tvbuff_t *tvb, proto_tree *st, guint n, guint32 off
offset += 2;
/* Maximum Concatenated Burst */
- info_to_display(tvb,object_tree,offset,2,"Maximum Concatenated Burst",NULL,FMT_DEC,&hf_cops_pcmm_max_concat_burst);
- offset += 2;
+ info_to_display(tvb,object_tree,offset,2,"Maximum Concatenated Burst",NULL,FMT_DEC,&hf_cops_pcmm_max_concat_burst);
+ offset += 2;
+
+ /* Required Attribute Mask */
+ info_to_display(tvb,object_tree,offset,4,"Required Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_req_att_mask);
+ offset += 4;
- /* Required Attribute Mask */
- info_to_display(tvb,object_tree,offset,4,"Required Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_req_att_mask);
- offset += 4;
+ /* Forbidden Attribute Mask */
+ info_to_display(tvb,object_tree,offset,4,"Forbidden Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_forbid_att_mask);
+ offset += 4;
- /* Forbidden Attribute Mask */
- info_to_display(tvb,object_tree,offset,4,"Forbidden Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_forbid_att_mask);
- offset += 4;
+ if (i05) {
+ /* Attribute Aggregation Rule Mask */
+ info_to_display(tvb,object_tree,offset,4,"Attribute Aggregation Rule Mask",NULL,FMT_DEC,&hf_cops_pcmm_att_aggr_rule_mask);
+ offset += 4;
+ }
if (n < 80) return;
@@ -3694,16 +3712,22 @@ cops_best_effort_service_i04(tvbuff_t *tvb, proto_tree *st, guint n, guint32 off
/* Required Attribute Mask */
info_to_display(tvb,object_tree,offset,4,"Required Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_req_att_mask);
- offset += 4;
+ offset += 4;
- /* Forbidden Attribute Mask */
- info_to_display(tvb,object_tree,offset,4,"Forbidden Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_forbid_att_mask);
- offset += 4;
+ /* Forbidden Attribute Mask */
+ info_to_display(tvb,object_tree,offset,4,"Forbidden Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_forbid_att_mask);
+ offset += 4;
+
+ if (i05) {
+ /* Attribute Aggregation Rule Mask */
+ info_to_display(tvb,object_tree,offset,4,"Attribute Aggregation Rule Mask",NULL,FMT_DEC,&hf_cops_pcmm_att_aggr_rule_mask);
+ offset += 4;
+ }
}
/* Cops - Section : Non-Real-Time Polling Service */
static void
-cops_non_real_time_polling_service_i04(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
+cops_non_real_time_polling_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset, gboolean i05) {
proto_item *ti;
proto_tree *stt, *object_tree;
@@ -3758,12 +3782,18 @@ cops_non_real_time_polling_service_i04(tvbuff_t *tvb, proto_tree *st, guint n, g
offset += 4;
/* Required Attribute Mask */
- info_to_display(tvb,object_tree,offset,4,"Required Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_req_att_mask);
- offset += 4;
+ info_to_display(tvb,object_tree,offset,4,"Required Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_req_att_mask);
+ offset += 4;
- /* Forbidden Attribute Mask */
- info_to_display(tvb,object_tree,offset,4,"Forbidden Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_forbid_att_mask);
- offset += 4;
+ /* Forbidden Attribute Mask */
+ info_to_display(tvb,object_tree,offset,4,"Forbidden Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_forbid_att_mask);
+ offset += 4;
+
+ if (i05) {
+ /* Attribute Aggregation Rule Mask */
+ info_to_display(tvb,object_tree,offset,4,"Attribute Aggregation Rule Mask",NULL,FMT_DEC,&hf_cops_pcmm_att_aggr_rule_mask);
+ offset += 4;
+ }
if (n < 64) return;
@@ -3799,20 +3829,26 @@ cops_non_real_time_polling_service_i04(tvbuff_t *tvb, proto_tree *st, guint n, g
offset += 2;
/* Maximum Concatenated Burst */
- info_to_display(tvb,object_tree,offset,2,"Maximum Concatenated Burst",NULL,FMT_DEC,&hf_cops_pcmm_max_concat_burst);
- offset += 2;
+ info_to_display(tvb,object_tree,offset,2,"Maximum Concatenated Burst",NULL,FMT_DEC,&hf_cops_pcmm_max_concat_burst);
+ offset += 2;
- /* Nominal Polling Interval */
- info_to_display(tvb,object_tree,offset,4,"Nominal Polling Interval",NULL,FMT_DEC,&hf_cops_pcmm_nominal_polling_interval);
- offset += 4;
+ /* Nominal Polling Interval */
+ info_to_display(tvb,object_tree,offset,4,"Nominal Polling Interval",NULL,FMT_DEC,&hf_cops_pcmm_nominal_polling_interval);
+ offset += 4;
- /* Required Attribute Mask */
- info_to_display(tvb,object_tree,offset,4,"Required Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_req_att_mask);
- offset += 4;
+ /* Required Attribute Mask */
+ info_to_display(tvb,object_tree,offset,4,"Required Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_req_att_mask);
+ offset += 4;
- /* Forbidden Attribute Mask */
- info_to_display(tvb,object_tree,offset,4,"Forbidden Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_forbid_att_mask);
- offset += 4;
+ /* Forbidden Attribute Mask */
+ info_to_display(tvb,object_tree,offset,4,"Forbidden Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_forbid_att_mask);
+ offset += 4;
+
+ if (i05) {
+ /* Attribute Aggregation Rule Mask */
+ info_to_display(tvb,object_tree,offset,4,"Attribute Aggregation Rule Mask",NULL,FMT_DEC,&hf_cops_pcmm_att_aggr_rule_mask);
+ offset += 4;
+ }
if (n < 92) return;
@@ -3848,25 +3884,31 @@ cops_non_real_time_polling_service_i04(tvbuff_t *tvb, proto_tree *st, guint n, g
offset += 2;
/* Maximum Concatenated Burst */
- info_to_display(tvb,object_tree,offset,2,"Maximum Concatenated Burst",NULL,FMT_DEC,&hf_cops_pcmm_max_concat_burst);
- offset += 2;
+ info_to_display(tvb,object_tree,offset,2,"Maximum Concatenated Burst",NULL,FMT_DEC,&hf_cops_pcmm_max_concat_burst);
+ offset += 2;
- /* Nominal Polling Interval */
- info_to_display(tvb,object_tree,offset,4,"Nominal Polling Interval",NULL,FMT_DEC,&hf_cops_pcmm_nominal_polling_interval);
- offset += 4;
+ /* Nominal Polling Interval */
+ info_to_display(tvb,object_tree,offset,4,"Nominal Polling Interval",NULL,FMT_DEC,&hf_cops_pcmm_nominal_polling_interval);
+ offset += 4;
- /* Required Attribute Mask */
- info_to_display(tvb,object_tree,offset,4,"Required Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_req_att_mask);
- offset += 4;
+ /* Required Attribute Mask */
+ info_to_display(tvb,object_tree,offset,4,"Required Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_req_att_mask);
+ offset += 4;
+
+ /* Forbidden Attribute Mask */
+ info_to_display(tvb,object_tree,offset,4,"Forbidden Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_forbid_att_mask);
+ offset += 4;
- /* Forbidden Attribute Mask */
- info_to_display(tvb,object_tree,offset,4,"Forbidden Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_forbid_att_mask);
- offset += 4;
+ if (i05) {
+ /* Attribute Aggregation Rule Mask */
+ info_to_display(tvb,object_tree,offset,4,"Attribute Aggregation Rule Mask",NULL,FMT_DEC,&hf_cops_pcmm_att_aggr_rule_mask);
+ offset += 4;
+ }
}
/* Cops - Section : Real-Time Polling Service */
static void
-cops_real_time_polling_service_i04(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
+cops_real_time_polling_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset, gboolean i05) {
proto_item *ti;
proto_tree *stt, *object_tree;
@@ -3925,6 +3967,12 @@ cops_real_time_polling_service_i04(tvbuff_t *tvb, proto_tree *st, guint n, guint
info_to_display(tvb,object_tree,offset,4,"Forbidden Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_forbid_att_mask);
offset += 4;
+ if (i05) {
+ /* Attribute Aggregation Rule Mask */
+ info_to_display(tvb,object_tree,offset,4,"Attribute Aggregation Rule Mask",NULL,FMT_DEC,&hf_cops_pcmm_att_aggr_rule_mask);
+ offset += 4;
+ }
+
if (n < 64) return;
/* Reserved Envelope */
@@ -3952,24 +4000,30 @@ cops_real_time_polling_service_i04(tvbuff_t *tvb, proto_tree *st, guint n, guint
offset += 2;
/* Maximum Concatenated Burst */
- info_to_display(tvb,object_tree,offset,2,"Maximum Concatenated Burst",NULL,FMT_DEC,&hf_cops_pcmm_max_concat_burst);
- offset += 2;
+ info_to_display(tvb,object_tree,offset,2,"Maximum Concatenated Burst",NULL,FMT_DEC,&hf_cops_pcmm_max_concat_burst);
+ offset += 2;
- /* Nominal Polling Interval */
- info_to_display(tvb,object_tree,offset,4,"Nominal Polling Interval",NULL,FMT_DEC,&hf_cops_pcmm_nominal_polling_interval);
- offset += 4;
+ /* Nominal Polling Interval */
+ info_to_display(tvb,object_tree,offset,4,"Nominal Polling Interval",NULL,FMT_DEC,&hf_cops_pcmm_nominal_polling_interval);
+ offset += 4;
+
+ /* Tolerated Poll Jitter */
+ info_to_display(tvb,object_tree,offset,4,"Tolerated Poll Jitter",NULL,FMT_DEC,&hf_cops_pcmm_tolerated_poll_jitter);
+ offset += 4;
- /* Tolerated Poll Jitter */
- info_to_display(tvb,object_tree,offset,4,"Tolerated Poll Jitter",NULL,FMT_DEC,&hf_cops_pcmm_tolerated_poll_jitter);
- offset += 4;
+ /* Required Attribute Mask */
+ info_to_display(tvb,object_tree,offset,4,"Required Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_req_att_mask);
+ offset += 4;
- /* Required Attribute Mask */
- info_to_display(tvb,object_tree,offset,4,"Required Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_req_att_mask);
- offset += 4;
+ /* Forbidden Attribute Mask */
+ info_to_display(tvb,object_tree,offset,4,"Forbidden Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_forbid_att_mask);
+ offset += 4;
- /* Forbidden Attribute Mask */
- info_to_display(tvb,object_tree,offset,4,"Forbidden Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_forbid_att_mask);
- offset += 4;
+ if (i05) {
+ /* Attribute Aggregation Rule Mask */
+ info_to_display(tvb,object_tree,offset,4,"Attribute Aggregation Rule Mask",NULL,FMT_DEC,&hf_cops_pcmm_att_aggr_rule_mask);
+ offset += 4;
+ }
if (n < 92) return;
@@ -3998,29 +4052,35 @@ cops_real_time_polling_service_i04(tvbuff_t *tvb, proto_tree *st, guint n, guint
offset += 2;
/* Maximum Concatenated Burst */
- info_to_display(tvb,object_tree,offset,2,"Maximum Concatenated Burst",NULL,FMT_DEC,&hf_cops_pcmm_max_concat_burst);
- offset += 2;
+ info_to_display(tvb,object_tree,offset,2,"Maximum Concatenated Burst",NULL,FMT_DEC,&hf_cops_pcmm_max_concat_burst);
+ offset += 2;
+
+ /* Nominal Polling Interval */
+ info_to_display(tvb,object_tree,offset,4,"Nominal Polling Interval",NULL,FMT_DEC,&hf_cops_pcmm_nominal_polling_interval);
+ offset += 4;
- /* Nominal Polling Interval */
- info_to_display(tvb,object_tree,offset,4,"Nominal Polling Interval",NULL,FMT_DEC,&hf_cops_pcmm_nominal_polling_interval);
- offset += 4;
+ /* Tolerated Poll Jitter */
+ info_to_display(tvb,object_tree,offset,4,"Tolerated Poll Jitter",NULL,FMT_DEC,&hf_cops_pcmm_tolerated_poll_jitter);
+ offset += 4;
- /* Tolerated Poll Jitter */
- info_to_display(tvb,object_tree,offset,4,"Tolerated Poll Jitter",NULL,FMT_DEC,&hf_cops_pcmm_tolerated_poll_jitter);
- offset += 4;
+ /* Required Attribute Mask */
+ info_to_display(tvb,object_tree,offset,4,"Required Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_req_att_mask);
+ offset += 4;
- /* Required Attribute Mask */
- info_to_display(tvb,object_tree,offset,4,"Required Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_req_att_mask);
- offset += 4;
+ /* Forbidden Attribute Mask */
+ info_to_display(tvb,object_tree,offset,4,"Forbidden Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_forbid_att_mask);
+ offset += 4;
- /* Forbidden Attribute Mask */
- info_to_display(tvb,object_tree,offset,4,"Forbidden Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_forbid_att_mask);
- offset += 4;
+ if (i05) {
+ /* Attribute Aggregation Rule Mask */
+ info_to_display(tvb,object_tree,offset,4,"Attribute Aggregation Rule Mask",NULL,FMT_DEC,&hf_cops_pcmm_att_aggr_rule_mask);
+ offset += 4;
+ }
}
/* Cops - Section : Unsolicited Grant Service */
static void
-cops_unsolicited_grant_service_i04(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
+cops_unsolicited_grant_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset, gboolean i05) {
proto_item *ti;
proto_tree *stt, *object_tree;
@@ -4063,12 +4123,18 @@ cops_unsolicited_grant_service_i04(tvbuff_t *tvb, proto_tree *st, guint n, guint
offset += 4;
/* Required Attribute Mask */
- info_to_display(tvb,object_tree,offset,4,"Required Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_req_att_mask);
- offset += 4;
+ info_to_display(tvb,object_tree,offset,4,"Required Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_req_att_mask);
+ offset += 4;
+
+ /* Forbidden Attribute Mask */
+ info_to_display(tvb,object_tree,offset,4,"Forbidden Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_forbid_att_mask);
+ offset += 4;
- /* Forbidden Attribute Mask */
- info_to_display(tvb,object_tree,offset,4,"Forbidden Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_forbid_att_mask);
- offset += 4;
+ if (i05) {
+ /* Attribute Aggregation Rule Mask */
+ info_to_display(tvb,object_tree,offset,4,"Attribute Aggregation Rule Mask",NULL,FMT_DEC,&hf_cops_pcmm_att_aggr_rule_mask);
+ offset += 4;
+ }
if (n < 40) return;
@@ -4100,12 +4166,18 @@ cops_unsolicited_grant_service_i04(tvbuff_t *tvb, proto_tree *st, guint n, guint
offset += 4;
/* Required Attribute Mask */
- info_to_display(tvb,object_tree,offset,4,"Required Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_req_att_mask);
- offset += 4;
+ info_to_display(tvb,object_tree,offset,4,"Required Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_req_att_mask);
+ offset += 4;
+
+ /* Forbidden Attribute Mask */
+ info_to_display(tvb,object_tree,offset,4,"Forbidden Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_forbid_att_mask);
+ offset += 4;
- /* Forbidden Attribute Mask */
- info_to_display(tvb,object_tree,offset,4,"Forbidden Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_forbid_att_mask);
- offset += 4;
+ if (i05) {
+ /* Attribute Aggregation Rule Mask */
+ info_to_display(tvb,object_tree,offset,4,"Attribute Aggregation Rule Mask",NULL,FMT_DEC,&hf_cops_pcmm_att_aggr_rule_mask);
+ offset += 4;
+ }
if (n < 56) return;
@@ -4137,17 +4209,23 @@ cops_unsolicited_grant_service_i04(tvbuff_t *tvb, proto_tree *st, guint n, guint
offset += 4;
/* Required Attribute Mask */
- info_to_display(tvb,object_tree,offset,4,"Required Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_req_att_mask);
- offset += 4;
+ info_to_display(tvb,object_tree,offset,4,"Required Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_req_att_mask);
+ offset += 4;
- /* Forbidden Attribute Mask */
- info_to_display(tvb,object_tree,offset,4,"Forbidden Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_forbid_att_mask);
- offset += 4;
+ /* Forbidden Attribute Mask */
+ info_to_display(tvb,object_tree,offset,4,"Forbidden Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_forbid_att_mask);
+ offset += 4;
+
+ if (i05) {
+ /* Attribute Aggregation Rule Mask */
+ info_to_display(tvb,object_tree,offset,4,"Attribute Aggregation Rule Mask",NULL,FMT_DEC,&hf_cops_pcmm_att_aggr_rule_mask);
+ offset += 4;
+ }
}
/* Cops - Section : Unsolicited Grant Service with Activity Detection */
static void
-cops_ugs_with_activity_detection_i04(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
+cops_ugs_with_activity_detection_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset, gboolean i05) {
proto_item *ti;
proto_tree *stt, *object_tree;
@@ -4198,12 +4276,18 @@ cops_ugs_with_activity_detection_i04(tvbuff_t *tvb, proto_tree *st, guint n, gui
offset += 4;
/* Required Attribute Mask */
- info_to_display(tvb,object_tree,offset,4,"Required Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_req_att_mask);
- offset += 4;
+ info_to_display(tvb,object_tree,offset,4,"Required Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_req_att_mask);
+ offset += 4;
+
+ /* Forbidden Attribute Mask */
+ info_to_display(tvb,object_tree,offset,4,"Forbidden Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_forbid_att_mask);
+ offset += 4;
- /* Forbidden Attribute Mask */
- info_to_display(tvb,object_tree,offset,4,"Forbidden Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_forbid_att_mask);
- offset += 4;
+ if (i05) {
+ /* Attribute Aggregation Rule Mask */
+ info_to_display(tvb,object_tree,offset,4,"Attribute Aggregation Rule Mask",NULL,FMT_DEC,&hf_cops_pcmm_att_aggr_rule_mask);
+ offset += 4;
+ }
if (n < 56) return;
@@ -4243,12 +4327,18 @@ cops_ugs_with_activity_detection_i04(tvbuff_t *tvb, proto_tree *st, guint n, gui
offset += 4;
/* Required Attribute Mask */
- info_to_display(tvb,object_tree,offset,4,"Required Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_req_att_mask);
- offset += 4;
+ info_to_display(tvb,object_tree,offset,4,"Required Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_req_att_mask);
+ offset += 4;
- /* Forbidden Attribute Mask */
- info_to_display(tvb,object_tree,offset,4,"Forbidden Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_forbid_att_mask);
- offset += 4;
+ /* Forbidden Attribute Mask */
+ info_to_display(tvb,object_tree,offset,4,"Forbidden Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_forbid_att_mask);
+ offset += 4;
+
+ if (i05) {
+ /* Attribute Aggregation Rule Mask */
+ info_to_display(tvb,object_tree,offset,4,"Attribute Aggregation Rule Mask",NULL,FMT_DEC,&hf_cops_pcmm_att_aggr_rule_mask);
+ offset += 4;
+ }
if (n < 80) return;
@@ -4288,17 +4378,23 @@ cops_ugs_with_activity_detection_i04(tvbuff_t *tvb, proto_tree *st, guint n, gui
offset += 4;
/* Required Attribute Mask */
- info_to_display(tvb,object_tree,offset,4,"Required Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_req_att_mask);
- offset += 4;
+ info_to_display(tvb,object_tree,offset,4,"Required Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_req_att_mask);
+ offset += 4;
- /* Forbidden Attribute Mask */
- info_to_display(tvb,object_tree,offset,4,"Forbidden Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_forbid_att_mask);
- offset += 4;
+ /* Forbidden Attribute Mask */
+ info_to_display(tvb,object_tree,offset,4,"Forbidden Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_forbid_att_mask);
+ offset += 4;
+
+ if (i05) {
+ /* Attribute Aggregation Rule Mask */
+ info_to_display(tvb,object_tree,offset,4,"Attribute Aggregation Rule Mask",NULL,FMT_DEC,&hf_cops_pcmm_att_aggr_rule_mask);
+ offset += 4;
+ }
}
/* Cops - Section : Downstream Service */
static void
-cops_downstream_service_i04(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset) {
+cops_downstream_service_i04_i05(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offset, gboolean i05) {
proto_item *ti;
proto_tree *stt, *object_tree;
@@ -4353,16 +4449,22 @@ cops_downstream_service_i04(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offs
offset += 4;
/* Downstream Peak Traffic Rate */
- info_to_display(tvb,object_tree,offset,4,"Downstream Peak Traffic Rate",NULL,FMT_DEC,&hf_cops_pcmm_down_peak_traffic_rate);
- offset += 4;
+ info_to_display(tvb,object_tree,offset,4,"Downstream Peak Traffic Rate",NULL,FMT_DEC,&hf_cops_pcmm_down_peak_traffic_rate);
+ offset += 4;
- /* Required Attribute Mask */
- info_to_display(tvb,object_tree,offset,4,"Required Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_req_att_mask);
- offset += 4;
+ /* Required Attribute Mask */
+ info_to_display(tvb,object_tree,offset,4,"Required Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_req_att_mask);
+ offset += 4;
+
+ /* Forbidden Attribute Mask */
+ info_to_display(tvb,object_tree,offset,4,"Forbidden Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_forbid_att_mask);
+ offset += 4;
- /* Forbidden Attribute Mask */
- info_to_display(tvb,object_tree,offset,4,"Forbidden Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_forbid_att_mask);
- offset += 4;
+ if (i05) {
+ /* Attribute Aggregation Rule Mask */
+ info_to_display(tvb,object_tree,offset,4,"Attribute Aggregation Rule Mask",NULL,FMT_DEC,&hf_cops_pcmm_att_aggr_rule_mask);
+ offset += 4;
+ }
if (n < 56) return;
@@ -4406,16 +4508,22 @@ cops_downstream_service_i04(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offs
offset += 4;
/* Downstream Peak Traffic Rate */
- info_to_display(tvb,object_tree,offset,4,"Downstream Peak Traffic Rate",NULL,FMT_DEC,&hf_cops_pcmm_down_peak_traffic_rate);
- offset += 4;
+ info_to_display(tvb,object_tree,offset,4,"Downstream Peak Traffic Rate",NULL,FMT_DEC,&hf_cops_pcmm_down_peak_traffic_rate);
+ offset += 4;
- /* Required Attribute Mask */
- info_to_display(tvb,object_tree,offset,4,"Required Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_req_att_mask);
- offset += 4;
+ /* Required Attribute Mask */
+ info_to_display(tvb,object_tree,offset,4,"Required Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_req_att_mask);
+ offset += 4;
+
+ /* Forbidden Attribute Mask */
+ info_to_display(tvb,object_tree,offset,4,"Forbidden Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_forbid_att_mask);
+ offset += 4;
- /* Forbidden Attribute Mask */
- info_to_display(tvb,object_tree,offset,4,"Forbidden Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_forbid_att_mask);
- offset += 4;
+ if (i05) {
+ /* Attribute Aggregation Rule Mask */
+ info_to_display(tvb,object_tree,offset,4,"Attribute Aggregation Rule Mask",NULL,FMT_DEC,&hf_cops_pcmm_att_aggr_rule_mask);
+ offset += 4;
+ }
if (n < 80) return;
@@ -4459,16 +4567,22 @@ cops_downstream_service_i04(tvbuff_t *tvb, proto_tree *st, guint n, guint32 offs
offset += 4;
/* Downstream Peak Traffic Rate */
- info_to_display(tvb,object_tree,offset,4,"Downstream Peak Traffic Rate",NULL,FMT_DEC,&hf_cops_pcmm_down_peak_traffic_rate);
- offset += 4;
+ info_to_display(tvb,object_tree,offset,4,"Downstream Peak Traffic Rate",NULL,FMT_DEC,&hf_cops_pcmm_down_peak_traffic_rate);
+ offset += 4;
+
+ /* Required Attribute Mask */
+ info_to_display(tvb,object_tree,offset,4,"Required Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_req_att_mask);
+ offset += 4;
- /* Required Attribute Mask */
- info_to_display(tvb,object_tree,offset,4,"Required Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_req_att_mask);
- offset += 4;
+ /* Forbidden Attribute Mask */
+ info_to_display(tvb,object_tree,offset,4,"Forbidden Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_forbid_att_mask);
+ offset += 4;
- /* Forbidden Attribute Mask */
- info_to_display(tvb,object_tree,offset,4,"Forbidden Attribute Mask",NULL,FMT_DEC,&hf_cops_pcmm_forbid_att_mask);
- offset += 4;
+ if (i05) {
+ /* Attribute Aggregation Rule Mask */
+ info_to_display(tvb,object_tree,offset,4,"Attribute Aggregation Rule Mask",NULL,FMT_DEC,&hf_cops_pcmm_att_aggr_rule_mask);
+ offset += 4;
+ }
}
/* Cops - Section : Upstream Drop */
@@ -5737,38 +5851,50 @@ cops_analyze_packetcable_mm_obj(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t
cops_docsis_service_class_name(tvb, tree, object_len, offset);
break;
case PCMM_BEST_EFFORT_SERVICE:
- if (object_len == 40 || object_len == 72 || object_len == 104)
- cops_best_effort_service_i04(tvb, tree, object_len, offset);
+ if (object_len == 44 || object_len == 80 || object_len == 116)
+ cops_best_effort_service_i04_i05(tvb, tree, object_len, offset, TRUE);
+ else if (object_len == 40 || object_len == 72 || object_len == 104)
+ cops_best_effort_service_i04_i05(tvb, tree, object_len, offset, FALSE);
else
cops_best_effort_service(tvb, tree, object_len, offset);
break;
case PCMM_NON_REAL_TIME_POLLING_SERVICE:
- if (object_len == 44 || object_len == 80 || object_len == 116)
- cops_non_real_time_polling_service_i04(tvb, tree, object_len, offset);
+ if (object_len == 48 || object_len == 88 || object_len == 128)
+ cops_non_real_time_polling_service_i04_i05(tvb, tree, object_len, offset, TRUE);
+ else if (object_len == 44 || object_len == 80 || object_len == 116)
+ cops_non_real_time_polling_service_i04_i05(tvb, tree, object_len, offset, FALSE);
else
cops_non_real_time_polling_service(tvb, tree, object_len, offset);
break;
case PCMM_REAL_TIME_POLLING_SERVICE:
- if (object_len == 44 || object_len == 80 || object_len == 116)
- cops_real_time_polling_service_i04(tvb, tree, object_len, offset);
+ if (object_len == 48 || object_len == 88 || object_len == 128)
+ cops_real_time_polling_service_i04_i05(tvb, tree, object_len, offset, TRUE);
+ else if (object_len == 44 || object_len == 80 || object_len == 116)
+ cops_real_time_polling_service_i04_i05(tvb, tree, object_len, offset, FALSE);
else
cops_real_time_polling_service(tvb, tree, object_len, offset);
break;
case PCMM_UNSOLICITED_GRANT_SERVICE:
- if (object_len == 32 || object_len == 56 || object_len == 80)
- cops_unsolicited_grant_service_i04(tvb, tree, object_len, offset);
+ if (object_len == 36 || object_len == 64 || object_len == 92)
+ cops_unsolicited_grant_service_i04_i05(tvb, tree, object_len, offset, TRUE);
+ else if (object_len == 32 || object_len == 56 || object_len == 80)
+ cops_unsolicited_grant_service_i04_i05(tvb, tree, object_len, offset, FALSE);
else
cops_unsolicited_grant_service(tvb, tree, object_len, offset);
break;
case PCMM_UGS_WITH_ACTIVITY_DETECTION:
- if (object_len == 40 || object_len == 72 || object_len == 104)
- cops_ugs_with_activity_detection_i04(tvb, tree, object_len, offset);
+ if (object_len == 44 || object_len == 80 || object_len == 116)
+ cops_ugs_with_activity_detection_i04_i05(tvb, tree, object_len, offset, TRUE);
+ else if (object_len == 40 || object_len == 72 || object_len == 104)
+ cops_ugs_with_activity_detection_i04_i05(tvb, tree, object_len, offset, FALSE);
else
cops_ugs_with_activity_detection(tvb, tree, object_len, offset);
break;
case PCMM_DOWNSTREAM_SERVICE:
- if (object_len == 40 || object_len == 72 || object_len == 104)
- cops_downstream_service_i04(tvb, tree, object_len, offset);
+ if (object_len == 44 || object_len == 80 || object_len == 116)
+ cops_downstream_service_i04_i05(tvb, tree, object_len, offset, TRUE);
+ else if (object_len == 40 || object_len == 72 || object_len == 104)
+ cops_downstream_service_i04_i05(tvb, tree, object_len, offset, FALSE);
else
cops_downstream_service(tvb, tree, object_len, offset);
break;