aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBruno Verstuyft <bruno.verstuyft@excentis.com>2018-11-30 14:45:34 +0100
committerAnders Broman <a.broman58@gmail.com>2018-11-30 15:05:14 +0000
commit92a855fd7d2e2bdca1763412ef798e77748909b8 (patch)
tree0e1710d7c75268a79de7a72f44195573a47e0dd3
parent00a375dfbaf195fad946edeb6efbf3ac3cd3cfb5 (diff)
DOCSIS: Added Modem Capabilities 47-51
Change-Id: I66efc73bb27d8703872b9477c86bf7471446a32a Reviewed-on: https://code.wireshark.org/review/30846 Petri-Dish: Anders Broman <a.broman58@gmail.com> Tested-by: Petri Dish Buildbot Reviewed-by: Anders Broman <a.broman58@gmail.com>
-rw-r--r--epan/dissectors/packet-docsis-tlv.c112
-rw-r--r--epan/dissectors/packet-docsis-tlv.h5
2 files changed, 117 insertions, 0 deletions
diff --git a/epan/dissectors/packet-docsis-tlv.c b/epan/dissectors/packet-docsis-tlv.c
index a20b257058..f009ad3ac7 100644
--- a/epan/dissectors/packet-docsis-tlv.c
+++ b/epan/dissectors/packet-docsis-tlv.c
@@ -164,6 +164,13 @@ static int hf_docsis_tlv_mcap_em = -1;
static int hf_docsis_tlv_mcap_em_1x1 = -1;
static int hf_docsis_tlv_mcap_em_light_sleep = -1;
static int hf_docsis_tlv_mcap_cm_status_ack = -1;
+static int hf_docsis_tlv_mcap_em_pref = -1;
+static int hf_docsis_tlv_mcap_em_pref_1x1 = -1;
+static int hf_docsis_tlv_mcap_em_pref_dls = -1;
+static int hf_docsis_tlv_mcap_ext_pkt_len_sup_cap = -1;
+static int hf_docsis_tlv_mcap_ofdm_mult_recv_chan_sup = -1;
+static int hf_docsis_tlv_mcap_ofdma_mult_trans_chan_sup = -1;
+static int hf_docsis_tlv_mcap_down_ofdm_prof_sup = -1;
static int hf_docsis_tlv_clsfr_ref = -1;
static int hf_docsis_tlv_clsfr_id = -1;
@@ -432,6 +439,7 @@ static gint ett_docsis_tlv = -1;
static gint ett_docsis_tlv_cos = -1;
static gint ett_docsis_tlv_mcap = -1;
static gint ett_docsis_tlv_mcap_em = -1;
+static gint ett_docsis_tlv_mcap_em_pref = -1;
static gint ett_docsis_tlv_clsfr = -1;
static gint ett_docsis_tlv_clsfr_ip = -1;
static gint ett_docsis_tlv_clsfr_ip6 = -1;
@@ -2628,6 +2636,67 @@ dissect_modemcap (tvbuff_t * tvb, packet_info* pinfo, proto_tree * tree, int sta
expert_add_info_format(pinfo, mcap_item, &ei_docsis_tlv_tlvlen_bad, "Wrong TLV length: %u", length);
}
break;
+ case CAP_EM_PREF:
+ if (length == 4)
+ {
+ static const gint *em_pref[] = {
+ &hf_docsis_tlv_mcap_em_pref_1x1,
+ &hf_docsis_tlv_mcap_em_pref_dls,
+ NULL
+ };
+
+ proto_tree_add_bitmask(mcap_tree, tvb, pos, hf_docsis_tlv_mcap_em_pref,
+ ett_docsis_tlv_mcap_em_pref, em_pref, ENC_BIG_ENDIAN);
+ }
+ else
+ {
+ expert_add_info_format(pinfo, mcap_item, &ei_docsis_tlv_tlvlen_bad, "Wrong TLV length: %u", length);
+ }
+ break;
+ case CAP_EXT_PKT_LEN_SUP_CAP:
+ if (length == 2)
+ {
+ proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_ext_pkt_len_sup_cap, tvb,
+ pos, length, ENC_BIG_ENDIAN);
+ }
+ else
+ {
+ expert_add_info_format(pinfo, mcap_item, &ei_docsis_tlv_tlvlen_bad, "Wrong TLV length: %u", length);
+ }
+ break;
+ case CAP_OFDM_MULT_RECV_CHAN_SUP:
+ if (length == 1)
+ {
+ proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_ofdm_mult_recv_chan_sup, tvb,
+ pos, length, ENC_BIG_ENDIAN);
+ }
+ else
+ {
+ expert_add_info_format(pinfo, mcap_item, &ei_docsis_tlv_tlvlen_bad, "Wrong TLV length: %u", length);
+ }
+ break;
+ case CAP_OFDMA_MULT_TRANS_CHAN_SUP:
+ if (length == 1)
+ {
+ proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_ofdma_mult_trans_chan_sup, tvb,
+ pos, length, ENC_BIG_ENDIAN);
+ }
+ else
+ {
+ expert_add_info_format(pinfo, mcap_item, &ei_docsis_tlv_tlvlen_bad, "Wrong TLV length: %u", length);
+ }
+ break;
+ case CAP_DOWN_OFDM_PROF_SUP:
+ if (length == 1)
+ {
+ proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_down_ofdm_prof_sup, tvb,
+ pos, length, ENC_BIG_ENDIAN);
+ }
+ else
+ {
+ expert_add_info_format(pinfo, mcap_item, &ei_docsis_tlv_tlvlen_bad, "Wrong TLV length: %u", length);
+ }
+ break;
default:
proto_tree_add_item (mcap_tree, hf_docsis_tlv_unknown, tvb, pos, length, ENC_NA);
break;
@@ -5446,6 +5515,48 @@ proto_register_docsis_tlv (void)
FT_UINT8, BASE_DEC, VALS(sup_unsup_vals), 0x0,
"CM_STATUS_ACK", HFILL}
},
+ {&hf_docsis_tlv_mcap_em_pref,
+ {".47 Energy Management Preference",
+ "docsis_tlv.mcap.em_pref",
+ FT_UINT32, BASE_HEX, NULL, 0x0,
+ "Energy Management Preference", HFILL}
+ },
+ {&hf_docsis_tlv_mcap_em_pref_1x1,
+ {"Energy Management 1x1 Feature",
+ "docsis_tlv.mcap.em_pref.1x1",
+ FT_BOOLEAN, 32, NULL, 0x1,
+ NULL, HFILL}
+ },
+ {&hf_docsis_tlv_mcap_em_pref_dls,
+ {"DOCSIS Light Sleep Mode",
+ "docsis_tlv.mcap.em_pref.dls",
+ FT_BOOLEAN, 32, NULL, 0x2,
+ NULL, HFILL}
+ },
+ {&hf_docsis_tlv_mcap_ext_pkt_len_sup_cap,
+ {".48 Extended Packet Length Support Capability",
+ "docsis_tlv.mcap.ext_pkt_len_sup_cap",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ "Extended Packet Length Support Capability", HFILL}
+ },
+ {&hf_docsis_tlv_mcap_ofdm_mult_recv_chan_sup,
+ {".49 OFDM Multiple Receive Channel Support",
+ "docsis_tlv.mcap.ofdm_mult_recv_chan_sup",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "OFDM Multiple Receive Channel Support", HFILL}
+ },
+ {&hf_docsis_tlv_mcap_ofdma_mult_trans_chan_sup,
+ {".50 OFDMA Multiple Transmit Channel Support",
+ "docsis_tlv.mcap.ofdma_mult_trans_chan_sup",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "OFDMA Multiple Transmit Channel Support", HFILL}
+ },
+ {&hf_docsis_tlv_mcap_down_ofdm_prof_sup,
+ {".51 Downstream OFDM Profile Support",
+ "docsis_tlv.mcap.down_ofdm_prof_sup",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Downstream OFDM Profile Support", HFILL}
+ },
{&hf_docsis_tlv_cm_mic,
{"6 CM MIC", "docsis_tlv.cmmic",
FT_BYTES, BASE_NONE, NULL, 0x0,
@@ -6914,6 +7025,7 @@ proto_register_docsis_tlv (void)
&ett_docsis_tlv_cos,
&ett_docsis_tlv_mcap,
&ett_docsis_tlv_mcap_em,
+ &ett_docsis_tlv_mcap_em_pref,
&ett_docsis_tlv_clsfr,
&ett_docsis_tlv_clsfr_ip,
&ett_docsis_tlv_clsfr_ip6,
diff --git a/epan/dissectors/packet-docsis-tlv.h b/epan/dissectors/packet-docsis-tlv.h
index 781bdd1d60..fde9c8c4a7 100644
--- a/epan/dissectors/packet-docsis-tlv.h
+++ b/epan/dissectors/packet-docsis-tlv.h
@@ -147,6 +147,11 @@
#define CAP_EXT_US_TRNS_PWR 40
#define CAP_EM 44
#define CAP_CM_STATUS_ACK 46
+#define CAP_EM_PREF 47
+#define CAP_EXT_PKT_LEN_SUP_CAP 48
+#define CAP_OFDM_MULT_RECV_CHAN_SUP 49
+#define CAP_OFDMA_MULT_TRANS_CHAN_SUP 50
+#define CAP_DOWN_OFDM_PROF_SUP 51
/* Define Classifier subtypes
* These are subtypes of either: