From 247e729d9e4262fbcd6af8fafd474eb1af480d2a Mon Sep 17 00:00:00 2001 From: Bruno Verstuyft Date: Thu, 6 Dec 2018 17:05:25 +0100 Subject: DOCSIS: Added Partial Service Downstream Channels TLV 49.6 Change-Id: Iac09d71a56024440a826ff9ca870c05eeee3a77b Reviewed-on: https://code.wireshark.org/review/30942 Reviewed-by: Anders Broman Petri-Dish: Anders Broman Tested-by: Petri Dish Buildbot Reviewed-by: Jaap Keuter --- epan/dissectors/packet-docsis-tlv.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'epan/dissectors/packet-docsis-tlv.c') 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; @@ -4307,6 +4309,25 @@ dissect_rcc_rcv_ch(tvbuff_t * tvb, packet_info* pinfo, proto_tree *tree, int sta } /* while */ } +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) { @@ -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, -- cgit v1.2.3