aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBruno Verstuyft <bruno.verstuyft@excentis.com>2018-12-06 17:05:25 +0100
committerJaap Keuter <jaap.keuter@xs4all.nl>2018-12-06 20:47:11 +0000
commit247e729d9e4262fbcd6af8fafd474eb1af480d2a (patch)
tree08813c0e1cd8db55e9fc6625d78276c9d1f2e9a5
parent0946518780bc260d0668485b3f6f7e1d14325a7b (diff)
DOCSIS: Added Partial Service Downstream Channels TLV 49.6
Change-Id: Iac09d71a56024440a826ff9ca870c05eeee3a77b Reviewed-on: https://code.wireshark.org/review/30942 Reviewed-by: Anders Broman <a.broman58@gmail.com> Petri-Dish: Anders Broman <a.broman58@gmail.com> Tested-by: Petri Dish Buildbot Reviewed-by: Jaap Keuter <jaap.keuter@xs4all.nl>
-rw-r--r--epan/dissectors/packet-docsis-tlv.c30
-rw-r--r--epan/dissectors/packet-docsis-tlv.h1
2 files changed, 31 insertions, 0 deletions
diff --git a/epan/dissectors/packet-docsis-tlv.c b/epan/dissectors/packet-docsis-tlv.c
index b59b267434..9df2dc104d 100644
--- a/epan/dissectors/packet-docsis-tlv.c
+++ b/epan/dissectors/packet-docsis-tlv.c
@@ -420,6 +420,7 @@ static int hf_docsis_rcc_rcv_ch_ctr_freq_asgn = -1;
static int hf_docsis_rcc_rcv_ch_prim_ds_ch_ind = -1;
static int hf_docsis_tlv_rcc_id = -1;
+static int hf_docsis_tlv_rcc_partial_serv_down_chan_id = -1;
static int hf_docsis_tlv_rcc_srcc_prim_ds_chan_assign_ds_ch_id = -1;
static int hf_docsis_tlv_rcc_srcc_ds_chan_assign_ds_ch_id = -1;
static int hf_docsis_tlv_rcc_srcc_ds_prof_assign_dcid = -1;
@@ -535,6 +536,7 @@ static gint ett_docsis_tlv_rcp_rcv_ch = -1;
static gint ett_docsis_tlv_rcc = -1;
static gint ett_docsis_tlv_rcc_rcv_mod_enc = -1;
static gint ett_docsis_tlv_rcc_rcv_ch = -1;
+static gint ett_docsis_tlv_rcc_partial_serv_down_chan = -1;
static gint ett_docsis_tlv_rcc_srcc = -1;
static gint ett_docsis_tlv_rcc_srcc_prim_ds_assign = -1;
static gint ett_docsis_tlv_rcc_srcc_ds_assign = -1;
@@ -4308,6 +4310,25 @@ dissect_rcc_rcv_ch(tvbuff_t * tvb, packet_info* pinfo, proto_tree *tree, int sta
}
static void
+dissect_rcc_partial_serv_down_chan(tvbuff_t * tvb, proto_tree *tree, int start, guint16 len)
+{
+ proto_tree *rcc_partial_serv_down_chan_tree;
+ proto_item *rcc_partial_serv_down_chan_item;
+ int pos = start;
+ int i = 0;
+
+ rcc_partial_serv_down_chan_tree =
+ proto_tree_add_subtree_format(tree, tvb, start, len, ett_docsis_tlv_rcc_partial_serv_down_chan, &rcc_partial_serv_down_chan_item,
+ ".6 Partial Service Downstream Channels (Length = %u)", len);
+ for (i=0; i< len; ++i)
+ {
+ proto_tree_add_item (rcc_partial_serv_down_chan_tree,
+ hf_docsis_tlv_rcc_partial_serv_down_chan_id, tvb, pos+i,
+ 1, ENC_BIG_ENDIAN);
+ }
+}
+
+static void
dissect_rcc_srcc_prim_ds_ch_assign(tvbuff_t * tvb, proto_tree *tree, int start, guint16 len)
{
proto_tree *rcc_srcc_prim_ds_assign_tree;
@@ -4559,6 +4580,9 @@ dissect_rcc(tvbuff_t * tvb, packet_info * pinfo,
vsif_tvb = tvb_new_subset_length (tvb, pos, length);
call_dissector (docsis_vsif_handle, vsif_tvb, pinfo, rcc_tree);
break;
+ case TLV_RCC_PARTIAL_SERV_DOWN_CHAN:
+ dissect_rcc_partial_serv_down_chan(tvb, rcc_tree, pos, length);
+ break;
case TLV_RCC_SRCC:
dissect_rcc_srcc(tvb, pinfo, rcc_tree, pos, length);
break;
@@ -7322,6 +7346,11 @@ proto_register_docsis_tlv (void)
"RCC Error Encodings", HFILL}
},
#endif
+ {&hf_docsis_tlv_rcc_partial_serv_down_chan_id,
+ {"Downstream Channel ID", "docsis_tlv.rcc.partial_serv_down_chan.ds_ch_id",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}
+ },
{&hf_docsis_tlv_rcc_srcc_prim_ds_chan_assign_ds_ch_id,
{"Downstream Channel ID", "docsis_tlv.rcc.srcc.prim_ds_chann_assign.ds_ch_id",
FT_UINT8, BASE_DEC, NULL, 0x0,
@@ -7675,6 +7704,7 @@ proto_register_docsis_tlv (void)
&ett_docsis_tlv_rcc,
&ett_docsis_tlv_rcc_rcv_mod_enc,
&ett_docsis_tlv_rcc_rcv_ch,
+ &ett_docsis_tlv_rcc_partial_serv_down_chan,
&ett_docsis_tlv_rcc_srcc,
&ett_docsis_tlv_rcc_srcc_prim_ds_assign,
&ett_docsis_tlv_rcc_srcc_ds_assign,
diff --git a/epan/dissectors/packet-docsis-tlv.h b/epan/dissectors/packet-docsis-tlv.h
index 9c1df399d6..720487f219 100644
--- a/epan/dissectors/packet-docsis-tlv.h
+++ b/epan/dissectors/packet-docsis-tlv.h
@@ -407,6 +407,7 @@
/* Define TLV_RCC sub-types
* These are subtypes of TLV_RCP (49), and not common with TLV_RCP (48)
*/
+#define TLV_RCC_PARTIAL_SERV_DOWN_CHAN 6
#define TLV_RCC_SRCC 7
#define TLV_RCC_PRIM_DOWN_CHAN 8