diff options
-rw-r--r-- | plugins/docsis/packet-tlv.c | 565 | ||||
-rw-r--r-- | plugins/docsis/packet-tlv.h | 28 |
2 files changed, 593 insertions, 0 deletions
diff --git a/plugins/docsis/packet-tlv.c b/plugins/docsis/packet-tlv.c index 9adf80ddad..2cf0d88ebc 100644 --- a/plugins/docsis/packet-tlv.c +++ b/plugins/docsis/packet-tlv.c @@ -131,6 +131,44 @@ static int hf_docsis_tlv_mcap_8021Q_filter = -1; static int hf_docsis_tlv_mcap_xmit_eq_taps_per_sym = -1; static int hf_docsis_tlv_mcap_xmit_eq_taps = -1; static int hf_docsis_tlv_mcap_dcc = -1; +static int hf_docsis_tlv_mcap_ip_filters = -1; +static int hf_docsis_tlv_mcap_llc_filters = -1; +static int hf_docsis_tlv_mcap_exp_unicast_sid = -1; +static int hf_docsis_tlv_mcap_rnghoff_cm = -1; +static int hf_docsis_tlv_mcap_rnghoff_erouter = -1; +static int hf_docsis_tlv_mcap_rnghoff_emta = -1; +static int hf_docsis_tlv_mcap_rnghoff_estb = -1; +static int hf_docsis_tlv_mcap_l2vpn = -1; +static int hf_docsis_tlv_mcap_l2vpn_esafe = -1; +static int hf_docsis_tlv_mcap_dut_filtering = -1; +static int hf_docsis_tlv_mcap_us_freq_range = -1; +static int hf_docsis_tlv_mcap_us_srate_160 = -1; +static int hf_docsis_tlv_mcap_us_srate_320 = -1; +static int hf_docsis_tlv_mcap_us_srate_640 = -1; +static int hf_docsis_tlv_mcap_us_srate_1280 = -1; +static int hf_docsis_tlv_mcap_us_srate_2560 = -1; +static int hf_docsis_tlv_mcap_us_srate_5120 = -1; +static int hf_docsis_tlv_mcap_sac = -1; +static int hf_docsis_tlv_mcap_code_hop_mode2 = -1; +static int hf_docsis_tlv_mcap_mtc = -1; +static int hf_docsis_tlv_mcap_512_msps_utc = -1; +static int hf_docsis_tlv_mcap_256_msps_utc = -1; +static int hf_docsis_tlv_mcap_total_sid_cluster = -1; +static int hf_docsis_tlv_mcap_sid_per_sf = -1; +static int hf_docsis_tlv_mcap_mrc = -1; +static int hf_docsis_tlv_mcap_total_dsid = -1; +static int hf_docsis_tlv_mcap_reseq_dsid = -1; +static int hf_docsis_tlv_mcap_mc_dsid = -1; +static int hf_docsis_tlv_mcap_mc_dsid_fwd = -1; +static int hf_docsis_tlv_mcap_fctype_fwd = -1; +static int hf_docsis_tlv_mcap_dpv_path = -1; +static int hf_docsis_tlv_mcap_dpv_packet = -1; +static int hf_docsis_tlv_mcap_ugs = -1; +static int hf_docsis_tlv_mcap_map_ucd = -1; +static int hf_docsis_tlv_mcap_udc = -1; +static int hf_docsis_tlv_mcap_ipv6 = -1; +static int hf_docsis_tlv_mcap_ext_us_trans_power = -1; + static int hf_docsis_tlv_clsfr_ref = -1; static int hf_docsis_tlv_clsfr_id = -1; @@ -580,6 +618,24 @@ static const value_string init_reason_vals[] = { {0, NULL}, }; +static const value_string docsis_freq_rng_vals[] = { + {0, "Standard Upstream Frequency Range"}, + {1, "Standard and Extended Upstream Frequency Range"}, + {0, NULL}, +}; + +static const value_string mc_dsid_fwd_vals[] = { + {0, "Support for GMAC explicit multicast DCID Forwarding"}, + {1, "Support for GMAC promiscuous multicast DCID Forwarding"}, + {0, NULL}, +}; + +static const value_string fctype_fwd_vals[] = { + {0, "Isolation Packet PDU Header (FC_Type of 10) is not forwarded"}, + {1, "Isolation Packet PDU Header (FC_Type of 10) is forwarded"}, + {0, NULL}, +}; + /* Code to actually dissect the packets */ static void dissect_phs_err (tvbuff_t * tvb, proto_tree * tree, int start, @@ -1848,6 +1904,311 @@ dissect_modemcap (tvbuff_t * tvb, proto_tree * tree, int start, THROW (ReportedBoundsError); } break; + case CAP_IP_FILTERS: + if (length == 2) + { + proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_ip_filters, tvb, + pos, length, FALSE); + } + else + { + THROW (ReportedBoundsError); + } + break; + case CAP_LLC_FILTERS: + if (length == 2) + { + proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_llc_filters, tvb, + pos, length, FALSE); + } + else + { + THROW (ReportedBoundsError); + } + break; + case CAP_EXP_UNICAST_SID: + if (length == 1) + { + proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_exp_unicast_sid, tvb, + pos, length, FALSE); + } + else + { + THROW (ReportedBoundsError); + } + break; + case CAP_RNG_HOFF: + if (length == 4) + { + proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_rnghoff_cm, tvb, + pos, length, FALSE); + proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_rnghoff_erouter, tvb, + pos, length, FALSE); + proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_rnghoff_emta, tvb, + pos, length, FALSE); + proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_rnghoff_estb, tvb, + pos, length, FALSE); + } + else + { + THROW (ReportedBoundsError); + } + break; + case CAP_L2VPN: + proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_l2vpn, tvb, + pos, length, FALSE); + break; + case CAP_L2VPN_ESAFE: + proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_l2vpn_esafe, tvb, + pos, length, FALSE); + break; + case CAP_DUT_FILTERING: + proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_dut_filtering, tvb, + pos, length, FALSE); + break; + case CAP_US_FREQ_RNG: + if (length == 1) + { + proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_us_freq_range, tvb, + pos, length, FALSE); + } + else + { + THROW (ReportedBoundsError); + } + break; + case CAP_US_SRATE: + if (length == 1) + { + proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_us_srate_160, tvb, + pos, length, FALSE); + proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_us_srate_320, tvb, + pos, length, FALSE); + proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_us_srate_640, tvb, + pos, length, FALSE); + proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_us_srate_1280, tvb, + pos, length, FALSE); + proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_us_srate_2560, tvb, + pos, length, FALSE); + proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_us_srate_5120, tvb, + pos, length, FALSE); + } + else + { + THROW (ReportedBoundsError); + } + break; + case CAP_SAC: + if (length == 1) + { + proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_sac, tvb, + pos, length, FALSE); + } + else + { + THROW (ReportedBoundsError); + } + break; + case CAP_CODE_HOP_M2: + if (length == 1) + { + proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_code_hop_mode2, tvb, + pos, length, FALSE); + } + else + { + THROW (ReportedBoundsError); + } + break; + case CAP_MTC: + if (length == 1) + { + proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_mtc, tvb, + pos, length, FALSE); + } + else + { + THROW (ReportedBoundsError); + } + break; + case CAP_512_MSPS_UTC: + if (length == 1) + { + proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_512_msps_utc, tvb, + pos, length, FALSE); + } + else + { + THROW (ReportedBoundsError); + } + break; + case CAP_256_MSPS_UTC: + if (length == 1) + { + proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_256_msps_utc, tvb, + pos, length, FALSE); + } + else + { + THROW (ReportedBoundsError); + } + break; + case CAP_TOTAL_SID_CLUST: + if (length == 1) + { + proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_total_sid_cluster, tvb, + pos, length, FALSE); + } + else + { + THROW (ReportedBoundsError); + } + break; + case CAP_SID_PER_SF: + if (length == 1) + { + proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_sid_per_sf, tvb, + pos, length, FALSE); + } + else + { + THROW (ReportedBoundsError); + } + break; + case CAP_MRC: + if (length == 1) + { + proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_mrc, tvb, + pos, length, FALSE); + } + else + { + THROW (ReportedBoundsError); + } + break; + case CAP_TOTAL_DSID: + if (length == 1) + { + proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_total_dsid, tvb, + pos, length, FALSE); + } + else + { + THROW (ReportedBoundsError); + } + break; + case CAP_RESEQ_DSID: + if (length == 1) + { + proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_reseq_dsid, tvb, + pos, length, FALSE); + } + else + { + THROW (ReportedBoundsError); + } + break; + case CAP_MC_DSID: + if (length == 1) + { + proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_mc_dsid, tvb, + pos, length, FALSE); + } + else + { + THROW (ReportedBoundsError); + } + break; + case CAP_MC_DSID_FWD: + if (length == 1) + { + proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_mc_dsid_fwd, tvb, + pos, length, FALSE); + } + else + { + THROW (ReportedBoundsError); + } + break; + case CAP_FCTYPE_FWD: + if (length == 1) + { + proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_fctype_fwd, tvb, + pos, length, FALSE); + } + else + { + THROW (ReportedBoundsError); + } + break; + case CAP_DPV: + if (length == 1) + { + proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_dpv_path, tvb, + pos, length, FALSE); + proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_dpv_packet, tvb, + pos, length, FALSE); + } + else + { + THROW (ReportedBoundsError); + } + break; + case CAP_UGS: + if (length == 1) + { + proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_ugs, tvb, + pos, length, FALSE); + } + else + { + THROW (ReportedBoundsError); + } + break; + case CAP_MAP_UCD: + if (length == 1) + { + proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_map_ucd, tvb, + pos, length, FALSE); + } + else + { + THROW (ReportedBoundsError); + } + break; + case CAP_UDC: + if (length == 2) + { + proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_udc, tvb, + pos, length, FALSE); + } + else + { + THROW (ReportedBoundsError); + } + break; + case CAP_IPV6: + if (length == 1) + { + proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_ipv6, tvb, + pos, length, FALSE); + } + else + { + THROW (ReportedBoundsError); + } + break; + case CAP_EXT_US_TRNS_PWR: + if (length == 1) + { + proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_ext_us_trans_power, tvb, + pos, length, FALSE); + } + else + { + THROW (ReportedBoundsError); + } + break; } /* switch (type) */ pos = pos + length; } /* while (pos < pos+len) */ @@ -4102,6 +4463,210 @@ proto_register_docsis_tlv (void) FT_BOOLEAN, BASE_NONE, TFS (&on_off_tfs), 0x0, "DCC Support", HFILL} }, + {&hf_docsis_tlv_mcap_ip_filters, + {".13 IP Filters Support","docsis_tlv.mcap.ipfilters", + FT_UINT16, BASE_DEC, NULL, 0x0, + "IP Filters Support", HFILL} + }, + {&hf_docsis_tlv_mcap_llc_filters, + {".14 LLC Filters Support","docsis_tlv.mcap.llcfilters", + FT_UINT16, BASE_DEC, NULL, 0x0, + "LLC Filters Support", HFILL} + }, + {&hf_docsis_tlv_mcap_exp_unicast_sid, + {".15 Expanded Unicast SID Space","docsis_tlv.mcap.exucsid", + FT_BOOLEAN, BASE_NONE, TFS (&on_off_tfs), 0x0, + "Expanded Unicast SID Space", HFILL} + }, + {&hf_docsis_tlv_mcap_rnghoff_cm, + {".16 Ranging Hold-Off (CM)","docsis_tlv.mcap.rnghoffcm", + FT_UINT32, BASE_DEC, VALS (on_off_vals), 0x1, + "Ranging Hold-Off (CM)", HFILL} + }, + {&hf_docsis_tlv_mcap_rnghoff_erouter, + {".16 Ranging Hold-Off (ePS or eRouter)", + "docsis_tlv.mcap.rnghofferouter", + FT_UINT32, BASE_DEC, VALS (on_off_vals), 0x2, + "Ranging Hold-Off (ePS or eRouter)", HFILL} + }, + {&hf_docsis_tlv_mcap_rnghoff_emta, + {".16 Ranging Hold-Off (eMTA or EDVA)", + "docsis_tlv.mcap.rnghoffemta", + FT_UINT32, BASE_DEC, VALS (on_off_vals), 0x4, + "Ranging Hold-Off (eMTA or EDVA)", HFILL} + }, + {&hf_docsis_tlv_mcap_rnghoff_estb, + {".16 Ranging Hold-Off (DSG/eSTB)", + "docsis_tlv.mcap.rnghoffestb", + FT_UINT32, BASE_DEC, VALS (on_off_vals), 0x8, + "Ranging Hold-Off (DSG/eSTB)", HFILL} + }, + {&hf_docsis_tlv_mcap_l2vpn, + {".17 L2VPN Capability","docsis_tlv.mcap.l2vpn", + FT_BYTES, BASE_NONE, NULL, 0x0, + "L2VPN Capability", HFILL} + }, + {&hf_docsis_tlv_mcap_l2vpn_esafe, + {".18 L2VPN eSAFE Host Capability","docsis_tlv.mcap.l2vpnesafe", + FT_BYTES, BASE_NONE, NULL, 0x0, + "L2VPN eSAFE Host Capability", HFILL} + }, + {&hf_docsis_tlv_mcap_dut_filtering, + {".19 Downstream Unencrypted Traffic (DUT) Filtering", + "docsis_tlv.mcap.dut", + FT_BYTES, BASE_NONE, NULL, 0x0, + "Downstream Unencrypted Traffic (DUT) Filtering", HFILL} + }, + {&hf_docsis_tlv_mcap_us_freq_range, + {".20 Upstream Frequency Range Support", + "docsis_tlv.mcap.usfreqrng", + FT_UINT8, BASE_DEC, VALS (docsis_freq_rng_vals), 0x0, + "Upstream Frequency Range Support", HFILL} + }, + {&hf_docsis_tlv_mcap_us_srate_160, + {".21 Upstream Symbol Rate 160ksps supported", + "docsis_tlv.mcap.srate160", + FT_UINT8, BASE_DEC, VALS (on_off_vals), 0x1, + "Upstream Symbol Rate 160ksps supported", HFILL} + }, + {&hf_docsis_tlv_mcap_us_srate_320, + {".21 Upstream Symbol Rate 320ksps supported", + "docsis_tlv.mcap.srate320", + FT_UINT8, BASE_DEC, VALS (on_off_vals), 0x2, + "Upstream Symbol Rate 320ksps supported", HFILL} + }, + {&hf_docsis_tlv_mcap_us_srate_640, + {".21 Upstream Symbol Rate 640ksps supported", + "docsis_tlv.mcap.srate640", + FT_UINT8, BASE_DEC, VALS (on_off_vals), 0x4, + "Upstream Symbol Rate 640ksps supported", HFILL} + }, + {&hf_docsis_tlv_mcap_us_srate_1280, + {".21 Upstream Symbol Rate 1280ksps supported", + "docsis_tlv.mcap.srate1280", + FT_UINT8, BASE_DEC, VALS (on_off_vals), 0x8, + "Upstream Symbol Rate 1280ksps supported", HFILL} + }, + {&hf_docsis_tlv_mcap_us_srate_2560, + {".21 Upstream Symbol Rate 2560ksps supported", + "docsis_tlv.mcap.srate2560", + FT_UINT8, BASE_DEC, VALS (on_off_vals), 0x10, + "Upstream Symbol Rate 2560ksps supported", HFILL} + }, + {&hf_docsis_tlv_mcap_us_srate_5120, + {".21 Upstream Symbol Rate 5120ksps supported", + "docsis_tlv.mcap.srate5120", + FT_UINT8, BASE_DEC, VALS (on_off_vals), 0x20, + "Upstream Symbol Rate 5120ksps supported", HFILL} + }, + {&hf_docsis_tlv_mcap_sac, + {".22 Selectable Active Code Mode 2 Support","docsis_tlv.mcap.sac", + FT_BOOLEAN, BASE_NONE, TFS (&on_off_tfs), 0x0, + "Selectable Active Code Mode 2 Support", HFILL} + }, + {&hf_docsis_tlv_mcap_code_hop_mode2, + {".23 Code Hopping Mode 2 Support","docsis_tlv.mcap.codehopm2", + FT_BOOLEAN, BASE_NONE, TFS (&on_off_tfs), 0x0, + "Code Hopping Mode 2 Support", HFILL} + }, + {&hf_docsis_tlv_mcap_mtc, + {".24 Multiple Transmit Channel Support","docsis_tlv.mcap.mtc", + FT_UINT8, BASE_DEC, NULL, 0x0, + "Multiple Transmit Channel Support", HFILL} + }, + {&hf_docsis_tlv_mcap_512_msps_utc, + {".25 5.12 Msps Upstream Transmit Channel Support", + "docsis_tlv.mcap.512mspsutc", + FT_UINT8, BASE_DEC, NULL, 0x0, + "5.12 Msps Upstream Transmit Channel Support", HFILL} + }, + {&hf_docsis_tlv_mcap_256_msps_utc, + {".26 2.56 Msps Upstream Transmit Channel Support", + "docsis_tlv.mcap.256mspsutc", + FT_UINT8, BASE_DEC, NULL, 0x0, + "2.56 Msps Upstream Transmit Channel Support", HFILL} + }, + {&hf_docsis_tlv_mcap_total_sid_cluster, + {".27 Total SID Cluster Support","docsis_tlv.mcap.totalsidcl", + FT_UINT8, BASE_DEC, NULL, 0x0, + "Total SID Cluster Support", HFILL} + }, + {&hf_docsis_tlv_mcap_sid_per_sf, + {".28 SID Clusters per Service Flow Support", + "docsis_tlv.mcap.sidpersf", + FT_UINT8, BASE_DEC, NULL, 0x0, + "SID Clusters per Service Flow Support", HFILL} + }, + {&hf_docsis_tlv_mcap_mrc, + {".29 Multiple Receive Channel Support","docsis_tlv.mcap.mrc", + FT_UINT8, BASE_DEC, NULL, 0x0, + "Multiple Receive Channel Support", HFILL} + }, + {&hf_docsis_tlv_mcap_total_dsid, + {".30 Total Downstream Service ID (DSID) Support", + "docsis_tlv.mcap.totaldsid", + FT_UINT8, BASE_DEC, NULL, 0x0, + "Total Downstream Service ID (DSID) Support", HFILL} + }, + {&hf_docsis_tlv_mcap_reseq_dsid, + {".31 Resequencing Downstream Service ID (DSID) Support", + "docsis_tlv.mcap.reseqdsid", + FT_UINT8, BASE_DEC, NULL, 0x0, + "Resequencing Downstream Service ID (DSID) Support", HFILL} + }, + {&hf_docsis_tlv_mcap_mc_dsid, + {".32 Multicast Downstream Service ID (DSID) Support", + "docsis_tlv.mcap.mcdsid", + FT_UINT8, BASE_DEC, NULL, 0x0, + "Multicast Downstream Service ID (DSID) Support", HFILL} + }, + {&hf_docsis_tlv_mcap_mc_dsid_fwd, + {".33 Mulitcast DSID Forwarding","docsis_tlv.mcap.mcdsidfwd", + FT_UINT8, BASE_DEC, VALS (mc_dsid_fwd_vals), 0x0, + "Mulitcast DSID Forwarding", HFILL} + }, + {&hf_docsis_tlv_mcap_fctype_fwd, + {".34 Frame Control Type Forwarding Capability", + "docsis_tlv.mcap.fctypefwd", + FT_UINT8, BASE_DEC, VALS (fctype_fwd_vals), 0x0, + "Frame Control Type Forwarding Capability", HFILL} + }, + {&hf_docsis_tlv_mcap_dpv_path, + {".35 DPV Capability (per Path)","docsis_tlv.mcap.dpvpath", + FT_UINT8, BASE_DEC, NULL, 0x1, + "DPV Capability (per Path)", HFILL} + }, + {&hf_docsis_tlv_mcap_dpv_packet, + {".35 DPV Capability (per Packet)","docsis_tlv.mcap.dpvpacket", + FT_UINT8, BASE_DEC, NULL, 0x2, + "DPV Capability (per Packet)", HFILL} + }, + {&hf_docsis_tlv_mcap_ugs, + {".36 Unsolicited Grant Service Support","docsis_tlv.mcap.ugs", + FT_UINT8, BASE_DEC, NULL, 0x0, + "Unsolicited Grant Service Support", HFILL} + }, + {&hf_docsis_tlv_mcap_map_ucd, + {".37 MAP and UCD Receipt Support","docsis_tlv.mcap.mapucd", + FT_BOOLEAN, BASE_NONE, TFS (&on_off_tfs), 0x0, + "MAP and UCD Receipt Support", HFILL} + }, + {&hf_docsis_tlv_mcap_udc, + {".38 Upstream Drop Classifier Support","docsis_tlv.mcap.udc", + FT_UINT16, BASE_DEC, NULL, 0x0, + "Upstream Drop Classifier Support", HFILL} + }, + {&hf_docsis_tlv_mcap_ipv6, + {".39 IPv6 Support","docsis_tlv.mcap.ipv6", + FT_BOOLEAN, BASE_NONE, TFS (&on_off_tfs), 0x0, + "IPv6 Support", HFILL} + }, + {&hf_docsis_tlv_mcap_ext_us_trans_power, + {".40 Extended Upstream Transmit Power Capability", + "docsis_tlv.mcap.extustrpwr", + FT_UINT8, BASE_DEC, NULL, 0x0, + "Extended Upstream Transmit Power Capability", HFILL} + }, {&hf_docsis_tlv_cm_mic, {"6 CM MIC", "docsis_tlv.cmmic", FT_BYTES, BASE_NONE, NULL, 0x0, diff --git a/plugins/docsis/packet-tlv.h b/plugins/docsis/packet-tlv.h index ba91325e1e..9eaadab8f8 100644 --- a/plugins/docsis/packet-tlv.h +++ b/plugins/docsis/packet-tlv.h @@ -128,6 +128,34 @@ #define CAP_XMIT_EQPERSYM 10 #define CAP_NUM_XMIT_EQ_TAPS 11 #define CAP_DCC 12 +#define CAP_IP_FILTERS 13 +#define CAP_LLC_FILTERS 14 +#define CAP_EXP_UNICAST_SID 15 +#define CAP_RNG_HOFF 16 +#define CAP_L2VPN 17 +#define CAP_L2VPN_ESAFE 18 +#define CAP_DUT_FILTERING 19 +#define CAP_US_FREQ_RNG 20 +#define CAP_US_SRATE 21 +#define CAP_SAC 22 +#define CAP_CODE_HOP_M2 23 +#define CAP_MTC 24 +#define CAP_512_MSPS_UTC 25 +#define CAP_256_MSPS_UTC 26 +#define CAP_TOTAL_SID_CLUST 27 +#define CAP_SID_PER_SF 28 +#define CAP_MRC 29 +#define CAP_TOTAL_DSID 30 +#define CAP_RESEQ_DSID 31 +#define CAP_MC_DSID 32 +#define CAP_MC_DSID_FWD 33 +#define CAP_FCTYPE_FWD 34 +#define CAP_DPV 35 +#define CAP_UGS 36 +#define CAP_MAP_UCD 37 +#define CAP_UDC 38 +#define CAP_IPV6 39 +#define CAP_EXT_US_TRNS_PWR 40 /* Define Classifier subtypes * These are subtypes of either: |