DOCSIS: Added some additional tlvs

TLV 26.13 PHS Dynamic Bonding Change Action
TLV 48.4.2 Receive Module Adjacent Channels
TLV 64.3 Static Multicast CMIM Encoding

Change-Id: I3a48e0092e7fe523adfdff5b155dcdbb88720f41
Reviewed-on: https://code.wireshark.org/review/30997
Petri-Dish: Anders Broman <a.broman58@gmail.com>
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Tested-by: Petri Dish Buildbot
Reviewed-by: Jaap Keuter <jaap.keuter@xs4all.nl>
This commit is contained in:
Bruno Verstuyft 2018-12-10 16:29:27 +01:00 committed by Jaap Keuter
parent 3f01aaac49
commit cb8c791f07
2 changed files with 51 additions and 3 deletions

View File

@ -327,6 +327,7 @@ static int hf_docsis_tlv_phs_phsm = -1;
/* static int hf_docsis_tlv_phs_phsv = -1; */
static int hf_docsis_tlv_phs_phsi = -1;
static int hf_docsis_tlv_phs_phss = -1;
static int hf_docsis_tlv_phs_dbc_action = -1;
static int hf_docsis_tlv_phs_vendorspec = -1;
static int hf_docsis_tlv_phs_err_param = -1;
@ -395,7 +396,7 @@ static int hf_docsis_tlv_rcp_freq_spc = -1;
/* static int hf_docsis_tlv_rcp_ven_spec = -1; */
static int hf_docsis_rcv_mod_enc_idx = -1;
/* static int hf_docsis_rcv_mod_enc_adj_ch = -1; */
static int hf_docsis_rcv_mod_enc_adj_ch = -1;
/* static int hf_docsis_rcv_mod_enc_ch_bl_rng = -1; */
static int hf_docsis_rcv_mod_enc_ctr_freq_asgn = -1;
static int hf_docsis_rcv_mod_enc_rsq_ch_subs_cap = -1;
@ -465,6 +466,7 @@ static int hf_docsis_ch_asgn_rx_freq = -1;
static int hf_docsis_cmts_mc_sess_enc_grp = -1;
static int hf_docsis_cmts_mc_sess_enc_src = -1;
static int hf_docsis_cmts_mc_sess_enc_cmim = -1;
static int hf_docsis_tlv_em_mode_ind = -1;
@ -643,6 +645,12 @@ static const value_string action_vals[] = {
{0, NULL},
};
static const value_string dbc_action_vals[] = {
{0, "Add PHS Rule"},
{1, "Delete PHS Rule"},
{0, NULL},
};
#if 0
static const true_false_string verify_tfs = {
"Don't Verify",
@ -1139,6 +1147,17 @@ dissect_phs (tvbuff_t * tvb, packet_info *pinfo, proto_tree * tree, int start, g
expert_add_info_format(pinfo, phs_item, &ei_docsis_tlv_tlvlen_bad, "Wrong TLV length: %u", length);
}
break;
case PHS_DBC_ACTION:
if (length == 1)
{
proto_tree_add_item (phs_tree, hf_docsis_tlv_phs_dbc_action, tvb, pos,
length, ENC_NA);
}
else
{
expert_add_info_format(pinfo, phs_item, &ei_docsis_tlv_tlvlen_bad, "Wrong TLV length: %u", length);
}
break;
case PHS_VENDOR_SPEC:
proto_tree_add_item (phs_tree, hf_docsis_tlv_phs_vendorspec, tvb,
pos, length, ENC_NA);
@ -4040,6 +4059,18 @@ dissect_rcp_rcv_mod(tvbuff_t * tvb, packet_info* pinfo, proto_tree *tree, int st
expert_add_info_format(pinfo, rcvmod_item, &ei_docsis_tlv_tlvlen_bad, "Wrong TLV length: %u", length);
}
break;
case RCV_MOD_ENC_ADJ_CH:
if (length == 1)
{
proto_tree_add_item (rcvmod_tree,
hf_docsis_rcv_mod_enc_adj_ch, tvb, pos,
length, ENC_BIG_ENDIAN);
}
else
{
expert_add_info_format(pinfo, rcvmod_item, &ei_docsis_tlv_tlvlen_bad, "Wrong TLV length: %u", length);
}
break;
case RCV_MOD_ENC_CH_BL_RNG:
dissect_ch_bl_rng(tvb, pinfo, rcvmod_tree, pos, length);
break;
@ -4088,7 +4119,7 @@ dissect_rcp_rcv_ch(tvbuff_t * tvb, packet_info* pinfo, proto_tree *tree, int sta
rcvch_tree =
proto_tree_add_subtree_format(tree, tvb, start, len, ett_docsis_tlv_rcp_rcv_ch, &rcvch_item,
"Receive Channels (Length = %u)", len);
".5 Receive Channels (Length = %u)", len);
while (pos < (start + len))
{
@ -5010,6 +5041,11 @@ dissect_cmts_mc_sess_enc(tvbuff_t * tvb, packet_info* pinfo, proto_tree *tree, i
expert_add_info_format(pinfo, mc_item, &ei_docsis_tlv_tlvlen_bad, "Wrong TLV length: %u", length);
}
break;
case CMTS_MC_SESS_ENC_CMIM:
proto_tree_add_item (mc_tree,
hf_docsis_cmts_mc_sess_enc_cmim, tvb, pos,
length, ENC_NA);
break;
default:
dissect_unknown_tlv (tvb, pinfo, mc_tree, pos - 2, length + 2);
break;
@ -6824,6 +6860,11 @@ proto_register_docsis_tlv (void)
FT_UINT8, BASE_DEC, NULL, 0x0,
"PHS Size", HFILL}
},
{&hf_docsis_tlv_phs_dbc_action,
{".13 PHS Dynamic Bonding Change Action", "docsis_tlv.phs.dbc_action",
FT_UINT8, BASE_DEC, VALS (dbc_action_vals), 0x0,
"PHS Dynamic Bonding Change Action", HFILL}
},
#if 0
{&hf_docsis_tlv_phs_phsv,
{".11 PHS Verify", "docsis_tlv.phs.phsv",
@ -7227,12 +7268,12 @@ proto_register_docsis_tlv (void)
FT_UINT8, BASE_DEC, NULL, 0x0,
"Receive Module Index", HFILL}
},
#if 0
{&hf_docsis_rcv_mod_enc_adj_ch,
{"..2 Adjacent Channels", "docsis_tlv.rcp.rcv_mod_enc.adj_ch",
FT_UINT8, BASE_DEC, NULL, 0x0,
"Adjacent Channels", HFILL}
},
#if 0
{&hf_docsis_rcv_mod_enc_ch_bl_rng,
{"..3 Channel Block Range", "docsis_tlv.rcp.rcv_mod_enc.ch_bl_rng",
FT_BYTES, BASE_NONE, NULL, 0x0,
@ -7611,6 +7652,11 @@ proto_register_docsis_tlv (void)
FT_IPXNET, BASE_NONE, NULL, 0x0,
"Source IP Address", HFILL}
},
{&hf_docsis_cmts_mc_sess_enc_cmim,
{".3 CMIM", "docsis_tlv.cmts_mc_sess_enc.cmim",
FT_BYTES, BASE_NONE, NULL, 0x0,
"CMIM", HFILL}
},
{&hf_docsis_tlv_em_mode_ind,
{"75 Energy Management Mode Indicator", "docsis_tlv.em_mode_ind",
FT_UINT8, BASE_DEC, VALS(em_mode_ind_vals), 0x0,

View File

@ -296,6 +296,7 @@
#define PHS_MASK 9
#define PHS_SUP_SIZE 10
#define PHS_VERIFICATION 11
#define PHS_DBC_ACTION 13
#define PHS_VENDOR_SPEC 43
/* Define PHS Error sub-subtypes
@ -507,6 +508,7 @@
*/
#define CMTS_MC_SESS_ENC_GRP 1
#define CMTS_MC_SESS_ENC_SRC 2
#define CMTS_MC_SESS_ENC_CMIM 3
extern value_string_ext docsis_conf_code_ext;