wireshark/epan/dissectors/packet-homeplug-av.c

8463 lines
360 KiB
C

/* packet-homeplug-av.c
* Routines for HomePlug AV dissection
*
* Copyright 2011, Florian Fainelli <florian[AT]openwrt.org>
* Copyright 2016, Nora Sandler <nsandler[AT]securityinnovation.com>
* Copyright 2018, Sergey Rak <sergrak[AT]iotecha.com>
*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald[AT]wireshark.org>
* Copyright 1998 Gerald Combs
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#include "config.h"
#include <epan/packet.h>
#include <epan/etypes.h>
#include <epan/ptvcursor.h>
void proto_register_homeplug_av(void);
void proto_reg_handoff_homeplug_av(void);
static int proto_homeplug_av = -1;
static int hf_homeplug_av_mmhdr = -1;
static int hf_homeplug_av_mmhdr_mmver = -1;
static int hf_homeplug_av_mmhdr_mmtype_general = -1;
static int hf_homeplug_av_mmhdr_mmtype_qualcomm = -1;
static int hf_homeplug_av_mmhdr_mmtype_st = -1;
static int hf_homeplug_av_mmhdr_mmtype_lsb = -1;
static int hf_homeplug_av_mmhdr_mmtype_msb = -1;
static int hf_homeplug_av_mmhdr_fmi = -1;
static int hf_homeplug_av_vendor = -1;
static int hf_homeplug_av_vendor_oui = -1;
static int hf_homeplug_av_reserved = -1;
/* Frame Control fields (for sniffer data) */
static int hf_homeplug_av_fc = -1;
static int hf_homeplug_av_fc_del_type = -1;
static int hf_homeplug_av_fc_access = -1;
static int hf_homeplug_av_fc_snid = -1;
static int hf_homeplug_av_fc_fccs_av = -1;
/* Variant fields used by multiple MPDU types */
static int hf_homeplug_av_dtei = -1;
static int hf_homeplug_av_stei = -1;
static int hf_homeplug_av_lid = -1;
static int hf_homeplug_av_cfs = -1;
static int hf_homeplug_av_bdf = -1;
static int hf_homeplug_av_hp10df = -1;
static int hf_homeplug_av_hp11df = -1;
static int hf_homeplug_av_svn = -1;
static int hf_homeplug_av_rrtf = -1;
static int hf_homeplug_av_fl_av = -1;
static int hf_homeplug_av_ppb = -1;
static int hf_homeplug_av_mfs_rsp_data = -1;
static int hf_homeplug_av_mfs_rsp_mgmt = -1;
/* Beacon */
static int hf_homeplug_av_bcn = -1;
static int hf_homeplug_av_bcn_bts = -1;
static int hf_homeplug_av_bcn_bto_0 = -1;
static int hf_homeplug_av_bcn_bto_1 = -1;
static int hf_homeplug_av_bcn_bto_2 = -1;
static int hf_homeplug_av_bcn_bto_3 = -1;
/* Beacon MPDU Payload */
static int hf_homeplug_av_bcn_payload = -1;
static int hf_homeplug_av_bcn_type = -1;
static int hf_homeplug_av_bcn_nid = -1;
static int hf_homeplug_av_bcn_stei = -1;
static int hf_homeplug_av_bcn_ncnr = -1;
static int hf_homeplug_av_bcn_num_slots = -1;
static int hf_homeplug_av_bcn_slot_use = -1;
static int hf_homeplug_av_bcn_slot_id = -1;
static int hf_homeplug_av_bcn_aclss = -1;
static int hf_homeplug_av_bcn_hm = -1;
static int hf_homeplug_av_bcn_nm = -1;
static int hf_homeplug_av_bcn_npsm = -1;
static int hf_homeplug_av_bcn_cco_cap = -1;
static int hf_homeplug_av_bcn_rtsbf = -1;
static int hf_homeplug_av_bcn_hoip = -1;
static int hf_homeplug_av_bcn_rsf = -1;
static int hf_homeplug_av_bcn_plevel = -1;
static int hf_homeplug_av_bcn_bentries = -1;
static int hf_homeplug_av_bcn_bpcs = -1;
/* Start of Frame */
static int hf_homeplug_av_sof = -1;
static int hf_homeplug_av_sof_peks = -1;
static int hf_homeplug_av_sof_ble = -1;
static int hf_homeplug_av_sof_pbsz = -1;
static int hf_homeplug_av_sof_num_sym = -1;
static int hf_homeplug_av_sof_tmi_av = -1;
static int hf_homeplug_av_sof_mpdu_cnt = -1;
static int hf_homeplug_av_sof_burst_cnt = -1;
static int hf_homeplug_av_sof_bbf = -1;
static int hf_homeplug_av_sof_mrtfl = -1;
static int hf_homeplug_av_sof_clst = -1;
static int hf_homeplug_av_sof_mfs_cmd_mgmt = -1;
static int hf_homeplug_av_sof_mfs_cmd_data = -1;
static int hf_homeplug_av_sof_rsr = -1;
static int hf_homeplug_av_sof_mcf = -1;
static int hf_homeplug_av_sof_dccpcf = -1;
static int hf_homeplug_av_sof_mnbf = -1;
static int hf_homeplug_av_sof_mfs_rsp_mgmt = -1;
static int hf_homeplug_av_sof_mfs_rsp_data = -1;
static int hf_homeplug_av_sof_bm_sack = -1;
/* Selective Acknowledgement */
static int hf_homeplug_av_sack = -1;
/* Request to Send/Clear to Send */
static int hf_homeplug_av_rtscts = -1;
static int hf_homeplug_av_rtscts_rtsf = -1;
static int hf_homeplug_av_rtscts_igf = -1;
static int hf_homeplug_av_rtscts_mnbf = -1;
static int hf_homeplug_av_rtscts_mcf = -1;
static int hf_homeplug_av_rtscts_dur = -1;
/* Sound */
static int hf_homeplug_av_sound = -1;
static int hf_homeplug_av_sound_pbsz = -1;
static int hf_homeplug_av_sound_bdf = -1;
static int hf_homeplug_av_sound_saf = -1;
static int hf_homeplug_av_sound_scf = -1;
static int hf_homeplug_av_sound_req_tm = -1;
static int hf_homeplug_av_sound_mpdu_cnt = -1;
static int hf_homeplug_av_sound_src = -1;
static int hf_homeplug_av_sound_add_req_tm = -1;
static int hf_homeplug_av_sound_max_pb_sym = -1;
static int hf_homeplug_av_sound_ecsf = -1;
static int hf_homeplug_av_sound_ecuf = -1;
static int hf_homeplug_av_sound_ems = -1;
static int hf_homeplug_av_sound_esgisf = -1;
static int hf_homeplug_av_sound_elgisf = -1;
static int hf_homeplug_av_sound_efrs = -1;
/* Reverse Start of Frame */
static int hf_homeplug_av_rsof = -1;
static int hf_homeplug_av_rsof_fl = -1;
static int hf_homeplug_av_rsof_tmi = -1;
static int hf_homeplug_av_rsof_pbsz = -1;
static int hf_homeplug_av_rsof_num_sym = -1;
static int hf_homeplug_av_rsof_mfs_cmd_mgmt = -1;
static int hf_homeplug_av_rsof_mfs_cmd_data = -1;
/* Public MMEs */
static int hf_homeplug_av_public = -1;
static int hf_homeplug_av_public_frag_count = -1;
static int hf_homeplug_av_public_frag_index = -1;
static int hf_homeplug_av_public_frag_seqnum = -1;
static int hf_homeplug_av_cc_disc_list_cnf = -1;
static int hf_homeplug_av_cc_disc_list_sta_cnt = -1;
static int hf_homeplug_av_cc_sta_info = -1;
static int hf_homeplug_av_cc_sta_info_mac = -1;
static int hf_homeplug_av_cc_sta_info_tei = -1;
static int hf_homeplug_av_cc_sta_info_same_net = -1;
static int hf_homeplug_av_cc_sta_info_sig_level = -1;
static int hf_homeplug_av_cc_sta_info_avg_ble = -1;
static int hf_homeplug_av_cc_disc_list_net_cnt = -1;
static int hf_homeplug_av_cc_net_info = -1;
static int hf_homeplug_av_cc_net_info_hyb_mode = -1;
static int hf_homeplug_av_cc_net_info_bcn_slots = -1;
static int hf_homeplug_av_cc_net_info_cco_sts = -1;
static int hf_homeplug_av_cc_net_info_bcn_ofs = -1;
static int hf_homeplug_av_brg_infos_cnf = -1;
static int hf_homeplug_av_brg_infos_cnf_brd = -1;
static int hf_homeplug_av_brg_infos_cnf_btei = -1;
static int hf_homeplug_av_brg_infos_cnf_num_stas = -1;
static int hf_homeplug_av_brg_infos_cnf_mac = -1;
static int hf_homeplug_av_cm_nw_infos_cnf = -1;
static int hf_homeplug_av_nw_stats_cnf = -1;
/* Shared network informations fields */
static int hf_homeplug_av_nw_info_peks = -1;
static int hf_homeplug_av_nw_info_pid = -1;
static int hf_homeplug_av_nw_info_prn = -1;
static int hf_homeplug_av_nw_info_pmn = -1;
static int hf_homeplug_av_nw_info_my_nonce = -1;
static int hf_homeplug_av_nw_info_your_nonce = -1;
static int hf_homeplug_av_nw_info_key_type = -1;
static int hf_homeplug_av_nw_info_cco_cap = -1;
static int hf_homeplug_av_nw_info_num_avlns = -1;
static int hf_homeplug_av_nw_info_nid = -1;
static int hf_homeplug_av_nw_info_snid = -1;
static int hf_homeplug_av_nw_info_tei = -1;
static int hf_homeplug_av_nw_info_sta_role = -1;
static int hf_homeplug_av_nw_info_cco_mac = -1;
static int hf_homeplug_av_nw_info_cco_tei = -1;
static int hf_homeplug_av_nw_info_num_stas = -1;
static int hf_homeplug_av_nw_info_access = -1;
static int hf_homeplug_av_nw_info_num_coord = -1;
static int hf_homeplug_av_cm_enc_pld_ind = -1;
static int hf_homeplug_av_cm_enc_pld_ind_avlns = -1;
static int hf_homeplug_av_cm_enc_pld_ind_iv = -1;
static int hf_homeplug_av_cm_enc_pld_ind_uuid = -1;
static int hf_homeplug_av_cm_enc_pld_ind_len = -1;
static int hf_homeplug_av_cm_enc_pld_ind_pld = -1;
static int hf_homeplug_av_cm_enc_pld_rsp = -1;
static int hf_homeplug_av_cm_enc_pld_rsp_result = -1;
static int hf_homeplug_av_cm_set_key_req = -1;
static int hf_homeplug_av_cm_set_key_req_nw_key = -1;
static int hf_homeplug_av_cm_set_key_cnf = -1;
static int hf_homeplug_av_cm_set_key_cnf_result = -1;
static int hf_homeplug_av_cm_get_key_req = -1;
static int hf_homeplug_av_cm_get_key_req_type = -1;
static int hf_homeplug_av_cm_get_key_req_has_key = -1;
static int hf_homeplug_av_cm_get_key_cnf = -1;
static int hf_homeplug_av_cm_get_key_cnf_result = -1;
static int hf_homeplug_av_cm_get_key_cnf_rtype = -1;
static int hf_homeplug_av_cm_get_key_cnf_key = -1;
/* Intellon specific vendor MMEs */
static int hf_homeplug_av_get_sw_cnf = -1;
static int hf_homeplug_av_get_sw_cnf_status = -1;
static int hf_homeplug_av_get_sw_cnf_dev_id = -1;
static int hf_homeplug_av_get_sw_cnf_ver_len = -1;
static int hf_homeplug_av_get_sw_cnf_ver_str = -1;
static int hf_homeplug_av_get_sw_cnf_upg = -1;
/* Shared memory related fields */
static int hf_homeplug_av_mem_len_16bits = -1;
static int hf_homeplug_av_mem_len_32bits = -1;
static int hf_homeplug_av_mem_offset = -1;
static int hf_homeplug_av_mem_checksum = -1;
static int hf_homeplug_av_mem_data = -1;
static int hf_homeplug_av_mem_addr = -1;
static int hf_homeplug_av_mem_status = -1;
static int hf_homeplug_av_wr_mem_req = -1;
static int hf_homeplug_av_wr_mem_cnf = -1;
static int hf_homeplug_av_rd_mem_req = -1;
static int hf_homeplug_av_rd_mem_cnf = -1;
static int hf_homeplug_av_mac_module_id = -1;
static int hf_homeplug_av_st_mac_req = -1;
static int hf_homeplug_av_st_mac_req_img_load = -1;
static int hf_homeplug_av_st_mac_req_img_len = -1;
static int hf_homeplug_av_st_mac_req_img_chksum = -1;
static int hf_homeplug_av_st_mac_req_img_start = -1;
static int hf_homeplug_av_st_mac_cnf = -1;
static int hf_homeplug_av_st_mac_cnf_status = -1;
static int hf_homeplug_av_get_nvm_cnf = -1;
static int hf_homeplug_av_get_nvm_cnf_status = -1;
static int hf_homeplug_av_get_nvm_cnf_nvm_type = -1;
static int hf_homeplug_av_get_nvm_cnf_nvm_page = -1;
static int hf_homeplug_av_get_nvm_cnf_nvm_block = -1;
static int hf_homeplug_av_get_nvm_cnf_nvm_size = -1;
static int hf_homeplug_av_rs_dev_cnf = -1;
static int hf_homeplug_av_rs_dev_cnf_status = -1;
static int hf_homeplug_av_wr_mod_req = -1;
static int hf_homeplug_av_wr_mod_cnf = -1;
static int hf_homeplug_av_wr_mod_cnf_status = -1;
static int hf_homeplug_av_wr_mod_ind = -1;
static int hf_homeplug_av_wr_mod_ind_status = -1;
static int hf_homeplug_av_rd_mod_req = -1;
static int hf_homeplug_av_rd_mod_cnf = -1;
static int hf_homeplug_av_rd_mod_cnf_status = -1;
static int hf_homeplug_av_mod_nvm_req = -1;
static int hf_homeplug_av_mod_nvm_cnf = -1;
static int hf_homeplug_av_mod_nvm_cnf_status = -1;
static int hf_homeplug_av_wd_rpt_req = -1;
static int hf_homeplug_av_wd_rpt_req_session_id = -1;
static int hf_homeplug_av_wd_rpt_req_clr = -1;
static int hf_homeplug_av_wd_rpt_ind = -1;
static int hf_homeplug_av_wd_rpt_ind_status = -1;
static int hf_homeplug_av_wd_rpt_ind_session_id = -1;
static int hf_homeplug_av_wd_rpt_ind_num_parts = -1;
static int hf_homeplug_av_wd_rpt_ind_curr_part = -1;
static int hf_homeplug_av_wd_rpt_ind_rdata_len = -1;
static int hf_homeplug_av_wd_rpt_ind_rdata_ofs = -1;
static int hf_homeplug_av_wd_rpt_ind_rdata = -1;
static int hf_homeplug_av_lnk_stats_req = -1;
static int hf_homeplug_av_lnk_stats_req_mcontrol = -1;
static int hf_homeplug_av_lnk_stats_req_dir = -1;
static int hf_homeplug_av_lnk_stats_req_lid = -1;
static int hf_homeplug_av_lnk_stats_req_macaddr = -1;
static int hf_homeplug_av_lnk_stats_cnf = -1;
static int hf_homeplug_av_lnk_stats_cnf_status = -1;
static int hf_homeplug_av_lnk_stats_cnf_dir = -1;
static int hf_homeplug_av_lnk_stats_cnf_lid = -1;
static int hf_homeplug_av_lnk_stats_cnf_tei = -1;
static int hf_homeplug_av_lnk_stats_cnf_lstats = -1;
static int hf_homeplug_av_lnk_stats_tx = -1;
static int hf_homeplug_av_lnk_stats_tx_mpdu_ack = -1;
static int hf_homeplug_av_lnk_stats_tx_mpdu_col = -1;
static int hf_homeplug_av_lnk_stats_tx_mpdu_fai = -1;
static int hf_homeplug_av_lnk_stats_tx_pbs_pass = -1;
static int hf_homeplug_av_lnk_stats_tx_pbs_fail = -1;
static int hf_homeplug_av_lnk_stats_rx = -1;
static int hf_homeplug_av_lnk_stats_rx_mpdu_ack = -1;
static int hf_homeplug_av_lnk_stats_rx_mpdu_fai = -1;
static int hf_homeplug_av_lnk_stats_rx_pbs_pass = -1;
static int hf_homeplug_av_lnk_stats_rx_pbs_fail = -1;
static int hf_homeplug_av_lnk_stats_rx_tb_pass = -1;
static int hf_homeplug_av_lnk_stats_rx_tb_fail = -1;
static int hf_homeplug_av_lnk_stats_rx_num_int = -1;
static int hf_homeplug_av_rx_inv_stats = -1;
static int hf_homeplug_av_rx_inv_phy_rate = -1;
static int hf_homeplug_av_rx_inv_pbs_pass = -1;
static int hf_homeplug_av_rx_inv_pbs_fail = -1;
static int hf_homeplug_av_rx_inv_tb_pass = -1;
static int hf_homeplug_av_rx_inv_tb_fail = -1;
static int hf_homeplug_av_sniffer_req = -1;
static int hf_homeplug_av_sniffer_req_ctrl = -1;
static int hf_homeplug_av_sniffer_cnf = -1;
static int hf_homeplug_av_sniffer_cnf_status = -1;
static int hf_homeplug_av_sniffer_cnf_state = -1;
static int hf_homeplug_av_sniffer_cnf_da = -1;
static int hf_homeplug_av_sniffer_ind = -1;
static int hf_homeplug_av_sniffer_ind_type = -1;
static int hf_homeplug_av_sniffer_ind_data = -1;
static int hf_homeplug_av_sniffer_data_dir = -1;
static int hf_homeplug_av_sniffer_data_systime = -1;
static int hf_homeplug_av_sniffer_data_bc_time = -1;
static int hf_homeplug_av_nw_info_cnf = -1;
static int hf_homeplug_av_nw_info_sta_info = -1;
static int hf_homeplug_av_nw_info_net_info = -1;
static int hf_homeplug_av_nw_info_sta_da = -1;
static int hf_homeplug_av_nw_info_sta_tei = -1;
static int hf_homeplug_av_nw_info_sta_bda = -1;
static int hf_homeplug_av10_nw_info_sta_phy_dr_tx= -1;
static int hf_homeplug_av10_nw_info_sta_phy_dr_rx= -1;
static int hf_homeplug_av11_nw_info_sta_phy_dr_tx= -1;
static int hf_homeplug_av11_nw_info_sta_cpling_tx = -1;
static int hf_homeplug_av11_nw_info_sta_phy_dr_rx= -1;
static int hf_homeplug_av11_nw_info_sta_cpling_rx = -1;
static int hf_homeplug_av_cp_rpt_req = -1;
static int hf_homeplug_av_cp_rpt_req_session_id = -1;
static int hf_homeplug_av_cp_rpt_req_clr = -1;
static int hf_homeplug_av_cp_rpt_ind = -1;
static int hf_homeplug_av_cp_rpt_ind_status = -1;
static int hf_homeplug_av_cp_rpt_ind_major_ver = -1;
static int hf_homeplug_av_cp_rpt_ind_minor_ver = -1;
static int hf_homeplug_av_cp_rpt_ind_session_id = -1;
static int hf_homeplug_av_cp_rpt_ind_total_size = -1;
static int hf_homeplug_av_cp_rpt_ind_blk_offset = -1;
static int hf_homeplug_av_cp_rpt_ind_byte_index = -1;
static int hf_homeplug_av_cp_rpt_ind_num_parts = -1;
static int hf_homeplug_av_cp_rpt_ind_curr_part = -1;
static int hf_homeplug_av_cp_rpt_ind_data_len = -1;
static int hf_homeplug_av_cp_rpt_ind_data_ofs = -1;
static int hf_homeplug_av_cp_rpt_ind_data = -1;
static int hf_homeplug_av_fr_lbk_duration = -1;
static int hf_homeplug_av_fr_lbk_len = -1;
static int hf_homeplug_av_fr_lbk_req = -1;
static int hf_homeplug_av_fr_lbk_req_data = -1;
static int hf_homeplug_av_fr_lbk_cnf = -1;
static int hf_homeplug_av_fr_lbk_cnf_status = -1;
static int hf_homeplug_av_lbk_stat_cnf = -1;
static int hf_homeplug_av_lbk_stat_cnf_status = -1;
static int hf_homeplug_av_lbk_stat_cnf_lbk_stat = -1;
static int hf_homeplug_av_set_key_req = -1;
static int hf_homeplug_av_set_key_req_eks = -1;
static int hf_homeplug_av_set_key_req_nmk = -1;
static int hf_homeplug_av_set_key_req_rda = -1;
static int hf_homeplug_av_set_key_req_dak = -1;
static int hf_homeplug_av_set_key_cnf = -1;
static int hf_homeplug_av_set_key_cnf_status = -1;
static int hf_homeplug_av_mfg_string_cnf = -1;
static int hf_homeplug_av_mfg_string_cnf_status = -1;
static int hf_homeplug_av_mfg_string_cnf_len = -1;
static int hf_homeplug_av_mfg_string_cnf_string = -1;
static int hf_homeplug_av_rd_cblock_cnf = -1;
static int hf_homeplug_av_rd_cblock_cnf_status = -1;
static int hf_homeplug_av_rd_cblock_cnf_len = -1;
static int hf_homeplug_av_cblock_hdr = -1;
static int hf_homeplug_av_cblock_hdr_ver = -1;
static int hf_homeplug_av_cblock_img_rom_addr = -1;
static int hf_homeplug_av_cblock_img_addr = -1;
static int hf_homeplug_av_cblock_img_len = -1;
static int hf_homeplug_av_cblock_img_chksum = -1;
static int hf_homeplug_av_cblock_entry_point = -1;
static int hf_homeplug_av_cblock_hdr_minor = -1;
static int hf_homeplug_av_cblock_hdr_img_type = -1;
static int hf_homeplug_av_cblock_hdr_ignore_mask = -1;
static int hf_homeplug_av_cblock_hdr_module_id = -1;
static int hf_homeplug_av_cblock_hdr_module_subid= -1;
static int hf_homeplug_av_cblock_next_hdr = -1;
static int hf_homeplug_av_cblock_hdr_chksum = -1;
static int hf_homeplug_av_cblock = -1;
static int hf_homeplug_av_cblock_sdram_size = -1;
static int hf_homeplug_av_cblock_sdram_conf = -1;
static int hf_homeplug_av_cblock_sdram_tim0 = -1;
static int hf_homeplug_av_cblock_sdram_tim1 = -1;
static int hf_homeplug_av_cblock_sdram_cntrl = -1;
static int hf_homeplug_av_cblock_sdram_refresh = -1;
static int hf_homeplug_av_cblock_mac_clock = -1;
static int hf_homeplug_av_set_sdram_req = -1;
static int hf_homeplug_av_set_sdram_req_chksum = -1;
static int hf_homeplug_av_set_sdram_cnf = -1;
static int hf_homeplug_av_set_sdram_cnf_status = -1;
static int hf_homeplug_av_host_action_ind = -1;
static int hf_homeplug_av_host_action_ind_act = -1;
static int hf_homeplug_av_host_action_rsp = -1;
static int hf_homeplug_av_host_action_rsp_sts = -1;
static int hf_homeplug_av_op_attr_cookie = -1;
static int hf_homeplug_av_op_attr_rep_type = -1;
static int hf_homeplug_av_op_attr_req = -1;
static int hf_homeplug_av_op_attr_cnf = -1;
static int hf_homeplug_av_op_attr_cnf_status = -1;
static int hf_homeplug_av_op_attr_cnf_size = -1;
static int hf_homeplug_av_op_attr_cnf_data = -1;
static int hf_homeplug_av_op_attr_data_hw = -1;
static int hf_homeplug_av_op_attr_data_sw = -1;
static int hf_homeplug_av_op_attr_data_sw_major = -1;
static int hf_homeplug_av_op_attr_data_sw_minor = -1;
static int hf_homeplug_av_op_attr_data_sw_sub = -1;
static int hf_homeplug_av_op_attr_data_sw_num = -1;
static int hf_homeplug_av_op_attr_data_sw_date = -1;
static int hf_homeplug_av_op_attr_data_sw_rel = -1;
static int hf_homeplug_av_op_attr_data_sw_sdram_type = -1;
static int hf_homeplug_av_op_attr_data_sw_linefreq = -1;
static int hf_homeplug_av_op_attr_data_sw_zerocross = -1;
static int hf_homeplug_av_op_attr_data_sw_sdram_size = -1;
static int hf_homeplug_av_op_attr_data_sw_auth_mode = -1;
static int hf_homeplug_av_enet_phy_req = -1;
static int hf_homeplug_av_enet_phy_req_mcontrol = -1;
static int hf_homeplug_av_enet_phy_req_addcaps = -1;
static int hf_homeplug_av_enet_phy_cnf = -1;
static int hf_homeplug_av_enet_phy_cnf_status = -1;
static int hf_homeplug_av_enet_phy_cnf_speed = -1;
static int hf_homeplug_av_enet_phy_cnf_duplex = -1;
static int hf_homeplug_av_tone_map_tx_req = -1;
static int hf_homeplug_av_tone_map_tx_req_mac = -1;
static int hf_homeplug_av_tone_map_tx_req_slot = -1;
static int hf_homeplug_av_tone_map_tx_req_coupling = -1;
static int hf_homeplug_av_tone_map_rx_req = -1;
static int hf_homeplug_av_tone_map_rx_req_mac = -1;
static int hf_homeplug_av_tone_map_rx_req_slot = -1;
static int hf_homeplug_av_tone_map_rx_req_coupling = -1;
static int hf_homeplug_av_tone_map_tx_cnf = -1;
static int hf_homeplug_av_tone_map_tx_cnf_status = -1;
static int hf_homeplug_av_tone_map_tx_cnf_len = -1;
static int hf_homeplug_av_tone_map_tx_cnf_mac = -1;
static int hf_homeplug_av_tone_map_tx_cnf_slot = -1;
static int hf_homeplug_av_tone_map_tx_cnf_num_tms = -1;
static int hf_homeplug_av_tone_map_tx_cnf_num_act = -1;
static int hf_homeplug_av_tone_map_rx_cnf = -1;
static int hf_homeplug_av_tone_map_rx_cnf_status = -1;
static int hf_homeplug_av_tone_map_rx_cnf_len = -1;
static int hf_homeplug_av_tone_map_rx_cnf_subver = -1;
static int hf_homeplug_av_tone_map_rx_cnf_coupling = -1;
static int hf_homeplug_av_tone_map_rx_cnf_mac = -1;
static int hf_homeplug_av_tone_map_rx_cnf_slot = -1;
static int hf_homeplug_av_tone_map_rx_cnf_num_tms = -1;
static int hf_homeplug_av_tone_map_rx_cnf_num_act = -1;
static int hf_homeplug_av_tone_map_rx_cnf_agc = -1;
static int hf_homeplug_av_tone_map_rx_cnf_gil = -1;
static int hf_homeplug_av_tone_map_carriers = -1;
static int hf_homeplug_av_tone_map_carrier = -1;
static int hf_homeplug_av_tone_map_carrier_lo = -1;
static int hf_homeplug_av_tone_map_carrier_hi = -1;
static int hf_homeplug_av_cc_assoc_reqtype = -1;
static int hf_homeplug_av_cc_assoc_cco_cap = -1;
static int hf_homeplug_av_cc_assoc_proxy_net_cap = -1;
static int hf_homeplug_av_cc_assoc_result = -1;
static int hf_homeplug_av_cc_assoc_nid = -1;
static int hf_homeplug_av_cc_assoc_snid = -1;
static int hf_homeplug_av_cc_assoc_tei = -1;
static int hf_homeplug_av_cc_assoc_lease_time = -1;
static int hf_homeplug_av_cc_set_tei_map_ind_mode = -1;
static int hf_homeplug_av_cc_set_tei_map_ind_num = -1;
static int hf_homeplug_av_cc_set_tei_map_ind_tei = -1;
static int hf_homeplug_av_cc_set_tei_map_ind_mac = -1;
static int hf_homeplug_av_cc_set_tei_map_ind_status = -1;
static int hf_homeplug_av_cm_unassoc_sta_nid = -1;
static int hf_homeplug_av_cm_unassoc_sta_cco_cap = -1;
/* HPAV/GP fields*/
static int hf_homeplug_av_gp_cm_slac_parm_apptype = -1;
static int hf_homeplug_av_gp_cm_slac_parm_sectype = -1;
static int hf_homeplug_av_gp_cm_slac_parm_runid = -1;
static int hf_homeplug_av_gp_cm_slac_parm_cipher_size = -1;
static int hf_homeplug_av_gp_cm_slac_parm_cipher = -1;
static int hf_homeplug_av_gp_cm_slac_parm_sound_target = -1;
static int hf_homeplug_av_gp_cm_slac_parm_sound_count = -1;
static int hf_homeplug_av_gp_cm_slac_parm_time_out = -1;
static int hf_homeplug_av_gp_cm_slac_parm_resptype = -1;
static int hf_homeplug_av_gp_cm_slac_parm_forwarding_sta= -1;
static int hf_homeplug_av_gp_cm_atten_profile_ind_pev_mac = -1;
static int hf_homeplug_av_gp_cm_atten_profile_ind_num_groups = -1;
static int hf_homeplug_av_gp_cm_atten_profile_ind_aag = -1;
static int hf_homeplug_av_gp_cm_atten_char_apptype = -1;
static int hf_homeplug_av_gp_cm_atten_char_sectype = -1;
static int hf_homeplug_av_gp_cm_atten_char_source_mac = -1;
static int hf_homeplug_av_gp_cm_atten_char_runid = -1;
static int hf_homeplug_av_gp_cm_atten_char_source_id = -1;
static int hf_homeplug_av_gp_cm_atten_char_resp_id = -1;
static int hf_homeplug_av_gp_cm_atten_char_numsounds = -1;
static int hf_homeplug_av_gp_cm_atten_char_numgroups = -1;
static int hf_homeplug_av_gp_cm_atten_char_aag = -1;
static int hf_homeplug_av_gp_cm_atten_char_profile = -1;
static int hf_homeplug_av_gp_cm_atten_char_cms_data = -1;
static int hf_homeplug_av_gp_cm_atten_char_result = -1;
static int hf_homeplug_av_gp_cm_start_atten_char_time_out = -1;
static int hf_homeplug_av_gp_cm_start_atten_char_resptype = -1;
static int hf_homeplug_av_gp_cm_start_atten_char_forwarding_sta= -1;
static int hf_homeplug_av_gp_cm_start_atten_char_runid = -1;
static int hf_homeplug_av_gp_cm_start_atten_char_numsounds = -1;
static int hf_homeplug_av_gp_cm_mnbc_sound_apptype = -1;
static int hf_homeplug_av_gp_cm_mnbc_sound_sectype = -1;
static int hf_homeplug_av_gp_cm_mnbc_sound_sender_id = -1;
static int hf_homeplug_av_gp_cm_mnbc_sound_countdown = -1;
static int hf_homeplug_av_gp_cm_mnbc_sound_runid = -1;
static int hf_homeplug_av_gp_cm_mnbc_sound_rsvd = -1;
static int hf_homeplug_av_gp_cm_mnbc_sound_rnd = -1;
static int hf_homeplug_av_gp_cm_validate_signaltype = -1;
static int hf_homeplug_av_gp_cm_validate_timer = -1;
static int hf_homeplug_av_gp_cm_validate_result = -1;
static int hf_homeplug_av_gp_cm_validate_togglenum = -1;
static int hf_homeplug_av_gp_cm_slac_match_apptype = -1;
static int hf_homeplug_av_gp_cm_slac_match_sectype = -1;
static int hf_homeplug_av_gp_cm_slac_match_length = -1;
static int hf_homeplug_av_gp_cm_slac_match_pev_id = -1;
static int hf_homeplug_av_gp_cm_slac_match_pev_mac = -1;
static int hf_homeplug_av_gp_cm_slac_match_evse_id = -1;
static int hf_homeplug_av_gp_cm_slac_match_evse_mac = -1;
static int hf_homeplug_av_gp_cm_slac_match_runid = -1;
static int hf_homeplug_av_gp_cm_slac_match_rsvd = -1;
static int hf_homeplug_av_gp_cm_slac_match_nid = -1;
static int hf_homeplug_av_gp_cm_slac_match_nmk = -1;
static int hf_homeplug_av_gp_cm_slac_user_data_broadcast_tlv_type = -1;
static int hf_homeplug_av_gp_cm_slac_user_data_tlv = -1;
static int hf_homeplug_av_gp_cm_slac_user_data_tlv_type = -1;
static int hf_homeplug_av_gp_cm_slac_user_data_tlv_length = -1;
static int hf_homeplug_av_gp_cm_slac_user_data_tlv_str_bytes = -1;
static int hf_homeplug_av_gp_cm_slac_user_data_tlv_oui = -1;
static int hf_homeplug_av_gp_cm_slac_user_data_tlv_subtype = -1;
static int hf_homeplug_av_gp_cm_slac_user_data_tlv_info_str = -1;
/* End of HPAV/GP fields*/
/* ST/IoTecha fields */
static int hf_homeplug_av_st_iotecha_header_rsvd = -1;
static int hf_homeplug_av_st_iotecha_header_mmever = -1;
static int hf_homeplug_av_st_iotecha_header_mver = -1;
static int hf_homeplug_av_st_iotecha_auth_nmk = -1;
static int hf_homeplug_av_st_iotecha_status_byte = -1;
static int hf_homeplug_av_st_iotecha_linkstatus_status = -1;
static int hf_homeplug_av_st_iotecha_linkstatus_devmode = -1;
static int hf_homeplug_av_st_iotecha_stp_discover_tlv = -1;
static int hf_homeplug_av_st_iotecha_stp_discover_tlv_type = -1;
static int hf_homeplug_av_st_iotecha_stp_discover_tlv_length = -1;
static int hf_homeplug_av_st_iotecha_stp_discover_tlv_value_bytes = -1;
static int hf_homeplug_av_st_iotecha_stp_discover_tlv_value_string = -1;
static int hf_homeplug_av_st_iotecha_gain_ask = -1;
static int hf_homeplug_av_st_iotecha_gain_new = -1;
static int hf_homeplug_av_st_iotecha_gain_prev = -1;
static int hf_homeplug_av_st_iotecha_mac_address = -1;
static int hf_homeplug_av_st_iotecha_tei_count = -1;
static int hf_homeplug_av_st_iotecha_tei = -1;
static int hf_homeplug_av_st_iotecha_tei_snap_tei = -1;
static int hf_homeplug_av_st_iotecha_tei_snap_addr_count = -1;
static int hf_homeplug_av_st_iotecha_tei_snap_mac_address_flag = -1;
static int hf_homeplug_av_st_iotecha_bss_list_count = -1;
static int hf_homeplug_av_st_iotecha_bss_entry = -1;
static int hf_homeplug_av_st_iotecha_bss_type = -1;
static int hf_homeplug_av_st_iotecha_bss_value_bytes = -1;
static int hf_homeplug_av_st_iotecha_chanqual_req_type = -1;
static int hf_homeplug_av_st_iotecha_chanqual_substatus = -1;
static int hf_homeplug_av_st_iotecha_chanqual_mac_local = -1;
static int hf_homeplug_av_st_iotecha_chanqual_mac_remote = -1;
static int hf_homeplug_av_st_iotecha_chanqual_source = -1;
static int hf_homeplug_av_st_iotecha_chanqual_response_type = -1;
static int hf_homeplug_av_st_iotecha_chanqual_tmi_count = -1;
static int hf_homeplug_av_st_iotecha_chanqual_tmi = -1;
static int hf_homeplug_av_st_iotecha_chanqual_int = -1;
static int hf_homeplug_av_st_iotecha_chanqual_int_count = -1;
static int hf_homeplug_av_st_iotecha_chanqual_int_et = -1;
static int hf_homeplug_av_st_iotecha_chanqual_int_tmi = -1;
static int hf_homeplug_av_st_iotecha_chanqual_tmi_attached = -1;
static int hf_homeplug_av_st_iotecha_chanqual_fec_type = -1;
static int hf_homeplug_av_st_iotecha_chanqual_cbld = -1;
static int hf_homeplug_av_st_iotecha_chanqual_cbld_data_low = -1;
static int hf_homeplug_av_st_iotecha_chanqual_cbld_data_high = -1;
static int hf_homeplug_av_st_iotecha_mfct_crc = -1;
static int hf_homeplug_av_st_iotecha_mfct_total_length = -1;
static int hf_homeplug_av_st_iotecha_mfct_offset = -1;
static int hf_homeplug_av_st_iotecha_mfct_length = -1;
static int hf_homeplug_av_st_iotecha_mfct_data = -1;
static int hf_homeplug_av_st_iotecha_mfct_timeout = -1;
static int hf_homeplug_av_st_iotecha_mfct_request_type = -1;
static int hf_homeplug_av_st_iotecha_mfct_reboot = -1;
static int hf_homeplug_av_st_iotecha_mfct_item_offset = -1;
static int hf_homeplug_av_st_iotecha_mfct_item_total_length = -1;
static int hf_homeplug_av_st_iotecha_mfct_name = -1;
static int hf_homeplug_av_st_iotecha_mfct_value = -1;
static int hf_homeplug_av_st_iotecha_mfct_result = -1;
static int hf_homeplug_av_st_iotecha_stp_fup_mac_da = -1;
static int hf_homeplug_av_st_iotecha_stp_fup_mac_sa = -1;
static int hf_homeplug_av_st_iotecha_stp_fup_mtype = -1;
static int hf_homeplug_av_st_iotecha_cpstate_state = -1;
static int hf_homeplug_av_st_iotecha_cpstate_pwm_duty = -1;
static int hf_homeplug_av_st_iotecha_cpstate_pwm_freq = -1;
static int hf_homeplug_av_st_iotecha_cpstate_volatge = -1;
static int hf_homeplug_av_st_iotecha_cpstate_adc_bitmask = -1;
static int hf_homeplug_av_st_iotecha_cpstate_adc_voltage_1 = -1;
static int hf_homeplug_av_st_iotecha_cpstate_adc_voltage_2 = -1;
static int hf_homeplug_av_st_iotecha_cpstate_adc_voltage_3 = -1;
static int hf_homeplug_av_st_iotecha_user_message_info = -1;
static int hf_homeplug_av_st_iotecha_user_message_details = -1;
static int hf_homeplug_av_st_iotecha_test_type = -1;
static int hf_homeplug_av_st_iotecha_num_sound = -1;
static int hf_homeplug_av_st_iotecha_data_ind_addr = -1;
static int hf_homeplug_av_st_iotecha_agc_lock = -1;
static int hf_homeplug_av_st_iotecha_db_agc_val = -1;
static int hf_homeplug_av_st_iotecha_test_status = -1;
static int hf_homeplug_av_st_iotecha_suppress_data = -1;
// STP_TEST_CHAN_ATTEN_DATA
static int hf_homeplug_av_st_iotecha_sound_remain = -1;
static int hf_homeplug_av_st_iotecha_ntb_time = -1;
static int hf_homeplug_av_st_iotecha_rsvd1 = -1;
static int hf_homeplug_av_st_iotecha_rsvd2 = -1;
static int hf_homeplug_av_st_iotecha_num_segments = -1;
static int hf_homeplug_av_st_iotecha_segment = -1;
static int hf_homeplug_av_st_iotecha_num_chan = -1;
static int hf_homeplug_av_st_iotecha_chan_start = -1;
/* End of ST/IoTecha fields */
/* Subtrees ett */
static gint ett_homeplug_av = -1;
static gint ett_homeplug_av_mmhdr = -1;
static gint ett_homeplug_av_mmtype = -1;
static gint ett_homeplug_av_fmi = -1;
static gint ett_homeplug_av_vendor = -1;
static gint ett_homeplug_av_public = -1;
static gint ett_homeplug_av_fc = -1;
static gint ett_homeplug_av_sof = -1;
static gint ett_homeplug_av_sack = -1;
static gint ett_homeplug_av_rtscts = -1;
static gint ett_homeplug_av_sound = -1;
static gint ett_homeplug_av_rsof = -1;
static gint ett_homeplug_av_bcn = -1;
static gint ett_homeplug_av_bcn_payload = -1;
static gint ett_homeplug_av_cc_disc_list_cnf = -1;
static gint ett_homeplug_av_cc_sta_info = -1;
static gint ett_homeplug_av_cc_net_info = -1;
static gint ett_homeplug_av_cm_enc_pld_ind = -1;
static gint ett_homeplug_av_cm_enc_pld_rsp = -1;
static gint ett_homeplug_av_cm_set_key_req = -1;
static gint ett_homeplug_av_cm_set_key_cnf = -1;
static gint ett_homeplug_av_cm_get_key_req = -1;
static gint ett_homeplug_av_cm_get_key_cnf = -1;
static gint ett_homeplug_av_brg_infos_cnf = -1;
static gint ett_homeplug_av_cm_nw_infos_cnf = -1;
static gint ett_homeplug_av_nw_stats_cnf = -1;
static gint ett_homeplug_av_get_sw_cnf = -1;
static gint ett_homeplug_av_wr_mem_req = -1;
static gint ett_homeplug_av_wr_mem_cnf = -1;
static gint ett_homeplug_av_rd_mem_req = -1;
static gint ett_homeplug_av_st_mac_req = -1;
static gint ett_homeplug_av_st_mac_cnf = -1;
static gint ett_homeplug_av_rd_mem_cnf = -1;
static gint ett_homeplug_av_get_nvm_cnf = -1;
static gint ett_homeplug_av_rs_dev_cnf = -1;
static gint ett_homeplug_av_wr_mod_req = -1;
static gint ett_homeplug_av_wr_mod_cnf = -1;
static gint ett_homeplug_av_wr_mod_ind = -1;
static gint ett_homeplug_av_rd_mod_req = -1;
static gint ett_homeplug_av_rd_mod_cnf = -1;
static gint ett_homeplug_av_mod_nvm_req = -1;
static gint ett_homeplug_av_mod_nvm_cnf = -1;
static gint ett_homeplug_av_wd_rpt_req = -1;
static gint ett_homeplug_av_wd_rpt_ind = -1;
static gint ett_homeplug_av_lnk_stats_req = -1;
static gint ett_homeplug_av_lnk_stats_cnf = -1;
static gint ett_homeplug_av_lnk_stats_tx = -1;
static gint ett_homeplug_av_lnk_stats_rx = -1;
static gint ett_homeplug_av_lnk_stats_rx_inv = -1;
static gint ett_homeplug_av_sniffer_req = -1;
static gint ett_homeplug_av_sniffer_cnf = -1;
static gint ett_homeplug_av_sniffer_ind = -1;
static gint ett_homeplug_av_sniffer_ind_data = -1;
static gint ett_homeplug_av_nw_info_cnf = -1;
static gint ett_homeplug_av_nw_info_sta_info = -1;
static gint ett_homeplug_av_nw_info_net_info = -1;
static gint ett_homeplug_av_cp_rpt_req = -1;
static gint ett_homeplug_av_cp_rpt_ind = -1;
static gint ett_homeplug_av_fr_lbk_req = -1;
static gint ett_homeplug_av_fr_lbk_cnf = -1;
static gint ett_homeplug_av_lbk_stat_cnf = -1;
static gint ett_homeplug_av_set_key_req = -1;
static gint ett_homeplug_av_set_key_cnf = -1;
static gint ett_homeplug_av_mfg_string_cnf = -1;
static gint ett_homeplug_av_rd_cblock_cnf = -1;
static gint ett_homeplug_av_cblock_hdr = -1;
static gint ett_homeplug_av_cblock = -1;
static gint ett_homeplug_av_set_sdram_req = -1;
static gint ett_homeplug_av_set_sdram_cnf = -1;
static gint ett_homeplug_av_host_action_ind = -1;
static gint ett_homeplug_av_host_action_rsp = -1;
static gint ett_homeplug_av_op_attr_req = -1;
static gint ett_homeplug_av_op_attr_cnf = -1;
static gint ett_homeplug_av_op_attr_data = -1;
static gint ett_homeplug_av_enet_phy_req = -1;
static gint ett_homeplug_av_enet_phy_cnf = -1;
static gint ett_homeplug_av_tone_map_tx_req = -1;
static gint ett_homeplug_av_tone_map_rx_req = -1;
static gint ett_homeplug_av_tone_map_tx_cnf = -1;
static gint ett_homeplug_av_tone_map_rx_cnf = -1;
static gint ett_homeplug_av_tone_map_carriers = -1;
static gint ett_homeplug_av_tone_map_carrier = -1;
/* HPGP */
static gint ett_homeplug_av_gp_cm_atten_char_profile = -1;
static gint ett_homeplug_av_gp_cm_slac_user_data_tlv = -1;
/* ST/IoTecha specific subtrees */
static gint ett_homeplug_av_st_iotecha_header = -1;
static gint ett_homeplug_av_st_iotecha_type_length_value = -1;
static gint ett_homeplug_av_st_iotecha_chanqual_int = -1;
static gint ett_homeplug_av_st_iotecha_chanqual_cbld = -1;
static gint ett_homeplug_av_st_iotecha_bss_entry = -1;
/* End of ST/IoTecha specific subtrees */
/* Saving vendor specific subtree */
static proto_tree *ti_vendor = 0;
#define HOMEPLUG_AV_MMHDR_LEN 3 /* MM version (1) + MM type (2) */
#define HOMEPLUG_AV_PUBLIC_FRAG_COUNT_MASK 0xF0
#define HOMEPLUG_AV_PUBLIC_FRAG_INDEX_MASK 0x0F
/* MME Values */
/* General MME Types */
typedef enum {
/* Station - Central Coordinator*/
HOMEPLUG_AV_MMTYPE_GENERAL_CC_BACKUP_APPOINT_REQ = 0x0004,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_BACKUP_APPOINT_CNF = 0x0005,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_INFO_REQ = 0x0008,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_INFO_CNF = 0x0009,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_INFO_IND = 0x000A,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_INFO_RSP = 0x000B,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_HANDOVER_REQ = 0x000C,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_HANDOVER_CNF = 0x000D,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_HANDOVER_INFO_IND = 0x0012,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_HANDOVER_INFO_RSP = 0x0013,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_DISCOVER_LIST_REQ = 0x0014,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_DISCOVER_LIST_CNF = 0x0015,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_DISCOVER_LIST_IND = 0x0016,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_NEW_REQ = 0x0018,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_NEW_CNF = 0x0019,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_MOD_REQ = 0x001C,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_MOD_CNF = 0x001D,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_SQZ_REQ = 0x0020,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_SQZ_CNF = 0x0021,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_REL_REQ = 0x0024,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_REL_IND = 0x0026,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_DETECTC_REPORT_REQ = 0x0028,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_DETECTC_REPORT_CNF = 0x0029,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_WHO_RU_REQ = 0x002C,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_WHO_RU_CNF = 0x002D,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_ASSOC_REQ = 0x0030,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_ASSOC_CNF = 0x0031,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_LEAVE_REQ = 0x0034,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_LEAVE_CNF = 0x0035,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_LEAVE_IND = 0x0036,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_LEAVE_RSP = 0x0037,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_SET_TEI_MAP_REQ = 0x0038,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_SET_TEI_MAP_IND = 0x003A,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_RELAY_REQ = 0x003C,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_RELAY_IND = 0x003E,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_BEACON_RELIABILITY_REQ = 0x0040,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_BEACON_RELIABILITY_CNF = 0x0041,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_ALLOC_MOVE_REQ = 0x0044,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_ALLOC_MOVE_CNF = 0x0045,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_ACCESS_NEW_REQ = 0x0048,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_ACCESS_NEW_CNF = 0x0049,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_ACCESS_NEW_IND = 0x004A,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_ACCESS_NEW_RSP = 0x004B,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_ACCESS_REL_REQ = 0x004C,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_ACCESS_REL_CNF = 0x004D,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_ACCESS_REL_IND = 0x004E,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_ACCESS_REL_RSP = 0x004F,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_DCPPC_IND = 0x0052,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_DCPPC_RSP = 0x0053,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_HP1_DET_REQ = 0x0054,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_HP1_DET_CNF = 0x0055,
HOMEPLUG_AV_MMTYPE_GENERAL_CC_BLE_UPDATE_IND = 0x005A,
/* HPGP Specific*/
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_BCAST_REPEAT_IND = 0x005E,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_BCAST_REPEAT_RSP = 0x005F,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_MH_LINK_NEW_REQ = 0x0060,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_MH_LINK_NEW_CNF = 0x0061,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_ISP_DETECTION_REPORT_IND = 0x0066,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_ISP_START_RESYNC_REQ = 0x0068,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_ISP_FINISH_RESYNC_REQ = 0x006C,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_ISP_DETECTED_RESYNC_IND = 0x0072,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_ISP_TRANSMIT_RESYNC_REQ = 0x0074,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_POWERSAVE_REQ = 0x0078,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_POWERSAVE_CNF = 0x0079,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_POWERSAVE_EXIT_REQ = 0x007C,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_POWERSAVE_EXIT_CNF = 0x007D,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_POWERSAVE_LIST_REQ = 0x0080,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_POWERSAVE_LIST_CNF = 0x0081,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_POWERSAVE_STOP_REQ = 0x0084,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_POWERSAVE_STOP_CNF = 0x0085,
/* Proxy Coordinator */
HOMEPLUG_AV_MMTYPE_GENERAL_CP_PROXY_APPOINT_REQ = 0x2000,
HOMEPLUG_AV_MMTYPE_GENERAL_CP_PROXY_APPOINT_CNF = 0x2001,
HOMEPLUG_AV_MMTYPE_GENERAL_PH_PROXY_APPOINT_IND = 0x2006,
HOMEPLUG_AV_MMTYPE_GENERAL_CP_PROXY_WAKE_REQ = 0x2008,
/* CCo - CCo */
HOMEPLUG_AV_MMTYPE_GENERAL_NN_INL_REQ = 0x4000,
HOMEPLUG_AV_MMTYPE_GENERAL_NN_INL_CNF = 0x4001,
HOMEPLUG_AV_MMTYPE_GENERAL_NN_NEW_NET_REQ = 0x4004,
HOMEPLUG_AV_MMTYPE_GENERAL_NN_NEW_NET_CNF = 0x4005,
HOMEPLUG_AV_MMTYPE_GENERAL_NN_NEW_NET_IND = 0x4006,
HOMEPLUG_AV_MMTYPE_GENERAL_NN_ADD_ALLOC_REQ = 0x4008,
HOMEPLUG_AV_MMTYPE_GENERAL_NN_ADD_ALLOC_CNF = 0x4009,
HOMEPLUG_AV_MMTYPE_GENERAL_NN_ADD_ALLOC_IND = 0x400A,
HOMEPLUG_AV_MMTYPE_GENERAL_NN_REL_ALLOC_REQ = 0x400C,
HOMEPLUG_AV_MMTYPE_GENERAL_NN_REL_ALLOC_CNF = 0x400D,
HOMEPLUG_AV_MMTYPE_GENERAL_NN_REL_NET_IND = 0x4012,
/* Station - Station */
HOMEPLUG_AV_MMTYPE_GENERAL_CM_UNASSOCIATED_STA_IND = 0x6002,
HOMEPLUG_AV_MMTYPE_GENERAL_CM_ENCRYPTED_PAYLOAD_IND = 0x6006,
HOMEPLUG_AV_MMTYPE_GENERAL_CM_ENCRYPTED_PAYLOAD_RSP = 0x6007,
HOMEPLUG_AV_MMTYPE_GENERAL_CM_SET_KEY_REQ = 0x6008,
HOMEPLUG_AV_MMTYPE_GENERAL_CM_SET_KEY_CNF = 0x6009,
HOMEPLUG_AV_MMTYPE_GENERAL_CM_GET_KEY_REQ = 0x600C,
HOMEPLUG_AV_MMTYPE_GENERAL_CM_GET_KEY_CNF = 0x600D,
HOMEPLUG_AV_MMTYPE_GENERAL_CM_SC_JOIN_REQ = 0x6010,
HOMEPLUG_AV_MMTYPE_GENERAL_CM_SC_JOIN_CNF = 0x6011,
HOMEPLUG_AV_MMTYPE_GENERAL_CM_SC_CHAN_EST_IND = 0x6016,
HOMEPLUG_AV_MMTYPE_GENERAL_CM_TM_UPDATE_IND = 0x601A,
HOMEPLUG_AV_MMTYPE_GENERAL_CM_AMP_MAP_REQ = 0x601C,
HOMEPLUG_AV_MMTYPE_GENERAL_CM_AMP_MAP_CNF = 0x601D,
HOMEPLUG_AV_MMTYPE_GENERAL_CM_BRG_INFO_REQ = 0x6020,
HOMEPLUG_AV_MMTYPE_GENERAL_CM_BRG_INFO_CNF = 0x6021,
HOMEPLUG_AV_MMTYPE_GENERAL_CM_CONN_NEW_REQ = 0x6024,
HOMEPLUG_AV_MMTYPE_GENERAL_CM_CONN_NEW_CNF = 0x6025,
HOMEPLUG_AV_MMTYPE_GENERAL_CM_CONN_REL_IND = 0x602A,
HOMEPLUG_AV_MMTYPE_GENERAL_CM_CONN_REL_RSP = 0x602B,
HOMEPLUG_AV_MMTYPE_GENERAL_CM_CONN_MOD_REQ = 0x602C,
HOMEPLUG_AV_MMTYPE_GENERAL_CM_CONN_MOD_CNF = 0x602D,
HOMEPLUG_AV_MMTYPE_GENERAL_CM_CONN_INFO_REQ = 0x6030,
HOMEPLUG_AV_MMTYPE_GENERAL_CM_CONN_INFO_CNF = 0x6031,
HOMEPLUG_AV_MMTYPE_GENERAL_CM_STA_CAP_REQ = 0x6034,
HOMEPLUG_AV_MMTYPE_GENERAL_CM_STA_CAP_CNF = 0x6035,
HOMEPLUG_AV_MMTYPE_GENERAL_CM_NW_INFO_REQ = 0x6038,
HOMEPLUG_AV_MMTYPE_GENERAL_CM_NW_INFO_CNF = 0x6039,
HOMEPLUG_AV_MMTYPE_GENERAL_CM_GET_BEACON_REQ = 0x603C,
HOMEPLUG_AV_MMTYPE_GENERAL_CM_GET_BEACON_CNF = 0x603D,
HOMEPLUG_AV_MMTYPE_GENERAL_CM_HFID_REQ = 0x6040,
HOMEPLUG_AV_MMTYPE_GENERAL_CM_HFID_CNF = 0x6041,
HOMEPLUG_AV_MMTYPE_GENERAL_CM_MME_ERROR_IND = 0x6046,
HOMEPLUG_AV_MMTYPE_GENERAL_CM_NW_STATS_REQ = 0x6048,
HOMEPLUG_AV_MMTYPE_GENERAL_CM_NW_STATS_CNF = 0x6049,
HOMEPLUG_AV_MMTYPE_GENERAL_CM_LINK_STATS_REQ = 0x604C,
HOMEPLUG_AV_MMTYPE_GENERAL_CM_LINK_STATS_CNF = 0x604D,
/* HPGP Specific*/
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_ROUTE_INFO_REQ = 0x6050,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_ROUTE_INFO_CNF = 0x6051,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_ROUTE_INFO_IND = 0x6052,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_UNREACHABLE_IND = 0x6056,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_MH_CONN_NEW_REQ = 0x6058,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_MH_CONN_NEW_CNF = 0x6059,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_EXTENDED_TONEMASK_REQ = 0x605C,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_EXTENDED_TONEMASK_CNF = 0x605D,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_STA_INDENTIFY_REQ = 0x6060,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_STA_INDENTIFY_CNF = 0x6061,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_STA_INDENTIFY_IND = 0x6062,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_STA_INDENTIFY_RSP = 0x6063,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_SLAC_PARM_REQ = 0x6064,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_SLAC_PARM_CNF = 0x6065,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_START_ATTEN_CHAR_IND = 0x606A,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_ATTEN_CHAR_IND = 0x606E,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_ATTEN_CHAR_RSP = 0x606F,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_PKCS_CERT_REQ = 0x6070,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_PKCS_CERT_CNF = 0x6071,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_PKCS_CERT_IND = 0x6072,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_PKCS_CERT_RSP = 0x6073,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_MNBC_SOUND_IND = 0x6076,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_VALIDATE_REQ = 0x6078,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_VALIDATE_CNF = 0x6079,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_SLAC_MATCH_REQ = 0x607C,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_SLAC_MATCH_CNF = 0x607D,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_SLAC_USER_DATA_REQ = 0x6080,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_SLAC_USER_DATA_CNF = 0x6081,
HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_ATTEN_PROFILE_IND = 0x6086,
} homeplug_av_mmetypes_general_type;
/* QCA MME Types */
typedef enum {
HOMEPLUG_AV_MMTYPE_QUALCOMM_GET_SW_REQ = 0xA000,
HOMEPLUG_AV_MMTYPE_QUALCOMM_GET_SW_CNF = 0xA001,
HOMEPLUG_AV_MMTYPE_QUALCOMM_WR_MEM_REQ = 0xA004,
HOMEPLUG_AV_MMTYPE_QUALCOMM_WR_MEM_CNF = 0xA005,
HOMEPLUG_AV_MMTYPE_QUALCOMM_RD_MEM_REQ = 0xA008,
HOMEPLUG_AV_MMTYPE_QUALCOMM_RD_MEM_CNF = 0xA009,
HOMEPLUG_AV_MMTYPE_QUALCOMM_ST_MAC_REQ = 0xA00C,
HOMEPLUG_AV_MMTYPE_QUALCOMM_ST_MAC_CNF = 0xA00D,
HOMEPLUG_AV_MMTYPE_QUALCOMM_GET_NVM_REQ = 0xA010,
HOMEPLUG_AV_MMTYPE_QUALCOMM_GET_NVM_CNF = 0xA011,
HOMEPLUG_AV_MMTYPE_QUALCOMM_RS_DEV_REQ = 0xA01C,
HOMEPLUG_AV_MMTYPE_QUALCOMM_RS_DEV_CNF = 0xA01D,
HOMEPLUG_AV_MMTYPE_QUALCOMM_WR_MOD_REQ = 0xA020,
HOMEPLUG_AV_MMTYPE_QUALCOMM_WR_MOD_CNF = 0xA021,
HOMEPLUG_AV_MMTYPE_QUALCOMM_WR_MOD_IND = 0xA022,
HOMEPLUG_AV_MMTYPE_QUALCOMM_RD_MOD_REQ = 0xA024,
HOMEPLUG_AV_MMTYPE_QUALCOMM_RD_MOD_CNF = 0xA025,
HOMEPLUG_AV_MMTYPE_QUALCOMM_NVM_MOD_REQ = 0xA028,
HOMEPLUG_AV_MMTYPE_QUALCOMM_NVM_MOD_CNF = 0xA029,
HOMEPLUG_AV_MMTYPE_QUALCOMM_WD_RPT_REQ = 0xA02C,
HOMEPLUG_AV_MMTYPE_QUALCOMM_WD_RPT_IND = 0xA02E,
HOMEPLUG_AV_MMTYPE_QUALCOMM_LNK_STATS_REQ = 0xA030,
HOMEPLUG_AV_MMTYPE_QUALCOMM_LNK_STATS_CNF = 0xA031,
HOMEPLUG_AV_MMTYPE_QUALCOMM_SNIFFER_REQ = 0xA034,
HOMEPLUG_AV_MMTYPE_QUALCOMM_SNIFFER_CNF = 0xA035,
HOMEPLUG_AV_MMTYPE_QUALCOMM_SNIFFER_IND = 0xA036,
HOMEPLUG_AV_MMTYPE_QUALCOMM_NW_INFO_REQ = 0xA038,
HOMEPLUG_AV_MMTYPE_QUALCOMM_NW_INFO_CNF = 0xA039,
HOMEPLUG_AV_MMTYPE_QUALCOMM_CP_RPT_REQ = 0xA040,
HOMEPLUG_AV_MMTYPE_QUALCOMM_CP_RPT_IND = 0xA042,
HOMEPLUG_AV_MMTYPE_QUALCOMM_FR_LBK_REQ = 0xA048,
HOMEPLUG_AV_MMTYPE_QUALCOMM_FR_LBK_CNF = 0xA049,
HOMEPLUG_AV_MMTYPE_QUALCOMM_LBK_STAT_REQ = 0xA04C,
HOMEPLUG_AV_MMTYPE_QUALCOMM_LBK_STAT_CNF = 0xA04D,
HOMEPLUG_AV_MMTYPE_QUALCOMM_SET_KEY_REQ = 0xA050,
HOMEPLUG_AV_MMTYPE_QUALCOMM_SET_KEY_CNF = 0xA051,
HOMEPLUG_AV_MMTYPE_QUALCOMM_MFG_STRING_REQ = 0xA054,
HOMEPLUG_AV_MMTYPE_QUALCOMM_MFG_STRING_CNF = 0xA055,
HOMEPLUG_AV_MMTYPE_QUALCOMM_RD_CBLOCK_REQ = 0xA058,
HOMEPLUG_AV_MMTYPE_QUALCOMM_RD_CBLOCK_CNF = 0xA059,
HOMEPLUG_AV_MMTYPE_QUALCOMM_SET_SDRAM_REQ = 0xA05C,
HOMEPLUG_AV_MMTYPE_QUALCOMM_SET_SDRAM_CNF = 0xA05D,
HOMEPLUG_AV_MMTYPE_QUALCOMM_HOST_ACTION_IND = 0xA062,
HOMEPLUG_AV_MMTYPE_QUALCOMM_HOST_ACTION_RSP = 0xA063,
HOMEPLUG_AV_MMTYPE_QUALCOMM_OP_ATTR_REQ = 0xA068,
HOMEPLUG_AV_MMTYPE_QUALCOMM_OP_ATTR_CNF = 0xA069,
HOMEPLUG_AV_MMTYPE_QUALCOMM_GET_ENET_PHY_REQ = 0xA06C,
HOMEPLUG_AV_MMTYPE_QUALCOMM_GET_ENET_PHY_CNF = 0xA06D,
HOMEPLUG_AV_MMTYPE_QUALCOMM_TONE_MAP_TX_REQ = 0xA070,
HOMEPLUG_AV_MMTYPE_QUALCOMM_TONE_MAP_TX_CNF = 0xA071,
HOMEPLUG_AV_MMTYPE_QUALCOMM_TONE_MAP_RX_REQ = 0xA090,
HOMEPLUG_AV_MMTYPE_QUALCOMM_TONE_MAP_RX_CNF = 0xA091,
HOMEPLUG_AV_MMTYPE_QUALCOMM_LINK_STATUS_REQ = 0xA0B8,
HOMEPLUG_AV_MMTYPE_QUALCOMM_LINK_STATUS_CNF = 0xA0B9,
} homeplug_av_mmetypes_qualcomm_type;
/* ST/IoTecha MME Types */
typedef enum {
HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_AUTH_SET_NMK_REQ = 0x8000,
HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_AUTH_SET_NMK_CNF = 0x8001,
HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_LINK_STATUS_REQ = 0x8004,
HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_LINK_STATUS_CNF = 0x8005,
HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_LINK_STATUS_IND = 0x8006,
HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_DISCOVER_LOCAL_REQ = 0x8008,
HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_DISCOVER_LOCAL_CNF = 0x8009,
HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_SET_MAXGAIN_REQ = 0x800C,
HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_SET_MAXGAIN_CNF = 0x800D,
HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_DISCOVER_REQ = 0xA000,
HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_DISCOVER_CNF = 0xA001,
HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_GET_TEI_LIST_REQ = 0xA00C,
HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_GET_TEI_LIST_CNF = 0xA00D,
HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_GET_TEI_SNAPSHOT_REQ = 0xA010,
HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_GET_TEI_SNAPSHOT_CNF = 0xA011,
HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_GET_BSS_LIST_REQ = 0xA014,
HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_GET_BSS_LIST_CNF = 0xA015,
HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_CHANQUAL_REPORT_REQ = 0xA018,
HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_CHANQUAL_REPORT_CNF = 0xA019,
HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_CHANQUAL_REPORT_IND = 0xA01A,
HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_TEST_CHAN_ATTEN_START_RX_REQ = 0xA100,
HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_TEST_CHAN_ATTEN_START_RX_CNF = 0xA101,
HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_TEST_CHAN_ATTEN_DATA_IND = 0xA106,
HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_TEST_CHAN_ATTEN_START_TX_REQ = 0xA108,
HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_TEST_CHAN_ATTEN_START_TX_CNF = 0xA109,
HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_TEST_SOUND_QUIET_IND = 0xA10E,
HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_UPDATE_STAGE_REQ = 0xA200,
HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_UPDATE_STAGE_CNF = 0xA201,
HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_UPDATE_FINISH_REQ = 0xA204,
HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_UPDATE_FINISH_CNF = 0xA205,
HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_GET_ITEM_REQ = 0xA208,
HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_GET_ITEM_CNF = 0xA209,
HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_GET_KEYLIST_REQ = 0xA20C,
HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_GET_KEYLIST_CNF = 0xA20D,
HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_FUP_REQ = 0xA210,
HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_RESERVED_REQ = 0xA214,
HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_CPSTATE_IND = 0xA22E,
HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_USER_MESSAGE_IND = 0xA232,
} homeplug_av_mmetypes_st_iotecha_type;
/* Vendors OUI */
#define HOMEPLUG_AV_OUI_NONE 0
#define HOMEPLUG_AV_OUI_QCA 0x00B052
#define HOMEPLUG_AV_OUI_ST_IOTECHA 0x0080E1
static const value_string homeplug_av_vendors_oui_vals[] = {
{ HOMEPLUG_AV_OUI_QCA, "Qualcomm Atheros" },
{ HOMEPLUG_AV_OUI_ST_IOTECHA, "ST/IoTecha" },
{ 0, NULL }
};
/* Packet names */
/* Public MMEs */
static const value_string homeplug_av_mmtype_general_vals[] = {
/* Station - Central Coordinator*/
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_BACKUP_APPOINT_REQ , "CC_BACKUP_APPOINT.REQ" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_BACKUP_APPOINT_CNF , "CC_BACKUP_APPOINT.CNF" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_INFO_REQ , "CC_LINK_INFO.REQ" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_INFO_CNF , "CC_LINK_INFO.CNF" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_INFO_IND , "CC_LINK_INFO.IND" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_INFO_RSP , "CC_LINK_INFO.RSP" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_HANDOVER_REQ , "CC_HANDOVER.REQ" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_HANDOVER_CNF , "CC_HANDOVER.CNF" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_HANDOVER_INFO_IND , "CC_HANDOVER_INFO.IND" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_HANDOVER_INFO_RSP , "CC_HANDOVER_INFO.RSP" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_DISCOVER_LIST_REQ , "CC_DISCOVER_LIST.REQ (Central Coordination Discovery List Request)" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_DISCOVER_LIST_CNF , "CC_DISCOVER_LIST.CNF (Central Coordination Discovery List Confirmation)" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_DISCOVER_LIST_IND , "CC_DISCOVER_LIST.IND" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_NEW_REQ , "CC_LINK_NEW.REQ" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_NEW_CNF , "CC_LINK_NEW.CNF" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_MOD_REQ , "CC_LINK_MOD.REQ" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_MOD_CNF , "CC_LINK_MOD.CNF" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_SQZ_REQ , "CC_LINK_SQZ.REQ" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_SQZ_CNF , "CC_LINK_SQZ.CNF" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_REL_REQ , "CC_LINK_REL.REQ" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_REL_IND , "CC_LINK_REL.IND" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_DETECTC_REPORT_REQ , "CC_DETECTC_REPORT.REQ" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_DETECTC_REPORT_CNF , "CC_DETECTC_REPORT.CNF" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_WHO_RU_REQ , "CC_WHO_RU.REQ" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_WHO_RU_CNF , "CC_WHO_RU.CNF" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_ASSOC_REQ , "CC_ASSOC.REQ" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_ASSOC_CNF , "CC_ASSOC.CNF" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_LEAVE_REQ , "CC_LEAVE.REQ" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_LEAVE_CNF , "CC_LEAVE.CNF" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_LEAVE_IND , "CC_LEAVE.IND" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_LEAVE_RSP , "CC_LEAVE.RSP" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_SET_TEI_MAP_REQ , "CC_SET_TEI_MAP.REQ" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_SET_TEI_MAP_IND , "CC_SET_TEI_MAP.IND" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_RELAY_REQ , "CC_RELAY.REQ" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_RELAY_IND , "CC_RELAY.IND" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_BEACON_RELIABILITY_REQ , "CC_BEACON_RELIABILITY.REQ" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_BEACON_RELIABILITY_CNF , "CC_BEACON_RELIABILITY.CNF" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_ALLOC_MOVE_REQ , "CC_ALLOC_MOVE.REQ" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_ALLOC_MOVE_CNF , "CC_ALLOC_MOVE.CNF" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_ACCESS_NEW_REQ , "CC_ACCESS_NEW.REQ" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_ACCESS_NEW_CNF , "CC_ACCESS_NEW.CNF" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_ACCESS_NEW_IND , "CC_ACCESS_NEW.IND" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_ACCESS_NEW_RSP , "CC_ACCESS_NEW.RSP" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_ACCESS_REL_REQ , "CC_ACCESS_REL.REQ" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_ACCESS_REL_CNF , "CC_ACCESS_REL.CNF" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_ACCESS_REL_IND , "CC_ACCESS_REL.IND" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_ACCESS_REL_RSP , "CC_ACCESS_REL.RSP" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_DCPPC_IND , "CC_DCPPC.IND" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_DCPPC_RSP , "CC_DCPPC.RSP" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_HP1_DET_REQ , "CC_HP1_DET.REQ" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_HP1_DET_CNF , "CC_HP1_DET.CNF" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CC_BLE_UPDATE_IND , "CC_BLE_UPDATE.IND" },
/* HPGP Specific*/
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_BCAST_REPEAT_IND , "CC_BCAST_REPEAT.IND" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_BCAST_REPEAT_RSP , "CC_BCAST_REPEAT.RSP" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_MH_LINK_NEW_REQ , "CC_MH_LINK_NEW.REQ" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_MH_LINK_NEW_CNF , "CC_MH_LINK_NEW.CNF" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_ISP_DETECTION_REPORT_IND , "CC_ISP_DETECTION_REPORT.IND" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_ISP_START_RESYNC_REQ , "CC_ISP_START_RESYNC.REQ" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_ISP_FINISH_RESYNC_REQ , "CC_ISP_FINISH_RESYNC.REQ" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_ISP_DETECTED_RESYNC_IND , "CC_ISP_DETECTED_RESYNC.IND" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_ISP_TRANSMIT_RESYNC_REQ , "CC_ISP_TRANSMIT_RESYNC.REQ" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_POWERSAVE_REQ , "CC_POWERSAVE.REQ" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_POWERSAVE_CNF , "CC_POWERSAVE.CNF" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_POWERSAVE_EXIT_REQ , "CC_POWERSAVE_EXIT.REQ" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_POWERSAVE_EXIT_CNF , "CC_POWERSAVE_EXIT.CNF" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_POWERSAVE_LIST_REQ , "CC_POWERSAVE_LIST.REQ" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_POWERSAVE_LIST_CNF , "CC_POWERSAVE_LIST.CNF" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_POWERSAVE_STOP_REQ , "CC_POWERSAVE_STOP.REQ" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_POWERSAVE_STOP_CNF , "CC_POWERSAVE_STOP.CNF" },
/* Proxy Coordinator */
{ HOMEPLUG_AV_MMTYPE_GENERAL_CP_PROXY_APPOINT_REQ , "CP_PROXY_APPOINT.REQ" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CP_PROXY_APPOINT_CNF , "CP_PROXY_APPOINT.CNF" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_PH_PROXY_APPOINT_IND , "PH_PROXY_APPOINT.IND" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CP_PROXY_WAKE_REQ , "CP_PROXY_WAKE.REQ" },
/* CCo - CCo */
{ HOMEPLUG_AV_MMTYPE_GENERAL_NN_INL_REQ , "NN_INL.REQ" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_NN_INL_CNF , "NN_INL.CNF" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_NN_NEW_NET_REQ , "NN_NEW_NET.REQ" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_NN_NEW_NET_CNF , "NN_NEW_NET.CNF" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_NN_NEW_NET_IND , "NN_NEW_NET.IND" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_NN_ADD_ALLOC_REQ , "NN_ADD_ALLOC.REQ" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_NN_ADD_ALLOC_CNF , "NN_ADD_ALLOC.CNF" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_NN_ADD_ALLOC_IND , "NN_ADD_ALLOC.IND" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_NN_REL_ALLOC_REQ , "NN_REL_ALLOC.REQ" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_NN_REL_ALLOC_CNF , "NN_REL_ALLOC.CNF" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_NN_REL_NET_IND , "NN_REL_NET.IND" },
/* Station - Station */
{ HOMEPLUG_AV_MMTYPE_GENERAL_CM_UNASSOCIATED_STA_IND , "CM_UNASSOCIATED_STA.IND" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CM_ENCRYPTED_PAYLOAD_IND , "CM_ENCRYPTED_PAYLOAD.IND (Encrypted Payload Indicate)" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CM_ENCRYPTED_PAYLOAD_RSP , "CM_ENCRYPTED_PAYLOAD.RSP (Encrypted Payload Response)" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CM_SET_KEY_REQ , "CM_SET_KEY.REQ (Set Key Request)" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CM_SET_KEY_CNF , "CM_SET_KEY.CNF (Set Key Confirmation)" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CM_GET_KEY_REQ , "CM_GET_KEY.REQ (Get Key Request)" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CM_GET_KEY_CNF , "CM_GET_KEY.CNF (Get Key Confirmation)" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CM_SC_JOIN_REQ , "CM_SC_JOIN.REQ" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CM_SC_JOIN_CNF , "CM_SC_JOIN.CNF" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CM_SC_CHAN_EST_IND , "CM_SC_CHAN_EST.IND" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CM_TM_UPDATE_IND , "CM_TM_UPDATE.IND" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CM_AMP_MAP_REQ , "CM_AMP_MAP.REQ" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CM_AMP_MAP_CNF , "CM_AMP_MAP.CNF" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CM_BRG_INFO_REQ , "CM_BRG_INFO.REQ (Get Bridge Informations Request)" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CM_BRG_INFO_CNF , "CM_BRG_INFO.CNF (Get Bridge Informations Confirmation)" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CM_CONN_NEW_REQ , "CM_CONN_NEW.REQ" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CM_CONN_NEW_CNF , "CM_CONN_NEW.CNF" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CM_CONN_REL_IND , "CM_CONN_REL.IND" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CM_CONN_REL_RSP , "CM_CONN_REL.RSP" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CM_CONN_MOD_REQ , "CM_CONN_MOD.REQ" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CM_CONN_MOD_CNF , "CM_CONN_MOD.CNF" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CM_CONN_INFO_REQ , "CM_CONN_INFO.REQ" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CM_CONN_INFO_CNF , "CM_CONN_INFO.CNF" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CM_STA_CAP_REQ , "CM_STA_CAP.REQ" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CM_STA_CAP_CNF , "CM_STA_CAP.CNF" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CM_NW_INFO_REQ , "CM_NW_INFO.REQ (Get Network Informations Request)" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CM_NW_INFO_CNF , "CM_NW_INFO.CNF (Get Network Informations Confirmation)" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CM_GET_BEACON_REQ , "CM_GET_BEACON.REQ" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CM_GET_BEACON_CNF , "CM_GET_BEACON.CNF" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CM_HFID_REQ , "CM_HFID.REQ" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CM_HFID_CNF , "CM_HFID.CNF" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CM_MME_ERROR_IND , "CM_MME_ERROR.IND" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CM_NW_STATS_REQ , "CM_NW_STATS.REQ (Get Network Statistics Request)" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CM_NW_STATS_CNF , "CM_NW_STATS.CNF (Get Network Statistics Confirmation)" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CM_LINK_STATS_REQ , "CM_LINK_STATS.REQ" },
{ HOMEPLUG_AV_MMTYPE_GENERAL_CM_LINK_STATS_CNF , "CM_LINK_STATS.CNF" },
/* HPGP Specific*/
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_ROUTE_INFO_REQ , "CM_ROUTE_INFO.REQ" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_ROUTE_INFO_CNF , "CM_ROUTE_INFO.CNF" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_ROUTE_INFO_IND , "CM_ROUTE_INFO.IND" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_UNREACHABLE_IND , "CM_UNREACHABLE.IND" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_MH_CONN_NEW_REQ , "CM_MH_CONN_NEW.REQ" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_MH_CONN_NEW_CNF , "CM_MH_CONN_NEW.CNF" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_EXTENDED_TONEMASK_REQ , "CM_EXTENDED_TONEMASK.REQ" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_EXTENDED_TONEMASK_CNF , "CM_EXTENDED_TONEMASK.CNF" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_STA_INDENTIFY_REQ , "CM_STA_INDENTIFY.REQ" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_STA_INDENTIFY_CNF , "CM_STA_INDENTIFY_CNF" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_STA_INDENTIFY_IND , "CM_STA_INDENTIFY.IND" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_STA_INDENTIFY_RSP , "CM_STA_INDENTIFY.RSP" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_SLAC_PARM_REQ , "CM_SLAC_PARM.REQ" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_SLAC_PARM_CNF , "CM_SLAC_PARM.CNF" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_START_ATTEN_CHAR_IND , "CM_START_ATTEN_CHAR.IND" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_ATTEN_CHAR_IND , "CM_ATTEN_CHAR.IND" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_ATTEN_CHAR_RSP , "CM_ATTEN_CHAR.RSP" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_PKCS_CERT_REQ , "CM_PKCS_CERT.REQ" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_PKCS_CERT_CNF , "CM_PKCS_CERT.CNF" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_PKCS_CERT_IND , "CM_PKCS_CERT.IND" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_PKCS_CERT_RSP , "CM_PKCS_CERT.RSP" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_MNBC_SOUND_IND , "CM_MNBC_SOUND.IND" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_VALIDATE_REQ , "CM_VALIDATE.REQ" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_VALIDATE_CNF , "CM_VALIDATE.CNF" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_SLAC_MATCH_REQ , "CM_SLAC_MATCH.REQ" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_SLAC_MATCH_CNF , "CM_SLAC_MATCH.CNF" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_SLAC_USER_DATA_REQ , "CM_SLAC_USER_DATA.REQ" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_SLAC_USER_DATA_CNF , "CM_SLAC_USER_DATA.CNF" },
{ HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_ATTEN_PROFILE_IND , "CM_ATTEN_PROFILE.IND" },
{ 0, NULL }
};
/* QCA vendor-specific MMEs */
static const value_string homeplug_av_mmtype_qualcomm_vals[] = {
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_GET_SW_REQ, "GET_SW.REQ (Get Device/SW Version Request)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_GET_SW_CNF, "GET_SW.CNF (Get Device/SW Version Confirmation)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_WR_MEM_REQ, "WR_MEM.REQ (Write MAC Memory Request)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_WR_MEM_CNF, "WR_MEM.CNF (Write MAC Memory Confirmation)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_RD_MEM_REQ, "RD_MEM.REQ (Read MAC Memory Request)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_RD_MEM_CNF, "RD_MEM.CNF (Read MAC Memory Confirmation)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_ST_MAC_REQ, "ST_MAC.REQ (Start MAC Request)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_ST_MAC_CNF, "ST_MAC.CNF (Start MAC Confirmation)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_GET_NVM_REQ, "GET_NVM.REQ (Get NVM Parameters Request)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_GET_NVM_CNF, "GET_NVM.CNF (Get NVM Parameters Confirmation)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_RS_DEV_REQ, "RS_DEV.REQ (Reset Device Request)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_RS_DEV_CNF, "RS_DEV.CNF (Reset Device Confirmation)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_WR_MOD_REQ, "WR_MOD.REQ (Write Module Data Request)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_WR_MOD_CNF, "WR_MOD.CNF (Write Module Data Confirmation)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_WR_MOD_IND, "WR_MOD.IND (Write Module Data Indicate)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_RD_MOD_REQ, "RD_MOD.REQ (Read Module Data Request)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_RD_MOD_CNF, "RD_MOD.CNF (Read Module Data Confirmation)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_NVM_MOD_REQ, "NVM_MOD.REQ (Write Module Data to NVM Request)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_NVM_MOD_CNF, "NVM_MOD.CNF (Write Module Data to NVM Confirmation)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_WD_RPT_REQ, "WD_RPT.REQ (Get Watchdog Report Request)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_WD_RPT_IND, "WD_RPT.IND (Get Watchdog Report Indicate)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_LNK_STATS_REQ, "LNK_STATS.REQ (Link Statistics Request)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_LNK_STATS_CNF, "LNK_STATS.CNF (Link Statistics Confirmation)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_SNIFFER_REQ, "SNIFFER.REQ (Sniffer Request)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_SNIFFER_CNF, "SNIFFER.CNF (Sniffer Confirmation)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_SNIFFER_IND, "SNIFFER.IND (Sniffer Indicate)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_NW_INFO_REQ, "NW_INFO.REQ (Network Info Request)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_NW_INFO_CNF, "NW_INFO.CNF (Network Info Confirmation)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_CP_RPT_REQ, "CP_RPT.REQ (Check Points Request)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_CP_RPT_IND, "CP_RPT.IND (Check Points Indicate)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_FR_LBK_REQ, "FR_LBK.REQ (Loopback Request)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_FR_LBK_CNF, "FR_LBK.CNF (Loopback Confirmation)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_LBK_STAT_REQ, "LBK_STAT.REQ (Loopback Status Request)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_LBK_STAT_CNF, "LBK_STAT.CNF (Loopback Status Confirmation)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_SET_KEY_REQ, "SET_KEY.REQ (Set Encryption Key Request)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_SET_KEY_CNF, "SET_KEY.CNF (Set Encryption Key Confirmation)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_MFG_STRING_REQ, "MFG_STRING.REQ (Get Manufacturer String Request)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_MFG_STRING_CNF, "MFG_STRING.CNF (Get Manufacturer String Confirmation)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_RD_CBLOCK_REQ, "RD_CBLOCK.REQ (Read Configuration Block Request)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_RD_CBLOCK_CNF, "RD_CBLOCK.CNF (Read Configuration Block Confirmation)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_SET_SDRAM_REQ, "SET_SDRAM.REQ (Set SDRAM Configuration Request)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_SET_SDRAM_CNF, "SET_SDRAM.CNF (Set SDRAM Configuration Confirmation)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_HOST_ACTION_IND, "HOST_ACTION.IND (Embedded Host Action Required Indication)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_HOST_ACTION_RSP, "HOST_ACTION.RSP (Embedded Host Action Required Response)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_OP_ATTR_REQ, "OP_ATTR.REQ (Get Device Attributes Request)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_OP_ATTR_CNF, "OP_ATTR.CNF (Get Device Attributes Confirmation)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_GET_ENET_PHY_REQ, "GET_ENET_PHY.REQ (Get Ethernet PHY Settings Request)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_GET_ENET_PHY_CNF, "GET_ENET_PHY.CNF (Get Ethernet PHY Settings Confirmation)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_TONE_MAP_TX_REQ, "TONE_MAP_TX.REQ (Tone Map Tx Characteristics Request)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_TONE_MAP_TX_CNF, "TONE_MAP_TX.CNF (Tone Map Tx Characteristics Confirmation)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_TONE_MAP_RX_REQ, "TONE_MAP_RX.REQ (Tone Map Rx Characteristics Request)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_TONE_MAP_RX_CNF, "TONE_MAP_RX.CNF (Tone Map Rx Characteristics Confirmation)" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_LINK_STATUS_REQ, "LINK_STATUS.REQ" },
{ HOMEPLUG_AV_MMTYPE_QUALCOMM_LINK_STATUS_CNF, "LINK_STATUS.CNF" },
{ 0, NULL }
};
/* ST/IoTecha vendor-specific MMEs */
static const value_string homeplug_av_mmtype_st_iotecha_vals[] = {
{ HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_AUTH_SET_NMK_REQ , "STP_AUTH_SET_NMK.REQ" },
{ HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_AUTH_SET_NMK_CNF , "STP_AUTH_SET_NMK.CNF" },
{ HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_LINK_STATUS_REQ , "STP_LINK_STATUS.REQ" },
{ HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_LINK_STATUS_CNF , "STP_LINK_STATUS.CNF" },
{ HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_LINK_STATUS_IND , "STP_LINK_STATUS.IND" },
{ HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_DISCOVER_LOCAL_REQ , "STP_DISCOVER_LOCAL.REQ" },
{ HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_DISCOVER_LOCAL_CNF , "STP_DISCOVER_LOCAL.CNF" },
{ HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_SET_MAXGAIN_REQ , "STP_SET_MAXGAIN.REQ" },
{ HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_SET_MAXGAIN_CNF , "STP_SET_MAXGAIN.CNF" },
{ HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_DISCOVER_REQ , "STP_DISCOVER.REQ" },
{ HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_DISCOVER_CNF , "STP_DISCOVER.CNF" },
{ HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_GET_TEI_LIST_REQ , "STP_GET_TEI_LIST.REQ" },
{ HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_GET_TEI_LIST_CNF , "STP_GET_TEI_LIST.CNF" },
{ HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_GET_TEI_SNAPSHOT_REQ , "STP_GET_TEI_SNAPSHOT.REQ" },
{ HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_GET_TEI_SNAPSHOT_CNF , "STP_GET_TEI_SNAPSHOT.CNF" },
{ HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_GET_BSS_LIST_REQ , "STP_GET_BSS_LIST.REQ" },
{ HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_GET_BSS_LIST_CNF , "STP_GET_BSS_LIST.CNF" },
{ HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_CHANQUAL_REPORT_REQ , "STP_CHANQUAL_REPORT.REQ" },
{ HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_CHANQUAL_REPORT_CNF , "STP_CHANQUAL_REPORT.CNF" },
{ HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_CHANQUAL_REPORT_IND , "STP_CHANQUAL_REPORT.IND" },
{ HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_TEST_CHAN_ATTEN_START_RX_REQ , "STP_TEST_CHAN_ATTEN_START_RX.REQ" },
{ HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_TEST_CHAN_ATTEN_START_RX_CNF , "STP_TEST_CHAN_ATTEN_START_RX.CNF" },
{ HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_TEST_CHAN_ATTEN_DATA_IND , "STP_TEST_CHAN_ATTEN_DATA.IND" },
{ HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_TEST_CHAN_ATTEN_START_TX_REQ , "STP_TEST_CHAN_ATTEN_START_TX.REQ" },
{ HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_TEST_CHAN_ATTEN_START_TX_CNF , "STP_TEST_CHAN_ATTEN_START_TX.CNF" },
{ HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_TEST_SOUND_QUIET_IND , "STP_TEST_SOUND_QUIET.IND" },
{ HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_UPDATE_STAGE_REQ , "STP_MFCT_UPDATE_STAGE.REQ" },
{ HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_UPDATE_STAGE_CNF , "STP_MFCT_UPDATE_STAGE.CNF" },
{ HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_UPDATE_FINISH_REQ , "STP_MFCT_UPDATE_FINISH.REQ" },
{ HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_UPDATE_FINISH_CNF , "STP_MFCT_UPDATE_FINISH.CNF" },
{ HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_GET_ITEM_REQ , "STP_MFCT_GET_ITEM.REQ" },
{ HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_GET_ITEM_CNF , "STP_MFCT_GET_ITEM.CNF" },
{ HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_GET_KEYLIST_REQ , "STP_MFCT_GET_KEYLIST.REQ" },
{ HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_GET_KEYLIST_CNF , "STP_MFCT_GET_KEYLIST.CNF" },
{ HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_FUP_REQ , "STP_FUP.REQ" },
{ HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_RESERVED_REQ , "STP_RESERVED.REQ (IoTecha HPGP Analyzer Raw Data)" },
{ HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_CPSTATE_IND , "STP_CPSTATE.IND" },
{ HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_USER_MESSAGE_IND , "STP_USER_MESSAGE.IND" },
{ 0, NULL }
};
/* ext MMType vals */
static value_string_ext homeplug_av_mmtype_general_vals_ext = VALUE_STRING_EXT_INIT(homeplug_av_mmtype_general_vals);
static value_string_ext homeplug_av_mmtype_qualcomm_vals_ext = VALUE_STRING_EXT_INIT(homeplug_av_mmtype_qualcomm_vals);
static value_string_ext homeplug_av_mmtype_st_iotecha_vals_ext = VALUE_STRING_EXT_INIT(homeplug_av_mmtype_st_iotecha_vals);
/* Versions */
#define HOMEPLUG_AV_MMVER_MASK 0x01
#define HOMEPLUG_AV_MMVER_1_0 0x00
#define HOMEPLUG_AV_MMVER_1_1 0x01
static const value_string homeplug_av_mmver_vals[] = {
{ HOMEPLUG_AV_MMVER_1_0, "1.0" },
{ HOMEPLUG_AV_MMVER_1_1, "1.1" },
{ 0, NULL }
};
/* MMTYPE LSB Values */
#define HOMEPLUG_AV_MMTYPE_LSB_MASK 0x03
static const value_string homeplug_av_mmtype_lsb_vals[] = {
{ 0x00, "Request" },
{ 0x01, "Confirm" },
{ 0x02, "Indication" },
{ 0x03, "Response" },
{ 0, NULL }
};
/* MMTYPE MSB Values */
#define HOMEPLUG_AV_MMTYPE_MSB_STA_CCO 0x00
#define HOMEPLUG_AV_MMTYPE_MSB_PROXY 0x01
#define HOMEPLUG_AV_MMTYPE_MSB_CCO_CCO 0x02
#define HOMEPLUG_AV_MMTYPE_MSB_STA_STA 0x03
#define HOMEPLUG_AV_MMTYPE_MSB_MANUF 0x04
#define HOMEPLUG_AV_MMTYPE_MSB_VENDOR 0x05
#define HOMEPLUG_AV_MMTYPE_MSB_RSV 0x06
#define HOMEPLUG_AV_MMTYPE_MSB_MASK 0xe0
#define HOMEPLUG_AV_MMTYPE_MSB_SHIFT (5)
static const value_string homeplug_av_mmtype_msb_vals[] = {
{ HOMEPLUG_AV_MMTYPE_MSB_STA_CCO, "STA - Central Coordinator" },
{ HOMEPLUG_AV_MMTYPE_MSB_PROXY, "Proxy Coordinator" },
{ HOMEPLUG_AV_MMTYPE_MSB_CCO_CCO, "Central Coordinator - Central Coordinator" },
{ HOMEPLUG_AV_MMTYPE_MSB_STA_STA, "STA - STA" },
{ HOMEPLUG_AV_MMTYPE_MSB_MANUF, "Manufacturer Specific" },
{ HOMEPLUG_AV_MMTYPE_MSB_VENDOR, "Vendor Specific" },
{ 0, NULL }
};
#define HOMEPLUG_AV_CC_STA_NET_MASK 0x01
static const value_string homeplug_av_cc_sta_net_type_vals[] = {
{ 0x00, "Different network" },
{ 0x01, "Same network" },
{ 0, NULL }
};
static const value_string homeplug_av_sig_level_vals[] = {
{ 0x00, "N/A" },
{ 0x01, "> - 10 dB, but <= 0 dB" },
{ 0x02, "> - 15 dB, but <= -10 dB" },
{ 0x03, "> - 20 dB, but <= -15 dB" },
{ 0x04, "> - 25 dB, but <= -20 dB" },
{ 0x05, "> - 30 dB, but <= -25 dB" },
{ 0x06, "> - 35 dB, but <= -30 dB" },
{ 0x07, "> - 40 dB, but <= -35 dB" },
{ 0x08, "> - 45 dB, but <= -40 dB" },
{ 0x09, "> - 50 dB, but <= -45 dB" },
{ 0x0A, "> - 55 dB, but <= -50 dB" },
{ 0x0B, "> - 60 dB, but <= -55 dB" },
{ 0x0C, "> - 65 dB, but <= -60 dB" },
{ 0x0D, "> - 70 dB, but <= -65 dB" },
{ 0x0E, "> - 75 dB, but <= -70 dB" },
{ 0x0F, "<= -75 dB" },
{ 0, NULL }
};
static value_string_ext homeplug_av_sig_level_vals_ext = VALUE_STRING_EXT_INIT(homeplug_av_sig_level_vals);
#define HOMEPLUG_AV_CCO_STATUS_MASK 0x07
static const value_string homeplug_av_cco_status_vals[] = {
{ 0x00, "Unknown" },
{ 0x01, "Non-coordinating Network" },
{ 0x02, "Coordinating, group status unknown" },
{ 0x03, "Coordinating network in the same group" },
{ 0x04, "Coordinating network not in the same group" },
{ 0, NULL }
};
#define HOMEPLUG_AV_NW_INFO_ROLE_MASK 0x03
static const value_string homeplug_av_nw_info_role_vals[] = {
{ 0x00, "Station" },
{ 0x01, "Proxy coordinator" },
{ 0x02, "Central coordinator" },
{ 0, NULL }
};
#define HOMEPLUG_AV_NW_INFO_NID_MASK 0x01
#define HOMEPLUG_AV_NW_INFO_ACCESS_MASK 0x08
static const value_string homeplug_nw_info_access_vals[] = {
{ 0x00, "In-home" },
{ 0x01, "Access" },
{ 0, NULL }
};
#define HOMEPLUG_AV_PEKS_MASK 0x0F
#define HOMEPLUG_AV_SOF_PEKS_MASK 0xF0
static const value_string homeplug_av_peks_vals[] = {
{ 0x00, "Destination STA's DAK" },
{ 0x01, "NMK known to STA" },
{ 0x02, "TEK Index 0" },
{ 0x03, "TEK Index 1" },
{ 0x04, "TEK Index 2" },
{ 0x05, "TEK Index 3" },
{ 0x06, "TEK Index 4" },
{ 0x07, "TEK Index 5" },
{ 0x08, "TEK Index 6" },
{ 0x09, "TEK Index 7" },
{ 0x0A, "TEK Index 8" },
{ 0x0B, "TEK Index 9" },
{ 0x0C, "TEK Index 10" },
{ 0x0D, "TEK Index 11" },
{ 0x0E, "TEK Index 12" },
{ 0x0F, "No key" },
{ 0, NULL }
};
static value_string_ext homeplug_av_peks_vals_ext = VALUE_STRING_EXT_INIT(homeplug_av_peks_vals);
#define HOMEPLUG_AV_CCO_CAP_MASK 0x0C
static const value_string homeplug_av_bcn_cco_cap_vals[] = {
{ 0x0, "CSMA-only (no QoS/TDMA)" },
{ 0x1, "Uncoordinated mode QoS/TDMA" },
{ 0x2, "Coordinated mode QoS/TDMA" },
{ 0x3, "Reserved" },
{ 0, NULL }
};
#define HOMEPLUG_AV_AVLN_STATUS_MASK 0x0F
#define HOMEPLUG_AV_RSF_MASK 0x10
#define HOMEPLUG_AV_PLEVEL_MASK 0xE0
static const value_string homeplug_av_avln_status_vals[] = {
{ 0x00, "Unassociated and Level-0 CCo capable" },
{ 0x01, "Unassociated and Level-1 CCo capable" },
{ 0x02, "Unassociated and Level-2 CCo capable" },
{ 0x03, "Unassociated and Level-3 CCo capable" },
{ 0x04, "Associated but not PCo capable" },
{ 0x05, "Associated but and PCo capable" },
{ 0x06, "Reserved" },
{ 0x07, "Reserved" },
{ 0x08, "CCo of an AV Logical Network" },
{ 0, NULL }
};
#define HOMEPLUG_AV_PID_AUTH_STA 0x00
#define HOMEPLUG_AV_PID_PROV_AUTH_NEK 0x01
#define HOMEPLUG_AV_PID_PROV_AUTH_DAK 0x02
#define HOMEPLUG_AV_PID_PROV_AUTH_UKE 0x03
#define HOMEPLUG_AV_PID_HLE 0x04
#define HOMEPLUG_AV_PID_MASK 0x07
static const value_string homeplug_av_pid_vals[] = {
{ HOMEPLUG_AV_PID_AUTH_STA, "Authentication request by new STA" },
{ HOMEPLUG_AV_PID_PROV_AUTH_NEK, "Provision authenticated STA with new NEK by CCo" },
{ HOMEPLUG_AV_PID_PROV_AUTH_DAK, "Provision STA with NMK using DAK" },
{ HOMEPLUG_AV_PID_PROV_AUTH_UKE, "Provision STA with NMK using UKE" },
{ HOMEPLUG_AV_PID_HLE, "HLE" },
{ 0, NULL }
};
#define HOMEPLUG_AV_KEY_TYPE_DAK 0x00
#define HOMEPLUG_AV_KEY_TYPE_NMK 0x01
#define HOMEPLUG_AV_KEY_TYPE_NEK 0x02
#define HOMEPLUG_AV_KEY_TYPE_TEK 0x03
#define HOMEPLUG_AV_KEY_TYPE_HASH 0x04
#define HOMEPLUG_AV_KEY_TYPE_NONE 0x05
#define HOMEPLUG_AV_KEY_TYPE_MASK 0x07
static const value_string homeplug_av_key_type_vals[] = {
{ HOMEPLUG_AV_KEY_TYPE_DAK, "DAK" },
{ HOMEPLUG_AV_KEY_TYPE_NMK, "NMK" },
{ HOMEPLUG_AV_KEY_TYPE_NEK, "NEK" },
{ HOMEPLUG_AV_KEY_TYPE_TEK, "TEK" },
{ HOMEPLUG_AV_KEY_TYPE_HASH, "Hash Key" },
{ HOMEPLUG_AV_KEY_TYPE_NONE, "Nonce only (no key)" },
{ 0, NULL }
};
#define HOMEPLUG_AV_DEV_ID_MASK 0xff
static const value_string homeplug_av_dev_id_vals[] = {
{ 0x00, "Unknown" },
{ 0x01, "INT6000" },
{ 0x02, "INT6300" },
{ 0x03, "INT6400" },
{ 0x04, "AR7400" },
{ 0x05, "AR6405" },
{ 0x20, "QCA7450/QCA7420" },
{ 0x21, "QCA6410/QCA6411" },
{ 0x22, "QCA7000" },
{ 0, NULL }
};
#define HOMEPLUG_AV_REQ_TYPE_MASK 0x01
static const value_string homeplug_av_req_type_vals[] = {
{ 0x00, "Direct" },
{ 0x01, "Relayed" },
{ 0, NULL }
};
#define HOMEPLUG_AV_KEY_RESULT_MASK 0x03
static const value_string homeplug_av_key_result_vals[] = {
{ 0x00, "Key granted" },
{ 0x01, "Request refused" },
{ 0x02, "Unsupported method/key type" },
{ 0, NULL }
};
#define HOMEPLUG_AV_LINEFREQ_MASK 0x03
static const value_string homeplug_av_linefreq_vals[] = {
{ 0x00, "Unknown frequency" },
{ 0x01, "50Hz" },
{ 0x02, "60Hz" },
{ 0, NULL }
};
#define HOMEPLUG_AV_ZEROCROSS_MASK 0x03
static const value_string homeplug_av_zerocrossing_vals[] = {
{ 0x00, "Not yet detected" },
{ 0x01, "Detected" },
{ 0x02, "Missing" },
{ 0, NULL }
};
#define HOMEPLUG_AV_ENET_PHY_SPEED_MASK 0x03
static const value_string homeplug_av_enet_phy_speed_vals[] = {
{ 0x00, "10 Mbits/sec" },
{ 0x01, "100 Mbits/sec" },
{ 0x02, "1 Gbits/sec" },
{ 0, NULL }
};
#define HOMEPLUG_AV_ENET_PHY_DUPLEX_MASK 0x01
static const value_string homeplug_av_enet_phy_duplex_vals[] = {
{ 0x00, "Half" },
{ 0x01, "Full" },
{ 0, NULL }
};
#define HOMEPLUG_AV_ENET_PHY_MCONTROL_MASK 0x01
static const value_string homeplug_av_enet_phy_mcontrol_vals[] = {
{ 0x00, "Read" },
{ 0x01, "Write" },
{ 0, NULL }
};
static const value_string homeplug_av_wr_rd_mem_status_vals[] = {
{ 0x00, "Success" },
{ 0x10, "Invalid Address" },
{ 0x14, "Invalid Length" },
{ 0, NULL }
};
static const value_string homeplug_av_mac_module_id_vals[] = {
{ 0x00, "MAC Soft-Loader Image" },
{ 0x01, "MAC Software Image" },
{ 0x02, "PIB" },
{ 0x10, "Write Alternate Flash Location" },
{ 0, NULL }
};
static const value_string homeplug_av_st_mac_status_vals[] = {
{ 0x00, "Success" },
{ 0x10, "Invalid Module ID" },
{ 0x14, "Invalid Command" },
{ 0, NULL }
};
static const value_string homeplug_av_get_nvm_status_vals[] = {
{ 0x00, "Success" },
{ 0x10, "NVM Not Present" },
{ 0, NULL }
};
static const value_string homeplug_av_rs_dev_status_vals[] = {
{ 0x00, "Success" },
{ 0x01, "NVM Not Present" },
{ 0, NULL }
};
static const value_string homeplug_av_wr_rd_mod_cnf_status_vals[] = {
{ 0x00, "Success" },
{ 0x10, "Invalid Module ID" },
{ 0x12, "Invalid Length" },
{ 0x14, "Invalid Checksum" },
{ 0x18, "Bad Header Checksum" },
{ 0x1C, "Invalid Length" },
{ 0x20, "Unexpected Offset" },
{ 0, NULL }
};
static const value_string homeplug_av_wr_mod_ind_status_vals[] = {
{ 0x00, "Successful module update" },
{ 0x10, "Update occurred but not successful" },
{ 0, NULL }
};
static const value_string homeplug_av_mod_nvm_status_vals[] = {
{ 0x00, "Success" },
{ 0x10, "Invalid Module ID" },
{ 0x14, "NVM Module Not Present" },
{ 0x18, "NVM Too Small" },
{ 0x1C, "Invalid Header Checksum" },
{ 0x20, "Invalid Section Mismatch" },
{ 0, NULL }
};
#define HOMEPLUG_AV_RPT_CLR_MASK 0x01
static const value_string homeplug_av_rpt_clr_vals[] = {
{ 0x00, "Get Report" },
{ 0x01, "Get Report and Clear" },
{ 0, NULL }
};
#define HOMEPLUG_AV_GEN_STATUS_MASK 0x03
static const value_string homeplug_av_generic_status_vals[] = {
{ 0x00, "Success" },
{ 0x01, "Failure" },
{ 0x02, "Not supported" },
{ 0, NULL }
};
#define HOMEPLUG_AV_LNK_STATS_MCTL_MASK 0x01
static const value_string homeplug_av_lnk_stats_mctrl_vals[] = {
{ 0x00, "Read" },
{ 0x01, "Clear" },
{ 0, NULL }
};
#define HOMEPLUG_AV_LNK_STATS_DIR_TX 0x00
#define HOMEPLUG_AV_LNK_STATS_DIR_RX 0x01
#define HOMEPLUG_AV_LNK_STATS_DIR_TX_RX 0x02
#define HOMEPLUG_AV_LNK_STATS_DIR_MASK 0x03
static const value_string homeplug_av_lnk_stats_dir_vals[] = {
{ HOMEPLUG_AV_LNK_STATS_DIR_TX, "Tx" },
{ HOMEPLUG_AV_LNK_STATS_DIR_RX, "Rx" },
{ HOMEPLUG_AV_LNK_STATS_DIR_TX_RX, "Tx/Rx" },
{ 0, NULL }
};
static const value_string homeplug_av_lnk_stats_lid_vals[] = {
{ 0x00, "CSMA Channel Access Priority 0" },
{ 0x01, "CSMA Channel Access Priority 1" },
{ 0x02, "CSMA Channel Access Priority 2" },
{ 0x03, "CSMA Channel Access Priority 3" },
{ 0xF8, "Sum of all CSMA stats for Peer Node" },
{ 0xFB, "Reserved" },
{ 0xFC, "Sum of all CSMA stats" },
{ 0, NULL }
};
#define HOMEPLUG_AV_LNK_STATS_STATUS_SUCCESS 0x00
#define HOMEPLUG_AV_LNK_STATS_STATUS_INV_CTRL 0x01
#define HOMEPLUG_AV_LNK_STATS_STATUS_INV_DIR 0x02
#define HOMEPLUG_AV_LNK_STATS_STATUS_INV_LID 0x10
#define HOMEPLUG_AV_LNK_STATS_STATUS_INV_MAC 0x20
static const value_string homeplug_av_lnk_status_vals[] = {
{ HOMEPLUG_AV_LNK_STATS_STATUS_SUCCESS, "Success" },
{ HOMEPLUG_AV_LNK_STATS_STATUS_INV_CTRL, "Invalid Control" },
{ HOMEPLUG_AV_LNK_STATS_STATUS_INV_DIR, "Invalid Direction" },
{ HOMEPLUG_AV_LNK_STATS_STATUS_INV_LID, "Invalid Link ID" },
{ HOMEPLUG_AV_LNK_STATS_STATUS_INV_MAC, "Invalid MAC Address" },
{ 0, NULL }
};
#define HOMEPLUG_AV_SNIFFER_CTRL_MASK 0x03
static const value_string homeplug_av_sniffer_ctrl_vals[] = {
{ 0x00, "Disable" },
{ 0x01, "Enable" },
{ 0x02, "No change" },
{ 0, NULL }
};
static const value_string homeplug_av_sniffer_status_vals[] = {
{ 0x00, "Success" },
{ 0x10, "Invalid Control" },
{ 0, NULL }
};
static const value_string homeplug_av_sniffer_type_vals[] = {
{ 0x00, "Regular" },
{ 0, NULL }
};
#define HOMEPLUG_AV_DEL_TYPE_BCN 0x00
#define HOMEPLUG_AV_DEL_TYPE_SOF 0x01
#define HOMEPLUG_AV_DEL_TYPE_SACK 0x02
#define HOMEPLUG_AV_DEL_TYPE_RTS 0x03
#define HOMEPLUG_AV_DEL_TYPE_SOUND 0x04
#define HOMEPLUG_AV_DEL_TYPE_RSOF 0x05
#define HOMEPLUG_AV_DEL_TYPE_MASK 0x07
static const value_string homeplug_av_fc_del_type_vals[] = {
{ HOMEPLUG_AV_DEL_TYPE_BCN, "Beacon" },
{ HOMEPLUG_AV_DEL_TYPE_SOF, "Start-of-Frame" },
{ HOMEPLUG_AV_DEL_TYPE_SACK, "Selective Acknowledgement" },
{ HOMEPLUG_AV_DEL_TYPE_RTS, "Request-to-Send/Clear-to-Send" },
{ HOMEPLUG_AV_DEL_TYPE_SOUND, "Sound" },
{ HOMEPLUG_AV_DEL_TYPE_RSOF, "Reverse Start-of-Frame" },
{ 0x06, "Unknown" },
{ 0x07, "Unknown" },
{ 0, NULL }
};
/* MPDU Values */
#define HOMEPLUG_AV_SNID_MASK 0xf0
#define HOMEPLUG_AV_CFS_MASK 0x01
#define HOMEPLUG_AV_BDF_MASK 0x02
#define HOMEPLUG_AV_HP10DF_MASK 0x04
#define HOMEPLUG_AV_HP11DF_MASK 0x08
#define HOMEPLUG_AV_SVN_MASK 0x04
#define HOMEPLUG_AV_RRTF_MASK 0x08
#define HOMEPLUG_AV_FL_AV_MASK 0x0FFF
#define HOMEPLUG_AV_RSP_DATA_MASK 0x03
#define HOMEPLUG_AV_RSP_MGMT_MASK 0x0C
static int * const rsof_sack_fields[] = {
&hf_homeplug_av_cfs,
&hf_homeplug_av_bdf,
&hf_homeplug_av_svn,
&hf_homeplug_av_rrtf,
&hf_homeplug_av_mfs_rsp_data,
&hf_homeplug_av_mfs_rsp_mgmt,
NULL
};
#define HOMEPLUG_AV_PBSZ_MASK 0x01
static const true_false_string homeplug_av_phy_block_size_vals = {
"136 octets",
"520 octets"
};
#define HOMEPLUG_AV_NUM_SYM_MASK 0x06
#define HOMEPLUG_AV_TMI_AV_MASK 0xF8
#define HOMEPLUG_AV_SOF_MPDU_CNT_MASK 0x3000
#define HOMEPLUG_AV_BURST_CNT_MASK 0xC000
#define HOMEPLUG_AV_BBF_MASK 0x01
static const true_false_string homeplug_av_bbf_vals = {
"May continue",
"Must not continue"
};
#define HOMEPLUG_AV_MRTLF_MASK 0x1E
#define HOMEPLUG_AV_DCCPCF_MASK 0x20
#define HOMEPLUG_AV_MCF_MASK 0x40
#define HOMEPLUG_AV_MNBF_MASK 0x80
#define HOMEPLUG_AV_RSR_MASK 0x01
#define HOMEPLUG_AV_CLST_MASK 0x02
static const true_false_string homeplug_av_clst_vals = {
"Reserved",
"Ethernet II"
};
#define HOMEPLUG_AV_MFS_MGMT_MASK 0x1C
#define HOMEPLUG_AV_MFS_DATA_MASK 0xE0
#define HOMEPLUG_AV_SOF_RSP_MGMT_MASK 0x03
#define HOMEPLUG_AV_SOF_RSP_DATA_MASK 0x0C
#define HOMEPLUG_AV_BM_SACK_MASK 0xF0
#define HOMEPLUG_AV_RTSF_MASK 0x10
static const true_false_string homeplug_av_rtsf_vals = {
"RTS MPDU",
"CTS MPDU"
};
#define HOMEPLUG_AV_IGF_MASK 0x20
#define HOMEPLUG_AV_RTSCTS_MNBF_MASK 0x40
#define HOMEPLUG_AV_RTSCTS_MCF_MASK 0x80
#define HOMEPLUG_AV_DUR_MASK 0x3FFF
#define HOMEPLUG_AV_SOUND_PBSZ_MASK 0x02
#define HOMEPLUG_AV_SOUND_BDF_MASK 0x04
#define HOMEPLUG_AV_SAF_MASK 0x08
#define HOMEPLUG_AV_SCF_MASK 0x10
#define HOMEPLUG_AV_REQ_TM_MASK 0xE0
#define HOMEPLUG_AV_SOUND_MPDU_CNT_MASK 0x3000
#define HOMEPLUG_AV_ADD_REQ_TM_MASK 0x07
#define HOMEPLUG_AV_MAX_PB_SYM_MASK 0x38
#define HOMEPLUG_AV_ECSF_MASK 0x40
#define HOMEPLUG_AV_ECUF_MASK 0x80
#define HOMEPLUG_AV_EMS_MASK 0x03
static const value_string homeplug_av_ems_vals[] = {
{ 0x00, "Extended QAM Modulations not supported" },
{ 0x01, "4096 QAM Modulation support" },
{ 0x02, "Reserved" },
{ 0x03, "Reserved" },
{ 0, NULL }
};
#define HOMEPLUG_AV_ESGISF_MASK 0x04
#define HOMEPLUG_AV_ELGISF_MASK 0x08
#define HOMEPLUG_AV_EFRS_MASK 0x30
static const value_string homeplug_av_efrs_vals[] = {
{ 0x00, "Extended FEC Rates Not Supported" },
{ 0x01, "16/18 FED Rate Supported" },
{ 0x02, "Reserved" },
{ 0x03, "Reserved" },
{ 0, NULL }
};
#define HOMEPLUG_AV_RSOF_FL_MASK 0x03FF
#define HOMEPLUG_AV_RSOF_TMI_MASK 0x7C00
#define HOMEPLUG_AV_RSOF_PBSZ_MASK 0x8000
#define HOMEPLUG_AV_RSOF_NUM_SYM_MASK 0x03
/* MPDU Beacon payloads */
#define HOMEPLUG_AV_BCN_NID_MASK 0xFFFFFFFFFFFF3F
#define HOMEPLUG_AV_HM_MASK 0xC0
static const val64_string homeplug_av_bcn_hm_vals[] = {
{ 0x00, "AV-only mode" },
{ 0x01, "Shared CSMA Hybrid Mode" },
{ 0x02, "Fully hybrid mode" },
{ 0x03, "Fully hybrid mode with unrestricted frame lengths" },
{ 0, NULL }
};
#define HOMEPLUG_AV_BCN_TYPE_MASK 0x07
static const value_string homeplug_av_bcn_type_vals[] = {
{ 0x0, "Central" },
{ 0x1, "Discover" },
{ 0x2, "Proxy" },
{ 0, NULL }
};
#define HOMEPLUG_AV_NCNR_MASK 0x08
#define HOMEPLUG_AV_NPSM_MASK 0x10
#define HOMEPLUG_AV_NUM_SLOTS_MASK 0xE0
#define HOMEPLUG_AV_SLOT_ID_MASK 0x03
/* There must be a better way to do this. */
static const value_string homeplug_av_bcn_slot_vals[] = {
{ 0x0, "1" },
{ 0x1, "2" },
{ 0x2, "3" },
{ 0x3, "4" },
{ 0x4, "5" },
{ 0x5, "6" },
{ 0x6, "7" },
{ 0x7, "8" },
{ 0, NULL }
};
#define HOMEPLUG_AV_ACLSS_MASK 0x38
#define HOMEPLUG_AV_HOIP_MASK 0x40
#define HOMEPLUG_AV_RTSBF_MASK 0x80
#define HOMEPLUG_AV_NM_MASK 0x03
static const value_string homeplug_av_bcn_nm_vals[] = {
{ 0x1, "Uncoordinated Mode" },
{ 0x2, "Coordinated Mode" },
{ 0x3, "CSMA-only Mode" },
{ 0, NULL }
};
#define HOMEPLUG_AV_LBK_STATUS_MASK 0x01
static const value_string homeplug_av_lbk_status_vals[] = {
{ 0x00, "Done" },
{ 0x01, "Looping frame" },
{ 0, NULL }
};
static const value_string homeplug_av_set_key_peks_vals[] = {
{ 0x00, "Remote" },
{ 0x0F, "Local" },
{ 0, NULL }
};
static const value_string homeplug_av_set_key_status_vals[] = {
{ 0x00, "Success" },
{ 0x10, "Invalid EKS" },
{ 0x11, "Invalid PKS" },
{ 0, NULL }
};
static const value_string homeplug_av_cblock_status_vals[] = {
{ 0x00, "Success" },
{ 0x01, "Failure" },
{ 0x10, "No Flash" },
{ 0x30, "Invalid Checksum" },
{ 0x34, "BIST Failed" },
{ 0, NULL }
};
#define HOMEPLUG_AV_NVM_IMG_TYPE_MASK 0x1F
static const value_string homeplug_av_nvm_img_type_vals[] = {
{ 0x00, "Generic Image" },
{ 0x01, "Synopsis configuration" },
{ 0x02, "Denali configuration" },
{ 0x03, "Denali applet" },
{ 0x04, "Runtime firmware" },
{ 0x05, "OAS client" },
{ 0x06, "Custom image" },
{ 0x07, "Memory control applet" },
{ 0x08, "Power management applet" },
{ 0x09, "OAS client IP stack" },
{ 0x0A, "OAS client TR069" },
{ 0x0B, "SoftLoader" },
{ 0x0C, "Flash layout" },
{ 0x0D, "Unknown" },
{ 0x0E, "Chain manifest" },
{ 0x0F, "Runtime parameters" },
{ 0x10, "Custom module in scratch" },
{ 0x11, "Custom module update applet" },
{ 0, NULL }
};
#define HOMEPLUG_AV_NVM_IGNORE_MASK_MASK 0x1FF
static const value_string homeplug_av_nvm_ignore_mask_vals[] = {
{ 0x00, "INT6000" },
{ 0x01, "INT6300" },
{ 0x04, "INT6400" },
{ 0x10, "AR7400" },
{ 0x100, "AR7420" },
{ 0, NULL }
};
#define HOMEPLUG_AV_HOST_ACTION_SOFT_LDR 0x00
#define HOMEPLUG_AV_HOST_ACTION_FW_UPG_RDY 0x01
#define HOMEPLUG_AV_HOST_ACTION_PIB_UP_RDY 0x02
#define HOMEPLUG_AV_HOST_ACTION_FW_PIB_UP_RDY 0x03
#define HOMEPLUG_AV_HOST_ACTION_BOOT_LDR 0x04
static const value_string homeplug_av_host_action_vals[] = {
{ HOMEPLUG_AV_HOST_ACTION_SOFT_LDR, "Loader (Soft/Bootloader)" },
{ HOMEPLUG_AV_HOST_ACTION_FW_UPG_RDY, "Firmware Upgrade Ready" },
{ HOMEPLUG_AV_HOST_ACTION_PIB_UP_RDY, "PIB Update Ready" },
{ HOMEPLUG_AV_HOST_ACTION_FW_PIB_UP_RDY, "Firmware Upgrade and PIB Update Ready" },
{ HOMEPLUG_AV_HOST_ACTION_BOOT_LDR, "Loader (Bootloader)" },
{ 0, NULL }
};
static const value_string homeplug_av_op_attr_report_vals[] = {
{ 0x00, "Binary" },
{ 0x01, "XML" },
{ 0, NULL }
};
#define HOMEPLUG_AV_TONE_MAP_MAX_NUM_CARRIERS_A 1155
#define HOMEPLUG_AV_TONE_MAP_MAX_NUM_CARRIERS_B 2880
#define HOMEPLUG_AV_TONE_MAP_MASK 0x0f
static const value_string homeplug_av_tone_map_vals[] = {
{ 0x00, "No modulation" },
{ 0x01, "BPSK" },
{ 0x02, "QPSK" },
{ 0x03, "8-QAM" },
{ 0x04, "16-QAM" },
{ 0x05, "64-QAM" },
{ 0x06, "256-QAM" },
{ 0x07, "1024-QAM" },
{ 0x08, "4096-QAM" },
{ 0, NULL }
};
static const value_string homeplug_av_tone_map_status_vals[] = {
{ 0x00, "Success" },
{ 0x01, "Unknown MAC address" },
{ 0x02, "Unknown Tone Map slot" },
{ 0, NULL }
};
#define HOMEPLUG_AV_COUPLING_MASK 0x0F
static const value_string homeplug_av_coupling_vals[] = {
{ 0x00, "Primary" },
{ 0x01, "Alternate" },
{ 0, NULL }
};
static const value_string homeplug_av_cc_assoc_result_vals[] = {
{ 0x00, "Success" },
{ 0x01, "Failure due to temporary resource exhaustion, try again later" },
{ 0x02, "Failure due to permanent resource exhaustion" },
{ 0x03, "Failure" },
{ 0, NULL }
};
static const value_string homeplug_av_cc_assoc_reqtype_vals[] = {
{ 0x00, "New request" },
{ 0x01, "Renewal request" },
{ 0, NULL }
};
static const value_string homeplug_av_cc_assoc_proxy_net_cap_vals[] = {
{ 0x00, "Doesn't support Proxy Networking" },
{ 0x01, "Supports Proxy Networking" },
{ 0, NULL }
};
/* HPGP Values */
#define HOMEPLUG_AV_GP_APPTYPE_PEV_EVSE_ASSOC 0x00
#define HOMEPLUG_AV_GP_SECURITY_TYPE_NONE 0x00
#define HOMEPLUG_AV_GP_SECURITY_TYPE_PUBLIC_KEY 0x01
static const value_string homeplug_av_gp_cm_slac_parm_sectype_vals[] = {
{ HOMEPLUG_AV_GP_SECURITY_TYPE_NONE, "No Security" },
{ HOMEPLUG_AV_GP_SECURITY_TYPE_PUBLIC_KEY, "Public Key Signature" },
{ 0, NULL }
};
static const value_string homeplug_av_gp_cm_slac_parm_resptype_vals[] = {
{ 0x00, "Not Transmitted to other GP STA's HLE" },
{ 0x01, "Transmitted to another GP STA's HLE" },
{ 0, NULL }
};
#define HOMEPLUG_AV_GP_SIGNAL_TYPE_PEV_S2_TOGGLES 0x00
static const value_string homeplug_av_gp_cm_validate_signaltype_vals[] = {
{ HOMEPLUG_AV_GP_SIGNAL_TYPE_PEV_S2_TOGGLES, "PEV S2 toggles on CPLT line" },
{ 0, NULL }
};
static const value_string homeplug_av_gp_cm_validate_result_vals[] = {
{ 0x00, "Not Ready" },
{ 0x01, "Ready" },
{ 0x02, "Success" },
{ 0x03, "Failure" },
{ 0x04, "Not required" },
{ 0, NULL }
};
/* We need third octet */
#define HOMEPLUG_AV_GP_CM_SLAC_USER_DATA_BROADCAST_MASK (((guint32)0xFF) << 16)
static const value_string homeplug_av_gp_cm_slac_user_data_broadcast_vals[] = {
{ 0x00, "Unicast" },
{ 0x01, "AVLN Broadcast" },
{ 0x02, "Multi-network broadcast" },
{ 0, NULL }
};
#define HOMEPLUG_AV_GP_CM_SLAC_USER_DATA_TLV_HEADER_SIZE 2
#define HOMEPLUG_AV_GP_CM_SLAC_USER_DATA_TLV_TYPE_MASK (((1<<7)-1)<<9)
#define HOMEPLUG_AV_GP_CM_SLAC_USER_DATA_TLV_LENGTH_MASK ((1<<9)-1)
#define HOMEPLUG_AV_GP_CM_SLAC_USER_DATA_TLV_TYPE_VENDOR_RESERVED 0x1F
static const value_string homeplug_av_gp_cm_slac_user_data_tlv_types_vals[] = {
{ HOMEPLUG_AV_GP_CM_SLAC_USER_DATA_TLV_TYPE_VENDOR_RESERVED, "Vendor Reserved" },
{ 0, NULL }
};
typedef enum {
HOMEPLUG_AV_CC_SET_TEI_MAP_IND_MODE_FULL_ENTRIES_UPATE = 0x00,
HOMEPLUG_AV_CC_SET_TEI_MAP_IND_MODE_ADD_NEW_ENTRIES = 0x01,
HOMEPLUG_AV_CC_SET_TEI_MAP_IND_MODE_REMOVE_ENTRIES = 0x02
} homeplug_av_cc_set_tei_map_ind_mode_types;
static const value_string homeplug_av_cc_set_tei_map_ind_mode_vals[] = {
{ HOMEPLUG_AV_CC_SET_TEI_MAP_IND_MODE_FULL_ENTRIES_UPATE, "Update Entire STA" },
{ HOMEPLUG_AV_CC_SET_TEI_MAP_IND_MODE_ADD_NEW_ENTRIES, "Add new STA entries" },
{ HOMEPLUG_AV_CC_SET_TEI_MAP_IND_MODE_REMOVE_ENTRIES, "Remove existing STA entries" },
{ 0, NULL }
};
typedef enum {
HOMEPLUG_AV_CC_SET_TEI_MAP_IND_STATUS_NOT_AUTHENTICATED = 0x00,
HOMEPLUG_AV_CC_SET_TEI_MAP_IND_STATUS_AUTHENTICATED = 0x01,
} homeplug_av_cc_set_tei_map_ind_status_types;
static const value_string homeplug_av_cc_set_tei_map_ind_status_vals[] = {
{ HOMEPLUG_AV_CC_SET_TEI_MAP_IND_STATUS_NOT_AUTHENTICATED, "Not Authenticated" },
{ HOMEPLUG_AV_CC_SET_TEI_MAP_IND_STATUS_AUTHENTICATED, "Authenticated" },
{ 0, NULL }
};
#define HOMEPLUG_AV_GP_CM_ATTEN_CHAR_AAG_FORMAT "Avg. Attenuation of group #%d (dB): %d"
/* ST/IoTecha specific values */
static const value_string homeplug_av_st_iotecha_linkstatus_status_vals[] = {
{ 0x00, "No Link" },
{ 0x01, "Link with atleast 1 device" },
{ 0, NULL }
};
static const value_string homeplug_av_st_iotecha_linkstatus_devmode_vals[] = {
{ 0x00, "Unavailable" },
{ 0x01, "UNAS STA" },
{ 0x02, "ASSC STA" },
{ 0x03, "AUTH STA" },
{ 0x04, "UNAS BM" },
{ 0x05, "ASSC BM" },
{ 0x06, "AUTH BM" },
{ 0, NULL }
};
#define HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_HEADER_SIZE 2
#define HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_MASK (((1<<6)-1)<<10)
#define HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_LENGTH_MASK ((1<<10)-1)
typedef enum {
HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_NULL = 0x00,
HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_DEVICE_NAME = 0x01,
HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_DEVICE_TYPE = 0x02,
HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_BUILD_ID = 0x03,
HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_RESERVED = 0x04,
HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_DEVICE_UID = 0x05,
HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_MAC_ADDRESS = 0x06,
HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_HARDWARE_NAME = 0x07,
HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_HARDWARE_VERSION = 0x08,
HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_LINUX_KERNEL_VERSION = 0x09,
HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_LINUX_USER_VERSION = 0x0A,
} homeplug_av_st_iotecha_stp_discover_tlv_types;
static const value_string homeplug_av_st_iotecha_stp_discover_tlv_type_vals[] = {
{ HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_NULL, "NULL" },
{ HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_DEVICE_NAME, "Device name" },
{ HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_DEVICE_TYPE, "Device type" },
{ HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_BUILD_ID, "Build ID" },
{ HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_RESERVED, "Reserved" },
{ HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_DEVICE_UID, "Device UID" },
{ HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_MAC_ADDRESS, "MAC Address" },
{ HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_HARDWARE_NAME, "Hardware name" },
{ HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_HARDWARE_VERSION, "Hardware version" },
{ HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_LINUX_KERNEL_VERSION, "Linux Kernel version" },
{ HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_LINUX_USER_VERSION, "Linux User version" },
{ 0, NULL }
};
typedef enum {
HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_NULL = 0x00,
HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_BEGIN_BSS = 0x01,
HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_LOCAL_BSS = 0x02,
HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_RESERVED = 0x03,
HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_REMOTE_BSS = 0x04,
HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_SNID = 0x05,
HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_NID = 0x06,
HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_NET_MODE = 0x07,
HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_BEACON_AGE = 0x08,
HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_BEACON_FC_RELIABILITY = 0x09,
HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_BEACON_PLD_RELIABILITY = 0x0A,
HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_SIGNAL_LEVEL = 0x0B,
HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_SIGNAL_LEVEL_TOS = 0x0C,
HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_SIGNAL_LEVEL_MIN = 0x0D,
HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_SIGNAL_LEVEL_TOS_MIN = 0x0E,
HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_SIGNAL_LEVEL_MAX = 0x0F,
HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_SIGNAL_LEVEL_TOS_MAX = 0x10,
HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_NET_HYB_MODE = 0x11,
HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_TEI = 0x12,
HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_END_BSS = 0xFF,
} homeplug_av_st_iotecha_stp_get_bss_tlv_types;
static const value_string homeplug_av_st_iotecha_stp_get_bss_tlv_type_vals[] = {
{ HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_NULL, "NULL" },
{ HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_BEGIN_BSS, "Start of BSS descriptor" },
{ HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_LOCAL_BSS, "Local BSS Manager" },
{ HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_RESERVED, "Reserved Data" },
{ HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_REMOTE_BSS, "Remote BSS" },
{ HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_SNID, "Short Network ID" },
{ HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_NID, "Network ID" },
{ HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_NET_MODE, "Network Mode" },
{ HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_BEACON_AGE, "Beacon Age" },
{ HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_BEACON_FC_RELIABILITY, "Beacon Frame Control reliability" },
{ HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_BEACON_PLD_RELIABILITY,"Beacon Payload reliability" },
{ HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_SIGNAL_LEVEL, "Signal Level" },
{ HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_SIGNAL_LEVEL_TOS, "Signal Level Time of Sample" },
{ HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_SIGNAL_LEVEL_MIN, "Min Signal Level" },
{ HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_SIGNAL_LEVEL_TOS_MIN, "Min Signal Level Time of Sample" },
{ HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_SIGNAL_LEVEL_MAX, "Max Signal Level" },
{ HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_SIGNAL_LEVEL_TOS_MAX, "Max Signal Level Time of Sample" },
{ HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_NET_HYB_MODE, "Network Hybrid Mode" },
{ HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_TEI, "TEI of BM" },
{ HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_END_BSS, "End of BSS descriptor" },
{ 0, NULL }
};
static const value_string homeplug_av_st_iotecha_mac_address_flag_vals[] = {
{ 0x00, "Unknown" },
{ 0x01, "Local MAC" },
{ 0x02, "Local Bridged MAC" },
{ 0x04, "Remote MAC" },
{ 0x08, "Remote Bridged MAC" },
{ 0, NULL }
};
static const value_string homeplug_av_st_iotecha_chanqual_tei_source_vals[] = {
{ 0x01, "Local Tei" },
{ 0x02, "Remote Tei" },
{ 0, NULL }
};
static const value_string homeplug_av_st_iotecha_chanqual_substatus_vals[] = {
{ 0x01, "Subscribed" },
{ 0x02, "Unsubscribed" },
{ 0x03, "Invalid Request Type" },
{ 0, NULL }
};
static const value_string homeplug_av_st_iotecha_chanqual_responsetype_vals[] = {
{ 0x00, "Default Tone map transmitted in ICE" },
{ 0x01, "Others" },
{ 0, NULL }
};
static const value_string homeplug_av_st_iotecha_chanqual_tmi_vals[] = {
{ 0xFE, "Not Available For Particular Interval" },
{ 0xFF, "Unusable Interval" },
{ 0, NULL }
};
#define HOMEPLUG_AV_ST_IOTECHA_CHANQUAL_CBLD_DATA_MASK_LOW 0x0F
#define HOMEPLUG_AV_ST_IOTECHA_CHANQUAL_CBLD_DATA_MASK_HIGH 0xF0
/* (1154/2) */
#define HOMEPLUG_AV_ST_IOTECHA_CHANQUAL_CBLD_DATA_COUNT 577
static const value_string homeplug_av_st_iotecha_chanqual_cbld_data_vals[] = {
{ 0x00, "Empty" },
{ 0x01, "Bitload of 1" },
{ 0x02, "Bitload of 2" },
{ 0x03, "Bitload of 3" },
{ 0x04, "Bitload of 4" },
{ 0x05, "Bitload of 5" },
{ 0x06, "Bitload of 6" },
{ 0x07, "Bitload of 7" },
{ 0x08, "Bitload of 8" },
{ 0x09, "Bitload of 9" },
{ 0x0A, "Bitload of 10" },
{ 0x0F, "Unusable" },
{ 0, NULL }
};
static const value_string homeplug_av_st_iotecha_chanqual_reqtype_vals[] = {
{ 0x01, "Subscribe" },
{ 0x02, "Unsubscribe" },
{ 0, NULL }
};
static const value_string homeplug_av_st_iotecha_mfct_request_type_vals[] = {
{ 0x00, "Commit" },
{ 0x02, "Abort" },
{ 0, NULL }
};
static const value_string homeplug_av_st_iotecha_mfct_result_vals[] = {
{ 0x00, "Success" },
{ 0x03, "Parameter Not Found" },
{ 0x04, "Permission Error" },
{ 0x05, "Insufficient space in parameter region" },
{ 0x06, "Internal Error" },
{ 0, NULL }
};
static const value_string homeplug_av_st_iotecha_stp_fwup_mtype_vals[] = {
{ 0x00, "Start Request" },
{ 0x01, "Start Confirmation" },
{ 0x02, "Data Index" },
{ 0x03, "Data Response" },
{ 0, NULL }
};
static const value_string homeplug_av_st_iotecha_stp_cpstate_state_vals[] = {
{ 0x00, "Invalid"},
{ 0x01, "A"},
{ 0x02, "Ambiguous (A-B)"},
{ 0x03, "B"},
{ 0x04, "Ambiguous (B-C)"},
{ 0x05, "C"},
{ 0x06, "Ambiguous (C-D)"},
{ 0x07, "D"},
{ 0x08, "Ambiguous (D-E)"},
{ 0x09, "E"},
{ 0x0A, "F"},
{ 0, NULL }
};
static const value_string homeplug_av_st_iotecha_test_type_vals[] = {
{ 0x00, "Power"},
{ 0x01, "Error"},
{ 0, NULL }
};
static const value_string homeplug_av_st_iotecha_agc_lock_vals[] = {
{ 0x00, "Disabled"},
{ 0x01, "Enabled"},
{ 0, NULL }
};
static const value_string homeplug_av_st_iotecha_test_status_vals[] = {
{ 0x00, "Test running"},
{ 0x01, "Failed to start test"},
{ 0x02, "Test reset"},
{ 0, NULL }
};
static const value_string homeplug_av_st_iotecha_suppress_data_vals[] = {
{ 0x00, "Disabled"},
{ 0x01, "Enabled"},
{ 0, NULL }
};
static void
adc_bitmask_base(gchar *buf, guint8 value) {
snprintf(buf, ITEM_LABEL_LENGTH, "%s, %s, %s (%d)",
(value & 0x01) ? "true" : "false",
(value & 0x02) ? "true" : "false",
(value & 0x04) ? "true" : "false",
value);
}
/* End of ST/IoTecha specific values */
#define TVB_LEN_GREATEST 1
#define TVB_LEN_UNDEF 0
#define TVB_LEN_SHORTEST -1
static int check_tvb_length(ptvcursor_t *cursor, const gint length)
{
if (!cursor)
return TVB_LEN_UNDEF;
if (tvb_reported_length_remaining(ptvcursor_tvbuff(cursor),
ptvcursor_current_offset(cursor)) < length)
return TVB_LEN_SHORTEST;
return TVB_LEN_GREATEST;
}
static inline unsigned int homeplug_av_mmtype_msb_is_vendor(guint8 msb)
{
return ((msb & (HOMEPLUG_AV_MMTYPE_MSB_VENDOR << HOMEPLUG_AV_MMTYPE_MSB_SHIFT)) ==
(HOMEPLUG_AV_MMTYPE_MSB_VENDOR << HOMEPLUG_AV_MMTYPE_MSB_SHIFT));
}
static inline unsigned int homeplug_av_mmtype_msb_is_manufacturer(guint8 msb)
{
return ((msb & (HOMEPLUG_AV_MMTYPE_MSB_MANUF << HOMEPLUG_AV_MMTYPE_MSB_SHIFT)) ==
(HOMEPLUG_AV_MMTYPE_MSB_MANUF << HOMEPLUG_AV_MMTYPE_MSB_SHIFT));
}
static inline guint8 homeplug_av_get_mmhdr_size(guint8 mmv) {
/* Header in HomePlug AV 1.1 is 2 bytes larger (Fragmentation information) */
return (mmv ? 5 : 3);
}
/* Dissection of MMHDR */
static void
dissect_homeplug_av_mmhdr(ptvcursor_t *cursor, guint8 *homeplug_av_mmver, guint16 *homeplug_av_mmtype, guint32 *homeplug_av_oui)
{
proto_item *ti;
proto_tree *ti_mmtype;
/* Save in static variable */
/* proto_tree *ti_vendor; */
proto_tree *ti_public;
guint8 lsb, msb, mmv;
guint32 offset;
offset = 0;
mmv = tvb_get_guint8(ptvcursor_tvbuff(cursor),
ptvcursor_current_offset(cursor));
lsb = tvb_get_guint8(ptvcursor_tvbuff(cursor),
ptvcursor_current_offset(cursor) + 1);
msb = tvb_get_guint8(ptvcursor_tvbuff(cursor),
ptvcursor_current_offset(cursor) + 2);
*homeplug_av_mmver = mmv;
*homeplug_av_mmtype = (msb << 8) | lsb;
if (homeplug_av_mmtype_msb_is_vendor(msb)
|| homeplug_av_mmtype_msb_is_manufacturer(msb))
{
/* read three bytes of OUI */
*homeplug_av_oui = tvb_get_guint24(ptvcursor_tvbuff(cursor),
ptvcursor_current_offset(cursor)+homeplug_av_get_mmhdr_size(mmv),
ENC_NA);
}
if (!ptvcursor_tree(cursor)) {
/* advance even there is no tree to be able to extract data in packet specific dissectors */
offset += homeplug_av_get_mmhdr_size(mmv);
if (homeplug_av_mmtype_msb_is_vendor(msb)
|| homeplug_av_mmtype_msb_is_manufacturer(msb)) {
offset += 3;
}
ptvcursor_advance(cursor, offset);
return;
}
/* Header in HomePlug AV 1.1 is 2 bytes larger (Fragmentation information) */
ti = ptvcursor_add_no_advance(cursor, hf_homeplug_av_mmhdr, homeplug_av_get_mmhdr_size(*homeplug_av_mmver), ENC_NA);
ptvcursor_push_subtree(cursor, ti, ett_homeplug_av_mmhdr);
{
ptvcursor_add(cursor, hf_homeplug_av_mmhdr_mmver, 1, ENC_BIG_ENDIAN);
switch (*homeplug_av_oui) {
case HOMEPLUG_AV_OUI_QCA:
ti_mmtype = ptvcursor_add_no_advance(cursor, hf_homeplug_av_mmhdr_mmtype_qualcomm, 2, ENC_LITTLE_ENDIAN);
break;
case HOMEPLUG_AV_OUI_ST_IOTECHA:
ti_mmtype = ptvcursor_add_no_advance(cursor, hf_homeplug_av_mmhdr_mmtype_st, 2, ENC_LITTLE_ENDIAN);
break;
default:
ti_mmtype = ptvcursor_add_no_advance(cursor, hf_homeplug_av_mmhdr_mmtype_general, 2, ENC_LITTLE_ENDIAN);
break;
}
ptvcursor_push_subtree(cursor, ti_mmtype, ett_homeplug_av_mmtype);
{
ptvcursor_add(cursor, hf_homeplug_av_mmhdr_mmtype_lsb, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_mmhdr_mmtype_msb, 1, ENC_BIG_ENDIAN);
}
ptvcursor_pop_subtree(cursor);
/* Fragmentation information is part of the header in HomePlug AV 1.1 */
if (mmv)
{
ti_public = ptvcursor_add_no_advance(cursor, hf_homeplug_av_mmhdr_fmi, 2, ENC_LITTLE_ENDIAN);
ptvcursor_push_subtree(cursor, ti_public, ett_homeplug_av_fmi);
{
ptvcursor_add_no_advance(cursor, hf_homeplug_av_public_frag_count, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_public_frag_index, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_public_frag_seqnum, 1, ENC_BIG_ENDIAN);
}
ptvcursor_pop_subtree(cursor);
}
}
ptvcursor_pop_subtree(cursor);
/* Vendor management frame */
if (homeplug_av_mmtype_msb_is_vendor(msb) || homeplug_av_mmtype_msb_is_manufacturer(msb))
{
ti_vendor = ptvcursor_add_no_advance(cursor, hf_homeplug_av_vendor, 3, ENC_NA);
ptvcursor_push_subtree(cursor, ti_vendor, ett_homeplug_av_vendor);
{
ptvcursor_add(cursor, hf_homeplug_av_vendor_oui, 3, ENC_NA);
}
ptvcursor_pop_subtree(cursor);
}
/* Public management frame in HomePlug AV 1.0 */
else if (!mmv)
{
ti_public = ptvcursor_add_no_advance(cursor, hf_homeplug_av_public, -1, ENC_NA);
ptvcursor_push_subtree(cursor, ti_public, ett_homeplug_av_public);
{
ptvcursor_add_no_advance(cursor, hf_homeplug_av_public_frag_count, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_public_frag_index, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_public_frag_seqnum, 1, ENC_BIG_ENDIAN);
}
ptvcursor_pop_subtree(cursor);
}
}
/* Beacon body */
static void
dissect_homeplug_av_beacon_payload(ptvcursor_t *cursor)
{
proto_item *it;
proto_tree *tree;
tvbuff_t *tvb;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_bcn_payload, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_bcn_payload);
{
tree = ptvcursor_tree(cursor);
tvb = ptvcursor_tvbuff(cursor);
static int * const bcn1_fields[] = {
&hf_homeplug_av_bcn_nid,
&hf_homeplug_av_bcn_hm,
NULL
};
proto_tree_add_bitmask_list(tree, tvb, ptvcursor_current_offset(cursor), 7, bcn1_fields, ENC_BIG_ENDIAN);
ptvcursor_advance(cursor, 7);
ptvcursor_add(cursor, hf_homeplug_av_bcn_stei, 1, ENC_BIG_ENDIAN);
static int * const bcn2_fields[] = {
&hf_homeplug_av_bcn_type,
&hf_homeplug_av_bcn_ncnr,
&hf_homeplug_av_bcn_npsm,
&hf_homeplug_av_bcn_num_slots,
NULL
};
proto_tree_add_bitmask_list(tree, tvb, ptvcursor_current_offset(cursor), 1, bcn2_fields, ENC_BIG_ENDIAN);
ptvcursor_advance(cursor, 1);
ptvcursor_add(cursor, hf_homeplug_av_bcn_slot_use, 1, ENC_BIG_ENDIAN);
static int * const bcn3_fields[] = {
&hf_homeplug_av_bcn_slot_id,
&hf_homeplug_av_bcn_aclss,
&hf_homeplug_av_bcn_hoip,
&hf_homeplug_av_bcn_rtsbf,
NULL
};
proto_tree_add_bitmask_list(tree, tvb, ptvcursor_current_offset(cursor), 1, bcn3_fields, ENC_BIG_ENDIAN);
ptvcursor_advance(cursor, 1);
static int * const bcn4_fields[] = {
&hf_homeplug_av_bcn_nm,
&hf_homeplug_av_bcn_cco_cap,
&hf_homeplug_av_bcn_rsf,
&hf_homeplug_av_bcn_plevel,
NULL
};
proto_tree_add_bitmask_list(tree, tvb, ptvcursor_current_offset(cursor), 1, bcn4_fields, ENC_BIG_ENDIAN);
ptvcursor_advance(cursor, 1);
/* TODO: decode individual beacon entries */
ptvcursor_add(cursor, hf_homeplug_av_bcn_bentries, 120, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_bcn_bpcs, 4, ENC_LITTLE_ENDIAN);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_beacon(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_bcn, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_bcn);
{
ptvcursor_add(cursor, hf_homeplug_av_bcn_bts, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_bcn_bto_0, 2, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_bcn_bto_1, 2, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_bcn_bto_2, 2, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_bcn_bto_3, 2, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_fc_fccs_av, 3, ENC_NA);
dissect_homeplug_av_beacon_payload(cursor);
}
ptvcursor_pop_subtree(cursor);
}
/* Start of Frame */
static void
dissect_homeplug_av_start_of_frame(ptvcursor_t *cursor)
{
proto_item *it;
proto_tree *tree;
tvbuff_t *tvb;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_sof, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_sof);
{
tree = ptvcursor_tree(cursor);
tvb = ptvcursor_tvbuff(cursor);
ptvcursor_add(cursor, hf_homeplug_av_stei, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_dtei, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_lid, 1, ENC_BIG_ENDIAN);
static int * const sof1_fields[] = {
&hf_homeplug_av_cfs,
&hf_homeplug_av_bdf,
&hf_homeplug_av_hp10df,
&hf_homeplug_av_hp11df,
&hf_homeplug_av_sof_peks,
NULL
};
proto_tree_add_bitmask_list(tree, tvb, ptvcursor_current_offset(cursor), 1, sof1_fields, ENC_BIG_ENDIAN);
ptvcursor_advance(cursor, 1);
ptvcursor_add(cursor, hf_homeplug_av_ppb, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_sof_ble, 1, ENC_BIG_ENDIAN);
static int * const sof2_fields[] = {
&hf_homeplug_av_sof_pbsz,
&hf_homeplug_av_sof_num_sym,
&hf_homeplug_av_sof_tmi_av,
NULL
};
proto_tree_add_bitmask_list(tree, tvb, ptvcursor_current_offset(cursor), 1, sof2_fields, ENC_BIG_ENDIAN);
ptvcursor_advance(cursor, 1);
static int * const sof3_fields[] = {
&hf_homeplug_av_fl_av,
&hf_homeplug_av_sof_mpdu_cnt,
&hf_homeplug_av_sof_burst_cnt,
NULL
};
proto_tree_add_bitmask_list(tree, tvb, ptvcursor_current_offset(cursor), 2, sof3_fields, ENC_LITTLE_ENDIAN);
ptvcursor_advance(cursor, 2);
static int * const sof4_fields[] = {
&hf_homeplug_av_sof_bbf,
&hf_homeplug_av_sof_mrtfl,
&hf_homeplug_av_sof_dccpcf,
&hf_homeplug_av_sof_mcf,
&hf_homeplug_av_sof_mnbf,
NULL
};
proto_tree_add_bitmask_list(tree, tvb, ptvcursor_current_offset(cursor), 1, sof4_fields, ENC_BIG_ENDIAN);
ptvcursor_advance(cursor, 1);
static int * const sof5_fields[] = {
&hf_homeplug_av_sof_rsr,
&hf_homeplug_av_sof_clst,
&hf_homeplug_av_sof_mfs_cmd_mgmt,
&hf_homeplug_av_sof_mfs_cmd_data,
NULL
};
proto_tree_add_bitmask_list(tree, tvb, ptvcursor_current_offset(cursor), 1, sof5_fields, ENC_BIG_ENDIAN);
ptvcursor_advance(cursor, 1);
static int * const sof6_fields[] = {
&hf_homeplug_av_sof_mfs_rsp_mgmt,
&hf_homeplug_av_sof_mfs_rsp_data,
&hf_homeplug_av_sof_bm_sack,
NULL
};
proto_tree_add_bitmask_list(tree, tvb, ptvcursor_current_offset(cursor), 1, sof6_fields, ENC_BIG_ENDIAN);
ptvcursor_advance(cursor, 1);
ptvcursor_add(cursor, hf_homeplug_av_fc_fccs_av, 3, ENC_NA);
}
ptvcursor_pop_subtree(cursor);
}
/* Selective acknowledgment */
static void
dissect_homeplug_av_sack(ptvcursor_t *cursor)
{
proto_item *it;
proto_tree *tree;
tvbuff_t *tvb;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_sack, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_sack);
{
tree = ptvcursor_tree(cursor);
tvb = ptvcursor_tvbuff(cursor);
ptvcursor_add(cursor, hf_homeplug_av_dtei, 1, ENC_BIG_ENDIAN);
proto_tree_add_bitmask_list(tree, tvb, ptvcursor_current_offset(cursor), 1, rsof_sack_fields, ENC_BIG_ENDIAN);
ptvcursor_advance(cursor, 1);
/* TODO: add variable fields here */
ptvcursor_advance(cursor, 10);
ptvcursor_add(cursor, hf_homeplug_av_fc_fccs_av, 3, ENC_NA);
}
ptvcursor_pop_subtree(cursor);
}
/* Request to send/clear to send */
static void
dissect_homeplug_av_rtscts(ptvcursor_t *cursor)
{
proto_item *it;
proto_tree *tree;
tvbuff_t *tvb;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_rtscts, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_rtscts);
{
tree = ptvcursor_tree(cursor);
tvb = ptvcursor_tvbuff(cursor);
ptvcursor_add(cursor, hf_homeplug_av_stei, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_dtei, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_lid, 1, ENC_BIG_ENDIAN);
static int * const rtscts_fields[] = {
&hf_homeplug_av_cfs,
&hf_homeplug_av_bdf,
&hf_homeplug_av_hp10df,
&hf_homeplug_av_hp11df,
&hf_homeplug_av_rtscts_rtsf,
&hf_homeplug_av_rtscts_igf,
&hf_homeplug_av_rtscts_mnbf,
&hf_homeplug_av_rtscts_mcf,
NULL
};
proto_tree_add_bitmask_list(tree, tvb, ptvcursor_current_offset(cursor), 1, rtscts_fields, ENC_BIG_ENDIAN);
ptvcursor_advance(cursor, 1);
ptvcursor_add(cursor, hf_homeplug_av_rtscts_dur, 2, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_reserved, 6, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_fc_fccs_av, 3, ENC_NA);
}
ptvcursor_pop_subtree(cursor);
}
/* Sound */
static void
dissect_homeplug_av_sound(ptvcursor_t *cursor)
{
proto_item *it;
proto_tree *tree;
tvbuff_t *tvb;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_sound, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_sound);
{
tree = ptvcursor_tree(cursor);
tvb = ptvcursor_tvbuff(cursor);
ptvcursor_add(cursor, hf_homeplug_av_stei, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_dtei, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_lid, 1, ENC_BIG_ENDIAN);
static int * const sound1_fields[] = {
&hf_homeplug_av_cfs,
&hf_homeplug_av_sound_pbsz,
&hf_homeplug_av_sound_bdf,
&hf_homeplug_av_sound_saf,
&hf_homeplug_av_sound_scf,
&hf_homeplug_av_sound_req_tm,
NULL
};
proto_tree_add_bitmask_list(tree, tvb, ptvcursor_current_offset(cursor), 1, sound1_fields, ENC_BIG_ENDIAN);
ptvcursor_advance(cursor, 1);
static int * const sound2_fields[] = {
&hf_homeplug_av_fl_av,
&hf_homeplug_av_sound_mpdu_cnt,
NULL
};
proto_tree_add_bitmask_list(tree, tvb, ptvcursor_current_offset(cursor), 2, sound2_fields, ENC_LITTLE_ENDIAN);
ptvcursor_advance(cursor, 2);
ptvcursor_add(cursor, hf_homeplug_av_ppb, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_sound_src, 1, ENC_BIG_ENDIAN);
static int * const sound3_fields[] = {
&hf_homeplug_av_sound_add_req_tm,
&hf_homeplug_av_sound_max_pb_sym,
&hf_homeplug_av_sound_ecsf,
&hf_homeplug_av_sound_ecuf,
NULL
};
proto_tree_add_bitmask_list(tree, tvb, ptvcursor_current_offset(cursor), 1, sound3_fields, ENC_BIG_ENDIAN);
ptvcursor_advance(cursor, 1);
static int * const sound4_fields[] = {
&hf_homeplug_av_sound_ems,
&hf_homeplug_av_sound_esgisf,
&hf_homeplug_av_sound_elgisf,
&hf_homeplug_av_sound_efrs,
NULL
};
proto_tree_add_bitmask_list(tree, tvb, ptvcursor_current_offset(cursor), 1, sound4_fields, ENC_BIG_ENDIAN);
ptvcursor_advance(cursor, 3); /* one byte for bitmask plus two reserved bytes we ignore */
ptvcursor_add(cursor, hf_homeplug_av_fc_fccs_av, 3, ENC_NA);
}
ptvcursor_pop_subtree(cursor);
}
/* Reverse Start of Frame */
static void
dissect_homeplug_av_rsof(ptvcursor_t *cursor)
{
proto_item *it;
proto_tree *tree;
tvbuff_t *tvb;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_rsof, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_rsof);
{
tree = ptvcursor_tree(cursor);
tvb = ptvcursor_tvbuff(cursor);
ptvcursor_add(cursor, hf_homeplug_av_dtei, 1, ENC_BIG_ENDIAN);
proto_tree_add_bitmask_list(tree, tvb, ptvcursor_current_offset(cursor), 1, rsof_sack_fields, ENC_BIG_ENDIAN);
ptvcursor_advance(cursor, 8); /* 1 byte for bitmask field, plus 7 bytes of variable data */
/* TODO: fill in variable fields */
static int * const rsof2_fields[] = {
&hf_homeplug_av_rsof_fl,
&hf_homeplug_av_rsof_tmi,
&hf_homeplug_av_rsof_pbsz,
NULL
};
proto_tree_add_bitmask_list(tree, tvb, ptvcursor_current_offset(cursor), 2, rsof2_fields, ENC_LITTLE_ENDIAN);
ptvcursor_advance(cursor, 2);
static int * const rsof3_fields[] = {
&hf_homeplug_av_rsof_num_sym,
&hf_homeplug_av_rsof_mfs_cmd_mgmt,
&hf_homeplug_av_rsof_mfs_cmd_data,
NULL
};
proto_tree_add_bitmask_list(tree, tvb, ptvcursor_current_offset(cursor), 1, rsof3_fields, ENC_BIG_ENDIAN);
ptvcursor_advance(cursor, 1);
ptvcursor_add(cursor, hf_homeplug_av_fc_fccs_av, 3, ENC_NA);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_nw_info_sta(ptvcursor_t *cursor, gboolean vendor, guint homeplug_av_mmver)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_nw_info_sta_info, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_nw_info_sta_info);
{
ptvcursor_add(cursor, hf_homeplug_av_nw_info_sta_da, 6, ENC_NA);
if (vendor) {
ptvcursor_add(cursor, hf_homeplug_av_nw_info_sta_tei, 1, ENC_BIG_ENDIAN);
if (homeplug_av_mmver == HOMEPLUG_AV_MMVER_1_1)
ptvcursor_add(cursor, hf_homeplug_av_reserved, 3, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_nw_info_sta_bda, 6, ENC_NA);
}
if (!homeplug_av_mmver)
{
ptvcursor_add(cursor, hf_homeplug_av10_nw_info_sta_phy_dr_tx, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av10_nw_info_sta_phy_dr_rx, 1, ENC_BIG_ENDIAN);
}
else if (homeplug_av_mmver == HOMEPLUG_AV_MMVER_1_1)
{
ptvcursor_add(cursor, hf_homeplug_av11_nw_info_sta_phy_dr_tx, 2, ENC_LITTLE_ENDIAN);
ptvcursor_add_no_advance(cursor, hf_homeplug_av11_nw_info_sta_cpling_tx, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av11_nw_info_sta_cpling_rx, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_reserved, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av11_nw_info_sta_phy_dr_rx, 2, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_reserved, 2, ENC_NA);
}
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_nw_info_net(ptvcursor_t *cursor, gboolean vendor, guint8 homeplug_av_mmver)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_nw_info_net_info, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_nw_info_net_info);
{
ptvcursor_add(cursor, hf_homeplug_av_nw_info_nid, 7, ENC_NA);
if (homeplug_av_mmver == HOMEPLUG_AV_MMVER_1_1)
ptvcursor_add(cursor, hf_homeplug_av_reserved, 2, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_nw_info_snid, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_nw_info_tei, 1, ENC_BIG_ENDIAN);
if (homeplug_av_mmver == HOMEPLUG_AV_MMVER_1_1)
ptvcursor_add(cursor, hf_homeplug_av_reserved, 4, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_nw_info_sta_role, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_nw_info_cco_mac, 6, ENC_NA);
if (vendor) {
ptvcursor_add(cursor, hf_homeplug_av_nw_info_cco_tei, 1, ENC_BIG_ENDIAN);
if (homeplug_av_mmver == HOMEPLUG_AV_MMVER_1_1)
ptvcursor_add(cursor, hf_homeplug_av_reserved, 3, ENC_NA);
}
else
{
ptvcursor_add(cursor, hf_homeplug_av_nw_info_access, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_nw_info_num_coord, 1, ENC_BIG_ENDIAN);
}
}
ptvcursor_pop_subtree(cursor);
}
/* Public MMEs */
static void
dissect_homeplug_av_cc_sta_info(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_cc_sta_info, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_cc_sta_info);
{
ptvcursor_add(cursor, hf_homeplug_av_cc_sta_info_mac, 6, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_cc_sta_info_tei, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_cc_sta_info_same_net, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_nw_info_snid, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_nw_info_cco_cap, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_cc_sta_info_sig_level, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_cc_sta_info_avg_ble, 1, ENC_BIG_ENDIAN);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_cc_net_info(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_cc_net_info, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_cc_net_info);
{
ptvcursor_add(cursor, hf_homeplug_av_nw_info_nid, 7, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_nw_info_snid, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_cc_net_info_hyb_mode, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_cc_net_info_bcn_slots, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_cc_net_info_cco_sts, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_cc_net_info_bcn_ofs, 2, ENC_BIG_ENDIAN);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_cc_disc_list_cnf(ptvcursor_t *cursor)
{
proto_item *it;
guint8 num_stas;
guint8 sta;
guint8 num_nets;
guint8 net;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_cc_disc_list_cnf, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_cc_disc_list_cnf);
{
num_stas = tvb_get_guint8(ptvcursor_tvbuff(cursor),
ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_homeplug_av_cc_disc_list_sta_cnt, 1, ENC_BIG_ENDIAN);
for (sta = 0; sta < num_stas; sta++) {
dissect_homeplug_av_cc_sta_info(cursor);
}
num_nets = tvb_get_guint8(ptvcursor_tvbuff(cursor),
ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_homeplug_av_cc_disc_list_net_cnt, 1, ENC_BIG_ENDIAN);
for (net = 0; net < num_nets; net++) {
dissect_homeplug_av_cc_net_info(cursor);
}
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_cm_enc_pld_ind(ptvcursor_t *cursor)
{
proto_item *it;
guint8 pid;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_cm_enc_pld_ind, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_cm_enc_pld_ind);
{
ptvcursor_add(cursor, hf_homeplug_av_nw_info_peks, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_cm_enc_pld_ind_avlns, 1, ENC_BIG_ENDIAN);
pid = tvb_get_guint8(ptvcursor_tvbuff(cursor),
ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_homeplug_av_nw_info_pid, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_nw_info_prn, 2, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_nw_info_pmn, 1, ENC_BIG_ENDIAN);
if (pid == HOMEPLUG_AV_PID_HLE) {
ptvcursor_add(cursor, hf_homeplug_av_cm_enc_pld_ind_iv, 16, ENC_NA);
} else {
ptvcursor_add(cursor, hf_homeplug_av_cm_enc_pld_ind_uuid, 16, ENC_LITTLE_ENDIAN);
}
ptvcursor_add(cursor, hf_homeplug_av_cm_enc_pld_ind_len, 2, ENC_LITTLE_ENDIAN);
/* Encrypted payload follows */
if (pid != HOMEPLUG_AV_PID_HLE) {
ptvcursor_add(cursor, hf_homeplug_av_cm_enc_pld_ind_pld, -1, ENC_NA);
}
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_cm_enc_pld_rsp(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_cm_enc_pld_rsp, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_cm_enc_pld_rsp);
{
ptvcursor_add(cursor, hf_homeplug_av_cm_enc_pld_rsp_result, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_nw_info_pid, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_nw_info_prn, 2, ENC_LITTLE_ENDIAN);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_cm_set_key_req(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_cm_set_key_req, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_cm_set_key_req);
{
ptvcursor_add(cursor, hf_homeplug_av_nw_info_key_type, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_nw_info_my_nonce, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_nw_info_your_nonce, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_nw_info_pid, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_nw_info_prn, 2, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_nw_info_pmn, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_nw_info_cco_cap, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_nw_info_nid, 7, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_nw_info_peks, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_cm_set_key_req_nw_key, 16, ENC_NA);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_cm_set_key_cnf(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_cm_set_key_cnf, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_cm_set_key_cnf);
{
ptvcursor_add(cursor, hf_homeplug_av_cm_set_key_cnf_result, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_nw_info_my_nonce, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_nw_info_your_nonce, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_nw_info_pid, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_nw_info_prn, 2, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_nw_info_pmn, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_nw_info_cco_cap, 1, ENC_BIG_ENDIAN);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_cm_get_key_req(ptvcursor_t *cursor)
{
proto_item *it;
guint8 key_type;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_cm_get_key_req, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_cm_get_key_req);
{
ptvcursor_add(cursor, hf_homeplug_av_cm_get_key_req_type, 1, ENC_BIG_ENDIAN);
key_type = tvb_get_guint8(ptvcursor_tvbuff(cursor),
ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_homeplug_av_nw_info_key_type, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_nw_info_nid, 7, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_nw_info_my_nonce, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_nw_info_pid, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_nw_info_prn, 2, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_nw_info_pmn, 1, ENC_BIG_ENDIAN);
if (key_type == HOMEPLUG_AV_KEY_TYPE_HASH) {
ptvcursor_add(cursor, hf_homeplug_av_cm_get_key_req_has_key, -1, ENC_NA);
}
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_cm_get_key_cnf(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_cm_get_key_cnf, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_cm_get_key_cnf);
{
ptvcursor_add(cursor, hf_homeplug_av_cm_get_key_cnf_result, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_cm_get_key_cnf_rtype, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_nw_info_my_nonce, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_nw_info_your_nonce, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_nw_info_nid, 7, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_nw_info_peks, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_nw_info_pid, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_nw_info_prn, 2, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_nw_info_pmn, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_cm_get_key_cnf_key, -1, ENC_NA);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_get_brg_infos_cnf(ptvcursor_t *cursor)
{
proto_item *it;
guint8 bridging;
guint8 num_stas;
guint8 sta;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_brg_infos_cnf, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_brg_infos_cnf);
{
bridging = tvb_get_guint8(ptvcursor_tvbuff(cursor),
ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_homeplug_av_brg_infos_cnf_brd, 1, ENC_BIG_ENDIAN);
if (bridging) {
ptvcursor_add(cursor, hf_homeplug_av_brg_infos_cnf_btei, 1, ENC_BIG_ENDIAN);
num_stas = tvb_get_guint8(ptvcursor_tvbuff(cursor),
ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_homeplug_av_brg_infos_cnf_num_stas, 1, ENC_BIG_ENDIAN);
for (sta = 0; sta < num_stas; sta++) {
ptvcursor_add(cursor, hf_homeplug_av_brg_infos_cnf_mac, 6, ENC_NA);
}
}
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_nw_infos_cnf(ptvcursor_t *cursor)
{
proto_item *it;
guint8 num_avlns;
guint8 net;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_cm_nw_infos_cnf, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_cm_nw_infos_cnf);
{
num_avlns = tvb_get_guint8(ptvcursor_tvbuff(cursor),
ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_homeplug_av_nw_info_num_avlns, 1, ENC_BIG_ENDIAN);
for (net = 0; net < num_avlns; net++) {
/* Force HomePlug AV 1.0 layout here */
dissect_homeplug_av_nw_info_net(cursor, FALSE, 0);
}
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_nw_stats_cnf(ptvcursor_t *cursor)
{
proto_item *it;
guint8 num_stas;
guint8 sta;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_nw_stats_cnf, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_nw_stats_cnf);
{
num_stas = tvb_get_guint8(ptvcursor_tvbuff(cursor),
ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_homeplug_av_nw_info_num_stas, 1, ENC_BIG_ENDIAN);
for (sta = 0; sta < num_stas; sta++) {
/* Force HomePlug AV 1.0 layout here */
dissect_homeplug_av_nw_info_sta(cursor, FALSE, 0);
}
}
ptvcursor_pop_subtree(cursor);
}
/* Intellon - Qualcomm specific MME Types */
static void
dissect_homeplug_av_get_sw_cnf(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_get_sw_cnf, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_get_sw_cnf);
{
ptvcursor_add(cursor, hf_homeplug_av_get_sw_cnf_status, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_get_sw_cnf_dev_id, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_get_sw_cnf_ver_len, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_get_sw_cnf_ver_str, 64, ENC_ASCII);
ptvcursor_add(cursor, hf_homeplug_av_get_sw_cnf_upg, 1, ENC_BIG_ENDIAN);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_wr_mem_req(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_wr_mem_req, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_wr_mem_req);
{
ptvcursor_add(cursor, hf_homeplug_av_mem_addr, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_mem_len_32bits, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add_no_advance(cursor, hf_homeplug_av_mem_data, -1, ENC_NA);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_wr_mem_cnf(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_wr_mem_cnf, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_wr_mem_cnf);
{
ptvcursor_add(cursor, hf_homeplug_av_mem_status, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_mem_addr, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_mem_len_32bits, 4, ENC_LITTLE_ENDIAN);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_rd_mem_req(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_rd_mem_req, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_rd_mem_req);
{
ptvcursor_add(cursor, hf_homeplug_av_mem_addr, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_mem_len_32bits, 4, ENC_LITTLE_ENDIAN);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_rd_mem_cnf(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_rd_mem_cnf, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_rd_mem_cnf);
{
ptvcursor_add(cursor, hf_homeplug_av_mem_status, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_mem_addr, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_mem_len_32bits, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add_no_advance(cursor, hf_homeplug_av_mem_data, -1, ENC_NA);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_st_mac_req(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_st_mac_req, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_st_mac_req);
{
ptvcursor_add(cursor, hf_homeplug_av_mac_module_id, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_reserved, 3, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_st_mac_req_img_load, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_st_mac_req_img_len, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_st_mac_req_img_chksum, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_st_mac_req_img_start, 4, ENC_LITTLE_ENDIAN);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_st_mac_cnf(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_st_mac_cnf, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_st_mac_cnf);
{
ptvcursor_add(cursor, hf_homeplug_av_st_mac_cnf_status, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_mac_module_id, 1, ENC_BIG_ENDIAN);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_get_nvm_cnf(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_get_nvm_cnf, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_get_nvm_cnf);
{
ptvcursor_add(cursor, hf_homeplug_av_get_nvm_cnf_status, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_get_nvm_cnf_nvm_type, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_get_nvm_cnf_nvm_page, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_get_nvm_cnf_nvm_block, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_get_nvm_cnf_nvm_size, 4, ENC_LITTLE_ENDIAN);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_rs_dev_cnf(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_rs_dev_cnf, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_rs_dev_cnf);
{
ptvcursor_add(cursor, hf_homeplug_av_rs_dev_cnf_status, 1, ENC_BIG_ENDIAN);
}
ptvcursor_pop_subtree(cursor);
}
static void dissect_homeplug_av_wr_mod_req(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_wr_mod_req, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_wr_mod_req);
{
ptvcursor_add(cursor, hf_homeplug_av_mac_module_id, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_reserved, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_mem_len_16bits, 2, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_mem_offset, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_mem_checksum, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add_no_advance(cursor, hf_homeplug_av_mem_data, -1, ENC_NA);
}
ptvcursor_pop_subtree(cursor);
}
static void dissect_homeplug_av_wr_mod_cnf(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_wr_mod_cnf, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_wr_mod_cnf);
{
ptvcursor_add(cursor, hf_homeplug_av_wr_mod_cnf_status, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_mac_module_id, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_reserved, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_mem_len_16bits, 2, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_mem_offset, 4, ENC_LITTLE_ENDIAN);
}
ptvcursor_pop_subtree(cursor);
}
static void dissect_homeplug_av_wr_mod_ind(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_wr_mod_ind, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_wr_mod_ind);
{
ptvcursor_add(cursor, hf_homeplug_av_wr_mod_ind_status, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_mac_module_id, 1, ENC_BIG_ENDIAN);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_rd_mod_req(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_rd_mod_req, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_rd_mod_req);
{
ptvcursor_add(cursor, hf_homeplug_av_mac_module_id, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_reserved, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_mem_len_16bits, 2, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_mem_offset, 4, ENC_LITTLE_ENDIAN);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_rd_mod_cnf(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_rd_mod_cnf, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_rd_mod_cnf);
{
ptvcursor_add(cursor, hf_homeplug_av_rd_mod_cnf_status, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_reserved, 3, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_mac_module_id, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_reserved, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_mem_len_16bits, 2, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_mem_offset, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_mem_checksum, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add_no_advance(cursor, hf_homeplug_av_mem_data, -1, ENC_NA);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_mod_nvm_req(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_mod_nvm_req, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_mod_nvm_req);
{
ptvcursor_add(cursor, hf_homeplug_av_mac_module_id, 1, ENC_BIG_ENDIAN);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_mod_nvm_cnf(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_mod_nvm_cnf, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_mod_nvm_cnf);
{
ptvcursor_add(cursor, hf_homeplug_av_mod_nvm_cnf_status, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_mac_module_id, 1, ENC_BIG_ENDIAN);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_wd_rpt_req(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_wd_rpt_req, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_wd_rpt_req);
{
ptvcursor_add(cursor, hf_homeplug_av_wd_rpt_req_session_id, 2, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_wd_rpt_req_clr, 1, ENC_BIG_ENDIAN);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_wd_rpt_ind(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_wd_rpt_ind, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_wd_rpt_ind);
{
ptvcursor_add(cursor, hf_homeplug_av_wd_rpt_ind_status, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_wd_rpt_ind_session_id, 2, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_wd_rpt_ind_num_parts, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_wd_rpt_ind_curr_part, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_wd_rpt_ind_rdata_len, 2, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_wd_rpt_ind_rdata_ofs, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_wd_rpt_ind_rdata, -1, ENC_NA);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_lnk_stats_req(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_lnk_stats_req, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_lnk_stats_req);
{
ptvcursor_add(cursor, hf_homeplug_av_lnk_stats_req_mcontrol, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_lnk_stats_req_dir, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_lnk_stats_req_lid, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_lnk_stats_req_macaddr, 6, ENC_NA);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_lnk_stats_tx(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_lnk_stats_tx, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_lnk_stats_tx);
{
ptvcursor_add(cursor, hf_homeplug_av_lnk_stats_tx_mpdu_ack, 8, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_lnk_stats_tx_mpdu_col, 8, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_lnk_stats_tx_mpdu_fai, 8, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_lnk_stats_tx_pbs_pass, 8, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_lnk_stats_tx_pbs_fail, 8, ENC_LITTLE_ENDIAN);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_lnk_stats_rx_interval(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_rx_inv_stats, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_lnk_stats_rx_inv);
{
ptvcursor_add(cursor, hf_homeplug_av_rx_inv_phy_rate, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_rx_inv_pbs_pass, 8, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_rx_inv_pbs_fail, 8, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_rx_inv_tb_pass, 8, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_rx_inv_tb_fail, 8, ENC_LITTLE_ENDIAN);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_lnk_stats_rx(ptvcursor_t *cursor)
{
proto_item *it;
guint8 num_rx_interval;
guint8 interval;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_lnk_stats_rx, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_lnk_stats_rx);
{
ptvcursor_add(cursor, hf_homeplug_av_lnk_stats_rx_mpdu_ack, 8, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_lnk_stats_rx_mpdu_fai, 8, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_lnk_stats_rx_pbs_pass, 8, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_lnk_stats_rx_pbs_fail, 8, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_lnk_stats_rx_tb_pass, 8, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_lnk_stats_rx_tb_fail, 8, ENC_LITTLE_ENDIAN);
num_rx_interval = tvb_get_guint8(ptvcursor_tvbuff(cursor),
ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_homeplug_av_lnk_stats_rx_num_int, 1, ENC_BIG_ENDIAN);
for (interval = 0; interval < num_rx_interval; interval++) {
dissect_homeplug_av_lnk_stats_rx_interval(cursor);
}
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_lnk_stats_cnf(ptvcursor_t *cursor)
{
proto_item *it;
guint8 status;
guint8 direction;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_lnk_stats_cnf, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_lnk_stats_cnf);
{
status = tvb_get_guint8(ptvcursor_tvbuff(cursor),
ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_homeplug_av_lnk_stats_cnf_status, 1, ENC_BIG_ENDIAN);
direction = tvb_get_guint8(ptvcursor_tvbuff(cursor),
ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_homeplug_av_lnk_stats_cnf_dir, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_lnk_stats_cnf_lid, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_lnk_stats_cnf_tei, 1, ENC_BIG_ENDIAN);
ptvcursor_add_no_advance(cursor, hf_homeplug_av_lnk_stats_cnf_lstats, -1, ENC_NA);
if (status == HOMEPLUG_AV_LNK_STATS_STATUS_SUCCESS)
{
switch (direction) {
case HOMEPLUG_AV_LNK_STATS_DIR_TX:
dissect_homeplug_av_lnk_stats_tx(cursor);
break;
case HOMEPLUG_AV_LNK_STATS_DIR_RX:
dissect_homeplug_av_lnk_stats_rx(cursor);
break;
case HOMEPLUG_AV_LNK_STATS_DIR_TX_RX:
dissect_homeplug_av_lnk_stats_tx(cursor);
dissect_homeplug_av_lnk_stats_rx(cursor);
break;
}
}
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_sniffer_req(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_sniffer_req, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_sniffer_req);
{
ptvcursor_add(cursor, hf_homeplug_av_sniffer_req_ctrl, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_reserved, 4, ENC_NA);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_sniffer_cnf(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_sniffer_cnf, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_sniffer_cnf);
{
ptvcursor_add(cursor, hf_homeplug_av_sniffer_cnf_status, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_sniffer_cnf_state, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_sniffer_cnf_da, 6, ENC_NA);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_sniffer_ind(ptvcursor_t *cursor)
{
proto_item *it;
proto_item *it_data;
tvbuff_t *tvb;
guint offset;
guint8 del_type;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_sniffer_ind, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_sniffer_ind);
{
ptvcursor_add(cursor, hf_homeplug_av_sniffer_ind_type, 1, ENC_BIG_ENDIAN);
it_data = ptvcursor_add_no_advance(cursor, hf_homeplug_av_sniffer_ind_data, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it_data, ett_homeplug_av_sniffer_ind_data);
{
ptvcursor_add(cursor, hf_homeplug_av_sniffer_data_dir, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_sniffer_data_systime, 8, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_sniffer_data_bc_time, 4, ENC_LITTLE_ENDIAN);
offset = ptvcursor_current_offset(cursor);
tvb = ptvcursor_tvbuff(cursor);
del_type = tvb_get_guint8(tvb, offset);
/* bitmask - we only want 3 bits of del_type */
guint8 bitmask = 0x07;
del_type &= bitmask;
static int * const frame_control_fields[] = {
&hf_homeplug_av_fc_del_type,
&hf_homeplug_av_fc_access,
&hf_homeplug_av_fc_snid,
NULL
};
proto_tree_add_bitmask(ptvcursor_tree(cursor), tvb, offset, hf_homeplug_av_fc,
ett_homeplug_av_fc, frame_control_fields, ENC_BIG_ENDIAN);
ptvcursor_advance(cursor, 1);
switch (del_type)
{
case HOMEPLUG_AV_DEL_TYPE_BCN:
dissect_homeplug_av_beacon(cursor);
break;
case HOMEPLUG_AV_DEL_TYPE_SOF:
dissect_homeplug_av_start_of_frame(cursor);
break;
case HOMEPLUG_AV_DEL_TYPE_SACK:
dissect_homeplug_av_sack(cursor);
break;
case HOMEPLUG_AV_DEL_TYPE_RTS:
dissect_homeplug_av_rtscts(cursor);
break;
case HOMEPLUG_AV_DEL_TYPE_SOUND:
dissect_homeplug_av_sound(cursor);
break;
case HOMEPLUG_AV_DEL_TYPE_RSOF:
dissect_homeplug_av_rsof(cursor);
break;
default:
break;
}
}
ptvcursor_pop_subtree(cursor);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_nw_info_cnf(ptvcursor_t *cursor, guint8 homeplug_av_mmver)
{
proto_item *it;
guint8 num_avlns;
guint8 num_stas;
guint8 sta;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_nw_info_cnf, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_nw_info_cnf);
{
if (homeplug_av_mmver == HOMEPLUG_AV_MMVER_1_1)
ptvcursor_add(cursor, hf_homeplug_av_reserved, 5, ENC_NA);
num_avlns = tvb_get_guint8(ptvcursor_tvbuff(cursor),
ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_homeplug_av_nw_info_num_avlns, 1, ENC_BIG_ENDIAN);
if (num_avlns) {
dissect_homeplug_av_nw_info_net(cursor, TRUE, homeplug_av_mmver);
num_stas = tvb_get_guint8(ptvcursor_tvbuff(cursor),
ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_homeplug_av_nw_info_num_stas, 1, ENC_BIG_ENDIAN);
if (homeplug_av_mmver == HOMEPLUG_AV_MMVER_1_1)
ptvcursor_add(cursor, hf_homeplug_av_reserved, 5, ENC_NA);
for (sta = 0; sta < num_stas; sta++) {
dissect_homeplug_av_nw_info_sta(cursor, TRUE, homeplug_av_mmver);
}
}
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_cp_rpt_req(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_cp_rpt_req, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_cp_rpt_req);
{
ptvcursor_add(cursor, hf_homeplug_av_cp_rpt_req_session_id, 2, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_cp_rpt_req_clr, 1, ENC_BIG_ENDIAN);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_cp_rpt_ind(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_cp_rpt_ind, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_cp_rpt_ind);
{
ptvcursor_add(cursor, hf_homeplug_av_cp_rpt_ind_status, 1, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_cp_rpt_ind_major_ver, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_cp_rpt_ind_minor_ver, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_reserved, 14, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_cp_rpt_ind_session_id, 2, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_cp_rpt_ind_total_size, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_cp_rpt_ind_blk_offset, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_cp_rpt_ind_byte_index, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_cp_rpt_ind_num_parts, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_cp_rpt_ind_curr_part, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_cp_rpt_ind_data_len, 2, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_cp_rpt_ind_data_ofs, 1, ENC_LITTLE_ENDIAN);
ptvcursor_add_no_advance(cursor, hf_homeplug_av_cp_rpt_ind_data, -1, ENC_NA);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_fr_lbk_req(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_fr_lbk_req, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_fr_lbk_req);
{
ptvcursor_add(cursor, hf_homeplug_av_fr_lbk_duration, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_reserved, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_fr_lbk_len, 2, ENC_BIG_ENDIAN);
ptvcursor_add_no_advance(cursor, hf_homeplug_av_fr_lbk_req_data, -1, ENC_NA);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_fr_lbk_cnf(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_fr_lbk_cnf, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_fr_lbk_cnf);
{
ptvcursor_add(cursor, hf_homeplug_av_fr_lbk_cnf_status, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_fr_lbk_duration, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_fr_lbk_len, 2, ENC_BIG_ENDIAN);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_lbk_stat_cnf(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_lbk_stat_cnf, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_lbk_stat_cnf);
{
ptvcursor_add(cursor, hf_homeplug_av_lbk_stat_cnf_status, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_lbk_stat_cnf_lbk_stat, 1, ENC_BIG_ENDIAN);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_set_key_req(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_set_key_req, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_set_key_req);
{
ptvcursor_add(cursor, hf_homeplug_av_set_key_req_eks, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_set_key_req_nmk, 16, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_nw_info_peks, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_set_key_req_rda, 6, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_set_key_req_dak, 16, ENC_NA);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_set_key_cnf(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_set_key_cnf, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_set_key_cnf);
{
ptvcursor_add(cursor, hf_homeplug_av_set_key_cnf_status, 1, ENC_BIG_ENDIAN);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_mfg_string_cnf(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_mfg_string_cnf, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_mfg_string_cnf);
{
ptvcursor_add(cursor, hf_homeplug_av_mfg_string_cnf_status, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_mfg_string_cnf_len, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_mfg_string_cnf_string, 64, ENC_ASCII);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_cblock_hdr(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_cblock_hdr, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_cblock_hdr);
{
ptvcursor_add(cursor, hf_homeplug_av_cblock_hdr_ver, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_cblock_img_rom_addr, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_cblock_img_addr, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_cblock_img_len, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_cblock_img_chksum, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_cblock_entry_point, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_cblock_hdr_minor, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_cblock_hdr_img_type, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_cblock_hdr_ignore_mask, 2, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_cblock_hdr_module_id, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_cblock_hdr_module_subid, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_cblock_next_hdr, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_cblock_hdr_chksum, 4, ENC_LITTLE_ENDIAN);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_cblock(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_cblock, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_cblock);
{
ptvcursor_add(cursor, hf_homeplug_av_cblock_sdram_size, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_cblock_sdram_conf, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_cblock_sdram_tim0, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_cblock_sdram_tim1, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_cblock_sdram_cntrl, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_cblock_sdram_refresh, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_cblock_mac_clock, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_reserved, 4, ENC_NA);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_rd_cblock_cnf(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_rd_cblock_cnf, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_rd_cblock_cnf);
{
ptvcursor_add(cursor, hf_homeplug_av_rd_cblock_cnf_status, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_rd_cblock_cnf_len, 1, ENC_BIG_ENDIAN);
dissect_homeplug_av_cblock_hdr(cursor);
dissect_homeplug_av_cblock(cursor);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_set_sdram_req(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_set_sdram_req, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_set_sdram_req);
{
dissect_homeplug_av_cblock(cursor);
ptvcursor_add(cursor, hf_homeplug_av_set_sdram_req_chksum, 4, ENC_LITTLE_ENDIAN);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_set_sdram_cnf(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_set_sdram_cnf, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_set_sdram_cnf);
{
ptvcursor_add(cursor, hf_homeplug_av_set_sdram_cnf_status, 1, ENC_BIG_ENDIAN);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_host_action_ind(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_host_action_ind, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_host_action_ind);
{
ptvcursor_add(cursor, hf_homeplug_av_host_action_ind_act, 1, ENC_BIG_ENDIAN);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_host_action_rsp(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_host_action_rsp, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_host_action_rsp);
{
ptvcursor_add(cursor, hf_homeplug_av_host_action_rsp_sts, 1, ENC_BIG_ENDIAN);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_op_attr_req(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_op_attr_req, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_op_attr_req);
{
ptvcursor_add(cursor, hf_homeplug_av_op_attr_cookie, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_op_attr_rep_type, 1, ENC_BIG_ENDIAN);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_op_attr_bin_report(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_op_attr_cnf_data, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_op_attr_data);
{
ptvcursor_add(cursor, hf_homeplug_av_op_attr_data_hw, 16, ENC_ASCII);
ptvcursor_add(cursor, hf_homeplug_av_op_attr_data_sw, 16, ENC_ASCII);
ptvcursor_add(cursor, hf_homeplug_av_op_attr_data_sw_major, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_op_attr_data_sw_minor, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_op_attr_data_sw_sub, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_op_attr_data_sw_num, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_reserved, 4, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_op_attr_data_sw_date, 8, ENC_ASCII);
ptvcursor_add(cursor, hf_homeplug_av_op_attr_data_sw_rel, 12, ENC_ASCII);
ptvcursor_add(cursor, hf_homeplug_av_op_attr_data_sw_sdram_type, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_reserved, 1, ENC_NA);
ptvcursor_add_no_advance(cursor, hf_homeplug_av_op_attr_data_sw_linefreq, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_op_attr_data_sw_zerocross, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_op_attr_data_sw_sdram_size, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_op_attr_data_sw_auth_mode, 1, ENC_NA);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_op_attr_cnf(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_op_attr_cnf, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_op_attr_cnf);
{
ptvcursor_add(cursor, hf_homeplug_av_op_attr_cnf_status, 2, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_op_attr_cookie, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_op_attr_rep_type, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_op_attr_cnf_size, 2, ENC_LITTLE_ENDIAN);
dissect_homeplug_av_op_attr_bin_report(cursor);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_get_enet_phy_req(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_enet_phy_req, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_enet_phy_req);
{
ptvcursor_add(cursor, hf_homeplug_av_enet_phy_req_mcontrol, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_enet_phy_req_addcaps, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_reserved, 3, ENC_NA);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_get_enet_phy_cnf(ptvcursor_t *cursor)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_enet_phy_cnf, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_enet_phy_cnf);
{
ptvcursor_add(cursor, hf_homeplug_av_enet_phy_cnf_status, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_enet_phy_cnf_speed, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_enet_phy_cnf_duplex, 1, ENC_BIG_ENDIAN);
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_tone_map_tx_req(ptvcursor_t *cursor, guint8 homeplug_av_mmver)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_tone_map_tx_req, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_tone_map_tx_req);
{
if (homeplug_av_mmver == HOMEPLUG_AV_MMVER_1_1)
{
ptvcursor_add(cursor, hf_homeplug_av_reserved, 4, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_tone_map_tx_req_mac, 6, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_tone_map_tx_req_slot, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_tone_map_tx_req_coupling, 1, ENC_LITTLE_ENDIAN);
}
else
{
ptvcursor_add(cursor, hf_homeplug_av_tone_map_tx_req_mac, 6, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_tone_map_tx_req_slot, 1, ENC_BIG_ENDIAN);
}
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_tone_map_rx_req(ptvcursor_t *cursor, guint8 homeplug_av_mmver)
{
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_tone_map_rx_req, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_tone_map_rx_req);
{
if (homeplug_av_mmver == HOMEPLUG_AV_MMVER_1_1)
{
ptvcursor_add(cursor, hf_homeplug_av_reserved, 4, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_req_mac, 6, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_req_slot, 1, ENC_BIG_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_req_coupling, 1, ENC_LITTLE_ENDIAN);
}
else
{
ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_req_mac, 6, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_req_slot, 1, ENC_BIG_ENDIAN);
}
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_tone_map_carrier(ptvcursor_t *cursor, guint16 num_carriers)
{
proto_item *it, *ittm;
guint8 hilo, hi_bits, lo_bits, hi_snr, lo_snr;
guint16 num_carrier_bytes, cb, cid;
guint16 num_act_carriers=0, total_bits=0, total_snr=0;
static const guint8 map_carrier2modbits[] = { 0, 1, 2, 3, 4, 6, 8, 10, 12, 0, 0, 0, 0, 0, 0, 0 }; /* Carrier-Nibble to #Modulated-Bits Mapping */
static const guint8 map_carrier2modbitsSnr[] = { 0, 2, 4, 7, 10, 16, 22, 28, 36, 0, 0, 0, 0, 0, 0, 0 }; /* Carrier-Nibble to #Modulated-Bits-SNR Mapping */
if (!ptvcursor_tree(cursor))
return;
num_carrier_bytes = num_carriers / 2;
/* check if number of carriers is odd */
if (num_carriers & 1)
num_carrier_bytes += 1;
ittm = ptvcursor_add_no_advance(cursor, hf_homeplug_av_tone_map_carriers, num_carrier_bytes, ENC_NA);
ptvcursor_push_subtree(cursor, ittm, ett_homeplug_av_tone_map_carriers);
for (cb = 0; cb < num_carrier_bytes; cb++)
{
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_tone_map_carrier, 1, ENC_NA);
cid = cb*2;
proto_item_append_text(it, " (Carrier #%d/#%d)", cid, cid+1 );
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_tone_map_carrier);
{
hilo = tvb_get_guint8(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
lo_bits = map_carrier2modbits[ (hilo & 0x0f) ];
hi_bits = map_carrier2modbits[ (hilo & 0xf0) >> 4 ];
if(lo_bits) num_act_carriers++;
if(hi_bits) num_act_carriers++;
lo_snr = map_carrier2modbitsSnr[ (hilo & 0x0f) ];
hi_snr = map_carrier2modbitsSnr[ (hilo & 0xf0) >> 4 ];
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_tone_map_carrier_lo, 1, ENC_BIG_ENDIAN);
proto_item_prepend_text(it, "Carrier #%d -> %u bits@SNR %udB: ", cid , lo_bits, lo_snr);
it = ptvcursor_add(cursor, hf_homeplug_av_tone_map_carrier_hi, 1, ENC_BIG_ENDIAN);
proto_item_prepend_text(it, "Carrier #%d -> %u bits@SNR %udB: ", cid+1, hi_bits, hi_snr );
}
ptvcursor_pop_subtree(cursor);
total_bits += (hi_bits+lo_bits);
total_snr += (hi_snr+lo_snr);
}
if (num_act_carriers)
{
/* Append to TM-Subtree: total modulated bits, number of active carriers, Average #Bits/Carrier, Average SNR/Carrier */
proto_item_append_text(ittm, " (Total #ModulatedBits=%d bit, Active #Carriers=%d, Average #Bits/Carrier=%.2f bit), Average SNR/Carrier=%.2f dB)",
total_bits, num_act_carriers, (float) total_bits/num_act_carriers, (float) total_snr/num_act_carriers );
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_tone_map_tx_cnf(ptvcursor_t *cursor, guint8 homeplug_av_mmver)
{
proto_item *it;
guint16 num_act_carriers;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_tone_map_tx_cnf, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_tone_map_tx_cnf);
{
if (homeplug_av_mmver == HOMEPLUG_AV_MMVER_1_1)
{
ptvcursor_add(cursor, hf_homeplug_av_tone_map_tx_cnf_status, 2, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_tone_map_tx_cnf_len, 2, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_reserved, 2, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_tone_map_tx_cnf_mac, 6, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_tone_map_tx_cnf_slot, 2, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_tone_map_tx_cnf_num_tms, 2, ENC_LITTLE_ENDIAN);
num_act_carriers = tvb_get_letohs(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_homeplug_av_tone_map_tx_cnf_num_act, 2, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_reserved, 4, ENC_NA);
if (num_act_carriers)
{
dissect_homeplug_av_tone_map_carrier(cursor, num_act_carriers);
}
}
else
{
ptvcursor_add(cursor, hf_homeplug_av_tone_map_tx_cnf_status, 1, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_tone_map_tx_cnf_slot, 1, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_tone_map_tx_cnf_num_tms, 1, ENC_LITTLE_ENDIAN);
num_act_carriers = tvb_get_letohs(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_homeplug_av_tone_map_tx_cnf_num_act, 2, ENC_LITTLE_ENDIAN);
if (num_act_carriers)
{
dissect_homeplug_av_tone_map_carrier(cursor, num_act_carriers);
}
}
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_tone_map_rx_cnf(ptvcursor_t *cursor, guint8 homeplug_av_mmver)
{
proto_item *it;
guint16 num_act_carriers;
if (!ptvcursor_tree(cursor))
return;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_tone_map_rx_cnf, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_tone_map_rx_cnf);
{
if (homeplug_av_mmver == HOMEPLUG_AV_MMVER_1_1)
{
ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_cnf_status, 1, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_reserved, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_cnf_len, 2, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_cnf_subver, 1, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_reserved, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_cnf_mac, 6, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_cnf_slot, 1, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_cnf_coupling, 1, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_cnf_num_tms, 1, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_reserved, 1, ENC_NA);
num_act_carriers = tvb_get_letohs(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_cnf_num_act, 2, ENC_LITTLE_ENDIAN);
if (num_act_carriers)
{
ptvcursor_add(cursor, hf_homeplug_av_reserved, 4, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_cnf_gil, 1, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_reserved, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_cnf_agc, 1, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_reserved, 1, ENC_NA);
dissect_homeplug_av_tone_map_carrier(cursor, num_act_carriers);
}
}
else
{
ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_cnf_status, 1, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_cnf_slot, 1, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_cnf_num_tms, 1, ENC_LITTLE_ENDIAN);
num_act_carriers = tvb_get_letohs(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_cnf_num_act, 2, ENC_LITTLE_ENDIAN);
if (num_act_carriers)
{
dissect_homeplug_av_tone_map_carrier(cursor, num_act_carriers);
if (num_act_carriers > HOMEPLUG_AV_TONE_MAP_MAX_NUM_CARRIERS_A)
ptvcursor_add(cursor, hf_homeplug_av_reserved, (HOMEPLUG_AV_TONE_MAP_MAX_NUM_CARRIERS_B-num_act_carriers) >>1 , ENC_NA);
else
ptvcursor_add(cursor, hf_homeplug_av_reserved, (HOMEPLUG_AV_TONE_MAP_MAX_NUM_CARRIERS_A-num_act_carriers) >>1 , ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_cnf_gil, 1, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_cnf_agc, 1, ENC_LITTLE_ENDIAN);
}
}
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_cc_assoc_req(ptvcursor_t *cursor) {
if (!ptvcursor_tree(cursor))
return;
ptvcursor_add(cursor, hf_homeplug_av_cc_assoc_reqtype, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_cc_assoc_nid, 7, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_cc_assoc_cco_cap, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_cc_assoc_proxy_net_cap, 1, ENC_NA);
}
static void
dissect_homeplug_av_cc_assoc_cnf(ptvcursor_t *cursor) {
if (!ptvcursor_tree(cursor))
return;
ptvcursor_add(cursor, hf_homeplug_av_cc_assoc_result, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_cc_assoc_nid, 7, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_cc_assoc_snid, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_cc_assoc_tei, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_cc_assoc_lease_time, 2, ENC_LITTLE_ENDIAN);
}
static void
dissect_homeplug_av_cc_set_tei_map_ind(ptvcursor_t *cursor) {
guint8 numberOfSTA = 0;
guint iter = 0;
if (!ptvcursor_tree(cursor))
return;
ptvcursor_add(cursor, hf_homeplug_av_cc_set_tei_map_ind_mode, 1, ENC_NA);
numberOfSTA = tvb_get_guint8( ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_homeplug_av_cc_set_tei_map_ind_num, 1, ENC_NA);
for ( iter = 0; iter < numberOfSTA; ++iter ) {
ptvcursor_add(cursor, hf_homeplug_av_cc_set_tei_map_ind_tei, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_cc_set_tei_map_ind_mac, 6, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_cc_set_tei_map_ind_status, 1, ENC_NA);
}
}
static void
dissect_homeplug_av_cm_unassociated_sta_ind(ptvcursor_t *cursor) {
if (!ptvcursor_tree(cursor))
return;
ptvcursor_add(cursor, hf_homeplug_av_cm_unassoc_sta_nid, 7, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_cm_unassoc_sta_cco_cap, 1, ENC_NA);
}
/* HPAV/GP dissect functions */
static void
dissect_homeplug_av_gp_cm_slac_parm_req(ptvcursor_t *cursor) {
guint8 sectype,cipher_size;
guint16 Counter;
if (!ptvcursor_tree(cursor))
return;
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_parm_apptype, 1, ENC_NA);
sectype = tvb_get_guint8(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_parm_sectype, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_parm_runid, 8, ENC_NA);
if (sectype == HOMEPLUG_AV_GP_SECURITY_TYPE_PUBLIC_KEY) {
cipher_size = tvb_get_guint8(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_parm_cipher_size, 1, ENC_NA);
for (Counter = 0; Counter < cipher_size; ++Counter) {
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_parm_cipher, 2, ENC_LITTLE_ENDIAN);
}
}
}
static void
dissect_homeplug_av_gp_cm_slac_parm_cnf(ptvcursor_t *cursor) {
guint8 sectype;
if (!ptvcursor_tree(cursor))
return;
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_parm_sound_target, 6, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_parm_sound_count, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_parm_time_out, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_parm_resptype, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_parm_forwarding_sta, 6, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_parm_apptype, 1, ENC_NA);
sectype = tvb_get_guint8(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_parm_sectype, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_parm_runid, 8, ENC_NA);
if (sectype == HOMEPLUG_AV_GP_SECURITY_TYPE_PUBLIC_KEY) {
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_parm_cipher, 2, ENC_LITTLE_ENDIAN);
}
}
static void
dissect_homeplug_av_gp_cm_atten_profile_ind(ptvcursor_t *cursor) {
guint8 group_size;
guint16 Counter;
if (!ptvcursor_tree(cursor))
return;
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_profile_ind_pev_mac, 6, ENC_NA);
group_size = tvb_get_guint8(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_profile_ind_num_groups, 1, ENC_NA);
/* Skip reserved */
ptvcursor_advance(cursor, 1);
for (Counter = 0; Counter < group_size; ++Counter) {
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_profile_ind_aag, 1, ENC_NA);
}
}
static void
dissect_homeplug_av_gp_cm_atten_char_ind(ptvcursor_t *cursor, packet_info *pinfo) {
guint8 sectype, numgroups, val;
guint16 Counter_groups;
proto_item *it;
gfloat avg;
avg = 0.0f;
if (!ptvcursor_tree(cursor)) {
ptvcursor_advance(cursor, 1);
sectype = tvb_get_guint8(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_advance(cursor, 1);
if (sectype != HOMEPLUG_AV_GP_SECURITY_TYPE_PUBLIC_KEY) {
ptvcursor_advance(cursor, 6+8+17+17+1);
numgroups = tvb_get_guint8(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_advance(cursor, 1);
for (Counter_groups = 0; Counter_groups < numgroups; ++Counter_groups) {
val = tvb_get_guint8(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
avg += val;
ptvcursor_advance(cursor,1);
}
avg /= numgroups;
col_append_fstr(pinfo->cinfo, COL_INFO, " (Groups = %d, Avg. Attenuation = %.2f dB)", numgroups, avg);
}
return;
}
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_apptype, 1, ENC_NA);
sectype = tvb_get_guint8(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_sectype, 1, ENC_NA);
if (sectype == HOMEPLUG_AV_GP_SECURITY_TYPE_PUBLIC_KEY) {
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_cms_data, -1, ENC_NA);
} else {
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_source_mac, 6, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_runid, 8, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_source_id, 17, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_resp_id, 17, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_numsounds, 1, ENC_NA);
numgroups = tvb_get_guint8(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor));
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_gp_cm_atten_char_profile, numgroups+1 , ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_gp_cm_atten_char_profile);
{
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_numgroups, 1, ENC_NA);
for (Counter_groups = 0; Counter_groups < numgroups; ++Counter_groups) {
val = tvb_get_guint8(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor));
proto_tree_add_uint_format( ptvcursor_tree(cursor),
hf_homeplug_av_gp_cm_atten_char_aag,
ptvcursor_tvbuff(cursor),
ptvcursor_current_offset(cursor), 1, val,
HOMEPLUG_AV_GP_CM_ATTEN_CHAR_AAG_FORMAT, Counter_groups + 1, val );
ptvcursor_advance(cursor, 1);
}
}
ptvcursor_pop_subtree(cursor);
}
}
static void
dissect_homeplug_av_gp_cm_atten_char_rsp(ptvcursor_t *cursor) {
guint8 sectype;
if (!ptvcursor_tree(cursor))
return;
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_apptype, 1, ENC_NA);
sectype = tvb_get_guint8(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_sectype, 1, ENC_NA);
if (sectype == HOMEPLUG_AV_GP_SECURITY_TYPE_PUBLIC_KEY) {
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_cms_data, -1, ENC_NA);
} else {
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_source_mac, 6, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_runid, 8, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_source_id, 17, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_resp_id, 17, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_result, 1, ENC_NA);
}
}
static void
dissect_homeplug_av_gp_cm_start_atten_char_ind(ptvcursor_t *cursor) {
guint8 sectype;
if (!ptvcursor_tree(cursor))
return;
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_apptype, 1, ENC_NA);
sectype = tvb_get_guint8(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_sectype, 1, ENC_NA);
if (sectype == HOMEPLUG_AV_GP_SECURITY_TYPE_PUBLIC_KEY) {
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_cms_data, -1, ENC_NA);
} else {
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_start_atten_char_numsounds, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_start_atten_char_time_out, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_start_atten_char_resptype, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_start_atten_char_forwarding_sta, 6, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_start_atten_char_runid, 8, ENC_NA);
}
}
static void
dissect_homeplug_av_gp_cm_mnbc_sound_ind(ptvcursor_t *cursor) {
guint8 apptype,sectype;
if (!ptvcursor_tree(cursor))
return;
apptype = tvb_get_guint8(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_mnbc_sound_apptype, 1, ENC_NA);
sectype = tvb_get_guint8(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_mnbc_sound_sectype, 1, ENC_NA);
if (sectype == HOMEPLUG_AV_GP_SECURITY_TYPE_PUBLIC_KEY) {
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_cms_data, -1, ENC_NA);
} else {
switch (apptype) {
case HOMEPLUG_AV_GP_APPTYPE_PEV_EVSE_ASSOC:
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_mnbc_sound_sender_id, 17, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_mnbc_sound_countdown, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_mnbc_sound_runid, 8, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_mnbc_sound_rsvd, 8, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_mnbc_sound_rnd, 16, ENC_NA);
break;
}
}
}
static void
dissect_homeplug_av_gp_cm_validate_req(ptvcursor_t *cursor) {
guint8 signaltype;
if (!ptvcursor_tree(cursor))
return;
signaltype = tvb_get_guint8(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_validate_signaltype, 1, ENC_NA);
switch (signaltype) {
case HOMEPLUG_AV_GP_SIGNAL_TYPE_PEV_S2_TOGGLES:
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_validate_timer, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_validate_result, 1, ENC_NA);
break;
}
}
static void
dissect_homeplug_av_gp_cm_validate_cnf(ptvcursor_t *cursor) {
guint8 signaltype;
if (!ptvcursor_tree(cursor))
return;
signaltype = tvb_get_guint8(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_validate_signaltype, 1, ENC_NA);
switch (signaltype) {
case HOMEPLUG_AV_GP_SIGNAL_TYPE_PEV_S2_TOGGLES:
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_validate_togglenum, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_validate_result, 1, ENC_NA);
break;
}
}
static void
dissect_homeplug_av_gp_cm_slac_match_req(ptvcursor_t *cursor) {
/* guint8 apptype;
guint16 length; */
guint8 sectype;
if (!ptvcursor_tree(cursor))
return;
/* apptype = tvb_get_guint8(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor)); */
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_apptype, 1, ENC_NA);
sectype = tvb_get_guint8(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_sectype, 1, ENC_NA);
/* length = tvb_get_guint16(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor), ENC_LITTLE_ENDIAN); */
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_length, 2, ENC_LITTLE_ENDIAN);
if (sectype == HOMEPLUG_AV_GP_SECURITY_TYPE_PUBLIC_KEY) {
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_cms_data, -1, ENC_NA);
} else {
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_pev_id, 17, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_pev_mac, 6, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_evse_id, 17, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_evse_mac, 6, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_runid, 8, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_rsvd, 8, ENC_NA);
}
}
static void
dissect_homeplug_av_gp_cm_slac_match_cnf(ptvcursor_t *cursor) {
/* guint8 apptype;
guint16 length; */
guint8 sectype;
if (!ptvcursor_tree(cursor))
return;
//apptype = tvb_get_guint8(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_apptype, 1, ENC_NA);
sectype = tvb_get_guint8(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_sectype, 1, ENC_NA);
//length = tvb_get_guint16(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor), ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_length, 2, ENC_LITTLE_ENDIAN);
if (sectype == HOMEPLUG_AV_GP_SECURITY_TYPE_PUBLIC_KEY) {
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_cms_data, -1, ENC_NA);
} else {
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_pev_id, 17, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_pev_mac, 6, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_evse_id, 17, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_evse_mac, 6, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_runid, 8, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_rsvd, 8, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_nid, 7, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_rsvd,1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_nmk,16, ENC_NA);
}
}
static void
dissect_homeplug_av_gp_cm_slac_user_data(ptvcursor_t *cursor) {
guint16 Type, Length,TypeLen;
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_user_data_broadcast_tlv_type, 3, ENC_LITTLE_ENDIAN);
for (;;) {
/* Get Length and Type from TLV Header */
TypeLen = tvb_get_guint16(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor),ENC_LITTLE_ENDIAN);
Length = TypeLen & HOMEPLUG_AV_GP_CM_SLAC_USER_DATA_TLV_LENGTH_MASK;
Type = TypeLen & HOMEPLUG_AV_GP_CM_SLAC_USER_DATA_TLV_TYPE_MASK;
/* If type and length is null_type - don't add anything and exit */
if (TypeLen == 0)
break;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_gp_cm_slac_user_data_tlv, HOMEPLUG_AV_GP_CM_SLAC_USER_DATA_TLV_HEADER_SIZE, ENC_LITTLE_ENDIAN);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_gp_cm_slac_user_data_tlv);
{
ptvcursor_add_no_advance(cursor, hf_homeplug_av_gp_cm_slac_user_data_tlv_type, HOMEPLUG_AV_GP_CM_SLAC_USER_DATA_TLV_TYPE_MASK, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_user_data_tlv_length, HOMEPLUG_AV_GP_CM_SLAC_USER_DATA_TLV_LENGTH_MASK, ENC_LITTLE_ENDIAN);
if (Type == HOMEPLUG_AV_GP_CM_SLAC_USER_DATA_TLV_TYPE_VENDOR_RESERVED) {
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_user_data_tlv_oui, 3, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_user_data_tlv_subtype, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_user_data_tlv_info_str, Length - 3 - 1, ENC_NA);
} else {
ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_user_data_tlv_str_bytes, Length, ENC_NA);
}
}
ptvcursor_pop_subtree(cursor);
}
}
/* End of HPAV/GP dissect functions */
/* ST/IoTecha dissect functions */
/* General parts */
static void
dissect_homeplug_av_st_iotecha_header(ptvcursor_t *cursor) {
proto_tree *tree;
if (!ptvcursor_tree(cursor)) {
ptvcursor_advance(cursor, 5);
return;
}
/* if we saved vendor subtree */
if (ti_vendor) {
/* Save current position */
tree = ptvcursor_tree(cursor);
/* Go back to vendor subtree */
ptvcursor_set_subtree(cursor, ti_vendor, ett_homeplug_av_public);
/* Add info */
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_header_mmever, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_header_rsvd, 3, ENC_NA);
/* Extending length of tree item */
proto_tree_set_appendix(ti_vendor, ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor) - 4, 4);
/* Now back to current position */
ptvcursor_set_tree(cursor,tree);
} else {
/* else - just add fields as is */
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_header_mmever, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_header_rsvd, 3, ENC_NA);
}
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_header_mver, 1, ENC_NA);
}
static void
dissect_homeplug_av_st_iotecha_status_standard(ptvcursor_t *cursor) {
if (!ptvcursor_tree(cursor))
return;
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_status_byte, 1, ENC_NA);
}
/* Specific messages */
static void
dissect_homeplug_av_st_iotecha_stp_discover_tlv(ptvcursor_t *cursor) {
guint16 Type, Length,TypeLen;
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
for (;;) {
/* Get Length and Type from TLV Header */
TypeLen = tvb_get_guint16(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor),ENC_LITTLE_ENDIAN);
Length = TypeLen & HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_LENGTH_MASK;
Type = TypeLen & HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_MASK;
/* If type is null_type - don't add anything and exit */
if (Type == HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_NULL)
break;
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_st_iotecha_stp_discover_tlv, HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_HEADER_SIZE, ENC_LITTLE_ENDIAN);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_st_iotecha_type_length_value);
{
ptvcursor_add_no_advance(cursor, hf_homeplug_av_st_iotecha_stp_discover_tlv_type, HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_HEADER_SIZE, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_stp_discover_tlv_length, HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_HEADER_SIZE, ENC_LITTLE_ENDIAN);
if (Type == HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_DEVICE_TYPE) {
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_stp_discover_tlv_value_bytes, Length, ENC_NA);
} else {
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_stp_discover_tlv_value_string, Length, ENC_ASCII);
}
}
ptvcursor_pop_subtree(cursor);
}
}
static void
dissect_homeplug_av_st_iotecha_stp_get_bss_tlv(ptvcursor_t *cursor, guint8 count) {
guint8 Type;
guint16 Counter, Length;
proto_item *it;
if (!ptvcursor_tree(cursor))
return;
for (Counter = 0; Counter < count; ++Counter) {
Type = tvb_get_guint8(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor));
if (Type == HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_BEGIN_BSS) {
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_st_iotecha_bss_entry, 0, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_st_iotecha_bss_entry);
{
while (Type != HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_END_BSS) {
Type = tvb_get_guint8(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor));
it = ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_bss_type, 1, ENC_NA);
Length = tvb_get_guint16(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor), ENC_LITTLE_ENDIAN);
/* If no data - skip fields */
if (Length) {
proto_item_append_text(it," Length: %d",Length);
ptvcursor_advance(cursor, 2);
switch (Type) {
default:
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_bss_value_bytes, Length, ENC_NA);
break;
}
} else {
ptvcursor_advance(cursor, 2);
}
}
}
ptvcursor_pop_subtree(cursor);
}
}
}
static void
dissect_homeplug_av_st_iotecha_stp_auth_set_nmk_req(ptvcursor_t *cursor) {
if (!ptvcursor_tree(cursor))
return;
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_auth_nmk, 16, ENC_NA);
}
static void
dissect_homeplug_av_st_iotecha_stp_set_maxgain_req(ptvcursor_t *cursor) {
if (!ptvcursor_tree(cursor))
return;
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_gain_ask, 1, ENC_NA);
}
static void
dissect_homeplug_av_st_iotecha_stp_set_maxgain_cnf(ptvcursor_t *cursor) {
if (!ptvcursor_tree(cursor))
return;
dissect_homeplug_av_st_iotecha_status_standard(cursor);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_gain_new, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_gain_prev, 1, ENC_NA);
}
static void
dissect_homeplug_av_st_iotecha_linkstatus(ptvcursor_t *cursor) {
if (!ptvcursor_tree(cursor))
return;
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_linkstatus_status, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_linkstatus_devmode, 1, ENC_NA);
}
static void
dissect_homeplug_av_st_iotecha_discover(ptvcursor_t *cursor) {
if (!ptvcursor_tree(cursor))
return;
dissect_homeplug_av_st_iotecha_stp_discover_tlv(cursor);
}
static void
dissect_homeplug_av_st_iotecha_stp_get_tei_list_cnf(ptvcursor_t *cursor) {
guint8 TeiCount;
guint8 Counter;
if (!ptvcursor_tree(cursor))
return;
TeiCount = tvb_get_guint8(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_tei_count, 1, ENC_NA);
for (Counter = 0; Counter < TeiCount; ++Counter) {
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_tei, 1, ENC_NA);
}
}
static void
dissect_homeplug_av_st_iotecha_stp_get_tei_snapshot_req(ptvcursor_t *cursor) {
if (!ptvcursor_tree(cursor))
return;
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_tei, 1, ENC_NA);
}
static void
dissect_homeplug_av_st_iotecha_stp_get_tei_snapshot_cnf(ptvcursor_t *cursor) {
guint8 AddrCount;
guint8 Counter;
if (!ptvcursor_tree(cursor))
return;
AddrCount = tvb_get_guint8(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_tei_snap_addr_count, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_tei_snap_tei, 1, ENC_NA);
for (Counter = 0; Counter < AddrCount; ++Counter) {
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mac_address, 6, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_tei_snap_mac_address_flag, 2, ENC_LITTLE_ENDIAN);
}
}
static void
dissect_homeplug_av_st_iotecha_stp_get_bss_list_cnf(ptvcursor_t *cursor) {
guint8 Count;
if (!ptvcursor_tree(cursor))
return;
Count = tvb_get_guint8( ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_bss_list_count, 1, ENC_NA);
dissect_homeplug_av_st_iotecha_stp_get_bss_tlv(cursor, Count);
}
static void
dissect_homeplug_av_st_iotecha_stp_get_chanqual_report_req(ptvcursor_t *cursor) {
if (!ptvcursor_tree(cursor))
return;
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_chanqual_req_type, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mac_address, 6, ENC_NA);
}
static void
dissect_homeplug_av_st_iotecha_stp_get_chanqual_report_cnf(ptvcursor_t *cursor) {
if (!ptvcursor_tree(cursor))
return;
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_chanqual_substatus, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mac_address, 6, ENC_NA);
}
static void
dissect_homeplug_av_st_iotecha_stp_get_chanqual_report_ind(ptvcursor_t *cursor) {
proto_item *it;
guint8 tmi_count, int_count;
guint16 Counter;
if (!ptvcursor_tree(cursor))
return;
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mac_address, 6, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_chanqual_mac_local, 6, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_chanqual_mac_remote, 6, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_chanqual_source, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_chanqual_response_type, 1, ENC_NA);
/* TMI */
tmi_count = tvb_get_guint8( ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_chanqual_tmi_count, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_chanqual_tmi, tmi_count, ENC_NA);
/* Intervals */
int_count = tvb_get_guint8( ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_chanqual_int_count, 1, ENC_NA);
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_st_iotecha_chanqual_int,
int_count*3, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_st_iotecha_chanqual_int);
{
for (Counter = 0; Counter < int_count; ++Counter) {
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_chanqual_int_et, 2, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_chanqual_int_tmi, 1, ENC_NA);
}
}
ptvcursor_pop_subtree(cursor);
/* TMI Attached */
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_chanqual_tmi_attached, 1, ENC_NA);
/* Reserved 1 */
ptvcursor_advance(cursor,1);
/* FEC */
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_chanqual_fec_type, 1, ENC_NA);
/* Reserved 2 */
ptvcursor_advance(cursor,1);
/* CBLD */
it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_st_iotecha_chanqual_cbld, -1, ENC_NA);
ptvcursor_push_subtree(cursor, it, ett_homeplug_av_st_iotecha_chanqual_cbld);
{
for (Counter = 0; Counter < HOMEPLUG_AV_ST_IOTECHA_CHANQUAL_CBLD_DATA_COUNT; ++Counter) {
ptvcursor_add_no_advance(cursor, hf_homeplug_av_st_iotecha_chanqual_cbld_data_low, 1, ENC_NA);
ptvcursor_add_no_advance(cursor, hf_homeplug_av_st_iotecha_chanqual_cbld_data_high, 1, ENC_NA);
ptvcursor_advance(cursor, 1);
}
}
ptvcursor_pop_subtree(cursor);
}
static void
dissect_homeplug_av_st_iotecha_stp_mfct_update_stage_req(ptvcursor_t *cursor) {
guint16 Length;
if (!ptvcursor_tree(cursor))
return;
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mfct_crc, 2, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mfct_total_length, 2, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mfct_offset, 2, ENC_LITTLE_ENDIAN);
Length = tvb_get_guint16(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor),ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mfct_length, 2, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mfct_data, Length, ENC_NA);
}
static void
dissect_homeplug_av_st_iotecha_stp_mfct_update_stage_cnf(ptvcursor_t *cursor) {
if (!ptvcursor_tree(cursor))
return;
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mfct_crc, 2, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mfct_timeout, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mfct_offset, 2, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mfct_result, 1, ENC_NA);
}
static void
dissect_homeplug_av_st_iotecha_stp_mfct_update_finish_req(ptvcursor_t *cursor) {
if (!ptvcursor_tree(cursor))
return;
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mfct_request_type, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mfct_reboot, 1, ENC_NA);
}
static void
dissect_homeplug_av_st_iotecha_stp_mfct_get_item_req(ptvcursor_t *cursor) {
gint name_size;
if (!ptvcursor_tree(cursor))
return;
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mfct_item_offset, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mfct_item_total_length, 4, ENC_LITTLE_ENDIAN);
name_size = tvb_strsize(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mfct_name, name_size-1, ENC_ASCII);
/* Skip terminator */
ptvcursor_advance(cursor, 1);
}
static void
dissect_homeplug_av_st_iotecha_stp_mfct_get_item_cnf(ptvcursor_t *cursor) {
gint name_size;
if (!ptvcursor_tree(cursor))
return;
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mfct_item_offset, 4, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mfct_item_total_length, 4, ENC_LITTLE_ENDIAN);
name_size = tvb_strsize(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mfct_name, name_size - 1, ENC_ASCII);
/* Skip terminator */
ptvcursor_advance(cursor,1);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mfct_value, -1, ENC_NA);
}
static void
dissect_homeplug_av_st_iotecha_stp_mfct_get_keylist_cnf(ptvcursor_t *cursor) {
gint name_size;
if (!ptvcursor_tree(cursor))
return;
while (tvb_reported_length_remaining(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor)) > 1 )
{
if ((tvb_get_guint8(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor)) == '\0')
&& (tvb_get_guint8(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor) + 1) == '\0'))
break;
name_size = tvb_strsize(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor));
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mfct_name, name_size - 1, ENC_ASCII);
/* Skip terminator */
ptvcursor_advance(cursor,1);
}
}
static void
dissect_homeplug_av_st_iotecha_stp_fup_req(ptvcursor_t *cursor) {
if (!ptvcursor_tree(cursor))
return;
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_stp_fup_mac_da, 6, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_stp_fup_mac_sa, 6, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_stp_fup_mtype, 1, ENC_NA);
}
static void
dissect_homeplug_av_st_iotecha_stp_cpstate_ind(ptvcursor_t *cursor, packet_info *pinfo) {
guint8 bitmask;
guint8 cp_state;
guint8 pwm_duty;
cp_state = tvb_get_guint8(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
pwm_duty = tvb_get_guint8(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor)+1);
col_add_fstr(pinfo->cinfo, COL_INFO, "CP State Change: %s, %d%%", val_to_str_const(cp_state, homeplug_av_st_iotecha_stp_cpstate_state_vals, "Unknown"), pwm_duty);
if (!ptvcursor_tree(cursor))
return;
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_cpstate_state, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_cpstate_pwm_duty, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_cpstate_pwm_freq, 2, ENC_LITTLE_ENDIAN);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_cpstate_volatge, 2, ENC_LITTLE_ENDIAN);
bitmask = tvb_get_guint8(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
if (bitmask)
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_cpstate_adc_bitmask, 1, ENC_NA);
else
ptvcursor_advance(cursor, 1);
if (bitmask & 0x01)
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_cpstate_adc_voltage_1, 2, ENC_LITTLE_ENDIAN);
else
ptvcursor_advance(cursor, 2);
if (bitmask & 0x02)
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_cpstate_adc_voltage_2, 2, ENC_LITTLE_ENDIAN);
else
ptvcursor_advance(cursor, 2);
if (bitmask & 0x04)
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_cpstate_adc_voltage_3, 2, ENC_LITTLE_ENDIAN);
else
ptvcursor_advance(cursor, 2);
}
static void
dissect_homeplug_av_st_iotecha_stp_user_message_ind(ptvcursor_t *cursor, packet_info *pinfo) {
gint null_offset;
ptvcursor_advance(cursor, 4); // not used fields
ptvcursor_advance(cursor, 4); // not used fields
null_offset = tvb_find_guint8(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor) + 1, -1, 0);
if (null_offset > -1) {
col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",
tvb_get_stringz_enc(wmem_packet_scope(), ptvcursor_tvbuff(cursor),
ptvcursor_current_offset(cursor),
NULL, ENC_ASCII));
}
if (!ptvcursor_tree(cursor))
return;
if (null_offset > -1) {
ptvcursor_add(cursor,
hf_homeplug_av_st_iotecha_user_message_info,
null_offset - ptvcursor_current_offset(cursor),
ENC_ASCII);
}
null_offset = tvb_find_guint8(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor) + 1, -1, 0);
if (null_offset > -1) {
ptvcursor_add(cursor,
hf_homeplug_av_st_iotecha_user_message_details,
null_offset - ptvcursor_current_offset(cursor),
ENC_ASCII);
}
}
static void
dissect_homeplug_av_st_iotecha_stp_test_chan_atten_start_rx_req(ptvcursor_t *cursor) {
if (!ptvcursor_tree(cursor))
return;
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_test_type, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_num_sound, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_data_ind_addr, 6, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_agc_lock, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_db_agc_val, 1, ENC_NA);
}
static void
dissect_homeplug_av_st_iotecha_stp_test_chan_atten_start_rx_cnf(ptvcursor_t *cursor) {
if (!ptvcursor_tree(cursor))
return;
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_test_status, 1, ENC_NA);
}
static void
dissect_homeplug_av_st_iotecha_stp_test_chan_atten_start_tx_req(ptvcursor_t *cursor) {
if (!ptvcursor_tree(cursor))
return;
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_test_type, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_num_sound, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_data_ind_addr, 6, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_suppress_data, 1, ENC_NA);
}
static void
dissect_homeplug_av_st_iotecha_stp_test_chan_atten_start_tx_cnf(ptvcursor_t *cursor) {
if (!ptvcursor_tree(cursor))
return;
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_test_status, 1, ENC_NA);
}
static void
dissect_homeplug_av_st_iotecha_stp_test_chan_atten_data_ind(ptvcursor_t *cursor) {
if (!ptvcursor_tree(cursor))
return;
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_sound_remain, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_ntb_time, 4, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_db_agc_val, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_rsvd1, 3, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_rsvd2, 4, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_num_segments, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_segment, 1, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_num_chan, 2, ENC_NA);
ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_chan_start, 2, ENC_NA);
}
/* End of ST/IoTecha dissect functions */
static void
dissect_homeplug_av_mme_general(ptvcursor_t *cursor,
guint8 homeplug_av_mmver,
guint16 homeplug_av_mmtype,
packet_info *pinfo) {
(void)homeplug_av_mmver;
/* Public MMEs */
switch ((homeplug_av_mmetypes_general_type)homeplug_av_mmtype)
{
case HOMEPLUG_AV_MMTYPE_GENERAL_CC_DISCOVER_LIST_CNF:
dissect_homeplug_av_cc_disc_list_cnf(cursor);
break;
case HOMEPLUG_AV_MMTYPE_GENERAL_CM_ENCRYPTED_PAYLOAD_IND:
dissect_homeplug_av_cm_enc_pld_ind(cursor);
break;
case HOMEPLUG_AV_MMTYPE_GENERAL_CM_ENCRYPTED_PAYLOAD_RSP:
dissect_homeplug_av_cm_enc_pld_rsp(cursor);
break;
case HOMEPLUG_AV_MMTYPE_GENERAL_CM_SET_KEY_REQ:
dissect_homeplug_av_cm_set_key_req(cursor);
break;
case HOMEPLUG_AV_MMTYPE_GENERAL_CM_SET_KEY_CNF:
dissect_homeplug_av_cm_set_key_cnf(cursor);
break;
case HOMEPLUG_AV_MMTYPE_GENERAL_CM_GET_KEY_REQ:
dissect_homeplug_av_cm_get_key_req(cursor);
break;
case HOMEPLUG_AV_MMTYPE_GENERAL_CM_GET_KEY_CNF:
dissect_homeplug_av_cm_get_key_cnf(cursor);
break;
case HOMEPLUG_AV_MMTYPE_GENERAL_CM_BRG_INFO_CNF:
dissect_homeplug_av_get_brg_infos_cnf(cursor);
break;
case HOMEPLUG_AV_MMTYPE_GENERAL_CM_NW_INFO_CNF:
dissect_homeplug_av_nw_infos_cnf(cursor);
break;
case HOMEPLUG_AV_MMTYPE_GENERAL_CM_NW_STATS_CNF:
dissect_homeplug_av_nw_stats_cnf(cursor);
break;
case HOMEPLUG_AV_MMTYPE_GENERAL_CC_ASSOC_REQ:
dissect_homeplug_av_cc_assoc_req(cursor);
break;
case HOMEPLUG_AV_MMTYPE_GENERAL_CC_ASSOC_CNF:
dissect_homeplug_av_cc_assoc_cnf(cursor);
break;
case HOMEPLUG_AV_MMTYPE_GENERAL_CM_UNASSOCIATED_STA_IND:
dissect_homeplug_av_cm_unassociated_sta_ind(cursor);
break;
case HOMEPLUG_AV_MMTYPE_GENERAL_CC_SET_TEI_MAP_IND:
dissect_homeplug_av_cc_set_tei_map_ind(cursor);
break;
/* HPGP */
case HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_SLAC_PARM_REQ:
dissect_homeplug_av_gp_cm_slac_parm_req(cursor);
break;
case HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_SLAC_PARM_CNF:
dissect_homeplug_av_gp_cm_slac_parm_cnf(cursor);
break;
case HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_ATTEN_PROFILE_IND:
dissect_homeplug_av_gp_cm_atten_profile_ind(cursor);
break;
case HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_ATTEN_CHAR_IND:
dissect_homeplug_av_gp_cm_atten_char_ind(cursor, pinfo);
break;
case HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_ATTEN_CHAR_RSP:
dissect_homeplug_av_gp_cm_atten_char_rsp(cursor);
break;
case HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_START_ATTEN_CHAR_IND:
dissect_homeplug_av_gp_cm_start_atten_char_ind(cursor);
break;
case HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_MNBC_SOUND_IND:
dissect_homeplug_av_gp_cm_mnbc_sound_ind(cursor);
break;
case HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_VALIDATE_REQ:
dissect_homeplug_av_gp_cm_validate_req(cursor);
break;
case HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_VALIDATE_CNF:
dissect_homeplug_av_gp_cm_validate_cnf(cursor);
break;
case HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_SLAC_MATCH_REQ:
dissect_homeplug_av_gp_cm_slac_match_req(cursor);
break;
case HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_SLAC_MATCH_CNF:
dissect_homeplug_av_gp_cm_slac_match_cnf(cursor);
break;
case HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_SLAC_USER_DATA_REQ:
case HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_SLAC_USER_DATA_CNF:
dissect_homeplug_av_gp_cm_slac_user_data(cursor);
break;
default:
break;
};
}
static void
dissect_homeplug_av_mme_qualcomm(ptvcursor_t *cursor, guint8 homeplug_av_mmver, guint16 homeplug_av_mmtype) {
switch ((homeplug_av_mmetypes_qualcomm_type)homeplug_av_mmtype) {
case HOMEPLUG_AV_MMTYPE_QUALCOMM_GET_SW_CNF:
dissect_homeplug_av_get_sw_cnf(cursor);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_WR_MEM_REQ:
dissect_homeplug_av_wr_mem_req(cursor);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_WR_MEM_CNF:
dissect_homeplug_av_wr_mem_cnf(cursor);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_RD_MEM_REQ:
dissect_homeplug_av_rd_mem_req(cursor);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_RD_MEM_CNF:
dissect_homeplug_av_rd_mem_cnf(cursor);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_ST_MAC_REQ:
dissect_homeplug_av_st_mac_req(cursor);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_ST_MAC_CNF:
dissect_homeplug_av_st_mac_cnf(cursor);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_GET_NVM_CNF:
dissect_homeplug_av_get_nvm_cnf(cursor);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_RS_DEV_CNF:
dissect_homeplug_av_rs_dev_cnf(cursor);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_WR_MOD_REQ:
dissect_homeplug_av_wr_mod_req(cursor);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_WR_MOD_CNF:
dissect_homeplug_av_wr_mod_cnf(cursor);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_WR_MOD_IND:
dissect_homeplug_av_wr_mod_ind(cursor);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_RD_MOD_REQ:
dissect_homeplug_av_rd_mod_req(cursor);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_RD_MOD_CNF:
dissect_homeplug_av_rd_mod_cnf(cursor);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_NVM_MOD_REQ:
dissect_homeplug_av_mod_nvm_req(cursor);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_NVM_MOD_CNF:
dissect_homeplug_av_mod_nvm_cnf(cursor);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_WD_RPT_REQ:
dissect_homeplug_av_wd_rpt_req(cursor);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_WD_RPT_IND:
dissect_homeplug_av_wd_rpt_ind(cursor);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_LNK_STATS_REQ:
dissect_homeplug_av_lnk_stats_req(cursor);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_LNK_STATS_CNF:
dissect_homeplug_av_lnk_stats_cnf(cursor);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_SNIFFER_REQ:
dissect_homeplug_av_sniffer_req(cursor);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_SNIFFER_CNF:
dissect_homeplug_av_sniffer_cnf(cursor);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_SNIFFER_IND:
dissect_homeplug_av_sniffer_ind(cursor);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_NW_INFO_CNF:
dissect_homeplug_av_nw_info_cnf(cursor, homeplug_av_mmver);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_CP_RPT_REQ:
dissect_homeplug_av_cp_rpt_req(cursor);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_CP_RPT_IND:
dissect_homeplug_av_cp_rpt_ind(cursor);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_FR_LBK_REQ:
dissect_homeplug_av_fr_lbk_req(cursor);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_FR_LBK_CNF:
dissect_homeplug_av_fr_lbk_cnf(cursor);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_LBK_STAT_CNF:
dissect_homeplug_av_lbk_stat_cnf(cursor);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_SET_KEY_REQ:
dissect_homeplug_av_set_key_req(cursor);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_SET_KEY_CNF:
dissect_homeplug_av_set_key_cnf(cursor);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_MFG_STRING_CNF:
dissect_homeplug_av_mfg_string_cnf(cursor);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_RD_CBLOCK_CNF:
dissect_homeplug_av_rd_cblock_cnf(cursor);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_SET_SDRAM_REQ:
dissect_homeplug_av_set_sdram_req(cursor);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_SET_SDRAM_CNF:
dissect_homeplug_av_set_sdram_cnf(cursor);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_HOST_ACTION_IND:
dissect_homeplug_av_host_action_ind(cursor);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_HOST_ACTION_RSP:
dissect_homeplug_av_host_action_rsp(cursor);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_OP_ATTR_REQ:
dissect_homeplug_av_op_attr_req(cursor);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_OP_ATTR_CNF:
dissect_homeplug_av_op_attr_cnf(cursor);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_GET_ENET_PHY_REQ:
dissect_homeplug_av_get_enet_phy_req(cursor);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_GET_ENET_PHY_CNF:
dissect_homeplug_av_get_enet_phy_cnf(cursor);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_TONE_MAP_RX_REQ:
dissect_homeplug_av_tone_map_rx_req(cursor, homeplug_av_mmver);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_TONE_MAP_RX_CNF:
dissect_homeplug_av_tone_map_rx_cnf(cursor, homeplug_av_mmver);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_TONE_MAP_TX_REQ:
dissect_homeplug_av_tone_map_tx_req(cursor, homeplug_av_mmver);
break;
case HOMEPLUG_AV_MMTYPE_QUALCOMM_TONE_MAP_TX_CNF:
dissect_homeplug_av_tone_map_tx_cnf(cursor, homeplug_av_mmver);
break;
default:
break;
}
}
static void
dissect_homeplug_av_mme_st_iotecha(ptvcursor_t *cursor,
guint8 homeplug_av_mmver,
guint16 homeplug_av_mmtype,
packet_info *pinfo) {
(void)homeplug_av_mmver;
/* Parse head of the message */
dissect_homeplug_av_st_iotecha_header(cursor);
/* Parse the rest */
switch ((homeplug_av_mmetypes_st_iotecha_type)homeplug_av_mmtype) {
case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_AUTH_SET_NMK_REQ:
dissect_homeplug_av_st_iotecha_stp_auth_set_nmk_req(cursor);
break;
case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_TEST_CHAN_ATTEN_START_RX_REQ:
dissect_homeplug_av_st_iotecha_stp_test_chan_atten_start_rx_req(cursor);
break;
case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_TEST_CHAN_ATTEN_START_TX_REQ:
dissect_homeplug_av_st_iotecha_stp_test_chan_atten_start_tx_req(cursor);
break;
case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_TEST_CHAN_ATTEN_START_RX_CNF:
dissect_homeplug_av_st_iotecha_stp_test_chan_atten_start_rx_cnf(cursor);
break;
case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_TEST_CHAN_ATTEN_START_TX_CNF:
dissect_homeplug_av_st_iotecha_stp_test_chan_atten_start_tx_cnf(cursor);
break;
case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_TEST_CHAN_ATTEN_DATA_IND:
dissect_homeplug_av_st_iotecha_stp_test_chan_atten_data_ind(cursor);
break;
case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_AUTH_SET_NMK_CNF:
/* NOT SURE */
case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_UPDATE_FINISH_CNF:
/* General message with status byte */
dissect_homeplug_av_st_iotecha_status_standard(cursor);
break;
case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_LINK_STATUS_IND:
case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_LINK_STATUS_CNF:
dissect_homeplug_av_st_iotecha_linkstatus(cursor);
break;
case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_DISCOVER_CNF:
case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_DISCOVER_LOCAL_CNF:
dissect_homeplug_av_st_iotecha_discover(cursor);
break;
case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_SET_MAXGAIN_REQ:
dissect_homeplug_av_st_iotecha_stp_set_maxgain_req(cursor);
break;
case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_SET_MAXGAIN_CNF:
dissect_homeplug_av_st_iotecha_stp_set_maxgain_cnf(cursor);
break;
case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_GET_TEI_LIST_CNF:
dissect_homeplug_av_st_iotecha_stp_get_tei_list_cnf(cursor);
break;
case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_GET_TEI_SNAPSHOT_REQ:
dissect_homeplug_av_st_iotecha_stp_get_tei_snapshot_req(cursor);
break;
case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_GET_TEI_SNAPSHOT_CNF:
dissect_homeplug_av_st_iotecha_stp_get_tei_snapshot_cnf(cursor);
break;
case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_GET_BSS_LIST_CNF:
dissect_homeplug_av_st_iotecha_stp_get_bss_list_cnf(cursor);
break;
case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_CHANQUAL_REPORT_REQ:
dissect_homeplug_av_st_iotecha_stp_get_chanqual_report_req(cursor);
break;
case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_CHANQUAL_REPORT_CNF:
dissect_homeplug_av_st_iotecha_stp_get_chanqual_report_cnf(cursor);
break;
case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_CHANQUAL_REPORT_IND:
dissect_homeplug_av_st_iotecha_stp_get_chanqual_report_ind(cursor);
break;
case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_UPDATE_STAGE_REQ:
dissect_homeplug_av_st_iotecha_stp_mfct_update_stage_req(cursor);
break;
case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_UPDATE_STAGE_CNF:
dissect_homeplug_av_st_iotecha_stp_mfct_update_stage_cnf(cursor);
break;
case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_UPDATE_FINISH_REQ:
dissect_homeplug_av_st_iotecha_stp_mfct_update_finish_req(cursor);
break;
case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_GET_ITEM_REQ:
dissect_homeplug_av_st_iotecha_stp_mfct_get_item_req(cursor);
break;
case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_GET_ITEM_CNF:
dissect_homeplug_av_st_iotecha_stp_mfct_get_item_cnf(cursor);
break;
case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_GET_KEYLIST_CNF:
dissect_homeplug_av_st_iotecha_stp_mfct_get_keylist_cnf(cursor);
break;
case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_FUP_REQ:
dissect_homeplug_av_st_iotecha_stp_fup_req(cursor);
break;
case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_CPSTATE_IND:
dissect_homeplug_av_st_iotecha_stp_cpstate_ind(cursor, pinfo);
break;
case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_USER_MESSAGE_IND:
dissect_homeplug_av_st_iotecha_stp_user_message_ind(cursor, pinfo);
break;
case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_GET_BSS_LIST_REQ:
case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_GET_TEI_LIST_REQ:
case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_LINK_STATUS_REQ:
case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_DISCOVER_LOCAL_REQ:
case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_DISCOVER_REQ:
case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_GET_KEYLIST_REQ:
/* Requests only with header go here */
break;
default:
break;
}
}
static void
dissect_homeplug_av_mme(ptvcursor_t *cursor,
guint8 homeplug_av_mmver,
guint16 homeplug_av_mmtype,
guint32 homeplug_av_oui,
packet_info *pinfo)
{
if (!homeplug_av_oui) {
dissect_homeplug_av_mme_general(cursor, homeplug_av_mmver, homeplug_av_mmtype, pinfo);
} else {
switch (homeplug_av_oui) {
case HOMEPLUG_AV_OUI_QCA:
dissect_homeplug_av_mme_qualcomm(cursor, homeplug_av_mmver, homeplug_av_mmtype);
break;
case HOMEPLUG_AV_OUI_ST_IOTECHA:
dissect_homeplug_av_mme_st_iotecha(cursor, homeplug_av_mmver, homeplug_av_mmtype, pinfo);
break;
}
}
}
static void
info_column_filler_initial(guint8 homeplug_av_mmver,
guint16 homeplug_av_mmtype,
guint32 homeplug_av_oui,
packet_info *pinfo) {
(void)homeplug_av_mmver;
/* if packet is vendor specific - display vendor OUI */
if (homeplug_av_oui) {
col_append_sep_str(pinfo->cinfo, COL_INFO, ", ",
val_to_str(homeplug_av_oui, homeplug_av_vendors_oui_vals, "OUI:0x%x"));
}
/* Info depends on type and oui */
switch (homeplug_av_oui)
{
case HOMEPLUG_AV_OUI_ST_IOTECHA:
col_append_sep_str(pinfo->cinfo, COL_INFO, ", ",
val_to_str_ext(homeplug_av_mmtype,
&homeplug_av_mmtype_st_iotecha_vals_ext,
"Unknown 0x%x"));
break;
case HOMEPLUG_AV_OUI_QCA:
col_append_sep_str(pinfo->cinfo, COL_INFO, ", ",
val_to_str_ext(homeplug_av_mmtype,
&homeplug_av_mmtype_qualcomm_vals_ext,
"Unknown 0x%x"));
break;
case HOMEPLUG_AV_OUI_NONE:
/* if oui is unknown, trying to describe as general MME */
col_append_sep_str(pinfo->cinfo, COL_INFO, ", ",
val_to_str_ext(homeplug_av_mmtype,
&homeplug_av_mmtype_general_vals_ext,
"Unknown 0x%x"));
break;
default:
break;
}
}
static int
dissect_homeplug_av(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
{
proto_item *ti;
proto_tree *homeplug_av_tree;
ptvcursor_t *cursor;
guint8 homeplug_av_mmver;
guint16 homeplug_av_mmtype;
guint32 homeplug_av_oui;
homeplug_av_oui = 0;
ti_vendor = 0;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "HomePlug AV");
col_set_str(pinfo->cinfo, COL_INFO, "");
ti = proto_tree_add_item(tree, proto_homeplug_av, tvb, 0, -1, ENC_NA);
homeplug_av_tree = proto_item_add_subtree(ti, ett_homeplug_av);
cursor = ptvcursor_new(pinfo->pool, homeplug_av_tree, tvb, 0);
/* Check if we have enough data to process the header */
if (check_tvb_length(cursor, HOMEPLUG_AV_MMHDR_LEN) != TVB_LEN_SHORTEST) {
dissect_homeplug_av_mmhdr(cursor, &homeplug_av_mmver, &homeplug_av_mmtype, &homeplug_av_oui);
info_column_filler_initial(homeplug_av_mmver, homeplug_av_mmtype, homeplug_av_oui, pinfo);
dissect_homeplug_av_mme(cursor, homeplug_av_mmver, homeplug_av_mmtype, homeplug_av_oui, pinfo);
}
ti_vendor = 0;
ptvcursor_free(cursor);
return tvb_captured_length(tvb);
}
void
proto_register_homeplug_av(void)
{
static hf_register_info hf[] = {
{ &hf_homeplug_av_reserved,
{ "Reserved", "homeplug_av.reserved",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
/* MM Header */
{ &hf_homeplug_av_mmhdr,
{ "MAC Management Header", "homeplug_av.mmhdr",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_mmhdr_mmver,
{ "Version", "homeplug_av.mmhdr.mmver",
FT_UINT8, BASE_DEC, VALS(homeplug_av_mmver_vals), HOMEPLUG_AV_MMVER_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_mmhdr_mmtype_general,
{ "Type", "homeplug_av.mmhdr.mmtype",
FT_UINT16, BASE_HEX | BASE_EXT_STRING, &homeplug_av_mmtype_general_vals_ext, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_mmhdr_mmtype_qualcomm,
{ "Type", "homeplug_av.mmhdr.mmtype.qualcomm",
FT_UINT16, BASE_HEX | BASE_EXT_STRING, &homeplug_av_mmtype_qualcomm_vals_ext, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_mmhdr_mmtype_st,
{ "Type", "homeplug_av.mmhdr.mmtype.st",
FT_UINT16, BASE_HEX | BASE_EXT_STRING, &homeplug_av_mmtype_st_iotecha_vals_ext, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_mmhdr_mmtype_lsb,
{ "LSB", "homeplug_av.mmhdr.mmtype.lsb",
FT_UINT8, BASE_HEX, VALS(homeplug_av_mmtype_lsb_vals), HOMEPLUG_AV_MMTYPE_LSB_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_mmhdr_mmtype_msb,
{ "MSB", "homeplug_av.mmhdr.mmtype.msb",
FT_UINT8, BASE_HEX, VALS(homeplug_av_mmtype_msb_vals), HOMEPLUG_AV_MMTYPE_MSB_MASK, "Reserved", HFILL },
},
{ &hf_homeplug_av_mmhdr_fmi,
{ "Fragmentation Info", "homeplug_av.mmhdr.fmi",
FT_UINT16, BASE_HEX, NULL, 0x0, "Reserved", HFILL },
},
/* Public MME */
{ &hf_homeplug_av_public,
{ "Public MME", "homeplug_av.public",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_public_frag_count,
{ "Fragment count", "homeplug_av.public.frag_count",
FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_PUBLIC_FRAG_COUNT_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_public_frag_index,
{ "Fragment index", "homeplug_av.public.frag_index",
FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_PUBLIC_FRAG_INDEX_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_public_frag_seqnum,
{ "Fragment Sequence number", "homeplug_av.public.frag_seqnum",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
/* Frame control fields */
{ &hf_homeplug_av_fc,
{ "Frame Control", "homeplug_av.fc",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_fc_del_type,
{ "Delimiter type", "homeplug_av.fc.del_type",
FT_UINT8, BASE_HEX, VALS(homeplug_av_fc_del_type_vals), HOMEPLUG_AV_DEL_TYPE_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_fc_access,
{ "Access network", "homeplug_av.fc.access",
FT_UINT8, BASE_HEX, VALS(homeplug_nw_info_access_vals), HOMEPLUG_AV_NW_INFO_ACCESS_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_fc_snid,
{ "Short network ID", "homeplug_av.fc.snid",
FT_UINT8, BASE_HEX, NULL, HOMEPLUG_AV_SNID_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_fc_fccs_av,
{ "Frame control check sequence", "homeplug_av.fc.fccs_av",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
/* Common MPDU variant fields */
{ &hf_homeplug_av_dtei,
{ "Destination Terminal Equipment Identifier", "homeplug_av.dtei",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_stei,
{ "Source Terminal Equipment Identifier", "homeplug_av.stei",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_lid,
{ "Link ID", "homeplug_av.lid",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cfs,
{ "Contention free session", "homeplug_av.cfs",
FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_CFS_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_bdf,
{ "Beacon detect flag", "homeplug_av.bdf",
FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_BDF_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_hp10df,
{ "Homeplug AV version 1.0", "homeplug_av.hp10df",
FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_HP10DF_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_hp11df,
{ "Homeplug AV version 1.1", "homeplug_av.hp11df",
FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_HP11DF_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_svn,
{ "Sack version number", "homeplug_av.svn",
FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_SVN_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_rrtf,
{ "Request reverse transmission flag", "homeplug_av.rrtf",
FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_RRTF_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_fl_av,
{ "Frame length", "homeplug_av.fl_av",
FT_UINT16, BASE_DEC, NULL, HOMEPLUG_AV_FL_AV_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_ppb,
{ "Pending PHY blocks", "homeplug_av.ppb",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_mfs_rsp_data,
{ "Data MAC Frame Stream Response", "homeplug_av.sack.mfs_rsp_data",
FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_RSP_DATA_MASK << 4, NULL, HFILL }
},
{ &hf_homeplug_av_mfs_rsp_mgmt,
{ "Management MAC Frame Stream Response", "homeplug_av.sack.mfs_rsp_mgmt",
FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_RSP_MGMT_MASK << 4, NULL, HFILL }
},
/* Frame Control */
{ &hf_homeplug_av_sof,
{ "Start of Frame Variant Fields", "homeplug_av.sof",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_sof_peks,
{ "Payload Encryption Key Select", "homeplug_av.sof.peks",
FT_UINT8, BASE_HEX | BASE_EXT_STRING, &homeplug_av_peks_vals_ext, HOMEPLUG_AV_SOF_PEKS_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_sof_ble,
{ "Bit loading estimate", "homeplug_av.sof.ble",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_sof_pbsz,
{ "PHY block size", "homeplug_av.sof.pbsz",
FT_BOOLEAN, 8, TFS(&homeplug_av_phy_block_size_vals), HOMEPLUG_AV_PBSZ_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_sof_num_sym,
{ "Number of symbols", "homeplug_av.sof.num_sym",
FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_NUM_SYM_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_sof_tmi_av,
{ "Tonemap index", "homeplug_av.sof.tmi_av",
FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_TMI_AV_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_sof_mpdu_cnt,
{ "MPDU count", "homeplug_av.sof.mpdu_cnt",
FT_UINT16, BASE_DEC, NULL, HOMEPLUG_AV_SOF_MPDU_CNT_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_sof_burst_cnt,
{ "Burst count", "homeplug_av.sof.burst_cnt",
FT_UINT16, BASE_DEC, NULL, HOMEPLUG_AV_BURST_CNT_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_sof_bbf,
{ "Bidirectional Burst", "homeplug_av.sof.bbf",
FT_BOOLEAN, 8, TFS(&homeplug_av_bbf_vals), HOMEPLUG_AV_BBF_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_sof_mrtfl,
{ "Max Reverse Transmission Frame Length", "homeplug_av.sof.mrtfl",
FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_MRTLF_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_sof_dccpcf,
{ "Different CP PHY clock", "homeplug_av.sof.dccpcf",
FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_DCCPCF_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_sof_mcf,
{ "Multicast", "homeplug_av.sof.mcf",
FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_MCF_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_sof_mnbf,
{ "Multinetwork broadcast", "homeplug_av.sof.mnbf",
FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_MNBF_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_sof_rsr,
{ "Request SACK retransmission", "homeplug_av.sof.rsr",
FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_RSR_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_sof_clst,
{ "Convergence layer SAP type", "homeplug_av.sof.clst",
FT_BOOLEAN, 8, TFS(&homeplug_av_clst_vals), HOMEPLUG_AV_CLST_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_sof_mfs_cmd_mgmt,
{ "Management MAC Frame Stream Command", "homeplug_av.sof.mfs_cmd_mgmt",
FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_MFS_MGMT_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_sof_mfs_cmd_data,
{ "Data MAC Frame Stream Command", "homeplug_av.sof.mfs_data_mgmt",
FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_MFS_DATA_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_sof_mfs_rsp_mgmt,
{ "Management MAC Frame Stream Response", "homeplug_av.sof.mfs_rsp_mgmt",
FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_SOF_RSP_MGMT_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_sof_mfs_rsp_data,
{ "Data MAC Frame Stream Response", "homeplug_av.sof.mfs_rsp_data",
FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_SOF_RSP_DATA_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_sof_bm_sack,
{ "Bit Map SACK", "homeplug_av.sof.bm_sack",
FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_BM_SACK_MASK, NULL, HFILL }
},
/* Selective Acknowledgement */
{ &hf_homeplug_av_sack,
{ "Selective Acknowledgment Variant Fields", "homeplug_av.sack",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL}
},
/* Request to Send/Clear to Send */
{ &hf_homeplug_av_rtscts,
{ "Request to Send/Clear to Send Variant Fields", "homeplug_av.rtscts",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_rtscts_rtsf,
{ "RTS Flag", "homeplug_av.rtscts.rtsf",
FT_BOOLEAN, 8, TFS(&homeplug_av_rtsf_vals), HOMEPLUG_AV_RTSF_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_rtscts_igf,
{ "Immediate Grant Flag", "homeplug_av.rtscts.igf",
FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_IGF_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_rtscts_mnbf,
{ "Multinetwork Broadcast Flag", "homeplug_av.rtscts.mnbf",
FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_RTSCTS_MNBF_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_rtscts_mcf,
{ "Multicast Flag", "homeplug_av.rtscts.mcf",
FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_RTSCTS_MCF_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_rtscts_dur,
{ "Duration", "homeplug_av.rtscts.dur",
FT_UINT16, BASE_DEC, NULL, HOMEPLUG_AV_DUR_MASK, NULL, HFILL }
},
/* Sound */
{ &hf_homeplug_av_sound,
{ "Sound Variant Fields", "homeplug_av.sound",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_sound_pbsz,
{ "PHY Block Size", "homeplug_av.sound.pbsz",
FT_BOOLEAN, 8, TFS(&homeplug_av_phy_block_size_vals), HOMEPLUG_AV_SOUND_PBSZ_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_sound_bdf,
{ "Beacon Detect Flag", "homeplug_av.sound.bdf",
FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_SOUND_BDF_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_sound_saf,
{ "Sound ACK Flag", "homeplug_av.sound.saf",
FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_SAF_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_sound_scf,
{ "Sound Complete Flag", "homeplug_av.sound.scf",
FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_SCF_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_sound_req_tm,
{ "Max Tone Maps Requested", "homeplug_av.sound.req_tm",
FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_REQ_TM_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_sound_mpdu_cnt,
{ "MPDU Count", "homeplug_av.sound.mpdu_cnt",
FT_UINT16, BASE_DEC, NULL, HOMEPLUG_AV_SOUND_MPDU_CNT_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_sound_src,
{ "Sound Reason Code", "homeplug_av.sound.src",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_sound_add_req_tm,
{ "Additional Tone Maps Requested", "homeplug_av.sound.add_req_tm",
FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_ADD_REQ_TM_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_sound_max_pb_sym,
{ "Max PBs per Symbol", "homeplug_av.sound.max_pb_sym",
FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_MAX_PB_SYM_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_sound_ecsf,
{ "Extended Carriers Support Flag", "homeplug_av.sound.ecsf",
FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_ECSF_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_sound_ecuf,
{ "Extended Carriers Used Flag", "homeplug_av.sound.hf_homeplug_av_sound_ecuf",
FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_ECUF_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_sound_ems,
{ "Extended Modulation Support", "homeplug_av.sound.ems",
FT_UINT8, BASE_HEX, VALS(homeplug_av_ems_vals), HOMEPLUG_AV_EMS_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_sound_esgisf,
{ "Extended Smaller Guard Interval Support Flag", "homeplug_av.sound.esgisf",
FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_ESGISF_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_sound_elgisf,
{ "Extended Larger Guard Interval Support Flag", "homeplug_av.sound.elgisf",
FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_ELGISF_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_sound_efrs,
{ "Extended FEC Rate Support", "homeplug_av.sound.efrs",
FT_UINT8, BASE_HEX, VALS(homeplug_av_efrs_vals), HOMEPLUG_AV_EFRS_MASK, NULL, HFILL }
},
/* Reverse Start of Frame */
{ &hf_homeplug_av_rsof,
{ "Reverse Start of Frame Variant Fields", "homeplug_av.rsof",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_rsof_fl,
{ "Reverse SOF Frame Length", "homeplug_av.rsof.fl",
FT_UINT16, BASE_DEC, NULL, HOMEPLUG_AV_RSOF_FL_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_rsof_tmi,
{ "Tone Map Index", "homeplug_av.rsof.tmi",
FT_UINT16, BASE_DEC, NULL, HOMEPLUG_AV_RSOF_TMI_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_rsof_pbsz,
{ "PHY Block Size", "homeplug_av.rsof.pbsz",
FT_BOOLEAN, 16, TFS(&homeplug_av_phy_block_size_vals), HOMEPLUG_AV_RSOF_PBSZ_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_rsof_num_sym,
{ "Number of Symbols", "homeplug_av.rsof.num_sym",
FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_RSOF_NUM_SYM_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_rsof_mfs_cmd_mgmt,
{ "Management MAC Frame Stream Command", "homeplug_av.rsof.mfs_cmd_mgmt",
FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_MFS_MGMT_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_rsof_mfs_cmd_data,
{ "Data MAC Frame Stream Command", "homeplug_av.rsof.mfs_cmd_data",
FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_MFS_DATA_MASK, NULL, HFILL }
},
/* Beacon body */
{ &hf_homeplug_av_bcn,
{ "Beacon Variant Fields", "homeplug_av.bcn",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_bcn_bts,
{ "Beacon timestamp", "homeplug_av.bcn.bts",
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_bcn_bto_0,
{ "Beacon transmission offset 0", "homeplug_av.bcn.bto_0",
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_bcn_bto_1,
{ "Beacon transmission offset 1", "homeplug_av.bcn.bto_1",
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_bcn_bto_2,
{ "Beacon transmission offset 2", "homeplug_av.bcn.bto_2",
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_bcn_bto_3,
{ "Beacon transmission offset 3", "homeplug_av.bcn.bto_3",
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_bcn_payload,
{ "Beacon MPDU payload", "homeplug_av.bcn.payload",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_bcn_nid,
{ "Network ID", "homeplug_av.bcn.nid",
FT_UINT56, BASE_HEX, NULL, HOMEPLUG_AV_BCN_NID_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_bcn_hm,
{ "Hybrid Mode", "homeplug_av.bcn.hm",
FT_UINT56, BASE_HEX | BASE_VAL64_STRING, VALS64(homeplug_av_bcn_hm_vals), HOMEPLUG_AV_HM_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_bcn_stei,
{ "Source Terminal Equipment ID", "homeplug_av.bcn.stei",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_bcn_type,
{ "Beacon type", "homeplug_av.bcn.type",
FT_UINT8, BASE_HEX, VALS(homeplug_av_bcn_type_vals), HOMEPLUG_AV_BCN_TYPE_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_bcn_ncnr,
{ "Non-coordinating networks reported", "homeplug_av.bcn.ncnr",
FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_NCNR_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_bcn_npsm,
{ "Network Power Save Mode", "homeplug_av.bcn.npsm",
FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_NPSM_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_bcn_num_slots,
{ "Number of Beacon Slots", "homeplug_av.bcn.num_slots",
FT_UINT8, BASE_HEX, VALS(homeplug_av_bcn_slot_vals), HOMEPLUG_AV_NUM_SLOTS_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_bcn_slot_use,
{ "Beacon Slot Usage (bitmapped)", "homeplug_av.bcn.slot_usage",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_bcn_slot_id,
{ "Beacon Slot ID", "homeplug_av.bcn.slot_id",
FT_UINT8, BASE_HEX, VALS(homeplug_av_bcn_slot_vals), HOMEPLUG_AV_SLOT_ID_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_bcn_aclss,
{ "AC Line Synchronization Status", "homeplug_av.bcn.aclss",
FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_ACLSS_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_bcn_hoip,
{ "Hand-Off in progress", "homeplug_av.bcn.hoip",
FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_HOIP_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_bcn_rtsbf,
{ "RTS Broadcast Flag", "homeplug_av.bcn.rtsbf",
FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_RTSBF_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_bcn_nm,
{ "Network Mode", "homeplug_av.bcn.nm",
FT_UINT8, BASE_DEC, VALS(homeplug_av_bcn_nm_vals), HOMEPLUG_AV_NM_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_bcn_cco_cap,
{ "CCo Capabilities", "homeplug_av.bcn.cco_cap",
FT_UINT8, BASE_DEC, VALS(homeplug_av_bcn_cco_cap_vals), HOMEPLUG_AV_CCO_CAP_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_bcn_rsf,
{ "Reusable SNID?", "homeplug_av.bcn.rsf",
FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_RSF_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_bcn_plevel,
{ "Proxy level", "homeplug_av.bcn.plevel",
FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_PLEVEL_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_bcn_bentries,
{ "Beacon entries and padding", "homeplug_av.bcn.bentries",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_bcn_bpcs,
{ "Beacon payload check sequence", "homeplug_av.bcn.bpcs",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
/* Central Coordination Discovery List Confirmation */
{ &hf_homeplug_av_cc_disc_list_cnf,
{ "Central Coordination Discovery List Confirmation", "homeplug_av.cc_disc_list_cnf",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
/* Station informations */
{ &hf_homeplug_av_cc_disc_list_sta_cnt,
{ "Station count", "homeplug_av.cc_disc_list_cnf.sta_cnt",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cc_sta_info,
{ "Station information", "homeplug_av.cc_disc_list_cnf.sta_info",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cc_sta_info_mac,
{ "MAC address", "homeplug_av.cc_disc_list_cnf.sta_info.mac",
FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cc_sta_info_tei,
{ "Terminal Equipment Identifier", "homeplug_av.cc_disc_list_cnf.sta_info.tei",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cc_sta_info_same_net,
{ "Network type", "homeplug_av.cc_disc_list_cnf.sta_info.same_net",
FT_UINT8, BASE_HEX, VALS(homeplug_av_cc_sta_net_type_vals), HOMEPLUG_AV_CC_STA_NET_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_cc_sta_info_sig_level,
{ "Signal level", "homeplug_av.cc_disc_list_cnf.sta_info.sig_level",
FT_UINT8, BASE_HEX | BASE_EXT_STRING, &homeplug_av_sig_level_vals_ext, 0x00, "Reserved", HFILL }
},
{ &hf_homeplug_av_cc_sta_info_avg_ble,
{ "Average BLE", "homeplug_av.cc_disc_list_cnf.sta_info.avg_ble",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
/* Network infos */
{ &hf_homeplug_av_cc_disc_list_net_cnt,
{ "Network count", "homeplug_av.cc_disc_list_cnf.net_cnt",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cc_net_info,
{ "Network information", "homeplug_av.cc_disc_list_cnf.net_info",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cc_net_info_hyb_mode,
{ "Hybrid mode", "homeplug_av.cc_disc_list_cnf.net_info.hyb_mode",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cc_net_info_bcn_slots,
{ "Beacon slots", "homeplug_av.cc_disc_list_cnf.net_info.bcn_slots",
FT_UINT8, BASE_DEC, NULL, 0x08, "Reserved", HFILL }
},
{ &hf_homeplug_av_cc_net_info_cco_sts,
{ "Coordinating status", "homeplug_av.cc_disc_list_cnf.net_info.cco_status",
FT_UINT8, BASE_HEX, VALS(homeplug_av_cco_status_vals), HOMEPLUG_AV_CCO_STATUS_MASK, "Unknown", HFILL }
},
{ &hf_homeplug_av_cc_net_info_bcn_ofs,
{ "Beacon offset", "homeplug_av.cc_disc_list_cnf.net_info.bcn_ofs",
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
/* Shared encrypted related fields */
{ &hf_homeplug_av_nw_info_peks,
{ "Payload Encryption Key Select", "homeplug_av.nw_info.peks",
FT_UINT8, BASE_HEX | BASE_EXT_STRING, &homeplug_av_peks_vals_ext, HOMEPLUG_AV_PEKS_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_nw_info_pid,
{ "Protocol ID", "homeplug_av.nw_info.pid",
FT_UINT8, BASE_HEX, VALS(homeplug_av_pid_vals), HOMEPLUG_AV_PID_MASK, "Reserved", HFILL }
},
{ &hf_homeplug_av_nw_info_prn,
{ "Protocol run number", "homeplug_av.nw_info.prn",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_nw_info_pmn,
{ "Protocol message number", "homeplug_av.nw_info.pmn",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_nw_info_my_nonce,
{ "My nonce", "homeplug_av.nw_info.my_nonce",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_nw_info_your_nonce,
{ "Your nonce", "homeplug_av.nw_info.your_nonce",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_nw_info_cco_cap,
{ "CCo capabilities", "homeplug_av.nw_info.cco_cap",
FT_UINT8, BASE_HEX, VALS(homeplug_av_nw_info_role_vals), HOMEPLUG_AV_NW_INFO_ROLE_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_nw_info_key_type,
{ "Key type", "homeplug_av.nw_info.key_type",
FT_UINT8, BASE_HEX, VALS(homeplug_av_key_type_vals), HOMEPLUG_AV_KEY_TYPE_MASK, NULL, HFILL }
},
/* Encrypted Payload Indicate */
{ &hf_homeplug_av_cm_enc_pld_ind,
{ "Encrypted Payload Indicate", "homeplug_av.cm_enc_pld_ind",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cm_enc_pld_ind_avlns,
{ "AVLN status", "homeplug_av.cm_enc_pld_ind.avlns",
FT_UINT8, BASE_HEX, VALS(homeplug_av_avln_status_vals), HOMEPLUG_AV_AVLN_STATUS_MASK, "Reserved", HFILL }
},
{ &hf_homeplug_av_cm_enc_pld_ind_iv,
{ "Initialization vector", "homeplug_av.cm_enc_pld_ind.iv",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cm_enc_pld_ind_uuid,
{ "UUID", "homeplug_av.cm_enc_pld_ind.uuid",
FT_GUID, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cm_enc_pld_ind_len,
{ "Length", "homeplug_av.cm_enc_pld_ind.len",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cm_enc_pld_ind_pld,
{ "Encrypted payload", "homeplug_av.cm_enc_pld_ind.pld",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
/* Encrypted Payload Response */
{ &hf_homeplug_av_cm_enc_pld_rsp,
{ "Encrypted Payload Response", "homeplug_av.cm_enc_pld_rsp",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cm_enc_pld_rsp_result,
{ "Result", "homeplug_av.cm_enc_pld_rsp.result",
FT_UINT8, BASE_HEX, VALS(homeplug_av_generic_status_vals), HOMEPLUG_AV_GEN_STATUS_MASK, NULL, HFILL }
},
/* Set Key Request */
{ &hf_homeplug_av_cm_set_key_req,
{ "Set Key Request", "homeplug_av.cm_set_key_req",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cm_set_key_req_nw_key,
{ "New Key", "homeplug_av.cm_set_key_req.nw_key",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
/* Set Key Confirmation */
{ &hf_homeplug_av_cm_set_key_cnf,
{ "Set Key Confirmation", "homeplug_av.cm_set_key_cnf",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cm_set_key_cnf_result,
{ "Result", "homeplug_av.cm_set_key_cnf.result",
FT_UINT8, BASE_HEX, VALS(homeplug_av_generic_status_vals), HOMEPLUG_AV_GEN_STATUS_MASK, NULL, HFILL }
},
/* Get Key Request */
{ &hf_homeplug_av_cm_get_key_req,
{ "Get Key request", "homeplug_av.cm_get_key_req",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cm_get_key_req_type,
{ "Request type", "homeplug_av.cm_get_key_req.type",
FT_UINT8, BASE_HEX, VALS(homeplug_av_req_type_vals), HOMEPLUG_AV_REQ_TYPE_MASK, "Reserved", HFILL }
},
{ &hf_homeplug_av_cm_get_key_req_has_key,
{ "Hash key", "homeplug_av.cm_get_key_req.hash_key",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
/* Get Key Confirmation */
{ &hf_homeplug_av_cm_get_key_cnf,
{ "Get Key Confirmation", "homeplug_av.cm_get_key_cnf",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cm_get_key_cnf_result,
{ "Result", "homeplug_av.cm_get_key_cnf.result",
FT_UINT8, BASE_HEX, VALS(homeplug_av_key_result_vals), HOMEPLUG_AV_KEY_RESULT_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_cm_get_key_cnf_rtype,
{ "Requested key type", "homeplug_av.cm_get_key_cnf.rtype",
FT_UINT8, BASE_HEX, VALS(homeplug_av_key_type_vals), HOMEPLUG_AV_KEY_TYPE_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_cm_get_key_cnf_key,
{ "Encryption/Hash key", "homeplug_av.cm_get_key_cnf.key",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
/* Get Bridge Informations Confirmation */
{ &hf_homeplug_av_brg_infos_cnf,
{ "Get Bridge Informations Confirmation", "homeplug_av.brg_infos_cnf",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_brg_infos_cnf_brd,
{ "Bridging", "homeplug_av.brg_infos_cnf.brd",
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_brg_infos_cnf_btei,
{ "Bridge Terminal Equipment Identifier", "homeplug_av.brg_infos_cnf.btei",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_brg_infos_cnf_num_stas,
{ "Number of stations", "homeplug_av.brg_infos_cnf.num_stas",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_brg_infos_cnf_mac,
{ "Bridged Destination Address", "homeplug_av.brg_infos_cnf.mac",
FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
/* Get Network Informations Confirmation */
{ &hf_homeplug_av_cm_nw_infos_cnf,
{ "Get Network Informations Confirmation", "homeplug_av.nw_infos_cnf",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
/* Get Network Statistics Confirmation */
{ &hf_homeplug_av_nw_stats_cnf,
{ "Get Network Statistics Confirmation", "homeplug_av.nw_stats_cnf",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
/* Vendor Specific */
{ &hf_homeplug_av_vendor,
{ "Vendor MME", "homeplug_av.vendor",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_vendor_oui,
{ "OUI", "homeplug_av.vendor.oui",
FT_UINT24, BASE_HEX, VALS(homeplug_av_vendors_oui_vals), 0x00, NULL, HFILL }
},
/* Get Device/SW Version */
{ &hf_homeplug_av_get_sw_cnf,
{ "Get Device/SW Version", "homeplug_av.get_sw_cnf",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_get_sw_cnf_status,
{ "Status", "homeplug_av.get_sw_cnf.status",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_get_sw_cnf_dev_id,
{ "Device ID", "homeplug_av.get_sw_cnf.dev_id",
FT_UINT8, BASE_HEX, VALS(homeplug_av_dev_id_vals), HOMEPLUG_AV_DEV_ID_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_get_sw_cnf_ver_len,
{ "Version length", "homeplug_av.get_sw_cnf.ver_len",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_get_sw_cnf_ver_str,
{ "Version", "homeplug_av.get_sw_cnf.ver_str",
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_get_sw_cnf_upg,
{ "Upgradable", "homeplug_av.get_sw_cnf.upg",
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
/* Write MAC Memory Request */
{ &hf_homeplug_av_wr_mem_req,
{ "Write MAC Memory Request", "homeplug_av.wr_mem_req",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_mem_addr,
{ "Address", "homeplug_av.mem.addr",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_mem_len_32bits,
{ "Length", "homeplug_av.mem.len_32bits",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
/* Write MAC Memory Confirmation */
{ &hf_homeplug_av_wr_mem_cnf,
{ "Write MAC Memory Confirmation", "homeplug_av.wr_mem_cnf",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
/* Read MAC Memory Request */
{ &hf_homeplug_av_rd_mem_req,
{ "Read MAC Memory Request", "homeplug_av.rd_mem_req",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_rd_mem_cnf,
{ "Read MAC Memory Confirmation", "homeplug_av.rd_mem_cnf",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
/* Start MAC Request */
{ &hf_homeplug_av_st_mac_req,
{ "Start MAC Request", "homeplug_av.st_mac_req",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_mac_req_img_load,
{ "Image Load Starting Address", "homeplug_av.st_mac_req.img_load",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_mac_req_img_len,
{ "Image Length", "homeplug_av.st_mac_req.img_len",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_mac_req_img_chksum,
{ "Image Checksum", "homeplug_av.st_mac_req.img_chksum",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_mac_req_img_start,
{ "Image Starting Address", "homeplug_av.st_mac_req.img_start",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
/* Start MAC Confirmation */
{ &hf_homeplug_av_st_mac_cnf,
{ "Start MAC Confirmation", "homeplug_av.st_mac_cnf",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_mac_cnf_status,
{ "Module ID", "homeplug_av.st_mac_cnf.status",
FT_UINT8, BASE_HEX, VALS(homeplug_av_st_mac_status_vals), 0x00, "Unknown", HFILL }
},
/* Get NVM Parameters Confirmation */
{ &hf_homeplug_av_get_nvm_cnf,
{ "Get NVM Parameters Confirmation", "homeplug_av.get_nvm_cnf",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_get_nvm_cnf_status,
{ "Status", "homeplug_av.get_nvm_cnf.status",
FT_UINT8, BASE_HEX, VALS(homeplug_av_get_nvm_status_vals), 0x00, "Unknown", HFILL }
},
{ &hf_homeplug_av_get_nvm_cnf_nvm_type,
{ "NVM Type", "homeplug_av.get_nvm_cnf.nvm_type",
FT_UINT32, BASE_HEX, NULL, 0x00, "Unknown", HFILL }
},
{ &hf_homeplug_av_get_nvm_cnf_nvm_page,
{ "NVM Page Size", "homeplug_av.get_nvm_cnf.nvm_page",
FT_UINT32, BASE_HEX, NULL, 0x00, "Unknown", HFILL }
},
{ &hf_homeplug_av_get_nvm_cnf_nvm_block,
{ "NVM Block Size", "homeplug_av.get_nvm_cnf.nvm_block",
FT_UINT32, BASE_HEX, NULL, 0x00, "Unknown", HFILL }
},
{ &hf_homeplug_av_get_nvm_cnf_nvm_size,
{ "NVM Memory Size", "homeplug_av.get_nvm_cnf.nvm_size",
FT_UINT32, BASE_HEX, NULL, 0x00, "Unknown", HFILL }
},
/* Reset Device Confirmation */
{ &hf_homeplug_av_rs_dev_cnf,
{ "Reset Device Confirmation", "homeplug_av.rs_dev_cnf",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_rs_dev_cnf_status,
{ "Status", "homeplug_av.rs_dev_cnf.status",
FT_UINT8, BASE_HEX, VALS(homeplug_av_rs_dev_status_vals), 0x00, "Unknown", HFILL }
},
/* Shared memory related fields */
{ &hf_homeplug_av_mem_len_16bits,
{ "Length", "homeplug_av.mem.len_16bits",
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_mem_offset,
{ "Offset", "homeplug_av.mem.offset",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_mem_checksum,
{ "Checksum", "homeplug_av.mem.checksum",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_mem_data,
{ "Data", "homeplug_av.mem.data",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_mem_status,
{ "Status", "homeplug_av.mem.status",
FT_UINT8, BASE_HEX, VALS(homeplug_av_wr_rd_mem_status_vals), 0x00, "Unknown", HFILL }
},
/* Write Module Data Request */
{ &hf_homeplug_av_wr_mod_req,
{ "Write Module Data Request", "homeplug_av.wr_mod_req",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
/* Write Module Data Confirmation */
{ &hf_homeplug_av_wr_mod_cnf,
{ "Write Module Data Confirmation", "homeplug_av.wr_mod_cnf",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_wr_mod_cnf_status,
{ "Status", "homeplug_av.wr_mod_cnf.status",
FT_UINT8, BASE_HEX, VALS(homeplug_av_wr_rd_mod_cnf_status_vals), 0x00, "Unknown", HFILL }
},
/* Write Module Data Indicate */
{ &hf_homeplug_av_wr_mod_ind,
{ "Write Module Data Indicate", "homeplug_av.wr_mod_ind",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_wr_mod_ind_status,
{ "Status", "homeplug_av.wr_mod_ind.status",
FT_UINT8, BASE_HEX, VALS(homeplug_av_wr_mod_ind_status_vals), 0x00, "Unknown", HFILL }
},
/* Read Module Data Request */
{ &hf_homeplug_av_rd_mod_req,
{ "Read Module Data Request", "homeplug_av.rd_mod_req",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
/* Read Module Data Confirmation */
{ &hf_homeplug_av_rd_mod_cnf,
{ "Read Module Data Confirmation", "homeplug_av.rd_mod_cnf",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_rd_mod_cnf_status,
{ "Status", "homeplug_av.rd_mod_cnf.status",
FT_UINT8, BASE_HEX, VALS(homeplug_av_wr_rd_mod_cnf_status_vals), 0x00, "Unknown", HFILL }
},
{ &hf_homeplug_av_mac_module_id,
{ "Module ID", "homeplug_av.module_id",
FT_UINT8, BASE_HEX, VALS(homeplug_av_mac_module_id_vals), 0x00, "Unknown", HFILL }
},
/* Write Module Data to NVM Request */
{ &hf_homeplug_av_mod_nvm_req,
{ "Write Module Data to NVM Request", "homeplug_av.mod_nvm_req",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
/* Write Module Data to NVM Confirmation */
{ &hf_homeplug_av_mod_nvm_cnf,
{ "Write Module Data to NVM Confirmation", "homeplug_av.mod_nvm_cnf",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_mod_nvm_cnf_status,
{ "Status", "homeplug_av.mod_nvm_cnf.status",
FT_UINT8, BASE_HEX, VALS(homeplug_av_mod_nvm_status_vals), 0x00, "Unknown", HFILL }
},
/* Get Watchdog Report Request */
{ &hf_homeplug_av_wd_rpt_req,
{ "Get Watchdog Report Request", "homeplug_av.wd_rpt_req",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_wd_rpt_req_session_id,
{ "Session ID", "homeplug_av.wd_rpt_req.session_id",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_wd_rpt_req_clr,
{ "Clear flag", "homeplug_av.wd_rpt_req.clr",
FT_UINT8, BASE_HEX, VALS(homeplug_av_rpt_clr_vals), HOMEPLUG_AV_RPT_CLR_MASK, "Unknown", HFILL }
},
/* Get Watchdog Report Indicate */
{ &hf_homeplug_av_wd_rpt_ind,
{ "Get Watchdog Report Indicate", "homeplug_av.wd_rpt_ind",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_wd_rpt_ind_status,
{ "Status", "homeplug_av.wd_rpt_ind.status",
FT_UINT8, BASE_HEX, VALS(homeplug_av_generic_status_vals), HOMEPLUG_AV_GEN_STATUS_MASK, "Unknown", HFILL }
},
{ &hf_homeplug_av_wd_rpt_ind_session_id,
{ "Session ID", "homeplug_av.wd_rpt_ind.session_id",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_wd_rpt_ind_num_parts,
{ "Number of parts", "homeplug_av.wd_rpt_ind.num_parts",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_wd_rpt_ind_curr_part,
{ "Current Part", "homeplug_av.wd_rpt_ind.curr_part",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_wd_rpt_ind_rdata_len,
{ "Report Data Length", "homeplug_av.wd_rpt_ind.rdata_len",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_wd_rpt_ind_rdata_ofs,
{ "Report Data Offset", "homeplug_av.wd_rpt_ind.rdata_offset",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_wd_rpt_ind_rdata,
{ "Report Data", "homeplug_av.wd_rpt_ind.rdata",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
/* Link Statistics Request */
{ &hf_homeplug_av_lnk_stats_req,
{ "Link Statistics Request", "homeplug_av.lnk_stats_req",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_lnk_stats_req_mcontrol,
{ "Control", "homeplug_av.lnk_stats_req.mcontrol",
FT_UINT8, BASE_HEX, VALS(homeplug_av_lnk_stats_mctrl_vals), HOMEPLUG_AV_LNK_STATS_MCTL_MASK, "Unknown", HFILL }
},
{ &hf_homeplug_av_lnk_stats_req_dir,
{ "Direction", "homeplug_av.lnk_stats_req.dir",
FT_UINT8, BASE_HEX, VALS(homeplug_av_lnk_stats_dir_vals), HOMEPLUG_AV_LNK_STATS_DIR_MASK, "Unknown", HFILL }
},
{ &hf_homeplug_av_lnk_stats_req_lid,
{ "Link ID", "homeplug_av.lnk_stats_req.lid",
FT_UINT8, BASE_HEX, VALS(homeplug_av_lnk_stats_lid_vals), 0x00, "Unknown", HFILL }
},
{ &hf_homeplug_av_lnk_stats_req_macaddr,
{ "Peer Node", "homeplug_av.lnk_stats_req.macaddr",
FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
/* Link Statistics Confirmation */
{ &hf_homeplug_av_lnk_stats_cnf,
{ "Link Statistics Confirmation", "homeplug_av.lnk_stats_cnf",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_lnk_stats_cnf_status,
{ "Status", "homeplug_av.lnk_stats_cnf.status",
FT_UINT8, BASE_HEX, VALS(homeplug_av_lnk_status_vals), 0x00, "Unknown", HFILL }
},
{ &hf_homeplug_av_lnk_stats_cnf_dir,
{ "Direction", "homeplug_av.lnk_stats_cnf.dir",
FT_UINT8, BASE_HEX, VALS(homeplug_av_lnk_stats_dir_vals), HOMEPLUG_AV_LNK_STATS_DIR_MASK, "Unknown", HFILL }
},
{ &hf_homeplug_av_lnk_stats_cnf_lid,
{ "Link ID", "homeplug_av.lnk_stats_cnf.lid",
FT_UINT8, BASE_HEX, VALS(homeplug_av_lnk_stats_lid_vals), 0x00, "Unknown", HFILL }
},
{ &hf_homeplug_av_lnk_stats_cnf_tei,
{ "TEI", "homeplug_av.lnk_stats_cnf.tei",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_lnk_stats_cnf_lstats,
{ "Link statistics", "homeplug_av.lnk_stats_cnf.lstats",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
/* Link statistics members */
{ &hf_homeplug_av_lnk_stats_tx,
{ "Tx link statistics", "homeplug_av.lnk_stats.tx",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_lnk_stats_tx_mpdu_ack,
{ "Number of MPDUs Transmitted and Acknowledged", "homeplug_av.lnk_stats.tx.mpdu_ack",
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_lnk_stats_tx_mpdu_col,
{ "Number of MPDUs Transmitted and Collided", "homeplug_av.lnk_stats.tx.mpdu_col",
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_lnk_stats_tx_mpdu_fai,
{ "Number of MPDUs Transmitted and Failed", "homeplug_av.lnk_stats.tx.mpdu_fail",
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_lnk_stats_tx_pbs_pass,
{ "Number of PB Transmitted Successfully", "homeplug_av.lnk_stats.tx.pbs_pass",
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_lnk_stats_tx_pbs_fail,
{ "Number of PB Transmitted Unsuccessfully", "homeplug_av.lnk_stats.tx.pbs_fail",
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_lnk_stats_rx,
{ "Rx link statistics", "homeplug_av.lnk_stats.rx",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_lnk_stats_rx_mpdu_ack,
{ "Number of MPDUs Received and Acknowledged", "homeplug_av.lnk_stats.rx.mdpu_ack",
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_lnk_stats_rx_mpdu_fai,
{ "Number of MPDUs Received and Failed", "homeplug_av.lnk_stats.rx.mdpu_fail",
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_lnk_stats_rx_pbs_pass,
{ "Number of PB Received Successfully", "homeplug_av.lnk_stats.rx.pbs_pass",
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_lnk_stats_rx_pbs_fail,
{ "Number of PB Received Unsuccessfully", "homeplug_av.lnk_stats.rx.pbs_fail",
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_lnk_stats_rx_tb_pass,
{ "Sum of Turbo Bit Error over successfully received PBs", "homeplug_av.lnk_stats.rx.tb_pass",
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_lnk_stats_rx_tb_fail,
{ "Sum of Turbo Bit Error over unsuccessfully received PBs", "homeplug_av.lnk_stats.rx.tb_fail",
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_lnk_stats_rx_num_int,
{ "Number of Tone Map Intervals", "homeplug_av.lnk_stats.rx.num_int",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_rx_inv_stats,
{ "Rx Interval Statistics", "homeplug_av.lnk_stats.rx.inv",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_rx_inv_phy_rate,
{ "Rx Phy Rate for Tone Map Interval 0", "homeplug_av.lnk_stats.rx.inv.phy_rate",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_rx_inv_pbs_pass,
{ "Number of PB Received Successfully", "homeplug_av.lnk_stats.rx.inv.pbs_pass",
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_rx_inv_pbs_fail,
{ "Number of PB Received Unsuccessfully", "homeplug_av.lnk_stats.rx.inv.pbs_fail",
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_rx_inv_tb_pass,
{ "Sum of the Turbo Bit Error over all PBs received successfully", "homeplug_av.lnk_stats.rx.inv.tb_pass",
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_rx_inv_tb_fail,
{ "Sum of the Turbo Bit Error over all PBs received unsuccessfully", "homeplug_av.lnk_stats.rx.inv.tb_fail",
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
/* Sniffer Request */
{ &hf_homeplug_av_sniffer_req,
{ "Sniffer Request", "homeplug_av.sniffer_req",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_sniffer_req_ctrl,
{ "Sniffer Control", "homeplug_av.sniffer_req.ctrl",
FT_UINT8, BASE_HEX, VALS(homeplug_av_sniffer_ctrl_vals), HOMEPLUG_AV_SNIFFER_CTRL_MASK, NULL, HFILL }
},
/* Sniffer Confirmation */
{ &hf_homeplug_av_sniffer_cnf,
{ "Sniffer Confirmation", "homeplug_av.sniffer_cnf",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_sniffer_cnf_status,
{ "Status", "homeplug_av.sniffer_cnf.status",
FT_UINT8, BASE_HEX, VALS(homeplug_av_sniffer_status_vals), 0x00, NULL, HFILL }
},
{ &hf_homeplug_av_sniffer_cnf_state,
{ "State", "homeplug_av.sniffer_cnf.state",
FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_sniffer_cnf_da,
{ "Destination address", "homeplug_av.sniffer_cnf.da",
FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
/* Sniffer Indicate */
{ &hf_homeplug_av_sniffer_ind,
{ "Sniffer Indicate", "homeplug_av.sniffer_ind",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_sniffer_ind_type,
{ "Sniffer Type", "homeplug_av.sniffer_ind.type",
FT_UINT8, BASE_HEX, VALS(homeplug_av_sniffer_type_vals), 0x00, "Unknown", HFILL }
},
{ &hf_homeplug_av_sniffer_ind_data,
{ "Sniffer Data", "homeplug_av.sniffer_ind.data",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_sniffer_data_dir,
{ "Direction", "homeplug_av.sniffer_ind.data.dir",
FT_UINT8, BASE_HEX, VALS(homeplug_av_lnk_stats_dir_vals), HOMEPLUG_AV_LNK_STATS_DIR_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_sniffer_data_systime,
{ "System time", "homeplug_av.sniffer_ind.data.systime",
FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_sniffer_data_bc_time,
{ "Beacon time", "homeplug_av.sniffer_ind.data.bc_time",
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
/* Network Info Confirmation */
{ &hf_homeplug_av_nw_info_cnf,
{ "Network Info Confirmation", "homeplug_av.nw_info_cnf",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_nw_info_net_info,
{ "Networks informations", "homeplug_av.nw_info_cnf.net_info",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_nw_info_num_avlns,
{ "Number of AV Logical Networks", "homeplug_av.nw_info.num_avlns",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_nw_info_nid,
{ "Network ID", "homeplug_av.nw_info.nid",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_nw_info_snid,
{ "Short Network ID", "homeplug_av.nw_info.snid",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_nw_info_tei,
{ "Terminal Equipment Identifier", "homeplug_av.nw_info.tei",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_nw_info_sta_role,
{ "Station Role", "homeplug_av.nw_info.sta_role",
FT_UINT8, BASE_HEX, VALS(homeplug_av_nw_info_role_vals), HOMEPLUG_AV_NW_INFO_ROLE_MASK, "Reserved", HFILL }
},
{ &hf_homeplug_av_nw_info_cco_mac,
{ "CCo MAC Address", "homeplug_av.nw_info_cnf.cco_mac",
FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_nw_info_cco_tei,
{ "CCo Terminal Equipment Identifier", "homeplug_av.nw_info_cnf.cco_tei",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_nw_info_num_stas,
{ "Number of AV Stations", "homeplug_av.nw_info_cnf.num_stas",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_nw_info_access,
{ "Access network", "homeplug_av.nw_info_cnf.access",
FT_UINT8, BASE_HEX, VALS(homeplug_nw_info_access_vals), HOMEPLUG_AV_NW_INFO_NID_MASK, "Reserved", HFILL }
},
{ &hf_homeplug_av_nw_info_num_coord,
{ "Number of neighbor networks coordinating", "homeplug_av.nw_info_cnf.num_coord",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
/* Network Info per station */
{ &hf_homeplug_av_nw_info_sta_info,
{ "Stations Informations", "homeplug_av.nw_info_cnf.sta_info",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_nw_info_sta_da,
{ "Station MAC Address", "homeplug_av.nw_info_cnf.sta_info.da",
FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_nw_info_sta_tei,
{ "Station Terminal Equipment Identifier", "homeplug_av.nw_info_cnf.sta_indo.tei",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_nw_info_sta_bda,
{ "MAC Address of first Node Bridged by Station", "homeplug_av.nw_info_cnf.sta_indo.bda",
FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av10_nw_info_sta_phy_dr_tx,
{ "Average PHY Tx data Rate (Mbits/sec)", "homeplug_av.nw_info_cnf.sta_indo.phy_dr_tx",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av10_nw_info_sta_phy_dr_rx,
{ "Average PHY Rx data Rate (Mbits/sec)", "homeplug_av.nw_info_cnf.sta_indo.phy_dr_rx",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av11_nw_info_sta_phy_dr_tx,
{ "Average PHY Tx data Rate (Mbits/sec)", "homeplug_av.nw_info_cnf.sta_indo.phy_dr_tx",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av11_nw_info_sta_phy_dr_rx,
{ "Average PHY Rx data Rate (Mbits/sec)", "homeplug_av.nw_info_cnf.sta_indo.phy_dr_rx",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av11_nw_info_sta_cpling_tx,
{ "PHY Tx Coupling", "homeplug_av.nw_info_cnf.sta_info.phy_coupling_tx",
FT_UINT8, BASE_DEC, VALS(homeplug_av_coupling_vals), HOMEPLUG_AV_COUPLING_MASK, "Unknown", HFILL }
},
{ &hf_homeplug_av11_nw_info_sta_cpling_rx,
{ "PHY Rx Coupling", "homeplug_av.nw_info_cnf.sta_info.phy_coupling_rx",
FT_UINT8, BASE_DEC, VALS(homeplug_av_coupling_vals), HOMEPLUG_AV_COUPLING_MASK << 4, "Unknown", HFILL }
},
/* Check Points Request */
{ &hf_homeplug_av_cp_rpt_req,
{ "Check Points Request", "homeplug_av.cp_rpt_req",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cp_rpt_req_session_id,
{ "Session ID", "homeplug_av.cp_rpt_req.session_id",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cp_rpt_req_clr,
{ "Clear flag", "homeplug_av.cp_rpt_req.clr",
FT_UINT8, BASE_HEX, VALS(homeplug_av_rpt_clr_vals), HOMEPLUG_AV_RPT_CLR_MASK, "Unknown", HFILL }
},
/* Check Points Confirmation */
{ &hf_homeplug_av_cp_rpt_ind,
{ "Check Points Confirmation", "homeplug_av.cp_rpt_ind",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cp_rpt_ind_status,
{ "Status", "homeplug_av.cp_rpt_ind.status",
FT_UINT8, BASE_HEX, VALS(homeplug_av_generic_status_vals), HOMEPLUG_AV_GEN_STATUS_MASK, "Unknown", HFILL }
},
{ &hf_homeplug_av_cp_rpt_ind_major_ver,
{ "Major version", "homeplug_av.cp_rpt_ind.major_ver",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cp_rpt_ind_minor_ver,
{ "Minor version", "homeplug_av.cp_rpt_ind.minor_ver",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cp_rpt_ind_session_id,
{ "Session ID", "homeplug_av.cp_rpt_ind.session_id",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cp_rpt_ind_total_size,
{ "Total size", "homeplug_av.cp_rpt_ind.total_size",
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cp_rpt_ind_blk_offset,
{ "Offset", "homeplug_av.cp_rpt_ind.blk_offset",
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cp_rpt_ind_byte_index,
{ "Byte Index", "homeplug_av.cp_rpt_ind.byte_index",
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cp_rpt_ind_num_parts,
{ "Number of parts", "homeplug_av.cp_rpt_ind.num_parts",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cp_rpt_ind_curr_part,
{ "Current part", "homeplug_av.cp_rpt_ind.curr_part",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cp_rpt_ind_data_len,
{ "Data length", "homeplug_av.cp_rpt_ind.data_len",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cp_rpt_ind_data_ofs,
{ "Data offset", "homeplug_av.cp_rpt_ind.data_ofs",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cp_rpt_ind_data,
{ "Report Data", "homeplug_av.cp_rpt_ind.data",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
/* Loopback Request */
{ &hf_homeplug_av_fr_lbk_req,
{ "Loopback Request", "homeplug_av.fr_lbk.req",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_fr_lbk_duration,
{ "Duration", "homeplug_av.lbk.duration",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_fr_lbk_len,
{ "Length", "homeplug_av.lbk.len",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_fr_lbk_req_data,
{ "Data", "homeplug_av.fr_lbj_req.data",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
/* Loopback Confirmation */
{ &hf_homeplug_av_fr_lbk_cnf,
{ "Loopback Confirmation", "homeplug_av.fr_lbk_cnf",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_fr_lbk_cnf_status,
{ "Status", "homeplug_av.fr_lbk_cnf.status",
FT_UINT8, BASE_HEX, VALS(homeplug_av_generic_status_vals), HOMEPLUG_AV_GEN_STATUS_MASK, "Unknown", HFILL }
},
{ &hf_homeplug_av_lbk_stat_cnf,
{ "Loopback Status Confirmation", "homeplug_av.lnk_stat_cnf",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_lbk_stat_cnf_status,
{ "Status", "homeplug_av.lnk_stat_cnf.status",
FT_UINT8, BASE_HEX, VALS(homeplug_av_generic_status_vals), HOMEPLUG_AV_GEN_STATUS_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_lbk_stat_cnf_lbk_stat,
{ "Loopback Status", "homeplug_av.lnk_stat_cnf.lbk_stat",
FT_UINT8, BASE_HEX, VALS(homeplug_av_lbk_status_vals), HOMEPLUG_AV_LBK_STATUS_MASK, NULL, HFILL }
},
/* Set Encryption Key Request */
{ &hf_homeplug_av_set_key_req,
{ "Set Encryption Key Request", "homeplug_av.set_key_req",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_set_key_req_eks,
{ "EKS", "homeplug_av.set_key_req.eks",
FT_UINT8, BASE_HEX, VALS(homeplug_av_set_key_peks_vals), 0x00, "Unknown", HFILL }
},
{ &hf_homeplug_av_set_key_req_nmk,
{ "NMK", "homeplug_av.set_key_req.nmk",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_set_key_req_rda,
{ "Destination Address", "homeplug_av.set_key_req.rda",
FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_set_key_req_dak,
{ "DAK", "homeplug_av.set_key_req.dak",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
/* Set Encryption Key Confirmation */
{ &hf_homeplug_av_set_key_cnf,
{ "Set Encryption Key Confirmation", "homeplug_av.set_key_cnf",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_set_key_cnf_status,
{ "Status", "homeplug_av.set_key_cnf.status",
FT_UINT8, BASE_HEX, VALS(homeplug_av_set_key_status_vals), 0x00, NULL, HFILL }
},
/* Get Manufacturer String Confirmation */
{ &hf_homeplug_av_mfg_string_cnf,
{ "Get Manufacturer String Confirmation", "homeplug_av.mfg_string_cnf",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_mfg_string_cnf_status,
{ "Status", "homeplug_av.mfg_string_cnf.status",
FT_UINT8, BASE_HEX, VALS(homeplug_av_generic_status_vals), HOMEPLUG_AV_GEN_STATUS_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_mfg_string_cnf_len,
{ "Length", "homeplug_av.mfg_string_cnf.len",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_mfg_string_cnf_string,
{ "Manufacturing String", "homeplug_av.mfg_string_cnf.string",
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
/* Read Configuration Block Confirmation */
{ &hf_homeplug_av_rd_cblock_cnf,
{ "Read Configuration Block Confirmation", "homeplug_av.rd_block_cnf",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_rd_cblock_cnf_status,
{ "Status", "homeplug_av.rd_block_cnf.status",
FT_UINT8, BASE_HEX, VALS(homeplug_av_cblock_status_vals), 0x00, NULL, HFILL }
},
{ &hf_homeplug_av_rd_cblock_cnf_len,
{ "Length", "homeplug_av.rd_block_cnf.len",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
/* Configuration Block Header */
{ &hf_homeplug_av_cblock_hdr,
{ "Configuration Block Header", "homeplug_av.cblock_hdr",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cblock_hdr_ver,
{ "Header Version Number", "homeplug_av.cblock_hdr.ver",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cblock_img_rom_addr,
{ "Image address in NVM", "homeplug_av.cblock_hdr.img_rom_addr",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cblock_img_addr,
{ "Image address in SDRAM", "homeplug_av.cblock_hdr.img_addr",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cblock_img_len,
{ "Image length", "homeplug_av.cblock_hdr.img_len",
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cblock_img_chksum,
{ "Image Checksum", "homeplug_av.cblock_hdr.img_chksum",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cblock_entry_point,
{ "Entry Point", "homeplug_av.cblock_hdr.entry_point",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cblock_hdr_minor,
{ "Header minor version", "homeplug_av.cblock_hdr.minor",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cblock_hdr_img_type,
{ "Header image type", "homeplug_av.cblock_hdr.img_type",
FT_UINT8, BASE_DEC, VALS(homeplug_av_nvm_img_type_vals), HOMEPLUG_AV_NVM_IMG_TYPE_MASK, "Unknown", HFILL }
},
{ &hf_homeplug_av_cblock_hdr_ignore_mask,
{ "Header ignore mask", "homeplug_av.cblock_hdr.ignore_mask",
FT_UINT16, BASE_HEX, VALS(homeplug_av_nvm_ignore_mask_vals), HOMEPLUG_AV_NVM_IGNORE_MASK_MASK, "Unknown", HFILL }
},
{ &hf_homeplug_av_cblock_hdr_module_id,
{ "Header module ID", "homeplug_av.cblock_hdr.module_id",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cblock_hdr_module_subid,
{ "Header module sub ID", "homeplug_av.cblock_hdr.module_subid",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cblock_next_hdr,
{ "Address of next header in NVM", "homeplug_av.cblock_hdr.next_hdr",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cblock_hdr_chksum,
{ "Header checksum", "homeplug_av.cblock_hdr.hdr_chksum",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
/* Configuration Block */
{ &hf_homeplug_av_cblock,
{ "Configuration Block", "homeplug_av.cblock",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cblock_sdram_size,
{ "SDRAM size", "homeplug_av.cblock.sdram_size",
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cblock_sdram_conf,
{ "SDRAM Configuration Register", "homeplug_av.cblock.sdram_conf",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cblock_sdram_tim0,
{ "SDRAM Timing Register 0", "homeplug_av.cblock.sdram_tim0",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cblock_sdram_tim1,
{ "SDRAM Timing Register 1", "homeplug_av.cblock.sdram_tim1",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cblock_sdram_cntrl,
{ "SDRAM Control Register", "homeplug_av.cblock.sdram_cntrl",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cblock_sdram_refresh,
{ "SDRAM Refresh Register", "homeplug_av.cblock.sdram_refresh",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cblock_mac_clock,
{ "MAC Clock Register", "homeplug_av.cblock.mac_clock",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
/* Set SDRAM Configuration Request */
{ &hf_homeplug_av_set_sdram_req,
{ "Set SDRAM Configuration Request", "homeplug_av.set_sdram_req",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_set_sdram_req_chksum,
{ "Checksum", "homeplug_av.set_sdram_req.chksum",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
/* Set SDRAM Configuration Confirmation */
{ &hf_homeplug_av_set_sdram_cnf,
{ "Set SDRAM Configuration Confirmation", "homeplug_av.set_sdram_cnf",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_set_sdram_cnf_status,
{ "Status", "homeplug_av.set_sdram_cnf.status",
FT_UINT8, BASE_HEX, VALS(homeplug_av_cblock_status_vals), 0x00, "Unknown", HFILL }
},
/* Embedded Host Action Required Indicate */
{ &hf_homeplug_av_host_action_ind,
{ "Embedded Host Action Required Indicate", "homeplug_av.host_action_ind",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_host_action_ind_act,
{ "Action required", "homeplug_av.host_action_ind.action",
FT_UINT8, BASE_HEX, VALS(homeplug_av_host_action_vals), 0x00, NULL, HFILL }
},
/* Embedded Host Action Required Response */
{ &hf_homeplug_av_host_action_rsp,
{ "Embedded Host Action Required Response", "homeplug_av.host_action_rsp",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_host_action_rsp_sts,
{ "Status", "homeplug_av.host_action_rsp.status",
FT_UINT8, BASE_HEX, VALS(homeplug_av_generic_status_vals), HOMEPLUG_AV_GEN_STATUS_MASK, "Unknown", HFILL }
},
/* Get Device Attributes Request */
{ &hf_homeplug_av_op_attr_req,
{ "Get Device Attributes Request", "homeplug_av.op_attr_req",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_op_attr_cookie,
{ "Cookie", "homeplug_av.op_attr.cookie",
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_op_attr_rep_type,
{ "Report Type", "homeplug_av.op_attr.rep_type",
FT_UINT8, BASE_HEX, VALS(homeplug_av_op_attr_report_vals), 0x00, NULL, HFILL }
},
/* Get Device Attributes Confirmation */
{ &hf_homeplug_av_op_attr_cnf,
{ "Get Device Attributes Confirmation", "homeplug_av.op_attr_cnf",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_op_attr_cnf_status,
{ "Status", "homeplug_av.op_attr_cnf.status",
FT_UINT16, BASE_HEX, VALS(homeplug_av_generic_status_vals), HOMEPLUG_AV_GEN_STATUS_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_op_attr_cnf_size,
{ "Size", "homeplug_av.op_attr_cnf.size",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_op_attr_cnf_data,
{ "Data", "homeplug_av.op_attr_cnf.data",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
/* Device Attributes binary report */
{ &hf_homeplug_av_op_attr_data_hw,
{ "Hardware platform", "homeplug_av.op_attr_cnf.data.hw",
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_op_attr_data_sw,
{ "Software platform", "homeplug_av.op_attr_cnf.data.sw",
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_op_attr_data_sw_major,
{ "Major version", "homeplug_av.op_attr_cnf.data.sw_major",
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_op_attr_data_sw_minor,
{ "Minor version", "homeplug_av.op_attr_cnf.data.sw_minor",
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_op_attr_data_sw_sub,
{ "Software/PIB version", "homeplug_av.op_attr_cnf.data.sw_sub",
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_op_attr_data_sw_num,
{ "Software build number", "homeplug_av.op_attr_cnf.data.sw_sub",
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_op_attr_data_sw_date,
{ "Build date", "homeplug_av.op_attr_cnf.data.sw_date",
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_op_attr_data_sw_rel,
{ "Release type", "homeplug_av.op_attr_cnf.data.sw_rel",
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_op_attr_data_sw_sdram_type,
{ "SDRAM type", "homeplug_av.op_attr_cnf.data.sw_sdram_type",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_op_attr_data_sw_linefreq,
{ "Line frequency (Hz)", "homeplug_av.op_attr_cnf.data.sw_linefreq",
FT_UINT8, BASE_DEC, VALS(homeplug_av_linefreq_vals), HOMEPLUG_AV_LINEFREQ_MASK, "Unknown", HFILL }
},
{ &hf_homeplug_av_op_attr_data_sw_zerocross,
{ "Zero-crossing", "homeplug_av.op_attr_cnf.data.sw_zerocross",
FT_UINT8, BASE_DEC, VALS(homeplug_av_zerocrossing_vals), HOMEPLUG_AV_ZEROCROSS_MASK << 2, "Unknown", HFILL }
},
{ &hf_homeplug_av_op_attr_data_sw_sdram_size,
{ "SDRAM size (Mbytes)", "homeplug_av.op_attr_cnf.data.sw_sdram_size",
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_op_attr_data_sw_auth_mode,
{ "Authorization mode", "homeplug_av.op_attr_cnf.data.sw_auth_mode",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
/* Get Ethernet PHY Settings Request */
{ &hf_homeplug_av_enet_phy_req,
{ "Get Ethernet PHY Settings Request", "homeplug_av.enet_phy_req",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_enet_phy_req_mcontrol,
{ "Message Control", "homeplug_av.enet_phy_req.mcontrol",
FT_UINT8, BASE_DEC, VALS(homeplug_av_enet_phy_mcontrol_vals), HOMEPLUG_AV_ENET_PHY_MCONTROL_MASK, "Unknown", HFILL }
},
{ &hf_homeplug_av_enet_phy_req_addcaps,
{ "Advertisement Capabilities", "homeplug_av.enet_phy_req.addcaps",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
/* Get Ethernet PHY Settings Confirmation */
{ &hf_homeplug_av_enet_phy_cnf,
{ "Get Ethernet PHY Settings Confirmation", "homeplug_av.enet_phy_cnf",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_enet_phy_cnf_status,
{ "Status", "homeplug_av.enet_phy_cnf.status",
FT_UINT8, BASE_DEC, VALS(homeplug_av_generic_status_vals), HOMEPLUG_AV_GEN_STATUS_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_enet_phy_cnf_speed,
{ "Speed", "homeplug_av.enet_phy.speed",
FT_UINT8, BASE_DEC, VALS(homeplug_av_enet_phy_speed_vals), HOMEPLUG_AV_ENET_PHY_SPEED_MASK, "Unknown", HFILL },
},
{ &hf_homeplug_av_enet_phy_cnf_duplex,
{ "Duplex", "homeplug_av.enet_phy.duplex",
FT_UINT8, BASE_DEC, VALS(homeplug_av_enet_phy_duplex_vals), HOMEPLUG_AV_ENET_PHY_DUPLEX_MASK, "Unknown", HFILL },
},
/* Tone Map Tx Characteristics Request */
{ &hf_homeplug_av_tone_map_tx_req,
{ "Tone Map Tx Characteristics Request", "homeplug_av.tone_map_tx_req",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_tone_map_tx_req_mac,
{ "Peer address", "homeplug_av.tone_map_tx_req.mac",
FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_tone_map_tx_req_slot,
{ "Tone Map slot", "homeplug_av.tone_map_tx_req.slot",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_tone_map_tx_req_coupling,
{ "Coupling", "homeplug_av.tone_map_tx_req.coupling",
FT_UINT8, BASE_DEC, VALS(homeplug_av_coupling_vals), HOMEPLUG_AV_COUPLING_MASK, "Unknown", HFILL }
},
/* Tone Map Rx Characteristics Request */
{ &hf_homeplug_av_tone_map_rx_req,
{ "Tone Map Rx Characteristics Request", "homeplug_av.tone_map_rx_req",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_tone_map_rx_req_mac,
{ "Peer address", "homeplug_av.tone_map_rx_req.mac",
FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_tone_map_rx_req_slot,
{ "Tone Map slot", "homeplug_av.tone_map_rx_req.slot",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_tone_map_rx_req_coupling,
{ "Coupling", "homeplug_av.tone_map_rx_req.coupling",
FT_UINT8, BASE_DEC, VALS(homeplug_av_coupling_vals), HOMEPLUG_AV_COUPLING_MASK, "Unknown", HFILL }
},
/* Tone Map Tx Characteristics Confirmation */
{ &hf_homeplug_av_tone_map_tx_cnf,
{ "Tone Map Tx Characteristics Confirmation", "homeplug_av.tone_map_tx_cnf",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_tone_map_tx_cnf_status,
{ "Status", "homeplug_av.tone_map_tx_cnf.status",
FT_UINT16, BASE_HEX, VALS(homeplug_av_tone_map_status_vals), 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_tone_map_tx_cnf_len,
{ "Length", "homeplug_av.tone_map_tx_cnf.len",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_tone_map_tx_cnf_mac,
{ "Peer address", "homeplug_av.tone_map_tx_cnf.mac",
FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_tone_map_tx_cnf_slot,
{ "Slot", "homeplug_av.tone_map_tx_cnf.slot",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_tone_map_tx_cnf_num_tms,
{ "Number of Tone Maps in use", "homeplug_av.tone_map_tx_cnf.num_tms",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_tone_map_tx_cnf_num_act,
{ "Tone map number of active carriers", "homeplug_av.tone_map_tx_cnf.num_act",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
/* Tone Map Rx Characteristics Confirmation */
{ &hf_homeplug_av_tone_map_rx_cnf,
{ "Tone Map Rx Characteristics Confirmation", "homeplug_av.tone_map_rx_cnf",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_tone_map_rx_cnf_status,
{ "Status", "homeplug_av.tone_map_rx_cnf.status",
FT_UINT8, BASE_HEX, VALS(homeplug_av_tone_map_status_vals), 0x00, NULL, HFILL }
},
{ &hf_homeplug_av_tone_map_rx_cnf_len,
{ "Length", "homeplug_av.tone_map_rx_cnf.len",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_tone_map_rx_cnf_subver,
{ "MME Subversion", "homeplug_av.tone_map_rx_cnf.mmesubversion",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_tone_map_rx_cnf_mac,
{ "Peer address", "homeplug_av.tone_map_rx_cnf.mac",
FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_tone_map_rx_cnf_slot,
{ "Slot", "homeplug_av.tone_map_rx_cnf.slot",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_tone_map_rx_cnf_coupling,
{ "Coupling", "homeplug_av.tone_map_rx_cnf.coupling",
FT_UINT8, BASE_DEC, VALS(homeplug_av_coupling_vals), HOMEPLUG_AV_COUPLING_MASK, "Unknown", HFILL }
},
{ &hf_homeplug_av_tone_map_rx_cnf_num_tms,
{ "Number of Tone Maps in use", "homeplug_av.tone_map_rx_cnf.num_tms",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_tone_map_rx_cnf_num_act,
{ "Tone map number of active carriers", "homeplug_av.tone_map_rx_cnf.num_act",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_tone_map_rx_cnf_agc,
{ "Automatic Gain Control (AGC)", "homeplug_av.tone_map_rx_cnf.agc",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_tone_map_rx_cnf_gil,
{ "Guard Interval Length (GIL)", "homeplug_av.tone_map_rx_cnf.gil",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
/* Tone Map Carrier informations */
{ &hf_homeplug_av_tone_map_carriers,
{ "Tone Map carriers", "homeplug_av.tone_map_cnf.carriers",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_tone_map_carrier,
{ "Modulation per carrier", "homeplug_av.tone_map_cnf.carrier",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_tone_map_carrier_lo,
{ "Modulation (Low carrier)", "homeplug_av.tone_map_cnf.carrier.lo",
FT_UINT8, BASE_HEX, VALS(homeplug_av_tone_map_vals), HOMEPLUG_AV_TONE_MAP_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_tone_map_carrier_hi,
{ "Modulation (High carrier)", "homeplug_av.tone_map_cnf.carrier.hi",
FT_UINT8, BASE_HEX, VALS(homeplug_av_tone_map_vals), HOMEPLUG_AV_TONE_MAP_MASK << 4, NULL, HFILL }
},
/* CC_ASSOC.* */
{ &hf_homeplug_av_cc_assoc_reqtype,
{ "Request Type", "homeplug_av.cc_assoc.reqtype",
FT_UINT8, BASE_HEX, VALS(homeplug_av_cc_assoc_reqtype_vals), 0x00, NULL, HFILL }
},
{ &hf_homeplug_av_cc_assoc_nid,
{ "Network ID", "homeplug_av.cc_assoc.nid",
FT_BYTES, SEP_COLON, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cc_assoc_cco_cap,
{ "CCo Capability", "homeplug_av.cc_assoc.cco_cap",
FT_UINT8, BASE_HEX, VALS(homeplug_av_avln_status_vals), HOMEPLUG_AV_AVLN_STATUS_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_cc_assoc_proxy_net_cap,
{ "Proxy Network Capability", "homeplug_av.cc_assoc.proxy_cap",
FT_UINT8, BASE_HEX, VALS(homeplug_av_cc_assoc_proxy_net_cap_vals), 0x00, NULL, HFILL }
},
{ &hf_homeplug_av_cc_assoc_result,
{ "Result", "homeplug_av.cc_assoc.result",
FT_UINT8, BASE_HEX, VALS(homeplug_av_cc_assoc_result_vals), 0x00, NULL, HFILL }
},
{ &hf_homeplug_av_cc_assoc_snid,
{ "Short Network ID", "homeplug_av.cc_assoc.snid",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cc_assoc_tei,
{ "TEI", "homeplug_av.cc_assoc.tei",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cc_assoc_lease_time ,
{ "Lease time (min)", "homeplug_av.cc_assoc.lease_time",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
/* CM_UNASSOCIATED_STA_IND */
{ &hf_homeplug_av_cm_unassoc_sta_nid,
{ "Network ID", "homeplug_av.cm_unassoc_sta.nid",
FT_BYTES, SEP_COLON, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cm_unassoc_sta_cco_cap,
{ "CCo Capability", "homeplug_av.cm_unassoc_sta.cco_cap",
FT_UINT8, BASE_HEX, VALS(homeplug_av_avln_status_vals), HOMEPLUG_AV_AVLN_STATUS_MASK, NULL, HFILL }
},
/* CC_SET_TEI_MAP_IND */
{ &hf_homeplug_av_cc_set_tei_map_ind_mode,
{ "Mode", "homeplug_av.cc_set_tei_map_ind.mode",
FT_UINT8, BASE_HEX, VALS(homeplug_av_cc_set_tei_map_ind_mode_vals), 0x00, NULL, HFILL }
},
{ &hf_homeplug_av_cc_set_tei_map_ind_num,
{ "Number of entries", "homeplug_av.cc_set_tei_map_ind.num",
FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cc_set_tei_map_ind_tei,
{ "TEI", "homeplug_av.cc_set_tei_map_ind.tei",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cc_set_tei_map_ind_mac,
{ "MAC Address", "homeplug_av.cc_set_tei_map_ind.mac",
FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_cc_set_tei_map_ind_status,
{ "Status", "homeplug_av.cc_set_tei_map_ind.status",
FT_UINT8, BASE_HEX, VALS(homeplug_av_cc_set_tei_map_ind_status_vals), 0x00, NULL, HFILL }
},
/* HPGP */
/* CM_SLAC_PARM.* */
{ &hf_homeplug_av_gp_cm_slac_parm_apptype,
{ "Application type", "homeplug_av.gp.cm_slac_parm.apptype",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_slac_parm_sectype,
{ "Security in M-Sound Message", "homeplug_av.gp.cm_slac_parm.sectype",
FT_UINT8, BASE_HEX, VALS(homeplug_av_gp_cm_slac_parm_sectype_vals), 0x00, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_slac_parm_runid,
{ "Run ID", "homeplug_av.gp.cm_slac_parm.runid",
FT_BYTES, SEP_COLON, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_slac_parm_cipher_size,
{ "Cipher Suite Set Size", "homeplug_av.gp.cm_slac_parm.cipher_size",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_slac_parm_cipher,
{ "Cipher Suite", "homeplug_av.gp.cm_slac_parm.cipher",
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_slac_parm_sound_target,
{ "M-Sound Target", "homeplug_av.gp.cm_slac_parm.sound_target",
FT_BYTES, SEP_COLON, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_slac_parm_sound_count,
{ "M-Sound Count", "homeplug_av.gp.cm_slac_parm.sound_count",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_slac_parm_time_out,
{ "M-Sound MPDU Time Out (N*100 msec)", "homeplug_av.gp.cm_slac_parm.time_out",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_slac_parm_resptype,
{ "Response type", "homeplug_av.gp.cm_slac_parm.resptype",
FT_UINT8, BASE_HEX, VALS(homeplug_av_gp_cm_slac_parm_resptype_vals), 0x00, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_slac_parm_forwarding_sta,
{ "Forwarded to MAC", "homeplug_av.gp.cm_slac_parm.forwarding_sta",
FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
/* CM_ATTEN_PROFILE_IND */
{ &hf_homeplug_av_gp_cm_atten_profile_ind_pev_mac,
{ "PEV MAC Address", "homeplug_av.gp.cm_atten_profile_ind.pev_mac",
FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_atten_profile_ind_num_groups,
{ "Number of Groups", "homeplug_av.gp.cm_atten_profile_ind.groups_count",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_atten_profile_ind_aag,
{ "Average Attenuation of group (dB)", "homeplug_av.gp.cm_atten_profile_ind.aag",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
/* CM_ATTEN_CHAR */
{ &hf_homeplug_av_gp_cm_atten_char_result,
{ "Result", "homeplug_av.gp.cm_atten_char.result",
FT_UINT8, BASE_HEX, VALS(homeplug_av_generic_status_vals), 0x00, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_atten_char_apptype,
{ "Application type", "homeplug_av.gp.cm_atten_char.apptype",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_atten_char_sectype,
{ "Security", "homeplug_av.gp.cm_atten_char.sectype",
FT_UINT8, BASE_HEX, VALS(homeplug_av_gp_cm_slac_parm_sectype_vals), 0x00, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_atten_char_source_mac,
{ "Source MAC", "homeplug_av.gp.cm_atten_char.source_mac",
FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_atten_char_runid,
{ "Run ID", "homeplug_av.gp.cm_atten_char.runid",
FT_BYTES, SEP_COLON, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_atten_char_source_id,
{ "Source ID", "homeplug_av.gp.cm_atten_char.source_id",
FT_BYTES, SEP_COLON, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_atten_char_resp_id,
{ "Response ID", "homeplug_av.gp.cm_atten_char.resp_id",
FT_BYTES, SEP_COLON, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_atten_char_numgroups,
{ "Number of Groups", "homeplug_av.gp.cm_atten_char.groups_count",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_atten_char_numsounds,
{ "Number of Sounds", "homeplug_av.gp.cm_atten_char.sounds_count",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_atten_char_aag,
{ "Average Attenuation of group (dB)", "homeplug_av.gp.cm_atten_char.aag",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_atten_char_profile,
{ "Signal level attenuation profile", "homeplug_av.gp.cm_atten_char.profile",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_atten_char_cms_data,
{ "CMS Data", "homeplug_av.gp.cm_atten_char.cms_data",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
/* CM_START_ATTEN_CHAR */
{ &hf_homeplug_av_gp_cm_start_atten_char_time_out,
{ "M-Sound MPDU Time Out (N*100 msec)", "homeplug_av.gp.cm_start_atten_char.time_out",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_start_atten_char_resptype,
{ "Response type", "homeplug_av.gp.cm_start_atten_char.resptype",
FT_UINT8, BASE_HEX, VALS(homeplug_av_gp_cm_slac_parm_resptype_vals), 0x00, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_start_atten_char_forwarding_sta,
{ "Forwarded to MAC", "homeplug_av.gp.cm_start_atten_char.sound_forwarding_sta",
FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_start_atten_char_runid,
{ "Run ID", "homeplug_av.gp.cm_start_atten_char.runid",
FT_BYTES, SEP_COLON, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_start_atten_char_numsounds,
{ "Number of Sounds", "homeplug_av.gp.cm_start_atten_char.sounds_count",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
/* CM_MNBC_SOUND */
{ &hf_homeplug_av_gp_cm_mnbc_sound_apptype,
{ "Application type", "homeplug_av.gp.cm_mnbc_sound.apptype",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_mnbc_sound_sectype,
{ "Security", "homeplug_av.gp.cm_mnbc_sound.sectype",
FT_UINT8, BASE_HEX, VALS(homeplug_av_gp_cm_slac_parm_sectype_vals), 0x00, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_mnbc_sound_sender_id,
{ "Sender ID", "homeplug_av.gp.cm_mnbc_sound.sender_id",
FT_BYTES, SEP_COLON, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_mnbc_sound_countdown,
{ "Remaining Number of Sounds", "homeplug_av.gp.cm_mnbc_sound.countdown",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_mnbc_sound_runid,
{ "Run ID", "homeplug_av.gp.cm_mnbc_sound.runid",
FT_BYTES, SEP_COLON, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_mnbc_sound_rsvd,
{ "Reserved", "homeplug_av.gp.cm_mnbc_sound.reserved",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_mnbc_sound_rnd,
{ "Random number", "homeplug_av.gp.cm_mnbc_sound.rnd",
FT_BYTES, SEP_SPACE, NULL, 0x0, NULL, HFILL }
},
/* CM_VALIDATE */
{ &hf_homeplug_av_gp_cm_validate_signaltype,
{ "Signal type", "homeplug_av.gp.cm_validate.signaltype",
FT_UINT8, BASE_HEX, VALS(homeplug_av_gp_cm_validate_signaltype_vals), 0x00, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_validate_timer,
{ "Timer (N*100 ms)", "homeplug_av.gp.cm_validate.timer",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_validate_result,
{ "Result", "homeplug_av.gp.cm_validate.result",
FT_UINT8, BASE_HEX, VALS(homeplug_av_gp_cm_validate_result_vals), 0x00, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_validate_togglenum,
{ "Number of detected toggles", "homeplug_av.gp.cm_validate.togglenum",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
/* CM_SLAC_MATCH */
{ &hf_homeplug_av_gp_cm_slac_match_apptype,
{ "Application type", "homeplug_av.gp.cm_slac_match.apptype",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_slac_match_sectype,
{ "Security", "homeplug_av.gp.cm_slac_match.sectype",
FT_UINT8, BASE_HEX, VALS(homeplug_av_gp_cm_slac_parm_sectype_vals), 0x00, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_slac_match_length,
{ "Length", "homeplug_av.gp.cm_slac_match.length",
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_slac_match_pev_id,
{ "PEV ID", "homeplug_av.gp.cm_slac_match.pev_id",
FT_BYTES, SEP_COLON, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_slac_match_pev_mac,
{ "PEV MAC", "homeplug_av.gp.cm_slac_match.pev_mac",
FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_slac_match_evse_id,
{ "EVSE ID", "homeplug_av.gp.cm_slac_match.evse_id",
FT_BYTES, SEP_COLON, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_slac_match_evse_mac,
{ "EVSE MAC", "homeplug_av.gp.cm_slac_match.evse_mac",
FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_slac_match_runid,
{ "Run ID", "homeplug_av.gp.cm_slac_match.runid",
FT_BYTES, SEP_COLON, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_slac_match_rsvd,
{ "Reserved", "homeplug_av.gp.cm_slac_match.rsvd",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_slac_match_nid,
{ "Network ID", "homeplug_av.gp.cm_slac_match.nid",
FT_BYTES, SEP_COLON, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_slac_match_nmk,
{ "Network Membership Key (NMK)", "homeplug_av.gp.cm_slac_match.nmk",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
/* CM_SLAC_USER_DATA */
{ &hf_homeplug_av_gp_cm_slac_user_data_broadcast_tlv_type,
{ "Broadcast TLV", "homeplug_av.gp.cm_slac_user_data.broadcast",
FT_UINT24, BASE_HEX, VALS(homeplug_av_gp_cm_slac_user_data_broadcast_vals), HOMEPLUG_AV_GP_CM_SLAC_USER_DATA_BROADCAST_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_slac_user_data_tlv,
{ "TLV", "homeplug_av.gp.cm_slac_user_data.tlv",
FT_UINT16, BASE_HEX, NULL, HOMEPLUG_AV_GP_CM_SLAC_USER_DATA_TLV_TYPE_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_slac_user_data_tlv_type,
{ "Type", "homeplug_av.gp.cm_slac_user_data.tlv.type",
FT_UINT16, BASE_HEX, VALS(homeplug_av_gp_cm_slac_user_data_tlv_types_vals), HOMEPLUG_AV_GP_CM_SLAC_USER_DATA_TLV_TYPE_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_slac_user_data_tlv_length,
{ "Length", "homeplug_av.gp.cm_slac_user_data.tlv.length",
FT_UINT16, BASE_HEX, NULL, HOMEPLUG_AV_GP_CM_SLAC_USER_DATA_TLV_LENGTH_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_slac_user_data_tlv_str_bytes,
{ "Data", "homeplug_av.gp.cm_slac_user_data.tlv.str",
FT_BYTES, SEP_SPACE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_slac_user_data_tlv_oui,
{ "OUI", "homeplug_av.gp.cm_slac_user_data.tlv.oui",
FT_UINT24, BASE_HEX, VALS(homeplug_av_vendors_oui_vals), 0x00, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_slac_user_data_tlv_subtype,
{ "Subtype", "homeplug_av.gp.cm_slac_user_data.tlv.subtype",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_gp_cm_slac_user_data_tlv_info_str,
{ "Data", "homeplug_av.gp.cm_slac_user_data.tlv.info_str",
FT_BYTES, SEP_SPACE, NULL, 0x0, NULL, HFILL }
},
/* ST/IoTecha specific fields */
{ &hf_homeplug_av_st_iotecha_header_rsvd,
{ "Reserved", "homeplug_av.st_iotecha.rsvd",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_header_mmever,
{ "MME version", "homeplug_av.st_iotecha.mmever",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_header_mver,
{ "Message version", "homeplug_av.st_iotecha.mver",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_auth_nmk,
{ "NMK", "homeplug_av.st_iotecha.auth.nmk",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_status_byte,
{ "Status", "homeplug_av.st_iotecha.auth.status",
FT_UINT8, BASE_HEX, VALS(homeplug_av_generic_status_vals), 0x00, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_linkstatus_status,
{ "Link status", "homeplug_av.st_iotecha.linkstatus.status",
FT_UINT8, BASE_HEX, VALS(homeplug_av_st_iotecha_linkstatus_status_vals), 0x00, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_linkstatus_devmode,
{ "DevMode", "homeplug_av.st_iotecha.linkstatus.devmode",
FT_UINT8, BASE_HEX, VALS(homeplug_av_st_iotecha_linkstatus_devmode_vals), 0x00, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_stp_discover_tlv,
{ "ST/IoTecha TLV", "homeplug_av.st_iotecha.stp_discover.tlv",
FT_UINT16, BASE_HEX, VALS(homeplug_av_st_iotecha_stp_discover_tlv_type_vals), HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_stp_discover_tlv_type,
{ "Type", "homeplug_av.st_iotecha.stp_discover.tlv.type",
FT_UINT16, BASE_HEX, VALS(homeplug_av_st_iotecha_stp_discover_tlv_type_vals), HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_stp_discover_tlv_length,
{ "Length", "homeplug_av.st_iotecha.stp_discover.tlv.length",
FT_UINT16, BASE_DEC, NULL, HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_LENGTH_MASK, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_stp_discover_tlv_value_bytes,
{ "Value", "homeplug_av.st_iotecha.stp_discover.tlv.value",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_stp_discover_tlv_value_string,
{ "Value", "homeplug_av.st_iotecha.stp_discover.tlv.value_string",
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_gain_ask,
{ "Requested Max Gain", "homeplug_av.st_iotecha.gainmax.ask",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_gain_new,
{ "New (Current) Max Gain", "homeplug_av.st_iotecha.gainmax.new",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_gain_prev,
{ "Previous Max Gain", "homeplug_av.st_iotecha.gainmax.prev",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_tei_count,
{ "Count of TEI", "homeplug_av.st_iotecha.tei.count",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_tei,
{ "TEI", "homeplug_av.st_iotecha.tei",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_tei_snap_addr_count,
{ "Number of remote address entities", "homeplug_av.st_iotecha.tei.snapshot.count",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_tei_snap_tei,
{ "Associated TEI", "homeplug_av.st_iotecha.tei.snapshot.tei",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_mac_address,
{ "MAC Address", "homeplug_av.st_iotecha.macaddress",
FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_tei_snap_mac_address_flag,
{ "Flags", "homeplug_av.st_iotecha.tei.snapshot.flags",
FT_UINT16, BASE_HEX, VALS(homeplug_av_st_iotecha_mac_address_flag_vals), 0x0F, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_bss_list_count,
{ "BSS Entries Count", "homeplug_av.st_iotecha.bss.count",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_bss_entry,
{ "BSS Entry", "homeplug_av.st_iotecha.bss.entry",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_bss_type,
{ "Type", "homeplug_av.st_iotecha.bss.entry.type",
FT_UINT8, BASE_HEX, VALS(homeplug_av_st_iotecha_stp_get_bss_tlv_type_vals), 0x00, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_bss_value_bytes,
{ "Value", "homeplug_av.st_iotecha.bss.entry.value",
FT_BYTES, SEP_COLON | BASE_ALLOW_ZERO, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_chanqual_req_type,
{ "Request Type", "homeplug_av.st_iotecha.chanqual.reqtype",
FT_UINT8, BASE_HEX, VALS(homeplug_av_st_iotecha_chanqual_reqtype_vals), 0x00, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_chanqual_substatus,
{ "Subscription Status", "homeplug_av.st_iotecha.chanqual.substatus",
FT_UINT8, BASE_HEX, VALS(homeplug_av_st_iotecha_chanqual_substatus_vals), 0x00, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_chanqual_mac_local,
{ "MAC of local node", "homeplug_av.st_iotecha.chanqual.mac.local",
FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_chanqual_mac_remote,
{ "MAC of remote node", "homeplug_av.st_iotecha.chanqual.mac.remote",
FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_chanqual_source,
{ "Source of this report", "homeplug_av.st_iotecha.chanqual.source",
FT_UINT8, BASE_HEX, VALS(homeplug_av_st_iotecha_chanqual_tei_source_vals), 0x00, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_chanqual_response_type,
{ "Response Type", "homeplug_av.st_iotecha.chanqual.responsetype",
FT_UINT8, BASE_HEX, VALS(homeplug_av_st_iotecha_chanqual_responsetype_vals), 0x00, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_chanqual_tmi_count,
{ "Size of TMI List", "homeplug_av.st_iotecha.chanqual.tmi.count",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_chanqual_tmi,
{ "TMI List", "homeplug_av.st_iotecha.chanqual.chanqual.tmi",
FT_BYTES, SEP_SPACE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_chanqual_int,
{ "Intervals List", "homeplug_av.st_iotecha.int",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_chanqual_int_count,
{ "Size of Interval List", "homeplug_av.st_iotecha.chanqual.int.count",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_chanqual_int_et,
{ "End Time of interval", "homeplug_av.st_iotecha.chanqual.int.et",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_chanqual_int_tmi,
{ "Interval", "homeplug_av.st_iotecha.chanqual.int.tmi",
FT_UINT8, BASE_HEX, VALS(homeplug_av_st_iotecha_chanqual_tmi_vals), 0x00, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_chanqual_tmi_attached,
{ "TMI of the attached Tone Map", "homeplug_av.st_iotecha.chanqual.tmi_atteched",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_chanqual_fec_type,
{ "FEC Type/Code Rate", "homeplug_av.st_iotecha.chanqual.fec",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_chanqual_cbld,
{ "Carrier Bid Loading Data Nibbles", "homeplug_av.st_iotecha.chanqual.cbld",
FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_chanqual_cbld_data_low,
{ "CBLD Low", "homeplug_av.st_iotecha.chanqual.cbld.data.low",
FT_UINT8, BASE_HEX, VALS(homeplug_av_st_iotecha_chanqual_cbld_data_vals), HOMEPLUG_AV_ST_IOTECHA_CHANQUAL_CBLD_DATA_MASK_LOW, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_chanqual_cbld_data_high,
{ "CBLD High", "homeplug_av.st_iotecha.chanqual.cbld.data.high",
FT_UINT8, BASE_HEX, VALS(homeplug_av_st_iotecha_chanqual_cbld_data_vals), HOMEPLUG_AV_ST_IOTECHA_CHANQUAL_CBLD_DATA_MASK_HIGH, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_mfct_crc,
{ "CRC plus last CRC", "homeplug_av.st_iotecha.mfct.crc",
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_mfct_total_length,
{ "Total length", "homeplug_av.st_iotecha.mfct.total_length",
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_mfct_offset,
{ "Offset", "homeplug_av.st_iotecha.mfct.offset",
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_mfct_length,
{ "Length", "homeplug_av.st_iotecha.mfct.length",
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_mfct_data,
{ "Update Data", "homeplug_av.st_iotecha.mfct.data",
FT_BYTES, SEP_SPACE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_mfct_timeout,
{ "Time duration before abort", "homeplug_av.st_iotecha.mfct.timeout",
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_mfct_request_type,
{ "Request Type", "homeplug_av.st_iotecha.mfct.request_type",
FT_UINT8, BASE_HEX, VALS(homeplug_av_st_iotecha_mfct_request_type_vals), 0x00, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_mfct_result,
{ "Result", "homeplug_av.st_iotecha.mfct.result",
FT_UINT8, BASE_HEX, VALS(homeplug_av_st_iotecha_mfct_result_vals), 0x00, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_mfct_reboot,
{ "Reboot when complete", "homeplug_av.st_iotecha.mfct.reboot",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_mfct_name,
{ "Parameter name", "homeplug_av.st_iotecha.mfct.name",
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_mfct_value,
{ "Value", "homeplug_av.st_iotecha.mfct.value",
FT_BYTES, SEP_SPACE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_mfct_item_offset,
{ "Offset", "homeplug_av.st_iotecha.mfct.item.offset",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_mfct_item_total_length,
{ "Total length", "homeplug_av.st_iotecha.mfct.item.total_length",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_stp_fup_mac_da,
{ "MAC DA", "homeplug_av.st_iotecha.stp_fup.mac_da",
FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_stp_fup_mac_sa,
{ "MAC SA", "homeplug_av.st_iotecha.stp_fup.mac_sa",
FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_stp_fup_mtype,
{ "Message Type", "homeplug_av.st_iotecha.stp_fup.mtype",
FT_UINT8, BASE_HEX, VALS(homeplug_av_st_iotecha_stp_fwup_mtype_vals), 0x00, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_cpstate_state,
{ "CP State", "homeplug_av.st_iotecha.cpstate.state",
FT_UINT8, BASE_HEX, VALS(homeplug_av_st_iotecha_stp_cpstate_state_vals), 0x00, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_cpstate_pwm_duty,
{ "PWM Duty Cycle", "homeplug_av.st_iotecha.cpstate.pwm_duty",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_cpstate_pwm_freq,
{ "PWM Frequency", "homeplug_av.st_iotecha.cpstate.pwm_freq",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_cpstate_volatge,
{ "CP Voltage", "homeplug_av.st_iotecha.cpstate.cp_volatge",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_cpstate_adc_bitmask,
{ "ADC Channels", "homeplug_av.st_iotecha.cpstate.adc_bitmask",
FT_UINT8, BASE_CUSTOM, CF_FUNC(adc_bitmask_base), 0x00, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_cpstate_adc_voltage_1,
{ "ADC Channel 1 (mV)", "homeplug_av.st_iotecha.cpstate.adc_channel_1",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_cpstate_adc_voltage_2,
{ "ADC Channel 2 (mV)", "homeplug_av.st_iotecha.cpstate.adc_channel_2",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_cpstate_adc_voltage_3,
{ "ADC Channel 3 (mV)", "homeplug_av.st_iotecha.cpstate.adc_channel_3",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_user_message_info,
{ "Message", "homeplug_av.st_iotecha.user_message",
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_user_message_details,
{ "Details", "homeplug_av.st_iotecha.user_message_details",
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_test_type,
{ "Test Type", "homeplug_av.st_iotecha.test_type",
FT_UINT8, BASE_HEX, VALS(homeplug_av_st_iotecha_test_type_vals), 0x00, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_num_sound,
{ "Number of soundings", "homeplug_av.st_iotecha.num_sound",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_data_ind_addr,
{ "MAC addr", "homeplug_av.st_iotecha.data_ind_addr",
FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_agc_lock,
{ "AgcLock", "homeplug_av.st_iotecha.agc_lock",
FT_UINT8, BASE_DEC, VALS(homeplug_av_st_iotecha_agc_lock_vals), 0x00, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_db_agc_val,
{ "DbAgcVal", "homeplug_av.st_iotecha.db_agc_val",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_test_status,
{ "Status", "homeplug_av.st_iotecha.test_status",
FT_UINT8, BASE_HEX, VALS(homeplug_av_st_iotecha_test_status_vals), 0x00, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_suppress_data,
{ "Suppress data", "homeplug_av.st_iotecha.suppress_data",
FT_UINT8, BASE_DEC, VALS(homeplug_av_st_iotecha_suppress_data_vals), 0x00, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_sound_remain,
{ "Counter of sound remain", "homeplug_av.st_iotecha.sound_remain",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_ntb_time,
{ "NTB time", "homeplug_av.st_iotecha.ntb_time",
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_rsvd1,
{ "Reserved", "homeplug_av.st_iotecha.rsvd1",
FT_UINT24, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_rsvd2,
{ "Reserved", "homeplug_av.st_iotecha.rsvd2",
FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_num_segments,
{ "Number of msg segments", "homeplug_av.st_iotecha.num_segments",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_segment,
{ "Index of curr segment", "homeplug_av.st_iotecha.segment",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_num_chan,
{ "Number of channels", "homeplug_av.st_iotecha.num_chan",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
},
{ &hf_homeplug_av_st_iotecha_chan_start,
{ "Carrier map index of ChanData", "homeplug_av.st_iotecha.chan_start",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
}
/* End of ST/IoTecha specific fields */
};
static gint *ett[] = {
&ett_homeplug_av,
&ett_homeplug_av_mmhdr,
&ett_homeplug_av_mmtype,
&ett_homeplug_av_fmi,
&ett_homeplug_av_vendor,
&ett_homeplug_av_public,
&ett_homeplug_av_fc,
&ett_homeplug_av_sof,
&ett_homeplug_av_rtscts,
&ett_homeplug_av_sack,
&ett_homeplug_av_sound,
&ett_homeplug_av_rsof,
&ett_homeplug_av_bcn,
&ett_homeplug_av_bcn_payload,
&ett_homeplug_av_cc_disc_list_cnf,
&ett_homeplug_av_cc_sta_info,
&ett_homeplug_av_cc_net_info,
&ett_homeplug_av_cm_enc_pld_ind,
&ett_homeplug_av_cm_enc_pld_rsp,
&ett_homeplug_av_cm_set_key_req,
&ett_homeplug_av_cm_set_key_cnf,
&ett_homeplug_av_cm_get_key_req,
&ett_homeplug_av_cm_get_key_cnf,
&ett_homeplug_av_brg_infos_cnf,
&ett_homeplug_av_cm_nw_infos_cnf,
&ett_homeplug_av_nw_stats_cnf,
&ett_homeplug_av_get_sw_cnf,
&ett_homeplug_av_wr_mem_req,
&ett_homeplug_av_wr_mem_cnf,
&ett_homeplug_av_rd_mem_req,
&ett_homeplug_av_st_mac_req,
&ett_homeplug_av_st_mac_cnf,
&ett_homeplug_av_rd_mem_cnf,
&ett_homeplug_av_get_nvm_cnf,
&ett_homeplug_av_rs_dev_cnf,
&ett_homeplug_av_wr_mod_req,
&ett_homeplug_av_wr_mod_cnf,
&ett_homeplug_av_wr_mod_ind,
&ett_homeplug_av_rd_mod_req,
&ett_homeplug_av_rd_mod_cnf,
&ett_homeplug_av_mod_nvm_req,
&ett_homeplug_av_mod_nvm_cnf,
&ett_homeplug_av_wd_rpt_req,
&ett_homeplug_av_wd_rpt_ind,
&ett_homeplug_av_lnk_stats_req,
&ett_homeplug_av_lnk_stats_cnf,
&ett_homeplug_av_lnk_stats_tx,
&ett_homeplug_av_lnk_stats_rx,
&ett_homeplug_av_lnk_stats_rx_inv,
&ett_homeplug_av_sniffer_req,
&ett_homeplug_av_sniffer_cnf,
&ett_homeplug_av_sniffer_ind,
&ett_homeplug_av_sniffer_ind_data,
&ett_homeplug_av_nw_info_cnf,
&ett_homeplug_av_nw_info_sta_info,
&ett_homeplug_av_nw_info_net_info,
&ett_homeplug_av_cp_rpt_req,
&ett_homeplug_av_cp_rpt_ind,
&ett_homeplug_av_fr_lbk_req,
&ett_homeplug_av_fr_lbk_cnf,
&ett_homeplug_av_lbk_stat_cnf,
&ett_homeplug_av_set_key_req,
&ett_homeplug_av_set_key_cnf,
&ett_homeplug_av_mfg_string_cnf,
&ett_homeplug_av_rd_cblock_cnf,
&ett_homeplug_av_cblock_hdr,
&ett_homeplug_av_cblock,
&ett_homeplug_av_set_sdram_req,
&ett_homeplug_av_set_sdram_cnf,
&ett_homeplug_av_host_action_ind,
&ett_homeplug_av_host_action_rsp,
&ett_homeplug_av_op_attr_req,
&ett_homeplug_av_op_attr_cnf,
&ett_homeplug_av_op_attr_data,
&ett_homeplug_av_enet_phy_req,
&ett_homeplug_av_enet_phy_cnf,
&ett_homeplug_av_tone_map_tx_req,
&ett_homeplug_av_tone_map_rx_req,
&ett_homeplug_av_tone_map_tx_cnf,
&ett_homeplug_av_tone_map_rx_cnf,
&ett_homeplug_av_tone_map_carriers,
&ett_homeplug_av_tone_map_carrier,
/* HPGP*/
&ett_homeplug_av_gp_cm_atten_char_profile,
&ett_homeplug_av_gp_cm_slac_user_data_tlv,
/* ST/IoTecha subtrees */
&ett_homeplug_av_st_iotecha_header,
&ett_homeplug_av_st_iotecha_type_length_value,
&ett_homeplug_av_st_iotecha_chanqual_int,
&ett_homeplug_av_st_iotecha_chanqual_cbld,
&ett_homeplug_av_st_iotecha_bss_entry
};
proto_homeplug_av = proto_register_protocol("HomePlug AV protocol", "HomePlug AV", "homeplug-av");
proto_register_field_array(proto_homeplug_av, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
}
void
proto_reg_handoff_homeplug_av(void)
{
dissector_handle_t homeplug_av_handle;
homeplug_av_handle = create_dissector_handle(dissect_homeplug_av, proto_homeplug_av);
dissector_add_uint("ethertype", ETHERTYPE_HOMEPLUG_AV, homeplug_av_handle);
}
/*
* Editor modelines
*
* Local Variables:
* c-file-style: "bsd"
* c-basic-offset: 4
* tab-width: 8
* indent-tabs-mode: nil
* End:
*
* ex: set shiftwidth=4 tabstop=8 expandtab:
* :indentSize=4:tabSize=8:noTabs=true:
*/