Coverage Report

Created: 2026-07-12 07:10

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/wireshark/epan/dissectors/packet-homeplug-av.c
Line
Count
Source
1
/* packet-homeplug-av.c
2
 * Routines for HomePlug AV dissection
3
 *
4
 * Copyright 2011, Florian Fainelli <florian[AT]openwrt.org>
5
 * Copyright 2016, Nora Sandler <nsandler[AT]securityinnovation.com>
6
 * Copyright 2018, Sergey Rak <sergrak[AT]iotecha.com>
7
 *
8
 * Wireshark - Network traffic analyzer
9
 * By Gerald Combs <gerald[AT]wireshark.org>
10
 * Copyright 1998 Gerald Combs
11
 *
12
 * SPDX-License-Identifier: GPL-2.0-or-later
13
 */
14
15
#include "config.h"
16
17
#include <epan/packet.h>
18
#include <epan/etypes.h>
19
#include <epan/ptvcursor.h>
20
#include <epan/tfs.h>
21
22
#include "packet-homeplug-av-vendor-vertexcom.h"  // VertexCom
23
24
void proto_register_homeplug_av(void);
25
void proto_reg_handoff_homeplug_av(void);
26
27
static dissector_handle_t homeplug_av_handle;
28
29
static int proto_homeplug_av;
30
31
static int hf_homeplug_av_mmhdr;
32
static int hf_homeplug_av_mmhdr_mmver;
33
static int hf_homeplug_av_mmhdr_mmtype_general;
34
static int hf_homeplug_av_mmhdr_mmtype_qualcomm;
35
static int hf_homeplug_av_mmhdr_mmtype_st;
36
static int hf_homeplug_av_mmhdr_mmtype_lsb;
37
static int hf_homeplug_av_mmhdr_mmtype_msb;
38
static int hf_homeplug_av_mmhdr_fmi;
39
static int hf_homeplug_av_vendor;
40
static int hf_homeplug_av_vendor_oui;
41
static int hf_homeplug_av_reserved;
42
43
/* Frame Control fields (for sniffer data) */
44
static int hf_homeplug_av_fc;
45
static int hf_homeplug_av_fc_del_type;
46
static int hf_homeplug_av_fc_access;
47
static int hf_homeplug_av_fc_snid;
48
static int hf_homeplug_av_fc_fccs_av;
49
50
/* Variant fields used by multiple MPDU types */
51
static int hf_homeplug_av_dtei;
52
static int hf_homeplug_av_stei;
53
static int hf_homeplug_av_lid;
54
static int hf_homeplug_av_cfs;
55
static int hf_homeplug_av_bdf;
56
static int hf_homeplug_av_hp10df;
57
static int hf_homeplug_av_hp11df;
58
static int hf_homeplug_av_svn;
59
static int hf_homeplug_av_rrtf;
60
static int hf_homeplug_av_fl_av;
61
static int hf_homeplug_av_ppb;
62
static int hf_homeplug_av_mfs_rsp_data;
63
static int hf_homeplug_av_mfs_rsp_mgmt;
64
65
/* Beacon */
66
static int hf_homeplug_av_bcn;
67
static int hf_homeplug_av_bcn_bts;
68
static int hf_homeplug_av_bcn_bto_0;
69
static int hf_homeplug_av_bcn_bto_1;
70
static int hf_homeplug_av_bcn_bto_2;
71
static int hf_homeplug_av_bcn_bto_3;
72
73
/* Beacon MPDU Payload */
74
static int hf_homeplug_av_bcn_payload;
75
static int hf_homeplug_av_bcn_type;
76
static int hf_homeplug_av_bcn_nid;
77
static int hf_homeplug_av_bcn_stei;
78
static int hf_homeplug_av_bcn_ncnr;
79
static int hf_homeplug_av_bcn_num_slots;
80
static int hf_homeplug_av_bcn_slot_use;
81
static int hf_homeplug_av_bcn_slot_id;
82
static int hf_homeplug_av_bcn_aclss;
83
static int hf_homeplug_av_bcn_hm;
84
static int hf_homeplug_av_bcn_nm;
85
static int hf_homeplug_av_bcn_npsm;
86
static int hf_homeplug_av_bcn_cco_cap;
87
static int hf_homeplug_av_bcn_rtsbf;
88
static int hf_homeplug_av_bcn_hoip;
89
static int hf_homeplug_av_bcn_rsf;
90
static int hf_homeplug_av_bcn_plevel;
91
static int hf_homeplug_av_bcn_bentries;
92
static int hf_homeplug_av_bcn_bpcs;
93
94
/* Start of Frame */
95
static int hf_homeplug_av_sof;
96
static int hf_homeplug_av_sof_peks;
97
static int hf_homeplug_av_sof_ble;
98
static int hf_homeplug_av_sof_pbsz;
99
static int hf_homeplug_av_sof_num_sym;
100
static int hf_homeplug_av_sof_tmi_av;
101
static int hf_homeplug_av_sof_mpdu_cnt;
102
static int hf_homeplug_av_sof_burst_cnt;
103
static int hf_homeplug_av_sof_bbf;
104
static int hf_homeplug_av_sof_mrtfl;
105
static int hf_homeplug_av_sof_clst;
106
static int hf_homeplug_av_sof_mfs_cmd_mgmt;
107
static int hf_homeplug_av_sof_mfs_cmd_data;
108
static int hf_homeplug_av_sof_rsr;
109
static int hf_homeplug_av_sof_mcf;
110
static int hf_homeplug_av_sof_dccpcf;
111
static int hf_homeplug_av_sof_mnbf;
112
static int hf_homeplug_av_sof_mfs_rsp_mgmt;
113
static int hf_homeplug_av_sof_mfs_rsp_data;
114
static int hf_homeplug_av_sof_bm_sack;
115
116
/* Selective Acknowledgement */
117
static int hf_homeplug_av_sack;
118
119
/* Request to Send/Clear to Send */
120
static int hf_homeplug_av_rtscts;
121
static int hf_homeplug_av_rtscts_rtsf;
122
static int hf_homeplug_av_rtscts_igf;
123
static int hf_homeplug_av_rtscts_mnbf;
124
static int hf_homeplug_av_rtscts_mcf;
125
static int hf_homeplug_av_rtscts_dur;
126
127
/* Sound */
128
static int hf_homeplug_av_sound;
129
static int hf_homeplug_av_sound_pbsz;
130
static int hf_homeplug_av_sound_bdf;
131
static int hf_homeplug_av_sound_saf;
132
static int hf_homeplug_av_sound_scf;
133
static int hf_homeplug_av_sound_req_tm;
134
static int hf_homeplug_av_sound_mpdu_cnt;
135
static int hf_homeplug_av_sound_src;
136
static int hf_homeplug_av_sound_add_req_tm;
137
static int hf_homeplug_av_sound_max_pb_sym;
138
static int hf_homeplug_av_sound_ecsf;
139
static int hf_homeplug_av_sound_ecuf;
140
static int hf_homeplug_av_sound_ems;
141
static int hf_homeplug_av_sound_esgisf;
142
static int hf_homeplug_av_sound_elgisf;
143
static int hf_homeplug_av_sound_efrs;
144
145
/* Reverse Start of Frame */
146
static int hf_homeplug_av_rsof;
147
static int hf_homeplug_av_rsof_fl;
148
static int hf_homeplug_av_rsof_tmi;
149
static int hf_homeplug_av_rsof_pbsz;
150
static int hf_homeplug_av_rsof_num_sym;
151
static int hf_homeplug_av_rsof_mfs_cmd_mgmt;
152
static int hf_homeplug_av_rsof_mfs_cmd_data;
153
154
/* Public MMEs */
155
static int hf_homeplug_av_public;
156
static int hf_homeplug_av_public_frag_count;
157
static int hf_homeplug_av_public_frag_index;
158
static int hf_homeplug_av_public_frag_seqnum;
159
160
static int hf_homeplug_av_cc_disc_list_cnf;
161
162
static int hf_homeplug_av_cc_disc_list_sta_cnt;
163
static int hf_homeplug_av_cc_sta_info;
164
static int hf_homeplug_av_cc_sta_info_mac;
165
static int hf_homeplug_av_cc_sta_info_tei;
166
static int hf_homeplug_av_cc_sta_info_same_net;
167
static int hf_homeplug_av_cc_sta_info_sig_level;
168
static int hf_homeplug_av_cc_sta_info_avg_ble;
169
170
static int hf_homeplug_av_cc_disc_list_net_cnt;
171
static int hf_homeplug_av_cc_net_info;
172
static int hf_homeplug_av_cc_net_info_hyb_mode;
173
static int hf_homeplug_av_cc_net_info_bcn_slots;
174
static int hf_homeplug_av_cc_net_info_cco_sts;
175
static int hf_homeplug_av_cc_net_info_bcn_ofs;
176
177
static int hf_homeplug_av_brg_infos_cnf;
178
static int hf_homeplug_av_brg_infos_cnf_brd;
179
static int hf_homeplug_av_brg_infos_cnf_btei;
180
static int hf_homeplug_av_brg_infos_cnf_num_stas;
181
static int hf_homeplug_av_brg_infos_cnf_mac;
182
183
static int hf_homeplug_av_cm_nw_infos_cnf;
184
185
static int hf_homeplug_av_nw_stats_cnf;
186
187
/* Shared network informations fields */
188
static int hf_homeplug_av_nw_info_peks;
189
static int hf_homeplug_av_nw_info_pid;
190
static int hf_homeplug_av_nw_info_prn;
191
static int hf_homeplug_av_nw_info_pmn;
192
static int hf_homeplug_av_nw_info_my_nonce;
193
static int hf_homeplug_av_nw_info_your_nonce;
194
static int hf_homeplug_av_nw_info_key_type;
195
static int hf_homeplug_av_nw_info_cco_cap;
196
static int hf_homeplug_av_nw_info_num_avlns;
197
static int hf_homeplug_av_nw_info_nid;
198
static int hf_homeplug_av_nw_info_snid;
199
static int hf_homeplug_av_nw_info_tei;
200
static int hf_homeplug_av_nw_info_sta_role;
201
static int hf_homeplug_av_nw_info_cco_mac;
202
static int hf_homeplug_av_nw_info_cco_tei;
203
static int hf_homeplug_av_nw_info_num_stas;
204
static int hf_homeplug_av_nw_info_access;
205
static int hf_homeplug_av_nw_info_num_coord;
206
207
208
static int hf_homeplug_av_cm_enc_pld_ind;
209
static int hf_homeplug_av_cm_enc_pld_ind_avlns;
210
static int hf_homeplug_av_cm_enc_pld_ind_iv;
211
static int hf_homeplug_av_cm_enc_pld_ind_uuid;
212
static int hf_homeplug_av_cm_enc_pld_ind_len;
213
static int hf_homeplug_av_cm_enc_pld_ind_pld;
214
215
static int hf_homeplug_av_cm_enc_pld_rsp;
216
static int hf_homeplug_av_cm_enc_pld_rsp_result;
217
218
static int hf_homeplug_av_cm_set_key_req;
219
static int hf_homeplug_av_cm_set_key_req_nw_key;
220
221
static int hf_homeplug_av_cm_set_key_cnf;
222
static int hf_homeplug_av_cm_set_key_cnf_result;
223
224
static int hf_homeplug_av_cm_get_key_req;
225
static int hf_homeplug_av_cm_get_key_req_type;
226
static int hf_homeplug_av_cm_get_key_req_has_key;
227
228
static int hf_homeplug_av_cm_get_key_cnf;
229
static int hf_homeplug_av_cm_get_key_cnf_result;
230
static int hf_homeplug_av_cm_get_key_cnf_rtype;
231
static int hf_homeplug_av_cm_get_key_cnf_key;
232
233
234
/* Intellon specific vendor MMEs */
235
static int hf_homeplug_av_get_sw_cnf;
236
static int hf_homeplug_av_get_sw_cnf_status;
237
static int hf_homeplug_av_get_sw_cnf_dev_id;
238
static int hf_homeplug_av_get_sw_cnf_ver_len;
239
static int hf_homeplug_av_get_sw_cnf_ver_str;
240
static int hf_homeplug_av_get_sw_cnf_upg;
241
242
/* Shared memory related fields */
243
static int hf_homeplug_av_mem_len_16bits;
244
static int hf_homeplug_av_mem_len_32bits;
245
static int hf_homeplug_av_mem_offset;
246
static int hf_homeplug_av_mem_checksum;
247
static int hf_homeplug_av_mem_data;
248
static int hf_homeplug_av_mem_addr;
249
static int hf_homeplug_av_mem_status;
250
251
static int hf_homeplug_av_wr_mem_req;
252
static int hf_homeplug_av_wr_mem_cnf;
253
254
static int hf_homeplug_av_rd_mem_req;
255
static int hf_homeplug_av_rd_mem_cnf;
256
257
static int hf_homeplug_av_mac_module_id;
258
259
static int hf_homeplug_av_st_mac_req;
260
static int hf_homeplug_av_st_mac_req_img_load;
261
static int hf_homeplug_av_st_mac_req_img_len;
262
static int hf_homeplug_av_st_mac_req_img_chksum;
263
static int hf_homeplug_av_st_mac_req_img_start;
264
265
static int hf_homeplug_av_st_mac_cnf;
266
static int hf_homeplug_av_st_mac_cnf_status;
267
268
static int hf_homeplug_av_get_nvm_cnf;
269
static int hf_homeplug_av_get_nvm_cnf_status;
270
static int hf_homeplug_av_get_nvm_cnf_nvm_type;
271
static int hf_homeplug_av_get_nvm_cnf_nvm_page;
272
static int hf_homeplug_av_get_nvm_cnf_nvm_block;
273
static int hf_homeplug_av_get_nvm_cnf_nvm_size;
274
275
static int hf_homeplug_av_rs_dev_cnf;
276
static int hf_homeplug_av_rs_dev_cnf_status;
277
278
static int hf_homeplug_av_wr_mod_req;
279
280
static int hf_homeplug_av_wr_mod_cnf;
281
static int hf_homeplug_av_wr_mod_cnf_status;
282
283
static int hf_homeplug_av_wr_mod_ind;
284
static int hf_homeplug_av_wr_mod_ind_status;
285
286
static int hf_homeplug_av_rd_mod_req;
287
288
static int hf_homeplug_av_rd_mod_cnf;
289
static int hf_homeplug_av_rd_mod_cnf_status;
290
291
static int hf_homeplug_av_mod_nvm_req;
292
293
static int hf_homeplug_av_mod_nvm_cnf;
294
static int hf_homeplug_av_mod_nvm_cnf_status;
295
296
static int hf_homeplug_av_wd_rpt_req;
297
static int hf_homeplug_av_wd_rpt_req_session_id;
298
static int hf_homeplug_av_wd_rpt_req_clr;
299
300
static int hf_homeplug_av_wd_rpt_ind;
301
static int hf_homeplug_av_wd_rpt_ind_status;
302
static int hf_homeplug_av_wd_rpt_ind_session_id;
303
static int hf_homeplug_av_wd_rpt_ind_num_parts;
304
static int hf_homeplug_av_wd_rpt_ind_curr_part;
305
static int hf_homeplug_av_wd_rpt_ind_rdata_len;
306
static int hf_homeplug_av_wd_rpt_ind_rdata_ofs;
307
static int hf_homeplug_av_wd_rpt_ind_rdata;
308
309
static int hf_homeplug_av_lnk_stats_req;
310
static int hf_homeplug_av_lnk_stats_req_mcontrol;
311
static int hf_homeplug_av_lnk_stats_req_dir;
312
static int hf_homeplug_av_lnk_stats_req_lid;
313
static int hf_homeplug_av_lnk_stats_req_macaddr;
314
315
static int hf_homeplug_av_lnk_stats_cnf;
316
static int hf_homeplug_av_lnk_stats_cnf_status;
317
static int hf_homeplug_av_lnk_stats_cnf_dir;
318
static int hf_homeplug_av_lnk_stats_cnf_lid;
319
static int hf_homeplug_av_lnk_stats_cnf_tei;
320
static int hf_homeplug_av_lnk_stats_cnf_lstats;
321
322
static int hf_homeplug_av_lnk_stats_tx;
323
static int hf_homeplug_av_lnk_stats_tx_mpdu_ack;
324
static int hf_homeplug_av_lnk_stats_tx_mpdu_col;
325
static int hf_homeplug_av_lnk_stats_tx_mpdu_fai;
326
static int hf_homeplug_av_lnk_stats_tx_pbs_pass;
327
static int hf_homeplug_av_lnk_stats_tx_pbs_fail;
328
329
static int hf_homeplug_av_lnk_stats_rx;
330
static int hf_homeplug_av_lnk_stats_rx_mpdu_ack;
331
static int hf_homeplug_av_lnk_stats_rx_mpdu_fai;
332
static int hf_homeplug_av_lnk_stats_rx_pbs_pass;
333
static int hf_homeplug_av_lnk_stats_rx_pbs_fail;
334
static int hf_homeplug_av_lnk_stats_rx_tb_pass;
335
static int hf_homeplug_av_lnk_stats_rx_tb_fail;
336
static int hf_homeplug_av_lnk_stats_rx_num_int;
337
338
static int hf_homeplug_av_rx_inv_stats;
339
static int hf_homeplug_av_rx_inv_phy_rate;
340
static int hf_homeplug_av_rx_inv_pbs_pass;
341
static int hf_homeplug_av_rx_inv_pbs_fail;
342
static int hf_homeplug_av_rx_inv_tb_pass;
343
static int hf_homeplug_av_rx_inv_tb_fail;
344
345
static int hf_homeplug_av_sniffer_req;
346
static int hf_homeplug_av_sniffer_req_ctrl;
347
348
static int hf_homeplug_av_sniffer_cnf;
349
static int hf_homeplug_av_sniffer_cnf_status;
350
static int hf_homeplug_av_sniffer_cnf_state;
351
static int hf_homeplug_av_sniffer_cnf_da;
352
353
static int hf_homeplug_av_sniffer_ind;
354
static int hf_homeplug_av_sniffer_ind_type;
355
static int hf_homeplug_av_sniffer_ind_data;
356
static int hf_homeplug_av_sniffer_data_dir;
357
static int hf_homeplug_av_sniffer_data_systime;
358
static int hf_homeplug_av_sniffer_data_bc_time;
359
360
static int hf_homeplug_av_nw_info_cnf;
361
362
static int hf_homeplug_av_nw_info_sta_info;
363
static int hf_homeplug_av_nw_info_net_info;
364
365
static int hf_homeplug_av_nw_info_sta_da;
366
static int hf_homeplug_av_nw_info_sta_tei;
367
static int hf_homeplug_av_nw_info_sta_bda;
368
static int hf_homeplug_av10_nw_info_sta_phy_dr_tx;
369
static int hf_homeplug_av10_nw_info_sta_phy_dr_rx;
370
static int hf_homeplug_av11_nw_info_sta_phy_dr_tx;
371
static int hf_homeplug_av11_nw_info_sta_cpling_tx;
372
static int hf_homeplug_av11_nw_info_sta_phy_dr_rx;
373
static int hf_homeplug_av11_nw_info_sta_cpling_rx;
374
375
static int hf_homeplug_av_cp_rpt_req;
376
static int hf_homeplug_av_cp_rpt_req_session_id;
377
static int hf_homeplug_av_cp_rpt_req_clr;
378
379
static int hf_homeplug_av_cp_rpt_ind;
380
static int hf_homeplug_av_cp_rpt_ind_status;
381
static int hf_homeplug_av_cp_rpt_ind_major_ver;
382
static int hf_homeplug_av_cp_rpt_ind_minor_ver;
383
static int hf_homeplug_av_cp_rpt_ind_session_id;
384
static int hf_homeplug_av_cp_rpt_ind_total_size;
385
static int hf_homeplug_av_cp_rpt_ind_blk_offset;
386
static int hf_homeplug_av_cp_rpt_ind_byte_index;
387
static int hf_homeplug_av_cp_rpt_ind_num_parts;
388
static int hf_homeplug_av_cp_rpt_ind_curr_part;
389
static int hf_homeplug_av_cp_rpt_ind_data_len;
390
static int hf_homeplug_av_cp_rpt_ind_data_ofs;
391
static int hf_homeplug_av_cp_rpt_ind_data;
392
393
static int hf_homeplug_av_fr_lbk_duration;
394
static int hf_homeplug_av_fr_lbk_len;
395
396
static int hf_homeplug_av_fr_lbk_req;
397
static int hf_homeplug_av_fr_lbk_req_data;
398
399
static int hf_homeplug_av_fr_lbk_cnf;
400
static int hf_homeplug_av_fr_lbk_cnf_status;
401
402
static int hf_homeplug_av_lbk_stat_cnf;
403
static int hf_homeplug_av_lbk_stat_cnf_status;
404
static int hf_homeplug_av_lbk_stat_cnf_lbk_stat;
405
406
static int hf_homeplug_av_set_key_req;
407
static int hf_homeplug_av_set_key_req_eks;
408
static int hf_homeplug_av_set_key_req_nmk;
409
static int hf_homeplug_av_set_key_req_rda;
410
static int hf_homeplug_av_set_key_req_dak;
411
412
static int hf_homeplug_av_set_key_cnf;
413
static int hf_homeplug_av_set_key_cnf_status;
414
415
static int hf_homeplug_av_mfg_string_cnf;
416
static int hf_homeplug_av_mfg_string_cnf_status;
417
static int hf_homeplug_av_mfg_string_cnf_len;
418
static int hf_homeplug_av_mfg_string_cnf_string;
419
420
static int hf_homeplug_av_rd_cblock_cnf;
421
static int hf_homeplug_av_rd_cblock_cnf_status;
422
static int hf_homeplug_av_rd_cblock_cnf_len;
423
424
static int hf_homeplug_av_cblock_hdr;
425
static int hf_homeplug_av_cblock_hdr_ver;
426
static int hf_homeplug_av_cblock_img_rom_addr;
427
static int hf_homeplug_av_cblock_img_addr;
428
static int hf_homeplug_av_cblock_img_len;
429
static int hf_homeplug_av_cblock_img_chksum;
430
static int hf_homeplug_av_cblock_entry_point;
431
static int hf_homeplug_av_cblock_hdr_minor;
432
static int hf_homeplug_av_cblock_hdr_img_type;
433
static int hf_homeplug_av_cblock_hdr_ignore_mask;
434
static int hf_homeplug_av_cblock_hdr_module_id;
435
static int hf_homeplug_av_cblock_hdr_module_subid;
436
static int hf_homeplug_av_cblock_next_hdr;
437
static int hf_homeplug_av_cblock_hdr_chksum;
438
439
static int hf_homeplug_av_cblock;
440
static int hf_homeplug_av_cblock_sdram_size;
441
static int hf_homeplug_av_cblock_sdram_conf;
442
static int hf_homeplug_av_cblock_sdram_tim0;
443
static int hf_homeplug_av_cblock_sdram_tim1;
444
static int hf_homeplug_av_cblock_sdram_cntrl;
445
static int hf_homeplug_av_cblock_sdram_refresh;
446
static int hf_homeplug_av_cblock_mac_clock;
447
448
static int hf_homeplug_av_set_sdram_req;
449
static int hf_homeplug_av_set_sdram_req_chksum;
450
451
static int hf_homeplug_av_set_sdram_cnf;
452
static int hf_homeplug_av_set_sdram_cnf_status;
453
454
static int hf_homeplug_av_host_action_ind;
455
static int hf_homeplug_av_host_action_ind_act;
456
457
static int hf_homeplug_av_host_action_rsp;
458
static int hf_homeplug_av_host_action_rsp_sts;
459
460
static int hf_homeplug_av_op_attr_cookie;
461
static int hf_homeplug_av_op_attr_rep_type;
462
463
static int hf_homeplug_av_op_attr_req;
464
465
static int hf_homeplug_av_op_attr_cnf;
466
static int hf_homeplug_av_op_attr_cnf_status;
467
static int hf_homeplug_av_op_attr_cnf_size;
468
static int hf_homeplug_av_op_attr_cnf_data;
469
470
static int hf_homeplug_av_op_attr_data_hw;
471
static int hf_homeplug_av_op_attr_data_sw;
472
static int hf_homeplug_av_op_attr_data_sw_major;
473
static int hf_homeplug_av_op_attr_data_sw_minor;
474
static int hf_homeplug_av_op_attr_data_sw_sub;
475
static int hf_homeplug_av_op_attr_data_sw_num;
476
static int hf_homeplug_av_op_attr_data_sw_date;
477
static int hf_homeplug_av_op_attr_data_sw_rel;
478
static int hf_homeplug_av_op_attr_data_sw_sdram_type;
479
static int hf_homeplug_av_op_attr_data_sw_linefreq;
480
static int hf_homeplug_av_op_attr_data_sw_zerocross;
481
static int hf_homeplug_av_op_attr_data_sw_sdram_size;
482
static int hf_homeplug_av_op_attr_data_sw_auth_mode;
483
484
static int hf_homeplug_av_enet_phy_req;
485
static int hf_homeplug_av_enet_phy_req_mcontrol;
486
static int hf_homeplug_av_enet_phy_req_addcaps;
487
488
static int hf_homeplug_av_enet_phy_cnf;
489
static int hf_homeplug_av_enet_phy_cnf_status;
490
static int hf_homeplug_av_enet_phy_cnf_speed;
491
static int hf_homeplug_av_enet_phy_cnf_duplex;
492
493
static int hf_homeplug_av_tone_map_tx_req;
494
static int hf_homeplug_av_tone_map_tx_req_mac;
495
static int hf_homeplug_av_tone_map_tx_req_slot;
496
static int hf_homeplug_av_tone_map_tx_req_coupling;
497
498
static int hf_homeplug_av_tone_map_rx_req;
499
static int hf_homeplug_av_tone_map_rx_req_mac;
500
static int hf_homeplug_av_tone_map_rx_req_slot;
501
static int hf_homeplug_av_tone_map_rx_req_coupling;
502
503
static int hf_homeplug_av_tone_map_tx_cnf;
504
static int hf_homeplug_av_tone_map_tx_cnf_status;
505
static int hf_homeplug_av_tone_map_tx_cnf_len;
506
static int hf_homeplug_av_tone_map_tx_cnf_mac;
507
static int hf_homeplug_av_tone_map_tx_cnf_slot;
508
static int hf_homeplug_av_tone_map_tx_cnf_num_tms;
509
static int hf_homeplug_av_tone_map_tx_cnf_num_act;
510
511
static int hf_homeplug_av_tone_map_rx_cnf;
512
static int hf_homeplug_av_tone_map_rx_cnf_status;
513
static int hf_homeplug_av_tone_map_rx_cnf_len;
514
static int hf_homeplug_av_tone_map_rx_cnf_subver;
515
static int hf_homeplug_av_tone_map_rx_cnf_coupling;
516
static int hf_homeplug_av_tone_map_rx_cnf_mac;
517
static int hf_homeplug_av_tone_map_rx_cnf_slot;
518
static int hf_homeplug_av_tone_map_rx_cnf_num_tms;
519
static int hf_homeplug_av_tone_map_rx_cnf_num_act;
520
static int hf_homeplug_av_tone_map_rx_cnf_agc;
521
static int hf_homeplug_av_tone_map_rx_cnf_gil;
522
523
static int hf_homeplug_av_tone_map_carriers;
524
static int hf_homeplug_av_tone_map_carrier;
525
static int hf_homeplug_av_tone_map_carrier_lo;
526
static int hf_homeplug_av_tone_map_carrier_hi;
527
528
static int hf_homeplug_av_cc_assoc_reqtype;
529
static int hf_homeplug_av_cc_assoc_cco_cap;
530
static int hf_homeplug_av_cc_assoc_proxy_net_cap;
531
static int hf_homeplug_av_cc_assoc_result;
532
static int hf_homeplug_av_cc_assoc_nid;
533
static int hf_homeplug_av_cc_assoc_snid;
534
static int hf_homeplug_av_cc_assoc_tei;
535
static int hf_homeplug_av_cc_assoc_lease_time;
536
537
static int hf_homeplug_av_cc_set_tei_map_ind_mode;
538
static int hf_homeplug_av_cc_set_tei_map_ind_num;
539
static int hf_homeplug_av_cc_set_tei_map_ind_tei;
540
static int hf_homeplug_av_cc_set_tei_map_ind_mac;
541
static int hf_homeplug_av_cc_set_tei_map_ind_status;
542
543
static int hf_homeplug_av_cm_unassoc_sta_nid;
544
static int hf_homeplug_av_cm_unassoc_sta_cco_cap;
545
546
/* HPAV/GP fields*/
547
static int hf_homeplug_av_gp_cm_slac_parm_apptype;
548
static int hf_homeplug_av_gp_cm_slac_parm_sectype;
549
static int hf_homeplug_av_gp_cm_slac_parm_runid;
550
static int hf_homeplug_av_gp_cm_slac_parm_cipher_size;
551
static int hf_homeplug_av_gp_cm_slac_parm_cipher;
552
static int hf_homeplug_av_gp_cm_slac_parm_sound_target;
553
static int hf_homeplug_av_gp_cm_slac_parm_sound_count;
554
static int hf_homeplug_av_gp_cm_slac_parm_time_out;
555
static int hf_homeplug_av_gp_cm_slac_parm_resptype;
556
static int hf_homeplug_av_gp_cm_slac_parm_forwarding_sta;
557
558
static int hf_homeplug_av_gp_cm_atten_profile_ind_pev_mac;
559
static int hf_homeplug_av_gp_cm_atten_profile_ind_num_groups;
560
static int hf_homeplug_av_gp_cm_atten_profile_ind_aag;
561
562
static int hf_homeplug_av_gp_cm_atten_char_apptype;
563
static int hf_homeplug_av_gp_cm_atten_char_sectype;
564
static int hf_homeplug_av_gp_cm_atten_char_source_mac;
565
static int hf_homeplug_av_gp_cm_atten_char_runid;
566
static int hf_homeplug_av_gp_cm_atten_char_source_id;
567
static int hf_homeplug_av_gp_cm_atten_char_resp_id;
568
static int hf_homeplug_av_gp_cm_atten_char_numsounds;
569
static int hf_homeplug_av_gp_cm_atten_char_numgroups;
570
static int hf_homeplug_av_gp_cm_atten_char_aag;
571
static int hf_homeplug_av_gp_cm_atten_char_profile;
572
static int hf_homeplug_av_gp_cm_atten_char_cms_data;
573
static int hf_homeplug_av_gp_cm_atten_char_result;
574
575
static int hf_homeplug_av_gp_cm_start_atten_char_time_out;
576
static int hf_homeplug_av_gp_cm_start_atten_char_resptype;
577
static int hf_homeplug_av_gp_cm_start_atten_char_forwarding_sta;
578
static int hf_homeplug_av_gp_cm_start_atten_char_runid;
579
static int hf_homeplug_av_gp_cm_start_atten_char_numsounds;
580
581
static int hf_homeplug_av_gp_cm_mnbc_sound_apptype;
582
static int hf_homeplug_av_gp_cm_mnbc_sound_sectype;
583
static int hf_homeplug_av_gp_cm_mnbc_sound_sender_id;
584
static int hf_homeplug_av_gp_cm_mnbc_sound_countdown;
585
static int hf_homeplug_av_gp_cm_mnbc_sound_runid;
586
static int hf_homeplug_av_gp_cm_mnbc_sound_rsvd;
587
static int hf_homeplug_av_gp_cm_mnbc_sound_rnd;
588
589
static int hf_homeplug_av_gp_cm_validate_signaltype;
590
static int hf_homeplug_av_gp_cm_validate_timer;
591
static int hf_homeplug_av_gp_cm_validate_result;
592
static int hf_homeplug_av_gp_cm_validate_togglenum;
593
594
static int hf_homeplug_av_gp_cm_slac_match_apptype;
595
static int hf_homeplug_av_gp_cm_slac_match_sectype;
596
static int hf_homeplug_av_gp_cm_slac_match_length;
597
static int hf_homeplug_av_gp_cm_slac_match_pev_id;
598
static int hf_homeplug_av_gp_cm_slac_match_pev_mac;
599
static int hf_homeplug_av_gp_cm_slac_match_evse_id;
600
static int hf_homeplug_av_gp_cm_slac_match_evse_mac;
601
static int hf_homeplug_av_gp_cm_slac_match_runid;
602
static int hf_homeplug_av_gp_cm_slac_match_rsvd;
603
static int hf_homeplug_av_gp_cm_slac_match_nid;
604
static int hf_homeplug_av_gp_cm_slac_match_nmk;
605
606
static int hf_homeplug_av_gp_cm_slac_user_data_broadcast_tlv_type;
607
static int hf_homeplug_av_gp_cm_slac_user_data_tlv;
608
static int hf_homeplug_av_gp_cm_slac_user_data_tlv_type;
609
static int hf_homeplug_av_gp_cm_slac_user_data_tlv_length;
610
static int hf_homeplug_av_gp_cm_slac_user_data_tlv_str_bytes;
611
static int hf_homeplug_av_gp_cm_slac_user_data_tlv_oui;
612
static int hf_homeplug_av_gp_cm_slac_user_data_tlv_subtype;
613
static int hf_homeplug_av_gp_cm_slac_user_data_tlv_info_str;
614
/* End of HPAV/GP fields*/
615
616
/* ST/IoTecha fields */
617
static int hf_homeplug_av_st_iotecha_header_rsvd;
618
static int hf_homeplug_av_st_iotecha_header_mmever;
619
static int hf_homeplug_av_st_iotecha_header_mver;
620
621
static int hf_homeplug_av_st_iotecha_auth_nmk;
622
static int hf_homeplug_av_st_iotecha_status_byte;
623
624
static int hf_homeplug_av_st_iotecha_linkstatus_status;
625
static int hf_homeplug_av_st_iotecha_linkstatus_devmode;
626
627
static int hf_homeplug_av_st_iotecha_stp_discover_tlv;
628
static int hf_homeplug_av_st_iotecha_stp_discover_tlv_type;
629
static int hf_homeplug_av_st_iotecha_stp_discover_tlv_length;
630
static int hf_homeplug_av_st_iotecha_stp_discover_tlv_value_bytes;
631
static int hf_homeplug_av_st_iotecha_stp_discover_tlv_value_string;
632
633
static int hf_homeplug_av_st_iotecha_gain_ask;
634
static int hf_homeplug_av_st_iotecha_gain_new;
635
static int hf_homeplug_av_st_iotecha_gain_prev;
636
637
static int hf_homeplug_av_st_iotecha_mac_address;
638
639
static int hf_homeplug_av_st_iotecha_tei_count;
640
static int hf_homeplug_av_st_iotecha_tei;
641
642
static int hf_homeplug_av_st_iotecha_tei_snap_tei;
643
static int hf_homeplug_av_st_iotecha_tei_snap_addr_count;
644
static int hf_homeplug_av_st_iotecha_tei_snap_mac_address_flag;
645
646
static int hf_homeplug_av_st_iotecha_bss_list_count;
647
static int hf_homeplug_av_st_iotecha_bss_entry;
648
static int hf_homeplug_av_st_iotecha_bss_type;
649
static int hf_homeplug_av_st_iotecha_bss_value_bytes;
650
651
static int hf_homeplug_av_st_iotecha_chanqual_req_type;
652
static int hf_homeplug_av_st_iotecha_chanqual_substatus;
653
static int hf_homeplug_av_st_iotecha_chanqual_mac_local;
654
static int hf_homeplug_av_st_iotecha_chanqual_mac_remote;
655
static int hf_homeplug_av_st_iotecha_chanqual_source;
656
static int hf_homeplug_av_st_iotecha_chanqual_response_type;
657
static int hf_homeplug_av_st_iotecha_chanqual_tmi_count;
658
static int hf_homeplug_av_st_iotecha_chanqual_tmi;
659
static int hf_homeplug_av_st_iotecha_chanqual_int;
660
static int hf_homeplug_av_st_iotecha_chanqual_int_count;
661
static int hf_homeplug_av_st_iotecha_chanqual_int_et;
662
static int hf_homeplug_av_st_iotecha_chanqual_int_tmi;
663
static int hf_homeplug_av_st_iotecha_chanqual_tmi_attached;
664
static int hf_homeplug_av_st_iotecha_chanqual_fec_type;
665
static int hf_homeplug_av_st_iotecha_chanqual_cbld;
666
static int hf_homeplug_av_st_iotecha_chanqual_cbld_data_low;
667
static int hf_homeplug_av_st_iotecha_chanqual_cbld_data_high;
668
669
static int hf_homeplug_av_st_iotecha_mfct_crc;
670
static int hf_homeplug_av_st_iotecha_mfct_total_length;
671
static int hf_homeplug_av_st_iotecha_mfct_offset;
672
static int hf_homeplug_av_st_iotecha_mfct_length;
673
static int hf_homeplug_av_st_iotecha_mfct_data;
674
static int hf_homeplug_av_st_iotecha_mfct_timeout;
675
static int hf_homeplug_av_st_iotecha_mfct_request_type;
676
static int hf_homeplug_av_st_iotecha_mfct_reboot;
677
static int hf_homeplug_av_st_iotecha_mfct_item_offset;
678
static int hf_homeplug_av_st_iotecha_mfct_item_total_length;
679
static int hf_homeplug_av_st_iotecha_mfct_name;
680
static int hf_homeplug_av_st_iotecha_mfct_value;
681
static int hf_homeplug_av_st_iotecha_mfct_result;
682
683
static int hf_homeplug_av_st_iotecha_stp_fup_mac_da;
684
static int hf_homeplug_av_st_iotecha_stp_fup_mac_sa;
685
static int hf_homeplug_av_st_iotecha_stp_fup_mtype;
686
687
static int hf_homeplug_av_st_iotecha_cpstate_state;
688
static int hf_homeplug_av_st_iotecha_cpstate_pwm_duty;
689
static int hf_homeplug_av_st_iotecha_cpstate_pwm_freq;
690
static int hf_homeplug_av_st_iotecha_cpstate_voltage;
691
static int hf_homeplug_av_st_iotecha_cpstate_adc_bitmask;
692
static int hf_homeplug_av_st_iotecha_cpstate_adc_voltage_1;
693
static int hf_homeplug_av_st_iotecha_cpstate_adc_voltage_2;
694
static int hf_homeplug_av_st_iotecha_cpstate_adc_voltage_3;
695
696
static int hf_homeplug_av_st_iotecha_user_message_info;
697
static int hf_homeplug_av_st_iotecha_user_message_details;
698
699
static int hf_homeplug_av_st_iotecha_test_type;
700
static int hf_homeplug_av_st_iotecha_num_sound;
701
static int hf_homeplug_av_st_iotecha_data_ind_addr;
702
static int hf_homeplug_av_st_iotecha_agc_lock;
703
static int hf_homeplug_av_st_iotecha_db_agc_val;
704
705
static int hf_homeplug_av_st_iotecha_test_status;
706
static int hf_homeplug_av_st_iotecha_suppress_data;
707
708
// STP_TEST_CHAN_ATTEN_DATA
709
static int hf_homeplug_av_st_iotecha_sound_remain;
710
static int hf_homeplug_av_st_iotecha_ntb_time;
711
static int hf_homeplug_av_st_iotecha_rsvd1;
712
static int hf_homeplug_av_st_iotecha_rsvd2;
713
static int hf_homeplug_av_st_iotecha_num_segments;
714
static int hf_homeplug_av_st_iotecha_segment;
715
static int hf_homeplug_av_st_iotecha_num_chan;
716
static int hf_homeplug_av_st_iotecha_chan_start;
717
718
/* End of ST/IoTecha fields */
719
720
/* Subtrees ett */
721
static int ett_homeplug_av;
722
static int ett_homeplug_av_mmhdr;
723
static int ett_homeplug_av_mmtype;
724
static int ett_homeplug_av_fmi;
725
static int ett_homeplug_av_vendor;
726
static int ett_homeplug_av_public;
727
728
static int ett_homeplug_av_fc;
729
static int ett_homeplug_av_sof;
730
static int ett_homeplug_av_sack;
731
static int ett_homeplug_av_rtscts;
732
static int ett_homeplug_av_sound;
733
static int ett_homeplug_av_rsof;
734
static int ett_homeplug_av_bcn;
735
static int ett_homeplug_av_bcn_payload;
736
static int ett_homeplug_av_cc_disc_list_cnf;
737
static int ett_homeplug_av_cc_sta_info;
738
static int ett_homeplug_av_cc_net_info;
739
static int ett_homeplug_av_cm_enc_pld_ind;
740
static int ett_homeplug_av_cm_enc_pld_rsp;
741
static int ett_homeplug_av_cm_set_key_req;
742
static int ett_homeplug_av_cm_set_key_cnf;
743
static int ett_homeplug_av_cm_get_key_req;
744
static int ett_homeplug_av_cm_get_key_cnf;
745
static int ett_homeplug_av_brg_infos_cnf;
746
static int ett_homeplug_av_cm_nw_infos_cnf;
747
static int ett_homeplug_av_nw_stats_cnf;
748
749
static int ett_homeplug_av_get_sw_cnf;
750
static int ett_homeplug_av_wr_mem_req;
751
static int ett_homeplug_av_wr_mem_cnf;
752
static int ett_homeplug_av_rd_mem_req;
753
static int ett_homeplug_av_st_mac_req;
754
static int ett_homeplug_av_st_mac_cnf;
755
static int ett_homeplug_av_rd_mem_cnf;
756
static int ett_homeplug_av_get_nvm_cnf;
757
static int ett_homeplug_av_rs_dev_cnf;
758
static int ett_homeplug_av_wr_mod_req;
759
static int ett_homeplug_av_wr_mod_cnf;
760
static int ett_homeplug_av_wr_mod_ind;
761
static int ett_homeplug_av_rd_mod_req;
762
static int ett_homeplug_av_rd_mod_cnf;
763
static int ett_homeplug_av_mod_nvm_req;
764
static int ett_homeplug_av_mod_nvm_cnf;
765
static int ett_homeplug_av_wd_rpt_req;
766
static int ett_homeplug_av_wd_rpt_ind;
767
static int ett_homeplug_av_lnk_stats_req;
768
static int ett_homeplug_av_lnk_stats_cnf;
769
static int ett_homeplug_av_lnk_stats_tx;
770
static int ett_homeplug_av_lnk_stats_rx;
771
static int ett_homeplug_av_lnk_stats_rx_inv;
772
static int ett_homeplug_av_sniffer_req;
773
static int ett_homeplug_av_sniffer_cnf;
774
static int ett_homeplug_av_sniffer_ind;
775
static int ett_homeplug_av_sniffer_ind_data;
776
static int ett_homeplug_av_nw_info_cnf;
777
static int ett_homeplug_av_nw_info_sta_info;
778
static int ett_homeplug_av_nw_info_net_info;
779
static int ett_homeplug_av_cp_rpt_req;
780
static int ett_homeplug_av_cp_rpt_ind;
781
static int ett_homeplug_av_fr_lbk_req;
782
static int ett_homeplug_av_fr_lbk_cnf;
783
static int ett_homeplug_av_lbk_stat_cnf;
784
static int ett_homeplug_av_set_key_req;
785
static int ett_homeplug_av_set_key_cnf;
786
static int ett_homeplug_av_mfg_string_cnf;
787
static int ett_homeplug_av_rd_cblock_cnf;
788
static int ett_homeplug_av_cblock_hdr;
789
static int ett_homeplug_av_cblock;
790
static int ett_homeplug_av_set_sdram_req;
791
static int ett_homeplug_av_set_sdram_cnf;
792
static int ett_homeplug_av_host_action_ind;
793
static int ett_homeplug_av_host_action_rsp;
794
static int ett_homeplug_av_op_attr_req;
795
static int ett_homeplug_av_op_attr_cnf;
796
static int ett_homeplug_av_op_attr_data;
797
static int ett_homeplug_av_enet_phy_req;
798
static int ett_homeplug_av_enet_phy_cnf;
799
static int ett_homeplug_av_tone_map_tx_req;
800
static int ett_homeplug_av_tone_map_rx_req;
801
static int ett_homeplug_av_tone_map_tx_cnf;
802
static int ett_homeplug_av_tone_map_rx_cnf;
803
static int ett_homeplug_av_tone_map_carriers;
804
static int ett_homeplug_av_tone_map_carrier;
805
/* HPGP */
806
static int ett_homeplug_av_gp_cm_atten_char_profile;
807
static int ett_homeplug_av_gp_cm_slac_user_data_tlv;
808
809
/* ST/IoTecha specific subtrees */
810
static int ett_homeplug_av_st_iotecha_header;
811
static int ett_homeplug_av_st_iotecha_type_length_value;
812
static int ett_homeplug_av_st_iotecha_chanqual_int;
813
static int ett_homeplug_av_st_iotecha_chanqual_cbld;
814
static int ett_homeplug_av_st_iotecha_bss_entry;
815
/* End of ST/IoTecha specific subtrees */
816
817
/* Saving vendor specific subtree */
818
static proto_tree *ti_vendor;
819
820
13
#define HOMEPLUG_AV_MMHDR_LEN                   3 /* MM version (1) + MM type (2) */
821
822
15
#define HOMEPLUG_AV_PUBLIC_FRAG_COUNT_MASK  0xF0
823
15
#define HOMEPLUG_AV_PUBLIC_FRAG_INDEX_MASK  0x0F
824
825
/* MME Values */
826
/* General MME Types */
827
typedef enum {
828
    /* Station - Central Coordinator*/
829
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_BACKUP_APPOINT_REQ        = 0x0004,
830
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_BACKUP_APPOINT_CNF        = 0x0005,
831
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_INFO_REQ             = 0x0008,
832
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_INFO_CNF             = 0x0009,
833
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_INFO_IND             = 0x000A,
834
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_INFO_RSP             = 0x000B,
835
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_HANDOVER_REQ              = 0x000C,
836
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_HANDOVER_CNF              = 0x000D,
837
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_HANDOVER_INFO_IND         = 0x0012,
838
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_HANDOVER_INFO_RSP         = 0x0013,
839
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_DISCOVER_LIST_REQ         = 0x0014,
840
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_DISCOVER_LIST_CNF         = 0x0015,
841
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_DISCOVER_LIST_IND         = 0x0016,
842
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_NEW_REQ              = 0x0018,
843
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_NEW_CNF              = 0x0019,
844
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_MOD_REQ              = 0x001C,
845
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_MOD_CNF              = 0x001D,
846
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_SQZ_REQ              = 0x0020,
847
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_SQZ_CNF              = 0x0021,
848
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_REL_REQ              = 0x0024,
849
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_REL_IND              = 0x0026,
850
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_DETECTC_REPORT_REQ        = 0x0028,
851
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_DETECTC_REPORT_CNF        = 0x0029,
852
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_WHO_RU_REQ                = 0x002C,
853
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_WHO_RU_CNF                = 0x002D,
854
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_ASSOC_REQ                 = 0x0030,
855
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_ASSOC_CNF                 = 0x0031,
856
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_LEAVE_REQ                 = 0x0034,
857
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_LEAVE_CNF                 = 0x0035,
858
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_LEAVE_IND                 = 0x0036,
859
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_LEAVE_RSP                 = 0x0037,
860
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_SET_TEI_MAP_REQ           = 0x0038,
861
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_SET_TEI_MAP_IND           = 0x003A,
862
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_RELAY_REQ                 = 0x003C,
863
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_RELAY_IND                 = 0x003E,
864
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_BEACON_RELIABILITY_REQ    = 0x0040,
865
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_BEACON_RELIABILITY_CNF    = 0x0041,
866
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_ALLOC_MOVE_REQ            = 0x0044,
867
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_ALLOC_MOVE_CNF            = 0x0045,
868
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_ACCESS_NEW_REQ            = 0x0048,
869
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_ACCESS_NEW_CNF            = 0x0049,
870
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_ACCESS_NEW_IND            = 0x004A,
871
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_ACCESS_NEW_RSP            = 0x004B,
872
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_ACCESS_REL_REQ            = 0x004C,
873
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_ACCESS_REL_CNF            = 0x004D,
874
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_ACCESS_REL_IND            = 0x004E,
875
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_ACCESS_REL_RSP            = 0x004F,
876
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_DCPPC_IND                 = 0x0052,
877
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_DCPPC_RSP                 = 0x0053,
878
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_HP1_DET_REQ               = 0x0054,
879
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_HP1_DET_CNF               = 0x0055,
880
    HOMEPLUG_AV_MMTYPE_GENERAL_CC_BLE_UPDATE_IND            = 0x005A,
881
    /* HPGP Specific*/
882
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_BCAST_REPEAT_IND           = 0x005E,
883
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_BCAST_REPEAT_RSP           = 0x005F,
884
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_MH_LINK_NEW_REQ            = 0x0060,
885
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_MH_LINK_NEW_CNF            = 0x0061,
886
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_ISP_DETECTION_REPORT_IND   = 0x0066,
887
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_ISP_START_RESYNC_REQ       = 0x0068,
888
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_ISP_FINISH_RESYNC_REQ      = 0x006C,
889
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_ISP_DETECTED_RESYNC_IND    = 0x0072,
890
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_ISP_TRANSMIT_RESYNC_REQ    = 0x0074,
891
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_POWERSAVE_REQ              = 0x0078,
892
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_POWERSAVE_CNF              = 0x0079,
893
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_POWERSAVE_EXIT_REQ         = 0x007C,
894
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_POWERSAVE_EXIT_CNF         = 0x007D,
895
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_POWERSAVE_LIST_REQ         = 0x0080,
896
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_POWERSAVE_LIST_CNF         = 0x0081,
897
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_POWERSAVE_STOP_REQ         = 0x0084,
898
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_POWERSAVE_STOP_CNF         = 0x0085,
899
    /* Proxy Coordinator */
900
    HOMEPLUG_AV_MMTYPE_GENERAL_CP_PROXY_APPOINT_REQ         = 0x2000,
901
    HOMEPLUG_AV_MMTYPE_GENERAL_CP_PROXY_APPOINT_CNF         = 0x2001,
902
    HOMEPLUG_AV_MMTYPE_GENERAL_PH_PROXY_APPOINT_IND         = 0x2006,
903
    HOMEPLUG_AV_MMTYPE_GENERAL_CP_PROXY_WAKE_REQ            = 0x2008,
904
    /* CCo - CCo */
905
    HOMEPLUG_AV_MMTYPE_GENERAL_NN_INL_REQ                   = 0x4000,
906
    HOMEPLUG_AV_MMTYPE_GENERAL_NN_INL_CNF                   = 0x4001,
907
    HOMEPLUG_AV_MMTYPE_GENERAL_NN_NEW_NET_REQ               = 0x4004,
908
    HOMEPLUG_AV_MMTYPE_GENERAL_NN_NEW_NET_CNF               = 0x4005,
909
    HOMEPLUG_AV_MMTYPE_GENERAL_NN_NEW_NET_IND               = 0x4006,
910
    HOMEPLUG_AV_MMTYPE_GENERAL_NN_ADD_ALLOC_REQ             = 0x4008,
911
    HOMEPLUG_AV_MMTYPE_GENERAL_NN_ADD_ALLOC_CNF             = 0x4009,
912
    HOMEPLUG_AV_MMTYPE_GENERAL_NN_ADD_ALLOC_IND             = 0x400A,
913
    HOMEPLUG_AV_MMTYPE_GENERAL_NN_REL_ALLOC_REQ             = 0x400C,
914
    HOMEPLUG_AV_MMTYPE_GENERAL_NN_REL_ALLOC_CNF             = 0x400D,
915
    HOMEPLUG_AV_MMTYPE_GENERAL_NN_REL_NET_IND               = 0x4012,
916
    /* Station - Station */
917
    HOMEPLUG_AV_MMTYPE_GENERAL_CM_UNASSOCIATED_STA_IND      = 0x6002,
918
    HOMEPLUG_AV_MMTYPE_GENERAL_CM_ENCRYPTED_PAYLOAD_IND     = 0x6006,
919
    HOMEPLUG_AV_MMTYPE_GENERAL_CM_ENCRYPTED_PAYLOAD_RSP     = 0x6007,
920
    HOMEPLUG_AV_MMTYPE_GENERAL_CM_SET_KEY_REQ               = 0x6008,
921
    HOMEPLUG_AV_MMTYPE_GENERAL_CM_SET_KEY_CNF               = 0x6009,
922
    HOMEPLUG_AV_MMTYPE_GENERAL_CM_GET_KEY_REQ               = 0x600C,
923
    HOMEPLUG_AV_MMTYPE_GENERAL_CM_GET_KEY_CNF               = 0x600D,
924
    HOMEPLUG_AV_MMTYPE_GENERAL_CM_SC_JOIN_REQ               = 0x6010,
925
    HOMEPLUG_AV_MMTYPE_GENERAL_CM_SC_JOIN_CNF               = 0x6011,
926
    HOMEPLUG_AV_MMTYPE_GENERAL_CM_SC_CHAN_EST_IND           = 0x6016,
927
    HOMEPLUG_AV_MMTYPE_GENERAL_CM_TM_UPDATE_IND             = 0x601A,
928
    HOMEPLUG_AV_MMTYPE_GENERAL_CM_AMP_MAP_REQ               = 0x601C,
929
    HOMEPLUG_AV_MMTYPE_GENERAL_CM_AMP_MAP_CNF               = 0x601D,
930
    HOMEPLUG_AV_MMTYPE_GENERAL_CM_BRG_INFO_REQ              = 0x6020,
931
    HOMEPLUG_AV_MMTYPE_GENERAL_CM_BRG_INFO_CNF              = 0x6021,
932
    HOMEPLUG_AV_MMTYPE_GENERAL_CM_CONN_NEW_REQ              = 0x6024,
933
    HOMEPLUG_AV_MMTYPE_GENERAL_CM_CONN_NEW_CNF              = 0x6025,
934
    HOMEPLUG_AV_MMTYPE_GENERAL_CM_CONN_REL_IND              = 0x602A,
935
    HOMEPLUG_AV_MMTYPE_GENERAL_CM_CONN_REL_RSP              = 0x602B,
936
    HOMEPLUG_AV_MMTYPE_GENERAL_CM_CONN_MOD_REQ              = 0x602C,
937
    HOMEPLUG_AV_MMTYPE_GENERAL_CM_CONN_MOD_CNF              = 0x602D,
938
    HOMEPLUG_AV_MMTYPE_GENERAL_CM_CONN_INFO_REQ             = 0x6030,
939
    HOMEPLUG_AV_MMTYPE_GENERAL_CM_CONN_INFO_CNF             = 0x6031,
940
    HOMEPLUG_AV_MMTYPE_GENERAL_CM_STA_CAP_REQ               = 0x6034,
941
    HOMEPLUG_AV_MMTYPE_GENERAL_CM_STA_CAP_CNF               = 0x6035,
942
    HOMEPLUG_AV_MMTYPE_GENERAL_CM_NW_INFO_REQ               = 0x6038,
943
    HOMEPLUG_AV_MMTYPE_GENERAL_CM_NW_INFO_CNF               = 0x6039,
944
    HOMEPLUG_AV_MMTYPE_GENERAL_CM_GET_BEACON_REQ            = 0x603C,
945
    HOMEPLUG_AV_MMTYPE_GENERAL_CM_GET_BEACON_CNF            = 0x603D,
946
    HOMEPLUG_AV_MMTYPE_GENERAL_CM_HFID_REQ                  = 0x6040,
947
    HOMEPLUG_AV_MMTYPE_GENERAL_CM_HFID_CNF                  = 0x6041,
948
    HOMEPLUG_AV_MMTYPE_GENERAL_CM_MME_ERROR_IND             = 0x6046,
949
    HOMEPLUG_AV_MMTYPE_GENERAL_CM_NW_STATS_REQ              = 0x6048,
950
    HOMEPLUG_AV_MMTYPE_GENERAL_CM_NW_STATS_CNF              = 0x6049,
951
    HOMEPLUG_AV_MMTYPE_GENERAL_CM_LINK_STATS_REQ            = 0x604C,
952
    HOMEPLUG_AV_MMTYPE_GENERAL_CM_LINK_STATS_CNF            = 0x604D,
953
    /* HPGP Specific*/
954
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_ROUTE_INFO_REQ             = 0x6050,
955
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_ROUTE_INFO_CNF             = 0x6051,
956
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_ROUTE_INFO_IND             = 0x6052,
957
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_UNREACHABLE_IND            = 0x6056,
958
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_MH_CONN_NEW_REQ            = 0x6058,
959
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_MH_CONN_NEW_CNF            = 0x6059,
960
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_EXTENDED_TONEMASK_REQ      = 0x605C,
961
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_EXTENDED_TONEMASK_CNF      = 0x605D,
962
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_STA_IDENTIFY_REQ           = 0x6060,
963
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_STA_IDENTIFY_CNF           = 0x6061,
964
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_STA_IDENTIFY_IND           = 0x6062,
965
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_STA_IDENTIFY_RSP           = 0x6063,
966
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_SLAC_PARM_REQ              = 0x6064,
967
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_SLAC_PARM_CNF              = 0x6065,
968
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_START_ATTEN_CHAR_IND       = 0x606A,
969
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_ATTEN_CHAR_IND             = 0x606E,
970
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_ATTEN_CHAR_RSP             = 0x606F,
971
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_PKCS_CERT_REQ              = 0x6070,
972
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_PKCS_CERT_CNF              = 0x6071,
973
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_PKCS_CERT_IND              = 0x6072,
974
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_PKCS_CERT_RSP              = 0x6073,
975
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_MNBC_SOUND_IND             = 0x6076,
976
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_VALIDATE_REQ               = 0x6078,
977
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_VALIDATE_CNF               = 0x6079,
978
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_SLAC_MATCH_REQ             = 0x607C,
979
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_SLAC_MATCH_CNF             = 0x607D,
980
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_SLAC_USER_DATA_REQ         = 0x6080,
981
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_SLAC_USER_DATA_CNF         = 0x6081,
982
    HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_ATTEN_PROFILE_IND          = 0x6086,
983
} homeplug_av_mmetypes_general_type;
984
985
/* QCA MME Types */
986
typedef enum {
987
    HOMEPLUG_AV_MMTYPE_QUALCOMM_GET_SW_REQ        = 0xA000,
988
    HOMEPLUG_AV_MMTYPE_QUALCOMM_GET_SW_CNF        = 0xA001,
989
    HOMEPLUG_AV_MMTYPE_QUALCOMM_WR_MEM_REQ        = 0xA004,
990
    HOMEPLUG_AV_MMTYPE_QUALCOMM_WR_MEM_CNF        = 0xA005,
991
    HOMEPLUG_AV_MMTYPE_QUALCOMM_RD_MEM_REQ        = 0xA008,
992
    HOMEPLUG_AV_MMTYPE_QUALCOMM_RD_MEM_CNF        = 0xA009,
993
    HOMEPLUG_AV_MMTYPE_QUALCOMM_ST_MAC_REQ        = 0xA00C,
994
    HOMEPLUG_AV_MMTYPE_QUALCOMM_ST_MAC_CNF        = 0xA00D,
995
    HOMEPLUG_AV_MMTYPE_QUALCOMM_GET_NVM_REQ       = 0xA010,
996
    HOMEPLUG_AV_MMTYPE_QUALCOMM_GET_NVM_CNF       = 0xA011,
997
    HOMEPLUG_AV_MMTYPE_QUALCOMM_RS_DEV_REQ        = 0xA01C,
998
    HOMEPLUG_AV_MMTYPE_QUALCOMM_RS_DEV_CNF        = 0xA01D,
999
    HOMEPLUG_AV_MMTYPE_QUALCOMM_WR_MOD_REQ        = 0xA020,
1000
    HOMEPLUG_AV_MMTYPE_QUALCOMM_WR_MOD_CNF        = 0xA021,
1001
    HOMEPLUG_AV_MMTYPE_QUALCOMM_WR_MOD_IND        = 0xA022,
1002
    HOMEPLUG_AV_MMTYPE_QUALCOMM_RD_MOD_REQ        = 0xA024,
1003
    HOMEPLUG_AV_MMTYPE_QUALCOMM_RD_MOD_CNF        = 0xA025,
1004
    HOMEPLUG_AV_MMTYPE_QUALCOMM_NVM_MOD_REQ       = 0xA028,
1005
    HOMEPLUG_AV_MMTYPE_QUALCOMM_NVM_MOD_CNF       = 0xA029,
1006
    HOMEPLUG_AV_MMTYPE_QUALCOMM_WD_RPT_REQ        = 0xA02C,
1007
    HOMEPLUG_AV_MMTYPE_QUALCOMM_WD_RPT_IND        = 0xA02E,
1008
    HOMEPLUG_AV_MMTYPE_QUALCOMM_LNK_STATS_REQ     = 0xA030,
1009
    HOMEPLUG_AV_MMTYPE_QUALCOMM_LNK_STATS_CNF     = 0xA031,
1010
    HOMEPLUG_AV_MMTYPE_QUALCOMM_SNIFFER_REQ       = 0xA034,
1011
    HOMEPLUG_AV_MMTYPE_QUALCOMM_SNIFFER_CNF       = 0xA035,
1012
    HOMEPLUG_AV_MMTYPE_QUALCOMM_SNIFFER_IND       = 0xA036,
1013
    HOMEPLUG_AV_MMTYPE_QUALCOMM_NW_INFO_REQ       = 0xA038,
1014
    HOMEPLUG_AV_MMTYPE_QUALCOMM_NW_INFO_CNF       = 0xA039,
1015
    HOMEPLUG_AV_MMTYPE_QUALCOMM_CP_RPT_REQ        = 0xA040,
1016
    HOMEPLUG_AV_MMTYPE_QUALCOMM_CP_RPT_IND        = 0xA042,
1017
    HOMEPLUG_AV_MMTYPE_QUALCOMM_FR_LBK_REQ        = 0xA048,
1018
    HOMEPLUG_AV_MMTYPE_QUALCOMM_FR_LBK_CNF        = 0xA049,
1019
    HOMEPLUG_AV_MMTYPE_QUALCOMM_LBK_STAT_REQ      = 0xA04C,
1020
    HOMEPLUG_AV_MMTYPE_QUALCOMM_LBK_STAT_CNF      = 0xA04D,
1021
    HOMEPLUG_AV_MMTYPE_QUALCOMM_SET_KEY_REQ       = 0xA050,
1022
    HOMEPLUG_AV_MMTYPE_QUALCOMM_SET_KEY_CNF       = 0xA051,
1023
    HOMEPLUG_AV_MMTYPE_QUALCOMM_MFG_STRING_REQ    = 0xA054,
1024
    HOMEPLUG_AV_MMTYPE_QUALCOMM_MFG_STRING_CNF    = 0xA055,
1025
    HOMEPLUG_AV_MMTYPE_QUALCOMM_RD_CBLOCK_REQ     = 0xA058,
1026
    HOMEPLUG_AV_MMTYPE_QUALCOMM_RD_CBLOCK_CNF     = 0xA059,
1027
    HOMEPLUG_AV_MMTYPE_QUALCOMM_SET_SDRAM_REQ     = 0xA05C,
1028
    HOMEPLUG_AV_MMTYPE_QUALCOMM_SET_SDRAM_CNF     = 0xA05D,
1029
    HOMEPLUG_AV_MMTYPE_QUALCOMM_HOST_ACTION_IND   = 0xA062,
1030
    HOMEPLUG_AV_MMTYPE_QUALCOMM_HOST_ACTION_RSP   = 0xA063,
1031
    HOMEPLUG_AV_MMTYPE_QUALCOMM_OP_ATTR_REQ       = 0xA068,
1032
    HOMEPLUG_AV_MMTYPE_QUALCOMM_OP_ATTR_CNF       = 0xA069,
1033
    HOMEPLUG_AV_MMTYPE_QUALCOMM_GET_ENET_PHY_REQ  = 0xA06C,
1034
    HOMEPLUG_AV_MMTYPE_QUALCOMM_GET_ENET_PHY_CNF  = 0xA06D,
1035
    HOMEPLUG_AV_MMTYPE_QUALCOMM_TONE_MAP_TX_REQ   = 0xA070,
1036
    HOMEPLUG_AV_MMTYPE_QUALCOMM_TONE_MAP_TX_CNF   = 0xA071,
1037
    HOMEPLUG_AV_MMTYPE_QUALCOMM_TONE_MAP_RX_REQ   = 0xA090,
1038
    HOMEPLUG_AV_MMTYPE_QUALCOMM_TONE_MAP_RX_CNF   = 0xA091,
1039
    HOMEPLUG_AV_MMTYPE_QUALCOMM_LINK_STATUS_REQ   = 0xA0B8,
1040
    HOMEPLUG_AV_MMTYPE_QUALCOMM_LINK_STATUS_CNF   = 0xA0B9,
1041
} homeplug_av_mmetypes_qualcomm_type;
1042
1043
/* ST/IoTecha MME Types */
1044
typedef enum {
1045
    HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_AUTH_SET_NMK_REQ             = 0x8000,
1046
    HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_AUTH_SET_NMK_CNF             = 0x8001,
1047
    HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_LINK_STATUS_REQ              = 0x8004,
1048
    HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_LINK_STATUS_CNF              = 0x8005,
1049
    HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_LINK_STATUS_IND              = 0x8006,
1050
    HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_DISCOVER_LOCAL_REQ           = 0x8008,
1051
    HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_DISCOVER_LOCAL_CNF           = 0x8009,
1052
    HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_SET_MAXGAIN_REQ              = 0x800C,
1053
    HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_SET_MAXGAIN_CNF              = 0x800D,
1054
    HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_DISCOVER_REQ                 = 0xA000,
1055
    HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_DISCOVER_CNF                 = 0xA001,
1056
    HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_GET_TEI_LIST_REQ             = 0xA00C,
1057
    HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_GET_TEI_LIST_CNF             = 0xA00D,
1058
    HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_GET_TEI_SNAPSHOT_REQ         = 0xA010,
1059
    HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_GET_TEI_SNAPSHOT_CNF         = 0xA011,
1060
    HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_GET_BSS_LIST_REQ             = 0xA014,
1061
    HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_GET_BSS_LIST_CNF             = 0xA015,
1062
    HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_CHANQUAL_REPORT_REQ          = 0xA018,
1063
    HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_CHANQUAL_REPORT_CNF          = 0xA019,
1064
    HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_CHANQUAL_REPORT_IND          = 0xA01A,
1065
    HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_TEST_CHAN_ATTEN_START_RX_REQ = 0xA100,
1066
    HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_TEST_CHAN_ATTEN_START_RX_CNF = 0xA101,
1067
    HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_TEST_CHAN_ATTEN_DATA_IND     = 0xA106,
1068
    HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_TEST_CHAN_ATTEN_START_TX_REQ = 0xA108,
1069
    HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_TEST_CHAN_ATTEN_START_TX_CNF = 0xA109,
1070
    HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_TEST_SOUND_QUIET_IND         = 0xA10E,
1071
    HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_UPDATE_STAGE_REQ        = 0xA200,
1072
    HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_UPDATE_STAGE_CNF        = 0xA201,
1073
    HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_UPDATE_FINISH_REQ       = 0xA204,
1074
    HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_UPDATE_FINISH_CNF       = 0xA205,
1075
    HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_GET_ITEM_REQ            = 0xA208,
1076
    HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_GET_ITEM_CNF            = 0xA209,
1077
    HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_GET_KEYLIST_REQ         = 0xA20C,
1078
    HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_GET_KEYLIST_CNF         = 0xA20D,
1079
    HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_FUP_REQ                      = 0xA210,
1080
    HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_RESERVED_REQ                 = 0xA214,
1081
    HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_CPSTATE_IND                  = 0xA22E,
1082
    HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_USER_MESSAGE_IND             = 0xA232,
1083
} homeplug_av_mmetypes_st_iotecha_type;
1084
1085
/* Vendors OUI */
1086
6
#define HOMEPLUG_AV_OUI_NONE               0
1087
0
#define HOMEPLUG_AV_OUI_QCA                0x00B052
1088
0
#define HOMEPLUG_AV_OUI_ST_IOTECHA         0x0080E1
1089
#define HOMEPLUG_AV_OUI_DSPACE             0x644D70
1090
1091
static const value_string homeplug_av_vendors_oui_vals[] = {
1092
    { HOMEPLUG_AV_OUI_QCA,              "Qualcomm Atheros" },
1093
    { HOMEPLUG_AV_OUI_ST_IOTECHA,       "ST/IoTecha" },
1094
    { HOMEPLUG_AV_OUI_DSPACE,           "dSPACE GmbH" },
1095
    { HOMEPLUG_AV_OUI_VERTEXCOM,        "VertexCom" },
1096
    { 0, NULL }
1097
};
1098
1099
/* Packet names */
1100
/* Public MMEs */
1101
static const value_string homeplug_av_mmtype_general_vals[] = {
1102
    /* Station - Central Coordinator*/
1103
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_BACKUP_APPOINT_REQ             , "CC_BACKUP_APPOINT.REQ" },
1104
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_BACKUP_APPOINT_CNF             , "CC_BACKUP_APPOINT.CNF" },
1105
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_INFO_REQ                  , "CC_LINK_INFO.REQ" },
1106
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_INFO_CNF                  , "CC_LINK_INFO.CNF" },
1107
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_INFO_IND                  , "CC_LINK_INFO.IND" },
1108
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_INFO_RSP                  , "CC_LINK_INFO.RSP" },
1109
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_HANDOVER_REQ                   , "CC_HANDOVER.REQ" },
1110
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_HANDOVER_CNF                   , "CC_HANDOVER.CNF" },
1111
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_HANDOVER_INFO_IND              , "CC_HANDOVER_INFO.IND" },
1112
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_HANDOVER_INFO_RSP              , "CC_HANDOVER_INFO.RSP" },
1113
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_DISCOVER_LIST_REQ              , "CC_DISCOVER_LIST.REQ (Central Coordination Discovery List Request)" },
1114
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_DISCOVER_LIST_CNF              , "CC_DISCOVER_LIST.CNF (Central Coordination Discovery List Confirmation)" },
1115
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_DISCOVER_LIST_IND              , "CC_DISCOVER_LIST.IND" },
1116
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_NEW_REQ                   , "CC_LINK_NEW.REQ" },
1117
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_NEW_CNF                   , "CC_LINK_NEW.CNF" },
1118
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_MOD_REQ                   , "CC_LINK_MOD.REQ" },
1119
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_MOD_CNF                   , "CC_LINK_MOD.CNF" },
1120
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_SQZ_REQ                   , "CC_LINK_SQZ.REQ" },
1121
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_SQZ_CNF                   , "CC_LINK_SQZ.CNF" },
1122
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_REL_REQ                   , "CC_LINK_REL.REQ" },
1123
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_LINK_REL_IND                   , "CC_LINK_REL.IND" },
1124
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_DETECTC_REPORT_REQ             , "CC_DETECTC_REPORT.REQ" },
1125
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_DETECTC_REPORT_CNF             , "CC_DETECTC_REPORT.CNF" },
1126
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_WHO_RU_REQ                     , "CC_WHO_RU.REQ" },
1127
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_WHO_RU_CNF                     , "CC_WHO_RU.CNF" },
1128
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_ASSOC_REQ                      , "CC_ASSOC.REQ" },
1129
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_ASSOC_CNF                      , "CC_ASSOC.CNF" },
1130
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_LEAVE_REQ                      , "CC_LEAVE.REQ" },
1131
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_LEAVE_CNF                      , "CC_LEAVE.CNF" },
1132
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_LEAVE_IND                      , "CC_LEAVE.IND" },
1133
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_LEAVE_RSP                      , "CC_LEAVE.RSP" },
1134
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_SET_TEI_MAP_REQ                , "CC_SET_TEI_MAP.REQ" },
1135
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_SET_TEI_MAP_IND                , "CC_SET_TEI_MAP.IND" },
1136
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_RELAY_REQ                      , "CC_RELAY.REQ" },
1137
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_RELAY_IND                      , "CC_RELAY.IND" },
1138
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_BEACON_RELIABILITY_REQ         , "CC_BEACON_RELIABILITY.REQ" },
1139
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_BEACON_RELIABILITY_CNF         , "CC_BEACON_RELIABILITY.CNF" },
1140
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_ALLOC_MOVE_REQ                 , "CC_ALLOC_MOVE.REQ" },
1141
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_ALLOC_MOVE_CNF                 , "CC_ALLOC_MOVE.CNF" },
1142
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_ACCESS_NEW_REQ                 , "CC_ACCESS_NEW.REQ" },
1143
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_ACCESS_NEW_CNF                 , "CC_ACCESS_NEW.CNF" },
1144
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_ACCESS_NEW_IND                 , "CC_ACCESS_NEW.IND" },
1145
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_ACCESS_NEW_RSP                 , "CC_ACCESS_NEW.RSP" },
1146
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_ACCESS_REL_REQ                 , "CC_ACCESS_REL.REQ" },
1147
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_ACCESS_REL_CNF                 , "CC_ACCESS_REL.CNF" },
1148
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_ACCESS_REL_IND                 , "CC_ACCESS_REL.IND" },
1149
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_ACCESS_REL_RSP                 , "CC_ACCESS_REL.RSP" },
1150
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_DCPPC_IND                      , "CC_DCPPC.IND" },
1151
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_DCPPC_RSP                      , "CC_DCPPC.RSP" },
1152
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_HP1_DET_REQ                    , "CC_HP1_DET.REQ" },
1153
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_HP1_DET_CNF                    , "CC_HP1_DET.CNF" },
1154
    { HOMEPLUG_AV_MMTYPE_GENERAL_CC_BLE_UPDATE_IND                 , "CC_BLE_UPDATE.IND" },
1155
    /* HPGP Specific*/
1156
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_BCAST_REPEAT_IND            , "CC_BCAST_REPEAT.IND" },
1157
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_BCAST_REPEAT_RSP            , "CC_BCAST_REPEAT.RSP" },
1158
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_MH_LINK_NEW_REQ             , "CC_MH_LINK_NEW.REQ" },
1159
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_MH_LINK_NEW_CNF             , "CC_MH_LINK_NEW.CNF" },
1160
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_ISP_DETECTION_REPORT_IND    , "CC_ISP_DETECTION_REPORT.IND" },
1161
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_ISP_START_RESYNC_REQ        , "CC_ISP_START_RESYNC.REQ" },
1162
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_ISP_FINISH_RESYNC_REQ       , "CC_ISP_FINISH_RESYNC.REQ" },
1163
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_ISP_DETECTED_RESYNC_IND     , "CC_ISP_DETECTED_RESYNC.IND" },
1164
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_ISP_TRANSMIT_RESYNC_REQ     , "CC_ISP_TRANSMIT_RESYNC.REQ" },
1165
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_POWERSAVE_REQ               , "CC_POWERSAVE.REQ" },
1166
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_POWERSAVE_CNF               , "CC_POWERSAVE.CNF" },
1167
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_POWERSAVE_EXIT_REQ          , "CC_POWERSAVE_EXIT.REQ" },
1168
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_POWERSAVE_EXIT_CNF          , "CC_POWERSAVE_EXIT.CNF" },
1169
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_POWERSAVE_LIST_REQ          , "CC_POWERSAVE_LIST.REQ" },
1170
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_POWERSAVE_LIST_CNF          , "CC_POWERSAVE_LIST.CNF" },
1171
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_POWERSAVE_STOP_REQ          , "CC_POWERSAVE_STOP.REQ" },
1172
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CC_POWERSAVE_STOP_CNF          , "CC_POWERSAVE_STOP.CNF" },
1173
    /* Proxy Coordinator */
1174
    { HOMEPLUG_AV_MMTYPE_GENERAL_CP_PROXY_APPOINT_REQ              , "CP_PROXY_APPOINT.REQ" },
1175
    { HOMEPLUG_AV_MMTYPE_GENERAL_CP_PROXY_APPOINT_CNF              , "CP_PROXY_APPOINT.CNF" },
1176
    { HOMEPLUG_AV_MMTYPE_GENERAL_PH_PROXY_APPOINT_IND              , "PH_PROXY_APPOINT.IND" },
1177
    { HOMEPLUG_AV_MMTYPE_GENERAL_CP_PROXY_WAKE_REQ                 , "CP_PROXY_WAKE.REQ" },
1178
    /* CCo - CCo */
1179
    { HOMEPLUG_AV_MMTYPE_GENERAL_NN_INL_REQ                        , "NN_INL.REQ" },
1180
    { HOMEPLUG_AV_MMTYPE_GENERAL_NN_INL_CNF                        , "NN_INL.CNF" },
1181
    { HOMEPLUG_AV_MMTYPE_GENERAL_NN_NEW_NET_REQ                    , "NN_NEW_NET.REQ" },
1182
    { HOMEPLUG_AV_MMTYPE_GENERAL_NN_NEW_NET_CNF                    , "NN_NEW_NET.CNF" },
1183
    { HOMEPLUG_AV_MMTYPE_GENERAL_NN_NEW_NET_IND                    , "NN_NEW_NET.IND" },
1184
    { HOMEPLUG_AV_MMTYPE_GENERAL_NN_ADD_ALLOC_REQ                  , "NN_ADD_ALLOC.REQ" },
1185
    { HOMEPLUG_AV_MMTYPE_GENERAL_NN_ADD_ALLOC_CNF                  , "NN_ADD_ALLOC.CNF" },
1186
    { HOMEPLUG_AV_MMTYPE_GENERAL_NN_ADD_ALLOC_IND                  , "NN_ADD_ALLOC.IND" },
1187
    { HOMEPLUG_AV_MMTYPE_GENERAL_NN_REL_ALLOC_REQ                  , "NN_REL_ALLOC.REQ" },
1188
    { HOMEPLUG_AV_MMTYPE_GENERAL_NN_REL_ALLOC_CNF                  , "NN_REL_ALLOC.CNF" },
1189
    { HOMEPLUG_AV_MMTYPE_GENERAL_NN_REL_NET_IND                    , "NN_REL_NET.IND" },
1190
    /* Station - Station */
1191
    { HOMEPLUG_AV_MMTYPE_GENERAL_CM_UNASSOCIATED_STA_IND           , "CM_UNASSOCIATED_STA.IND" },
1192
    { HOMEPLUG_AV_MMTYPE_GENERAL_CM_ENCRYPTED_PAYLOAD_IND          , "CM_ENCRYPTED_PAYLOAD.IND (Encrypted Payload Indicate)" },
1193
    { HOMEPLUG_AV_MMTYPE_GENERAL_CM_ENCRYPTED_PAYLOAD_RSP          , "CM_ENCRYPTED_PAYLOAD.RSP (Encrypted Payload Response)" },
1194
    { HOMEPLUG_AV_MMTYPE_GENERAL_CM_SET_KEY_REQ                    , "CM_SET_KEY.REQ (Set Key Request)" },
1195
    { HOMEPLUG_AV_MMTYPE_GENERAL_CM_SET_KEY_CNF                    , "CM_SET_KEY.CNF (Set Key Confirmation)" },
1196
    { HOMEPLUG_AV_MMTYPE_GENERAL_CM_GET_KEY_REQ                    , "CM_GET_KEY.REQ (Get Key Request)" },
1197
    { HOMEPLUG_AV_MMTYPE_GENERAL_CM_GET_KEY_CNF                    , "CM_GET_KEY.CNF (Get Key Confirmation)" },
1198
    { HOMEPLUG_AV_MMTYPE_GENERAL_CM_SC_JOIN_REQ                    , "CM_SC_JOIN.REQ" },
1199
    { HOMEPLUG_AV_MMTYPE_GENERAL_CM_SC_JOIN_CNF                    , "CM_SC_JOIN.CNF" },
1200
    { HOMEPLUG_AV_MMTYPE_GENERAL_CM_SC_CHAN_EST_IND                , "CM_SC_CHAN_EST.IND" },
1201
    { HOMEPLUG_AV_MMTYPE_GENERAL_CM_TM_UPDATE_IND                  , "CM_TM_UPDATE.IND" },
1202
    { HOMEPLUG_AV_MMTYPE_GENERAL_CM_AMP_MAP_REQ                    , "CM_AMP_MAP.REQ" },
1203
    { HOMEPLUG_AV_MMTYPE_GENERAL_CM_AMP_MAP_CNF                    , "CM_AMP_MAP.CNF" },
1204
    { HOMEPLUG_AV_MMTYPE_GENERAL_CM_BRG_INFO_REQ                   , "CM_BRG_INFO.REQ (Get Bridge Informations Request)" },
1205
    { HOMEPLUG_AV_MMTYPE_GENERAL_CM_BRG_INFO_CNF                   , "CM_BRG_INFO.CNF (Get Bridge Informations Confirmation)" },
1206
    { HOMEPLUG_AV_MMTYPE_GENERAL_CM_CONN_NEW_REQ                   , "CM_CONN_NEW.REQ" },
1207
    { HOMEPLUG_AV_MMTYPE_GENERAL_CM_CONN_NEW_CNF                   , "CM_CONN_NEW.CNF" },
1208
    { HOMEPLUG_AV_MMTYPE_GENERAL_CM_CONN_REL_IND                   , "CM_CONN_REL.IND" },
1209
    { HOMEPLUG_AV_MMTYPE_GENERAL_CM_CONN_REL_RSP                   , "CM_CONN_REL.RSP" },
1210
    { HOMEPLUG_AV_MMTYPE_GENERAL_CM_CONN_MOD_REQ                   , "CM_CONN_MOD.REQ" },
1211
    { HOMEPLUG_AV_MMTYPE_GENERAL_CM_CONN_MOD_CNF                   , "CM_CONN_MOD.CNF" },
1212
    { HOMEPLUG_AV_MMTYPE_GENERAL_CM_CONN_INFO_REQ                  , "CM_CONN_INFO.REQ" },
1213
    { HOMEPLUG_AV_MMTYPE_GENERAL_CM_CONN_INFO_CNF                  , "CM_CONN_INFO.CNF" },
1214
    { HOMEPLUG_AV_MMTYPE_GENERAL_CM_STA_CAP_REQ                    , "CM_STA_CAP.REQ" },
1215
    { HOMEPLUG_AV_MMTYPE_GENERAL_CM_STA_CAP_CNF                    , "CM_STA_CAP.CNF" },
1216
    { HOMEPLUG_AV_MMTYPE_GENERAL_CM_NW_INFO_REQ                    , "CM_NW_INFO.REQ (Get Network Informations Request)" },
1217
    { HOMEPLUG_AV_MMTYPE_GENERAL_CM_NW_INFO_CNF                    , "CM_NW_INFO.CNF (Get Network Informations Confirmation)" },
1218
    { HOMEPLUG_AV_MMTYPE_GENERAL_CM_GET_BEACON_REQ                 , "CM_GET_BEACON.REQ" },
1219
    { HOMEPLUG_AV_MMTYPE_GENERAL_CM_GET_BEACON_CNF                 , "CM_GET_BEACON.CNF" },
1220
    { HOMEPLUG_AV_MMTYPE_GENERAL_CM_HFID_REQ                       , "CM_HFID.REQ" },
1221
    { HOMEPLUG_AV_MMTYPE_GENERAL_CM_HFID_CNF                       , "CM_HFID.CNF" },
1222
    { HOMEPLUG_AV_MMTYPE_GENERAL_CM_MME_ERROR_IND                  , "CM_MME_ERROR.IND" },
1223
    { HOMEPLUG_AV_MMTYPE_GENERAL_CM_NW_STATS_REQ                   , "CM_NW_STATS.REQ (Get Network Statistics Request)" },
1224
    { HOMEPLUG_AV_MMTYPE_GENERAL_CM_NW_STATS_CNF                   , "CM_NW_STATS.CNF (Get Network Statistics Confirmation)" },
1225
    { HOMEPLUG_AV_MMTYPE_GENERAL_CM_LINK_STATS_REQ                 , "CM_LINK_STATS.REQ" },
1226
    { HOMEPLUG_AV_MMTYPE_GENERAL_CM_LINK_STATS_CNF                 , "CM_LINK_STATS.CNF" },
1227
    /* HPGP Specific*/
1228
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_ROUTE_INFO_REQ              , "CM_ROUTE_INFO.REQ" },
1229
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_ROUTE_INFO_CNF              , "CM_ROUTE_INFO.CNF" },
1230
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_ROUTE_INFO_IND              , "CM_ROUTE_INFO.IND" },
1231
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_UNREACHABLE_IND             , "CM_UNREACHABLE.IND" },
1232
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_MH_CONN_NEW_REQ             , "CM_MH_CONN_NEW.REQ" },
1233
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_MH_CONN_NEW_CNF             , "CM_MH_CONN_NEW.CNF" },
1234
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_EXTENDED_TONEMASK_REQ       , "CM_EXTENDED_TONEMASK.REQ" },
1235
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_EXTENDED_TONEMASK_CNF       , "CM_EXTENDED_TONEMASK.CNF" },
1236
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_STA_IDENTIFY_REQ            , "CM_STA_IDENTIFY.REQ" },
1237
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_STA_IDENTIFY_CNF            , "CM_STA_IDENTIFY_CNF" },
1238
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_STA_IDENTIFY_IND            , "CM_STA_IDENTIFY.IND" },
1239
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_STA_IDENTIFY_RSP            , "CM_STA_IDENTIFY.RSP" },
1240
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_SLAC_PARM_REQ               , "CM_SLAC_PARM.REQ" },
1241
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_SLAC_PARM_CNF               , "CM_SLAC_PARM.CNF" },
1242
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_START_ATTEN_CHAR_IND        , "CM_START_ATTEN_CHAR.IND" },
1243
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_ATTEN_CHAR_IND              , "CM_ATTEN_CHAR.IND" },
1244
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_ATTEN_CHAR_RSP              , "CM_ATTEN_CHAR.RSP" },
1245
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_PKCS_CERT_REQ               , "CM_PKCS_CERT.REQ" },
1246
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_PKCS_CERT_CNF               , "CM_PKCS_CERT.CNF" },
1247
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_PKCS_CERT_IND               , "CM_PKCS_CERT.IND" },
1248
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_PKCS_CERT_RSP               , "CM_PKCS_CERT.RSP" },
1249
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_MNBC_SOUND_IND              , "CM_MNBC_SOUND.IND" },
1250
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_VALIDATE_REQ                , "CM_VALIDATE.REQ" },
1251
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_VALIDATE_CNF                , "CM_VALIDATE.CNF" },
1252
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_SLAC_MATCH_REQ              , "CM_SLAC_MATCH.REQ" },
1253
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_SLAC_MATCH_CNF              , "CM_SLAC_MATCH.CNF" },
1254
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_SLAC_USER_DATA_REQ          , "CM_SLAC_USER_DATA.REQ" },
1255
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_SLAC_USER_DATA_CNF          , "CM_SLAC_USER_DATA.CNF" },
1256
    { HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_ATTEN_PROFILE_IND           , "CM_ATTEN_PROFILE.IND" },
1257
    { 0, NULL }
1258
};
1259
1260
/* QCA vendor-specific MMEs */
1261
static const value_string homeplug_av_mmtype_qualcomm_vals[] = {
1262
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_GET_SW_REQ,        "GET_SW.REQ (Get Device/SW Version Request)" },
1263
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_GET_SW_CNF,        "GET_SW.CNF (Get Device/SW Version Confirmation)" },
1264
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_WR_MEM_REQ,        "WR_MEM.REQ (Write MAC Memory Request)" },
1265
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_WR_MEM_CNF,        "WR_MEM.CNF (Write MAC Memory Confirmation)" },
1266
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_RD_MEM_REQ,        "RD_MEM.REQ (Read MAC Memory Request)" },
1267
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_RD_MEM_CNF,        "RD_MEM.CNF (Read MAC Memory Confirmation)" },
1268
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_ST_MAC_REQ,        "ST_MAC.REQ (Start MAC Request)" },
1269
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_ST_MAC_CNF,        "ST_MAC.CNF (Start MAC Confirmation)" },
1270
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_GET_NVM_REQ,       "GET_NVM.REQ (Get NVM Parameters Request)" },
1271
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_GET_NVM_CNF,       "GET_NVM.CNF (Get NVM Parameters Confirmation)" },
1272
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_RS_DEV_REQ,        "RS_DEV.REQ (Reset Device Request)" },
1273
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_RS_DEV_CNF,        "RS_DEV.CNF (Reset Device Confirmation)" },
1274
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_WR_MOD_REQ,        "WR_MOD.REQ (Write Module Data Request)" },
1275
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_WR_MOD_CNF,        "WR_MOD.CNF (Write Module Data Confirmation)" },
1276
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_WR_MOD_IND,        "WR_MOD.IND (Write Module Data Indicate)" },
1277
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_RD_MOD_REQ,        "RD_MOD.REQ (Read Module Data Request)" },
1278
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_RD_MOD_CNF,        "RD_MOD.CNF (Read Module Data Confirmation)" },
1279
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_NVM_MOD_REQ,       "NVM_MOD.REQ (Write Module Data to NVM Request)" },
1280
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_NVM_MOD_CNF,       "NVM_MOD.CNF (Write Module Data to NVM Confirmation)" },
1281
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_WD_RPT_REQ,        "WD_RPT.REQ (Get Watchdog Report Request)" },
1282
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_WD_RPT_IND,        "WD_RPT.IND (Get Watchdog Report Indicate)" },
1283
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_LNK_STATS_REQ,     "LNK_STATS.REQ (Link Statistics Request)" },
1284
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_LNK_STATS_CNF,     "LNK_STATS.CNF (Link Statistics Confirmation)" },
1285
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_SNIFFER_REQ,       "SNIFFER.REQ (Sniffer Request)" },
1286
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_SNIFFER_CNF,       "SNIFFER.CNF (Sniffer Confirmation)" },
1287
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_SNIFFER_IND,       "SNIFFER.IND (Sniffer Indicate)" },
1288
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_NW_INFO_REQ,       "NW_INFO.REQ (Network Info Request)" },
1289
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_NW_INFO_CNF,       "NW_INFO.CNF (Network Info Confirmation)" },
1290
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_CP_RPT_REQ,        "CP_RPT.REQ (Check Points Request)" },
1291
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_CP_RPT_IND,        "CP_RPT.IND (Check Points Indicate)" },
1292
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_FR_LBK_REQ,        "FR_LBK.REQ (Loopback Request)" },
1293
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_FR_LBK_CNF,        "FR_LBK.CNF (Loopback Confirmation)" },
1294
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_LBK_STAT_REQ,      "LBK_STAT.REQ (Loopback Status Request)" },
1295
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_LBK_STAT_CNF,      "LBK_STAT.CNF (Loopback Status Confirmation)" },
1296
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_SET_KEY_REQ,       "SET_KEY.REQ (Set Encryption Key Request)" },
1297
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_SET_KEY_CNF,       "SET_KEY.CNF (Set Encryption Key Confirmation)" },
1298
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_MFG_STRING_REQ,    "MFG_STRING.REQ (Get Manufacturer String Request)" },
1299
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_MFG_STRING_CNF,    "MFG_STRING.CNF (Get Manufacturer String Confirmation)" },
1300
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_RD_CBLOCK_REQ,     "RD_CBLOCK.REQ (Read Configuration Block Request)" },
1301
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_RD_CBLOCK_CNF,     "RD_CBLOCK.CNF (Read Configuration Block Confirmation)" },
1302
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_SET_SDRAM_REQ,     "SET_SDRAM.REQ (Set SDRAM Configuration Request)" },
1303
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_SET_SDRAM_CNF,     "SET_SDRAM.CNF (Set SDRAM Configuration Confirmation)" },
1304
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_HOST_ACTION_IND,   "HOST_ACTION.IND (Embedded Host Action Required Indication)" },
1305
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_HOST_ACTION_RSP,   "HOST_ACTION.RSP (Embedded Host Action Required Response)" },
1306
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_OP_ATTR_REQ,       "OP_ATTR.REQ (Get Device Attributes Request)" },
1307
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_OP_ATTR_CNF,       "OP_ATTR.CNF (Get Device Attributes Confirmation)" },
1308
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_GET_ENET_PHY_REQ,  "GET_ENET_PHY.REQ (Get Ethernet PHY Settings Request)" },
1309
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_GET_ENET_PHY_CNF,  "GET_ENET_PHY.CNF (Get Ethernet PHY Settings Confirmation)" },
1310
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_TONE_MAP_TX_REQ,   "TONE_MAP_TX.REQ (Tone Map Tx Characteristics Request)" },
1311
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_TONE_MAP_TX_CNF,   "TONE_MAP_TX.CNF (Tone Map Tx Characteristics Confirmation)" },
1312
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_TONE_MAP_RX_REQ,   "TONE_MAP_RX.REQ (Tone Map Rx Characteristics Request)" },
1313
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_TONE_MAP_RX_CNF,   "TONE_MAP_RX.CNF (Tone Map Rx Characteristics Confirmation)" },
1314
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_LINK_STATUS_REQ,   "LINK_STATUS.REQ" },
1315
    { HOMEPLUG_AV_MMTYPE_QUALCOMM_LINK_STATUS_CNF,   "LINK_STATUS.CNF" },
1316
    { 0, NULL }
1317
};
1318
1319
/* ST/IoTecha vendor-specific MMEs */
1320
static const value_string homeplug_av_mmtype_st_iotecha_vals[] = {
1321
    { HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_AUTH_SET_NMK_REQ ,             "STP_AUTH_SET_NMK.REQ" },
1322
    { HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_AUTH_SET_NMK_CNF ,             "STP_AUTH_SET_NMK.CNF" },
1323
    { HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_LINK_STATUS_REQ ,              "STP_LINK_STATUS.REQ" },
1324
    { HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_LINK_STATUS_CNF ,              "STP_LINK_STATUS.CNF" },
1325
    { HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_LINK_STATUS_IND ,              "STP_LINK_STATUS.IND" },
1326
    { HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_DISCOVER_LOCAL_REQ ,           "STP_DISCOVER_LOCAL.REQ" },
1327
    { HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_DISCOVER_LOCAL_CNF ,           "STP_DISCOVER_LOCAL.CNF" },
1328
    { HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_SET_MAXGAIN_REQ ,              "STP_SET_MAXGAIN.REQ" },
1329
    { HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_SET_MAXGAIN_CNF ,              "STP_SET_MAXGAIN.CNF" },
1330
    { HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_DISCOVER_REQ ,                 "STP_DISCOVER.REQ" },
1331
    { HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_DISCOVER_CNF ,                 "STP_DISCOVER.CNF" },
1332
    { HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_GET_TEI_LIST_REQ ,             "STP_GET_TEI_LIST.REQ" },
1333
    { HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_GET_TEI_LIST_CNF ,             "STP_GET_TEI_LIST.CNF" },
1334
    { HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_GET_TEI_SNAPSHOT_REQ ,         "STP_GET_TEI_SNAPSHOT.REQ" },
1335
    { HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_GET_TEI_SNAPSHOT_CNF ,         "STP_GET_TEI_SNAPSHOT.CNF" },
1336
    { HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_GET_BSS_LIST_REQ ,             "STP_GET_BSS_LIST.REQ" },
1337
    { HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_GET_BSS_LIST_CNF ,             "STP_GET_BSS_LIST.CNF" },
1338
    { HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_CHANQUAL_REPORT_REQ ,          "STP_CHANQUAL_REPORT.REQ" },
1339
    { HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_CHANQUAL_REPORT_CNF ,          "STP_CHANQUAL_REPORT.CNF" },
1340
    { HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_CHANQUAL_REPORT_IND ,          "STP_CHANQUAL_REPORT.IND" },
1341
    { HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_TEST_CHAN_ATTEN_START_RX_REQ , "STP_TEST_CHAN_ATTEN_START_RX.REQ" },
1342
    { HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_TEST_CHAN_ATTEN_START_RX_CNF , "STP_TEST_CHAN_ATTEN_START_RX.CNF" },
1343
    { HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_TEST_CHAN_ATTEN_DATA_IND ,     "STP_TEST_CHAN_ATTEN_DATA.IND" },
1344
    { HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_TEST_CHAN_ATTEN_START_TX_REQ , "STP_TEST_CHAN_ATTEN_START_TX.REQ" },
1345
    { HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_TEST_CHAN_ATTEN_START_TX_CNF , "STP_TEST_CHAN_ATTEN_START_TX.CNF" },
1346
    { HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_TEST_SOUND_QUIET_IND ,         "STP_TEST_SOUND_QUIET.IND" },
1347
    { HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_UPDATE_STAGE_REQ ,        "STP_MFCT_UPDATE_STAGE.REQ" },
1348
    { HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_UPDATE_STAGE_CNF ,        "STP_MFCT_UPDATE_STAGE.CNF" },
1349
    { HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_UPDATE_FINISH_REQ ,       "STP_MFCT_UPDATE_FINISH.REQ" },
1350
    { HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_UPDATE_FINISH_CNF ,       "STP_MFCT_UPDATE_FINISH.CNF" },
1351
    { HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_GET_ITEM_REQ ,            "STP_MFCT_GET_ITEM.REQ" },
1352
    { HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_GET_ITEM_CNF ,            "STP_MFCT_GET_ITEM.CNF" },
1353
    { HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_GET_KEYLIST_REQ ,         "STP_MFCT_GET_KEYLIST.REQ" },
1354
    { HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_GET_KEYLIST_CNF ,         "STP_MFCT_GET_KEYLIST.CNF" },
1355
    { HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_FUP_REQ ,                      "STP_FUP.REQ" },
1356
    { HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_RESERVED_REQ ,                 "STP_RESERVED.REQ (IoTecha HPGP Analyzer Raw Data)" },
1357
    { HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_CPSTATE_IND ,                  "STP_CPSTATE.IND" },
1358
    { HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_USER_MESSAGE_IND ,             "STP_USER_MESSAGE.IND" },
1359
    { 0, NULL }
1360
};
1361
1362
/* ext MMType vals */
1363
static value_string_ext homeplug_av_mmtype_general_vals_ext = VALUE_STRING_EXT_INIT(homeplug_av_mmtype_general_vals);
1364
static value_string_ext homeplug_av_mmtype_qualcomm_vals_ext = VALUE_STRING_EXT_INIT(homeplug_av_mmtype_qualcomm_vals);
1365
static value_string_ext homeplug_av_mmtype_st_iotecha_vals_ext = VALUE_STRING_EXT_INIT(homeplug_av_mmtype_st_iotecha_vals);
1366
1367
/* Versions */
1368
15
#define HOMEPLUG_AV_MMVER_MASK      0x01
1369
#define HOMEPLUG_AV_MMVER_1_0       0x00
1370
0
#define HOMEPLUG_AV_MMVER_1_1       0x01
1371
1372
static const value_string homeplug_av_mmver_vals[] = {
1373
    { HOMEPLUG_AV_MMVER_1_0, "1.0" },
1374
    { HOMEPLUG_AV_MMVER_1_1, "1.1" },
1375
    { 0, NULL }
1376
};
1377
1378
/* MMTYPE LSB Values */
1379
15
#define HOMEPLUG_AV_MMTYPE_LSB_MASK 0x03
1380
1381
static const value_string homeplug_av_mmtype_lsb_vals[] = {
1382
    { 0x00, "Request" },
1383
    { 0x01, "Confirm" },
1384
    { 0x02, "Indication" },
1385
    { 0x03, "Response" },
1386
    { 0, NULL }
1387
};
1388
1389
/* MMTYPE MSB Values */
1390
#define HOMEPLUG_AV_MMTYPE_MSB_STA_CCO    0x00
1391
#define HOMEPLUG_AV_MMTYPE_MSB_PROXY      0x01
1392
#define HOMEPLUG_AV_MMTYPE_MSB_CCO_CCO    0x02
1393
#define HOMEPLUG_AV_MMTYPE_MSB_STA_STA    0x03
1394
34
#define HOMEPLUG_AV_MMTYPE_MSB_MANUF      0x04
1395
42
#define HOMEPLUG_AV_MMTYPE_MSB_VENDOR     0x05
1396
#define HOMEPLUG_AV_MMTYPE_MSB_RSV        0x06
1397
15
#define HOMEPLUG_AV_MMTYPE_MSB_MASK       0xe0
1398
76
#define HOMEPLUG_AV_MMTYPE_MSB_SHIFT      (5)
1399
1400
static const value_string homeplug_av_mmtype_msb_vals[] = {
1401
    { HOMEPLUG_AV_MMTYPE_MSB_STA_CCO, "STA - Central Coordinator" },
1402
    { HOMEPLUG_AV_MMTYPE_MSB_PROXY,   "Proxy Coordinator" },
1403
    { HOMEPLUG_AV_MMTYPE_MSB_CCO_CCO, "Central Coordinator - Central Coordinator" },
1404
    { HOMEPLUG_AV_MMTYPE_MSB_STA_STA, "STA - STA" },
1405
    { HOMEPLUG_AV_MMTYPE_MSB_MANUF,   "Manufacturer Specific" },
1406
    { HOMEPLUG_AV_MMTYPE_MSB_VENDOR,  "Vendor Specific" },
1407
    { 0, NULL }
1408
};
1409
1410
15
#define HOMEPLUG_AV_CC_STA_NET_MASK 0x01
1411
1412
static const value_string homeplug_av_cc_sta_net_type_vals[] = {
1413
    { 0x00, "Different network" },
1414
    { 0x01, "Same network" },
1415
    { 0, NULL }
1416
};
1417
1418
static const value_string homeplug_av_sig_level_vals[] = {
1419
    { 0x00,    "N/A" },
1420
    { 0x01,    "> - 10 dB, but <= 0 dB" },
1421
    { 0x02,    "> - 15 dB, but <= -10 dB" },
1422
    { 0x03,    "> - 20 dB, but <= -15 dB" },
1423
    { 0x04,    "> - 25 dB, but <= -20 dB" },
1424
    { 0x05,    "> - 30 dB, but <= -25 dB" },
1425
    { 0x06,    "> - 35 dB, but <= -30 dB" },
1426
    { 0x07,    "> - 40 dB, but <= -35 dB" },
1427
    { 0x08,    "> - 45 dB, but <= -40 dB" },
1428
    { 0x09,    "> - 50 dB, but <= -45 dB" },
1429
    { 0x0A,    "> - 55 dB, but <= -50 dB" },
1430
    { 0x0B,    "> - 60 dB, but <= -55 dB" },
1431
    { 0x0C,    "> - 65 dB, but <= -60 dB" },
1432
    { 0x0D,    "> - 70 dB, but <= -65 dB" },
1433
    { 0x0E,    "> - 75 dB, but <= -70 dB" },
1434
    { 0x0F,    "<= -75 dB" },
1435
    { 0, NULL }
1436
};
1437
static value_string_ext homeplug_av_sig_level_vals_ext = VALUE_STRING_EXT_INIT(homeplug_av_sig_level_vals);
1438
1439
15
#define HOMEPLUG_AV_CCO_STATUS_MASK 0x07
1440
1441
static const value_string homeplug_av_cco_status_vals[] = {
1442
    { 0x00, "Unknown" },
1443
    { 0x01, "Non-coordinating Network" },
1444
    { 0x02, "Coordinating, group status unknown" },
1445
    { 0x03, "Coordinating network in the same group" },
1446
    { 0x04, "Coordinating network not in the same group" },
1447
    { 0, NULL }
1448
};
1449
1450
30
#define HOMEPLUG_AV_NW_INFO_ROLE_MASK 0x03
1451
1452
static const value_string homeplug_av_nw_info_role_vals[] = {
1453
    { 0x00, "Station" },
1454
    { 0x01, "Proxy coordinator" },
1455
    { 0x02, "Central coordinator" },
1456
    { 0, NULL }
1457
};
1458
1459
15
#define HOMEPLUG_AV_NW_INFO_NID_MASK    0x01
1460
15
#define HOMEPLUG_AV_NW_INFO_ACCESS_MASK 0x08
1461
1462
static const value_string homeplug_nw_info_access_vals[] = {
1463
    { 0x00, "In-home" },
1464
    { 0x01, "Access" },
1465
    { 0, NULL }
1466
};
1467
1468
15
#define HOMEPLUG_AV_PEKS_MASK     0x0F
1469
15
#define HOMEPLUG_AV_SOF_PEKS_MASK 0xF0
1470
1471
static const value_string homeplug_av_peks_vals[] = {
1472
    { 0x00, "Destination STA's DAK" },
1473
    { 0x01, "NMK known to STA" },
1474
    { 0x02, "TEK Index 0" },
1475
    { 0x03, "TEK Index 1" },
1476
    { 0x04, "TEK Index 2" },
1477
    { 0x05, "TEK Index 3" },
1478
    { 0x06, "TEK Index 4" },
1479
    { 0x07, "TEK Index 5" },
1480
    { 0x08, "TEK Index 6" },
1481
    { 0x09, "TEK Index 7" },
1482
    { 0x0A, "TEK Index 8" },
1483
    { 0x0B, "TEK Index 9" },
1484
    { 0x0C, "TEK Index 10" },
1485
    { 0x0D, "TEK Index 11" },
1486
    { 0x0E, "TEK Index 12" },
1487
    { 0x0F, "No key" },
1488
    { 0, NULL }
1489
};
1490
static value_string_ext homeplug_av_peks_vals_ext = VALUE_STRING_EXT_INIT(homeplug_av_peks_vals);
1491
1492
15
#define HOMEPLUG_AV_CCO_CAP_MASK        0x0C
1493
1494
static const value_string homeplug_av_bcn_cco_cap_vals[] = {
1495
    { 0x0, "CSMA-only (no QoS/TDMA)" },
1496
    { 0x1, "Uncoordinated mode QoS/TDMA" },
1497
    { 0x2, "Coordinated mode QoS/TDMA" },
1498
    { 0x3, "Reserved" },
1499
    { 0, NULL }
1500
};
1501
1502
45
#define HOMEPLUG_AV_AVLN_STATUS_MASK    0x0F
1503
15
#define HOMEPLUG_AV_RSF_MASK            0x10
1504
15
#define HOMEPLUG_AV_PLEVEL_MASK         0xE0
1505
1506
static const value_string homeplug_av_avln_status_vals[] = {
1507
    { 0x00, "Unassociated and Level-0 CCo capable" },
1508
    { 0x01, "Unassociated and Level-1 CCo capable" },
1509
    { 0x02, "Unassociated and Level-2 CCo capable" },
1510
    { 0x03, "Unassociated and Level-3 CCo capable" },
1511
    { 0x04, "Associated but not PCo capable" },
1512
    { 0x05, "Associated but and PCo capable" },
1513
    { 0x06, "Reserved" },
1514
    { 0x07, "Reserved" },
1515
    { 0x08, "CCo of an AV Logical Network" },
1516
    { 0, NULL }
1517
};
1518
1519
#define HOMEPLUG_AV_PID_AUTH_STA       0x00
1520
#define HOMEPLUG_AV_PID_PROV_AUTH_NEK  0x01
1521
#define HOMEPLUG_AV_PID_PROV_AUTH_DAK  0x02
1522
#define HOMEPLUG_AV_PID_PROV_AUTH_UKE  0x03
1523
0
#define HOMEPLUG_AV_PID_HLE            0x04
1524
15
#define HOMEPLUG_AV_PID_MASK           0x07
1525
1526
static const value_string homeplug_av_pid_vals[] = {
1527
    { HOMEPLUG_AV_PID_AUTH_STA,        "Authentication request by new STA" },
1528
    { HOMEPLUG_AV_PID_PROV_AUTH_NEK,   "Provision authenticated STA with new NEK by CCo" },
1529
    { HOMEPLUG_AV_PID_PROV_AUTH_DAK,   "Provision STA with NMK using DAK" },
1530
    { HOMEPLUG_AV_PID_PROV_AUTH_UKE,   "Provision STA with NMK using UKE" },
1531
    { HOMEPLUG_AV_PID_HLE,             "HLE" },
1532
    { 0, NULL }
1533
};
1534
1535
#define HOMEPLUG_AV_KEY_TYPE_DAK    0x00
1536
#define HOMEPLUG_AV_KEY_TYPE_NMK    0x01
1537
#define HOMEPLUG_AV_KEY_TYPE_NEK    0x02
1538
#define HOMEPLUG_AV_KEY_TYPE_TEK    0x03
1539
0
#define HOMEPLUG_AV_KEY_TYPE_HASH   0x04
1540
#define HOMEPLUG_AV_KEY_TYPE_NONE   0x05
1541
30
#define HOMEPLUG_AV_KEY_TYPE_MASK   0x07
1542
1543
static const value_string homeplug_av_key_type_vals[] = {
1544
    { HOMEPLUG_AV_KEY_TYPE_DAK,    "DAK" },
1545
    { HOMEPLUG_AV_KEY_TYPE_NMK,    "NMK" },
1546
    { HOMEPLUG_AV_KEY_TYPE_NEK,    "NEK" },
1547
    { HOMEPLUG_AV_KEY_TYPE_TEK,    "TEK" },
1548
    { HOMEPLUG_AV_KEY_TYPE_HASH,   "Hash Key" },
1549
    { HOMEPLUG_AV_KEY_TYPE_NONE,   "Nonce only (no key)" },
1550
    { 0, NULL }
1551
};
1552
1553
15
#define HOMEPLUG_AV_DEV_ID_MASK 0x0
1554
1555
static const value_string homeplug_av_dev_id_vals[] = {
1556
    { 0x00, "Unknown" },
1557
    { 0x01, "INT6000" },
1558
    { 0x02, "INT6300" },
1559
    { 0x03, "INT6400" },
1560
    { 0x04, "AR7400" },
1561
    { 0x05, "AR6405" },
1562
    { 0x20, "QCA7450/QCA7420" },
1563
    { 0x21, "QCA6410/QCA6411" },
1564
    { 0x22, "QCA7000" },
1565
    { 0, NULL }
1566
};
1567
1568
15
#define HOMEPLUG_AV_REQ_TYPE_MASK 0x01
1569
1570
static const value_string homeplug_av_req_type_vals[] = {
1571
    { 0x00, "Direct" },
1572
    { 0x01, "Relayed" },
1573
    { 0, NULL }
1574
};
1575
1576
15
#define HOMEPLUG_AV_KEY_RESULT_MASK 0x03
1577
1578
static const value_string homeplug_av_key_result_vals[] = {
1579
    { 0x00, "Key granted" },
1580
    { 0x01, "Request refused" },
1581
    { 0x02, "Unsupported method/key type" },
1582
    { 0, NULL }
1583
};
1584
1585
15
#define HOMEPLUG_AV_LINEFREQ_MASK 0x03
1586
1587
static const value_string homeplug_av_linefreq_vals[] = {
1588
    { 0x00, "Unknown frequency" },
1589
    { 0x01, "50Hz" },
1590
    { 0x02, "60Hz" },
1591
    { 0, NULL }
1592
};
1593
1594
15
#define HOMEPLUG_AV_ZEROCROSS_MASK 0x03
1595
1596
static const value_string homeplug_av_zerocrossing_vals[] = {
1597
    { 0x00, "Not yet detected" },
1598
    { 0x01, "Detected" },
1599
    { 0x02, "Missing" },
1600
    { 0, NULL }
1601
};
1602
1603
15
#define HOMEPLUG_AV_ENET_PHY_SPEED_MASK 0x03
1604
1605
static const value_string homeplug_av_enet_phy_speed_vals[] = {
1606
    { 0x00, "10 Mbits/sec" },
1607
    { 0x01, "100 Mbits/sec" },
1608
    { 0x02, "1 Gbits/sec" },
1609
    { 0, NULL }
1610
};
1611
1612
15
#define HOMEPLUG_AV_ENET_PHY_DUPLEX_MASK 0x01
1613
1614
static const value_string homeplug_av_enet_phy_duplex_vals[] = {
1615
    { 0x00, "Half" },
1616
    { 0x01, "Full" },
1617
    { 0, NULL }
1618
};
1619
1620
15
#define HOMEPLUG_AV_ENET_PHY_MCONTROL_MASK 0x01
1621
1622
static const value_string homeplug_av_enet_phy_mcontrol_vals[] = {
1623
    { 0x00, "Read" },
1624
    { 0x01, "Write" },
1625
    { 0, NULL }
1626
};
1627
1628
static const value_string homeplug_av_wr_rd_mem_status_vals[] = {
1629
    { 0x00, "Success" },
1630
    { 0x10, "Invalid Address" },
1631
    { 0x14, "Invalid Length" },
1632
    { 0, NULL }
1633
};
1634
1635
static const value_string homeplug_av_mac_module_id_vals[] = {
1636
    { 0x00, "MAC Soft-Loader Image" },
1637
    { 0x01, "MAC Software Image" },
1638
    { 0x02, "PIB" },
1639
    { 0x10, "Write Alternate Flash Location" },
1640
    { 0, NULL }
1641
};
1642
1643
static const value_string homeplug_av_st_mac_status_vals[] = {
1644
    { 0x00, "Success" },
1645
    { 0x10, "Invalid Module ID" },
1646
    { 0x14, "Invalid Command" },
1647
    { 0, NULL }
1648
};
1649
1650
static const value_string homeplug_av_get_nvm_status_vals[] = {
1651
    { 0x00, "Success" },
1652
    { 0x10, "NVM Not Present" },
1653
    { 0, NULL }
1654
};
1655
1656
static const value_string homeplug_av_rs_dev_status_vals[] = {
1657
    { 0x00, "Success" },
1658
    { 0x01, "NVM Not Present" },
1659
    { 0, NULL }
1660
};
1661
1662
static const value_string homeplug_av_wr_rd_mod_cnf_status_vals[] = {
1663
    { 0x00, "Success" },
1664
    { 0x10, "Invalid Module ID" },
1665
    { 0x12, "Invalid Length" },
1666
    { 0x14, "Invalid Checksum" },
1667
    { 0x18, "Bad Header Checksum" },
1668
    { 0x1C, "Invalid Length" },
1669
    { 0x20, "Unexpected Offset" },
1670
    { 0, NULL }
1671
};
1672
1673
static const value_string homeplug_av_wr_mod_ind_status_vals[] = {
1674
    { 0x00, "Successful module update" },
1675
    { 0x10, "Update occurred but not successful" },
1676
    { 0, NULL }
1677
};
1678
1679
static const value_string homeplug_av_mod_nvm_status_vals[] = {
1680
    { 0x00, "Success" },
1681
    { 0x10, "Invalid Module ID" },
1682
    { 0x14, "NVM Module Not Present" },
1683
    { 0x18, "NVM Too Small" },
1684
    { 0x1C, "Invalid Header Checksum" },
1685
    { 0x20, "Invalid Section Mismatch" },
1686
    { 0, NULL }
1687
};
1688
1689
30
#define HOMEPLUG_AV_RPT_CLR_MASK 0x01
1690
1691
static const value_string homeplug_av_rpt_clr_vals[] = {
1692
    { 0x00, "Get Report" },
1693
    { 0x01, "Get Report and Clear" },
1694
    { 0, NULL }
1695
};
1696
1697
150
#define HOMEPLUG_AV_GEN_STATUS_MASK 0x03
1698
1699
static const value_string homeplug_av_generic_status_vals[] = {
1700
    { 0x00, "Success" },
1701
    { 0x01, "Failure" },
1702
    { 0x02, "Not supported" },
1703
    { 0, NULL }
1704
};
1705
1706
15
#define HOMEPLUG_AV_LNK_STATS_MCTL_MASK 0x01
1707
1708
static const value_string homeplug_av_lnk_stats_mctrl_vals[] = {
1709
    { 0x00, "Read" },
1710
    { 0x01, "Clear" },
1711
    { 0, NULL }
1712
};
1713
1714
0
#define HOMEPLUG_AV_LNK_STATS_DIR_TX    0x00
1715
0
#define HOMEPLUG_AV_LNK_STATS_DIR_RX    0x01
1716
0
#define HOMEPLUG_AV_LNK_STATS_DIR_TX_RX 0x02
1717
45
#define HOMEPLUG_AV_LNK_STATS_DIR_MASK  0x03
1718
1719
static const value_string homeplug_av_lnk_stats_dir_vals[] = {
1720
    { HOMEPLUG_AV_LNK_STATS_DIR_TX, "Tx" },
1721
    { HOMEPLUG_AV_LNK_STATS_DIR_RX, "Rx" },
1722
    { HOMEPLUG_AV_LNK_STATS_DIR_TX_RX, "Tx/Rx" },
1723
    { 0, NULL }
1724
};
1725
1726
static const value_string homeplug_av_lnk_stats_lid_vals[] = {
1727
    { 0x00, "CSMA Channel Access Priority 0" },
1728
    { 0x01, "CSMA Channel Access Priority 1" },
1729
    { 0x02, "CSMA Channel Access Priority 2" },
1730
    { 0x03, "CSMA Channel Access Priority 3" },
1731
    { 0xF8, "Sum of all CSMA stats for Peer Node" },
1732
    { 0xFB, "Reserved" },
1733
    { 0xFC, "Sum of all CSMA stats" },
1734
    { 0, NULL }
1735
};
1736
1737
0
#define HOMEPLUG_AV_LNK_STATS_STATUS_SUCCESS  0x00
1738
#define HOMEPLUG_AV_LNK_STATS_STATUS_INV_CTRL 0x01
1739
#define HOMEPLUG_AV_LNK_STATS_STATUS_INV_DIR  0x02
1740
#define HOMEPLUG_AV_LNK_STATS_STATUS_INV_LID  0x10
1741
#define HOMEPLUG_AV_LNK_STATS_STATUS_INV_MAC  0x20
1742
1743
static const value_string homeplug_av_lnk_status_vals[] = {
1744
    { HOMEPLUG_AV_LNK_STATS_STATUS_SUCCESS,    "Success" },
1745
    { HOMEPLUG_AV_LNK_STATS_STATUS_INV_CTRL,   "Invalid Control" },
1746
    { HOMEPLUG_AV_LNK_STATS_STATUS_INV_DIR,    "Invalid Direction" },
1747
    { HOMEPLUG_AV_LNK_STATS_STATUS_INV_LID,    "Invalid Link ID" },
1748
    { HOMEPLUG_AV_LNK_STATS_STATUS_INV_MAC,    "Invalid MAC Address" },
1749
    { 0, NULL }
1750
};
1751
1752
15
#define HOMEPLUG_AV_SNIFFER_CTRL_MASK 0x03
1753
1754
static const value_string homeplug_av_sniffer_ctrl_vals[] = {
1755
    { 0x00, "Disable" },
1756
    { 0x01, "Enable" },
1757
    { 0x02, "No change" },
1758
    { 0, NULL }
1759
};
1760
1761
static const value_string homeplug_av_sniffer_status_vals[] = {
1762
    { 0x00, "Success" },
1763
    { 0x10, "Invalid Control" },
1764
    { 0, NULL }
1765
};
1766
1767
static const value_string homeplug_av_sniffer_type_vals[] = {
1768
    { 0x00, "Regular" },
1769
    { 0, NULL }
1770
};
1771
1772
0
#define HOMEPLUG_AV_DEL_TYPE_BCN    0x00
1773
0
#define HOMEPLUG_AV_DEL_TYPE_SOF    0x01
1774
0
#define HOMEPLUG_AV_DEL_TYPE_SACK   0x02
1775
0
#define HOMEPLUG_AV_DEL_TYPE_RTS    0x03
1776
0
#define HOMEPLUG_AV_DEL_TYPE_SOUND  0x04
1777
0
#define HOMEPLUG_AV_DEL_TYPE_RSOF   0x05
1778
1779
15
#define HOMEPLUG_AV_DEL_TYPE_MASK   0x07
1780
1781
static const value_string homeplug_av_fc_del_type_vals[] = {
1782
    { HOMEPLUG_AV_DEL_TYPE_BCN,   "Beacon" },
1783
    { HOMEPLUG_AV_DEL_TYPE_SOF,   "Start-of-Frame" },
1784
    { HOMEPLUG_AV_DEL_TYPE_SACK,  "Selective Acknowledgement" },
1785
    { HOMEPLUG_AV_DEL_TYPE_RTS,   "Request-to-Send/Clear-to-Send" },
1786
    { HOMEPLUG_AV_DEL_TYPE_SOUND, "Sound" },
1787
    { HOMEPLUG_AV_DEL_TYPE_RSOF,  "Reverse Start-of-Frame" },
1788
    { 0x06, "Unknown" },
1789
    { 0x07, "Unknown" },
1790
    { 0, NULL }
1791
};
1792
1793
/* MPDU Values */
1794
1795
15
#define HOMEPLUG_AV_SNID_MASK      0xf0
1796
15
#define HOMEPLUG_AV_CFS_MASK       0x01
1797
15
#define HOMEPLUG_AV_BDF_MASK       0x02
1798
15
#define HOMEPLUG_AV_HP10DF_MASK    0x04
1799
15
#define HOMEPLUG_AV_HP11DF_MASK    0x08
1800
15
#define HOMEPLUG_AV_SVN_MASK       0x04
1801
15
#define HOMEPLUG_AV_RRTF_MASK      0x08
1802
15
#define HOMEPLUG_AV_FL_AV_MASK     0x0FFF
1803
15
#define HOMEPLUG_AV_RSP_DATA_MASK  0x03
1804
15
#define HOMEPLUG_AV_RSP_MGMT_MASK  0x0C
1805
1806
static int * const rsof_sack_fields[] = {
1807
    &hf_homeplug_av_cfs,
1808
    &hf_homeplug_av_bdf,
1809
    &hf_homeplug_av_svn,
1810
    &hf_homeplug_av_rrtf,
1811
    &hf_homeplug_av_mfs_rsp_data,
1812
    &hf_homeplug_av_mfs_rsp_mgmt,
1813
    NULL
1814
};
1815
1816
15
#define HOMEPLUG_AV_PBSZ_MASK           0x01
1817
1818
static const true_false_string homeplug_av_phy_block_size_vals = {
1819
    "136 octets",
1820
    "520 octets"
1821
};
1822
1823
15
#define HOMEPLUG_AV_NUM_SYM_MASK        0x06
1824
15
#define HOMEPLUG_AV_TMI_AV_MASK         0xF8
1825
15
#define HOMEPLUG_AV_SOF_MPDU_CNT_MASK   0x3000
1826
15
#define HOMEPLUG_AV_BURST_CNT_MASK      0xC000
1827
15
#define HOMEPLUG_AV_BBF_MASK            0x01
1828
1829
static const true_false_string homeplug_av_bbf_vals = {
1830
    "May continue",
1831
    "Must not continue"
1832
};
1833
1834
15
#define HOMEPLUG_AV_MRTLF_MASK          0x1E
1835
15
#define HOMEPLUG_AV_DCCPCF_MASK         0x20
1836
15
#define HOMEPLUG_AV_MCF_MASK            0x40
1837
15
#define HOMEPLUG_AV_MNBF_MASK           0x80
1838
15
#define HOMEPLUG_AV_RSR_MASK            0x01
1839
15
#define HOMEPLUG_AV_CLST_MASK           0x02
1840
1841
static const true_false_string homeplug_av_clst_vals = {
1842
    "Reserved",
1843
    "Ethernet II"
1844
};
1845
1846
30
#define HOMEPLUG_AV_MFS_MGMT_MASK       0x1C
1847
30
#define HOMEPLUG_AV_MFS_DATA_MASK       0xE0
1848
15
#define HOMEPLUG_AV_SOF_RSP_MGMT_MASK   0x03
1849
15
#define HOMEPLUG_AV_SOF_RSP_DATA_MASK   0x0C
1850
15
#define HOMEPLUG_AV_BM_SACK_MASK        0xF0
1851
1852
15
#define HOMEPLUG_AV_RTSF_MASK           0x10
1853
1854
static const true_false_string homeplug_av_rtsf_vals = {
1855
    "RTS MPDU",
1856
    "CTS MPDU"
1857
};
1858
1859
15
#define HOMEPLUG_AV_IGF_MASK            0x20
1860
15
#define HOMEPLUG_AV_RTSCTS_MNBF_MASK    0x40
1861
15
#define HOMEPLUG_AV_RTSCTS_MCF_MASK     0x80
1862
15
#define HOMEPLUG_AV_DUR_MASK            0x3FFF
1863
1864
15
#define HOMEPLUG_AV_SOUND_PBSZ_MASK     0x02
1865
15
#define HOMEPLUG_AV_SOUND_BDF_MASK      0x04
1866
15
#define HOMEPLUG_AV_SAF_MASK            0x08
1867
15
#define HOMEPLUG_AV_SCF_MASK            0x10
1868
15
#define HOMEPLUG_AV_REQ_TM_MASK         0xE0
1869
15
#define HOMEPLUG_AV_SOUND_MPDU_CNT_MASK 0x3000
1870
15
#define HOMEPLUG_AV_ADD_REQ_TM_MASK     0x07
1871
15
#define HOMEPLUG_AV_MAX_PB_SYM_MASK     0x38
1872
15
#define HOMEPLUG_AV_ECSF_MASK           0x40
1873
15
#define HOMEPLUG_AV_ECUF_MASK           0x80
1874
15
#define HOMEPLUG_AV_EMS_MASK            0x03
1875
1876
static const value_string homeplug_av_ems_vals[] = {
1877
    { 0x00, "Extended QAM Modulations not supported" },
1878
    { 0x01, "4096 QAM Modulation support" },
1879
    { 0x02, "Reserved" },
1880
    { 0x03, "Reserved" },
1881
    { 0, NULL }
1882
};
1883
1884
15
#define HOMEPLUG_AV_ESGISF_MASK         0x04
1885
15
#define HOMEPLUG_AV_ELGISF_MASK         0x08
1886
15
#define HOMEPLUG_AV_EFRS_MASK           0x30
1887
1888
static const value_string homeplug_av_efrs_vals[] = {
1889
    { 0x00, "Extended FEC Rates Not Supported" },
1890
    { 0x01, "16/18 FED Rate Supported" },
1891
    { 0x02, "Reserved" },
1892
    { 0x03, "Reserved" },
1893
    { 0, NULL }
1894
};
1895
1896
15
#define HOMEPLUG_AV_RSOF_FL_MASK        0x03FF
1897
15
#define HOMEPLUG_AV_RSOF_TMI_MASK       0x7C00
1898
15
#define HOMEPLUG_AV_RSOF_PBSZ_MASK      0x8000
1899
15
#define HOMEPLUG_AV_RSOF_NUM_SYM_MASK   0x03
1900
1901
/* MPDU Beacon payloads */
1902
1903
15
#define HOMEPLUG_AV_BCN_NID_MASK        0xFFFFFFFFFFFF3F
1904
15
#define HOMEPLUG_AV_HM_MASK             0xC0
1905
1906
static const val64_string homeplug_av_bcn_hm_vals[] = {
1907
    { 0x00, "AV-only mode" },
1908
    { 0x01, "Shared CSMA Hybrid Mode" },
1909
    { 0x02, "Fully hybrid mode" },
1910
    { 0x03, "Fully hybrid mode with unrestricted frame lengths" },
1911
    { 0, NULL }
1912
};
1913
1914
15
#define HOMEPLUG_AV_BCN_TYPE_MASK       0x07
1915
1916
static const value_string homeplug_av_bcn_type_vals[] = {
1917
    { 0x0, "Central" },
1918
    { 0x1, "Discover" },
1919
    { 0x2, "Proxy" },
1920
    { 0, NULL }
1921
};
1922
1923
15
#define HOMEPLUG_AV_NCNR_MASK           0x08
1924
15
#define HOMEPLUG_AV_NPSM_MASK           0x10
1925
15
#define HOMEPLUG_AV_NUM_SLOTS_MASK      0xE0
1926
15
#define HOMEPLUG_AV_SLOT_ID_MASK        0x03
1927
1928
/* There must be a better way to do this. */
1929
static const value_string homeplug_av_bcn_slot_vals[] = {
1930
    { 0x0, "1" },
1931
    { 0x1, "2" },
1932
    { 0x2, "3" },
1933
    { 0x3, "4" },
1934
    { 0x4, "5" },
1935
    { 0x5, "6" },
1936
    { 0x6, "7" },
1937
    { 0x7, "8" },
1938
    { 0, NULL }
1939
};
1940
1941
15
#define HOMEPLUG_AV_ACLSS_MASK          0x38
1942
15
#define HOMEPLUG_AV_HOIP_MASK           0x40
1943
15
#define HOMEPLUG_AV_RTSBF_MASK          0x80
1944
15
#define HOMEPLUG_AV_NM_MASK             0x03
1945
1946
static const value_string homeplug_av_bcn_nm_vals[] = {
1947
    { 0x1, "Uncoordinated Mode" },
1948
    { 0x2, "Coordinated Mode" },
1949
    { 0x3, "CSMA-only Mode" },
1950
    { 0, NULL }
1951
};
1952
1953
15
#define HOMEPLUG_AV_LBK_STATUS_MASK 0x01
1954
1955
static const value_string homeplug_av_lbk_status_vals[] = {
1956
    { 0x00, "Done" },
1957
    { 0x01, "Looping frame" },
1958
    { 0, NULL }
1959
};
1960
1961
static const value_string homeplug_av_set_key_peks_vals[] = {
1962
    { 0x00, "Remote" },
1963
    { 0x0F, "Local" },
1964
    { 0, NULL }
1965
};
1966
1967
static const value_string homeplug_av_set_key_status_vals[] = {
1968
    { 0x00, "Success" },
1969
    { 0x10, "Invalid EKS" },
1970
    { 0x11, "Invalid PKS" },
1971
    { 0, NULL }
1972
};
1973
1974
static const value_string homeplug_av_cblock_status_vals[] = {
1975
    { 0x00, "Success" },
1976
    { 0x01, "Failure" },
1977
    { 0x10, "No Flash" },
1978
    { 0x30, "Invalid Checksum" },
1979
    { 0x34, "BIST Failed" },
1980
    { 0, NULL }
1981
};
1982
1983
15
#define HOMEPLUG_AV_NVM_IMG_TYPE_MASK 0x1F
1984
1985
static const value_string homeplug_av_nvm_img_type_vals[] = {
1986
    { 0x00, "Generic Image" },
1987
    { 0x01, "Synopsis configuration" },
1988
    { 0x02, "Denali configuration" },
1989
    { 0x03, "Denali applet" },
1990
    { 0x04, "Runtime firmware" },
1991
    { 0x05, "OAS client" },
1992
    { 0x06, "Custom image" },
1993
    { 0x07, "Memory control applet" },
1994
    { 0x08, "Power management applet" },
1995
    { 0x09, "OAS client IP stack" },
1996
    { 0x0A, "OAS client TR069" },
1997
    { 0x0B, "SoftLoader" },
1998
    { 0x0C, "Flash layout" },
1999
    { 0x0D, "Unknown" },
2000
    { 0x0E, "Chain manifest" },
2001
    { 0x0F, "Runtime parameters" },
2002
    { 0x10, "Custom module in scratch" },
2003
    { 0x11, "Custom module update applet" },
2004
    { 0, NULL }
2005
};
2006
2007
15
#define HOMEPLUG_AV_NVM_IGNORE_MASK_MASK 0x01FF
2008
2009
static const value_string homeplug_av_nvm_ignore_mask_vals[] = {
2010
    { 0x00, "INT6000" },
2011
    { 0x01, "INT6300" },
2012
    { 0x04, "INT6400" },
2013
    { 0x10, "AR7400" },
2014
    { 0x100, "AR7420" },
2015
    { 0, NULL }
2016
};
2017
2018
#define HOMEPLUG_AV_HOST_ACTION_SOFT_LDR       0x00
2019
#define HOMEPLUG_AV_HOST_ACTION_FW_UPG_RDY     0x01
2020
#define HOMEPLUG_AV_HOST_ACTION_PIB_UP_RDY     0x02
2021
#define HOMEPLUG_AV_HOST_ACTION_FW_PIB_UP_RDY  0x03
2022
#define HOMEPLUG_AV_HOST_ACTION_BOOT_LDR       0x04
2023
2024
static const value_string homeplug_av_host_action_vals[] = {
2025
    { HOMEPLUG_AV_HOST_ACTION_SOFT_LDR,        "Loader (Soft/Bootloader)" },
2026
    { HOMEPLUG_AV_HOST_ACTION_FW_UPG_RDY,      "Firmware Upgrade Ready" },
2027
    { HOMEPLUG_AV_HOST_ACTION_PIB_UP_RDY,      "PIB Update Ready" },
2028
    { HOMEPLUG_AV_HOST_ACTION_FW_PIB_UP_RDY,   "Firmware Upgrade and PIB Update Ready" },
2029
    { HOMEPLUG_AV_HOST_ACTION_BOOT_LDR,        "Loader (Bootloader)" },
2030
    { 0, NULL }
2031
};
2032
2033
static const value_string homeplug_av_op_attr_report_vals[] = {
2034
    { 0x00, "Binary" },
2035
    { 0x01, "XML" },
2036
    { 0, NULL }
2037
};
2038
2039
0
#define HOMEPLUG_AV_TONE_MAP_MAX_NUM_CARRIERS_A 1155
2040
0
#define HOMEPLUG_AV_TONE_MAP_MAX_NUM_CARRIERS_B 2880
2041
2042
30
#define HOMEPLUG_AV_TONE_MAP_MASK               0x0f
2043
2044
static const value_string homeplug_av_tone_map_vals[] = {
2045
    { 0x00, "No modulation" },
2046
    { 0x01, "BPSK" },
2047
    { 0x02, "QPSK" },
2048
    { 0x03, "8-QAM" },
2049
    { 0x04, "16-QAM" },
2050
    { 0x05, "64-QAM" },
2051
    { 0x06, "256-QAM" },
2052
    { 0x07, "1024-QAM" },
2053
    { 0x08, "4096-QAM" },
2054
    { 0, NULL }
2055
};
2056
2057
static const value_string homeplug_av_tone_map_status_vals[] = {
2058
    { 0x00, "Success" },
2059
    { 0x01, "Unknown MAC address" },
2060
    { 0x02, "Unknown Tone Map slot" },
2061
    { 0, NULL }
2062
};
2063
2064
75
#define HOMEPLUG_AV_COUPLING_MASK 0x0F
2065
2066
static const value_string homeplug_av_coupling_vals[] = {
2067
    { 0x00, "Primary" },
2068
    { 0x01, "Alternate" },
2069
    { 0, NULL }
2070
};
2071
2072
static const value_string homeplug_av_cc_assoc_result_vals[] = {
2073
    { 0x00, "Success" },
2074
    { 0x01, "Failure due to temporary resource exhaustion, try again later" },
2075
    { 0x02, "Failure due to permanent resource exhaustion" },
2076
    { 0x03, "Failure" },
2077
    { 0, NULL }
2078
};
2079
2080
static const value_string homeplug_av_cc_assoc_reqtype_vals[] = {
2081
    { 0x00, "New request" },
2082
    { 0x01, "Renewal request" },
2083
    { 0, NULL }
2084
};
2085
2086
static const value_string homeplug_av_cc_assoc_proxy_net_cap_vals[] = {
2087
    { 0x00, "Doesn't support Proxy Networking" },
2088
    { 0x01, "Supports Proxy Networking" },
2089
    { 0, NULL }
2090
};
2091
2092
/* HPGP Values */
2093
2094
0
#define HOMEPLUG_AV_GP_APPTYPE_PEV_EVSE_ASSOC 0x00
2095
2096
#define HOMEPLUG_AV_GP_SECURITY_TYPE_NONE 0x00
2097
0
#define HOMEPLUG_AV_GP_SECURITY_TYPE_PUBLIC_KEY 0x01
2098
2099
static const value_string homeplug_av_gp_cm_slac_parm_sectype_vals[] = {
2100
    { HOMEPLUG_AV_GP_SECURITY_TYPE_NONE, "No Security" },
2101
    { HOMEPLUG_AV_GP_SECURITY_TYPE_PUBLIC_KEY, "Public Key Signature" },
2102
    { 0, NULL }
2103
};
2104
2105
static const value_string homeplug_av_gp_cm_slac_parm_resptype_vals[] = {
2106
    { 0x00, "Not Transmitted to other GP STA's HLE" },
2107
    { 0x01, "Transmitted to another GP STA's HLE" },
2108
    { 0, NULL }
2109
};
2110
2111
0
#define HOMEPLUG_AV_GP_SIGNAL_TYPE_PEV_S2_TOGGLES 0x00
2112
2113
static const value_string homeplug_av_gp_cm_validate_signaltype_vals[] = {
2114
    { HOMEPLUG_AV_GP_SIGNAL_TYPE_PEV_S2_TOGGLES, "PEV S2 toggles on CPLT line" },
2115
    { 0, NULL }
2116
};
2117
2118
static const value_string homeplug_av_gp_cm_validate_result_vals[] = {
2119
    { 0x00, "Not Ready" },
2120
    { 0x01, "Ready" },
2121
    { 0x02, "Success" },
2122
    { 0x03, "Failure" },
2123
    { 0x04, "Not required" },
2124
    { 0, NULL }
2125
};
2126
2127
/* We need third octet */
2128
15
#define HOMEPLUG_AV_GP_CM_SLAC_USER_DATA_BROADCAST_MASK (((uint32_t)0xFF) << 16)
2129
2130
static const value_string homeplug_av_gp_cm_slac_user_data_broadcast_vals[] = {
2131
    { 0x00, "Unicast" },
2132
    { 0x01, "AVLN Broadcast" },
2133
    { 0x02, "Multi-network broadcast" },
2134
    { 0, NULL }
2135
};
2136
2137
0
#define HOMEPLUG_AV_GP_CM_SLAC_USER_DATA_TLV_HEADER_SIZE 2
2138
30
#define HOMEPLUG_AV_GP_CM_SLAC_USER_DATA_TLV_TYPE_MASK (((1<<7)-1)<<9)
2139
15
#define HOMEPLUG_AV_GP_CM_SLAC_USER_DATA_TLV_LENGTH_MASK ((1<<9)-1)
2140
2141
0
#define HOMEPLUG_AV_GP_CM_SLAC_USER_DATA_TLV_TYPE_VENDOR_RESERVED 0x1F
2142
2143
static const value_string homeplug_av_gp_cm_slac_user_data_tlv_types_vals[] = {
2144
    { HOMEPLUG_AV_GP_CM_SLAC_USER_DATA_TLV_TYPE_VENDOR_RESERVED, "Vendor Reserved" },
2145
    { 0, NULL }
2146
};
2147
2148
typedef enum {
2149
    HOMEPLUG_AV_CC_SET_TEI_MAP_IND_MODE_FULL_ENTRIES_UPATE = 0x00,
2150
    HOMEPLUG_AV_CC_SET_TEI_MAP_IND_MODE_ADD_NEW_ENTRIES    = 0x01,
2151
    HOMEPLUG_AV_CC_SET_TEI_MAP_IND_MODE_REMOVE_ENTRIES     = 0x02
2152
} homeplug_av_cc_set_tei_map_ind_mode_types;
2153
2154
static const value_string homeplug_av_cc_set_tei_map_ind_mode_vals[] = {
2155
    { HOMEPLUG_AV_CC_SET_TEI_MAP_IND_MODE_FULL_ENTRIES_UPATE, "Update Entire STA" },
2156
    { HOMEPLUG_AV_CC_SET_TEI_MAP_IND_MODE_ADD_NEW_ENTRIES,    "Add new STA entries" },
2157
    { HOMEPLUG_AV_CC_SET_TEI_MAP_IND_MODE_REMOVE_ENTRIES,     "Remove existing STA entries" },
2158
    { 0, NULL }
2159
};
2160
2161
typedef enum {
2162
    HOMEPLUG_AV_CC_SET_TEI_MAP_IND_STATUS_NOT_AUTHENTICATED   = 0x00,
2163
    HOMEPLUG_AV_CC_SET_TEI_MAP_IND_STATUS_AUTHENTICATED       = 0x01,
2164
} homeplug_av_cc_set_tei_map_ind_status_types;
2165
2166
static const value_string homeplug_av_cc_set_tei_map_ind_status_vals[] = {
2167
    { HOMEPLUG_AV_CC_SET_TEI_MAP_IND_STATUS_NOT_AUTHENTICATED,  "Not Authenticated" },
2168
    { HOMEPLUG_AV_CC_SET_TEI_MAP_IND_STATUS_AUTHENTICATED,      "Authenticated" },
2169
    { 0, NULL }
2170
};
2171
2172
0
#define HOMEPLUG_AV_GP_CM_ATTEN_CHAR_AAG_FORMAT "Avg. Attenuation of group #%d (dB): %d"
2173
2174
/* ST/IoTecha specific values */
2175
2176
static const value_string homeplug_av_st_iotecha_linkstatus_status_vals[] = {
2177
    { 0x00, "No Link" },
2178
    { 0x01, "Link with at least 1 device" },
2179
    { 0, NULL }
2180
};
2181
2182
static const value_string homeplug_av_st_iotecha_linkstatus_devmode_vals[] = {
2183
    { 0x00, "Unavailable" },
2184
    { 0x01, "UNAS STA" },
2185
    { 0x02, "ASSC STA" },
2186
    { 0x03, "AUTH STA" },
2187
    { 0x04, "UNAS BM" },
2188
    { 0x05, "ASSC BM" },
2189
    { 0x06, "AUTH BM" },
2190
    { 0, NULL }
2191
};
2192
2193
0
#define HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_HEADER_SIZE 2
2194
30
#define HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_MASK (((1<<6)-1)<<10)
2195
15
#define HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_LENGTH_MASK  ((1<<10)-1)
2196
2197
typedef enum {
2198
    HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_NULL                 = 0x00,
2199
    HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_DEVICE_NAME          = 0x01,
2200
    HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_DEVICE_TYPE          = 0x02,
2201
    HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_BUILD_ID             = 0x03,
2202
    HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_RESERVED             = 0x04,
2203
    HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_DEVICE_UID           = 0x05,
2204
    HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_MAC_ADDRESS          = 0x06,
2205
    HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_HARDWARE_NAME        = 0x07,
2206
    HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_HARDWARE_VERSION     = 0x08,
2207
    HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_LINUX_KERNEL_VERSION = 0x09,
2208
    HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_LINUX_USER_VERSION   = 0x0A,
2209
} homeplug_av_st_iotecha_stp_discover_tlv_types;
2210
2211
static const value_string homeplug_av_st_iotecha_stp_discover_tlv_type_vals[] = {
2212
    { HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_NULL,                 "NULL" },
2213
    { HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_DEVICE_NAME,          "Device name" },
2214
    { HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_DEVICE_TYPE,          "Device type" },
2215
    { HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_BUILD_ID,             "Build ID" },
2216
    { HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_RESERVED,             "Reserved" },
2217
    { HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_DEVICE_UID,           "Device UID" },
2218
    { HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_MAC_ADDRESS,          "MAC Address" },
2219
    { HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_HARDWARE_NAME,        "Hardware name" },
2220
    { HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_HARDWARE_VERSION,     "Hardware version" },
2221
    { HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_LINUX_KERNEL_VERSION, "Linux Kernel version" },
2222
    { HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_LINUX_USER_VERSION,   "Linux User version" },
2223
    { 0, NULL }
2224
};
2225
2226
typedef enum {
2227
    HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_NULL                    = 0x00,
2228
    HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_BEGIN_BSS               = 0x01,
2229
    HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_LOCAL_BSS               = 0x02,
2230
    HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_RESERVED                = 0x03,
2231
    HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_REMOTE_BSS              = 0x04,
2232
    HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_SNID                    = 0x05,
2233
    HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_NID                     = 0x06,
2234
    HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_NET_MODE                = 0x07,
2235
    HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_BEACON_AGE              = 0x08,
2236
    HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_BEACON_FC_RELIABILITY   = 0x09,
2237
    HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_BEACON_PLD_RELIABILITY  = 0x0A,
2238
    HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_SIGNAL_LEVEL            = 0x0B,
2239
    HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_SIGNAL_LEVEL_TOS        = 0x0C,
2240
    HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_SIGNAL_LEVEL_MIN        = 0x0D,
2241
    HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_SIGNAL_LEVEL_TOS_MIN    = 0x0E,
2242
    HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_SIGNAL_LEVEL_MAX        = 0x0F,
2243
    HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_SIGNAL_LEVEL_TOS_MAX    = 0x10,
2244
    HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_NET_HYB_MODE            = 0x11,
2245
    HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_TEI                     = 0x12,
2246
    HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_END_BSS                 = 0xFF,
2247
} homeplug_av_st_iotecha_stp_get_bss_tlv_types;
2248
2249
static const value_string homeplug_av_st_iotecha_stp_get_bss_tlv_type_vals[] = {
2250
    { HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_NULL,                  "NULL" },
2251
    { HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_BEGIN_BSS,             "Start of BSS descriptor" },
2252
    { HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_LOCAL_BSS,             "Local BSS Manager" },
2253
    { HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_RESERVED,              "Reserved Data" },
2254
    { HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_REMOTE_BSS,            "Remote BSS" },
2255
    { HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_SNID,                  "Short Network ID" },
2256
    { HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_NID,                   "Network ID" },
2257
    { HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_NET_MODE,              "Network Mode" },
2258
    { HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_BEACON_AGE,            "Beacon Age" },
2259
    { HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_BEACON_FC_RELIABILITY, "Beacon Frame Control reliability" },
2260
    { HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_BEACON_PLD_RELIABILITY,"Beacon Payload reliability" },
2261
    { HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_SIGNAL_LEVEL,          "Signal Level" },
2262
    { HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_SIGNAL_LEVEL_TOS,      "Signal Level Time of Sample" },
2263
    { HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_SIGNAL_LEVEL_MIN,      "Min Signal Level" },
2264
    { HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_SIGNAL_LEVEL_TOS_MIN,  "Min Signal Level Time of Sample" },
2265
    { HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_SIGNAL_LEVEL_MAX,      "Max Signal Level" },
2266
    { HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_SIGNAL_LEVEL_TOS_MAX,  "Max Signal Level Time of Sample" },
2267
    { HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_NET_HYB_MODE,          "Network Hybrid Mode" },
2268
    { HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_TEI,                   "TEI of BM" },
2269
    { HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_END_BSS,               "End of BSS descriptor" },
2270
    { 0, NULL }
2271
};
2272
2273
static const value_string homeplug_av_st_iotecha_mac_address_flag_vals[] = {
2274
    { 0x00, "Unknown" },
2275
    { 0x01, "Local MAC" },
2276
    { 0x02, "Local Bridged MAC" },
2277
    { 0x04, "Remote MAC" },
2278
    { 0x08, "Remote Bridged MAC" },
2279
    { 0, NULL }
2280
};
2281
2282
static const value_string homeplug_av_st_iotecha_chanqual_tei_source_vals[] = {
2283
    { 0x01, "Local Tei" },
2284
    { 0x02, "Remote Tei" },
2285
    { 0, NULL }
2286
};
2287
2288
static const value_string homeplug_av_st_iotecha_chanqual_substatus_vals[] = {
2289
    { 0x01, "Subscribed" },
2290
    { 0x02, "Unsubscribed" },
2291
    { 0x03, "Invalid Request Type" },
2292
    { 0, NULL }
2293
};
2294
2295
static const value_string homeplug_av_st_iotecha_chanqual_responsetype_vals[] = {
2296
    { 0x00, "Default Tone map transmitted in ICE" },
2297
    { 0x01, "Others" },
2298
    { 0, NULL }
2299
};
2300
2301
static const value_string homeplug_av_st_iotecha_chanqual_tmi_vals[] = {
2302
    { 0xFE, "Not Available For Particular Interval" },
2303
    { 0xFF, "Unusable Interval" },
2304
    { 0, NULL }
2305
};
2306
2307
15
#define HOMEPLUG_AV_ST_IOTECHA_CHANQUAL_CBLD_DATA_MASK_LOW  0x0F
2308
15
#define HOMEPLUG_AV_ST_IOTECHA_CHANQUAL_CBLD_DATA_MASK_HIGH 0xF0
2309
/* (1154/2) */
2310
0
#define HOMEPLUG_AV_ST_IOTECHA_CHANQUAL_CBLD_DATA_COUNT 577
2311
static const value_string homeplug_av_st_iotecha_chanqual_cbld_data_vals[] = {
2312
    { 0x00, "Empty" },
2313
    { 0x01, "Bitload of 1" },
2314
    { 0x02, "Bitload of 2" },
2315
    { 0x03, "Bitload of 3" },
2316
    { 0x04, "Bitload of 4" },
2317
    { 0x05, "Bitload of 5" },
2318
    { 0x06, "Bitload of 6" },
2319
    { 0x07, "Bitload of 7" },
2320
    { 0x08, "Bitload of 8" },
2321
    { 0x09, "Bitload of 9" },
2322
    { 0x0A, "Bitload of 10" },
2323
    { 0x0F, "Unusable" },
2324
    { 0, NULL }
2325
};
2326
2327
static const value_string homeplug_av_st_iotecha_chanqual_reqtype_vals[] = {
2328
    { 0x01, "Subscribe" },
2329
    { 0x02, "Unsubscribe" },
2330
    { 0, NULL }
2331
};
2332
2333
static const value_string homeplug_av_st_iotecha_mfct_request_type_vals[] = {
2334
    { 0x00, "Commit" },
2335
    { 0x02, "Abort" },
2336
    { 0, NULL }
2337
};
2338
2339
static const value_string homeplug_av_st_iotecha_mfct_result_vals[] = {
2340
    { 0x00, "Success" },
2341
    { 0x03, "Parameter Not Found" },
2342
    { 0x04, "Permission Error" },
2343
    { 0x05, "Insufficient space in parameter region" },
2344
    { 0x06, "Internal Error" },
2345
    { 0, NULL }
2346
};
2347
2348
static const value_string homeplug_av_st_iotecha_stp_fwup_mtype_vals[] = {
2349
    { 0x00, "Start Request" },
2350
    { 0x01, "Start Confirmation" },
2351
    { 0x02, "Data Index" },
2352
    { 0x03, "Data Response" },
2353
    { 0, NULL }
2354
};
2355
2356
static const value_string homeplug_av_st_iotecha_stp_cpstate_state_vals[] = {
2357
    { 0x00, "Invalid"},
2358
    { 0x01, "A"},
2359
    { 0x02, "Ambiguous (A-B)"},
2360
    { 0x03, "B"},
2361
    { 0x04, "Ambiguous (B-C)"},
2362
    { 0x05, "C"},
2363
    { 0x06, "Ambiguous (C-D)"},
2364
    { 0x07, "D"},
2365
    { 0x08, "Ambiguous (D-E)"},
2366
    { 0x09, "E"},
2367
    { 0x0A, "F"},
2368
    { 0, NULL }
2369
};
2370
2371
static const value_string homeplug_av_st_iotecha_test_type_vals[] = {
2372
    { 0x00, "Power"},
2373
    { 0x01, "Error"},
2374
    { 0, NULL }
2375
};
2376
2377
static const value_string homeplug_av_st_iotecha_agc_lock_vals[] = {
2378
    { 0x00, "Disabled"},
2379
    { 0x01, "Enabled"},
2380
    { 0, NULL }
2381
};
2382
2383
static const value_string homeplug_av_st_iotecha_test_status_vals[] = {
2384
    { 0x00, "Test running"},
2385
    { 0x01, "Failed to start test"},
2386
    { 0x02, "Test reset"},
2387
    { 0, NULL }
2388
};
2389
2390
static const value_string homeplug_av_st_iotecha_suppress_data_vals[] = {
2391
    { 0x00, "Disabled"},
2392
    { 0x01, "Enabled"},
2393
    { 0, NULL }
2394
};
2395
2396
static void
2397
0
adc_bitmask_base(char *buf, uint8_t value) {
2398
0
    snprintf(buf, ITEM_LABEL_LENGTH, "%s, %s, %s (%d)",
2399
0
               (value & 0x01) ? "true" : "false",
2400
0
               (value & 0x02) ? "true" : "false",
2401
0
               (value & 0x04) ? "true" : "false",
2402
0
               value);
2403
0
}
2404
2405
/* End of ST/IoTecha specific values */
2406
2407
11
#define TVB_LEN_GREATEST  1
2408
0
#define TVB_LEN_UNDEF     0
2409
15
#define TVB_LEN_SHORTEST -1
2410
static int check_tvb_length(ptvcursor_t *cursor, const unsigned length)
2411
13
{
2412
13
    if (!cursor)
2413
0
        return TVB_LEN_UNDEF;
2414
2415
13
    if (tvb_reported_length_remaining(ptvcursor_tvbuff(cursor),
2416
13
                                      ptvcursor_current_offset(cursor)) < length)
2417
2
        return TVB_LEN_SHORTEST;
2418
2419
11
    return TVB_LEN_GREATEST;
2420
13
}
2421
2422
static inline unsigned int homeplug_av_mmtype_msb_is_vendor(uint8_t msb)
2423
21
{
2424
21
    return ((msb & (HOMEPLUG_AV_MMTYPE_MSB_VENDOR << HOMEPLUG_AV_MMTYPE_MSB_SHIFT)) ==
2425
21
            (HOMEPLUG_AV_MMTYPE_MSB_VENDOR << HOMEPLUG_AV_MMTYPE_MSB_SHIFT));
2426
21
}
2427
2428
static inline unsigned int homeplug_av_mmtype_msb_is_manufacturer(uint8_t msb)
2429
17
{
2430
17
    return ((msb & (HOMEPLUG_AV_MMTYPE_MSB_MANUF << HOMEPLUG_AV_MMTYPE_MSB_SHIFT)) ==
2431
17
            (HOMEPLUG_AV_MMTYPE_MSB_MANUF << HOMEPLUG_AV_MMTYPE_MSB_SHIFT));
2432
17
}
2433
2434
15
static inline uint8_t homeplug_av_get_mmhdr_size(uint8_t mmv) {
2435
    /* Header in HomePlug AV 1.1 is 2 bytes larger (Fragmentation information) */
2436
15
    return (mmv ? 5 : 3);
2437
15
}
2438
2439
/* Dissection of MMHDR */
2440
static void
2441
dissect_homeplug_av_mmhdr(ptvcursor_t *cursor, uint8_t *homeplug_av_mmver, uint16_t *homeplug_av_mmtype, uint32_t *homeplug_av_oui)
2442
11
{
2443
11
    proto_item *ti;
2444
11
    proto_tree *ti_mmtype;
2445
    /* Save in static variable */
2446
    /* proto_tree *ti_vendor; */
2447
11
    proto_tree *ti_public;
2448
11
    uint8_t lsb, msb, mmv;
2449
11
    uint32_t offset;
2450
2451
11
    offset = 0;
2452
2453
11
    mmv = tvb_get_uint8(ptvcursor_tvbuff(cursor),
2454
11
                         ptvcursor_current_offset(cursor));
2455
11
    lsb = tvb_get_uint8(ptvcursor_tvbuff(cursor),
2456
11
                         ptvcursor_current_offset(cursor) + 1);
2457
11
    msb = tvb_get_uint8(ptvcursor_tvbuff(cursor),
2458
11
                         ptvcursor_current_offset(cursor) + 2);
2459
2460
11
    *homeplug_av_mmver = mmv;
2461
11
    *homeplug_av_mmtype = (msb << 8) | lsb;
2462
2463
11
    if (homeplug_av_mmtype_msb_is_vendor(msb)
2464
9
        || homeplug_av_mmtype_msb_is_manufacturer(msb))
2465
4
    {
2466
        /* read three bytes of OUI */
2467
4
        *homeplug_av_oui = tvb_get_uint24(ptvcursor_tvbuff(cursor),
2468
4
                                           ptvcursor_current_offset(cursor)+homeplug_av_get_mmhdr_size(mmv),
2469
4
                                           ENC_NA);
2470
4
    }
2471
2472
11
    if (!ptvcursor_tree(cursor)) {
2473
        /* advance even there is no tree to be able to extract data in packet specific dissectors */
2474
0
        offset += homeplug_av_get_mmhdr_size(mmv);
2475
0
        if (homeplug_av_mmtype_msb_is_vendor(msb)
2476
0
            || homeplug_av_mmtype_msb_is_manufacturer(msb)) {
2477
0
            offset += 3;
2478
0
        }
2479
0
        ptvcursor_advance(cursor, offset);
2480
0
        return;
2481
0
    }
2482
2483
    /* Header in HomePlug AV 1.1 is 2 bytes larger (Fragmentation information) */
2484
11
    ti = ptvcursor_add_no_advance(cursor, hf_homeplug_av_mmhdr, homeplug_av_get_mmhdr_size(*homeplug_av_mmver), ENC_NA);
2485
2486
11
    ptvcursor_push_subtree(cursor, ti, ett_homeplug_av_mmhdr);
2487
11
    {
2488
11
        ptvcursor_add(cursor, hf_homeplug_av_mmhdr_mmver, 1, ENC_BIG_ENDIAN);
2489
2490
11
        switch (*homeplug_av_oui) {
2491
0
        case HOMEPLUG_AV_OUI_QCA:
2492
0
            ti_mmtype = ptvcursor_add_no_advance(cursor, hf_homeplug_av_mmhdr_mmtype_qualcomm, 2, ENC_LITTLE_ENDIAN);
2493
0
            break;
2494
0
        case HOMEPLUG_AV_OUI_ST_IOTECHA:
2495
0
            ti_mmtype = ptvcursor_add_no_advance(cursor, hf_homeplug_av_mmhdr_mmtype_st,       2, ENC_LITTLE_ENDIAN);
2496
0
            break;
2497
0
        case HOMEPLUG_AV_OUI_VERTEXCOM:
2498
0
            ti_mmtype = dissect_homeplug_av_mmhdr_mmtype_vertexcom(cursor);
2499
0
            break;
2500
11
        default:
2501
11
            ti_mmtype = ptvcursor_add_no_advance(cursor, hf_homeplug_av_mmhdr_mmtype_general,  2, ENC_LITTLE_ENDIAN);
2502
11
            break;
2503
11
        }
2504
2505
11
        ptvcursor_push_subtree(cursor, ti_mmtype, ett_homeplug_av_mmtype);
2506
11
        {
2507
11
            ptvcursor_add(cursor, hf_homeplug_av_mmhdr_mmtype_lsb, 1, ENC_BIG_ENDIAN);
2508
11
            ptvcursor_add(cursor, hf_homeplug_av_mmhdr_mmtype_msb, 1, ENC_BIG_ENDIAN);
2509
11
        }
2510
11
        ptvcursor_pop_subtree(cursor);
2511
2512
        /* Fragmentation information is part of the header in HomePlug AV 1.1 */
2513
11
        if (mmv)
2514
10
        {
2515
10
            ti_public = ptvcursor_add_no_advance(cursor, hf_homeplug_av_mmhdr_fmi, 2, ENC_LITTLE_ENDIAN);
2516
2517
10
            ptvcursor_push_subtree(cursor, ti_public, ett_homeplug_av_fmi);
2518
10
            {
2519
10
                ptvcursor_add_no_advance(cursor, hf_homeplug_av_public_frag_count, 1, ENC_BIG_ENDIAN);
2520
10
                ptvcursor_add(cursor, hf_homeplug_av_public_frag_index, 1, ENC_BIG_ENDIAN);
2521
10
                ptvcursor_add(cursor, hf_homeplug_av_public_frag_seqnum, 1, ENC_BIG_ENDIAN);
2522
10
            }
2523
10
            ptvcursor_pop_subtree(cursor);
2524
10
        }
2525
11
    }
2526
0
    ptvcursor_pop_subtree(cursor);
2527
2528
    /* Vendor management frame */
2529
11
    if (homeplug_av_mmtype_msb_is_vendor(msb) || homeplug_av_mmtype_msb_is_manufacturer(msb))
2530
4
    {
2531
4
        ti_vendor = ptvcursor_add_no_advance(cursor, hf_homeplug_av_vendor, 3, ENC_NA);
2532
2533
4
        ptvcursor_push_subtree(cursor, ti_vendor, ett_homeplug_av_vendor);
2534
4
        {
2535
4
            ptvcursor_add(cursor, hf_homeplug_av_vendor_oui, 3, ENC_NA);
2536
4
        }
2537
4
        ptvcursor_pop_subtree(cursor);
2538
4
    }
2539
    /* Public management frame in HomePlug AV 1.0 */
2540
7
    else if (!mmv)
2541
0
    {
2542
0
        ti_public = ptvcursor_add_no_advance(cursor, hf_homeplug_av_public, -1, ENC_NA);
2543
2544
0
        ptvcursor_push_subtree(cursor, ti_public, ett_homeplug_av_public);
2545
0
        {
2546
0
            ptvcursor_add_no_advance(cursor, hf_homeplug_av_public_frag_count, 1, ENC_BIG_ENDIAN);
2547
0
            ptvcursor_add(cursor, hf_homeplug_av_public_frag_index, 1, ENC_BIG_ENDIAN);
2548
0
            ptvcursor_add(cursor, hf_homeplug_av_public_frag_seqnum, 1, ENC_BIG_ENDIAN);
2549
0
        }
2550
0
        ptvcursor_pop_subtree(cursor);
2551
0
    }
2552
11
}
2553
2554
/* Beacon body */
2555
2556
static void
2557
dissect_homeplug_av_beacon_payload(ptvcursor_t *cursor)
2558
0
{
2559
2560
0
    proto_item *it;
2561
0
    proto_tree *tree;
2562
0
    tvbuff_t   *tvb;
2563
2564
0
    if (!ptvcursor_tree(cursor))
2565
0
        return;
2566
2567
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_bcn_payload, -1, ENC_NA);
2568
2569
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_bcn_payload);
2570
0
    {
2571
0
        tree = ptvcursor_tree(cursor);
2572
0
        tvb = ptvcursor_tvbuff(cursor);
2573
2574
0
        static int * const bcn1_fields[] = {
2575
0
            &hf_homeplug_av_bcn_nid,
2576
0
            &hf_homeplug_av_bcn_hm,
2577
0
            NULL
2578
0
        };
2579
2580
0
        proto_tree_add_bitmask_list(tree, tvb, ptvcursor_current_offset(cursor), 7, bcn1_fields, ENC_BIG_ENDIAN);
2581
0
        ptvcursor_advance(cursor, 7);
2582
2583
0
        ptvcursor_add(cursor, hf_homeplug_av_bcn_stei, 1, ENC_BIG_ENDIAN);
2584
2585
0
        static int * const bcn2_fields[] = {
2586
0
            &hf_homeplug_av_bcn_type,
2587
0
            &hf_homeplug_av_bcn_ncnr,
2588
0
            &hf_homeplug_av_bcn_npsm,
2589
0
            &hf_homeplug_av_bcn_num_slots,
2590
0
            NULL
2591
0
        };
2592
2593
0
        proto_tree_add_bitmask_list(tree, tvb, ptvcursor_current_offset(cursor), 1, bcn2_fields, ENC_BIG_ENDIAN);
2594
0
        ptvcursor_advance(cursor, 1);
2595
2596
0
        ptvcursor_add(cursor, hf_homeplug_av_bcn_slot_use, 1, ENC_BIG_ENDIAN);
2597
2598
0
        static int * const bcn3_fields[] = {
2599
0
            &hf_homeplug_av_bcn_slot_id,
2600
0
            &hf_homeplug_av_bcn_aclss,
2601
0
            &hf_homeplug_av_bcn_hoip,
2602
0
            &hf_homeplug_av_bcn_rtsbf,
2603
0
            NULL
2604
0
        };
2605
2606
0
        proto_tree_add_bitmask_list(tree, tvb, ptvcursor_current_offset(cursor), 1, bcn3_fields, ENC_BIG_ENDIAN);
2607
0
        ptvcursor_advance(cursor, 1);
2608
2609
0
        static int * const bcn4_fields[] = {
2610
0
            &hf_homeplug_av_bcn_nm,
2611
0
            &hf_homeplug_av_bcn_cco_cap,
2612
0
            &hf_homeplug_av_bcn_rsf,
2613
0
            &hf_homeplug_av_bcn_plevel,
2614
0
            NULL
2615
0
        };
2616
2617
0
        proto_tree_add_bitmask_list(tree, tvb, ptvcursor_current_offset(cursor), 1, bcn4_fields, ENC_BIG_ENDIAN);
2618
0
        ptvcursor_advance(cursor, 1);
2619
2620
        /* TODO: decode individual beacon entries */
2621
0
        ptvcursor_add(cursor, hf_homeplug_av_bcn_bentries, 120, ENC_NA);
2622
0
        ptvcursor_add(cursor, hf_homeplug_av_bcn_bpcs, 4, ENC_LITTLE_ENDIAN);
2623
0
    }
2624
0
    ptvcursor_pop_subtree(cursor);
2625
0
}
2626
2627
static void
2628
dissect_homeplug_av_beacon(ptvcursor_t *cursor)
2629
0
{
2630
0
    proto_item *it;
2631
2632
0
    if (!ptvcursor_tree(cursor))
2633
0
        return;
2634
2635
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_bcn, -1, ENC_NA);
2636
2637
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_bcn);
2638
0
    {
2639
0
        ptvcursor_add(cursor, hf_homeplug_av_bcn_bts, 4, ENC_LITTLE_ENDIAN);
2640
0
        ptvcursor_add(cursor, hf_homeplug_av_bcn_bto_0, 2, ENC_LITTLE_ENDIAN);
2641
0
        ptvcursor_add(cursor, hf_homeplug_av_bcn_bto_1, 2, ENC_LITTLE_ENDIAN);
2642
0
        ptvcursor_add(cursor, hf_homeplug_av_bcn_bto_2, 2, ENC_LITTLE_ENDIAN);
2643
0
        ptvcursor_add(cursor, hf_homeplug_av_bcn_bto_3, 2, ENC_LITTLE_ENDIAN);
2644
0
        ptvcursor_add(cursor, hf_homeplug_av_fc_fccs_av, 3, ENC_NA);
2645
0
        dissect_homeplug_av_beacon_payload(cursor);
2646
0
    }
2647
0
    ptvcursor_pop_subtree(cursor);
2648
0
}
2649
2650
/* Start of Frame */
2651
static void
2652
dissect_homeplug_av_start_of_frame(ptvcursor_t *cursor)
2653
0
{
2654
0
    proto_item *it;
2655
0
    proto_tree *tree;
2656
0
    tvbuff_t   *tvb;
2657
2658
0
    if (!ptvcursor_tree(cursor))
2659
0
        return;
2660
2661
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_sof, -1, ENC_NA);
2662
2663
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_sof);
2664
0
    {
2665
0
        tree = ptvcursor_tree(cursor);
2666
0
        tvb = ptvcursor_tvbuff(cursor);
2667
2668
0
        ptvcursor_add(cursor, hf_homeplug_av_stei, 1, ENC_BIG_ENDIAN);
2669
0
        ptvcursor_add(cursor, hf_homeplug_av_dtei, 1, ENC_BIG_ENDIAN);
2670
0
        ptvcursor_add(cursor, hf_homeplug_av_lid, 1, ENC_BIG_ENDIAN);
2671
2672
0
        static int * const sof1_fields[] = {
2673
0
            &hf_homeplug_av_cfs,
2674
0
            &hf_homeplug_av_bdf,
2675
0
            &hf_homeplug_av_hp10df,
2676
0
            &hf_homeplug_av_hp11df,
2677
0
            &hf_homeplug_av_sof_peks,
2678
0
            NULL
2679
0
        };
2680
2681
0
        proto_tree_add_bitmask_list(tree, tvb, ptvcursor_current_offset(cursor), 1, sof1_fields, ENC_BIG_ENDIAN);
2682
0
        ptvcursor_advance(cursor, 1);
2683
2684
0
        ptvcursor_add(cursor, hf_homeplug_av_ppb, 1, ENC_BIG_ENDIAN);
2685
0
        ptvcursor_add(cursor, hf_homeplug_av_sof_ble, 1, ENC_BIG_ENDIAN);
2686
2687
0
        static int * const sof2_fields[] = {
2688
0
            &hf_homeplug_av_sof_pbsz,
2689
0
            &hf_homeplug_av_sof_num_sym,
2690
0
            &hf_homeplug_av_sof_tmi_av,
2691
0
            NULL
2692
0
        };
2693
2694
0
        proto_tree_add_bitmask_list(tree, tvb, ptvcursor_current_offset(cursor), 1, sof2_fields, ENC_BIG_ENDIAN);
2695
0
        ptvcursor_advance(cursor, 1);
2696
2697
0
        static int * const sof3_fields[] = {
2698
0
            &hf_homeplug_av_fl_av,
2699
0
            &hf_homeplug_av_sof_mpdu_cnt,
2700
0
            &hf_homeplug_av_sof_burst_cnt,
2701
0
            NULL
2702
0
        };
2703
2704
0
        proto_tree_add_bitmask_list(tree, tvb, ptvcursor_current_offset(cursor), 2, sof3_fields, ENC_LITTLE_ENDIAN);
2705
0
        ptvcursor_advance(cursor, 2);
2706
2707
0
        static int * const sof4_fields[] = {
2708
0
            &hf_homeplug_av_sof_bbf,
2709
0
            &hf_homeplug_av_sof_mrtfl,
2710
0
            &hf_homeplug_av_sof_dccpcf,
2711
0
            &hf_homeplug_av_sof_mcf,
2712
0
            &hf_homeplug_av_sof_mnbf,
2713
0
            NULL
2714
0
        };
2715
2716
0
        proto_tree_add_bitmask_list(tree, tvb, ptvcursor_current_offset(cursor), 1, sof4_fields, ENC_BIG_ENDIAN);
2717
0
        ptvcursor_advance(cursor, 1);
2718
2719
0
        static int * const sof5_fields[] = {
2720
0
            &hf_homeplug_av_sof_rsr,
2721
0
            &hf_homeplug_av_sof_clst,
2722
0
            &hf_homeplug_av_sof_mfs_cmd_mgmt,
2723
0
            &hf_homeplug_av_sof_mfs_cmd_data,
2724
0
            NULL
2725
0
        };
2726
2727
0
        proto_tree_add_bitmask_list(tree, tvb, ptvcursor_current_offset(cursor), 1, sof5_fields, ENC_BIG_ENDIAN);
2728
0
        ptvcursor_advance(cursor, 1);
2729
2730
0
        static int * const sof6_fields[] = {
2731
0
            &hf_homeplug_av_sof_mfs_rsp_mgmt,
2732
0
            &hf_homeplug_av_sof_mfs_rsp_data,
2733
0
            &hf_homeplug_av_sof_bm_sack,
2734
0
            NULL
2735
0
        };
2736
2737
0
        proto_tree_add_bitmask_list(tree, tvb, ptvcursor_current_offset(cursor), 1, sof6_fields, ENC_BIG_ENDIAN);
2738
0
        ptvcursor_advance(cursor, 1);
2739
2740
0
        ptvcursor_add(cursor, hf_homeplug_av_fc_fccs_av, 3, ENC_NA);
2741
0
    }
2742
0
    ptvcursor_pop_subtree(cursor);
2743
0
}
2744
2745
/* Selective acknowledgment */
2746
static void
2747
dissect_homeplug_av_sack(ptvcursor_t *cursor)
2748
0
{
2749
0
    proto_item *it;
2750
0
    proto_tree *tree;
2751
0
    tvbuff_t   *tvb;
2752
2753
0
    if (!ptvcursor_tree(cursor))
2754
0
        return;
2755
2756
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_sack, -1, ENC_NA);
2757
2758
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_sack);
2759
0
    {
2760
0
        tree = ptvcursor_tree(cursor);
2761
0
        tvb = ptvcursor_tvbuff(cursor);
2762
2763
0
        ptvcursor_add(cursor, hf_homeplug_av_dtei, 1, ENC_BIG_ENDIAN);
2764
2765
0
        proto_tree_add_bitmask_list(tree, tvb, ptvcursor_current_offset(cursor), 1, rsof_sack_fields, ENC_BIG_ENDIAN);
2766
0
        ptvcursor_advance(cursor, 1);
2767
2768
        /* TODO: add variable fields here */
2769
0
        ptvcursor_advance(cursor, 10);
2770
0
        ptvcursor_add(cursor, hf_homeplug_av_fc_fccs_av, 3, ENC_NA);
2771
0
    }
2772
0
    ptvcursor_pop_subtree(cursor);
2773
0
}
2774
2775
/* Request to send/clear to send */
2776
static void
2777
dissect_homeplug_av_rtscts(ptvcursor_t *cursor)
2778
0
{
2779
0
    proto_item *it;
2780
0
    proto_tree *tree;
2781
0
    tvbuff_t   *tvb;
2782
2783
0
    if (!ptvcursor_tree(cursor))
2784
0
        return;
2785
2786
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_rtscts, -1, ENC_NA);
2787
2788
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_rtscts);
2789
0
    {
2790
0
        tree = ptvcursor_tree(cursor);
2791
0
        tvb = ptvcursor_tvbuff(cursor);
2792
2793
0
        ptvcursor_add(cursor, hf_homeplug_av_stei, 1, ENC_BIG_ENDIAN);
2794
0
        ptvcursor_add(cursor, hf_homeplug_av_dtei, 1, ENC_BIG_ENDIAN);
2795
0
        ptvcursor_add(cursor, hf_homeplug_av_lid, 1, ENC_BIG_ENDIAN);
2796
2797
0
        static int * const rtscts_fields[] = {
2798
0
            &hf_homeplug_av_cfs,
2799
0
            &hf_homeplug_av_bdf,
2800
0
            &hf_homeplug_av_hp10df,
2801
0
            &hf_homeplug_av_hp11df,
2802
0
            &hf_homeplug_av_rtscts_rtsf,
2803
0
            &hf_homeplug_av_rtscts_igf,
2804
0
            &hf_homeplug_av_rtscts_mnbf,
2805
0
            &hf_homeplug_av_rtscts_mcf,
2806
0
            NULL
2807
0
        };
2808
2809
0
        proto_tree_add_bitmask_list(tree, tvb, ptvcursor_current_offset(cursor), 1, rtscts_fields, ENC_BIG_ENDIAN);
2810
0
        ptvcursor_advance(cursor, 1);
2811
2812
0
        ptvcursor_add(cursor, hf_homeplug_av_rtscts_dur, 2, ENC_LITTLE_ENDIAN);
2813
0
        ptvcursor_add(cursor, hf_homeplug_av_reserved, 6, ENC_NA);
2814
0
        ptvcursor_add(cursor, hf_homeplug_av_fc_fccs_av, 3, ENC_NA);
2815
0
    }
2816
0
    ptvcursor_pop_subtree(cursor);
2817
0
}
2818
2819
/* Sound */
2820
static void
2821
dissect_homeplug_av_sound(ptvcursor_t *cursor)
2822
0
{
2823
0
    proto_item *it;
2824
0
    proto_tree *tree;
2825
0
    tvbuff_t   *tvb;
2826
2827
0
    if (!ptvcursor_tree(cursor))
2828
0
        return;
2829
2830
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_sound, -1, ENC_NA);
2831
2832
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_sound);
2833
0
    {
2834
0
        tree = ptvcursor_tree(cursor);
2835
0
        tvb = ptvcursor_tvbuff(cursor);
2836
2837
0
        ptvcursor_add(cursor, hf_homeplug_av_stei, 1, ENC_BIG_ENDIAN);
2838
0
        ptvcursor_add(cursor, hf_homeplug_av_dtei, 1, ENC_BIG_ENDIAN);
2839
0
        ptvcursor_add(cursor, hf_homeplug_av_lid, 1, ENC_BIG_ENDIAN);
2840
2841
0
        static int * const sound1_fields[] = {
2842
0
            &hf_homeplug_av_cfs,
2843
0
            &hf_homeplug_av_sound_pbsz,
2844
0
            &hf_homeplug_av_sound_bdf,
2845
0
            &hf_homeplug_av_sound_saf,
2846
0
            &hf_homeplug_av_sound_scf,
2847
0
            &hf_homeplug_av_sound_req_tm,
2848
0
            NULL
2849
0
        };
2850
2851
0
        proto_tree_add_bitmask_list(tree, tvb, ptvcursor_current_offset(cursor), 1, sound1_fields, ENC_BIG_ENDIAN);
2852
0
        ptvcursor_advance(cursor, 1);
2853
2854
0
        static int * const sound2_fields[] = {
2855
0
            &hf_homeplug_av_fl_av,
2856
0
            &hf_homeplug_av_sound_mpdu_cnt,
2857
0
            NULL
2858
0
        };
2859
2860
0
        proto_tree_add_bitmask_list(tree, tvb, ptvcursor_current_offset(cursor), 2, sound2_fields, ENC_LITTLE_ENDIAN);
2861
0
        ptvcursor_advance(cursor, 2);
2862
2863
0
        ptvcursor_add(cursor, hf_homeplug_av_ppb, 1, ENC_BIG_ENDIAN);
2864
0
        ptvcursor_add(cursor, hf_homeplug_av_sound_src, 1, ENC_BIG_ENDIAN);
2865
2866
0
        static int * const sound3_fields[] = {
2867
0
            &hf_homeplug_av_sound_add_req_tm,
2868
0
            &hf_homeplug_av_sound_max_pb_sym,
2869
0
            &hf_homeplug_av_sound_ecsf,
2870
0
            &hf_homeplug_av_sound_ecuf,
2871
0
            NULL
2872
0
        };
2873
2874
0
        proto_tree_add_bitmask_list(tree, tvb, ptvcursor_current_offset(cursor), 1, sound3_fields, ENC_BIG_ENDIAN);
2875
0
        ptvcursor_advance(cursor, 1);
2876
2877
0
        static int * const sound4_fields[] = {
2878
0
            &hf_homeplug_av_sound_ems,
2879
0
            &hf_homeplug_av_sound_esgisf,
2880
0
            &hf_homeplug_av_sound_elgisf,
2881
0
            &hf_homeplug_av_sound_efrs,
2882
0
            NULL
2883
0
        };
2884
2885
0
        proto_tree_add_bitmask_list(tree, tvb, ptvcursor_current_offset(cursor), 1, sound4_fields, ENC_BIG_ENDIAN);
2886
0
        ptvcursor_advance(cursor, 3); /* one byte for bitmask plus two reserved bytes we ignore */
2887
2888
0
        ptvcursor_add(cursor, hf_homeplug_av_fc_fccs_av, 3, ENC_NA);
2889
0
    }
2890
0
    ptvcursor_pop_subtree(cursor);
2891
0
}
2892
2893
/* Reverse Start of Frame */
2894
static void
2895
dissect_homeplug_av_rsof(ptvcursor_t *cursor)
2896
0
{
2897
0
    proto_item *it;
2898
0
    proto_tree *tree;
2899
0
    tvbuff_t   *tvb;
2900
2901
0
    if (!ptvcursor_tree(cursor))
2902
0
        return;
2903
2904
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_rsof, -1, ENC_NA);
2905
2906
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_rsof);
2907
0
    {
2908
0
        tree = ptvcursor_tree(cursor);
2909
0
        tvb = ptvcursor_tvbuff(cursor);
2910
2911
0
        ptvcursor_add(cursor, hf_homeplug_av_dtei, 1, ENC_BIG_ENDIAN);
2912
2913
0
        proto_tree_add_bitmask_list(tree, tvb, ptvcursor_current_offset(cursor), 1, rsof_sack_fields, ENC_BIG_ENDIAN);
2914
0
        ptvcursor_advance(cursor, 8); /* 1 byte for bitmask field, plus 7 bytes of variable data */
2915
        /* TODO: fill in variable fields */
2916
2917
0
        static int * const rsof2_fields[] = {
2918
0
            &hf_homeplug_av_rsof_fl,
2919
0
            &hf_homeplug_av_rsof_tmi,
2920
0
            &hf_homeplug_av_rsof_pbsz,
2921
0
            NULL
2922
0
        };
2923
2924
0
        proto_tree_add_bitmask_list(tree, tvb, ptvcursor_current_offset(cursor), 2, rsof2_fields, ENC_LITTLE_ENDIAN);
2925
0
        ptvcursor_advance(cursor, 2);
2926
2927
0
        static int * const rsof3_fields[] = {
2928
0
            &hf_homeplug_av_rsof_num_sym,
2929
0
            &hf_homeplug_av_rsof_mfs_cmd_mgmt,
2930
0
            &hf_homeplug_av_rsof_mfs_cmd_data,
2931
0
            NULL
2932
0
        };
2933
2934
0
        proto_tree_add_bitmask_list(tree, tvb, ptvcursor_current_offset(cursor), 1, rsof3_fields, ENC_BIG_ENDIAN);
2935
0
        ptvcursor_advance(cursor, 1);
2936
2937
0
        ptvcursor_add(cursor, hf_homeplug_av_fc_fccs_av, 3, ENC_NA);
2938
0
    }
2939
0
    ptvcursor_pop_subtree(cursor);
2940
0
}
2941
2942
static void
2943
dissect_homeplug_av_nw_info_sta(ptvcursor_t *cursor, bool vendor, unsigned homeplug_av_mmver)
2944
0
{
2945
0
    proto_item *it;
2946
2947
0
    if (!ptvcursor_tree(cursor))
2948
0
        return;
2949
2950
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_nw_info_sta_info, -1, ENC_NA);
2951
2952
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_nw_info_sta_info);
2953
0
    {
2954
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_sta_da, 6, ENC_NA);
2955
0
        if (vendor) {
2956
0
            ptvcursor_add(cursor, hf_homeplug_av_nw_info_sta_tei, 1, ENC_BIG_ENDIAN);
2957
2958
0
            if (homeplug_av_mmver == HOMEPLUG_AV_MMVER_1_1)
2959
0
                ptvcursor_add(cursor, hf_homeplug_av_reserved, 3, ENC_NA);
2960
2961
0
            ptvcursor_add(cursor, hf_homeplug_av_nw_info_sta_bda, 6, ENC_NA);
2962
0
        }
2963
0
        if (!homeplug_av_mmver)
2964
0
        {
2965
0
            ptvcursor_add(cursor, hf_homeplug_av10_nw_info_sta_phy_dr_tx, 1, ENC_BIG_ENDIAN);
2966
0
            ptvcursor_add(cursor, hf_homeplug_av10_nw_info_sta_phy_dr_rx, 1, ENC_BIG_ENDIAN);
2967
0
        }
2968
0
        else if (homeplug_av_mmver == HOMEPLUG_AV_MMVER_1_1)
2969
0
        {
2970
0
            ptvcursor_add(cursor, hf_homeplug_av11_nw_info_sta_phy_dr_tx, 2, ENC_LITTLE_ENDIAN);
2971
0
            ptvcursor_add_no_advance(cursor, hf_homeplug_av11_nw_info_sta_cpling_tx, 1, ENC_BIG_ENDIAN);
2972
0
            ptvcursor_add(cursor, hf_homeplug_av11_nw_info_sta_cpling_rx, 1, ENC_BIG_ENDIAN);
2973
0
            ptvcursor_add(cursor, hf_homeplug_av_reserved, 1, ENC_NA);
2974
0
            ptvcursor_add(cursor, hf_homeplug_av11_nw_info_sta_phy_dr_rx, 2, ENC_LITTLE_ENDIAN);
2975
0
            ptvcursor_add(cursor, hf_homeplug_av_reserved, 2, ENC_NA);
2976
0
        }
2977
0
    }
2978
0
    ptvcursor_pop_subtree(cursor);
2979
0
}
2980
2981
static void
2982
dissect_homeplug_av_nw_info_net(ptvcursor_t *cursor, bool vendor, uint8_t homeplug_av_mmver)
2983
0
{
2984
0
    proto_item *it;
2985
2986
0
    if (!ptvcursor_tree(cursor))
2987
0
        return;
2988
2989
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_nw_info_net_info, -1, ENC_NA);
2990
2991
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_nw_info_net_info);
2992
0
    {
2993
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_nid, 7, ENC_NA);
2994
2995
0
        if (homeplug_av_mmver == HOMEPLUG_AV_MMVER_1_1)
2996
0
            ptvcursor_add(cursor, hf_homeplug_av_reserved, 2, ENC_NA);
2997
2998
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_snid, 1, ENC_BIG_ENDIAN);
2999
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_tei, 1, ENC_BIG_ENDIAN);
3000
3001
0
        if (homeplug_av_mmver == HOMEPLUG_AV_MMVER_1_1)
3002
0
            ptvcursor_add(cursor, hf_homeplug_av_reserved, 4, ENC_NA);
3003
3004
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_sta_role, 1, ENC_BIG_ENDIAN);
3005
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_cco_mac, 6, ENC_NA);
3006
0
        if (vendor) {
3007
0
            ptvcursor_add(cursor, hf_homeplug_av_nw_info_cco_tei, 1, ENC_BIG_ENDIAN);
3008
3009
0
            if (homeplug_av_mmver == HOMEPLUG_AV_MMVER_1_1)
3010
0
                ptvcursor_add(cursor, hf_homeplug_av_reserved, 3, ENC_NA);
3011
0
        }
3012
0
        else
3013
0
        {
3014
0
            ptvcursor_add(cursor, hf_homeplug_av_nw_info_access, 1, ENC_BIG_ENDIAN);
3015
0
            ptvcursor_add(cursor, hf_homeplug_av_nw_info_num_coord, 1, ENC_BIG_ENDIAN);
3016
0
        }
3017
0
    }
3018
0
    ptvcursor_pop_subtree(cursor);
3019
0
}
3020
3021
/* Public MMEs */
3022
static void
3023
dissect_homeplug_av_cc_sta_info(ptvcursor_t *cursor)
3024
0
{
3025
0
    proto_item *it;
3026
3027
0
    if (!ptvcursor_tree(cursor))
3028
0
        return;
3029
3030
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_cc_sta_info, -1, ENC_NA);
3031
3032
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_cc_sta_info);
3033
0
    {
3034
0
        ptvcursor_add(cursor, hf_homeplug_av_cc_sta_info_mac, 6, ENC_NA);
3035
0
        ptvcursor_add(cursor, hf_homeplug_av_cc_sta_info_tei, 1, ENC_BIG_ENDIAN);
3036
0
        ptvcursor_add(cursor, hf_homeplug_av_cc_sta_info_same_net, 1, ENC_BIG_ENDIAN);
3037
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_snid, 1, ENC_BIG_ENDIAN);
3038
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_cco_cap, 1, ENC_BIG_ENDIAN);
3039
0
        ptvcursor_add(cursor, hf_homeplug_av_cc_sta_info_sig_level, 1, ENC_BIG_ENDIAN);
3040
0
        ptvcursor_add(cursor, hf_homeplug_av_cc_sta_info_avg_ble, 1, ENC_BIG_ENDIAN);
3041
0
    }
3042
0
    ptvcursor_pop_subtree(cursor);
3043
0
}
3044
3045
static void
3046
dissect_homeplug_av_cc_net_info(ptvcursor_t *cursor)
3047
0
{
3048
0
    proto_item *it;
3049
3050
0
    if (!ptvcursor_tree(cursor))
3051
0
        return;
3052
3053
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_cc_net_info, -1, ENC_NA);
3054
3055
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_cc_net_info);
3056
0
    {
3057
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_nid, 7, ENC_NA);
3058
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_snid, 1, ENC_BIG_ENDIAN);
3059
0
        ptvcursor_add(cursor, hf_homeplug_av_cc_net_info_hyb_mode, 1, ENC_BIG_ENDIAN);
3060
0
        ptvcursor_add(cursor, hf_homeplug_av_cc_net_info_bcn_slots, 1, ENC_BIG_ENDIAN);
3061
0
        ptvcursor_add(cursor, hf_homeplug_av_cc_net_info_cco_sts, 1, ENC_BIG_ENDIAN);
3062
0
        ptvcursor_add(cursor, hf_homeplug_av_cc_net_info_bcn_ofs, 2, ENC_BIG_ENDIAN);
3063
0
    }
3064
0
    ptvcursor_pop_subtree(cursor);
3065
0
}
3066
3067
static void
3068
dissect_homeplug_av_cc_disc_list_cnf(ptvcursor_t *cursor)
3069
0
{
3070
0
    proto_item *it;
3071
0
    uint8_t     num_stas;
3072
0
    uint8_t     sta;
3073
0
    uint8_t     num_nets;
3074
0
    uint8_t     net;
3075
3076
0
    if (!ptvcursor_tree(cursor))
3077
0
        return;
3078
3079
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_cc_disc_list_cnf, -1, ENC_NA);
3080
3081
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_cc_disc_list_cnf);
3082
0
    {
3083
0
        num_stas = tvb_get_uint8(ptvcursor_tvbuff(cursor),
3084
0
                                  ptvcursor_current_offset(cursor));
3085
0
        ptvcursor_add(cursor, hf_homeplug_av_cc_disc_list_sta_cnt, 1, ENC_BIG_ENDIAN);
3086
3087
0
        for (sta = 0; sta < num_stas; sta++) {
3088
0
            dissect_homeplug_av_cc_sta_info(cursor);
3089
0
        }
3090
3091
0
        num_nets = tvb_get_uint8(ptvcursor_tvbuff(cursor),
3092
0
                                  ptvcursor_current_offset(cursor));
3093
0
        ptvcursor_add(cursor, hf_homeplug_av_cc_disc_list_net_cnt, 1, ENC_BIG_ENDIAN);
3094
3095
0
        for (net = 0; net < num_nets; net++) {
3096
0
            dissect_homeplug_av_cc_net_info(cursor);
3097
0
        }
3098
0
    }
3099
0
    ptvcursor_pop_subtree(cursor);
3100
0
}
3101
3102
static void
3103
dissect_homeplug_av_cm_enc_pld_ind(ptvcursor_t *cursor)
3104
0
{
3105
0
    proto_item *it;
3106
0
    uint8_t     pid;
3107
3108
0
    if (!ptvcursor_tree(cursor))
3109
0
        return;
3110
3111
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_cm_enc_pld_ind, -1, ENC_NA);
3112
3113
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_cm_enc_pld_ind);
3114
0
    {
3115
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_peks, 1, ENC_BIG_ENDIAN);
3116
0
        ptvcursor_add(cursor, hf_homeplug_av_cm_enc_pld_ind_avlns, 1, ENC_BIG_ENDIAN);
3117
0
        pid = tvb_get_uint8(ptvcursor_tvbuff(cursor),
3118
0
                             ptvcursor_current_offset(cursor));
3119
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_pid, 1, ENC_BIG_ENDIAN);
3120
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_prn, 2, ENC_LITTLE_ENDIAN);
3121
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_pmn, 1, ENC_BIG_ENDIAN);
3122
0
        if (pid == HOMEPLUG_AV_PID_HLE) {
3123
0
            ptvcursor_add(cursor, hf_homeplug_av_cm_enc_pld_ind_iv, 16, ENC_NA);
3124
0
        } else {
3125
0
            ptvcursor_add(cursor, hf_homeplug_av_cm_enc_pld_ind_uuid, 16, ENC_LITTLE_ENDIAN);
3126
0
        }
3127
0
        ptvcursor_add(cursor, hf_homeplug_av_cm_enc_pld_ind_len, 2, ENC_LITTLE_ENDIAN);
3128
3129
        /* Encrypted payload follows */
3130
0
        if (pid != HOMEPLUG_AV_PID_HLE) {
3131
0
            ptvcursor_add(cursor, hf_homeplug_av_cm_enc_pld_ind_pld, -1, ENC_NA);
3132
0
        }
3133
0
    }
3134
0
    ptvcursor_pop_subtree(cursor);
3135
0
}
3136
3137
static void
3138
dissect_homeplug_av_cm_enc_pld_rsp(ptvcursor_t *cursor)
3139
0
{
3140
0
    proto_item *it;
3141
3142
0
    if (!ptvcursor_tree(cursor))
3143
0
        return;
3144
3145
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_cm_enc_pld_rsp, -1, ENC_NA);
3146
3147
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_cm_enc_pld_rsp);
3148
0
    {
3149
0
        ptvcursor_add(cursor, hf_homeplug_av_cm_enc_pld_rsp_result, 1, ENC_BIG_ENDIAN);
3150
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_pid, 1, ENC_BIG_ENDIAN);
3151
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_prn, 2, ENC_LITTLE_ENDIAN);
3152
0
    }
3153
0
    ptvcursor_pop_subtree(cursor);
3154
0
}
3155
3156
static void
3157
dissect_homeplug_av_cm_set_key_req(ptvcursor_t *cursor)
3158
0
{
3159
0
    proto_item *it;
3160
3161
0
    if (!ptvcursor_tree(cursor))
3162
0
        return;
3163
3164
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_cm_set_key_req, -1, ENC_NA);
3165
3166
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_cm_set_key_req);
3167
0
    {
3168
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_key_type, 1, ENC_BIG_ENDIAN);
3169
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_my_nonce, 4, ENC_LITTLE_ENDIAN);
3170
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_your_nonce, 4, ENC_LITTLE_ENDIAN);
3171
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_pid, 1, ENC_BIG_ENDIAN);
3172
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_prn, 2, ENC_LITTLE_ENDIAN);
3173
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_pmn, 1, ENC_BIG_ENDIAN);
3174
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_cco_cap, 1, ENC_BIG_ENDIAN);
3175
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_nid, 7, ENC_NA);
3176
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_peks, 1, ENC_BIG_ENDIAN);
3177
0
        ptvcursor_add(cursor, hf_homeplug_av_cm_set_key_req_nw_key, 16, ENC_NA);
3178
0
    }
3179
0
    ptvcursor_pop_subtree(cursor);
3180
0
}
3181
3182
static void
3183
dissect_homeplug_av_cm_set_key_cnf(ptvcursor_t *cursor)
3184
0
{
3185
0
    proto_item *it;
3186
3187
0
    if (!ptvcursor_tree(cursor))
3188
0
        return;
3189
3190
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_cm_set_key_cnf, -1, ENC_NA);
3191
3192
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_cm_set_key_cnf);
3193
0
    {
3194
0
        ptvcursor_add(cursor, hf_homeplug_av_cm_set_key_cnf_result, 1, ENC_BIG_ENDIAN);
3195
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_my_nonce, 4, ENC_LITTLE_ENDIAN);
3196
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_your_nonce, 4, ENC_LITTLE_ENDIAN);
3197
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_pid, 1, ENC_BIG_ENDIAN);
3198
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_prn, 2, ENC_LITTLE_ENDIAN);
3199
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_pmn, 1, ENC_BIG_ENDIAN);
3200
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_cco_cap, 1, ENC_BIG_ENDIAN);
3201
0
    }
3202
0
    ptvcursor_pop_subtree(cursor);
3203
0
}
3204
3205
static void
3206
dissect_homeplug_av_cm_get_key_req(ptvcursor_t *cursor)
3207
0
{
3208
0
    proto_item *it;
3209
0
    uint8_t     key_type;
3210
3211
0
    if (!ptvcursor_tree(cursor))
3212
0
        return;
3213
3214
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_cm_get_key_req, -1, ENC_NA);
3215
3216
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_cm_get_key_req);
3217
0
    {
3218
3219
0
        ptvcursor_add(cursor, hf_homeplug_av_cm_get_key_req_type, 1, ENC_BIG_ENDIAN);
3220
0
        key_type = tvb_get_uint8(ptvcursor_tvbuff(cursor),
3221
0
                                  ptvcursor_current_offset(cursor));
3222
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_key_type, 1, ENC_BIG_ENDIAN);
3223
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_nid, 7, ENC_NA);
3224
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_my_nonce, 4, ENC_LITTLE_ENDIAN);
3225
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_pid, 1, ENC_BIG_ENDIAN);
3226
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_prn, 2, ENC_LITTLE_ENDIAN);
3227
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_pmn, 1, ENC_BIG_ENDIAN);
3228
0
        if (key_type == HOMEPLUG_AV_KEY_TYPE_HASH) {
3229
0
            ptvcursor_add(cursor, hf_homeplug_av_cm_get_key_req_has_key, -1, ENC_NA);
3230
0
        }
3231
0
    }
3232
0
    ptvcursor_pop_subtree(cursor);
3233
0
}
3234
3235
static void
3236
dissect_homeplug_av_cm_get_key_cnf(ptvcursor_t *cursor)
3237
0
{
3238
0
    proto_item *it;
3239
3240
0
    if (!ptvcursor_tree(cursor))
3241
0
        return;
3242
3243
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_cm_get_key_cnf, -1, ENC_NA);
3244
3245
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_cm_get_key_cnf);
3246
0
    {
3247
0
        ptvcursor_add(cursor, hf_homeplug_av_cm_get_key_cnf_result, 1, ENC_BIG_ENDIAN);
3248
0
        ptvcursor_add(cursor, hf_homeplug_av_cm_get_key_cnf_rtype, 1, ENC_BIG_ENDIAN);
3249
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_my_nonce, 4, ENC_LITTLE_ENDIAN);
3250
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_your_nonce, 4, ENC_LITTLE_ENDIAN);
3251
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_nid, 7, ENC_NA);
3252
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_peks, 1, ENC_BIG_ENDIAN);
3253
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_pid, 1, ENC_BIG_ENDIAN);
3254
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_prn, 2, ENC_LITTLE_ENDIAN);
3255
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_pmn, 1, ENC_BIG_ENDIAN);
3256
0
        ptvcursor_add(cursor, hf_homeplug_av_cm_get_key_cnf_key, -1, ENC_NA);
3257
0
    }
3258
0
    ptvcursor_pop_subtree(cursor);
3259
0
}
3260
3261
static void
3262
dissect_homeplug_av_get_brg_infos_cnf(ptvcursor_t *cursor)
3263
0
{
3264
0
    proto_item *it;
3265
0
    uint8_t     bridging;
3266
0
    uint8_t     num_stas;
3267
0
    uint8_t     sta;
3268
3269
0
    if (!ptvcursor_tree(cursor))
3270
0
        return;
3271
3272
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_brg_infos_cnf, -1, ENC_NA);
3273
3274
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_brg_infos_cnf);
3275
0
    {
3276
0
        bridging = tvb_get_uint8(ptvcursor_tvbuff(cursor),
3277
0
                                  ptvcursor_current_offset(cursor));
3278
0
        ptvcursor_add(cursor, hf_homeplug_av_brg_infos_cnf_brd, 1, ENC_BIG_ENDIAN);
3279
3280
0
        if (bridging) {
3281
0
            ptvcursor_add(cursor, hf_homeplug_av_brg_infos_cnf_btei, 1, ENC_BIG_ENDIAN);
3282
3283
0
            num_stas = tvb_get_uint8(ptvcursor_tvbuff(cursor),
3284
0
                                      ptvcursor_current_offset(cursor));
3285
0
            ptvcursor_add(cursor, hf_homeplug_av_brg_infos_cnf_num_stas, 1, ENC_BIG_ENDIAN);
3286
3287
0
            for (sta = 0; sta < num_stas; sta++) {
3288
0
                ptvcursor_add(cursor, hf_homeplug_av_brg_infos_cnf_mac, 6, ENC_NA);
3289
0
            }
3290
0
        }
3291
0
    }
3292
0
    ptvcursor_pop_subtree(cursor);
3293
0
}
3294
3295
static void
3296
dissect_homeplug_av_nw_infos_cnf(ptvcursor_t *cursor)
3297
0
{
3298
0
    proto_item *it;
3299
0
    uint8_t     num_avlns;
3300
0
    uint8_t     net;
3301
3302
0
    if (!ptvcursor_tree(cursor))
3303
0
        return;
3304
3305
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_cm_nw_infos_cnf, -1, ENC_NA);
3306
3307
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_cm_nw_infos_cnf);
3308
0
    {
3309
0
        num_avlns = tvb_get_uint8(ptvcursor_tvbuff(cursor),
3310
0
                                   ptvcursor_current_offset(cursor));
3311
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_num_avlns, 1, ENC_BIG_ENDIAN);
3312
3313
0
        for (net = 0; net < num_avlns; net++) {
3314
            /* Force HomePlug AV 1.0 layout here */
3315
0
            dissect_homeplug_av_nw_info_net(cursor, false, 0);
3316
0
        }
3317
0
    }
3318
0
    ptvcursor_pop_subtree(cursor);
3319
0
}
3320
3321
static void
3322
dissect_homeplug_av_nw_stats_cnf(ptvcursor_t *cursor)
3323
0
{
3324
0
    proto_item *it;
3325
0
    uint8_t     num_stas;
3326
0
    uint8_t     sta;
3327
3328
0
    if (!ptvcursor_tree(cursor))
3329
0
        return;
3330
3331
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_nw_stats_cnf, -1, ENC_NA);
3332
3333
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_nw_stats_cnf);
3334
0
    {
3335
0
        num_stas = tvb_get_uint8(ptvcursor_tvbuff(cursor),
3336
0
                                  ptvcursor_current_offset(cursor));
3337
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_num_stas, 1, ENC_BIG_ENDIAN);
3338
3339
0
        for (sta = 0; sta < num_stas; sta++) {
3340
            /* Force HomePlug AV 1.0 layout here */
3341
0
            dissect_homeplug_av_nw_info_sta(cursor, false, 0);
3342
0
        }
3343
0
    }
3344
0
    ptvcursor_pop_subtree(cursor);
3345
0
}
3346
3347
/* Intellon - Qualcomm specific MME Types */
3348
static void
3349
dissect_homeplug_av_get_sw_cnf(ptvcursor_t *cursor)
3350
0
{
3351
0
    proto_item *it;
3352
3353
0
    if (!ptvcursor_tree(cursor))
3354
0
        return;
3355
3356
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_get_sw_cnf, -1, ENC_NA);
3357
3358
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_get_sw_cnf);
3359
0
    {
3360
0
        ptvcursor_add(cursor, hf_homeplug_av_get_sw_cnf_status, 1, ENC_BIG_ENDIAN);
3361
0
        ptvcursor_add(cursor, hf_homeplug_av_get_sw_cnf_dev_id, 1, ENC_BIG_ENDIAN);
3362
0
        ptvcursor_add(cursor, hf_homeplug_av_get_sw_cnf_ver_len, 1, ENC_BIG_ENDIAN);
3363
0
        ptvcursor_add(cursor, hf_homeplug_av_get_sw_cnf_ver_str, 64, ENC_ASCII);
3364
0
        ptvcursor_add(cursor, hf_homeplug_av_get_sw_cnf_upg, 1, ENC_BIG_ENDIAN);
3365
0
    }
3366
0
    ptvcursor_pop_subtree(cursor);
3367
0
}
3368
3369
static void
3370
dissect_homeplug_av_wr_mem_req(ptvcursor_t *cursor)
3371
0
{
3372
0
    proto_item *it;
3373
3374
0
    if (!ptvcursor_tree(cursor))
3375
0
        return;
3376
3377
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_wr_mem_req, -1, ENC_NA);
3378
3379
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_wr_mem_req);
3380
0
    {
3381
0
        ptvcursor_add(cursor, hf_homeplug_av_mem_addr, 4, ENC_LITTLE_ENDIAN);
3382
0
        ptvcursor_add(cursor, hf_homeplug_av_mem_len_32bits, 4, ENC_LITTLE_ENDIAN);
3383
0
        ptvcursor_add_no_advance(cursor, hf_homeplug_av_mem_data, -1, ENC_NA);
3384
0
    }
3385
0
    ptvcursor_pop_subtree(cursor);
3386
0
}
3387
3388
static void
3389
dissect_homeplug_av_wr_mem_cnf(ptvcursor_t *cursor)
3390
0
{
3391
0
    proto_item *it;
3392
3393
0
    if (!ptvcursor_tree(cursor))
3394
0
        return;
3395
3396
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_wr_mem_cnf, -1, ENC_NA);
3397
3398
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_wr_mem_cnf);
3399
0
    {
3400
0
        ptvcursor_add(cursor, hf_homeplug_av_mem_status, 1, ENC_BIG_ENDIAN);
3401
0
        ptvcursor_add(cursor, hf_homeplug_av_mem_addr, 4, ENC_LITTLE_ENDIAN);
3402
0
        ptvcursor_add(cursor, hf_homeplug_av_mem_len_32bits, 4, ENC_LITTLE_ENDIAN);
3403
0
    }
3404
0
    ptvcursor_pop_subtree(cursor);
3405
0
}
3406
3407
static void
3408
dissect_homeplug_av_rd_mem_req(ptvcursor_t *cursor)
3409
0
{
3410
0
    proto_item *it;
3411
3412
0
    if (!ptvcursor_tree(cursor))
3413
0
        return;
3414
3415
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_rd_mem_req, -1, ENC_NA);
3416
3417
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_rd_mem_req);
3418
0
    {
3419
0
        ptvcursor_add(cursor, hf_homeplug_av_mem_addr, 4, ENC_LITTLE_ENDIAN);
3420
0
        ptvcursor_add(cursor, hf_homeplug_av_mem_len_32bits, 4, ENC_LITTLE_ENDIAN);
3421
0
    }
3422
0
    ptvcursor_pop_subtree(cursor);
3423
0
}
3424
3425
static void
3426
dissect_homeplug_av_rd_mem_cnf(ptvcursor_t *cursor)
3427
0
{
3428
0
    proto_item *it;
3429
3430
0
    if (!ptvcursor_tree(cursor))
3431
0
        return;
3432
3433
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_rd_mem_cnf, -1, ENC_NA);
3434
3435
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_rd_mem_cnf);
3436
0
    {
3437
0
        ptvcursor_add(cursor, hf_homeplug_av_mem_status, 1, ENC_BIG_ENDIAN);
3438
0
        ptvcursor_add(cursor, hf_homeplug_av_mem_addr, 4, ENC_LITTLE_ENDIAN);
3439
0
        ptvcursor_add(cursor, hf_homeplug_av_mem_len_32bits, 4, ENC_LITTLE_ENDIAN);
3440
0
        ptvcursor_add_no_advance(cursor, hf_homeplug_av_mem_data, -1, ENC_NA);
3441
0
    }
3442
0
    ptvcursor_pop_subtree(cursor);
3443
0
}
3444
3445
static void
3446
dissect_homeplug_av_st_mac_req(ptvcursor_t *cursor)
3447
0
{
3448
0
    proto_item *it;
3449
3450
0
    if (!ptvcursor_tree(cursor))
3451
0
        return;
3452
3453
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_st_mac_req, -1, ENC_NA);
3454
3455
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_st_mac_req);
3456
0
    {
3457
0
        ptvcursor_add(cursor, hf_homeplug_av_mac_module_id, 1, ENC_BIG_ENDIAN);
3458
0
        ptvcursor_add(cursor, hf_homeplug_av_reserved, 3, ENC_NA);
3459
0
        ptvcursor_add(cursor, hf_homeplug_av_st_mac_req_img_load, 4, ENC_LITTLE_ENDIAN);
3460
0
        ptvcursor_add(cursor, hf_homeplug_av_st_mac_req_img_len, 4, ENC_LITTLE_ENDIAN);
3461
0
        ptvcursor_add(cursor, hf_homeplug_av_st_mac_req_img_chksum, 4, ENC_LITTLE_ENDIAN);
3462
0
        ptvcursor_add(cursor, hf_homeplug_av_st_mac_req_img_start, 4, ENC_LITTLE_ENDIAN);
3463
0
    }
3464
0
    ptvcursor_pop_subtree(cursor);
3465
0
}
3466
3467
3468
static void
3469
dissect_homeplug_av_st_mac_cnf(ptvcursor_t *cursor)
3470
0
{
3471
0
    proto_item *it;
3472
3473
0
    if (!ptvcursor_tree(cursor))
3474
0
        return;
3475
3476
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_st_mac_cnf, -1, ENC_NA);
3477
3478
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_st_mac_cnf);
3479
0
    {
3480
0
        ptvcursor_add(cursor, hf_homeplug_av_st_mac_cnf_status, 1, ENC_BIG_ENDIAN);
3481
0
        ptvcursor_add(cursor, hf_homeplug_av_mac_module_id, 1, ENC_BIG_ENDIAN);
3482
0
    }
3483
0
    ptvcursor_pop_subtree(cursor);
3484
0
}
3485
3486
static void
3487
dissect_homeplug_av_get_nvm_cnf(ptvcursor_t *cursor)
3488
0
{
3489
0
    proto_item *it;
3490
3491
0
    if (!ptvcursor_tree(cursor))
3492
0
        return;
3493
3494
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_get_nvm_cnf, -1, ENC_NA);
3495
3496
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_get_nvm_cnf);
3497
0
    {
3498
0
        ptvcursor_add(cursor, hf_homeplug_av_get_nvm_cnf_status, 1, ENC_BIG_ENDIAN);
3499
0
        ptvcursor_add(cursor, hf_homeplug_av_get_nvm_cnf_nvm_type, 4, ENC_LITTLE_ENDIAN);
3500
0
        ptvcursor_add(cursor, hf_homeplug_av_get_nvm_cnf_nvm_page, 4, ENC_LITTLE_ENDIAN);
3501
0
        ptvcursor_add(cursor, hf_homeplug_av_get_nvm_cnf_nvm_block, 4, ENC_LITTLE_ENDIAN);
3502
0
        ptvcursor_add(cursor, hf_homeplug_av_get_nvm_cnf_nvm_size, 4, ENC_LITTLE_ENDIAN);
3503
0
    }
3504
0
    ptvcursor_pop_subtree(cursor);
3505
0
}
3506
3507
static void
3508
dissect_homeplug_av_rs_dev_cnf(ptvcursor_t *cursor)
3509
0
{
3510
0
    proto_item *it;
3511
3512
0
    if (!ptvcursor_tree(cursor))
3513
0
        return;
3514
3515
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_rs_dev_cnf, -1, ENC_NA);
3516
3517
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_rs_dev_cnf);
3518
0
    {
3519
0
        ptvcursor_add(cursor, hf_homeplug_av_rs_dev_cnf_status, 1, ENC_BIG_ENDIAN);
3520
0
    }
3521
0
    ptvcursor_pop_subtree(cursor);
3522
0
}
3523
3524
static void dissect_homeplug_av_wr_mod_req(ptvcursor_t *cursor)
3525
0
{
3526
0
    proto_item *it;
3527
3528
0
    if (!ptvcursor_tree(cursor))
3529
0
        return;
3530
3531
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_wr_mod_req, -1, ENC_NA);
3532
3533
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_wr_mod_req);
3534
0
    {
3535
0
        ptvcursor_add(cursor, hf_homeplug_av_mac_module_id, 1, ENC_BIG_ENDIAN);
3536
0
        ptvcursor_add(cursor, hf_homeplug_av_reserved, 1, ENC_NA);
3537
0
        ptvcursor_add(cursor, hf_homeplug_av_mem_len_16bits, 2, ENC_LITTLE_ENDIAN);
3538
0
        ptvcursor_add(cursor, hf_homeplug_av_mem_offset, 4, ENC_LITTLE_ENDIAN);
3539
0
        ptvcursor_add(cursor, hf_homeplug_av_mem_checksum, 4, ENC_LITTLE_ENDIAN);
3540
0
        ptvcursor_add_no_advance(cursor, hf_homeplug_av_mem_data, -1, ENC_NA);
3541
0
    }
3542
0
    ptvcursor_pop_subtree(cursor);
3543
0
}
3544
3545
static void dissect_homeplug_av_wr_mod_cnf(ptvcursor_t *cursor)
3546
0
{
3547
0
    proto_item *it;
3548
3549
0
    if (!ptvcursor_tree(cursor))
3550
0
        return;
3551
3552
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_wr_mod_cnf, -1, ENC_NA);
3553
3554
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_wr_mod_cnf);
3555
0
    {
3556
0
        ptvcursor_add(cursor, hf_homeplug_av_wr_mod_cnf_status, 1, ENC_BIG_ENDIAN);
3557
0
        ptvcursor_add(cursor, hf_homeplug_av_mac_module_id, 1, ENC_BIG_ENDIAN);
3558
0
        ptvcursor_add(cursor, hf_homeplug_av_reserved, 1, ENC_NA);
3559
0
        ptvcursor_add(cursor, hf_homeplug_av_mem_len_16bits, 2, ENC_LITTLE_ENDIAN);
3560
0
        ptvcursor_add(cursor, hf_homeplug_av_mem_offset, 4, ENC_LITTLE_ENDIAN);
3561
0
    }
3562
0
    ptvcursor_pop_subtree(cursor);
3563
0
}
3564
3565
static void dissect_homeplug_av_wr_mod_ind(ptvcursor_t *cursor)
3566
0
{
3567
0
    proto_item *it;
3568
3569
0
    if (!ptvcursor_tree(cursor))
3570
0
        return;
3571
3572
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_wr_mod_ind, -1, ENC_NA);
3573
3574
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_wr_mod_ind);
3575
0
    {
3576
0
        ptvcursor_add(cursor, hf_homeplug_av_wr_mod_ind_status, 1, ENC_BIG_ENDIAN);
3577
0
        ptvcursor_add(cursor, hf_homeplug_av_mac_module_id, 1, ENC_BIG_ENDIAN);
3578
0
    }
3579
0
    ptvcursor_pop_subtree(cursor);
3580
0
}
3581
3582
static void
3583
dissect_homeplug_av_rd_mod_req(ptvcursor_t *cursor)
3584
0
{
3585
0
    proto_item *it;
3586
3587
0
    if (!ptvcursor_tree(cursor))
3588
0
        return;
3589
3590
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_rd_mod_req, -1, ENC_NA);
3591
3592
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_rd_mod_req);
3593
0
    {
3594
0
        ptvcursor_add(cursor, hf_homeplug_av_mac_module_id, 1, ENC_BIG_ENDIAN);
3595
0
        ptvcursor_add(cursor, hf_homeplug_av_reserved, 1, ENC_NA);
3596
0
        ptvcursor_add(cursor, hf_homeplug_av_mem_len_16bits, 2, ENC_LITTLE_ENDIAN);
3597
0
        ptvcursor_add(cursor, hf_homeplug_av_mem_offset, 4, ENC_LITTLE_ENDIAN);
3598
0
    }
3599
0
    ptvcursor_pop_subtree(cursor);
3600
0
}
3601
3602
static void
3603
dissect_homeplug_av_rd_mod_cnf(ptvcursor_t *cursor)
3604
0
{
3605
0
    proto_item *it;
3606
3607
0
    if (!ptvcursor_tree(cursor))
3608
0
        return;
3609
3610
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_rd_mod_cnf, -1, ENC_NA);
3611
3612
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_rd_mod_cnf);
3613
0
    {
3614
0
        ptvcursor_add(cursor, hf_homeplug_av_rd_mod_cnf_status, 1, ENC_BIG_ENDIAN);
3615
0
        ptvcursor_add(cursor, hf_homeplug_av_reserved, 3, ENC_NA);
3616
0
        ptvcursor_add(cursor, hf_homeplug_av_mac_module_id, 1, ENC_BIG_ENDIAN);
3617
0
        ptvcursor_add(cursor, hf_homeplug_av_reserved, 1, ENC_NA);
3618
0
        ptvcursor_add(cursor, hf_homeplug_av_mem_len_16bits, 2, ENC_LITTLE_ENDIAN);
3619
0
        ptvcursor_add(cursor, hf_homeplug_av_mem_offset, 4, ENC_LITTLE_ENDIAN);
3620
0
        ptvcursor_add(cursor, hf_homeplug_av_mem_checksum, 4, ENC_LITTLE_ENDIAN);
3621
0
        ptvcursor_add_no_advance(cursor, hf_homeplug_av_mem_data, -1, ENC_NA);
3622
0
    }
3623
0
    ptvcursor_pop_subtree(cursor);
3624
0
}
3625
3626
static void
3627
dissect_homeplug_av_mod_nvm_req(ptvcursor_t *cursor)
3628
0
{
3629
0
    proto_item *it;
3630
3631
0
    if (!ptvcursor_tree(cursor))
3632
0
        return;
3633
3634
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_mod_nvm_req, -1, ENC_NA);
3635
3636
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_mod_nvm_req);
3637
0
    {
3638
0
        ptvcursor_add(cursor, hf_homeplug_av_mac_module_id, 1, ENC_BIG_ENDIAN);
3639
0
    }
3640
0
    ptvcursor_pop_subtree(cursor);
3641
0
}
3642
3643
static void
3644
dissect_homeplug_av_mod_nvm_cnf(ptvcursor_t *cursor)
3645
0
{
3646
0
    proto_item *it;
3647
3648
0
    if (!ptvcursor_tree(cursor))
3649
0
        return;
3650
3651
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_mod_nvm_cnf, -1, ENC_NA);
3652
3653
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_mod_nvm_cnf);
3654
0
    {
3655
0
        ptvcursor_add(cursor, hf_homeplug_av_mod_nvm_cnf_status, 1, ENC_BIG_ENDIAN);
3656
0
        ptvcursor_add(cursor, hf_homeplug_av_mac_module_id, 1, ENC_BIG_ENDIAN);
3657
0
    }
3658
0
    ptvcursor_pop_subtree(cursor);
3659
0
}
3660
3661
static void
3662
dissect_homeplug_av_wd_rpt_req(ptvcursor_t *cursor)
3663
0
{
3664
0
    proto_item *it;
3665
3666
0
    if (!ptvcursor_tree(cursor))
3667
0
        return;
3668
3669
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_wd_rpt_req, -1, ENC_NA);
3670
3671
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_wd_rpt_req);
3672
0
    {
3673
0
        ptvcursor_add(cursor, hf_homeplug_av_wd_rpt_req_session_id, 2, ENC_LITTLE_ENDIAN);
3674
0
        ptvcursor_add(cursor, hf_homeplug_av_wd_rpt_req_clr, 1, ENC_BIG_ENDIAN);
3675
0
    }
3676
0
    ptvcursor_pop_subtree(cursor);
3677
0
}
3678
3679
static void
3680
dissect_homeplug_av_wd_rpt_ind(ptvcursor_t *cursor)
3681
0
{
3682
0
    proto_item *it;
3683
3684
0
    if (!ptvcursor_tree(cursor))
3685
0
        return;
3686
3687
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_wd_rpt_ind, -1, ENC_NA);
3688
3689
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_wd_rpt_ind);
3690
0
    {
3691
0
        ptvcursor_add(cursor, hf_homeplug_av_wd_rpt_ind_status, 1, ENC_BIG_ENDIAN);
3692
0
        ptvcursor_add(cursor, hf_homeplug_av_wd_rpt_ind_session_id, 2, ENC_LITTLE_ENDIAN);
3693
0
        ptvcursor_add(cursor, hf_homeplug_av_wd_rpt_ind_num_parts, 1, ENC_BIG_ENDIAN);
3694
0
        ptvcursor_add(cursor, hf_homeplug_av_wd_rpt_ind_curr_part, 1, ENC_BIG_ENDIAN);
3695
0
        ptvcursor_add(cursor, hf_homeplug_av_wd_rpt_ind_rdata_len, 2, ENC_LITTLE_ENDIAN);
3696
0
        ptvcursor_add(cursor, hf_homeplug_av_wd_rpt_ind_rdata_ofs, 1, ENC_BIG_ENDIAN);
3697
0
        ptvcursor_add(cursor, hf_homeplug_av_wd_rpt_ind_rdata, -1, ENC_NA);
3698
0
    }
3699
0
    ptvcursor_pop_subtree(cursor);
3700
0
}
3701
3702
static void
3703
dissect_homeplug_av_lnk_stats_req(ptvcursor_t *cursor)
3704
0
{
3705
0
    proto_item *it;
3706
3707
0
    if (!ptvcursor_tree(cursor))
3708
0
        return;
3709
3710
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_lnk_stats_req, -1, ENC_NA);
3711
3712
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_lnk_stats_req);
3713
0
    {
3714
0
        ptvcursor_add(cursor, hf_homeplug_av_lnk_stats_req_mcontrol, 1, ENC_BIG_ENDIAN);
3715
0
        ptvcursor_add(cursor, hf_homeplug_av_lnk_stats_req_dir, 1, ENC_BIG_ENDIAN);
3716
0
        ptvcursor_add(cursor, hf_homeplug_av_lnk_stats_req_lid, 1, ENC_BIG_ENDIAN);
3717
0
        ptvcursor_add(cursor, hf_homeplug_av_lnk_stats_req_macaddr, 6, ENC_NA);
3718
0
    }
3719
0
    ptvcursor_pop_subtree(cursor);
3720
0
}
3721
3722
static void
3723
dissect_homeplug_av_lnk_stats_tx(ptvcursor_t *cursor)
3724
0
{
3725
0
    proto_item *it;
3726
3727
0
    if (!ptvcursor_tree(cursor))
3728
0
        return;
3729
3730
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_lnk_stats_tx, -1, ENC_NA);
3731
3732
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_lnk_stats_tx);
3733
0
    {
3734
0
        ptvcursor_add(cursor, hf_homeplug_av_lnk_stats_tx_mpdu_ack, 8, ENC_LITTLE_ENDIAN);
3735
0
        ptvcursor_add(cursor, hf_homeplug_av_lnk_stats_tx_mpdu_col, 8, ENC_LITTLE_ENDIAN);
3736
0
        ptvcursor_add(cursor, hf_homeplug_av_lnk_stats_tx_mpdu_fai, 8, ENC_LITTLE_ENDIAN);
3737
0
        ptvcursor_add(cursor, hf_homeplug_av_lnk_stats_tx_pbs_pass, 8, ENC_LITTLE_ENDIAN);
3738
0
        ptvcursor_add(cursor, hf_homeplug_av_lnk_stats_tx_pbs_fail, 8, ENC_LITTLE_ENDIAN);
3739
0
    }
3740
0
    ptvcursor_pop_subtree(cursor);
3741
0
}
3742
3743
static void
3744
dissect_homeplug_av_lnk_stats_rx_interval(ptvcursor_t *cursor)
3745
0
{
3746
0
    proto_item *it;
3747
3748
0
    if (!ptvcursor_tree(cursor))
3749
0
        return;
3750
3751
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_rx_inv_stats, -1, ENC_NA);
3752
3753
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_lnk_stats_rx_inv);
3754
0
    {
3755
0
        ptvcursor_add(cursor, hf_homeplug_av_rx_inv_phy_rate, 1, ENC_BIG_ENDIAN);
3756
0
        ptvcursor_add(cursor, hf_homeplug_av_rx_inv_pbs_pass, 8, ENC_LITTLE_ENDIAN);
3757
0
        ptvcursor_add(cursor, hf_homeplug_av_rx_inv_pbs_fail, 8, ENC_LITTLE_ENDIAN);
3758
0
        ptvcursor_add(cursor, hf_homeplug_av_rx_inv_tb_pass, 8, ENC_LITTLE_ENDIAN);
3759
0
        ptvcursor_add(cursor, hf_homeplug_av_rx_inv_tb_fail, 8, ENC_LITTLE_ENDIAN);
3760
0
    }
3761
0
    ptvcursor_pop_subtree(cursor);
3762
0
}
3763
3764
static void
3765
dissect_homeplug_av_lnk_stats_rx(ptvcursor_t *cursor)
3766
0
{
3767
0
    proto_item *it;
3768
0
    uint8_t     num_rx_interval;
3769
0
    uint8_t     interval;
3770
3771
0
    if (!ptvcursor_tree(cursor))
3772
0
        return;
3773
3774
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_lnk_stats_rx, -1, ENC_NA);
3775
3776
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_lnk_stats_rx);
3777
0
    {
3778
0
        ptvcursor_add(cursor, hf_homeplug_av_lnk_stats_rx_mpdu_ack, 8, ENC_LITTLE_ENDIAN);
3779
0
        ptvcursor_add(cursor, hf_homeplug_av_lnk_stats_rx_mpdu_fai, 8, ENC_LITTLE_ENDIAN);
3780
0
        ptvcursor_add(cursor, hf_homeplug_av_lnk_stats_rx_pbs_pass, 8, ENC_LITTLE_ENDIAN);
3781
0
        ptvcursor_add(cursor, hf_homeplug_av_lnk_stats_rx_pbs_fail, 8, ENC_LITTLE_ENDIAN);
3782
0
        ptvcursor_add(cursor, hf_homeplug_av_lnk_stats_rx_tb_pass, 8, ENC_LITTLE_ENDIAN);
3783
0
        ptvcursor_add(cursor, hf_homeplug_av_lnk_stats_rx_tb_fail, 8, ENC_LITTLE_ENDIAN);
3784
0
        num_rx_interval = tvb_get_uint8(ptvcursor_tvbuff(cursor),
3785
0
                                         ptvcursor_current_offset(cursor));
3786
0
        ptvcursor_add(cursor, hf_homeplug_av_lnk_stats_rx_num_int, 1, ENC_BIG_ENDIAN);
3787
3788
0
        for (interval = 0; interval < num_rx_interval; interval++) {
3789
0
            dissect_homeplug_av_lnk_stats_rx_interval(cursor);
3790
0
        }
3791
0
    }
3792
0
    ptvcursor_pop_subtree(cursor);
3793
0
}
3794
3795
static void
3796
dissect_homeplug_av_lnk_stats_cnf(ptvcursor_t *cursor)
3797
0
{
3798
0
    proto_item *it;
3799
0
    uint8_t     status;
3800
0
    uint8_t     direction;
3801
3802
0
    if (!ptvcursor_tree(cursor))
3803
0
        return;
3804
3805
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_lnk_stats_cnf, -1, ENC_NA);
3806
3807
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_lnk_stats_cnf);
3808
0
    {
3809
0
        status = tvb_get_uint8(ptvcursor_tvbuff(cursor),
3810
0
                                ptvcursor_current_offset(cursor));
3811
0
        ptvcursor_add(cursor, hf_homeplug_av_lnk_stats_cnf_status, 1, ENC_BIG_ENDIAN);
3812
3813
0
        direction = tvb_get_uint8(ptvcursor_tvbuff(cursor),
3814
0
                                   ptvcursor_current_offset(cursor));
3815
0
        ptvcursor_add(cursor, hf_homeplug_av_lnk_stats_cnf_dir, 1, ENC_BIG_ENDIAN);
3816
3817
0
        ptvcursor_add(cursor, hf_homeplug_av_lnk_stats_cnf_lid, 1, ENC_BIG_ENDIAN);
3818
0
        ptvcursor_add(cursor, hf_homeplug_av_lnk_stats_cnf_tei, 1, ENC_BIG_ENDIAN);
3819
3820
0
        ptvcursor_add_no_advance(cursor, hf_homeplug_av_lnk_stats_cnf_lstats, -1, ENC_NA);
3821
3822
0
        if (status == HOMEPLUG_AV_LNK_STATS_STATUS_SUCCESS)
3823
0
        {
3824
0
            switch (direction) {
3825
0
            case HOMEPLUG_AV_LNK_STATS_DIR_TX:
3826
0
                dissect_homeplug_av_lnk_stats_tx(cursor);
3827
0
                break;
3828
0
            case HOMEPLUG_AV_LNK_STATS_DIR_RX:
3829
0
                dissect_homeplug_av_lnk_stats_rx(cursor);
3830
0
                break;
3831
0
            case HOMEPLUG_AV_LNK_STATS_DIR_TX_RX:
3832
0
                dissect_homeplug_av_lnk_stats_tx(cursor);
3833
0
                dissect_homeplug_av_lnk_stats_rx(cursor);
3834
0
                break;
3835
0
            }
3836
0
        }
3837
0
    }
3838
0
    ptvcursor_pop_subtree(cursor);
3839
0
}
3840
3841
static void
3842
dissect_homeplug_av_sniffer_req(ptvcursor_t *cursor)
3843
0
{
3844
0
    proto_item *it;
3845
3846
0
    if (!ptvcursor_tree(cursor))
3847
0
        return;
3848
3849
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_sniffer_req, -1, ENC_NA);
3850
3851
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_sniffer_req);
3852
0
    {
3853
0
        ptvcursor_add(cursor, hf_homeplug_av_sniffer_req_ctrl, 1, ENC_BIG_ENDIAN);
3854
0
        ptvcursor_add(cursor, hf_homeplug_av_reserved, 4, ENC_NA);
3855
0
    }
3856
0
    ptvcursor_pop_subtree(cursor);
3857
0
}
3858
3859
static void
3860
dissect_homeplug_av_sniffer_cnf(ptvcursor_t *cursor)
3861
0
{
3862
0
    proto_item *it;
3863
3864
0
    if (!ptvcursor_tree(cursor))
3865
0
        return;
3866
3867
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_sniffer_cnf, -1, ENC_NA);
3868
3869
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_sniffer_cnf);
3870
0
    {
3871
0
        ptvcursor_add(cursor, hf_homeplug_av_sniffer_cnf_status, 1, ENC_BIG_ENDIAN);
3872
0
        ptvcursor_add(cursor, hf_homeplug_av_sniffer_cnf_state, 1, ENC_BIG_ENDIAN);
3873
0
        ptvcursor_add(cursor, hf_homeplug_av_sniffer_cnf_da, 6, ENC_NA);
3874
0
    }
3875
0
    ptvcursor_pop_subtree(cursor);
3876
0
}
3877
3878
static void
3879
dissect_homeplug_av_sniffer_ind(ptvcursor_t *cursor)
3880
0
{
3881
0
    proto_item *it;
3882
0
    proto_item *it_data;
3883
0
    tvbuff_t   *tvb;
3884
0
    unsigned    offset;
3885
3886
0
    uint8_t del_type;
3887
3888
0
    if (!ptvcursor_tree(cursor))
3889
0
        return;
3890
3891
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_sniffer_ind, -1, ENC_NA);
3892
3893
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_sniffer_ind);
3894
0
    {
3895
0
        ptvcursor_add(cursor, hf_homeplug_av_sniffer_ind_type, 1, ENC_BIG_ENDIAN);
3896
3897
0
        it_data = ptvcursor_add_no_advance(cursor, hf_homeplug_av_sniffer_ind_data, -1, ENC_NA);
3898
3899
0
        ptvcursor_push_subtree(cursor, it_data, ett_homeplug_av_sniffer_ind_data);
3900
0
        {
3901
0
            ptvcursor_add(cursor, hf_homeplug_av_sniffer_data_dir, 1, ENC_BIG_ENDIAN);
3902
0
            ptvcursor_add(cursor, hf_homeplug_av_sniffer_data_systime, 8, ENC_LITTLE_ENDIAN);
3903
0
            ptvcursor_add(cursor, hf_homeplug_av_sniffer_data_bc_time, 4, ENC_LITTLE_ENDIAN);
3904
3905
0
            offset = ptvcursor_current_offset(cursor);
3906
0
            tvb = ptvcursor_tvbuff(cursor);
3907
3908
0
            del_type = tvb_get_uint8(tvb, offset);
3909
3910
            /* bitmask - we only want 3 bits of del_type */
3911
0
            uint8_t bitmask = 0x07;
3912
3913
0
            del_type &= bitmask;
3914
3915
0
            static int * const frame_control_fields[] = {
3916
0
                &hf_homeplug_av_fc_del_type,
3917
0
                &hf_homeplug_av_fc_access,
3918
0
                &hf_homeplug_av_fc_snid,
3919
0
                NULL
3920
0
            };
3921
3922
0
            proto_tree_add_bitmask(ptvcursor_tree(cursor), tvb, offset, hf_homeplug_av_fc,
3923
0
                                   ett_homeplug_av_fc, frame_control_fields, ENC_BIG_ENDIAN);
3924
0
            ptvcursor_advance(cursor, 1);
3925
3926
0
            switch (del_type)
3927
0
            {
3928
0
            case HOMEPLUG_AV_DEL_TYPE_BCN:
3929
0
                dissect_homeplug_av_beacon(cursor);
3930
0
                break;
3931
0
            case HOMEPLUG_AV_DEL_TYPE_SOF:
3932
0
                dissect_homeplug_av_start_of_frame(cursor);
3933
0
                break;
3934
0
            case HOMEPLUG_AV_DEL_TYPE_SACK:
3935
0
                dissect_homeplug_av_sack(cursor);
3936
0
                break;
3937
0
            case HOMEPLUG_AV_DEL_TYPE_RTS:
3938
0
                dissect_homeplug_av_rtscts(cursor);
3939
0
                break;
3940
0
            case HOMEPLUG_AV_DEL_TYPE_SOUND:
3941
0
                dissect_homeplug_av_sound(cursor);
3942
0
                break;
3943
0
            case HOMEPLUG_AV_DEL_TYPE_RSOF:
3944
0
                dissect_homeplug_av_rsof(cursor);
3945
0
                break;
3946
0
            default:
3947
0
                break;
3948
0
            }
3949
0
        }
3950
0
        ptvcursor_pop_subtree(cursor);
3951
0
    }
3952
0
    ptvcursor_pop_subtree(cursor);
3953
0
}
3954
3955
static void
3956
dissect_homeplug_av_nw_info_cnf(ptvcursor_t *cursor, uint8_t homeplug_av_mmver)
3957
0
{
3958
0
    proto_item *it;
3959
0
    uint8_t     num_avlns;
3960
0
    uint8_t     num_stas;
3961
0
    uint8_t     sta;
3962
3963
0
    if (!ptvcursor_tree(cursor))
3964
0
        return;
3965
3966
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_nw_info_cnf, -1, ENC_NA);
3967
3968
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_nw_info_cnf);
3969
0
    {
3970
0
        if (homeplug_av_mmver == HOMEPLUG_AV_MMVER_1_1)
3971
0
            ptvcursor_add(cursor, hf_homeplug_av_reserved, 5, ENC_NA);
3972
3973
0
        num_avlns = tvb_get_uint8(ptvcursor_tvbuff(cursor),
3974
0
                                   ptvcursor_current_offset(cursor));
3975
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_num_avlns, 1, ENC_BIG_ENDIAN);
3976
3977
0
        if (num_avlns) {
3978
0
            dissect_homeplug_av_nw_info_net(cursor, true, homeplug_av_mmver);
3979
0
            num_stas = tvb_get_uint8(ptvcursor_tvbuff(cursor),
3980
0
                                      ptvcursor_current_offset(cursor));
3981
0
            ptvcursor_add(cursor, hf_homeplug_av_nw_info_num_stas, 1, ENC_BIG_ENDIAN);
3982
3983
0
            if (homeplug_av_mmver == HOMEPLUG_AV_MMVER_1_1)
3984
0
                ptvcursor_add(cursor, hf_homeplug_av_reserved, 5, ENC_NA);
3985
3986
0
            for (sta = 0; sta < num_stas; sta++) {
3987
0
                dissect_homeplug_av_nw_info_sta(cursor, true, homeplug_av_mmver);
3988
0
            }
3989
0
        }
3990
0
    }
3991
0
    ptvcursor_pop_subtree(cursor);
3992
0
}
3993
3994
static void
3995
dissect_homeplug_av_cp_rpt_req(ptvcursor_t *cursor)
3996
0
{
3997
0
    proto_item *it;
3998
3999
0
    if (!ptvcursor_tree(cursor))
4000
0
        return;
4001
4002
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_cp_rpt_req, -1, ENC_NA);
4003
4004
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_cp_rpt_req);
4005
0
    {
4006
0
        ptvcursor_add(cursor, hf_homeplug_av_cp_rpt_req_session_id, 2, ENC_LITTLE_ENDIAN);
4007
0
        ptvcursor_add(cursor, hf_homeplug_av_cp_rpt_req_clr, 1, ENC_BIG_ENDIAN);
4008
0
    }
4009
0
    ptvcursor_pop_subtree(cursor);
4010
0
}
4011
4012
static void
4013
dissect_homeplug_av_cp_rpt_ind(ptvcursor_t *cursor)
4014
0
{
4015
0
    proto_item *it;
4016
4017
0
    if (!ptvcursor_tree(cursor))
4018
0
        return;
4019
4020
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_cp_rpt_ind, -1, ENC_NA);
4021
4022
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_cp_rpt_ind);
4023
0
    {
4024
0
        ptvcursor_add(cursor, hf_homeplug_av_cp_rpt_ind_status, 1, ENC_LITTLE_ENDIAN);
4025
0
        ptvcursor_add(cursor, hf_homeplug_av_cp_rpt_ind_major_ver, 1, ENC_BIG_ENDIAN);
4026
0
        ptvcursor_add(cursor, hf_homeplug_av_cp_rpt_ind_minor_ver, 1, ENC_BIG_ENDIAN);
4027
0
        ptvcursor_add(cursor, hf_homeplug_av_reserved, 14, ENC_NA);
4028
0
        ptvcursor_add(cursor, hf_homeplug_av_cp_rpt_ind_session_id, 2, ENC_LITTLE_ENDIAN);
4029
0
        ptvcursor_add(cursor, hf_homeplug_av_cp_rpt_ind_total_size, 4, ENC_LITTLE_ENDIAN);
4030
0
        ptvcursor_add(cursor, hf_homeplug_av_cp_rpt_ind_blk_offset, 4, ENC_LITTLE_ENDIAN);
4031
0
        ptvcursor_add(cursor, hf_homeplug_av_cp_rpt_ind_byte_index, 4, ENC_LITTLE_ENDIAN);
4032
0
        ptvcursor_add(cursor, hf_homeplug_av_cp_rpt_ind_num_parts, 1, ENC_BIG_ENDIAN);
4033
0
        ptvcursor_add(cursor, hf_homeplug_av_cp_rpt_ind_curr_part, 1, ENC_BIG_ENDIAN);
4034
0
        ptvcursor_add(cursor, hf_homeplug_av_cp_rpt_ind_data_len, 2, ENC_LITTLE_ENDIAN);
4035
0
        ptvcursor_add(cursor, hf_homeplug_av_cp_rpt_ind_data_ofs, 1, ENC_LITTLE_ENDIAN);
4036
0
        ptvcursor_add_no_advance(cursor, hf_homeplug_av_cp_rpt_ind_data, -1, ENC_NA);
4037
0
    }
4038
0
    ptvcursor_pop_subtree(cursor);
4039
0
}
4040
4041
static void
4042
dissect_homeplug_av_fr_lbk_req(ptvcursor_t *cursor)
4043
0
{
4044
0
    proto_item *it;
4045
4046
0
    if (!ptvcursor_tree(cursor))
4047
0
        return;
4048
4049
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_fr_lbk_req, -1, ENC_NA);
4050
4051
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_fr_lbk_req);
4052
0
    {
4053
0
        ptvcursor_add(cursor, hf_homeplug_av_fr_lbk_duration, 1, ENC_BIG_ENDIAN);
4054
0
        ptvcursor_add(cursor, hf_homeplug_av_reserved, 1, ENC_NA);
4055
0
        ptvcursor_add(cursor, hf_homeplug_av_fr_lbk_len, 2, ENC_BIG_ENDIAN);
4056
0
        ptvcursor_add_no_advance(cursor, hf_homeplug_av_fr_lbk_req_data, -1, ENC_NA);
4057
0
    }
4058
0
    ptvcursor_pop_subtree(cursor);
4059
0
}
4060
4061
static void
4062
dissect_homeplug_av_fr_lbk_cnf(ptvcursor_t *cursor)
4063
0
{
4064
0
    proto_item *it;
4065
4066
0
    if (!ptvcursor_tree(cursor))
4067
0
        return;
4068
4069
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_fr_lbk_cnf, -1, ENC_NA);
4070
4071
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_fr_lbk_cnf);
4072
0
    {
4073
0
        ptvcursor_add(cursor, hf_homeplug_av_fr_lbk_cnf_status, 1, ENC_BIG_ENDIAN);
4074
0
        ptvcursor_add(cursor, hf_homeplug_av_fr_lbk_duration, 1, ENC_BIG_ENDIAN);
4075
0
        ptvcursor_add(cursor, hf_homeplug_av_fr_lbk_len, 2, ENC_BIG_ENDIAN);
4076
0
    }
4077
0
    ptvcursor_pop_subtree(cursor);
4078
0
}
4079
4080
static void
4081
dissect_homeplug_av_lbk_stat_cnf(ptvcursor_t *cursor)
4082
0
{
4083
0
    proto_item *it;
4084
4085
0
    if (!ptvcursor_tree(cursor))
4086
0
        return;
4087
4088
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_lbk_stat_cnf, -1, ENC_NA);
4089
4090
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_lbk_stat_cnf);
4091
0
    {
4092
0
        ptvcursor_add(cursor, hf_homeplug_av_lbk_stat_cnf_status, 1, ENC_BIG_ENDIAN);
4093
0
        ptvcursor_add(cursor, hf_homeplug_av_lbk_stat_cnf_lbk_stat, 1, ENC_BIG_ENDIAN);
4094
0
    }
4095
0
    ptvcursor_pop_subtree(cursor);
4096
0
}
4097
4098
static void
4099
dissect_homeplug_av_set_key_req(ptvcursor_t *cursor)
4100
0
{
4101
0
    proto_item *it;
4102
4103
0
    if (!ptvcursor_tree(cursor))
4104
0
        return;
4105
4106
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_set_key_req, -1, ENC_NA);
4107
4108
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_set_key_req);
4109
0
    {
4110
0
        ptvcursor_add(cursor, hf_homeplug_av_set_key_req_eks, 1, ENC_BIG_ENDIAN);
4111
0
        ptvcursor_add(cursor, hf_homeplug_av_set_key_req_nmk, 16, ENC_NA);
4112
0
        ptvcursor_add(cursor, hf_homeplug_av_nw_info_peks, 1, ENC_BIG_ENDIAN);
4113
0
        ptvcursor_add(cursor, hf_homeplug_av_set_key_req_rda, 6, ENC_NA);
4114
0
        ptvcursor_add(cursor, hf_homeplug_av_set_key_req_dak, 16, ENC_NA);
4115
0
    }
4116
0
    ptvcursor_pop_subtree(cursor);
4117
0
}
4118
4119
static void
4120
dissect_homeplug_av_set_key_cnf(ptvcursor_t *cursor)
4121
0
{
4122
0
    proto_item *it;
4123
4124
0
    if (!ptvcursor_tree(cursor))
4125
0
        return;
4126
4127
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_set_key_cnf, -1, ENC_NA);
4128
4129
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_set_key_cnf);
4130
0
    {
4131
0
        ptvcursor_add(cursor, hf_homeplug_av_set_key_cnf_status, 1, ENC_BIG_ENDIAN);
4132
0
    }
4133
0
    ptvcursor_pop_subtree(cursor);
4134
0
}
4135
4136
static void
4137
dissect_homeplug_av_mfg_string_cnf(ptvcursor_t *cursor)
4138
0
{
4139
0
    proto_item *it;
4140
4141
0
    if (!ptvcursor_tree(cursor))
4142
0
        return;
4143
4144
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_mfg_string_cnf, -1, ENC_NA);
4145
4146
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_mfg_string_cnf);
4147
0
    {
4148
0
        ptvcursor_add(cursor, hf_homeplug_av_mfg_string_cnf_status, 1, ENC_BIG_ENDIAN);
4149
0
        ptvcursor_add(cursor, hf_homeplug_av_mfg_string_cnf_len, 1, ENC_BIG_ENDIAN);
4150
0
        ptvcursor_add(cursor, hf_homeplug_av_mfg_string_cnf_string, 64, ENC_ASCII);
4151
0
    }
4152
0
    ptvcursor_pop_subtree(cursor);
4153
0
}
4154
4155
static void
4156
dissect_homeplug_av_cblock_hdr(ptvcursor_t *cursor)
4157
0
{
4158
0
    proto_item *it;
4159
4160
0
    if (!ptvcursor_tree(cursor))
4161
0
        return;
4162
4163
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_cblock_hdr, -1, ENC_NA);
4164
4165
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_cblock_hdr);
4166
0
    {
4167
0
        ptvcursor_add(cursor, hf_homeplug_av_cblock_hdr_ver, 4, ENC_LITTLE_ENDIAN);
4168
0
        ptvcursor_add(cursor, hf_homeplug_av_cblock_img_rom_addr, 4, ENC_LITTLE_ENDIAN);
4169
0
        ptvcursor_add(cursor, hf_homeplug_av_cblock_img_addr, 4, ENC_LITTLE_ENDIAN);
4170
0
        ptvcursor_add(cursor, hf_homeplug_av_cblock_img_len, 4, ENC_LITTLE_ENDIAN);
4171
0
        ptvcursor_add(cursor, hf_homeplug_av_cblock_img_chksum, 4, ENC_LITTLE_ENDIAN);
4172
0
        ptvcursor_add(cursor, hf_homeplug_av_cblock_entry_point, 4, ENC_LITTLE_ENDIAN);
4173
0
        ptvcursor_add(cursor, hf_homeplug_av_cblock_hdr_minor, 1, ENC_NA);
4174
0
        ptvcursor_add(cursor, hf_homeplug_av_cblock_hdr_img_type, 1, ENC_NA);
4175
0
        ptvcursor_add(cursor, hf_homeplug_av_cblock_hdr_ignore_mask, 2, ENC_LITTLE_ENDIAN);
4176
0
        ptvcursor_add(cursor, hf_homeplug_av_cblock_hdr_module_id, 4, ENC_LITTLE_ENDIAN);
4177
0
        ptvcursor_add(cursor, hf_homeplug_av_cblock_hdr_module_subid, 4, ENC_LITTLE_ENDIAN);
4178
0
        ptvcursor_add(cursor, hf_homeplug_av_cblock_next_hdr, 4, ENC_LITTLE_ENDIAN);
4179
0
        ptvcursor_add(cursor, hf_homeplug_av_cblock_hdr_chksum, 4, ENC_LITTLE_ENDIAN);
4180
0
    }
4181
0
    ptvcursor_pop_subtree(cursor);
4182
0
}
4183
4184
static void
4185
dissect_homeplug_av_cblock(ptvcursor_t *cursor)
4186
0
{
4187
0
    proto_item *it;
4188
4189
0
    if (!ptvcursor_tree(cursor))
4190
0
        return;
4191
4192
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_cblock, -1, ENC_NA);
4193
4194
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_cblock);
4195
0
    {
4196
0
        ptvcursor_add(cursor, hf_homeplug_av_cblock_sdram_size, 4, ENC_LITTLE_ENDIAN);
4197
0
        ptvcursor_add(cursor, hf_homeplug_av_cblock_sdram_conf, 4, ENC_LITTLE_ENDIAN);
4198
0
        ptvcursor_add(cursor, hf_homeplug_av_cblock_sdram_tim0, 4, ENC_LITTLE_ENDIAN);
4199
0
        ptvcursor_add(cursor, hf_homeplug_av_cblock_sdram_tim1, 4, ENC_LITTLE_ENDIAN);
4200
0
        ptvcursor_add(cursor, hf_homeplug_av_cblock_sdram_cntrl, 4, ENC_LITTLE_ENDIAN);
4201
0
        ptvcursor_add(cursor, hf_homeplug_av_cblock_sdram_refresh, 4, ENC_LITTLE_ENDIAN);
4202
0
        ptvcursor_add(cursor, hf_homeplug_av_cblock_mac_clock, 4, ENC_LITTLE_ENDIAN);
4203
0
        ptvcursor_add(cursor, hf_homeplug_av_reserved, 4, ENC_NA);
4204
0
    }
4205
0
    ptvcursor_pop_subtree(cursor);
4206
0
}
4207
4208
static void
4209
dissect_homeplug_av_rd_cblock_cnf(ptvcursor_t *cursor)
4210
0
{
4211
0
    proto_item *it;
4212
4213
0
    if (!ptvcursor_tree(cursor))
4214
0
        return;
4215
4216
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_rd_cblock_cnf, -1, ENC_NA);
4217
4218
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_rd_cblock_cnf);
4219
0
    {
4220
0
        ptvcursor_add(cursor, hf_homeplug_av_rd_cblock_cnf_status, 1, ENC_BIG_ENDIAN);
4221
0
        ptvcursor_add(cursor, hf_homeplug_av_rd_cblock_cnf_len, 1, ENC_BIG_ENDIAN);
4222
0
        dissect_homeplug_av_cblock_hdr(cursor);
4223
0
        dissect_homeplug_av_cblock(cursor);
4224
0
    }
4225
0
    ptvcursor_pop_subtree(cursor);
4226
0
}
4227
4228
static void
4229
dissect_homeplug_av_set_sdram_req(ptvcursor_t *cursor)
4230
0
{
4231
0
    proto_item *it;
4232
4233
0
    if (!ptvcursor_tree(cursor))
4234
0
        return;
4235
4236
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_set_sdram_req, -1, ENC_NA);
4237
4238
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_set_sdram_req);
4239
0
    {
4240
0
        dissect_homeplug_av_cblock(cursor);
4241
0
        ptvcursor_add(cursor, hf_homeplug_av_set_sdram_req_chksum, 4, ENC_LITTLE_ENDIAN);
4242
0
    }
4243
0
    ptvcursor_pop_subtree(cursor);
4244
0
}
4245
4246
static void
4247
dissect_homeplug_av_set_sdram_cnf(ptvcursor_t *cursor)
4248
0
{
4249
0
    proto_item *it;
4250
4251
0
    if (!ptvcursor_tree(cursor))
4252
0
        return;
4253
4254
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_set_sdram_cnf, -1, ENC_NA);
4255
4256
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_set_sdram_cnf);
4257
0
    {
4258
0
        ptvcursor_add(cursor, hf_homeplug_av_set_sdram_cnf_status, 1, ENC_BIG_ENDIAN);
4259
0
    }
4260
0
    ptvcursor_pop_subtree(cursor);
4261
0
}
4262
4263
static void
4264
dissect_homeplug_av_host_action_ind(ptvcursor_t *cursor)
4265
0
{
4266
0
    proto_item *it;
4267
4268
0
    if (!ptvcursor_tree(cursor))
4269
0
        return;
4270
4271
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_host_action_ind, -1, ENC_NA);
4272
4273
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_host_action_ind);
4274
0
    {
4275
0
        ptvcursor_add(cursor, hf_homeplug_av_host_action_ind_act, 1, ENC_BIG_ENDIAN);
4276
0
    }
4277
0
    ptvcursor_pop_subtree(cursor);
4278
0
}
4279
4280
static void
4281
dissect_homeplug_av_host_action_rsp(ptvcursor_t *cursor)
4282
0
{
4283
0
    proto_item *it;
4284
4285
0
    if (!ptvcursor_tree(cursor))
4286
0
        return;
4287
4288
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_host_action_rsp, -1, ENC_NA);
4289
4290
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_host_action_rsp);
4291
0
    {
4292
0
        ptvcursor_add(cursor, hf_homeplug_av_host_action_rsp_sts, 1, ENC_BIG_ENDIAN);
4293
0
    }
4294
0
    ptvcursor_pop_subtree(cursor);
4295
0
}
4296
4297
static void
4298
dissect_homeplug_av_op_attr_req(ptvcursor_t *cursor)
4299
0
{
4300
0
    proto_item *it;
4301
4302
0
    if (!ptvcursor_tree(cursor))
4303
0
        return;
4304
4305
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_op_attr_req, -1, ENC_NA);
4306
4307
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_op_attr_req);
4308
0
    {
4309
0
        ptvcursor_add(cursor, hf_homeplug_av_op_attr_cookie, 4, ENC_LITTLE_ENDIAN);
4310
0
        ptvcursor_add(cursor, hf_homeplug_av_op_attr_rep_type, 1, ENC_BIG_ENDIAN);
4311
0
    }
4312
0
    ptvcursor_pop_subtree(cursor);
4313
0
}
4314
4315
static void
4316
dissect_homeplug_av_op_attr_bin_report(ptvcursor_t *cursor)
4317
0
{
4318
0
    proto_item *it;
4319
4320
0
    if (!ptvcursor_tree(cursor))
4321
0
        return;
4322
4323
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_op_attr_cnf_data, -1, ENC_NA);
4324
4325
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_op_attr_data);
4326
0
    {
4327
0
        ptvcursor_add(cursor, hf_homeplug_av_op_attr_data_hw, 16, ENC_ASCII);
4328
0
        ptvcursor_add(cursor, hf_homeplug_av_op_attr_data_sw, 16, ENC_ASCII);
4329
0
        ptvcursor_add(cursor, hf_homeplug_av_op_attr_data_sw_major, 4, ENC_LITTLE_ENDIAN);
4330
0
        ptvcursor_add(cursor, hf_homeplug_av_op_attr_data_sw_minor, 4, ENC_LITTLE_ENDIAN);
4331
0
        ptvcursor_add(cursor, hf_homeplug_av_op_attr_data_sw_sub, 4, ENC_LITTLE_ENDIAN);
4332
0
        ptvcursor_add(cursor, hf_homeplug_av_op_attr_data_sw_num, 4, ENC_LITTLE_ENDIAN);
4333
0
        ptvcursor_add(cursor, hf_homeplug_av_reserved, 4, ENC_NA);
4334
0
        ptvcursor_add(cursor, hf_homeplug_av_op_attr_data_sw_date, 8, ENC_ASCII);
4335
0
        ptvcursor_add(cursor, hf_homeplug_av_op_attr_data_sw_rel, 12, ENC_ASCII);
4336
0
        ptvcursor_add(cursor, hf_homeplug_av_op_attr_data_sw_sdram_type, 1, ENC_NA);
4337
0
        ptvcursor_add(cursor, hf_homeplug_av_reserved, 1, ENC_NA);
4338
0
        ptvcursor_add_no_advance(cursor, hf_homeplug_av_op_attr_data_sw_linefreq, 1, ENC_NA);
4339
0
        ptvcursor_add(cursor, hf_homeplug_av_op_attr_data_sw_zerocross, 1, ENC_NA);
4340
0
        ptvcursor_add(cursor, hf_homeplug_av_op_attr_data_sw_sdram_size, 4, ENC_LITTLE_ENDIAN);
4341
0
        ptvcursor_add(cursor, hf_homeplug_av_op_attr_data_sw_auth_mode, 1, ENC_NA);
4342
0
    }
4343
0
    ptvcursor_pop_subtree(cursor);
4344
0
}
4345
4346
static void
4347
dissect_homeplug_av_op_attr_cnf(ptvcursor_t *cursor)
4348
0
{
4349
0
    proto_item *it;
4350
4351
0
    if (!ptvcursor_tree(cursor))
4352
0
        return;
4353
4354
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_op_attr_cnf, -1, ENC_NA);
4355
4356
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_op_attr_cnf);
4357
0
    {
4358
0
        ptvcursor_add(cursor, hf_homeplug_av_op_attr_cnf_status, 2, ENC_LITTLE_ENDIAN);
4359
0
        ptvcursor_add(cursor, hf_homeplug_av_op_attr_cookie, 4, ENC_LITTLE_ENDIAN);
4360
0
        ptvcursor_add(cursor, hf_homeplug_av_op_attr_rep_type, 1, ENC_BIG_ENDIAN);
4361
0
        ptvcursor_add(cursor, hf_homeplug_av_op_attr_cnf_size, 2, ENC_LITTLE_ENDIAN);
4362
0
        dissect_homeplug_av_op_attr_bin_report(cursor);
4363
0
    }
4364
0
    ptvcursor_pop_subtree(cursor);
4365
0
}
4366
4367
static void
4368
dissect_homeplug_av_get_enet_phy_req(ptvcursor_t *cursor)
4369
0
{
4370
0
    proto_item *it;
4371
4372
0
    if (!ptvcursor_tree(cursor))
4373
0
        return;
4374
4375
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_enet_phy_req, -1, ENC_NA);
4376
4377
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_enet_phy_req);
4378
0
    {
4379
0
        ptvcursor_add(cursor, hf_homeplug_av_enet_phy_req_mcontrol, 1, ENC_BIG_ENDIAN);
4380
0
        ptvcursor_add(cursor, hf_homeplug_av_enet_phy_req_addcaps, 1, ENC_BIG_ENDIAN);
4381
0
        ptvcursor_add(cursor, hf_homeplug_av_reserved, 3, ENC_NA);
4382
0
    }
4383
0
    ptvcursor_pop_subtree(cursor);
4384
0
}
4385
4386
static void
4387
dissect_homeplug_av_get_enet_phy_cnf(ptvcursor_t *cursor)
4388
0
{
4389
0
    proto_item *it;
4390
4391
0
    if (!ptvcursor_tree(cursor))
4392
0
        return;
4393
4394
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_enet_phy_cnf, -1, ENC_NA);
4395
4396
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_enet_phy_cnf);
4397
0
    {
4398
0
        ptvcursor_add(cursor, hf_homeplug_av_enet_phy_cnf_status, 1, ENC_BIG_ENDIAN);
4399
0
        ptvcursor_add(cursor, hf_homeplug_av_enet_phy_cnf_speed, 1, ENC_BIG_ENDIAN);
4400
0
        ptvcursor_add(cursor, hf_homeplug_av_enet_phy_cnf_duplex, 1, ENC_BIG_ENDIAN);
4401
0
    }
4402
0
    ptvcursor_pop_subtree(cursor);
4403
0
}
4404
4405
static void
4406
dissect_homeplug_av_tone_map_tx_req(ptvcursor_t *cursor, uint8_t homeplug_av_mmver)
4407
0
{
4408
0
    proto_item *it;
4409
4410
0
    if (!ptvcursor_tree(cursor))
4411
0
        return;
4412
4413
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_tone_map_tx_req, -1, ENC_NA);
4414
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_tone_map_tx_req);
4415
0
    {
4416
0
        if (homeplug_av_mmver == HOMEPLUG_AV_MMVER_1_1)
4417
0
        {
4418
0
            ptvcursor_add(cursor, hf_homeplug_av_reserved, 4, ENC_NA);
4419
0
            ptvcursor_add(cursor, hf_homeplug_av_tone_map_tx_req_mac, 6, ENC_NA);
4420
0
            ptvcursor_add(cursor, hf_homeplug_av_tone_map_tx_req_slot, 1, ENC_BIG_ENDIAN);
4421
0
            ptvcursor_add(cursor, hf_homeplug_av_tone_map_tx_req_coupling, 1, ENC_LITTLE_ENDIAN);
4422
0
        }
4423
0
        else
4424
0
        {
4425
0
            ptvcursor_add(cursor, hf_homeplug_av_tone_map_tx_req_mac, 6, ENC_NA);
4426
0
            ptvcursor_add(cursor, hf_homeplug_av_tone_map_tx_req_slot, 1, ENC_BIG_ENDIAN);
4427
0
        }
4428
0
    }
4429
0
    ptvcursor_pop_subtree(cursor);
4430
0
}
4431
4432
static void
4433
dissect_homeplug_av_tone_map_rx_req(ptvcursor_t *cursor, uint8_t homeplug_av_mmver)
4434
0
{
4435
0
    proto_item *it;
4436
4437
0
    if (!ptvcursor_tree(cursor))
4438
0
        return;
4439
4440
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_tone_map_rx_req, -1, ENC_NA);
4441
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_tone_map_rx_req);
4442
0
    {
4443
0
        if (homeplug_av_mmver == HOMEPLUG_AV_MMVER_1_1)
4444
0
        {
4445
0
            ptvcursor_add(cursor, hf_homeplug_av_reserved, 4, ENC_NA);
4446
0
            ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_req_mac, 6, ENC_NA);
4447
0
            ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_req_slot, 1, ENC_BIG_ENDIAN);
4448
0
            ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_req_coupling, 1, ENC_LITTLE_ENDIAN);
4449
0
        }
4450
0
        else
4451
0
        {
4452
0
            ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_req_mac, 6, ENC_NA);
4453
0
            ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_req_slot, 1, ENC_BIG_ENDIAN);
4454
0
        }
4455
0
    }
4456
0
    ptvcursor_pop_subtree(cursor);
4457
0
}
4458
4459
static void
4460
dissect_homeplug_av_tone_map_carrier(ptvcursor_t *cursor, uint16_t num_carriers)
4461
0
{
4462
0
    proto_item *it, *ittm;
4463
0
    uint8_t hilo, hi_bits, lo_bits, hi_snr, lo_snr;
4464
0
    uint16_t num_carrier_bytes, cb, cid;
4465
0
    uint16_t num_act_carriers=0, total_bits=0, total_snr=0;
4466
4467
0
    static const uint8_t map_carrier2modbits[]    = { 0, 1, 2, 3,  4,  6,  8, 10, 12, 0, 0, 0, 0, 0, 0, 0 }; /* Carrier-Nibble to #Modulated-Bits Mapping */
4468
0
    static const uint8_t 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 */
4469
4470
0
    if (!ptvcursor_tree(cursor))
4471
0
        return;
4472
0
    num_carrier_bytes = num_carriers / 2;
4473
4474
    /* check if number of carriers is odd */
4475
0
    if (num_carriers & 1)
4476
0
        num_carrier_bytes += 1;
4477
4478
0
    ittm = ptvcursor_add_no_advance(cursor, hf_homeplug_av_tone_map_carriers, num_carrier_bytes, ENC_NA);
4479
0
    ptvcursor_push_subtree(cursor, ittm, ett_homeplug_av_tone_map_carriers);
4480
4481
0
    for (cb = 0; cb < num_carrier_bytes; cb++)
4482
0
    {
4483
0
        it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_tone_map_carrier, 1, ENC_NA);
4484
0
        cid = cb*2;
4485
0
        proto_item_append_text(it, " (Carrier #%d/#%d)", cid, cid+1 );
4486
4487
0
        ptvcursor_push_subtree(cursor, it, ett_homeplug_av_tone_map_carrier);
4488
0
        {
4489
0
            hilo = tvb_get_uint8(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
4490
0
            lo_bits = map_carrier2modbits[ (hilo & 0x0f) ];
4491
0
            hi_bits = map_carrier2modbits[ (hilo & 0xf0) >> 4 ];
4492
0
            if(lo_bits) num_act_carriers++;
4493
0
            if(hi_bits) num_act_carriers++;
4494
0
            lo_snr = map_carrier2modbitsSnr[ (hilo & 0x0f) ];
4495
0
            hi_snr = map_carrier2modbitsSnr[ (hilo & 0xf0) >> 4 ];
4496
4497
0
            it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_tone_map_carrier_lo, 1, ENC_BIG_ENDIAN);
4498
0
            proto_item_prepend_text(it, "Carrier #%d -> %u bits@SNR %udB: ", cid  , lo_bits, lo_snr);
4499
0
            it = ptvcursor_add(cursor, hf_homeplug_av_tone_map_carrier_hi, 1, ENC_BIG_ENDIAN);
4500
0
            proto_item_prepend_text(it, "Carrier #%d -> %u bits@SNR %udB: ", cid+1, hi_bits, hi_snr );
4501
0
        }
4502
0
        ptvcursor_pop_subtree(cursor);
4503
0
        total_bits += (hi_bits+lo_bits);
4504
0
        total_snr  += (hi_snr+lo_snr);
4505
0
    }
4506
4507
0
    if (num_act_carriers)
4508
0
    {
4509
        /* Append to TM-Subtree: total modulated bits, number of active carriers, Average #Bits/Carrier, Average SNR/Carrier */
4510
0
        proto_item_append_text(ittm, " (Total #ModulatedBits=%d bit, Active #Carriers=%d, Average #Bits/Carrier=%.2f bit), Average SNR/Carrier=%.2f dB)",
4511
0
                               total_bits, num_act_carriers, (float) total_bits/num_act_carriers, (float) total_snr/num_act_carriers );
4512
0
    }
4513
0
    ptvcursor_pop_subtree(cursor);
4514
0
}
4515
4516
static void
4517
dissect_homeplug_av_tone_map_tx_cnf(ptvcursor_t *cursor, uint8_t homeplug_av_mmver)
4518
0
{
4519
0
    proto_item *it;
4520
0
    uint16_t    num_act_carriers;
4521
4522
0
    if (!ptvcursor_tree(cursor))
4523
0
        return;
4524
4525
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_tone_map_tx_cnf, -1, ENC_NA);
4526
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_tone_map_tx_cnf);
4527
0
    {
4528
0
        if (homeplug_av_mmver == HOMEPLUG_AV_MMVER_1_1)
4529
0
        {
4530
0
            ptvcursor_add(cursor, hf_homeplug_av_tone_map_tx_cnf_status, 2, ENC_LITTLE_ENDIAN);
4531
0
            ptvcursor_add(cursor, hf_homeplug_av_tone_map_tx_cnf_len, 2, ENC_LITTLE_ENDIAN);
4532
0
            ptvcursor_add(cursor, hf_homeplug_av_reserved, 2, ENC_NA);
4533
0
            ptvcursor_add(cursor, hf_homeplug_av_tone_map_tx_cnf_mac, 6, ENC_NA);
4534
0
            ptvcursor_add(cursor, hf_homeplug_av_tone_map_tx_cnf_slot, 2, ENC_LITTLE_ENDIAN);
4535
0
            ptvcursor_add(cursor, hf_homeplug_av_tone_map_tx_cnf_num_tms, 2, ENC_LITTLE_ENDIAN);
4536
4537
0
            num_act_carriers = tvb_get_letohs(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
4538
0
            ptvcursor_add(cursor, hf_homeplug_av_tone_map_tx_cnf_num_act, 2, ENC_LITTLE_ENDIAN);
4539
0
            ptvcursor_add(cursor, hf_homeplug_av_reserved, 4, ENC_NA);
4540
4541
0
            if (num_act_carriers)
4542
0
            {
4543
0
                dissect_homeplug_av_tone_map_carrier(cursor, num_act_carriers);
4544
0
            }
4545
0
        }
4546
0
        else
4547
0
        {
4548
0
            ptvcursor_add(cursor, hf_homeplug_av_tone_map_tx_cnf_status, 1, ENC_LITTLE_ENDIAN);
4549
0
            ptvcursor_add(cursor, hf_homeplug_av_tone_map_tx_cnf_slot, 1, ENC_LITTLE_ENDIAN);
4550
0
            ptvcursor_add(cursor, hf_homeplug_av_tone_map_tx_cnf_num_tms, 1, ENC_LITTLE_ENDIAN);
4551
4552
0
            num_act_carriers = tvb_get_letohs(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
4553
0
            ptvcursor_add(cursor, hf_homeplug_av_tone_map_tx_cnf_num_act, 2, ENC_LITTLE_ENDIAN);
4554
4555
0
            if (num_act_carriers)
4556
0
            {
4557
0
                dissect_homeplug_av_tone_map_carrier(cursor, num_act_carriers);
4558
0
            }
4559
0
        }
4560
0
    }
4561
0
    ptvcursor_pop_subtree(cursor);
4562
0
}
4563
4564
static void
4565
dissect_homeplug_av_tone_map_rx_cnf(ptvcursor_t *cursor, uint8_t homeplug_av_mmver)
4566
0
{
4567
0
    proto_item *it;
4568
0
    uint16_t    num_act_carriers;
4569
4570
0
    if (!ptvcursor_tree(cursor))
4571
0
        return;
4572
4573
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_tone_map_rx_cnf, -1, ENC_NA);
4574
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_tone_map_rx_cnf);
4575
0
    {
4576
0
        if (homeplug_av_mmver == HOMEPLUG_AV_MMVER_1_1)
4577
0
        {
4578
0
            ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_cnf_status, 1, ENC_LITTLE_ENDIAN);
4579
0
            ptvcursor_add(cursor, hf_homeplug_av_reserved, 1, ENC_NA);
4580
0
            ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_cnf_len, 2, ENC_LITTLE_ENDIAN);
4581
0
            ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_cnf_subver, 1, ENC_LITTLE_ENDIAN);
4582
0
            ptvcursor_add(cursor, hf_homeplug_av_reserved, 1, ENC_NA);
4583
0
            ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_cnf_mac, 6, ENC_NA);
4584
0
            ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_cnf_slot, 1, ENC_LITTLE_ENDIAN);
4585
0
            ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_cnf_coupling, 1, ENC_LITTLE_ENDIAN);
4586
0
            ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_cnf_num_tms, 1, ENC_LITTLE_ENDIAN);
4587
0
            ptvcursor_add(cursor, hf_homeplug_av_reserved, 1, ENC_NA);
4588
4589
0
            num_act_carriers = tvb_get_letohs(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
4590
0
            ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_cnf_num_act, 2, ENC_LITTLE_ENDIAN);
4591
4592
0
            if (num_act_carriers)
4593
0
            {
4594
0
                ptvcursor_add(cursor, hf_homeplug_av_reserved, 4, ENC_NA);
4595
0
                ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_cnf_gil, 1, ENC_LITTLE_ENDIAN);
4596
0
                ptvcursor_add(cursor, hf_homeplug_av_reserved, 1, ENC_NA);
4597
0
                ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_cnf_agc, 1, ENC_LITTLE_ENDIAN);
4598
0
                ptvcursor_add(cursor, hf_homeplug_av_reserved, 1, ENC_NA);
4599
4600
0
                dissect_homeplug_av_tone_map_carrier(cursor, num_act_carriers);
4601
0
            }
4602
0
        }
4603
0
        else
4604
0
        {
4605
0
            ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_cnf_status,  1, ENC_LITTLE_ENDIAN);
4606
0
            ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_cnf_slot,    1, ENC_LITTLE_ENDIAN);
4607
0
            ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_cnf_num_tms, 1, ENC_LITTLE_ENDIAN);
4608
4609
0
            num_act_carriers = tvb_get_letohs(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
4610
0
            ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_cnf_num_act, 2, ENC_LITTLE_ENDIAN);
4611
4612
0
            if (num_act_carriers)
4613
0
            {
4614
0
                dissect_homeplug_av_tone_map_carrier(cursor, num_act_carriers);
4615
4616
0
                if (num_act_carriers > HOMEPLUG_AV_TONE_MAP_MAX_NUM_CARRIERS_A)
4617
0
                    ptvcursor_add(cursor, hf_homeplug_av_reserved, (HOMEPLUG_AV_TONE_MAP_MAX_NUM_CARRIERS_B-num_act_carriers) >>1 , ENC_NA);
4618
0
                else
4619
0
                    ptvcursor_add(cursor, hf_homeplug_av_reserved, (HOMEPLUG_AV_TONE_MAP_MAX_NUM_CARRIERS_A-num_act_carriers) >>1 , ENC_NA);
4620
4621
0
                ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_cnf_gil, 1, ENC_LITTLE_ENDIAN);
4622
0
                ptvcursor_add(cursor, hf_homeplug_av_tone_map_rx_cnf_agc, 1, ENC_LITTLE_ENDIAN);
4623
0
            }
4624
0
        }
4625
0
    }
4626
0
    ptvcursor_pop_subtree(cursor);
4627
0
}
4628
4629
4630
static void
4631
0
dissect_homeplug_av_cc_assoc_req(ptvcursor_t *cursor) {
4632
4633
0
    if (!ptvcursor_tree(cursor))
4634
0
        return;
4635
4636
0
    ptvcursor_add(cursor, hf_homeplug_av_cc_assoc_reqtype, 1, ENC_NA);
4637
0
    ptvcursor_add(cursor, hf_homeplug_av_cc_assoc_nid, 7, ENC_NA);
4638
0
    ptvcursor_add(cursor, hf_homeplug_av_cc_assoc_cco_cap, 1, ENC_NA);
4639
0
    ptvcursor_add(cursor, hf_homeplug_av_cc_assoc_proxy_net_cap, 1, ENC_NA);
4640
0
}
4641
4642
static void
4643
0
dissect_homeplug_av_cc_assoc_cnf(ptvcursor_t *cursor) {
4644
4645
0
    if (!ptvcursor_tree(cursor))
4646
0
        return;
4647
4648
0
    ptvcursor_add(cursor, hf_homeplug_av_cc_assoc_result, 1, ENC_NA);
4649
0
    ptvcursor_add(cursor, hf_homeplug_av_cc_assoc_nid, 7, ENC_NA);
4650
0
    ptvcursor_add(cursor, hf_homeplug_av_cc_assoc_snid, 1, ENC_NA);
4651
0
    ptvcursor_add(cursor, hf_homeplug_av_cc_assoc_tei, 1, ENC_NA);
4652
0
    ptvcursor_add(cursor, hf_homeplug_av_cc_assoc_lease_time, 2, ENC_LITTLE_ENDIAN);
4653
0
}
4654
4655
static void
4656
0
dissect_homeplug_av_cc_set_tei_map_ind(ptvcursor_t *cursor) {
4657
0
    uint8_t numberOfSTA = 0;
4658
0
    unsigned iter = 0;
4659
4660
0
    if (!ptvcursor_tree(cursor))
4661
0
        return;
4662
4663
0
    ptvcursor_add(cursor, hf_homeplug_av_cc_set_tei_map_ind_mode, 1, ENC_NA);
4664
4665
0
    numberOfSTA = tvb_get_uint8( ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
4666
0
    ptvcursor_add(cursor, hf_homeplug_av_cc_set_tei_map_ind_num, 1, ENC_NA);
4667
4668
0
    for ( iter = 0; iter < numberOfSTA; ++iter ) {
4669
0
        ptvcursor_add(cursor, hf_homeplug_av_cc_set_tei_map_ind_tei, 1, ENC_NA);
4670
0
        ptvcursor_add(cursor, hf_homeplug_av_cc_set_tei_map_ind_mac, 6, ENC_NA);
4671
0
        ptvcursor_add(cursor, hf_homeplug_av_cc_set_tei_map_ind_status, 1, ENC_NA);
4672
0
    }
4673
0
}
4674
4675
static void
4676
0
dissect_homeplug_av_cm_unassociated_sta_ind(ptvcursor_t *cursor) {
4677
4678
0
    if (!ptvcursor_tree(cursor))
4679
0
        return;
4680
4681
0
    ptvcursor_add(cursor, hf_homeplug_av_cm_unassoc_sta_nid, 7, ENC_NA);
4682
0
    ptvcursor_add(cursor, hf_homeplug_av_cm_unassoc_sta_cco_cap, 1, ENC_NA);
4683
0
}
4684
4685
/* HPAV/GP dissect functions */
4686
static void
4687
0
dissect_homeplug_av_gp_cm_slac_parm_req(ptvcursor_t *cursor) {
4688
4689
0
    uint8_t sectype,cipher_size;
4690
0
    uint16_t Counter;
4691
4692
0
    if (!ptvcursor_tree(cursor))
4693
0
        return;
4694
4695
0
    ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_parm_apptype, 1, ENC_NA);
4696
0
    sectype = tvb_get_uint8(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
4697
0
    ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_parm_sectype, 1, ENC_NA);
4698
0
    ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_parm_runid, 8, ENC_NA);
4699
0
    if (sectype == HOMEPLUG_AV_GP_SECURITY_TYPE_PUBLIC_KEY) {
4700
0
        cipher_size = tvb_get_uint8(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
4701
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_parm_cipher_size, 1, ENC_NA);
4702
0
        for (Counter = 0; Counter < cipher_size; ++Counter) {
4703
0
            ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_parm_cipher, 2, ENC_LITTLE_ENDIAN);
4704
0
        }
4705
0
    }
4706
0
}
4707
4708
static void
4709
0
dissect_homeplug_av_gp_cm_slac_parm_cnf(ptvcursor_t *cursor) {
4710
4711
0
    uint8_t sectype;
4712
4713
0
    if (!ptvcursor_tree(cursor))
4714
0
        return;
4715
4716
0
    ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_parm_sound_target, 6, ENC_NA);
4717
0
    ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_parm_sound_count, 1, ENC_NA);
4718
0
    ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_parm_time_out, 1, ENC_NA);
4719
0
    ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_parm_resptype, 1, ENC_NA);
4720
0
    ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_parm_forwarding_sta, 6, ENC_NA);
4721
0
    ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_parm_apptype, 1, ENC_NA);
4722
0
    sectype = tvb_get_uint8(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
4723
0
    ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_parm_sectype, 1, ENC_NA);
4724
0
    ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_parm_runid, 8, ENC_NA);
4725
0
    if (sectype == HOMEPLUG_AV_GP_SECURITY_TYPE_PUBLIC_KEY) {
4726
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_parm_cipher, 2, ENC_LITTLE_ENDIAN);
4727
0
    }
4728
0
}
4729
4730
static void
4731
4
dissect_homeplug_av_gp_cm_atten_profile_ind(ptvcursor_t *cursor) {
4732
4733
4
    uint8_t group_size;
4734
4
    uint16_t Counter;
4735
4736
4
    if (!ptvcursor_tree(cursor))
4737
0
        return;
4738
4739
4
    ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_profile_ind_pev_mac, 6, ENC_NA);
4740
4
    group_size = tvb_get_uint8(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
4741
4
    ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_profile_ind_num_groups, 1, ENC_NA);
4742
    /* Skip reserved */
4743
4
    ptvcursor_advance(cursor, 1);
4744
71
    for (Counter = 0; Counter < group_size; ++Counter) {
4745
67
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_profile_ind_aag, 1, ENC_NA);
4746
67
    }
4747
4
}
4748
4749
static void
4750
0
dissect_homeplug_av_gp_cm_atten_char_ind(ptvcursor_t *cursor, packet_info *pinfo) {
4751
4752
0
    uint8_t sectype, numgroups, val;
4753
0
    uint16_t Counter_groups;
4754
0
    proto_item *it;
4755
0
    float avg;
4756
4757
0
    avg = 0.0f;
4758
4759
0
    ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_apptype, 1, ENC_NA);
4760
0
    sectype = tvb_get_uint8(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor));
4761
4762
0
    ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_sectype, 1, ENC_NA);
4763
4764
0
    if (sectype == HOMEPLUG_AV_GP_SECURITY_TYPE_PUBLIC_KEY) {
4765
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_cms_data, -1, ENC_NA);
4766
0
    } else {
4767
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_source_mac, 6, ENC_NA);
4768
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_runid, 8, ENC_NA);
4769
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_source_id, 17, ENC_NA);
4770
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_resp_id, 17, ENC_NA);
4771
4772
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_numsounds, 1, ENC_NA);
4773
4774
0
        numgroups = tvb_get_uint8(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor));
4775
4776
0
        it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_gp_cm_atten_char_profile, numgroups+1 , ENC_NA);
4777
4778
0
        ptvcursor_push_subtree(cursor, it, ett_homeplug_av_gp_cm_atten_char_profile);
4779
0
        {
4780
0
            ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_numgroups, 1, ENC_NA);
4781
0
            for (Counter_groups = 0; Counter_groups < numgroups; ++Counter_groups) {
4782
0
                val = tvb_get_uint8(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor));
4783
0
                proto_tree_add_uint_format( ptvcursor_tree(cursor),
4784
0
                                            hf_homeplug_av_gp_cm_atten_char_aag,
4785
0
                                            ptvcursor_tvbuff(cursor),
4786
0
                                            ptvcursor_current_offset(cursor), 1, val,
4787
0
                                            HOMEPLUG_AV_GP_CM_ATTEN_CHAR_AAG_FORMAT, Counter_groups + 1, val );
4788
0
                avg += val;
4789
0
                ptvcursor_advance(cursor, 1);
4790
0
            }
4791
0
            avg /= numgroups;
4792
0
            col_append_fstr(pinfo->cinfo, COL_INFO, " (Groups = %d, Avg. Attenuation = %.2f dB)", numgroups, avg);
4793
0
        }
4794
0
        ptvcursor_pop_subtree(cursor);
4795
0
    }
4796
4797
0
}
4798
4799
static void
4800
0
dissect_homeplug_av_gp_cm_atten_char_rsp(ptvcursor_t *cursor) {
4801
4802
0
    uint8_t sectype;
4803
4804
0
    if (!ptvcursor_tree(cursor))
4805
0
        return;
4806
4807
0
    ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_apptype, 1, ENC_NA);
4808
0
    sectype = tvb_get_uint8(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor));
4809
4810
0
    ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_sectype, 1, ENC_NA);
4811
4812
0
    if (sectype == HOMEPLUG_AV_GP_SECURITY_TYPE_PUBLIC_KEY) {
4813
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_cms_data, -1, ENC_NA);
4814
0
    } else {
4815
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_source_mac, 6, ENC_NA);
4816
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_runid, 8, ENC_NA);
4817
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_source_id, 17, ENC_NA);
4818
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_resp_id, 17, ENC_NA);
4819
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_result, 1, ENC_NA);
4820
0
    }
4821
0
}
4822
4823
static void
4824
0
dissect_homeplug_av_gp_cm_start_atten_char_ind(ptvcursor_t *cursor) {
4825
4826
0
    uint8_t sectype;
4827
4828
0
    if (!ptvcursor_tree(cursor))
4829
0
        return;
4830
4831
0
    ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_apptype, 1, ENC_NA);
4832
0
    sectype = tvb_get_uint8(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor));
4833
4834
0
    ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_sectype, 1, ENC_NA);
4835
4836
0
    if (sectype == HOMEPLUG_AV_GP_SECURITY_TYPE_PUBLIC_KEY) {
4837
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_cms_data, -1, ENC_NA);
4838
0
    } else {
4839
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_start_atten_char_numsounds, 1, ENC_NA);
4840
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_start_atten_char_time_out, 1, ENC_NA);
4841
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_start_atten_char_resptype, 1, ENC_NA);
4842
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_start_atten_char_forwarding_sta, 6, ENC_NA);
4843
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_start_atten_char_runid, 8, ENC_NA);
4844
0
    }
4845
0
}
4846
4847
static void
4848
0
dissect_homeplug_av_gp_cm_mnbc_sound_ind(ptvcursor_t *cursor) {
4849
4850
0
    uint8_t apptype,sectype;
4851
4852
0
    if (!ptvcursor_tree(cursor))
4853
0
        return;
4854
4855
0
    apptype = tvb_get_uint8(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor));
4856
0
    ptvcursor_add(cursor, hf_homeplug_av_gp_cm_mnbc_sound_apptype, 1, ENC_NA);
4857
4858
0
    sectype = tvb_get_uint8(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor));
4859
0
    ptvcursor_add(cursor, hf_homeplug_av_gp_cm_mnbc_sound_sectype, 1, ENC_NA);
4860
4861
0
    if (sectype == HOMEPLUG_AV_GP_SECURITY_TYPE_PUBLIC_KEY) {
4862
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_cms_data, -1, ENC_NA);
4863
0
    } else {
4864
0
        switch (apptype) {
4865
0
        case HOMEPLUG_AV_GP_APPTYPE_PEV_EVSE_ASSOC:
4866
0
            ptvcursor_add(cursor, hf_homeplug_av_gp_cm_mnbc_sound_sender_id, 17, ENC_NA);
4867
0
            ptvcursor_add(cursor, hf_homeplug_av_gp_cm_mnbc_sound_countdown, 1, ENC_NA);
4868
0
            ptvcursor_add(cursor, hf_homeplug_av_gp_cm_mnbc_sound_runid, 8, ENC_NA);
4869
0
            ptvcursor_add(cursor, hf_homeplug_av_gp_cm_mnbc_sound_rsvd, 8, ENC_NA);
4870
0
            ptvcursor_add(cursor, hf_homeplug_av_gp_cm_mnbc_sound_rnd, 16, ENC_NA);
4871
0
            break;
4872
0
        }
4873
0
    }
4874
0
}
4875
4876
static void
4877
0
dissect_homeplug_av_gp_cm_validate_req(ptvcursor_t *cursor) {
4878
4879
0
    uint8_t signaltype;
4880
4881
0
    if (!ptvcursor_tree(cursor))
4882
0
        return;
4883
4884
0
    signaltype = tvb_get_uint8(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor));
4885
0
    ptvcursor_add(cursor, hf_homeplug_av_gp_cm_validate_signaltype, 1, ENC_NA);
4886
0
    switch (signaltype) {
4887
0
    case HOMEPLUG_AV_GP_SIGNAL_TYPE_PEV_S2_TOGGLES:
4888
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_validate_timer, 1, ENC_NA);
4889
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_validate_result, 1, ENC_NA);
4890
0
        break;
4891
0
    }
4892
0
}
4893
4894
static void
4895
0
dissect_homeplug_av_gp_cm_validate_cnf(ptvcursor_t *cursor) {
4896
4897
0
    uint8_t signaltype;
4898
4899
0
    if (!ptvcursor_tree(cursor))
4900
0
        return;
4901
4902
0
    signaltype = tvb_get_uint8(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor));
4903
0
    ptvcursor_add(cursor, hf_homeplug_av_gp_cm_validate_signaltype, 1, ENC_NA);
4904
0
    switch (signaltype) {
4905
0
    case HOMEPLUG_AV_GP_SIGNAL_TYPE_PEV_S2_TOGGLES:
4906
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_validate_togglenum, 1, ENC_NA);
4907
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_validate_result, 1, ENC_NA);
4908
0
        break;
4909
0
    }
4910
0
}
4911
4912
static void
4913
0
dissect_homeplug_av_gp_cm_slac_match_req(ptvcursor_t *cursor) {
4914
4915
    /* uint8_t apptype;
4916
       uint16_t length; */
4917
0
    uint8_t sectype;
4918
4919
0
    if (!ptvcursor_tree(cursor))
4920
0
        return;
4921
4922
    /* apptype = tvb_get_uint8(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor)); */
4923
0
    ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_apptype, 1, ENC_NA);
4924
4925
0
    sectype = tvb_get_uint8(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor));
4926
0
    ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_sectype, 1, ENC_NA);
4927
4928
    /* length = tvb_get_uint16(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor), ENC_LITTLE_ENDIAN); */
4929
0
    ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_length, 2, ENC_LITTLE_ENDIAN);
4930
4931
0
    if (sectype == HOMEPLUG_AV_GP_SECURITY_TYPE_PUBLIC_KEY) {
4932
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_cms_data, -1, ENC_NA);
4933
0
    } else {
4934
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_pev_id, 17, ENC_NA);
4935
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_pev_mac, 6, ENC_NA);
4936
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_evse_id, 17, ENC_NA);
4937
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_evse_mac, 6, ENC_NA);
4938
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_runid, 8, ENC_NA);
4939
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_rsvd, 8, ENC_NA);
4940
0
    }
4941
0
}
4942
4943
static void
4944
0
dissect_homeplug_av_gp_cm_slac_match_cnf(ptvcursor_t *cursor) {
4945
4946
    /* uint8_t apptype;
4947
       uint16_t length; */
4948
0
    uint8_t sectype;
4949
4950
0
    if (!ptvcursor_tree(cursor))
4951
0
        return;
4952
4953
    //apptype = tvb_get_uint8(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor));
4954
0
    ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_apptype, 1, ENC_NA);
4955
4956
0
    sectype = tvb_get_uint8(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor));
4957
0
    ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_sectype, 1, ENC_NA);
4958
4959
    //length = tvb_get_uint16(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor), ENC_LITTLE_ENDIAN);
4960
0
    ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_length, 2, ENC_LITTLE_ENDIAN);
4961
4962
0
    if (sectype == HOMEPLUG_AV_GP_SECURITY_TYPE_PUBLIC_KEY) {
4963
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_atten_char_cms_data, -1, ENC_NA);
4964
0
    } else {
4965
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_pev_id, 17, ENC_NA);
4966
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_pev_mac, 6, ENC_NA);
4967
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_evse_id, 17, ENC_NA);
4968
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_evse_mac, 6, ENC_NA);
4969
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_runid, 8, ENC_NA);
4970
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_rsvd, 8, ENC_NA);
4971
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_nid, 7, ENC_NA);
4972
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_rsvd,1, ENC_NA);
4973
0
        ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_match_nmk,16, ENC_NA);
4974
0
    }
4975
0
}
4976
static void
4977
0
dissect_homeplug_av_gp_cm_slac_user_data(ptvcursor_t *cursor) {
4978
4979
0
    uint16_t Type, Length,TypeLen;
4980
0
    proto_item *it;
4981
4982
0
    if (!ptvcursor_tree(cursor))
4983
0
        return;
4984
4985
0
    ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_user_data_broadcast_tlv_type, 3, ENC_LITTLE_ENDIAN);
4986
4987
0
    for (;;) {
4988
        /* Get Length and Type from TLV Header */
4989
0
        TypeLen = tvb_get_uint16(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor),ENC_LITTLE_ENDIAN);
4990
0
        Length = TypeLen & HOMEPLUG_AV_GP_CM_SLAC_USER_DATA_TLV_LENGTH_MASK;
4991
0
        Type = TypeLen & HOMEPLUG_AV_GP_CM_SLAC_USER_DATA_TLV_TYPE_MASK;
4992
        /* If type and length is null_type - don't add anything and exit */
4993
0
        if (TypeLen == 0)
4994
0
            break;
4995
0
        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);
4996
0
        ptvcursor_push_subtree(cursor, it, ett_homeplug_av_gp_cm_slac_user_data_tlv);
4997
0
        {
4998
0
            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);
4999
0
            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);
5000
0
            if (Type == HOMEPLUG_AV_GP_CM_SLAC_USER_DATA_TLV_TYPE_VENDOR_RESERVED) {
5001
0
                ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_user_data_tlv_oui, 3, ENC_LITTLE_ENDIAN);
5002
0
                ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_user_data_tlv_subtype, 1, ENC_NA);
5003
0
                ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_user_data_tlv_info_str, Length - 3 - 1, ENC_NA);
5004
0
            } else {
5005
0
                ptvcursor_add(cursor, hf_homeplug_av_gp_cm_slac_user_data_tlv_str_bytes, Length, ENC_NA);
5006
0
            }
5007
0
        }
5008
0
        ptvcursor_pop_subtree(cursor);
5009
0
    }
5010
5011
0
}
5012
5013
/* End of HPAV/GP dissect functions */
5014
5015
/* ST/IoTecha dissect functions */
5016
5017
/* General parts */
5018
static void
5019
0
dissect_homeplug_av_st_iotecha_header(ptvcursor_t *cursor) {
5020
5021
0
    proto_tree *tree;
5022
5023
0
    if (!ptvcursor_tree(cursor)) {
5024
0
        ptvcursor_advance(cursor, 5);
5025
0
        return;
5026
0
    }
5027
    /* if we saved vendor subtree */
5028
0
    if (ti_vendor) {
5029
        /* Save current position */
5030
0
        tree = ptvcursor_tree(cursor);
5031
        /* Go back to vendor subtree */
5032
0
        ptvcursor_set_subtree(cursor, ti_vendor, ett_homeplug_av_public);
5033
        /* Add info */
5034
0
        ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_header_mmever, 1, ENC_NA);
5035
0
        ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_header_rsvd, 3, ENC_NA);
5036
        /* Extending length of tree item */
5037
0
        proto_tree_set_appendix(ti_vendor, ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor) - 4, 4);
5038
        /* Now back to current position */
5039
0
        ptvcursor_set_tree(cursor,tree);
5040
0
    } else {
5041
        /* else - just add fields as is */
5042
0
        ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_header_mmever, 1, ENC_NA);
5043
0
        ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_header_rsvd, 3, ENC_NA);
5044
0
    }
5045
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_header_mver, 1, ENC_NA);
5046
0
}
5047
5048
static void
5049
0
dissect_homeplug_av_st_iotecha_status_standard(ptvcursor_t *cursor) {
5050
5051
0
    if (!ptvcursor_tree(cursor))
5052
0
        return;
5053
5054
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_status_byte, 1, ENC_NA);
5055
0
}
5056
5057
/* Specific messages */
5058
5059
static void
5060
0
dissect_homeplug_av_st_iotecha_stp_discover_tlv(ptvcursor_t *cursor) {
5061
5062
0
    uint16_t Type, Length,TypeLen;
5063
0
    proto_item *it;
5064
5065
0
    if (!ptvcursor_tree(cursor))
5066
0
        return;
5067
5068
0
    for (;;) {
5069
        /* Get Length and Type from TLV Header */
5070
0
        TypeLen = tvb_get_uint16(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor),ENC_LITTLE_ENDIAN);
5071
0
        Length = TypeLen & HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_LENGTH_MASK;
5072
0
        Type = TypeLen & HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_MASK;
5073
        /* If type is null_type - don't add anything and exit */
5074
0
        if (Type == HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_NULL)
5075
0
            break;
5076
0
        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);
5077
0
        ptvcursor_push_subtree(cursor, it, ett_homeplug_av_st_iotecha_type_length_value);
5078
0
        {
5079
0
            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);
5080
0
            ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_stp_discover_tlv_length, HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_HEADER_SIZE, ENC_LITTLE_ENDIAN);
5081
0
            if (Type == HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_TYPE_DEVICE_TYPE) {
5082
0
                ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_stp_discover_tlv_value_bytes, Length, ENC_NA);
5083
0
            } else {
5084
0
                ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_stp_discover_tlv_value_string, Length, ENC_ASCII);
5085
0
            }
5086
0
        }
5087
0
        ptvcursor_pop_subtree(cursor);
5088
0
    }
5089
0
}
5090
5091
static void
5092
0
dissect_homeplug_av_st_iotecha_stp_get_bss_tlv(ptvcursor_t *cursor, uint8_t count) {
5093
5094
0
    uint8_t Type;
5095
0
    uint16_t Counter, Length;
5096
0
    proto_item *it;
5097
5098
0
    if (!ptvcursor_tree(cursor))
5099
0
        return;
5100
5101
0
    for (Counter = 0; Counter < count; ++Counter) {
5102
0
        Type = tvb_get_uint8(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor));
5103
0
        if (Type == HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_BEGIN_BSS) {
5104
0
            it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_st_iotecha_bss_entry, 0, ENC_NA);
5105
0
            ptvcursor_push_subtree(cursor, it, ett_homeplug_av_st_iotecha_bss_entry);
5106
0
            {
5107
0
                while (Type != HOMEPLUG_AV_ST_IOTECHA_STP_GET_BSS_TYPE_END_BSS) {
5108
0
                    Type = tvb_get_uint8(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor));
5109
0
                    it = ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_bss_type, 1, ENC_NA);
5110
0
                    Length = tvb_get_uint16(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor), ENC_LITTLE_ENDIAN);
5111
                    /* If no data - skip fields */
5112
0
                    if (Length) {
5113
0
                        proto_item_append_text(it," Length: %d",Length);
5114
0
                        ptvcursor_advance(cursor, 2);
5115
0
                        switch (Type) {
5116
0
                        default:
5117
0
                            ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_bss_value_bytes, Length, ENC_NA);
5118
0
                            break;
5119
0
                        }
5120
5121
0
                    } else {
5122
0
                        ptvcursor_advance(cursor, 2);
5123
0
                    }
5124
0
                }
5125
0
            }
5126
0
            ptvcursor_pop_subtree(cursor);
5127
0
        }
5128
0
    }
5129
0
}
5130
5131
static void
5132
0
dissect_homeplug_av_st_iotecha_stp_auth_set_nmk_req(ptvcursor_t *cursor) {
5133
5134
0
    if (!ptvcursor_tree(cursor))
5135
0
        return;
5136
5137
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_auth_nmk, 16, ENC_NA);
5138
0
}
5139
5140
static void
5141
0
dissect_homeplug_av_st_iotecha_stp_set_maxgain_req(ptvcursor_t *cursor) {
5142
5143
0
    if (!ptvcursor_tree(cursor))
5144
0
        return;
5145
5146
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_gain_ask, 1, ENC_NA);
5147
0
}
5148
5149
static void
5150
0
dissect_homeplug_av_st_iotecha_stp_set_maxgain_cnf(ptvcursor_t *cursor) {
5151
5152
0
    if (!ptvcursor_tree(cursor))
5153
0
        return;
5154
5155
0
    dissect_homeplug_av_st_iotecha_status_standard(cursor);
5156
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_gain_new, 1, ENC_NA);
5157
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_gain_prev, 1, ENC_NA);
5158
0
}
5159
5160
static void
5161
0
dissect_homeplug_av_st_iotecha_linkstatus(ptvcursor_t *cursor) {
5162
5163
0
    if (!ptvcursor_tree(cursor))
5164
0
        return;
5165
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_linkstatus_status, 1, ENC_NA);
5166
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_linkstatus_devmode, 1, ENC_NA);
5167
5168
0
}
5169
5170
static void
5171
0
dissect_homeplug_av_st_iotecha_discover(ptvcursor_t *cursor) {
5172
5173
0
    if (!ptvcursor_tree(cursor))
5174
0
        return;
5175
5176
0
    dissect_homeplug_av_st_iotecha_stp_discover_tlv(cursor);
5177
0
}
5178
5179
static void
5180
0
dissect_homeplug_av_st_iotecha_stp_get_tei_list_cnf(ptvcursor_t *cursor) {
5181
5182
0
    uint8_t TeiCount;
5183
0
    uint8_t Counter;
5184
5185
0
    if (!ptvcursor_tree(cursor))
5186
0
        return;
5187
5188
0
    TeiCount = tvb_get_uint8(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor));
5189
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_tei_count, 1, ENC_NA);
5190
0
    for (Counter = 0; Counter < TeiCount; ++Counter) {
5191
0
        ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_tei, 1, ENC_NA);
5192
0
    }
5193
0
}
5194
5195
static void
5196
0
dissect_homeplug_av_st_iotecha_stp_get_tei_snapshot_req(ptvcursor_t *cursor) {
5197
5198
0
    if (!ptvcursor_tree(cursor))
5199
0
        return;
5200
5201
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_tei, 1, ENC_NA);
5202
0
}
5203
5204
static void
5205
0
dissect_homeplug_av_st_iotecha_stp_get_tei_snapshot_cnf(ptvcursor_t *cursor) {
5206
5207
0
    uint8_t AddrCount;
5208
0
    uint8_t Counter;
5209
5210
0
    if (!ptvcursor_tree(cursor))
5211
0
        return;
5212
5213
0
    AddrCount = tvb_get_uint8(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor));
5214
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_tei_snap_addr_count, 1, ENC_NA);
5215
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_tei_snap_tei, 1, ENC_NA);
5216
0
    for (Counter = 0; Counter < AddrCount; ++Counter) {
5217
0
        ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mac_address, 6, ENC_NA);
5218
0
        ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_tei_snap_mac_address_flag, 2, ENC_LITTLE_ENDIAN);
5219
0
    }
5220
0
}
5221
5222
static void
5223
0
dissect_homeplug_av_st_iotecha_stp_get_bss_list_cnf(ptvcursor_t *cursor) {
5224
5225
0
    uint8_t Count;
5226
5227
0
    if (!ptvcursor_tree(cursor))
5228
0
        return;
5229
5230
0
    Count  = tvb_get_uint8( ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
5231
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_bss_list_count, 1, ENC_NA);
5232
0
    dissect_homeplug_av_st_iotecha_stp_get_bss_tlv(cursor, Count);
5233
0
}
5234
5235
static void
5236
0
dissect_homeplug_av_st_iotecha_stp_get_chanqual_report_req(ptvcursor_t *cursor) {
5237
5238
0
    if (!ptvcursor_tree(cursor))
5239
0
        return;
5240
5241
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_chanqual_req_type, 1, ENC_NA);
5242
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mac_address, 6, ENC_NA);
5243
0
}
5244
5245
static void
5246
0
dissect_homeplug_av_st_iotecha_stp_get_chanqual_report_cnf(ptvcursor_t *cursor) {
5247
5248
0
    if (!ptvcursor_tree(cursor))
5249
0
        return;
5250
5251
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_chanqual_substatus, 1, ENC_NA);
5252
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mac_address, 6, ENC_NA);
5253
0
}
5254
5255
static void
5256
0
dissect_homeplug_av_st_iotecha_stp_get_chanqual_report_ind(ptvcursor_t *cursor) {
5257
5258
0
    proto_item *it;
5259
0
    uint8_t tmi_count, int_count;
5260
0
    uint16_t Counter;
5261
5262
0
    if (!ptvcursor_tree(cursor))
5263
0
        return;
5264
5265
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mac_address, 6, ENC_NA);
5266
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_chanqual_mac_local, 6, ENC_NA);
5267
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_chanqual_mac_remote, 6, ENC_NA);
5268
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_chanqual_source, 1, ENC_NA);
5269
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_chanqual_response_type, 1, ENC_NA);
5270
    /* TMI */
5271
0
    tmi_count  = tvb_get_uint8( ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
5272
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_chanqual_tmi_count, 1, ENC_NA);
5273
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_chanqual_tmi, tmi_count, ENC_NA);
5274
    /* Intervals */
5275
0
    int_count = tvb_get_uint8( ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
5276
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_chanqual_int_count, 1, ENC_NA);
5277
5278
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_st_iotecha_chanqual_int,
5279
0
                                  int_count*3, ENC_NA);
5280
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_st_iotecha_chanqual_int);
5281
0
    {
5282
0
        for (Counter = 0; Counter < int_count; ++Counter) {
5283
0
            ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_chanqual_int_et, 2, ENC_LITTLE_ENDIAN);
5284
0
            ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_chanqual_int_tmi, 1, ENC_NA);
5285
0
        }
5286
0
    }
5287
0
    ptvcursor_pop_subtree(cursor);
5288
    /* TMI Attached */
5289
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_chanqual_tmi_attached, 1, ENC_NA);
5290
    /* Reserved 1 */
5291
0
    ptvcursor_advance(cursor,1);
5292
    /* FEC */
5293
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_chanqual_fec_type, 1, ENC_NA);
5294
    /* Reserved 2 */
5295
0
    ptvcursor_advance(cursor,1);
5296
    /* CBLD */
5297
0
    it = ptvcursor_add_no_advance(cursor, hf_homeplug_av_st_iotecha_chanqual_cbld, -1, ENC_NA);
5298
0
    ptvcursor_push_subtree(cursor, it, ett_homeplug_av_st_iotecha_chanqual_cbld);
5299
0
    {
5300
0
        for (Counter = 0; Counter < HOMEPLUG_AV_ST_IOTECHA_CHANQUAL_CBLD_DATA_COUNT; ++Counter) {
5301
0
            ptvcursor_add_no_advance(cursor, hf_homeplug_av_st_iotecha_chanqual_cbld_data_low, 1, ENC_NA);
5302
0
            ptvcursor_add_no_advance(cursor, hf_homeplug_av_st_iotecha_chanqual_cbld_data_high, 1, ENC_NA);
5303
0
            ptvcursor_advance(cursor, 1);
5304
0
        }
5305
0
    }
5306
0
    ptvcursor_pop_subtree(cursor);
5307
5308
0
}
5309
5310
static void
5311
0
dissect_homeplug_av_st_iotecha_stp_mfct_update_stage_req(ptvcursor_t *cursor) {
5312
5313
0
    uint16_t Length;
5314
5315
0
    if (!ptvcursor_tree(cursor))
5316
0
        return;
5317
5318
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mfct_crc, 2, ENC_NA);
5319
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mfct_total_length, 2, ENC_LITTLE_ENDIAN);
5320
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mfct_offset, 2, ENC_LITTLE_ENDIAN);
5321
5322
0
    Length = tvb_get_uint16(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor),ENC_LITTLE_ENDIAN);
5323
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mfct_length, 2, ENC_LITTLE_ENDIAN);
5324
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mfct_data, Length, ENC_NA);
5325
0
}
5326
5327
static void
5328
0
dissect_homeplug_av_st_iotecha_stp_mfct_update_stage_cnf(ptvcursor_t *cursor) {
5329
5330
0
    if (!ptvcursor_tree(cursor))
5331
0
        return;
5332
5333
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mfct_crc, 2, ENC_NA);
5334
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mfct_timeout, 4, ENC_LITTLE_ENDIAN);
5335
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mfct_offset, 2, ENC_LITTLE_ENDIAN);
5336
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mfct_result, 1, ENC_NA);
5337
0
}
5338
5339
static void
5340
0
dissect_homeplug_av_st_iotecha_stp_mfct_update_finish_req(ptvcursor_t *cursor) {
5341
5342
0
    if (!ptvcursor_tree(cursor))
5343
0
        return;
5344
5345
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mfct_request_type, 1, ENC_NA);
5346
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mfct_reboot, 1, ENC_NA);
5347
0
}
5348
5349
static void
5350
0
dissect_homeplug_av_st_iotecha_stp_mfct_get_item_req(ptvcursor_t *cursor) {
5351
5352
0
    int name_size;
5353
5354
0
    if (!ptvcursor_tree(cursor))
5355
0
        return;
5356
5357
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mfct_item_offset, 4, ENC_LITTLE_ENDIAN);
5358
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mfct_item_total_length, 4, ENC_LITTLE_ENDIAN);
5359
0
    name_size = tvb_strsize(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor));
5360
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mfct_name, name_size-1, ENC_ASCII);
5361
    /* Skip terminator */
5362
0
    ptvcursor_advance(cursor, 1);
5363
0
}
5364
5365
static void
5366
0
dissect_homeplug_av_st_iotecha_stp_mfct_get_item_cnf(ptvcursor_t *cursor) {
5367
5368
0
    int name_size;
5369
5370
0
    if (!ptvcursor_tree(cursor))
5371
0
        return;
5372
5373
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mfct_item_offset, 4, ENC_LITTLE_ENDIAN);
5374
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mfct_item_total_length, 4, ENC_LITTLE_ENDIAN);
5375
0
    name_size = tvb_strsize(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor));
5376
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mfct_name, name_size - 1, ENC_ASCII);
5377
    /* Skip terminator */
5378
0
    ptvcursor_advance(cursor,1);
5379
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mfct_value, -1, ENC_NA);
5380
0
}
5381
5382
static void
5383
0
dissect_homeplug_av_st_iotecha_stp_mfct_get_keylist_cnf(ptvcursor_t *cursor) {
5384
5385
0
    int name_size;
5386
5387
0
    if (!ptvcursor_tree(cursor))
5388
0
        return;
5389
5390
0
    while (tvb_reported_length_remaining(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor)) > 1 )
5391
0
    {
5392
0
        if ((tvb_get_uint8(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor)) == '\0')
5393
0
            && (tvb_get_uint8(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor) + 1) == '\0'))
5394
0
            break;
5395
0
        name_size = tvb_strsize(ptvcursor_tvbuff(cursor),ptvcursor_current_offset(cursor));
5396
0
        ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_mfct_name, name_size - 1, ENC_ASCII);
5397
        /* Skip terminator */
5398
0
        ptvcursor_advance(cursor,1);
5399
0
    }
5400
0
}
5401
5402
static void
5403
0
dissect_homeplug_av_st_iotecha_stp_fup_req(ptvcursor_t *cursor) {
5404
5405
0
    if (!ptvcursor_tree(cursor))
5406
0
        return;
5407
5408
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_stp_fup_mac_da, 6, ENC_NA);
5409
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_stp_fup_mac_sa, 6, ENC_NA);
5410
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_stp_fup_mtype, 1, ENC_NA);
5411
0
}
5412
5413
static void
5414
0
dissect_homeplug_av_st_iotecha_stp_cpstate_ind(ptvcursor_t *cursor, packet_info *pinfo) {
5415
5416
0
    uint8_t bitmask;
5417
0
    uint8_t cp_state;
5418
0
    uint8_t pwm_duty;
5419
5420
0
    cp_state = tvb_get_uint8(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
5421
0
    pwm_duty = tvb_get_uint8(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor)+1);
5422
0
    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);
5423
5424
0
    if (!ptvcursor_tree(cursor))
5425
0
        return;
5426
5427
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_cpstate_state, 1, ENC_NA);
5428
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_cpstate_pwm_duty, 1, ENC_NA);
5429
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_cpstate_pwm_freq, 2, ENC_LITTLE_ENDIAN);
5430
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_cpstate_voltage, 2, ENC_LITTLE_ENDIAN);
5431
0
    bitmask = tvb_get_uint8(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor));
5432
0
    if (bitmask)
5433
0
        ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_cpstate_adc_bitmask, 1, ENC_NA);
5434
0
    else
5435
0
        ptvcursor_advance(cursor, 1);
5436
5437
5438
0
    if (bitmask & 0x01)
5439
0
        ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_cpstate_adc_voltage_1, 2, ENC_LITTLE_ENDIAN);
5440
0
    else
5441
0
        ptvcursor_advance(cursor, 2);
5442
5443
0
    if (bitmask & 0x02)
5444
0
        ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_cpstate_adc_voltage_2, 2, ENC_LITTLE_ENDIAN);
5445
0
    else
5446
0
        ptvcursor_advance(cursor, 2);
5447
5448
0
    if (bitmask & 0x04)
5449
0
        ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_cpstate_adc_voltage_3, 2, ENC_LITTLE_ENDIAN);
5450
0
    else
5451
0
        ptvcursor_advance(cursor, 2);
5452
5453
0
}
5454
5455
static void
5456
0
dissect_homeplug_av_st_iotecha_stp_user_message_ind(ptvcursor_t *cursor, packet_info *pinfo) {
5457
5458
0
    unsigned null_offset;
5459
5460
0
    ptvcursor_advance(cursor, 4); // not used fields
5461
0
    ptvcursor_advance(cursor, 4); // not used fields
5462
5463
0
    if (tvb_find_uint8_remaining(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor) + 1, 0, &null_offset)) {
5464
0
        col_append_fstr(pinfo->cinfo, COL_INFO, ": %s",
5465
0
                        tvb_get_stringz_enc(pinfo->pool, ptvcursor_tvbuff(cursor),
5466
0
                                              ptvcursor_current_offset(cursor),
5467
0
                                              NULL, ENC_ASCII));
5468
0
        ptvcursor_add(cursor,
5469
0
                      hf_homeplug_av_st_iotecha_user_message_info,
5470
0
                      null_offset - ptvcursor_current_offset(cursor),
5471
0
                      ENC_ASCII);
5472
0
    }
5473
5474
0
    if (tvb_find_uint8_remaining(ptvcursor_tvbuff(cursor), ptvcursor_current_offset(cursor) + 1, 0, &null_offset)) {
5475
0
        ptvcursor_add(cursor,
5476
0
                      hf_homeplug_av_st_iotecha_user_message_details,
5477
0
                      null_offset - ptvcursor_current_offset(cursor),
5478
0
                      ENC_ASCII);
5479
0
    }
5480
0
}
5481
5482
static void
5483
0
dissect_homeplug_av_st_iotecha_stp_test_chan_atten_start_rx_req(ptvcursor_t *cursor) {
5484
5485
0
    if (!ptvcursor_tree(cursor))
5486
0
        return;
5487
5488
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_test_type, 1, ENC_NA);
5489
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_num_sound, 1, ENC_NA);
5490
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_data_ind_addr, 6, ENC_NA);
5491
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_agc_lock, 1, ENC_NA);
5492
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_db_agc_val, 1, ENC_NA);
5493
0
}
5494
5495
static void
5496
0
dissect_homeplug_av_st_iotecha_stp_test_chan_atten_start_rx_cnf(ptvcursor_t *cursor) {
5497
0
    if (!ptvcursor_tree(cursor))
5498
0
        return;
5499
5500
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_test_status, 1, ENC_NA);
5501
0
}
5502
5503
static void
5504
0
dissect_homeplug_av_st_iotecha_stp_test_chan_atten_start_tx_req(ptvcursor_t *cursor) {
5505
0
    if (!ptvcursor_tree(cursor))
5506
0
        return;
5507
5508
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_test_type, 1, ENC_NA);
5509
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_num_sound, 1, ENC_NA);
5510
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_data_ind_addr, 6, ENC_NA);
5511
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_suppress_data, 1, ENC_NA);
5512
0
}
5513
5514
static void
5515
0
dissect_homeplug_av_st_iotecha_stp_test_chan_atten_start_tx_cnf(ptvcursor_t *cursor) {
5516
0
    if (!ptvcursor_tree(cursor))
5517
0
        return;
5518
5519
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_test_status, 1, ENC_NA);
5520
0
}
5521
5522
static void
5523
0
dissect_homeplug_av_st_iotecha_stp_test_chan_atten_data_ind(ptvcursor_t *cursor) {
5524
0
    if (!ptvcursor_tree(cursor))
5525
0
        return;
5526
5527
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_sound_remain, 1, ENC_NA);
5528
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_ntb_time, 4, ENC_NA);
5529
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_db_agc_val, 1, ENC_NA);
5530
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_rsvd1, 3, ENC_NA);
5531
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_rsvd2, 4, ENC_NA);
5532
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_num_segments, 1, ENC_NA);
5533
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_segment, 1, ENC_NA);
5534
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_num_chan, 2, ENC_NA);
5535
0
    ptvcursor_add(cursor, hf_homeplug_av_st_iotecha_chan_start, 2, ENC_NA);
5536
0
}
5537
/* End of ST/IoTecha dissect functions */
5538
5539
5540
static void
5541
dissect_homeplug_av_mme_general(ptvcursor_t *cursor,
5542
                                uint8_t homeplug_av_mmver,
5543
                                uint16_t homeplug_av_mmtype,
5544
6
                                packet_info *pinfo) {
5545
6
    (void)homeplug_av_mmver;
5546
    /* Public MMEs */
5547
6
    switch ((homeplug_av_mmetypes_general_type)homeplug_av_mmtype)
5548
6
    {
5549
0
    case HOMEPLUG_AV_MMTYPE_GENERAL_CC_DISCOVER_LIST_CNF:
5550
0
        dissect_homeplug_av_cc_disc_list_cnf(cursor);
5551
0
        break;
5552
0
    case HOMEPLUG_AV_MMTYPE_GENERAL_CM_ENCRYPTED_PAYLOAD_IND:
5553
0
        dissect_homeplug_av_cm_enc_pld_ind(cursor);
5554
0
        break;
5555
0
    case HOMEPLUG_AV_MMTYPE_GENERAL_CM_ENCRYPTED_PAYLOAD_RSP:
5556
0
        dissect_homeplug_av_cm_enc_pld_rsp(cursor);
5557
0
        break;
5558
0
    case HOMEPLUG_AV_MMTYPE_GENERAL_CM_SET_KEY_REQ:
5559
0
        dissect_homeplug_av_cm_set_key_req(cursor);
5560
0
        break;
5561
0
    case HOMEPLUG_AV_MMTYPE_GENERAL_CM_SET_KEY_CNF:
5562
0
        dissect_homeplug_av_cm_set_key_cnf(cursor);
5563
0
        break;
5564
0
    case HOMEPLUG_AV_MMTYPE_GENERAL_CM_GET_KEY_REQ:
5565
0
        dissect_homeplug_av_cm_get_key_req(cursor);
5566
0
        break;
5567
0
    case HOMEPLUG_AV_MMTYPE_GENERAL_CM_GET_KEY_CNF:
5568
0
        dissect_homeplug_av_cm_get_key_cnf(cursor);
5569
0
        break;
5570
0
    case HOMEPLUG_AV_MMTYPE_GENERAL_CM_BRG_INFO_CNF:
5571
0
        dissect_homeplug_av_get_brg_infos_cnf(cursor);
5572
0
        break;
5573
0
    case HOMEPLUG_AV_MMTYPE_GENERAL_CM_NW_INFO_CNF:
5574
0
        dissect_homeplug_av_nw_infos_cnf(cursor);
5575
0
        break;
5576
0
    case HOMEPLUG_AV_MMTYPE_GENERAL_CM_NW_STATS_CNF:
5577
0
        dissect_homeplug_av_nw_stats_cnf(cursor);
5578
0
        break;
5579
0
    case HOMEPLUG_AV_MMTYPE_GENERAL_CC_ASSOC_REQ:
5580
0
        dissect_homeplug_av_cc_assoc_req(cursor);
5581
0
        break;
5582
0
    case HOMEPLUG_AV_MMTYPE_GENERAL_CC_ASSOC_CNF:
5583
0
        dissect_homeplug_av_cc_assoc_cnf(cursor);
5584
0
        break;
5585
0
    case HOMEPLUG_AV_MMTYPE_GENERAL_CM_UNASSOCIATED_STA_IND:
5586
0
        dissect_homeplug_av_cm_unassociated_sta_ind(cursor);
5587
0
        break;
5588
0
    case HOMEPLUG_AV_MMTYPE_GENERAL_CC_SET_TEI_MAP_IND:
5589
0
        dissect_homeplug_av_cc_set_tei_map_ind(cursor);
5590
0
        break;
5591
        /* HPGP */
5592
0
    case HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_SLAC_PARM_REQ:
5593
0
        dissect_homeplug_av_gp_cm_slac_parm_req(cursor);
5594
0
        break;
5595
0
    case HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_SLAC_PARM_CNF:
5596
0
        dissect_homeplug_av_gp_cm_slac_parm_cnf(cursor);
5597
0
        break;
5598
4
    case HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_ATTEN_PROFILE_IND:
5599
4
        dissect_homeplug_av_gp_cm_atten_profile_ind(cursor);
5600
4
        break;
5601
0
    case HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_ATTEN_CHAR_IND:
5602
0
        dissect_homeplug_av_gp_cm_atten_char_ind(cursor, pinfo);
5603
0
        break;
5604
0
    case HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_ATTEN_CHAR_RSP:
5605
0
        dissect_homeplug_av_gp_cm_atten_char_rsp(cursor);
5606
0
        break;
5607
0
    case HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_START_ATTEN_CHAR_IND:
5608
0
        dissect_homeplug_av_gp_cm_start_atten_char_ind(cursor);
5609
0
        break;
5610
0
    case HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_MNBC_SOUND_IND:
5611
0
        dissect_homeplug_av_gp_cm_mnbc_sound_ind(cursor);
5612
0
        break;
5613
0
    case HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_VALIDATE_REQ:
5614
0
        dissect_homeplug_av_gp_cm_validate_req(cursor);
5615
0
        break;
5616
0
    case HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_VALIDATE_CNF:
5617
0
        dissect_homeplug_av_gp_cm_validate_cnf(cursor);
5618
0
        break;
5619
0
    case HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_SLAC_MATCH_REQ:
5620
0
        dissect_homeplug_av_gp_cm_slac_match_req(cursor);
5621
0
        break;
5622
0
    case HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_SLAC_MATCH_CNF:
5623
0
        dissect_homeplug_av_gp_cm_slac_match_cnf(cursor);
5624
0
        break;
5625
0
    case HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_SLAC_USER_DATA_REQ:
5626
0
    case HOMEPLUG_AV_GP_MMTYPE_GENERAL_CM_SLAC_USER_DATA_CNF:
5627
0
        dissect_homeplug_av_gp_cm_slac_user_data(cursor);
5628
0
        break;
5629
2
    default:
5630
2
        break;
5631
6
    };
5632
3
}
5633
5634
static void
5635
0
dissect_homeplug_av_mme_qualcomm(ptvcursor_t *cursor, uint8_t homeplug_av_mmver, uint16_t homeplug_av_mmtype) {
5636
0
    switch ((homeplug_av_mmetypes_qualcomm_type)homeplug_av_mmtype) {
5637
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_GET_SW_CNF:
5638
0
        dissect_homeplug_av_get_sw_cnf(cursor);
5639
0
        break;
5640
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_WR_MEM_REQ:
5641
0
        dissect_homeplug_av_wr_mem_req(cursor);
5642
0
        break;
5643
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_WR_MEM_CNF:
5644
0
        dissect_homeplug_av_wr_mem_cnf(cursor);
5645
0
        break;
5646
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_RD_MEM_REQ:
5647
0
        dissect_homeplug_av_rd_mem_req(cursor);
5648
0
        break;
5649
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_RD_MEM_CNF:
5650
0
        dissect_homeplug_av_rd_mem_cnf(cursor);
5651
0
        break;
5652
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_ST_MAC_REQ:
5653
0
        dissect_homeplug_av_st_mac_req(cursor);
5654
0
        break;
5655
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_ST_MAC_CNF:
5656
0
        dissect_homeplug_av_st_mac_cnf(cursor);
5657
0
        break;
5658
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_GET_NVM_CNF:
5659
0
        dissect_homeplug_av_get_nvm_cnf(cursor);
5660
0
        break;
5661
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_RS_DEV_CNF:
5662
0
        dissect_homeplug_av_rs_dev_cnf(cursor);
5663
0
        break;
5664
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_WR_MOD_REQ:
5665
0
        dissect_homeplug_av_wr_mod_req(cursor);
5666
0
        break;
5667
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_WR_MOD_CNF:
5668
0
        dissect_homeplug_av_wr_mod_cnf(cursor);
5669
0
        break;
5670
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_WR_MOD_IND:
5671
0
        dissect_homeplug_av_wr_mod_ind(cursor);
5672
0
        break;
5673
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_RD_MOD_REQ:
5674
0
        dissect_homeplug_av_rd_mod_req(cursor);
5675
0
        break;
5676
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_RD_MOD_CNF:
5677
0
        dissect_homeplug_av_rd_mod_cnf(cursor);
5678
0
        break;
5679
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_NVM_MOD_REQ:
5680
0
        dissect_homeplug_av_mod_nvm_req(cursor);
5681
0
        break;
5682
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_NVM_MOD_CNF:
5683
0
        dissect_homeplug_av_mod_nvm_cnf(cursor);
5684
0
        break;
5685
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_WD_RPT_REQ:
5686
0
        dissect_homeplug_av_wd_rpt_req(cursor);
5687
0
        break;
5688
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_WD_RPT_IND:
5689
0
        dissect_homeplug_av_wd_rpt_ind(cursor);
5690
0
        break;
5691
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_LNK_STATS_REQ:
5692
0
        dissect_homeplug_av_lnk_stats_req(cursor);
5693
0
        break;
5694
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_LNK_STATS_CNF:
5695
0
        dissect_homeplug_av_lnk_stats_cnf(cursor);
5696
0
        break;
5697
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_SNIFFER_REQ:
5698
0
        dissect_homeplug_av_sniffer_req(cursor);
5699
0
        break;
5700
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_SNIFFER_CNF:
5701
0
        dissect_homeplug_av_sniffer_cnf(cursor);
5702
0
        break;
5703
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_SNIFFER_IND:
5704
0
        dissect_homeplug_av_sniffer_ind(cursor);
5705
0
        break;
5706
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_NW_INFO_CNF:
5707
0
        dissect_homeplug_av_nw_info_cnf(cursor, homeplug_av_mmver);
5708
0
        break;
5709
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_CP_RPT_REQ:
5710
0
        dissect_homeplug_av_cp_rpt_req(cursor);
5711
0
        break;
5712
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_CP_RPT_IND:
5713
0
        dissect_homeplug_av_cp_rpt_ind(cursor);
5714
0
        break;
5715
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_FR_LBK_REQ:
5716
0
        dissect_homeplug_av_fr_lbk_req(cursor);
5717
0
        break;
5718
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_FR_LBK_CNF:
5719
0
        dissect_homeplug_av_fr_lbk_cnf(cursor);
5720
0
        break;
5721
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_LBK_STAT_CNF:
5722
0
        dissect_homeplug_av_lbk_stat_cnf(cursor);
5723
0
        break;
5724
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_SET_KEY_REQ:
5725
0
        dissect_homeplug_av_set_key_req(cursor);
5726
0
        break;
5727
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_SET_KEY_CNF:
5728
0
        dissect_homeplug_av_set_key_cnf(cursor);
5729
0
        break;
5730
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_MFG_STRING_CNF:
5731
0
        dissect_homeplug_av_mfg_string_cnf(cursor);
5732
0
        break;
5733
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_RD_CBLOCK_CNF:
5734
0
        dissect_homeplug_av_rd_cblock_cnf(cursor);
5735
0
        break;
5736
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_SET_SDRAM_REQ:
5737
0
        dissect_homeplug_av_set_sdram_req(cursor);
5738
0
        break;
5739
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_SET_SDRAM_CNF:
5740
0
        dissect_homeplug_av_set_sdram_cnf(cursor);
5741
0
        break;
5742
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_HOST_ACTION_IND:
5743
0
        dissect_homeplug_av_host_action_ind(cursor);
5744
0
        break;
5745
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_HOST_ACTION_RSP:
5746
0
        dissect_homeplug_av_host_action_rsp(cursor);
5747
0
        break;
5748
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_OP_ATTR_REQ:
5749
0
        dissect_homeplug_av_op_attr_req(cursor);
5750
0
        break;
5751
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_OP_ATTR_CNF:
5752
0
        dissect_homeplug_av_op_attr_cnf(cursor);
5753
0
        break;
5754
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_GET_ENET_PHY_REQ:
5755
0
        dissect_homeplug_av_get_enet_phy_req(cursor);
5756
0
        break;
5757
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_GET_ENET_PHY_CNF:
5758
0
        dissect_homeplug_av_get_enet_phy_cnf(cursor);
5759
0
        break;
5760
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_TONE_MAP_RX_REQ:
5761
0
        dissect_homeplug_av_tone_map_rx_req(cursor, homeplug_av_mmver);
5762
0
        break;
5763
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_TONE_MAP_RX_CNF:
5764
0
        dissect_homeplug_av_tone_map_rx_cnf(cursor, homeplug_av_mmver);
5765
0
        break;
5766
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_TONE_MAP_TX_REQ:
5767
0
        dissect_homeplug_av_tone_map_tx_req(cursor, homeplug_av_mmver);
5768
0
        break;
5769
0
    case HOMEPLUG_AV_MMTYPE_QUALCOMM_TONE_MAP_TX_CNF:
5770
0
        dissect_homeplug_av_tone_map_tx_cnf(cursor, homeplug_av_mmver);
5771
0
        break;
5772
0
    default:
5773
0
        break;
5774
0
    }
5775
0
}
5776
5777
static void
5778
dissect_homeplug_av_mme_st_iotecha(ptvcursor_t *cursor,
5779
                                   uint8_t homeplug_av_mmver,
5780
                                   uint16_t homeplug_av_mmtype,
5781
0
                                   packet_info *pinfo) {
5782
0
    (void)homeplug_av_mmver;
5783
    /* Parse head of the message */
5784
0
    dissect_homeplug_av_st_iotecha_header(cursor);
5785
    /* Parse the rest */
5786
0
    switch ((homeplug_av_mmetypes_st_iotecha_type)homeplug_av_mmtype) {
5787
0
    case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_AUTH_SET_NMK_REQ:
5788
0
        dissect_homeplug_av_st_iotecha_stp_auth_set_nmk_req(cursor);
5789
0
        break;
5790
0
    case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_TEST_CHAN_ATTEN_START_RX_REQ:
5791
0
        dissect_homeplug_av_st_iotecha_stp_test_chan_atten_start_rx_req(cursor);
5792
0
        break;
5793
0
    case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_TEST_CHAN_ATTEN_START_TX_REQ:
5794
0
        dissect_homeplug_av_st_iotecha_stp_test_chan_atten_start_tx_req(cursor);
5795
0
        break;
5796
0
    case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_TEST_CHAN_ATTEN_START_RX_CNF:
5797
0
        dissect_homeplug_av_st_iotecha_stp_test_chan_atten_start_rx_cnf(cursor);
5798
0
        break;
5799
0
    case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_TEST_CHAN_ATTEN_START_TX_CNF:
5800
0
        dissect_homeplug_av_st_iotecha_stp_test_chan_atten_start_tx_cnf(cursor);
5801
0
        break;
5802
0
    case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_TEST_CHAN_ATTEN_DATA_IND:
5803
0
        dissect_homeplug_av_st_iotecha_stp_test_chan_atten_data_ind(cursor);
5804
0
        break;
5805
0
    case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_AUTH_SET_NMK_CNF:
5806
        /* NOT SURE */
5807
0
    case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_UPDATE_FINISH_CNF:
5808
        /* General message with status byte */
5809
0
        dissect_homeplug_av_st_iotecha_status_standard(cursor);
5810
0
        break;
5811
0
    case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_LINK_STATUS_IND:
5812
0
    case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_LINK_STATUS_CNF:
5813
0
        dissect_homeplug_av_st_iotecha_linkstatus(cursor);
5814
0
        break;
5815
0
    case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_DISCOVER_CNF:
5816
0
    case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_DISCOVER_LOCAL_CNF:
5817
0
        dissect_homeplug_av_st_iotecha_discover(cursor);
5818
0
        break;
5819
0
    case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_SET_MAXGAIN_REQ:
5820
0
        dissect_homeplug_av_st_iotecha_stp_set_maxgain_req(cursor);
5821
0
        break;
5822
0
    case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_SET_MAXGAIN_CNF:
5823
0
        dissect_homeplug_av_st_iotecha_stp_set_maxgain_cnf(cursor);
5824
0
        break;
5825
0
    case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_GET_TEI_LIST_CNF:
5826
0
        dissect_homeplug_av_st_iotecha_stp_get_tei_list_cnf(cursor);
5827
0
        break;
5828
0
    case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_GET_TEI_SNAPSHOT_REQ:
5829
0
        dissect_homeplug_av_st_iotecha_stp_get_tei_snapshot_req(cursor);
5830
0
        break;
5831
0
    case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_GET_TEI_SNAPSHOT_CNF:
5832
0
        dissect_homeplug_av_st_iotecha_stp_get_tei_snapshot_cnf(cursor);
5833
0
        break;
5834
0
    case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_GET_BSS_LIST_CNF:
5835
0
        dissect_homeplug_av_st_iotecha_stp_get_bss_list_cnf(cursor);
5836
0
        break;
5837
0
    case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_CHANQUAL_REPORT_REQ:
5838
0
        dissect_homeplug_av_st_iotecha_stp_get_chanqual_report_req(cursor);
5839
0
        break;
5840
0
    case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_CHANQUAL_REPORT_CNF:
5841
0
        dissect_homeplug_av_st_iotecha_stp_get_chanqual_report_cnf(cursor);
5842
0
        break;
5843
0
    case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_CHANQUAL_REPORT_IND:
5844
0
        dissect_homeplug_av_st_iotecha_stp_get_chanqual_report_ind(cursor);
5845
0
        break;
5846
0
    case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_UPDATE_STAGE_REQ:
5847
0
        dissect_homeplug_av_st_iotecha_stp_mfct_update_stage_req(cursor);
5848
0
        break;
5849
0
    case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_UPDATE_STAGE_CNF:
5850
0
        dissect_homeplug_av_st_iotecha_stp_mfct_update_stage_cnf(cursor);
5851
0
        break;
5852
0
    case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_UPDATE_FINISH_REQ:
5853
0
        dissect_homeplug_av_st_iotecha_stp_mfct_update_finish_req(cursor);
5854
0
        break;
5855
0
    case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_GET_ITEM_REQ:
5856
0
        dissect_homeplug_av_st_iotecha_stp_mfct_get_item_req(cursor);
5857
0
        break;
5858
0
    case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_GET_ITEM_CNF:
5859
0
        dissect_homeplug_av_st_iotecha_stp_mfct_get_item_cnf(cursor);
5860
0
        break;
5861
0
    case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_GET_KEYLIST_CNF:
5862
0
        dissect_homeplug_av_st_iotecha_stp_mfct_get_keylist_cnf(cursor);
5863
0
        break;
5864
0
    case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_FUP_REQ:
5865
0
        dissect_homeplug_av_st_iotecha_stp_fup_req(cursor);
5866
0
        break;
5867
0
    case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_CPSTATE_IND:
5868
0
        dissect_homeplug_av_st_iotecha_stp_cpstate_ind(cursor, pinfo);
5869
0
        break;
5870
0
    case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_USER_MESSAGE_IND:
5871
0
        dissect_homeplug_av_st_iotecha_stp_user_message_ind(cursor, pinfo);
5872
0
        break;
5873
0
    case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_GET_BSS_LIST_REQ:
5874
0
    case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_GET_TEI_LIST_REQ:
5875
0
    case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_LINK_STATUS_REQ:
5876
0
    case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_DISCOVER_LOCAL_REQ:
5877
0
    case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_DISCOVER_REQ:
5878
0
    case HOMEPLUG_AV_MMTYPE_ST_IOTECHA_STP_MFCT_GET_KEYLIST_REQ:
5879
        /* Requests only with header go here */
5880
0
        break;
5881
0
    default:
5882
0
        break;
5883
0
    }
5884
0
}
5885
5886
static void
5887
dissect_homeplug_av_mme(ptvcursor_t *cursor,
5888
                        uint8_t homeplug_av_mmver,
5889
                        uint16_t homeplug_av_mmtype,
5890
                        uint32_t homeplug_av_oui,
5891
                        packet_info *pinfo)
5892
10
{
5893
10
    if (!homeplug_av_oui) {
5894
6
        dissect_homeplug_av_mme_general(cursor, homeplug_av_mmver, homeplug_av_mmtype, pinfo);
5895
6
    } else   {
5896
4
        switch (homeplug_av_oui) {
5897
0
        case HOMEPLUG_AV_OUI_QCA:
5898
0
            dissect_homeplug_av_mme_qualcomm(cursor, homeplug_av_mmver, homeplug_av_mmtype);
5899
0
            break;
5900
0
        case HOMEPLUG_AV_OUI_ST_IOTECHA:
5901
0
            dissect_homeplug_av_mme_st_iotecha(cursor, homeplug_av_mmver, homeplug_av_mmtype, pinfo);
5902
0
            break;
5903
0
        case HOMEPLUG_AV_OUI_VERTEXCOM:
5904
0
            dissect_homeplug_av_mme_vertexcom(cursor, homeplug_av_mmver, homeplug_av_mmtype, pinfo, ti_vendor);
5905
0
            break;
5906
4
        }
5907
4
    }
5908
10
}
5909
5910
static void
5911
info_column_filler_initial(uint8_t homeplug_av_mmver,
5912
                           uint16_t homeplug_av_mmtype,
5913
                           uint32_t homeplug_av_oui,
5914
10
                           packet_info *pinfo) {
5915
10
    (void)homeplug_av_mmver;
5916
5917
    /* if packet is vendor specific - display vendor OUI */
5918
10
    if (homeplug_av_oui) {
5919
4
        col_append_sep_str(pinfo->cinfo, COL_INFO, ", ",
5920
4
                           val_to_str(pinfo->pool, homeplug_av_oui, homeplug_av_vendors_oui_vals, "OUI:0x%x"));
5921
4
    }
5922
5923
    /* Info depends on type and oui */
5924
10
    switch (homeplug_av_oui)
5925
10
    {
5926
0
    case HOMEPLUG_AV_OUI_ST_IOTECHA:
5927
0
        col_append_sep_str(pinfo->cinfo, COL_INFO, ", ",
5928
0
                           val_to_str_ext(pinfo->pool, homeplug_av_mmtype,
5929
0
                                          &homeplug_av_mmtype_st_iotecha_vals_ext,
5930
0
                                          "Unknown 0x%x"));
5931
0
        break;
5932
0
    case HOMEPLUG_AV_OUI_QCA:
5933
0
        col_append_sep_str(pinfo->cinfo, COL_INFO, ", ",
5934
0
                           val_to_str_ext(pinfo->pool, homeplug_av_mmtype,
5935
0
                                          &homeplug_av_mmtype_qualcomm_vals_ext,
5936
0
                                          "Unknown 0x%x"));
5937
0
        break;
5938
0
    case HOMEPLUG_AV_OUI_VERTEXCOM:
5939
0
        homeplug_av_mmtype_column_vertexcom(pinfo, homeplug_av_mmtype);
5940
0
        break;
5941
6
    case HOMEPLUG_AV_OUI_NONE:
5942
        /* if oui is unknown, trying to describe as general MME */
5943
6
        col_append_sep_str(pinfo->cinfo, COL_INFO, ", ",
5944
6
                           val_to_str_ext(pinfo->pool, homeplug_av_mmtype,
5945
6
                                          &homeplug_av_mmtype_general_vals_ext,
5946
6
                                          "Unknown 0x%x"));
5947
6
        break;
5948
5949
4
    default:
5950
4
        break;
5951
10
    }
5952
10
}
5953
5954
static int
5955
dissect_homeplug_av(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
5956
13
{
5957
13
    proto_item  *ti;
5958
13
    proto_tree  *homeplug_av_tree;
5959
13
    ptvcursor_t *cursor;
5960
13
    uint8_t      homeplug_av_mmver;
5961
13
    uint16_t     homeplug_av_mmtype;
5962
13
    uint32_t     homeplug_av_oui;
5963
5964
13
    homeplug_av_oui = 0;
5965
13
    ti_vendor = 0;
5966
5967
13
    col_set_str(pinfo->cinfo, COL_PROTOCOL, "HomePlug AV");
5968
13
    col_clear(pinfo->cinfo, COL_INFO);
5969
5970
13
    ti = proto_tree_add_item(tree, proto_homeplug_av, tvb, 0, -1, ENC_NA);
5971
13
    homeplug_av_tree = proto_item_add_subtree(ti, ett_homeplug_av);
5972
5973
13
    cursor = ptvcursor_new(pinfo->pool, homeplug_av_tree, tvb, 0);
5974
5975
    /* Check if we have enough data to process the header */
5976
13
    if (check_tvb_length(cursor, HOMEPLUG_AV_MMHDR_LEN) != TVB_LEN_SHORTEST) {
5977
5978
11
        dissect_homeplug_av_mmhdr(cursor, &homeplug_av_mmver, &homeplug_av_mmtype, &homeplug_av_oui);
5979
5980
11
        info_column_filler_initial(homeplug_av_mmver, homeplug_av_mmtype, homeplug_av_oui, pinfo);
5981
5982
11
        dissect_homeplug_av_mme(cursor, homeplug_av_mmver, homeplug_av_mmtype, homeplug_av_oui, pinfo);
5983
5984
11
    }
5985
5986
13
    ti_vendor = 0;
5987
13
    ptvcursor_free(cursor);
5988
13
    return tvb_captured_length(tvb);
5989
13
}
5990
5991
void
5992
proto_register_homeplug_av(void)
5993
15
{
5994
15
    static hf_register_info hf[] = {
5995
15
        { &hf_homeplug_av_reserved,
5996
15
          { "Reserved", "homeplug_av.reserved",
5997
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
5998
15
        },
5999
        /* MM Header */
6000
15
        { &hf_homeplug_av_mmhdr,
6001
15
          { "MAC Management Header", "homeplug_av.mmhdr",
6002
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6003
15
        },
6004
15
        { &hf_homeplug_av_mmhdr_mmver,
6005
15
          { "Version", "homeplug_av.mmhdr.mmver",
6006
15
            FT_UINT8, BASE_DEC, VALS(homeplug_av_mmver_vals), HOMEPLUG_AV_MMVER_MASK, NULL, HFILL }
6007
15
        },
6008
15
        { &hf_homeplug_av_mmhdr_mmtype_general,
6009
15
          { "Type", "homeplug_av.mmhdr.mmtype",
6010
15
            FT_UINT16, BASE_HEX | BASE_EXT_STRING, &homeplug_av_mmtype_general_vals_ext, 0x0, NULL, HFILL }
6011
15
        },
6012
15
        { &hf_homeplug_av_mmhdr_mmtype_qualcomm,
6013
15
          { "Type", "homeplug_av.mmhdr.mmtype.qualcomm",
6014
15
            FT_UINT16, BASE_HEX | BASE_EXT_STRING, &homeplug_av_mmtype_qualcomm_vals_ext, 0x0, NULL, HFILL }
6015
15
        },
6016
15
        { &hf_homeplug_av_mmhdr_mmtype_st,
6017
15
          { "Type", "homeplug_av.mmhdr.mmtype.st",
6018
15
            FT_UINT16, BASE_HEX | BASE_EXT_STRING, &homeplug_av_mmtype_st_iotecha_vals_ext, 0x0, NULL, HFILL }
6019
15
        },
6020
15
        { &hf_homeplug_av_mmhdr_mmtype_lsb,
6021
15
          { "LSB", "homeplug_av.mmhdr.mmtype.lsb",
6022
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_mmtype_lsb_vals), HOMEPLUG_AV_MMTYPE_LSB_MASK, NULL, HFILL }
6023
15
        },
6024
15
        { &hf_homeplug_av_mmhdr_mmtype_msb,
6025
15
          { "MSB", "homeplug_av.mmhdr.mmtype.msb",
6026
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_mmtype_msb_vals), HOMEPLUG_AV_MMTYPE_MSB_MASK, "Reserved", HFILL },
6027
15
        },
6028
15
        { &hf_homeplug_av_mmhdr_fmi,
6029
15
          { "Fragmentation Info", "homeplug_av.mmhdr.fmi",
6030
15
            FT_UINT16, BASE_HEX, NULL, 0x0, "Reserved", HFILL },
6031
15
        },
6032
        /* Public MME */
6033
15
        { &hf_homeplug_av_public,
6034
15
          { "Public MME", "homeplug_av.public",
6035
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6036
15
        },
6037
15
        { &hf_homeplug_av_public_frag_count,
6038
15
          { "Fragment count", "homeplug_av.public.frag_count",
6039
15
            FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_PUBLIC_FRAG_COUNT_MASK, NULL, HFILL }
6040
15
        },
6041
15
        { &hf_homeplug_av_public_frag_index,
6042
15
          { "Fragment index", "homeplug_av.public.frag_index",
6043
15
            FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_PUBLIC_FRAG_INDEX_MASK, NULL, HFILL }
6044
15
        },
6045
15
        { &hf_homeplug_av_public_frag_seqnum,
6046
15
          { "Fragment Sequence number", "homeplug_av.public.frag_seqnum",
6047
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
6048
15
        },
6049
        /* Frame control fields */
6050
15
        { &hf_homeplug_av_fc,
6051
15
          { "Frame Control", "homeplug_av.fc",
6052
15
            FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
6053
15
        },
6054
15
        { &hf_homeplug_av_fc_del_type,
6055
15
          { "Delimiter type", "homeplug_av.fc.del_type",
6056
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_fc_del_type_vals), HOMEPLUG_AV_DEL_TYPE_MASK, NULL, HFILL }
6057
15
        },
6058
15
        { &hf_homeplug_av_fc_access,
6059
15
          { "Access network", "homeplug_av.fc.access",
6060
15
            FT_UINT8, BASE_HEX, VALS(homeplug_nw_info_access_vals), HOMEPLUG_AV_NW_INFO_ACCESS_MASK, NULL, HFILL }
6061
15
        },
6062
15
        { &hf_homeplug_av_fc_snid,
6063
15
          { "Short network ID", "homeplug_av.fc.snid",
6064
15
            FT_UINT8, BASE_HEX, NULL, HOMEPLUG_AV_SNID_MASK, NULL, HFILL }
6065
15
        },
6066
15
        { &hf_homeplug_av_fc_fccs_av,
6067
15
          { "Frame control check sequence", "homeplug_av.fc.fccs_av",
6068
15
            FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }
6069
15
        },
6070
        /* Common MPDU variant fields */
6071
15
        { &hf_homeplug_av_dtei,
6072
15
          { "Destination Terminal Equipment Identifier", "homeplug_av.dtei",
6073
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
6074
15
        },
6075
15
        { &hf_homeplug_av_stei,
6076
15
          { "Source Terminal Equipment Identifier", "homeplug_av.stei",
6077
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
6078
15
        },
6079
15
        { &hf_homeplug_av_lid,
6080
15
          { "Link ID", "homeplug_av.lid",
6081
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
6082
15
        },
6083
15
        { &hf_homeplug_av_cfs,
6084
15
          { "Contention free session", "homeplug_av.cfs",
6085
15
            FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_CFS_MASK, NULL, HFILL }
6086
15
        },
6087
15
        { &hf_homeplug_av_bdf,
6088
15
          { "Beacon detect flag", "homeplug_av.bdf",
6089
15
            FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_BDF_MASK, NULL, HFILL }
6090
15
        },
6091
15
        { &hf_homeplug_av_hp10df,
6092
15
          { "Homeplug AV version 1.0", "homeplug_av.hp10df",
6093
15
            FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_HP10DF_MASK, NULL, HFILL }
6094
15
        },
6095
15
        { &hf_homeplug_av_hp11df,
6096
15
          { "Homeplug AV version 1.1", "homeplug_av.hp11df",
6097
15
            FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_HP11DF_MASK, NULL, HFILL }
6098
15
        },
6099
15
        { &hf_homeplug_av_svn,
6100
15
          { "Sack version number", "homeplug_av.svn",
6101
15
            FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_SVN_MASK, NULL, HFILL }
6102
15
        },
6103
15
        { &hf_homeplug_av_rrtf,
6104
15
          { "Request reverse transmission flag", "homeplug_av.rrtf",
6105
15
            FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_RRTF_MASK, NULL, HFILL }
6106
15
        },
6107
15
        { &hf_homeplug_av_fl_av,
6108
15
          { "Frame length", "homeplug_av.fl_av",
6109
15
            FT_UINT16, BASE_DEC, NULL, HOMEPLUG_AV_FL_AV_MASK, NULL, HFILL }
6110
15
        },
6111
15
        { &hf_homeplug_av_ppb,
6112
15
          { "Pending PHY blocks", "homeplug_av.ppb",
6113
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
6114
15
        },
6115
15
        { &hf_homeplug_av_mfs_rsp_data,
6116
15
          { "Data MAC Frame Stream Response", "homeplug_av.sack.mfs_rsp_data",
6117
15
            FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_RSP_DATA_MASK << 4, NULL, HFILL }
6118
15
        },
6119
15
        { &hf_homeplug_av_mfs_rsp_mgmt,
6120
15
          { "Management MAC Frame Stream Response", "homeplug_av.sack.mfs_rsp_mgmt",
6121
15
            FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_RSP_MGMT_MASK << 4, NULL, HFILL }
6122
15
        },
6123
        /* Frame Control */
6124
15
        { &hf_homeplug_av_sof,
6125
15
          { "Start of Frame Variant Fields", "homeplug_av.sof",
6126
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6127
15
        },
6128
15
        { &hf_homeplug_av_sof_peks,
6129
15
          { "Payload Encryption Key Select", "homeplug_av.sof.peks",
6130
15
            FT_UINT8, BASE_HEX | BASE_EXT_STRING, &homeplug_av_peks_vals_ext, HOMEPLUG_AV_SOF_PEKS_MASK, NULL, HFILL }
6131
15
        },
6132
15
        { &hf_homeplug_av_sof_ble,
6133
15
          { "Bit loading estimate", "homeplug_av.sof.ble",
6134
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
6135
15
        },
6136
15
        { &hf_homeplug_av_sof_pbsz,
6137
15
          { "PHY block size", "homeplug_av.sof.pbsz",
6138
15
            FT_BOOLEAN, 8, TFS(&homeplug_av_phy_block_size_vals), HOMEPLUG_AV_PBSZ_MASK, NULL, HFILL }
6139
15
        },
6140
15
        { &hf_homeplug_av_sof_num_sym,
6141
15
          { "Number of symbols", "homeplug_av.sof.num_sym",
6142
15
            FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_NUM_SYM_MASK, NULL, HFILL }
6143
15
        },
6144
15
        { &hf_homeplug_av_sof_tmi_av,
6145
15
          { "Tonemap index", "homeplug_av.sof.tmi_av",
6146
15
            FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_TMI_AV_MASK, NULL, HFILL }
6147
15
        },
6148
15
        { &hf_homeplug_av_sof_mpdu_cnt,
6149
15
          { "MPDU count", "homeplug_av.sof.mpdu_cnt",
6150
15
            FT_UINT16, BASE_DEC, NULL, HOMEPLUG_AV_SOF_MPDU_CNT_MASK, NULL, HFILL }
6151
15
        },
6152
15
        { &hf_homeplug_av_sof_burst_cnt,
6153
15
          { "Burst count", "homeplug_av.sof.burst_cnt",
6154
15
            FT_UINT16, BASE_DEC, NULL, HOMEPLUG_AV_BURST_CNT_MASK, NULL, HFILL }
6155
15
        },
6156
15
        { &hf_homeplug_av_sof_bbf,
6157
15
          { "Bidirectional Burst", "homeplug_av.sof.bbf",
6158
15
            FT_BOOLEAN, 8, TFS(&homeplug_av_bbf_vals), HOMEPLUG_AV_BBF_MASK, NULL, HFILL }
6159
15
        },
6160
15
        { &hf_homeplug_av_sof_mrtfl,
6161
15
          { "Max Reverse Transmission Frame Length", "homeplug_av.sof.mrtfl",
6162
15
            FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_MRTLF_MASK, NULL, HFILL }
6163
15
        },
6164
15
        { &hf_homeplug_av_sof_dccpcf,
6165
15
          { "Different CP PHY clock", "homeplug_av.sof.dccpcf",
6166
15
            FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_DCCPCF_MASK, NULL, HFILL }
6167
15
        },
6168
15
        { &hf_homeplug_av_sof_mcf,
6169
15
          { "Multicast", "homeplug_av.sof.mcf",
6170
15
            FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_MCF_MASK, NULL, HFILL }
6171
15
        },
6172
15
        { &hf_homeplug_av_sof_mnbf,
6173
15
          { "Multinetwork broadcast", "homeplug_av.sof.mnbf",
6174
15
            FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_MNBF_MASK, NULL, HFILL }
6175
15
        },
6176
15
        { &hf_homeplug_av_sof_rsr,
6177
15
          { "Request SACK retransmission", "homeplug_av.sof.rsr",
6178
15
            FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_RSR_MASK, NULL, HFILL }
6179
15
        },
6180
15
        { &hf_homeplug_av_sof_clst,
6181
15
          { "Convergence layer SAP type", "homeplug_av.sof.clst",
6182
15
            FT_BOOLEAN, 8, TFS(&homeplug_av_clst_vals), HOMEPLUG_AV_CLST_MASK, NULL, HFILL }
6183
15
        },
6184
15
        { &hf_homeplug_av_sof_mfs_cmd_mgmt,
6185
15
          { "Management MAC Frame Stream Command", "homeplug_av.sof.mfs_cmd_mgmt",
6186
15
            FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_MFS_MGMT_MASK, NULL, HFILL }
6187
15
        },
6188
15
        { &hf_homeplug_av_sof_mfs_cmd_data,
6189
15
          { "Data MAC Frame Stream Command", "homeplug_av.sof.mfs_data_mgmt",
6190
15
            FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_MFS_DATA_MASK, NULL, HFILL }
6191
15
        },
6192
15
        { &hf_homeplug_av_sof_mfs_rsp_mgmt,
6193
15
          { "Management MAC Frame Stream Response", "homeplug_av.sof.mfs_rsp_mgmt",
6194
15
            FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_SOF_RSP_MGMT_MASK, NULL, HFILL }
6195
15
        },
6196
15
        { &hf_homeplug_av_sof_mfs_rsp_data,
6197
15
          { "Data MAC Frame Stream Response", "homeplug_av.sof.mfs_rsp_data",
6198
15
            FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_SOF_RSP_DATA_MASK, NULL, HFILL }
6199
15
        },
6200
15
        { &hf_homeplug_av_sof_bm_sack,
6201
15
          { "Bit Map SACK", "homeplug_av.sof.bm_sack",
6202
15
            FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_BM_SACK_MASK, NULL, HFILL }
6203
15
        },
6204
        /* Selective Acknowledgement */
6205
15
        { &hf_homeplug_av_sack,
6206
15
          { "Selective Acknowledgment Variant Fields", "homeplug_av.sack",
6207
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL}
6208
15
        },
6209
        /* Request to Send/Clear to Send */
6210
15
        { &hf_homeplug_av_rtscts,
6211
15
          { "Request to Send/Clear to Send Variant Fields", "homeplug_av.rtscts",
6212
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6213
15
        },
6214
15
        { &hf_homeplug_av_rtscts_rtsf,
6215
15
          { "RTS Flag", "homeplug_av.rtscts.rtsf",
6216
15
            FT_BOOLEAN, 8, TFS(&homeplug_av_rtsf_vals), HOMEPLUG_AV_RTSF_MASK, NULL, HFILL }
6217
15
        },
6218
15
        { &hf_homeplug_av_rtscts_igf,
6219
15
          { "Immediate Grant Flag", "homeplug_av.rtscts.igf",
6220
15
            FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_IGF_MASK, NULL, HFILL }
6221
15
        },
6222
15
        { &hf_homeplug_av_rtscts_mnbf,
6223
15
          { "Multinetwork Broadcast Flag", "homeplug_av.rtscts.mnbf",
6224
15
            FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_RTSCTS_MNBF_MASK, NULL, HFILL }
6225
15
        },
6226
15
        { &hf_homeplug_av_rtscts_mcf,
6227
15
          { "Multicast Flag", "homeplug_av.rtscts.mcf",
6228
15
            FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_RTSCTS_MCF_MASK, NULL, HFILL }
6229
15
        },
6230
15
        { &hf_homeplug_av_rtscts_dur,
6231
15
          { "Duration", "homeplug_av.rtscts.dur",
6232
15
            FT_UINT16, BASE_DEC, NULL, HOMEPLUG_AV_DUR_MASK, NULL, HFILL }
6233
15
        },
6234
        /* Sound */
6235
15
        { &hf_homeplug_av_sound,
6236
15
          { "Sound Variant Fields", "homeplug_av.sound",
6237
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6238
15
        },
6239
15
        { &hf_homeplug_av_sound_pbsz,
6240
15
          { "PHY Block Size", "homeplug_av.sound.pbsz",
6241
15
            FT_BOOLEAN, 8, TFS(&homeplug_av_phy_block_size_vals), HOMEPLUG_AV_SOUND_PBSZ_MASK, NULL, HFILL }
6242
15
        },
6243
15
        { &hf_homeplug_av_sound_bdf,
6244
15
          { "Beacon Detect Flag", "homeplug_av.sound.bdf",
6245
15
            FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_SOUND_BDF_MASK, NULL, HFILL }
6246
15
        },
6247
15
        { &hf_homeplug_av_sound_saf,
6248
15
          { "Sound ACK Flag", "homeplug_av.sound.saf",
6249
15
            FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_SAF_MASK, NULL, HFILL }
6250
15
        },
6251
15
        { &hf_homeplug_av_sound_scf,
6252
15
          { "Sound Complete Flag", "homeplug_av.sound.scf",
6253
15
            FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_SCF_MASK, NULL, HFILL }
6254
15
        },
6255
15
        { &hf_homeplug_av_sound_req_tm,
6256
15
          { "Max Tone Maps Requested", "homeplug_av.sound.req_tm",
6257
15
            FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_REQ_TM_MASK, NULL, HFILL }
6258
15
        },
6259
15
        { &hf_homeplug_av_sound_mpdu_cnt,
6260
15
          { "MPDU Count", "homeplug_av.sound.mpdu_cnt",
6261
15
            FT_UINT16, BASE_DEC, NULL, HOMEPLUG_AV_SOUND_MPDU_CNT_MASK, NULL, HFILL }
6262
15
        },
6263
15
        { &hf_homeplug_av_sound_src,
6264
15
          { "Sound Reason Code", "homeplug_av.sound.src",
6265
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
6266
15
        },
6267
15
        { &hf_homeplug_av_sound_add_req_tm,
6268
15
          { "Additional Tone Maps Requested", "homeplug_av.sound.add_req_tm",
6269
15
            FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_ADD_REQ_TM_MASK, NULL, HFILL }
6270
15
        },
6271
15
        { &hf_homeplug_av_sound_max_pb_sym,
6272
15
          { "Max PBs per Symbol", "homeplug_av.sound.max_pb_sym",
6273
15
            FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_MAX_PB_SYM_MASK, NULL, HFILL }
6274
15
        },
6275
15
        { &hf_homeplug_av_sound_ecsf,
6276
15
          { "Extended Carriers Support Flag", "homeplug_av.sound.ecsf",
6277
15
            FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_ECSF_MASK, NULL, HFILL }
6278
15
        },
6279
15
        { &hf_homeplug_av_sound_ecuf,
6280
15
          { "Extended Carriers Used Flag", "homeplug_av.sound.hf_homeplug_av_sound_ecuf",
6281
15
            FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_ECUF_MASK, NULL, HFILL }
6282
15
        },
6283
15
        { &hf_homeplug_av_sound_ems,
6284
15
          { "Extended Modulation Support", "homeplug_av.sound.ems",
6285
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_ems_vals), HOMEPLUG_AV_EMS_MASK, NULL, HFILL }
6286
15
        },
6287
15
        { &hf_homeplug_av_sound_esgisf,
6288
15
          { "Extended Smaller Guard Interval Support Flag", "homeplug_av.sound.esgisf",
6289
15
            FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_ESGISF_MASK, NULL, HFILL }
6290
15
        },
6291
15
        { &hf_homeplug_av_sound_elgisf,
6292
15
          { "Extended Larger Guard Interval Support Flag", "homeplug_av.sound.elgisf",
6293
15
            FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_ELGISF_MASK, NULL, HFILL }
6294
15
        },
6295
15
        { &hf_homeplug_av_sound_efrs,
6296
15
          { "Extended FEC Rate Support", "homeplug_av.sound.efrs",
6297
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_efrs_vals), HOMEPLUG_AV_EFRS_MASK, NULL, HFILL }
6298
15
        },
6299
        /* Reverse Start of Frame */
6300
15
        { &hf_homeplug_av_rsof,
6301
15
          { "Reverse Start of Frame Variant Fields", "homeplug_av.rsof",
6302
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6303
15
        },
6304
15
        { &hf_homeplug_av_rsof_fl,
6305
15
          { "Reverse SOF Frame Length", "homeplug_av.rsof.fl",
6306
15
            FT_UINT16, BASE_DEC, NULL, HOMEPLUG_AV_RSOF_FL_MASK, NULL, HFILL }
6307
15
        },
6308
15
        { &hf_homeplug_av_rsof_tmi,
6309
15
          { "Tone Map Index", "homeplug_av.rsof.tmi",
6310
15
            FT_UINT16, BASE_DEC, NULL, HOMEPLUG_AV_RSOF_TMI_MASK, NULL, HFILL }
6311
15
        },
6312
15
        { &hf_homeplug_av_rsof_pbsz,
6313
15
          { "PHY Block Size", "homeplug_av.rsof.pbsz",
6314
15
            FT_BOOLEAN, 16, TFS(&homeplug_av_phy_block_size_vals), HOMEPLUG_AV_RSOF_PBSZ_MASK, NULL, HFILL }
6315
15
        },
6316
15
        { &hf_homeplug_av_rsof_num_sym,
6317
15
          { "Number of Symbols", "homeplug_av.rsof.num_sym",
6318
15
            FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_RSOF_NUM_SYM_MASK, NULL, HFILL }
6319
15
        },
6320
15
        { &hf_homeplug_av_rsof_mfs_cmd_mgmt,
6321
15
          { "Management MAC Frame Stream Command", "homeplug_av.rsof.mfs_cmd_mgmt",
6322
15
            FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_MFS_MGMT_MASK, NULL, HFILL }
6323
15
        },
6324
15
        { &hf_homeplug_av_rsof_mfs_cmd_data,
6325
15
          { "Data MAC Frame Stream Command", "homeplug_av.rsof.mfs_cmd_data",
6326
15
            FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_MFS_DATA_MASK, NULL, HFILL }
6327
15
        },
6328
        /* Beacon body */
6329
15
        { &hf_homeplug_av_bcn,
6330
15
          { "Beacon Variant Fields", "homeplug_av.bcn",
6331
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6332
15
        },
6333
15
        { &hf_homeplug_av_bcn_bts,
6334
15
          { "Beacon timestamp", "homeplug_av.bcn.bts",
6335
15
            FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
6336
15
        },
6337
15
        { &hf_homeplug_av_bcn_bto_0,
6338
15
          { "Beacon transmission offset 0", "homeplug_av.bcn.bto_0",
6339
15
            FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
6340
15
        },
6341
15
        { &hf_homeplug_av_bcn_bto_1,
6342
15
          { "Beacon transmission offset 1", "homeplug_av.bcn.bto_1",
6343
15
            FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
6344
15
        },
6345
15
        { &hf_homeplug_av_bcn_bto_2,
6346
15
          { "Beacon transmission offset 2", "homeplug_av.bcn.bto_2",
6347
15
            FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
6348
15
        },
6349
15
        { &hf_homeplug_av_bcn_bto_3,
6350
15
          { "Beacon transmission offset 3", "homeplug_av.bcn.bto_3",
6351
15
            FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
6352
15
        },
6353
15
        { &hf_homeplug_av_bcn_payload,
6354
15
          { "Beacon MPDU payload", "homeplug_av.bcn.payload",
6355
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6356
15
        },
6357
15
        { &hf_homeplug_av_bcn_nid,
6358
15
          { "Network ID", "homeplug_av.bcn.nid",
6359
15
            FT_UINT56, BASE_HEX, NULL, HOMEPLUG_AV_BCN_NID_MASK, NULL, HFILL }
6360
15
        },
6361
15
        { &hf_homeplug_av_bcn_hm,
6362
15
          { "Hybrid Mode", "homeplug_av.bcn.hm",
6363
15
            FT_UINT56, BASE_HEX | BASE_VAL64_STRING, VALS64(homeplug_av_bcn_hm_vals), HOMEPLUG_AV_HM_MASK, NULL, HFILL }
6364
15
        },
6365
15
        { &hf_homeplug_av_bcn_stei,
6366
15
          { "Source Terminal Equipment ID", "homeplug_av.bcn.stei",
6367
15
            FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
6368
15
        },
6369
15
        { &hf_homeplug_av_bcn_type,
6370
15
          { "Beacon type", "homeplug_av.bcn.type",
6371
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_bcn_type_vals), HOMEPLUG_AV_BCN_TYPE_MASK, NULL, HFILL }
6372
15
        },
6373
15
        { &hf_homeplug_av_bcn_ncnr,
6374
15
          { "Non-coordinating networks reported", "homeplug_av.bcn.ncnr",
6375
15
            FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_NCNR_MASK, NULL, HFILL }
6376
15
        },
6377
15
        { &hf_homeplug_av_bcn_npsm,
6378
15
          { "Network Power Save Mode", "homeplug_av.bcn.npsm",
6379
15
            FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_NPSM_MASK, NULL, HFILL }
6380
15
        },
6381
15
        { &hf_homeplug_av_bcn_num_slots,
6382
15
          { "Number of Beacon Slots", "homeplug_av.bcn.num_slots",
6383
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_bcn_slot_vals), HOMEPLUG_AV_NUM_SLOTS_MASK, NULL, HFILL }
6384
15
        },
6385
15
        { &hf_homeplug_av_bcn_slot_use,
6386
15
          { "Beacon Slot Usage (bitmapped)", "homeplug_av.bcn.slot_usage",
6387
15
            FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
6388
15
        },
6389
15
        { &hf_homeplug_av_bcn_slot_id,
6390
15
          { "Beacon Slot ID", "homeplug_av.bcn.slot_id",
6391
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_bcn_slot_vals), HOMEPLUG_AV_SLOT_ID_MASK, NULL, HFILL }
6392
15
        },
6393
15
        { &hf_homeplug_av_bcn_aclss,
6394
15
          { "AC Line Synchronization Status", "homeplug_av.bcn.aclss",
6395
15
            FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_ACLSS_MASK, NULL, HFILL }
6396
15
        },
6397
15
        { &hf_homeplug_av_bcn_hoip,
6398
15
          { "Hand-Off in progress", "homeplug_av.bcn.hoip",
6399
15
            FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_HOIP_MASK, NULL, HFILL }
6400
15
        },
6401
15
        { &hf_homeplug_av_bcn_rtsbf,
6402
15
          { "RTS Broadcast Flag", "homeplug_av.bcn.rtsbf",
6403
15
            FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_RTSBF_MASK, NULL, HFILL }
6404
15
        },
6405
15
        { &hf_homeplug_av_bcn_nm,
6406
15
          { "Network Mode", "homeplug_av.bcn.nm",
6407
15
            FT_UINT8, BASE_DEC, VALS(homeplug_av_bcn_nm_vals), HOMEPLUG_AV_NM_MASK, NULL, HFILL }
6408
15
        },
6409
15
        { &hf_homeplug_av_bcn_cco_cap,
6410
15
          { "CCo Capabilities", "homeplug_av.bcn.cco_cap",
6411
15
            FT_UINT8, BASE_DEC, VALS(homeplug_av_bcn_cco_cap_vals), HOMEPLUG_AV_CCO_CAP_MASK, NULL, HFILL }
6412
15
        },
6413
15
        { &hf_homeplug_av_bcn_rsf,
6414
15
          { "Reusable SNID?", "homeplug_av.bcn.rsf",
6415
15
            FT_BOOLEAN, 8, NULL, HOMEPLUG_AV_RSF_MASK, NULL, HFILL }
6416
15
        },
6417
15
        { &hf_homeplug_av_bcn_plevel,
6418
15
          { "Proxy level", "homeplug_av.bcn.plevel",
6419
15
            FT_UINT8, BASE_DEC, NULL, HOMEPLUG_AV_PLEVEL_MASK, NULL, HFILL }
6420
15
        },
6421
15
        { &hf_homeplug_av_bcn_bentries,
6422
15
          { "Beacon entries and padding", "homeplug_av.bcn.bentries",
6423
15
            FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }
6424
15
        },
6425
15
        { &hf_homeplug_av_bcn_bpcs,
6426
15
          { "Beacon payload check sequence", "homeplug_av.bcn.bpcs",
6427
15
            FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
6428
15
        },
6429
        /* Central Coordination Discovery List Confirmation */
6430
15
        { &hf_homeplug_av_cc_disc_list_cnf,
6431
15
          { "Central Coordination Discovery List Confirmation", "homeplug_av.cc_disc_list_cnf",
6432
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6433
15
        },
6434
        /* Station informations */
6435
15
        { &hf_homeplug_av_cc_disc_list_sta_cnt,
6436
15
          { "Station count", "homeplug_av.cc_disc_list_cnf.sta_cnt",
6437
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
6438
15
        },
6439
15
        { &hf_homeplug_av_cc_sta_info,
6440
15
          { "Station information", "homeplug_av.cc_disc_list_cnf.sta_info",
6441
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6442
15
        },
6443
15
        { &hf_homeplug_av_cc_sta_info_mac,
6444
15
          { "MAC address", "homeplug_av.cc_disc_list_cnf.sta_info.mac",
6445
15
            FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
6446
15
        },
6447
15
        { &hf_homeplug_av_cc_sta_info_tei,
6448
15
          { "Terminal Equipment Identifier", "homeplug_av.cc_disc_list_cnf.sta_info.tei",
6449
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
6450
15
        },
6451
15
        { &hf_homeplug_av_cc_sta_info_same_net,
6452
15
          { "Network type", "homeplug_av.cc_disc_list_cnf.sta_info.same_net",
6453
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_cc_sta_net_type_vals), HOMEPLUG_AV_CC_STA_NET_MASK, NULL, HFILL }
6454
15
        },
6455
15
        { &hf_homeplug_av_cc_sta_info_sig_level,
6456
15
          { "Signal level", "homeplug_av.cc_disc_list_cnf.sta_info.sig_level",
6457
15
            FT_UINT8, BASE_HEX | BASE_EXT_STRING, &homeplug_av_sig_level_vals_ext, 0x00, "Reserved", HFILL }
6458
15
        },
6459
15
        { &hf_homeplug_av_cc_sta_info_avg_ble,
6460
15
          { "Average BLE", "homeplug_av.cc_disc_list_cnf.sta_info.avg_ble",
6461
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
6462
15
        },
6463
        /* Network infos */
6464
15
        { &hf_homeplug_av_cc_disc_list_net_cnt,
6465
15
          { "Network count", "homeplug_av.cc_disc_list_cnf.net_cnt",
6466
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
6467
15
        },
6468
15
        { &hf_homeplug_av_cc_net_info,
6469
15
          { "Network information", "homeplug_av.cc_disc_list_cnf.net_info",
6470
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6471
15
        },
6472
15
        { &hf_homeplug_av_cc_net_info_hyb_mode,
6473
15
          { "Hybrid mode", "homeplug_av.cc_disc_list_cnf.net_info.hyb_mode",
6474
15
            FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
6475
15
        },
6476
15
        { &hf_homeplug_av_cc_net_info_bcn_slots,
6477
15
          { "Beacon slots", "homeplug_av.cc_disc_list_cnf.net_info.bcn_slots",
6478
15
            FT_UINT8, BASE_DEC, NULL, 0x08, "Reserved", HFILL }
6479
15
        },
6480
15
        { &hf_homeplug_av_cc_net_info_cco_sts,
6481
15
          { "Coordinating status", "homeplug_av.cc_disc_list_cnf.net_info.cco_status",
6482
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_cco_status_vals), HOMEPLUG_AV_CCO_STATUS_MASK, NULL, HFILL }
6483
15
        },
6484
15
        { &hf_homeplug_av_cc_net_info_bcn_ofs,
6485
15
          { "Beacon offset", "homeplug_av.cc_disc_list_cnf.net_info.bcn_ofs",
6486
15
            FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
6487
15
        },
6488
        /* Shared encrypted related fields */
6489
15
        { &hf_homeplug_av_nw_info_peks,
6490
15
          { "Payload Encryption Key Select", "homeplug_av.nw_info.peks",
6491
15
            FT_UINT8, BASE_HEX | BASE_EXT_STRING, &homeplug_av_peks_vals_ext, HOMEPLUG_AV_PEKS_MASK, NULL, HFILL }
6492
15
        },
6493
15
        { &hf_homeplug_av_nw_info_pid,
6494
15
          { "Protocol ID", "homeplug_av.nw_info.pid",
6495
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_pid_vals), HOMEPLUG_AV_PID_MASK, "Reserved", HFILL }
6496
15
        },
6497
15
        { &hf_homeplug_av_nw_info_prn,
6498
15
          { "Protocol run number", "homeplug_av.nw_info.prn",
6499
15
            FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
6500
15
        },
6501
15
        { &hf_homeplug_av_nw_info_pmn,
6502
15
          { "Protocol message number", "homeplug_av.nw_info.pmn",
6503
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
6504
15
        },
6505
15
        { &hf_homeplug_av_nw_info_my_nonce,
6506
15
          { "My nonce", "homeplug_av.nw_info.my_nonce",
6507
15
            FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
6508
15
        },
6509
15
        { &hf_homeplug_av_nw_info_your_nonce,
6510
15
          { "Your nonce", "homeplug_av.nw_info.your_nonce",
6511
15
            FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
6512
15
        },
6513
15
        { &hf_homeplug_av_nw_info_cco_cap,
6514
15
          { "CCo capabilities", "homeplug_av.nw_info.cco_cap",
6515
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_nw_info_role_vals), HOMEPLUG_AV_NW_INFO_ROLE_MASK, NULL, HFILL }
6516
15
        },
6517
15
        { &hf_homeplug_av_nw_info_key_type,
6518
15
          { "Key type", "homeplug_av.nw_info.key_type",
6519
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_key_type_vals), HOMEPLUG_AV_KEY_TYPE_MASK, NULL, HFILL }
6520
15
        },
6521
        /* Encrypted Payload Indicate */
6522
15
        { &hf_homeplug_av_cm_enc_pld_ind,
6523
15
          { "Encrypted Payload Indicate", "homeplug_av.cm_enc_pld_ind",
6524
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6525
15
        },
6526
15
        { &hf_homeplug_av_cm_enc_pld_ind_avlns,
6527
15
          { "AVLN status", "homeplug_av.cm_enc_pld_ind.avlns",
6528
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_avln_status_vals), HOMEPLUG_AV_AVLN_STATUS_MASK, "Reserved", HFILL }
6529
15
        },
6530
15
        { &hf_homeplug_av_cm_enc_pld_ind_iv,
6531
15
          { "Initialization vector", "homeplug_av.cm_enc_pld_ind.iv",
6532
15
            FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }
6533
15
        },
6534
15
        { &hf_homeplug_av_cm_enc_pld_ind_uuid,
6535
15
          { "UUID", "homeplug_av.cm_enc_pld_ind.uuid",
6536
15
            FT_GUID, BASE_NONE, NULL, 0x0, NULL, HFILL }
6537
15
        },
6538
15
        { &hf_homeplug_av_cm_enc_pld_ind_len,
6539
15
          { "Length", "homeplug_av.cm_enc_pld_ind.len",
6540
15
            FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
6541
15
        },
6542
15
        { &hf_homeplug_av_cm_enc_pld_ind_pld,
6543
15
          { "Encrypted payload", "homeplug_av.cm_enc_pld_ind.pld",
6544
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6545
15
        },
6546
        /* Encrypted Payload Response */
6547
15
        { &hf_homeplug_av_cm_enc_pld_rsp,
6548
15
          { "Encrypted Payload Response", "homeplug_av.cm_enc_pld_rsp",
6549
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6550
15
        },
6551
15
        { &hf_homeplug_av_cm_enc_pld_rsp_result,
6552
15
          { "Result", "homeplug_av.cm_enc_pld_rsp.result",
6553
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_generic_status_vals), HOMEPLUG_AV_GEN_STATUS_MASK, NULL, HFILL }
6554
15
        },
6555
        /* Set Key Request */
6556
15
        { &hf_homeplug_av_cm_set_key_req,
6557
15
          { "Set Key Request", "homeplug_av.cm_set_key_req",
6558
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6559
15
        },
6560
15
        { &hf_homeplug_av_cm_set_key_req_nw_key,
6561
15
          { "New Key", "homeplug_av.cm_set_key_req.nw_key",
6562
15
            FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }
6563
15
        },
6564
        /* Set Key Confirmation */
6565
15
        { &hf_homeplug_av_cm_set_key_cnf,
6566
15
          { "Set Key Confirmation", "homeplug_av.cm_set_key_cnf",
6567
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6568
15
        },
6569
15
        { &hf_homeplug_av_cm_set_key_cnf_result,
6570
15
          { "Result", "homeplug_av.cm_set_key_cnf.result",
6571
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_generic_status_vals), HOMEPLUG_AV_GEN_STATUS_MASK, NULL, HFILL }
6572
15
        },
6573
        /* Get Key Request */
6574
15
        { &hf_homeplug_av_cm_get_key_req,
6575
15
          { "Get Key request", "homeplug_av.cm_get_key_req",
6576
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6577
15
        },
6578
15
        { &hf_homeplug_av_cm_get_key_req_type,
6579
15
          { "Request type", "homeplug_av.cm_get_key_req.type",
6580
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_req_type_vals), HOMEPLUG_AV_REQ_TYPE_MASK, "Reserved", HFILL }
6581
15
        },
6582
15
        { &hf_homeplug_av_cm_get_key_req_has_key,
6583
15
          { "Hash key", "homeplug_av.cm_get_key_req.hash_key",
6584
15
            FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }
6585
15
        },
6586
        /* Get Key Confirmation */
6587
15
        { &hf_homeplug_av_cm_get_key_cnf,
6588
15
          { "Get Key Confirmation", "homeplug_av.cm_get_key_cnf",
6589
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6590
15
        },
6591
15
        { &hf_homeplug_av_cm_get_key_cnf_result,
6592
15
          { "Result", "homeplug_av.cm_get_key_cnf.result",
6593
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_key_result_vals), HOMEPLUG_AV_KEY_RESULT_MASK, NULL, HFILL }
6594
15
        },
6595
15
        { &hf_homeplug_av_cm_get_key_cnf_rtype,
6596
15
          { "Requested key type", "homeplug_av.cm_get_key_cnf.rtype",
6597
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_key_type_vals), HOMEPLUG_AV_KEY_TYPE_MASK, NULL, HFILL }
6598
15
        },
6599
15
        { &hf_homeplug_av_cm_get_key_cnf_key,
6600
15
          { "Encryption/Hash key", "homeplug_av.cm_get_key_cnf.key",
6601
15
            FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }
6602
15
        },
6603
        /* Get Bridge Informations Confirmation */
6604
15
        { &hf_homeplug_av_brg_infos_cnf,
6605
15
          { "Get Bridge Informations Confirmation", "homeplug_av.brg_infos_cnf",
6606
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6607
15
        },
6608
15
        { &hf_homeplug_av_brg_infos_cnf_brd,
6609
15
          { "Bridging", "homeplug_av.brg_infos_cnf.brd",
6610
15
            FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL }
6611
15
        },
6612
15
        { &hf_homeplug_av_brg_infos_cnf_btei,
6613
15
          { "Bridge Terminal Equipment Identifier", "homeplug_av.brg_infos_cnf.btei",
6614
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
6615
15
        },
6616
15
        { &hf_homeplug_av_brg_infos_cnf_num_stas,
6617
15
          { "Number of stations", "homeplug_av.brg_infos_cnf.num_stas",
6618
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
6619
15
        },
6620
15
        { &hf_homeplug_av_brg_infos_cnf_mac,
6621
15
          { "Bridged Destination Address", "homeplug_av.brg_infos_cnf.mac",
6622
15
            FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
6623
15
        },
6624
        /* Get Network Informations Confirmation */
6625
15
        { &hf_homeplug_av_cm_nw_infos_cnf,
6626
15
          { "Get Network Informations Confirmation", "homeplug_av.nw_infos_cnf",
6627
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6628
15
        },
6629
        /* Get Network Statistics Confirmation */
6630
15
        { &hf_homeplug_av_nw_stats_cnf,
6631
15
          { "Get Network Statistics Confirmation", "homeplug_av.nw_stats_cnf",
6632
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6633
15
        },
6634
        /* Vendor Specific */
6635
15
        { &hf_homeplug_av_vendor,
6636
15
          { "Vendor MME", "homeplug_av.vendor",
6637
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6638
15
        },
6639
15
        { &hf_homeplug_av_vendor_oui,
6640
15
          { "OUI", "homeplug_av.vendor.oui",
6641
15
            FT_UINT24, BASE_HEX, VALS(homeplug_av_vendors_oui_vals), 0x0, NULL, HFILL }
6642
15
        },
6643
        /* Get Device/SW Version */
6644
15
        { &hf_homeplug_av_get_sw_cnf,
6645
15
          { "Get Device/SW Version", "homeplug_av.get_sw_cnf",
6646
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6647
15
        },
6648
15
        { &hf_homeplug_av_get_sw_cnf_status,
6649
15
          { "Status", "homeplug_av.get_sw_cnf.status",
6650
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
6651
15
        },
6652
15
        { &hf_homeplug_av_get_sw_cnf_dev_id,
6653
15
          { "Device ID", "homeplug_av.get_sw_cnf.dev_id",
6654
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_dev_id_vals), HOMEPLUG_AV_DEV_ID_MASK, NULL, HFILL }
6655
15
        },
6656
15
        { &hf_homeplug_av_get_sw_cnf_ver_len,
6657
15
          { "Version length", "homeplug_av.get_sw_cnf.ver_len",
6658
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
6659
15
        },
6660
15
        { &hf_homeplug_av_get_sw_cnf_ver_str,
6661
15
          { "Version", "homeplug_av.get_sw_cnf.ver_str",
6662
15
            FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
6663
15
        },
6664
15
        { &hf_homeplug_av_get_sw_cnf_upg,
6665
15
          { "Upgradable", "homeplug_av.get_sw_cnf.upg",
6666
15
            FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL }
6667
15
        },
6668
        /* Write MAC Memory Request */
6669
15
        { &hf_homeplug_av_wr_mem_req,
6670
15
          { "Write MAC Memory Request", "homeplug_av.wr_mem_req",
6671
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6672
15
        },
6673
15
        { &hf_homeplug_av_mem_addr,
6674
15
          { "Address", "homeplug_av.mem.addr",
6675
15
            FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
6676
15
        },
6677
15
        { &hf_homeplug_av_mem_len_32bits,
6678
15
          { "Length", "homeplug_av.mem.len_32bits",
6679
15
            FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
6680
15
        },
6681
        /* Write MAC Memory Confirmation */
6682
15
        { &hf_homeplug_av_wr_mem_cnf,
6683
15
          { "Write MAC Memory Confirmation", "homeplug_av.wr_mem_cnf",
6684
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6685
15
        },
6686
        /* Read MAC Memory Request */
6687
15
        { &hf_homeplug_av_rd_mem_req,
6688
15
          { "Read MAC Memory Request", "homeplug_av.rd_mem_req",
6689
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6690
15
        },
6691
15
        { &hf_homeplug_av_rd_mem_cnf,
6692
15
          { "Read MAC Memory Confirmation", "homeplug_av.rd_mem_cnf",
6693
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6694
15
        },
6695
        /* Start MAC Request */
6696
15
        { &hf_homeplug_av_st_mac_req,
6697
15
          { "Start MAC Request", "homeplug_av.st_mac_req",
6698
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6699
15
        },
6700
15
        { &hf_homeplug_av_st_mac_req_img_load,
6701
15
          { "Image Load Starting Address", "homeplug_av.st_mac_req.img_load",
6702
15
            FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
6703
15
        },
6704
15
        { &hf_homeplug_av_st_mac_req_img_len,
6705
15
          { "Image Length", "homeplug_av.st_mac_req.img_len",
6706
15
            FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
6707
15
        },
6708
15
        { &hf_homeplug_av_st_mac_req_img_chksum,
6709
15
          { "Image Checksum", "homeplug_av.st_mac_req.img_chksum",
6710
15
            FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
6711
15
        },
6712
15
        { &hf_homeplug_av_st_mac_req_img_start,
6713
15
          { "Image Starting Address", "homeplug_av.st_mac_req.img_start",
6714
15
            FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
6715
15
        },
6716
        /* Start MAC Confirmation */
6717
15
        { &hf_homeplug_av_st_mac_cnf,
6718
15
          { "Start MAC Confirmation", "homeplug_av.st_mac_cnf",
6719
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6720
15
        },
6721
15
        { &hf_homeplug_av_st_mac_cnf_status,
6722
15
          { "Module ID", "homeplug_av.st_mac_cnf.status",
6723
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_st_mac_status_vals), 0x0, NULL, HFILL }
6724
15
        },
6725
        /* Get NVM Parameters Confirmation */
6726
15
        { &hf_homeplug_av_get_nvm_cnf,
6727
15
          { "Get NVM Parameters Confirmation", "homeplug_av.get_nvm_cnf",
6728
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6729
15
        },
6730
15
        { &hf_homeplug_av_get_nvm_cnf_status,
6731
15
          { "Status", "homeplug_av.get_nvm_cnf.status",
6732
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_get_nvm_status_vals), 0x0, NULL, HFILL }
6733
15
        },
6734
15
        { &hf_homeplug_av_get_nvm_cnf_nvm_type,
6735
15
          { "NVM Type", "homeplug_av.get_nvm_cnf.nvm_type",
6736
15
            FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
6737
15
        },
6738
15
        { &hf_homeplug_av_get_nvm_cnf_nvm_page,
6739
15
          { "NVM Page Size", "homeplug_av.get_nvm_cnf.nvm_page",
6740
15
            FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
6741
15
        },
6742
15
        { &hf_homeplug_av_get_nvm_cnf_nvm_block,
6743
15
          { "NVM Block Size", "homeplug_av.get_nvm_cnf.nvm_block",
6744
15
            FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
6745
15
        },
6746
15
        { &hf_homeplug_av_get_nvm_cnf_nvm_size,
6747
15
          { "NVM Memory Size", "homeplug_av.get_nvm_cnf.nvm_size",
6748
15
            FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
6749
15
        },
6750
        /* Reset Device Confirmation */
6751
15
        { &hf_homeplug_av_rs_dev_cnf,
6752
15
          { "Reset Device Confirmation", "homeplug_av.rs_dev_cnf",
6753
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6754
15
        },
6755
15
        { &hf_homeplug_av_rs_dev_cnf_status,
6756
15
          { "Status", "homeplug_av.rs_dev_cnf.status",
6757
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_rs_dev_status_vals), 0x0, NULL, HFILL }
6758
15
        },
6759
        /* Shared memory related fields */
6760
15
        { &hf_homeplug_av_mem_len_16bits,
6761
15
          { "Length", "homeplug_av.mem.len_16bits",
6762
15
            FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
6763
15
        },
6764
15
        { &hf_homeplug_av_mem_offset,
6765
15
          { "Offset", "homeplug_av.mem.offset",
6766
15
            FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
6767
15
        },
6768
15
        { &hf_homeplug_av_mem_checksum,
6769
15
          { "Checksum", "homeplug_av.mem.checksum",
6770
15
            FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
6771
15
        },
6772
15
        { &hf_homeplug_av_mem_data,
6773
15
          { "Data", "homeplug_av.mem.data",
6774
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6775
15
        },
6776
15
        { &hf_homeplug_av_mem_status,
6777
15
          { "Status", "homeplug_av.mem.status",
6778
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_wr_rd_mem_status_vals), 0x0, NULL, HFILL }
6779
15
        },
6780
        /* Write Module Data Request */
6781
15
        { &hf_homeplug_av_wr_mod_req,
6782
15
          { "Write Module Data Request", "homeplug_av.wr_mod_req",
6783
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6784
15
        },
6785
        /* Write Module Data Confirmation */
6786
15
        { &hf_homeplug_av_wr_mod_cnf,
6787
15
          { "Write Module Data Confirmation", "homeplug_av.wr_mod_cnf",
6788
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6789
15
        },
6790
15
        { &hf_homeplug_av_wr_mod_cnf_status,
6791
15
          { "Status", "homeplug_av.wr_mod_cnf.status",
6792
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_wr_rd_mod_cnf_status_vals), 0x0, NULL, HFILL }
6793
15
        },
6794
        /* Write Module Data Indicate */
6795
15
        { &hf_homeplug_av_wr_mod_ind,
6796
15
          { "Write Module Data Indicate", "homeplug_av.wr_mod_ind",
6797
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6798
15
        },
6799
15
        { &hf_homeplug_av_wr_mod_ind_status,
6800
15
          { "Status", "homeplug_av.wr_mod_ind.status",
6801
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_wr_mod_ind_status_vals), 0x0, NULL, HFILL }
6802
15
        },
6803
        /* Read Module Data Request */
6804
15
        { &hf_homeplug_av_rd_mod_req,
6805
15
          { "Read Module Data Request", "homeplug_av.rd_mod_req",
6806
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6807
15
        },
6808
        /* Read Module Data Confirmation */
6809
15
        { &hf_homeplug_av_rd_mod_cnf,
6810
15
          { "Read Module Data Confirmation", "homeplug_av.rd_mod_cnf",
6811
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6812
15
        },
6813
15
        { &hf_homeplug_av_rd_mod_cnf_status,
6814
15
          { "Status", "homeplug_av.rd_mod_cnf.status",
6815
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_wr_rd_mod_cnf_status_vals), 0x0, NULL, HFILL }
6816
15
        },
6817
15
        { &hf_homeplug_av_mac_module_id,
6818
15
          { "Module ID", "homeplug_av.module_id",
6819
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_mac_module_id_vals), 0x0, NULL, HFILL }
6820
15
        },
6821
        /* Write Module Data to NVM Request */
6822
15
        { &hf_homeplug_av_mod_nvm_req,
6823
15
          { "Write Module Data to NVM Request", "homeplug_av.mod_nvm_req",
6824
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6825
15
        },
6826
        /* Write Module Data to NVM Confirmation */
6827
15
        { &hf_homeplug_av_mod_nvm_cnf,
6828
15
          { "Write Module Data to NVM Confirmation", "homeplug_av.mod_nvm_cnf",
6829
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6830
15
        },
6831
15
        { &hf_homeplug_av_mod_nvm_cnf_status,
6832
15
          { "Status", "homeplug_av.mod_nvm_cnf.status",
6833
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_mod_nvm_status_vals), 0x0, NULL, HFILL }
6834
15
        },
6835
        /* Get Watchdog Report Request */
6836
15
        { &hf_homeplug_av_wd_rpt_req,
6837
15
          { "Get Watchdog Report Request", "homeplug_av.wd_rpt_req",
6838
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6839
15
        },
6840
15
        { &hf_homeplug_av_wd_rpt_req_session_id,
6841
15
          { "Session ID", "homeplug_av.wd_rpt_req.session_id",
6842
15
            FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
6843
15
        },
6844
15
        { &hf_homeplug_av_wd_rpt_req_clr,
6845
15
          { "Clear flag", "homeplug_av.wd_rpt_req.clr",
6846
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_rpt_clr_vals), HOMEPLUG_AV_RPT_CLR_MASK, "Unknown", HFILL }
6847
15
        },
6848
        /* Get Watchdog Report Indicate */
6849
15
        { &hf_homeplug_av_wd_rpt_ind,
6850
15
          { "Get Watchdog Report Indicate", "homeplug_av.wd_rpt_ind",
6851
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6852
15
        },
6853
15
        { &hf_homeplug_av_wd_rpt_ind_status,
6854
15
          { "Status", "homeplug_av.wd_rpt_ind.status",
6855
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_generic_status_vals), HOMEPLUG_AV_GEN_STATUS_MASK, "Unknown", HFILL }
6856
15
        },
6857
15
        { &hf_homeplug_av_wd_rpt_ind_session_id,
6858
15
          { "Session ID", "homeplug_av.wd_rpt_ind.session_id",
6859
15
            FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
6860
15
        },
6861
15
        { &hf_homeplug_av_wd_rpt_ind_num_parts,
6862
15
          { "Number of parts", "homeplug_av.wd_rpt_ind.num_parts",
6863
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
6864
15
        },
6865
15
        { &hf_homeplug_av_wd_rpt_ind_curr_part,
6866
15
          { "Current Part", "homeplug_av.wd_rpt_ind.curr_part",
6867
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
6868
15
        },
6869
15
        { &hf_homeplug_av_wd_rpt_ind_rdata_len,
6870
15
          { "Report Data Length", "homeplug_av.wd_rpt_ind.rdata_len",
6871
15
            FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
6872
15
        },
6873
15
        { &hf_homeplug_av_wd_rpt_ind_rdata_ofs,
6874
15
          { "Report Data Offset", "homeplug_av.wd_rpt_ind.rdata_offset",
6875
15
            FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
6876
15
        },
6877
15
        { &hf_homeplug_av_wd_rpt_ind_rdata,
6878
15
          { "Report Data", "homeplug_av.wd_rpt_ind.rdata",
6879
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6880
15
        },
6881
        /* Link Statistics Request */
6882
15
        { &hf_homeplug_av_lnk_stats_req,
6883
15
          { "Link Statistics Request", "homeplug_av.lnk_stats_req",
6884
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6885
15
        },
6886
15
        { &hf_homeplug_av_lnk_stats_req_mcontrol,
6887
15
          { "Control", "homeplug_av.lnk_stats_req.mcontrol",
6888
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_lnk_stats_mctrl_vals), HOMEPLUG_AV_LNK_STATS_MCTL_MASK, "Unknown", HFILL }
6889
15
        },
6890
15
        { &hf_homeplug_av_lnk_stats_req_dir,
6891
15
          { "Direction", "homeplug_av.lnk_stats_req.dir",
6892
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_lnk_stats_dir_vals), HOMEPLUG_AV_LNK_STATS_DIR_MASK, "Unknown", HFILL }
6893
15
        },
6894
15
        { &hf_homeplug_av_lnk_stats_req_lid,
6895
15
          { "Link ID", "homeplug_av.lnk_stats_req.lid",
6896
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_lnk_stats_lid_vals), 0x0, NULL, HFILL }
6897
15
        },
6898
15
        { &hf_homeplug_av_lnk_stats_req_macaddr,
6899
15
          { "Peer Node", "homeplug_av.lnk_stats_req.macaddr",
6900
15
            FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
6901
15
        },
6902
        /* Link Statistics Confirmation */
6903
15
        { &hf_homeplug_av_lnk_stats_cnf,
6904
15
          { "Link Statistics Confirmation", "homeplug_av.lnk_stats_cnf",
6905
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6906
15
        },
6907
15
        { &hf_homeplug_av_lnk_stats_cnf_status,
6908
15
          { "Status", "homeplug_av.lnk_stats_cnf.status",
6909
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_lnk_status_vals), 0x0, NULL, HFILL }
6910
15
        },
6911
15
        { &hf_homeplug_av_lnk_stats_cnf_dir,
6912
15
          { "Direction", "homeplug_av.lnk_stats_cnf.dir",
6913
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_lnk_stats_dir_vals), HOMEPLUG_AV_LNK_STATS_DIR_MASK, "Unknown", HFILL }
6914
15
        },
6915
15
        { &hf_homeplug_av_lnk_stats_cnf_lid,
6916
15
          { "Link ID", "homeplug_av.lnk_stats_cnf.lid",
6917
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_lnk_stats_lid_vals), 0x0, NULL, HFILL }
6918
15
        },
6919
15
        { &hf_homeplug_av_lnk_stats_cnf_tei,
6920
15
          { "TEI", "homeplug_av.lnk_stats_cnf.tei",
6921
15
            FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
6922
15
        },
6923
15
        { &hf_homeplug_av_lnk_stats_cnf_lstats,
6924
15
          { "Link statistics", "homeplug_av.lnk_stats_cnf.lstats",
6925
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6926
15
        },
6927
        /* Link statistics members */
6928
15
        { &hf_homeplug_av_lnk_stats_tx,
6929
15
          { "Tx link statistics", "homeplug_av.lnk_stats.tx",
6930
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6931
15
        },
6932
15
        { &hf_homeplug_av_lnk_stats_tx_mpdu_ack,
6933
15
          { "Number of MPDUs Transmitted and Acknowledged", "homeplug_av.lnk_stats.tx.mpdu_ack",
6934
15
            FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
6935
15
        },
6936
15
        { &hf_homeplug_av_lnk_stats_tx_mpdu_col,
6937
15
          { "Number of MPDUs Transmitted and Collided", "homeplug_av.lnk_stats.tx.mpdu_col",
6938
15
            FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
6939
15
        },
6940
15
        { &hf_homeplug_av_lnk_stats_tx_mpdu_fai,
6941
15
          { "Number of MPDUs Transmitted and Failed", "homeplug_av.lnk_stats.tx.mpdu_fail",
6942
15
            FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
6943
15
        },
6944
15
        { &hf_homeplug_av_lnk_stats_tx_pbs_pass,
6945
15
          { "Number of PB Transmitted Successfully", "homeplug_av.lnk_stats.tx.pbs_pass",
6946
15
            FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
6947
15
        },
6948
15
        { &hf_homeplug_av_lnk_stats_tx_pbs_fail,
6949
15
          { "Number of PB Transmitted Unsuccessfully", "homeplug_av.lnk_stats.tx.pbs_fail",
6950
15
            FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
6951
15
        },
6952
15
        { &hf_homeplug_av_lnk_stats_rx,
6953
15
          { "Rx link statistics", "homeplug_av.lnk_stats.rx",
6954
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6955
15
        },
6956
15
        { &hf_homeplug_av_lnk_stats_rx_mpdu_ack,
6957
15
          { "Number of MPDUs Received and Acknowledged", "homeplug_av.lnk_stats.rx.mdpu_ack",
6958
15
            FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
6959
15
        },
6960
15
        { &hf_homeplug_av_lnk_stats_rx_mpdu_fai,
6961
15
          { "Number of MPDUs Received and Failed", "homeplug_av.lnk_stats.rx.mdpu_fail",
6962
15
            FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
6963
15
        },
6964
15
        { &hf_homeplug_av_lnk_stats_rx_pbs_pass,
6965
15
          { "Number of PB Received Successfully", "homeplug_av.lnk_stats.rx.pbs_pass",
6966
15
            FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
6967
15
        },
6968
15
        { &hf_homeplug_av_lnk_stats_rx_pbs_fail,
6969
15
          { "Number of PB Received Unsuccessfully", "homeplug_av.lnk_stats.rx.pbs_fail",
6970
15
            FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
6971
15
        },
6972
15
        { &hf_homeplug_av_lnk_stats_rx_tb_pass,
6973
15
          { "Sum of Turbo Bit Error over successfully received PBs", "homeplug_av.lnk_stats.rx.tb_pass",
6974
15
            FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
6975
15
        },
6976
15
        { &hf_homeplug_av_lnk_stats_rx_tb_fail,
6977
15
          { "Sum of Turbo Bit Error over unsuccessfully received PBs", "homeplug_av.lnk_stats.rx.tb_fail",
6978
15
            FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
6979
15
        },
6980
15
        { &hf_homeplug_av_lnk_stats_rx_num_int,
6981
15
          { "Number of Tone Map Intervals", "homeplug_av.lnk_stats.rx.num_int",
6982
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
6983
15
        },
6984
15
        { &hf_homeplug_av_rx_inv_stats,
6985
15
          { "Rx Interval Statistics", "homeplug_av.lnk_stats.rx.inv",
6986
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
6987
15
        },
6988
15
        { &hf_homeplug_av_rx_inv_phy_rate,
6989
15
          { "Rx Phy Rate for Tone Map Interval 0", "homeplug_av.lnk_stats.rx.inv.phy_rate",
6990
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
6991
15
        },
6992
15
        { &hf_homeplug_av_rx_inv_pbs_pass,
6993
15
          { "Number of PB Received Successfully", "homeplug_av.lnk_stats.rx.inv.pbs_pass",
6994
15
            FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
6995
15
        },
6996
15
        { &hf_homeplug_av_rx_inv_pbs_fail,
6997
15
          { "Number of PB Received Unsuccessfully", "homeplug_av.lnk_stats.rx.inv.pbs_fail",
6998
15
            FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
6999
15
        },
7000
15
        { &hf_homeplug_av_rx_inv_tb_pass,
7001
15
          { "Sum of the Turbo Bit Error over all PBs received successfully", "homeplug_av.lnk_stats.rx.inv.tb_pass",
7002
15
            FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
7003
15
        },
7004
15
        { &hf_homeplug_av_rx_inv_tb_fail,
7005
15
          { "Sum of the Turbo Bit Error over all PBs received unsuccessfully", "homeplug_av.lnk_stats.rx.inv.tb_fail",
7006
15
            FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
7007
15
        },
7008
        /* Sniffer Request */
7009
15
        { &hf_homeplug_av_sniffer_req,
7010
15
          { "Sniffer Request", "homeplug_av.sniffer_req",
7011
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
7012
15
        },
7013
15
        { &hf_homeplug_av_sniffer_req_ctrl,
7014
15
          { "Sniffer Control", "homeplug_av.sniffer_req.ctrl",
7015
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_sniffer_ctrl_vals), HOMEPLUG_AV_SNIFFER_CTRL_MASK, NULL, HFILL }
7016
15
        },
7017
        /* Sniffer Confirmation */
7018
15
        { &hf_homeplug_av_sniffer_cnf,
7019
15
          { "Sniffer Confirmation", "homeplug_av.sniffer_cnf",
7020
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
7021
15
        },
7022
15
        { &hf_homeplug_av_sniffer_cnf_status,
7023
15
          { "Status", "homeplug_av.sniffer_cnf.status",
7024
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_sniffer_status_vals), 0x0, NULL, HFILL }
7025
15
        },
7026
15
        { &hf_homeplug_av_sniffer_cnf_state,
7027
15
          { "State", "homeplug_av.sniffer_cnf.state",
7028
15
            FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL }
7029
15
        },
7030
15
        { &hf_homeplug_av_sniffer_cnf_da,
7031
15
          { "Destination address", "homeplug_av.sniffer_cnf.da",
7032
15
            FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
7033
15
        },
7034
        /* Sniffer Indicate */
7035
15
        { &hf_homeplug_av_sniffer_ind,
7036
15
          { "Sniffer Indicate", "homeplug_av.sniffer_ind",
7037
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
7038
15
        },
7039
15
        { &hf_homeplug_av_sniffer_ind_type,
7040
15
          { "Sniffer Type", "homeplug_av.sniffer_ind.type",
7041
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_sniffer_type_vals), 0x0, NULL, HFILL }
7042
15
        },
7043
15
        { &hf_homeplug_av_sniffer_ind_data,
7044
15
          { "Sniffer Data", "homeplug_av.sniffer_ind.data",
7045
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
7046
15
        },
7047
15
        { &hf_homeplug_av_sniffer_data_dir,
7048
15
          { "Direction", "homeplug_av.sniffer_ind.data.dir",
7049
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_lnk_stats_dir_vals), HOMEPLUG_AV_LNK_STATS_DIR_MASK, NULL, HFILL }
7050
15
        },
7051
15
        { &hf_homeplug_av_sniffer_data_systime,
7052
15
          { "System time", "homeplug_av.sniffer_ind.data.systime",
7053
15
            FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
7054
15
        },
7055
15
        { &hf_homeplug_av_sniffer_data_bc_time,
7056
15
          { "Beacon time", "homeplug_av.sniffer_ind.data.bc_time",
7057
15
            FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
7058
15
        },
7059
        /* Network Info Confirmation */
7060
15
        { &hf_homeplug_av_nw_info_cnf,
7061
15
          { "Network Info Confirmation", "homeplug_av.nw_info_cnf",
7062
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
7063
15
        },
7064
15
        { &hf_homeplug_av_nw_info_net_info,
7065
15
          { "Networks informations", "homeplug_av.nw_info_cnf.net_info",
7066
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
7067
15
        },
7068
15
        { &hf_homeplug_av_nw_info_num_avlns,
7069
15
          { "Number of AV Logical Networks", "homeplug_av.nw_info.num_avlns",
7070
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
7071
15
        },
7072
15
        { &hf_homeplug_av_nw_info_nid,
7073
15
          { "Network ID", "homeplug_av.nw_info.nid",
7074
15
            FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }
7075
15
        },
7076
15
        { &hf_homeplug_av_nw_info_snid,
7077
15
          { "Short Network ID", "homeplug_av.nw_info.snid",
7078
15
            FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
7079
15
        },
7080
15
        { &hf_homeplug_av_nw_info_tei,
7081
15
          { "Terminal Equipment Identifier", "homeplug_av.nw_info.tei",
7082
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
7083
15
        },
7084
15
        { &hf_homeplug_av_nw_info_sta_role,
7085
15
          { "Station Role", "homeplug_av.nw_info.sta_role",
7086
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_nw_info_role_vals), HOMEPLUG_AV_NW_INFO_ROLE_MASK, "Reserved", HFILL }
7087
15
        },
7088
15
        { &hf_homeplug_av_nw_info_cco_mac,
7089
15
          { "CCo MAC Address", "homeplug_av.nw_info_cnf.cco_mac",
7090
15
            FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
7091
15
        },
7092
15
        { &hf_homeplug_av_nw_info_cco_tei,
7093
15
          { "CCo Terminal Equipment Identifier", "homeplug_av.nw_info_cnf.cco_tei",
7094
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
7095
15
        },
7096
15
        { &hf_homeplug_av_nw_info_num_stas,
7097
15
          { "Number of AV Stations", "homeplug_av.nw_info_cnf.num_stas",
7098
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
7099
15
        },
7100
15
        { &hf_homeplug_av_nw_info_access,
7101
15
          { "Access network", "homeplug_av.nw_info_cnf.access",
7102
15
            FT_UINT8, BASE_HEX, VALS(homeplug_nw_info_access_vals), HOMEPLUG_AV_NW_INFO_NID_MASK, "Reserved", HFILL }
7103
15
        },
7104
15
        { &hf_homeplug_av_nw_info_num_coord,
7105
15
          { "Number of neighbor networks coordinating", "homeplug_av.nw_info_cnf.num_coord",
7106
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
7107
15
        },
7108
        /* Network Info per station */
7109
15
        { &hf_homeplug_av_nw_info_sta_info,
7110
15
          { "Stations Informations", "homeplug_av.nw_info_cnf.sta_info",
7111
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
7112
15
        },
7113
15
        { &hf_homeplug_av_nw_info_sta_da,
7114
15
          { "Station MAC Address", "homeplug_av.nw_info_cnf.sta_info.da",
7115
15
            FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
7116
15
        },
7117
15
        { &hf_homeplug_av_nw_info_sta_tei,
7118
15
          { "Station Terminal Equipment Identifier", "homeplug_av.nw_info_cnf.sta_indo.tei",
7119
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
7120
15
        },
7121
15
        { &hf_homeplug_av_nw_info_sta_bda,
7122
15
          { "MAC Address of first Node Bridged by Station", "homeplug_av.nw_info_cnf.sta_indo.bda",
7123
15
            FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
7124
15
        },
7125
15
        { &hf_homeplug_av10_nw_info_sta_phy_dr_tx,
7126
15
          { "Average PHY Tx data Rate (Mbits/sec)", "homeplug_av.nw_info_cnf.sta_indo.phy_dr_tx",
7127
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
7128
15
        },
7129
15
        { &hf_homeplug_av10_nw_info_sta_phy_dr_rx,
7130
15
          { "Average PHY Rx data Rate (Mbits/sec)", "homeplug_av.nw_info_cnf.sta_indo.phy_dr_rx",
7131
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
7132
15
        },
7133
15
        { &hf_homeplug_av11_nw_info_sta_phy_dr_tx,
7134
15
          { "Average PHY Tx data Rate (Mbits/sec)", "homeplug_av.nw_info_cnf.sta_indo.phy_dr_tx",
7135
15
            FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
7136
15
        },
7137
15
        { &hf_homeplug_av11_nw_info_sta_phy_dr_rx,
7138
15
          { "Average PHY Rx data Rate (Mbits/sec)", "homeplug_av.nw_info_cnf.sta_indo.phy_dr_rx",
7139
15
            FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
7140
15
        },
7141
15
        { &hf_homeplug_av11_nw_info_sta_cpling_tx,
7142
15
          { "PHY Tx Coupling", "homeplug_av.nw_info_cnf.sta_info.phy_coupling_tx",
7143
15
            FT_UINT8, BASE_DEC, VALS(homeplug_av_coupling_vals), HOMEPLUG_AV_COUPLING_MASK, "Unknown", HFILL }
7144
15
        },
7145
15
        { &hf_homeplug_av11_nw_info_sta_cpling_rx,
7146
15
          { "PHY Rx Coupling", "homeplug_av.nw_info_cnf.sta_info.phy_coupling_rx",
7147
15
            FT_UINT8, BASE_DEC, VALS(homeplug_av_coupling_vals), HOMEPLUG_AV_COUPLING_MASK << 4, "Unknown", HFILL }
7148
15
        },
7149
        /* Check Points Request */
7150
15
        { &hf_homeplug_av_cp_rpt_req,
7151
15
          { "Check Points Request", "homeplug_av.cp_rpt_req",
7152
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
7153
15
        },
7154
15
        { &hf_homeplug_av_cp_rpt_req_session_id,
7155
15
          { "Session ID", "homeplug_av.cp_rpt_req.session_id",
7156
15
            FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
7157
15
        },
7158
15
        { &hf_homeplug_av_cp_rpt_req_clr,
7159
15
          { "Clear flag", "homeplug_av.cp_rpt_req.clr",
7160
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_rpt_clr_vals), HOMEPLUG_AV_RPT_CLR_MASK, "Unknown", HFILL }
7161
15
        },
7162
        /* Check Points Confirmation */
7163
15
        { &hf_homeplug_av_cp_rpt_ind,
7164
15
          { "Check Points Confirmation", "homeplug_av.cp_rpt_ind",
7165
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
7166
15
        },
7167
15
        { &hf_homeplug_av_cp_rpt_ind_status,
7168
15
          { "Status", "homeplug_av.cp_rpt_ind.status",
7169
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_generic_status_vals), HOMEPLUG_AV_GEN_STATUS_MASK, "Unknown", HFILL }
7170
15
        },
7171
15
        { &hf_homeplug_av_cp_rpt_ind_major_ver,
7172
15
          { "Major version", "homeplug_av.cp_rpt_ind.major_ver",
7173
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
7174
15
        },
7175
15
        { &hf_homeplug_av_cp_rpt_ind_minor_ver,
7176
15
          { "Minor version", "homeplug_av.cp_rpt_ind.minor_ver",
7177
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
7178
15
        },
7179
15
        { &hf_homeplug_av_cp_rpt_ind_session_id,
7180
15
          { "Session ID", "homeplug_av.cp_rpt_ind.session_id",
7181
15
            FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
7182
15
        },
7183
15
        { &hf_homeplug_av_cp_rpt_ind_total_size,
7184
15
          { "Total size", "homeplug_av.cp_rpt_ind.total_size",
7185
15
            FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
7186
15
        },
7187
15
        { &hf_homeplug_av_cp_rpt_ind_blk_offset,
7188
15
          { "Offset", "homeplug_av.cp_rpt_ind.blk_offset",
7189
15
            FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
7190
15
        },
7191
15
        { &hf_homeplug_av_cp_rpt_ind_byte_index,
7192
15
          { "Byte Index", "homeplug_av.cp_rpt_ind.byte_index",
7193
15
            FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
7194
15
        },
7195
15
        { &hf_homeplug_av_cp_rpt_ind_num_parts,
7196
15
          { "Number of parts", "homeplug_av.cp_rpt_ind.num_parts",
7197
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
7198
15
        },
7199
15
        { &hf_homeplug_av_cp_rpt_ind_curr_part,
7200
15
          { "Current part", "homeplug_av.cp_rpt_ind.curr_part",
7201
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
7202
15
        },
7203
15
        { &hf_homeplug_av_cp_rpt_ind_data_len,
7204
15
          { "Data length", "homeplug_av.cp_rpt_ind.data_len",
7205
15
            FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
7206
15
        },
7207
15
        { &hf_homeplug_av_cp_rpt_ind_data_ofs,
7208
15
          { "Data offset", "homeplug_av.cp_rpt_ind.data_ofs",
7209
15
            FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
7210
15
        },
7211
15
        { &hf_homeplug_av_cp_rpt_ind_data,
7212
15
          { "Report Data", "homeplug_av.cp_rpt_ind.data",
7213
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
7214
15
        },
7215
        /* Loopback Request */
7216
15
        { &hf_homeplug_av_fr_lbk_req,
7217
15
          { "Loopback Request", "homeplug_av.fr_lbk.req",
7218
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
7219
15
        },
7220
15
        { &hf_homeplug_av_fr_lbk_duration,
7221
15
          { "Duration", "homeplug_av.lbk.duration",
7222
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
7223
15
        },
7224
15
        { &hf_homeplug_av_fr_lbk_len,
7225
15
          { "Length", "homeplug_av.lbk.len",
7226
15
            FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
7227
15
        },
7228
15
        { &hf_homeplug_av_fr_lbk_req_data,
7229
15
          { "Data", "homeplug_av.fr_lbj_req.data",
7230
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
7231
15
        },
7232
        /* Loopback Confirmation */
7233
15
        { &hf_homeplug_av_fr_lbk_cnf,
7234
15
          { "Loopback Confirmation", "homeplug_av.fr_lbk_cnf",
7235
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
7236
15
        },
7237
15
        { &hf_homeplug_av_fr_lbk_cnf_status,
7238
15
          { "Status", "homeplug_av.fr_lbk_cnf.status",
7239
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_generic_status_vals), HOMEPLUG_AV_GEN_STATUS_MASK, "Unknown", HFILL }
7240
15
        },
7241
15
        { &hf_homeplug_av_lbk_stat_cnf,
7242
15
          { "Loopback Status Confirmation", "homeplug_av.lnk_stat_cnf",
7243
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
7244
15
        },
7245
15
        { &hf_homeplug_av_lbk_stat_cnf_status,
7246
15
          { "Status", "homeplug_av.lnk_stat_cnf.status",
7247
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_generic_status_vals), HOMEPLUG_AV_GEN_STATUS_MASK, NULL, HFILL }
7248
15
        },
7249
15
        { &hf_homeplug_av_lbk_stat_cnf_lbk_stat,
7250
15
          { "Loopback Status", "homeplug_av.lnk_stat_cnf.lbk_stat",
7251
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_lbk_status_vals), HOMEPLUG_AV_LBK_STATUS_MASK, NULL, HFILL }
7252
15
        },
7253
        /* Set Encryption Key Request */
7254
15
        { &hf_homeplug_av_set_key_req,
7255
15
          { "Set Encryption Key Request", "homeplug_av.set_key_req",
7256
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
7257
15
        },
7258
15
        { &hf_homeplug_av_set_key_req_eks,
7259
15
          { "EKS", "homeplug_av.set_key_req.eks",
7260
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_set_key_peks_vals), 0x0, NULL, HFILL }
7261
15
        },
7262
15
        { &hf_homeplug_av_set_key_req_nmk,
7263
15
          { "NMK", "homeplug_av.set_key_req.nmk",
7264
15
            FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }
7265
15
        },
7266
15
        { &hf_homeplug_av_set_key_req_rda,
7267
15
          { "Destination Address", "homeplug_av.set_key_req.rda",
7268
15
            FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
7269
15
        },
7270
15
        { &hf_homeplug_av_set_key_req_dak,
7271
15
          { "DAK", "homeplug_av.set_key_req.dak",
7272
15
            FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }
7273
15
        },
7274
        /* Set Encryption Key Confirmation */
7275
15
        { &hf_homeplug_av_set_key_cnf,
7276
15
          { "Set Encryption Key Confirmation", "homeplug_av.set_key_cnf",
7277
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
7278
15
        },
7279
15
        { &hf_homeplug_av_set_key_cnf_status,
7280
15
          { "Status", "homeplug_av.set_key_cnf.status",
7281
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_set_key_status_vals), 0x0, NULL, HFILL }
7282
15
        },
7283
        /* Get Manufacturer String Confirmation */
7284
15
        { &hf_homeplug_av_mfg_string_cnf,
7285
15
          { "Get Manufacturer String Confirmation", "homeplug_av.mfg_string_cnf",
7286
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
7287
15
        },
7288
15
        { &hf_homeplug_av_mfg_string_cnf_status,
7289
15
          { "Status", "homeplug_av.mfg_string_cnf.status",
7290
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_generic_status_vals), HOMEPLUG_AV_GEN_STATUS_MASK, NULL, HFILL }
7291
15
        },
7292
15
        { &hf_homeplug_av_mfg_string_cnf_len,
7293
15
          { "Length", "homeplug_av.mfg_string_cnf.len",
7294
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
7295
15
        },
7296
15
        { &hf_homeplug_av_mfg_string_cnf_string,
7297
15
          { "Manufacturing String", "homeplug_av.mfg_string_cnf.string",
7298
15
            FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
7299
15
        },
7300
        /* Read Configuration Block Confirmation */
7301
15
        { &hf_homeplug_av_rd_cblock_cnf,
7302
15
          { "Read Configuration Block Confirmation", "homeplug_av.rd_block_cnf",
7303
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
7304
15
        },
7305
15
        { &hf_homeplug_av_rd_cblock_cnf_status,
7306
15
          { "Status", "homeplug_av.rd_block_cnf.status",
7307
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_cblock_status_vals), 0x0, NULL, HFILL }
7308
15
        },
7309
15
        { &hf_homeplug_av_rd_cblock_cnf_len,
7310
15
          { "Length", "homeplug_av.rd_block_cnf.len",
7311
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
7312
15
        },
7313
        /* Configuration Block Header */
7314
15
        { &hf_homeplug_av_cblock_hdr,
7315
15
          { "Configuration Block Header", "homeplug_av.cblock_hdr",
7316
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
7317
15
        },
7318
15
        { &hf_homeplug_av_cblock_hdr_ver,
7319
15
          { "Header Version Number", "homeplug_av.cblock_hdr.ver",
7320
15
            FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
7321
15
        },
7322
15
        { &hf_homeplug_av_cblock_img_rom_addr,
7323
15
          { "Image address in NVM", "homeplug_av.cblock_hdr.img_rom_addr",
7324
15
            FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
7325
15
        },
7326
15
        { &hf_homeplug_av_cblock_img_addr,
7327
15
          { "Image address in SDRAM", "homeplug_av.cblock_hdr.img_addr",
7328
15
            FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
7329
15
        },
7330
15
        { &hf_homeplug_av_cblock_img_len,
7331
15
          { "Image length", "homeplug_av.cblock_hdr.img_len",
7332
15
            FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
7333
15
        },
7334
15
        { &hf_homeplug_av_cblock_img_chksum,
7335
15
          { "Image Checksum", "homeplug_av.cblock_hdr.img_chksum",
7336
15
            FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
7337
15
        },
7338
15
        { &hf_homeplug_av_cblock_entry_point,
7339
15
          { "Entry Point", "homeplug_av.cblock_hdr.entry_point",
7340
15
            FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
7341
15
        },
7342
15
        { &hf_homeplug_av_cblock_hdr_minor,
7343
15
          { "Header minor version", "homeplug_av.cblock_hdr.minor",
7344
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
7345
15
        },
7346
15
        { &hf_homeplug_av_cblock_hdr_img_type,
7347
15
          { "Header image type", "homeplug_av.cblock_hdr.img_type",
7348
15
            FT_UINT8, BASE_DEC, VALS(homeplug_av_nvm_img_type_vals), HOMEPLUG_AV_NVM_IMG_TYPE_MASK, NULL, HFILL }
7349
15
        },
7350
15
        { &hf_homeplug_av_cblock_hdr_ignore_mask,
7351
15
          { "Header ignore mask", "homeplug_av.cblock_hdr.ignore_mask",
7352
15
            FT_UINT16, BASE_HEX, VALS(homeplug_av_nvm_ignore_mask_vals), HOMEPLUG_AV_NVM_IGNORE_MASK_MASK, NULL, HFILL }
7353
15
        },
7354
15
        { &hf_homeplug_av_cblock_hdr_module_id,
7355
15
          { "Header module ID", "homeplug_av.cblock_hdr.module_id",
7356
15
            FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
7357
15
        },
7358
15
        { &hf_homeplug_av_cblock_hdr_module_subid,
7359
15
          { "Header module sub ID", "homeplug_av.cblock_hdr.module_subid",
7360
15
            FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
7361
15
        },
7362
15
        { &hf_homeplug_av_cblock_next_hdr,
7363
15
          { "Address of next header in NVM", "homeplug_av.cblock_hdr.next_hdr",
7364
15
            FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
7365
15
        },
7366
15
        { &hf_homeplug_av_cblock_hdr_chksum,
7367
15
          { "Header checksum", "homeplug_av.cblock_hdr.hdr_chksum",
7368
15
            FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
7369
15
        },
7370
        /* Configuration Block */
7371
15
        { &hf_homeplug_av_cblock,
7372
15
          { "Configuration Block", "homeplug_av.cblock",
7373
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
7374
15
        },
7375
15
        { &hf_homeplug_av_cblock_sdram_size,
7376
15
          { "SDRAM size", "homeplug_av.cblock.sdram_size",
7377
15
            FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
7378
15
        },
7379
15
        { &hf_homeplug_av_cblock_sdram_conf,
7380
15
          { "SDRAM Configuration Register", "homeplug_av.cblock.sdram_conf",
7381
15
            FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
7382
15
        },
7383
15
        { &hf_homeplug_av_cblock_sdram_tim0,
7384
15
          { "SDRAM Timing Register 0", "homeplug_av.cblock.sdram_tim0",
7385
15
            FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
7386
15
        },
7387
15
        { &hf_homeplug_av_cblock_sdram_tim1,
7388
15
          { "SDRAM Timing Register 1", "homeplug_av.cblock.sdram_tim1",
7389
15
            FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
7390
15
        },
7391
15
        { &hf_homeplug_av_cblock_sdram_cntrl,
7392
15
          { "SDRAM Control Register", "homeplug_av.cblock.sdram_cntrl",
7393
15
            FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
7394
15
        },
7395
15
        { &hf_homeplug_av_cblock_sdram_refresh,
7396
15
          { "SDRAM Refresh Register", "homeplug_av.cblock.sdram_refresh",
7397
15
            FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
7398
15
        },
7399
15
        { &hf_homeplug_av_cblock_mac_clock,
7400
15
          { "MAC Clock Register", "homeplug_av.cblock.mac_clock",
7401
15
            FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
7402
15
        },
7403
        /* Set SDRAM Configuration Request */
7404
15
        { &hf_homeplug_av_set_sdram_req,
7405
15
          { "Set SDRAM Configuration Request", "homeplug_av.set_sdram_req",
7406
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
7407
15
        },
7408
15
        { &hf_homeplug_av_set_sdram_req_chksum,
7409
15
          { "Checksum", "homeplug_av.set_sdram_req.chksum",
7410
15
            FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
7411
15
        },
7412
        /* Set SDRAM Configuration Confirmation */
7413
15
        { &hf_homeplug_av_set_sdram_cnf,
7414
15
          { "Set SDRAM Configuration Confirmation", "homeplug_av.set_sdram_cnf",
7415
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
7416
15
        },
7417
15
        { &hf_homeplug_av_set_sdram_cnf_status,
7418
15
          { "Status", "homeplug_av.set_sdram_cnf.status",
7419
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_cblock_status_vals), 0x0, NULL, HFILL }
7420
15
        },
7421
        /* Embedded Host Action Required Indicate */
7422
15
        { &hf_homeplug_av_host_action_ind,
7423
15
          { "Embedded Host Action Required Indicate", "homeplug_av.host_action_ind",
7424
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
7425
15
        },
7426
15
        { &hf_homeplug_av_host_action_ind_act,
7427
15
          { "Action required", "homeplug_av.host_action_ind.action",
7428
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_host_action_vals), 0x0, NULL, HFILL }
7429
15
        },
7430
        /* Embedded Host Action Required Response */
7431
15
        { &hf_homeplug_av_host_action_rsp,
7432
15
          { "Embedded Host Action Required Response", "homeplug_av.host_action_rsp",
7433
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
7434
15
        },
7435
15
        { &hf_homeplug_av_host_action_rsp_sts,
7436
15
          { "Status", "homeplug_av.host_action_rsp.status",
7437
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_generic_status_vals), HOMEPLUG_AV_GEN_STATUS_MASK, NULL, HFILL }
7438
15
        },
7439
        /* Get Device Attributes Request */
7440
15
        { &hf_homeplug_av_op_attr_req,
7441
15
          { "Get Device Attributes Request", "homeplug_av.op_attr_req",
7442
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
7443
15
        },
7444
15
        { &hf_homeplug_av_op_attr_cookie,
7445
15
          { "Cookie", "homeplug_av.op_attr.cookie",
7446
15
            FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
7447
15
        },
7448
15
        { &hf_homeplug_av_op_attr_rep_type,
7449
15
          { "Report Type", "homeplug_av.op_attr.rep_type",
7450
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_op_attr_report_vals), 0x0, NULL, HFILL }
7451
15
        },
7452
        /* Get Device Attributes Confirmation */
7453
15
        { &hf_homeplug_av_op_attr_cnf,
7454
15
          { "Get Device Attributes Confirmation", "homeplug_av.op_attr_cnf",
7455
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
7456
15
        },
7457
15
        { &hf_homeplug_av_op_attr_cnf_status,
7458
15
          { "Status", "homeplug_av.op_attr_cnf.status",
7459
15
            FT_UINT16, BASE_HEX, VALS(homeplug_av_generic_status_vals), HOMEPLUG_AV_GEN_STATUS_MASK, NULL, HFILL }
7460
15
        },
7461
15
        { &hf_homeplug_av_op_attr_cnf_size,
7462
15
          { "Size", "homeplug_av.op_attr_cnf.size",
7463
15
            FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
7464
15
        },
7465
15
        { &hf_homeplug_av_op_attr_cnf_data,
7466
15
          { "Data", "homeplug_av.op_attr_cnf.data",
7467
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
7468
15
        },
7469
        /* Device Attributes binary report */
7470
15
        { &hf_homeplug_av_op_attr_data_hw,
7471
15
          { "Hardware platform", "homeplug_av.op_attr_cnf.data.hw",
7472
15
            FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
7473
15
        },
7474
15
        { &hf_homeplug_av_op_attr_data_sw,
7475
15
          { "Software platform", "homeplug_av.op_attr_cnf.data.sw",
7476
15
            FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
7477
15
        },
7478
15
        { &hf_homeplug_av_op_attr_data_sw_major,
7479
15
          { "Major version", "homeplug_av.op_attr_cnf.data.sw_major",
7480
15
            FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
7481
15
        },
7482
15
        { &hf_homeplug_av_op_attr_data_sw_minor,
7483
15
          { "Minor version", "homeplug_av.op_attr_cnf.data.sw_minor",
7484
15
            FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
7485
15
        },
7486
15
        { &hf_homeplug_av_op_attr_data_sw_sub,
7487
15
          { "Software/PIB version", "homeplug_av.op_attr_cnf.data.sw_sub",
7488
15
            FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
7489
15
        },
7490
15
        { &hf_homeplug_av_op_attr_data_sw_num,
7491
15
          { "Software build number", "homeplug_av.op_attr_cnf.data.sw_sub",
7492
15
            FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
7493
15
        },
7494
15
        { &hf_homeplug_av_op_attr_data_sw_date,
7495
15
          { "Build date", "homeplug_av.op_attr_cnf.data.sw_date",
7496
15
            FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
7497
15
        },
7498
15
        { &hf_homeplug_av_op_attr_data_sw_rel,
7499
15
          { "Release type", "homeplug_av.op_attr_cnf.data.sw_rel",
7500
15
            FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
7501
15
        },
7502
15
        { &hf_homeplug_av_op_attr_data_sw_sdram_type,
7503
15
          { "SDRAM type", "homeplug_av.op_attr_cnf.data.sw_sdram_type",
7504
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
7505
15
        },
7506
15
        { &hf_homeplug_av_op_attr_data_sw_linefreq,
7507
15
          { "Line frequency (Hz)", "homeplug_av.op_attr_cnf.data.sw_linefreq",
7508
15
            FT_UINT8, BASE_DEC, VALS(homeplug_av_linefreq_vals), HOMEPLUG_AV_LINEFREQ_MASK, "Unknown", HFILL }
7509
15
        },
7510
15
        { &hf_homeplug_av_op_attr_data_sw_zerocross,
7511
15
          { "Zero-crossing", "homeplug_av.op_attr_cnf.data.sw_zerocross",
7512
15
            FT_UINT8, BASE_DEC, VALS(homeplug_av_zerocrossing_vals), HOMEPLUG_AV_ZEROCROSS_MASK << 2, "Unknown", HFILL }
7513
15
        },
7514
15
        { &hf_homeplug_av_op_attr_data_sw_sdram_size,
7515
15
          { "SDRAM size (Mbytes)", "homeplug_av.op_attr_cnf.data.sw_sdram_size",
7516
15
            FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
7517
15
        },
7518
15
        { &hf_homeplug_av_op_attr_data_sw_auth_mode,
7519
15
          { "Authorization mode", "homeplug_av.op_attr_cnf.data.sw_auth_mode",
7520
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
7521
15
        },
7522
        /* Get Ethernet PHY Settings Request */
7523
15
        { &hf_homeplug_av_enet_phy_req,
7524
15
          { "Get Ethernet PHY Settings Request", "homeplug_av.enet_phy_req",
7525
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
7526
15
        },
7527
15
        { &hf_homeplug_av_enet_phy_req_mcontrol,
7528
15
          { "Message Control", "homeplug_av.enet_phy_req.mcontrol",
7529
15
            FT_UINT8, BASE_DEC, VALS(homeplug_av_enet_phy_mcontrol_vals), HOMEPLUG_AV_ENET_PHY_MCONTROL_MASK, "Unknown", HFILL }
7530
15
        },
7531
15
        { &hf_homeplug_av_enet_phy_req_addcaps,
7532
15
          { "Advertisement Capabilities", "homeplug_av.enet_phy_req.addcaps",
7533
15
            FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
7534
15
        },
7535
        /* Get Ethernet PHY Settings Confirmation */
7536
15
        { &hf_homeplug_av_enet_phy_cnf,
7537
15
          { "Get Ethernet PHY Settings Confirmation", "homeplug_av.enet_phy_cnf",
7538
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
7539
15
        },
7540
15
        { &hf_homeplug_av_enet_phy_cnf_status,
7541
15
          { "Status", "homeplug_av.enet_phy_cnf.status",
7542
15
            FT_UINT8, BASE_DEC, VALS(homeplug_av_generic_status_vals), HOMEPLUG_AV_GEN_STATUS_MASK, NULL, HFILL }
7543
15
        },
7544
15
        { &hf_homeplug_av_enet_phy_cnf_speed,
7545
15
          { "Speed", "homeplug_av.enet_phy.speed",
7546
15
            FT_UINT8, BASE_DEC, VALS(homeplug_av_enet_phy_speed_vals), HOMEPLUG_AV_ENET_PHY_SPEED_MASK, NULL, HFILL },
7547
15
        },
7548
15
        { &hf_homeplug_av_enet_phy_cnf_duplex,
7549
15
          { "Duplex", "homeplug_av.enet_phy.duplex",
7550
15
            FT_UINT8, BASE_DEC, VALS(homeplug_av_enet_phy_duplex_vals), HOMEPLUG_AV_ENET_PHY_DUPLEX_MASK, NULL, HFILL },
7551
15
        },
7552
        /* Tone Map Tx Characteristics Request */
7553
15
        { &hf_homeplug_av_tone_map_tx_req,
7554
15
          { "Tone Map Tx Characteristics Request", "homeplug_av.tone_map_tx_req",
7555
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
7556
15
        },
7557
15
        { &hf_homeplug_av_tone_map_tx_req_mac,
7558
15
          { "Peer address", "homeplug_av.tone_map_tx_req.mac",
7559
15
            FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
7560
15
        },
7561
15
        { &hf_homeplug_av_tone_map_tx_req_slot,
7562
15
          { "Tone Map slot", "homeplug_av.tone_map_tx_req.slot",
7563
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
7564
15
        },
7565
15
        { &hf_homeplug_av_tone_map_tx_req_coupling,
7566
15
          { "Coupling", "homeplug_av.tone_map_tx_req.coupling",
7567
15
            FT_UINT8, BASE_DEC, VALS(homeplug_av_coupling_vals), HOMEPLUG_AV_COUPLING_MASK, NULL, HFILL }
7568
15
        },
7569
        /* Tone Map Rx Characteristics Request */
7570
15
        { &hf_homeplug_av_tone_map_rx_req,
7571
15
          { "Tone Map Rx Characteristics Request", "homeplug_av.tone_map_rx_req",
7572
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
7573
15
        },
7574
15
        { &hf_homeplug_av_tone_map_rx_req_mac,
7575
15
          { "Peer address", "homeplug_av.tone_map_rx_req.mac",
7576
15
            FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
7577
15
        },
7578
15
        { &hf_homeplug_av_tone_map_rx_req_slot,
7579
15
          { "Tone Map slot", "homeplug_av.tone_map_rx_req.slot",
7580
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
7581
15
        },
7582
15
        { &hf_homeplug_av_tone_map_rx_req_coupling,
7583
15
          { "Coupling", "homeplug_av.tone_map_rx_req.coupling",
7584
15
            FT_UINT8, BASE_DEC, VALS(homeplug_av_coupling_vals), HOMEPLUG_AV_COUPLING_MASK, NULL, HFILL }
7585
15
        },
7586
        /* Tone Map Tx Characteristics  Confirmation */
7587
15
        { &hf_homeplug_av_tone_map_tx_cnf,
7588
15
          { "Tone Map Tx Characteristics Confirmation", "homeplug_av.tone_map_tx_cnf",
7589
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
7590
15
        },
7591
15
        { &hf_homeplug_av_tone_map_tx_cnf_status,
7592
15
          { "Status", "homeplug_av.tone_map_tx_cnf.status",
7593
15
            FT_UINT16, BASE_HEX, VALS(homeplug_av_tone_map_status_vals), 0x0, NULL, HFILL }
7594
15
        },
7595
15
        { &hf_homeplug_av_tone_map_tx_cnf_len,
7596
15
          { "Length", "homeplug_av.tone_map_tx_cnf.len",
7597
15
            FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
7598
15
        },
7599
15
        { &hf_homeplug_av_tone_map_tx_cnf_mac,
7600
15
          { "Peer address", "homeplug_av.tone_map_tx_cnf.mac",
7601
15
            FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
7602
15
        },
7603
15
        { &hf_homeplug_av_tone_map_tx_cnf_slot,
7604
15
          { "Slot", "homeplug_av.tone_map_tx_cnf.slot",
7605
15
            FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
7606
15
        },
7607
15
        { &hf_homeplug_av_tone_map_tx_cnf_num_tms,
7608
15
          { "Number of Tone Maps in use", "homeplug_av.tone_map_tx_cnf.num_tms",
7609
15
            FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
7610
15
        },
7611
15
        { &hf_homeplug_av_tone_map_tx_cnf_num_act,
7612
15
          { "Tone map number of active carriers", "homeplug_av.tone_map_tx_cnf.num_act",
7613
15
            FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
7614
15
        },
7615
        /* Tone Map Rx Characteristics Confirmation */
7616
15
        { &hf_homeplug_av_tone_map_rx_cnf,
7617
15
          { "Tone Map Rx Characteristics Confirmation", "homeplug_av.tone_map_rx_cnf",
7618
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
7619
15
        },
7620
15
        { &hf_homeplug_av_tone_map_rx_cnf_status,
7621
15
          { "Status", "homeplug_av.tone_map_rx_cnf.status",
7622
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_tone_map_status_vals), 0x0, NULL, HFILL }
7623
15
        },
7624
15
        { &hf_homeplug_av_tone_map_rx_cnf_len,
7625
15
          { "Length", "homeplug_av.tone_map_rx_cnf.len",
7626
15
            FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
7627
15
        },
7628
15
        { &hf_homeplug_av_tone_map_rx_cnf_subver,
7629
15
          { "MME Subversion", "homeplug_av.tone_map_rx_cnf.mmesubversion",
7630
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
7631
15
        },
7632
15
        { &hf_homeplug_av_tone_map_rx_cnf_mac,
7633
15
          { "Peer address", "homeplug_av.tone_map_rx_cnf.mac",
7634
15
            FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
7635
15
        },
7636
15
        { &hf_homeplug_av_tone_map_rx_cnf_slot,
7637
15
          { "Slot", "homeplug_av.tone_map_rx_cnf.slot",
7638
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
7639
15
        },
7640
15
        { &hf_homeplug_av_tone_map_rx_cnf_coupling,
7641
15
          { "Coupling", "homeplug_av.tone_map_rx_cnf.coupling",
7642
15
            FT_UINT8, BASE_DEC, VALS(homeplug_av_coupling_vals), HOMEPLUG_AV_COUPLING_MASK, NULL, HFILL }
7643
15
        },
7644
15
        { &hf_homeplug_av_tone_map_rx_cnf_num_tms,
7645
15
          { "Number of Tone Maps in use", "homeplug_av.tone_map_rx_cnf.num_tms",
7646
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
7647
15
        },
7648
15
        { &hf_homeplug_av_tone_map_rx_cnf_num_act,
7649
15
          { "Tone map number of active carriers", "homeplug_av.tone_map_rx_cnf.num_act",
7650
15
            FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
7651
15
        },
7652
15
        { &hf_homeplug_av_tone_map_rx_cnf_agc,
7653
15
          { "Automatic Gain Control (AGC)", "homeplug_av.tone_map_rx_cnf.agc",
7654
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
7655
15
        },
7656
15
        { &hf_homeplug_av_tone_map_rx_cnf_gil,
7657
15
          { "Guard Interval Length (GIL)", "homeplug_av.tone_map_rx_cnf.gil",
7658
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
7659
15
        },
7660
        /* Tone Map Carrier informations */
7661
15
        { &hf_homeplug_av_tone_map_carriers,
7662
15
          { "Tone Map carriers", "homeplug_av.tone_map_cnf.carriers",
7663
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
7664
15
        },
7665
15
        { &hf_homeplug_av_tone_map_carrier,
7666
15
          { "Modulation per carrier", "homeplug_av.tone_map_cnf.carrier",
7667
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
7668
15
        },
7669
15
        { &hf_homeplug_av_tone_map_carrier_lo,
7670
15
          { "Modulation (Low carrier)", "homeplug_av.tone_map_cnf.carrier.lo",
7671
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_tone_map_vals), HOMEPLUG_AV_TONE_MAP_MASK, NULL, HFILL }
7672
15
        },
7673
15
        { &hf_homeplug_av_tone_map_carrier_hi,
7674
15
          { "Modulation (High carrier)", "homeplug_av.tone_map_cnf.carrier.hi",
7675
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_tone_map_vals), HOMEPLUG_AV_TONE_MAP_MASK << 4, NULL, HFILL }
7676
15
        },
7677
        /* CC_ASSOC.* */
7678
15
        { &hf_homeplug_av_cc_assoc_reqtype,
7679
15
          { "Request Type", "homeplug_av.cc_assoc.reqtype",
7680
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_cc_assoc_reqtype_vals), 0x0, NULL, HFILL }
7681
15
        },
7682
15
        { &hf_homeplug_av_cc_assoc_nid,
7683
15
          { "Network ID", "homeplug_av.cc_assoc.nid",
7684
15
            FT_BYTES, SEP_COLON, NULL, 0x0, NULL, HFILL }
7685
15
        },
7686
15
        { &hf_homeplug_av_cc_assoc_cco_cap,
7687
15
          { "CCo Capability", "homeplug_av.cc_assoc.cco_cap",
7688
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_avln_status_vals), HOMEPLUG_AV_AVLN_STATUS_MASK, NULL, HFILL }
7689
15
        },
7690
15
        { &hf_homeplug_av_cc_assoc_proxy_net_cap,
7691
15
          { "Proxy Network Capability", "homeplug_av.cc_assoc.proxy_cap",
7692
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_cc_assoc_proxy_net_cap_vals), 0x0, NULL, HFILL }
7693
15
        },
7694
15
        { &hf_homeplug_av_cc_assoc_result,
7695
15
          { "Result", "homeplug_av.cc_assoc.result",
7696
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_cc_assoc_result_vals), 0x0, NULL, HFILL }
7697
15
        },
7698
15
        { &hf_homeplug_av_cc_assoc_snid,
7699
15
          { "Short Network ID", "homeplug_av.cc_assoc.snid",
7700
15
            FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
7701
15
        },
7702
15
        { &hf_homeplug_av_cc_assoc_tei,
7703
15
          { "TEI", "homeplug_av.cc_assoc.tei",
7704
15
            FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
7705
15
        },
7706
15
        { &hf_homeplug_av_cc_assoc_lease_time ,
7707
15
          { "Lease time (min)", "homeplug_av.cc_assoc.lease_time",
7708
15
            FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
7709
15
        },
7710
        /* CM_UNASSOCIATED_STA_IND */
7711
15
        { &hf_homeplug_av_cm_unassoc_sta_nid,
7712
15
          { "Network ID", "homeplug_av.cm_unassoc_sta.nid",
7713
15
            FT_BYTES, SEP_COLON, NULL, 0x0, NULL, HFILL }
7714
15
        },
7715
15
        { &hf_homeplug_av_cm_unassoc_sta_cco_cap,
7716
15
          { "CCo Capability", "homeplug_av.cm_unassoc_sta.cco_cap",
7717
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_avln_status_vals), HOMEPLUG_AV_AVLN_STATUS_MASK, NULL, HFILL }
7718
15
        },
7719
        /* CC_SET_TEI_MAP_IND */
7720
15
        { &hf_homeplug_av_cc_set_tei_map_ind_mode,
7721
15
          { "Mode", "homeplug_av.cc_set_tei_map_ind.mode",
7722
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_cc_set_tei_map_ind_mode_vals), 0x0, NULL, HFILL }
7723
15
        },
7724
15
        { &hf_homeplug_av_cc_set_tei_map_ind_num,
7725
15
          { "Number of entries", "homeplug_av.cc_set_tei_map_ind.num",
7726
15
            FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL }
7727
15
        },
7728
15
        { &hf_homeplug_av_cc_set_tei_map_ind_tei,
7729
15
          { "TEI", "homeplug_av.cc_set_tei_map_ind.tei",
7730
15
            FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
7731
15
        },
7732
15
        { &hf_homeplug_av_cc_set_tei_map_ind_mac,
7733
15
          { "MAC Address", "homeplug_av.cc_set_tei_map_ind.mac",
7734
15
            FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
7735
15
        },
7736
15
        { &hf_homeplug_av_cc_set_tei_map_ind_status,
7737
15
          { "Status", "homeplug_av.cc_set_tei_map_ind.status",
7738
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_cc_set_tei_map_ind_status_vals), 0x0, NULL, HFILL }
7739
15
        },
7740
        /* HPGP */
7741
        /* CM_SLAC_PARM.* */
7742
15
        { &hf_homeplug_av_gp_cm_slac_parm_apptype,
7743
15
          { "Application type", "homeplug_av.gp.cm_slac_parm.apptype",
7744
15
            FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
7745
15
        },
7746
15
        { &hf_homeplug_av_gp_cm_slac_parm_sectype,
7747
15
          { "Security in M-Sound Message", "homeplug_av.gp.cm_slac_parm.sectype",
7748
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_gp_cm_slac_parm_sectype_vals), 0x0, NULL, HFILL }
7749
15
        },
7750
15
        { &hf_homeplug_av_gp_cm_slac_parm_runid,
7751
15
          { "Run ID", "homeplug_av.gp.cm_slac_parm.runid",
7752
15
            FT_BYTES, SEP_COLON, NULL, 0x0, NULL, HFILL }
7753
15
        },
7754
15
        { &hf_homeplug_av_gp_cm_slac_parm_cipher_size,
7755
15
          { "Cipher Suite Set Size", "homeplug_av.gp.cm_slac_parm.cipher_size",
7756
15
            FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
7757
15
        },
7758
15
        { &hf_homeplug_av_gp_cm_slac_parm_cipher,
7759
15
          { "Cipher Suite", "homeplug_av.gp.cm_slac_parm.cipher",
7760
15
            FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
7761
15
        },
7762
15
        { &hf_homeplug_av_gp_cm_slac_parm_sound_target,
7763
15
          { "M-Sound Target", "homeplug_av.gp.cm_slac_parm.sound_target",
7764
15
            FT_BYTES, SEP_COLON, NULL, 0x0, NULL, HFILL }
7765
15
        },
7766
15
        { &hf_homeplug_av_gp_cm_slac_parm_sound_count,
7767
15
          { "M-Sound Count", "homeplug_av.gp.cm_slac_parm.sound_count",
7768
15
            FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
7769
15
        },
7770
15
        { &hf_homeplug_av_gp_cm_slac_parm_time_out,
7771
15
          { "M-Sound MPDU Time Out (N*100 msec)", "homeplug_av.gp.cm_slac_parm.time_out",
7772
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
7773
15
        },
7774
15
        { &hf_homeplug_av_gp_cm_slac_parm_resptype,
7775
15
          { "Response type", "homeplug_av.gp.cm_slac_parm.resptype",
7776
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_gp_cm_slac_parm_resptype_vals), 0x0, NULL, HFILL }
7777
15
        },
7778
15
        { &hf_homeplug_av_gp_cm_slac_parm_forwarding_sta,
7779
15
          { "Forwarded to MAC", "homeplug_av.gp.cm_slac_parm.forwarding_sta",
7780
15
            FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
7781
15
        },
7782
        /* CM_ATTEN_PROFILE_IND */
7783
15
        { &hf_homeplug_av_gp_cm_atten_profile_ind_pev_mac,
7784
15
          { "PEV MAC Address", "homeplug_av.gp.cm_atten_profile_ind.pev_mac",
7785
15
            FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
7786
15
        },
7787
15
        { &hf_homeplug_av_gp_cm_atten_profile_ind_num_groups,
7788
15
          { "Number of Groups", "homeplug_av.gp.cm_atten_profile_ind.groups_count",
7789
15
            FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
7790
15
        },
7791
15
        { &hf_homeplug_av_gp_cm_atten_profile_ind_aag,
7792
15
          { "Average Attenuation of group (dB)", "homeplug_av.gp.cm_atten_profile_ind.aag",
7793
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
7794
15
        },
7795
        /* CM_ATTEN_CHAR */
7796
15
        { &hf_homeplug_av_gp_cm_atten_char_result,
7797
15
          { "Result", "homeplug_av.gp.cm_atten_char.result",
7798
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_generic_status_vals), 0x0, NULL, HFILL }
7799
15
        },
7800
15
        { &hf_homeplug_av_gp_cm_atten_char_apptype,
7801
15
          { "Application type", "homeplug_av.gp.cm_atten_char.apptype",
7802
15
            FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
7803
15
        },
7804
15
        { &hf_homeplug_av_gp_cm_atten_char_sectype,
7805
15
          { "Security", "homeplug_av.gp.cm_atten_char.sectype",
7806
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_gp_cm_slac_parm_sectype_vals), 0x0, NULL, HFILL }
7807
15
        },
7808
15
        { &hf_homeplug_av_gp_cm_atten_char_source_mac,
7809
15
          { "Source MAC", "homeplug_av.gp.cm_atten_char.source_mac",
7810
15
            FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
7811
15
        },
7812
15
        { &hf_homeplug_av_gp_cm_atten_char_runid,
7813
15
          { "Run ID", "homeplug_av.gp.cm_atten_char.runid",
7814
15
            FT_BYTES, SEP_COLON, NULL, 0x0, NULL, HFILL }
7815
15
        },
7816
15
        { &hf_homeplug_av_gp_cm_atten_char_source_id,
7817
15
          { "Source ID", "homeplug_av.gp.cm_atten_char.source_id",
7818
15
            FT_BYTES, SEP_COLON, NULL, 0x0, NULL, HFILL }
7819
15
        },
7820
15
        { &hf_homeplug_av_gp_cm_atten_char_resp_id,
7821
15
          { "Response ID", "homeplug_av.gp.cm_atten_char.resp_id",
7822
15
            FT_BYTES, SEP_COLON, NULL, 0x0, NULL, HFILL }
7823
15
        },
7824
15
        { &hf_homeplug_av_gp_cm_atten_char_numgroups,
7825
15
          { "Number of Groups", "homeplug_av.gp.cm_atten_char.groups_count",
7826
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
7827
15
        },
7828
15
        { &hf_homeplug_av_gp_cm_atten_char_numsounds,
7829
15
          { "Number of Sounds", "homeplug_av.gp.cm_atten_char.sounds_count",
7830
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
7831
15
        },
7832
15
        { &hf_homeplug_av_gp_cm_atten_char_aag,
7833
15
          { "Average Attenuation of group (dB)", "homeplug_av.gp.cm_atten_char.aag",
7834
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
7835
15
        },
7836
15
        { &hf_homeplug_av_gp_cm_atten_char_profile,
7837
15
          { "Signal level attenuation profile", "homeplug_av.gp.cm_atten_char.profile",
7838
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
7839
15
        },
7840
15
        { &hf_homeplug_av_gp_cm_atten_char_cms_data,
7841
15
          { "CMS Data", "homeplug_av.gp.cm_atten_char.cms_data",
7842
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
7843
15
        },
7844
        /* CM_START_ATTEN_CHAR */
7845
15
        { &hf_homeplug_av_gp_cm_start_atten_char_time_out,
7846
15
          { "M-Sound MPDU Time Out (N*100 msec)", "homeplug_av.gp.cm_start_atten_char.time_out",
7847
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
7848
15
        },
7849
15
        { &hf_homeplug_av_gp_cm_start_atten_char_resptype,
7850
15
          { "Response type", "homeplug_av.gp.cm_start_atten_char.resptype",
7851
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_gp_cm_slac_parm_resptype_vals), 0x0, NULL, HFILL }
7852
15
        },
7853
15
        { &hf_homeplug_av_gp_cm_start_atten_char_forwarding_sta,
7854
15
          { "Forwarded to MAC", "homeplug_av.gp.cm_start_atten_char.sound_forwarding_sta",
7855
15
            FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
7856
15
        },
7857
15
        { &hf_homeplug_av_gp_cm_start_atten_char_runid,
7858
15
          { "Run ID", "homeplug_av.gp.cm_start_atten_char.runid",
7859
15
            FT_BYTES, SEP_COLON, NULL, 0x0, NULL, HFILL }
7860
15
        },
7861
15
        { &hf_homeplug_av_gp_cm_start_atten_char_numsounds,
7862
15
          { "Number of Sounds", "homeplug_av.gp.cm_start_atten_char.sounds_count",
7863
15
            FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
7864
15
        },
7865
        /* CM_MNBC_SOUND */
7866
15
        { &hf_homeplug_av_gp_cm_mnbc_sound_apptype,
7867
15
          { "Application type", "homeplug_av.gp.cm_mnbc_sound.apptype",
7868
15
            FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
7869
15
        },
7870
15
        { &hf_homeplug_av_gp_cm_mnbc_sound_sectype,
7871
15
          { "Security", "homeplug_av.gp.cm_mnbc_sound.sectype",
7872
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_gp_cm_slac_parm_sectype_vals), 0x0, NULL, HFILL }
7873
15
        },
7874
15
        { &hf_homeplug_av_gp_cm_mnbc_sound_sender_id,
7875
15
          { "Sender ID", "homeplug_av.gp.cm_mnbc_sound.sender_id",
7876
15
            FT_BYTES, SEP_COLON, NULL, 0x0, NULL, HFILL }
7877
15
        },
7878
15
        { &hf_homeplug_av_gp_cm_mnbc_sound_countdown,
7879
15
          { "Remaining Number of Sounds", "homeplug_av.gp.cm_mnbc_sound.countdown",
7880
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
7881
15
        },
7882
15
        { &hf_homeplug_av_gp_cm_mnbc_sound_runid,
7883
15
          { "Run ID", "homeplug_av.gp.cm_mnbc_sound.runid",
7884
15
            FT_BYTES, SEP_COLON, NULL, 0x0, NULL, HFILL }
7885
15
        },
7886
15
        { &hf_homeplug_av_gp_cm_mnbc_sound_rsvd,
7887
15
          { "Reserved", "homeplug_av.gp.cm_mnbc_sound.reserved",
7888
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
7889
15
        },
7890
15
        { &hf_homeplug_av_gp_cm_mnbc_sound_rnd,
7891
15
          { "Random number", "homeplug_av.gp.cm_mnbc_sound.rnd",
7892
15
            FT_BYTES, SEP_SPACE, NULL, 0x0, NULL, HFILL }
7893
15
        },
7894
        /* CM_VALIDATE */
7895
15
        { &hf_homeplug_av_gp_cm_validate_signaltype,
7896
15
          { "Signal type", "homeplug_av.gp.cm_validate.signaltype",
7897
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_gp_cm_validate_signaltype_vals), 0x0, NULL, HFILL }
7898
15
        },
7899
15
        { &hf_homeplug_av_gp_cm_validate_timer,
7900
15
          { "Timer (N*100 ms)", "homeplug_av.gp.cm_validate.timer",
7901
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
7902
15
        },
7903
15
        { &hf_homeplug_av_gp_cm_validate_result,
7904
15
          { "Result", "homeplug_av.gp.cm_validate.result",
7905
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_gp_cm_validate_result_vals), 0x0, NULL, HFILL }
7906
15
        },
7907
15
        { &hf_homeplug_av_gp_cm_validate_togglenum,
7908
15
          { "Number of detected toggles", "homeplug_av.gp.cm_validate.togglenum",
7909
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
7910
15
        },
7911
        /* CM_SLAC_MATCH */
7912
15
        { &hf_homeplug_av_gp_cm_slac_match_apptype,
7913
15
          { "Application type", "homeplug_av.gp.cm_slac_match.apptype",
7914
15
            FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
7915
15
        },
7916
15
        { &hf_homeplug_av_gp_cm_slac_match_sectype,
7917
15
          { "Security", "homeplug_av.gp.cm_slac_match.sectype",
7918
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_gp_cm_slac_parm_sectype_vals), 0x0, NULL, HFILL }
7919
15
        },
7920
15
        { &hf_homeplug_av_gp_cm_slac_match_length,
7921
15
          { "Length", "homeplug_av.gp.cm_slac_match.length",
7922
15
            FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
7923
15
        },
7924
15
        { &hf_homeplug_av_gp_cm_slac_match_pev_id,
7925
15
          { "PEV ID", "homeplug_av.gp.cm_slac_match.pev_id",
7926
15
            FT_BYTES, SEP_COLON, NULL, 0x0, NULL, HFILL }
7927
15
        },
7928
15
        { &hf_homeplug_av_gp_cm_slac_match_pev_mac,
7929
15
          { "PEV MAC", "homeplug_av.gp.cm_slac_match.pev_mac",
7930
15
            FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
7931
15
        },
7932
15
        { &hf_homeplug_av_gp_cm_slac_match_evse_id,
7933
15
          { "EVSE ID", "homeplug_av.gp.cm_slac_match.evse_id",
7934
15
            FT_BYTES, SEP_COLON, NULL, 0x0, NULL, HFILL }
7935
15
        },
7936
15
        { &hf_homeplug_av_gp_cm_slac_match_evse_mac,
7937
15
          { "EVSE MAC", "homeplug_av.gp.cm_slac_match.evse_mac",
7938
15
            FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
7939
15
        },
7940
15
        { &hf_homeplug_av_gp_cm_slac_match_runid,
7941
15
          { "Run ID", "homeplug_av.gp.cm_slac_match.runid",
7942
15
            FT_BYTES, SEP_COLON, NULL, 0x0, NULL, HFILL }
7943
15
        },
7944
15
        { &hf_homeplug_av_gp_cm_slac_match_rsvd,
7945
15
          { "Reserved", "homeplug_av.gp.cm_slac_match.rsvd",
7946
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
7947
15
        },
7948
15
        { &hf_homeplug_av_gp_cm_slac_match_nid,
7949
15
          { "Network ID", "homeplug_av.gp.cm_slac_match.nid",
7950
15
            FT_BYTES, SEP_COLON, NULL, 0x0, NULL, HFILL }
7951
15
        },
7952
15
        { &hf_homeplug_av_gp_cm_slac_match_nmk,
7953
15
          { "Network Membership Key (NMK)", "homeplug_av.gp.cm_slac_match.nmk",
7954
15
            FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }
7955
15
        },
7956
        /* CM_SLAC_USER_DATA */
7957
15
        { &hf_homeplug_av_gp_cm_slac_user_data_broadcast_tlv_type,
7958
15
          { "Broadcast TLV", "homeplug_av.gp.cm_slac_user_data.broadcast",
7959
15
            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 }
7960
15
        },
7961
15
        { &hf_homeplug_av_gp_cm_slac_user_data_tlv,
7962
15
          { "TLV", "homeplug_av.gp.cm_slac_user_data.tlv",
7963
15
            FT_UINT16, BASE_HEX, NULL, HOMEPLUG_AV_GP_CM_SLAC_USER_DATA_TLV_TYPE_MASK, NULL, HFILL }
7964
15
        },
7965
15
        { &hf_homeplug_av_gp_cm_slac_user_data_tlv_type,
7966
15
          { "Type", "homeplug_av.gp.cm_slac_user_data.tlv.type",
7967
15
            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 }
7968
15
        },
7969
15
        { &hf_homeplug_av_gp_cm_slac_user_data_tlv_length,
7970
15
          { "Length", "homeplug_av.gp.cm_slac_user_data.tlv.length",
7971
15
            FT_UINT16, BASE_HEX, NULL, HOMEPLUG_AV_GP_CM_SLAC_USER_DATA_TLV_LENGTH_MASK, NULL, HFILL }
7972
15
        },
7973
15
        { &hf_homeplug_av_gp_cm_slac_user_data_tlv_str_bytes,
7974
15
          { "Data", "homeplug_av.gp.cm_slac_user_data.tlv.str",
7975
15
            FT_BYTES, SEP_SPACE, NULL, 0x0, NULL, HFILL }
7976
15
        },
7977
15
        { &hf_homeplug_av_gp_cm_slac_user_data_tlv_oui,
7978
15
          { "OUI", "homeplug_av.gp.cm_slac_user_data.tlv.oui",
7979
15
            FT_UINT24, BASE_HEX, VALS(homeplug_av_vendors_oui_vals), 0x0, NULL, HFILL }
7980
15
        },
7981
15
        { &hf_homeplug_av_gp_cm_slac_user_data_tlv_subtype,
7982
15
          { "Subtype", "homeplug_av.gp.cm_slac_user_data.tlv.subtype",
7983
15
            FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
7984
15
        },
7985
15
        { &hf_homeplug_av_gp_cm_slac_user_data_tlv_info_str,
7986
15
          { "Data", "homeplug_av.gp.cm_slac_user_data.tlv.info_str",
7987
15
            FT_BYTES, SEP_SPACE, NULL, 0x0, NULL, HFILL }
7988
15
        },
7989
        /* ST/IoTecha specific fields */
7990
15
        { &hf_homeplug_av_st_iotecha_header_rsvd,
7991
15
          { "Reserved", "homeplug_av.st_iotecha.rsvd",
7992
15
            FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }
7993
15
        },
7994
15
        { &hf_homeplug_av_st_iotecha_header_mmever,
7995
15
          { "MME version", "homeplug_av.st_iotecha.mmever",
7996
15
            FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
7997
15
        },
7998
15
        { &hf_homeplug_av_st_iotecha_header_mver,
7999
15
          { "Message version", "homeplug_av.st_iotecha.mver",
8000
15
            FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
8001
15
        },
8002
15
        { &hf_homeplug_av_st_iotecha_auth_nmk,
8003
15
          { "NMK", "homeplug_av.st_iotecha.auth.nmk",
8004
15
            FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }
8005
15
        },
8006
15
        { &hf_homeplug_av_st_iotecha_status_byte,
8007
15
          { "Status", "homeplug_av.st_iotecha.auth.status",
8008
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_generic_status_vals), 0x0, NULL, HFILL }
8009
15
        },
8010
15
        { &hf_homeplug_av_st_iotecha_linkstatus_status,
8011
15
          { "Link status", "homeplug_av.st_iotecha.linkstatus.status",
8012
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_st_iotecha_linkstatus_status_vals), 0x0, NULL, HFILL }
8013
15
        },
8014
15
        { &hf_homeplug_av_st_iotecha_linkstatus_devmode,
8015
15
          { "DevMode", "homeplug_av.st_iotecha.linkstatus.devmode",
8016
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_st_iotecha_linkstatus_devmode_vals), 0x0, NULL, HFILL }
8017
15
        },
8018
15
        { &hf_homeplug_av_st_iotecha_stp_discover_tlv,
8019
15
          { "ST/IoTecha TLV", "homeplug_av.st_iotecha.stp_discover.tlv",
8020
15
            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 }
8021
15
        },
8022
15
        { &hf_homeplug_av_st_iotecha_stp_discover_tlv_type,
8023
15
          { "Type", "homeplug_av.st_iotecha.stp_discover.tlv.type",
8024
15
            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 }
8025
15
        },
8026
15
        { &hf_homeplug_av_st_iotecha_stp_discover_tlv_length,
8027
15
          { "Length", "homeplug_av.st_iotecha.stp_discover.tlv.length",
8028
15
            FT_UINT16, BASE_DEC, NULL, HOMEPLUG_AV_ST_IOTECHA_STP_DISCOVER_TLV_LENGTH_MASK, NULL, HFILL }
8029
15
        },
8030
15
        { &hf_homeplug_av_st_iotecha_stp_discover_tlv_value_bytes,
8031
15
          { "Value", "homeplug_av.st_iotecha.stp_discover.tlv.value",
8032
15
            FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }
8033
15
        },
8034
15
        { &hf_homeplug_av_st_iotecha_stp_discover_tlv_value_string,
8035
15
          { "Value", "homeplug_av.st_iotecha.stp_discover.tlv.value_string",
8036
15
            FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
8037
15
        },
8038
15
        { &hf_homeplug_av_st_iotecha_gain_ask,
8039
15
          { "Requested Max Gain", "homeplug_av.st_iotecha.gainmax.ask",
8040
15
            FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
8041
15
        },
8042
15
        { &hf_homeplug_av_st_iotecha_gain_new,
8043
15
          { "New (Current) Max Gain", "homeplug_av.st_iotecha.gainmax.new",
8044
15
            FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
8045
15
        },
8046
15
        { &hf_homeplug_av_st_iotecha_gain_prev,
8047
15
          { "Previous Max Gain", "homeplug_av.st_iotecha.gainmax.prev",
8048
15
            FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
8049
15
        },
8050
15
        { &hf_homeplug_av_st_iotecha_tei_count,
8051
15
          { "Count of TEI", "homeplug_av.st_iotecha.tei.count",
8052
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
8053
15
        },
8054
15
        { &hf_homeplug_av_st_iotecha_tei,
8055
15
          { "TEI", "homeplug_av.st_iotecha.tei",
8056
15
            FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
8057
15
        },
8058
15
        { &hf_homeplug_av_st_iotecha_tei_snap_addr_count,
8059
15
          { "Number of remote address entities", "homeplug_av.st_iotecha.tei.snapshot.count",
8060
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
8061
15
        },
8062
15
        { &hf_homeplug_av_st_iotecha_tei_snap_tei,
8063
15
          { "Associated TEI", "homeplug_av.st_iotecha.tei.snapshot.tei",
8064
15
            FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
8065
15
        },
8066
15
        { &hf_homeplug_av_st_iotecha_mac_address,
8067
15
          { "MAC Address", "homeplug_av.st_iotecha.macaddress",
8068
15
            FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
8069
15
        },
8070
15
        { &hf_homeplug_av_st_iotecha_tei_snap_mac_address_flag,
8071
15
          { "Flags", "homeplug_av.st_iotecha.tei.snapshot.flags",
8072
15
            FT_UINT16, BASE_HEX, VALS(homeplug_av_st_iotecha_mac_address_flag_vals), 0x0F, NULL, HFILL }
8073
15
        },
8074
15
        { &hf_homeplug_av_st_iotecha_bss_list_count,
8075
15
          { "BSS Entries Count", "homeplug_av.st_iotecha.bss.count",
8076
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
8077
15
        },
8078
15
        { &hf_homeplug_av_st_iotecha_bss_entry,
8079
15
          { "BSS Entry", "homeplug_av.st_iotecha.bss.entry",
8080
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
8081
15
        },
8082
15
        { &hf_homeplug_av_st_iotecha_bss_type,
8083
15
          { "Type", "homeplug_av.st_iotecha.bss.entry.type",
8084
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_st_iotecha_stp_get_bss_tlv_type_vals), 0x0, NULL, HFILL }
8085
15
        },
8086
15
        { &hf_homeplug_av_st_iotecha_bss_value_bytes,
8087
15
          { "Value", "homeplug_av.st_iotecha.bss.entry.value",
8088
15
            FT_BYTES, SEP_COLON | BASE_ALLOW_ZERO, NULL, 0x0, NULL, HFILL }
8089
15
        },
8090
15
        { &hf_homeplug_av_st_iotecha_chanqual_req_type,
8091
15
          { "Request Type", "homeplug_av.st_iotecha.chanqual.reqtype",
8092
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_st_iotecha_chanqual_reqtype_vals), 0x0, NULL, HFILL }
8093
15
        },
8094
15
        { &hf_homeplug_av_st_iotecha_chanqual_substatus,
8095
15
          { "Subscription Status", "homeplug_av.st_iotecha.chanqual.substatus",
8096
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_st_iotecha_chanqual_substatus_vals), 0x0, NULL, HFILL }
8097
15
        },
8098
15
        { &hf_homeplug_av_st_iotecha_chanqual_mac_local,
8099
15
          { "MAC of local node", "homeplug_av.st_iotecha.chanqual.mac.local",
8100
15
            FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
8101
15
        },
8102
15
        { &hf_homeplug_av_st_iotecha_chanqual_mac_remote,
8103
15
          { "MAC of remote node", "homeplug_av.st_iotecha.chanqual.mac.remote",
8104
15
            FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
8105
15
        },
8106
15
        { &hf_homeplug_av_st_iotecha_chanqual_source,
8107
15
          { "Source of this report", "homeplug_av.st_iotecha.chanqual.source",
8108
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_st_iotecha_chanqual_tei_source_vals), 0x0, NULL, HFILL }
8109
15
        },
8110
15
        { &hf_homeplug_av_st_iotecha_chanqual_response_type,
8111
15
          { "Response Type", "homeplug_av.st_iotecha.chanqual.responsetype",
8112
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_st_iotecha_chanqual_responsetype_vals), 0x0, NULL, HFILL }
8113
15
        },
8114
15
        { &hf_homeplug_av_st_iotecha_chanqual_tmi_count,
8115
15
          { "Size of TMI List", "homeplug_av.st_iotecha.chanqual.tmi.count",
8116
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
8117
15
        },
8118
15
        { &hf_homeplug_av_st_iotecha_chanqual_tmi,
8119
15
          { "TMI List", "homeplug_av.st_iotecha.chanqual.chanqual.tmi",
8120
15
            FT_BYTES, SEP_SPACE, NULL, 0x0, NULL, HFILL }
8121
15
        },
8122
15
        { &hf_homeplug_av_st_iotecha_chanqual_int,
8123
15
          { "Intervals List", "homeplug_av.st_iotecha.int",
8124
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
8125
15
        },
8126
15
        { &hf_homeplug_av_st_iotecha_chanqual_int_count,
8127
15
          { "Size of Interval List", "homeplug_av.st_iotecha.chanqual.int.count",
8128
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
8129
15
        },
8130
15
        { &hf_homeplug_av_st_iotecha_chanqual_int_et,
8131
15
          { "End Time of interval", "homeplug_av.st_iotecha.chanqual.int.et",
8132
15
            FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
8133
15
        },
8134
15
        { &hf_homeplug_av_st_iotecha_chanqual_int_tmi,
8135
15
          { "Interval", "homeplug_av.st_iotecha.chanqual.int.tmi",
8136
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_st_iotecha_chanqual_tmi_vals), 0x0, NULL, HFILL }
8137
15
        },
8138
15
        { &hf_homeplug_av_st_iotecha_chanqual_tmi_attached,
8139
15
          { "TMI of the attached Tone Map", "homeplug_av.st_iotecha.chanqual.tmi_attached",
8140
15
            FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
8141
15
        },
8142
15
        { &hf_homeplug_av_st_iotecha_chanqual_fec_type,
8143
15
          { "FEC Type/Code Rate", "homeplug_av.st_iotecha.chanqual.fec",
8144
15
            FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
8145
15
        },
8146
15
        { &hf_homeplug_av_st_iotecha_chanqual_cbld,
8147
15
          { "Carrier Bid Loading Data Nibbles", "homeplug_av.st_iotecha.chanqual.cbld",
8148
15
            FT_NONE, BASE_NONE, NULL, 0x0, NULL, HFILL }
8149
15
        },
8150
15
        { &hf_homeplug_av_st_iotecha_chanqual_cbld_data_low,
8151
15
          { "CBLD Low", "homeplug_av.st_iotecha.chanqual.cbld.data.low",
8152
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_st_iotecha_chanqual_cbld_data_vals), HOMEPLUG_AV_ST_IOTECHA_CHANQUAL_CBLD_DATA_MASK_LOW, NULL, HFILL }
8153
15
        },
8154
15
        { &hf_homeplug_av_st_iotecha_chanqual_cbld_data_high,
8155
15
          { "CBLD High", "homeplug_av.st_iotecha.chanqual.cbld.data.high",
8156
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_st_iotecha_chanqual_cbld_data_vals), HOMEPLUG_AV_ST_IOTECHA_CHANQUAL_CBLD_DATA_MASK_HIGH, NULL, HFILL }
8157
15
        },
8158
15
        { &hf_homeplug_av_st_iotecha_mfct_crc,
8159
15
          { "CRC plus last CRC", "homeplug_av.st_iotecha.mfct.crc",
8160
15
            FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
8161
15
        },
8162
15
        { &hf_homeplug_av_st_iotecha_mfct_total_length,
8163
15
          { "Total length", "homeplug_av.st_iotecha.mfct.total_length",
8164
15
            FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
8165
15
        },
8166
15
        { &hf_homeplug_av_st_iotecha_mfct_offset,
8167
15
          { "Offset", "homeplug_av.st_iotecha.mfct.offset",
8168
15
            FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
8169
15
        },
8170
15
        { &hf_homeplug_av_st_iotecha_mfct_length,
8171
15
          { "Length", "homeplug_av.st_iotecha.mfct.length",
8172
15
            FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
8173
15
        },
8174
15
        { &hf_homeplug_av_st_iotecha_mfct_data,
8175
15
          { "Update Data", "homeplug_av.st_iotecha.mfct.data",
8176
15
            FT_BYTES, SEP_SPACE, NULL, 0x0, NULL, HFILL }
8177
15
        },
8178
15
        { &hf_homeplug_av_st_iotecha_mfct_timeout,
8179
15
          { "Time duration before abort", "homeplug_av.st_iotecha.mfct.timeout",
8180
15
            FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
8181
15
        },
8182
15
        { &hf_homeplug_av_st_iotecha_mfct_request_type,
8183
15
          { "Request Type", "homeplug_av.st_iotecha.mfct.request_type",
8184
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_st_iotecha_mfct_request_type_vals), 0x0, NULL, HFILL }
8185
15
        },
8186
15
        { &hf_homeplug_av_st_iotecha_mfct_result,
8187
15
          { "Result", "homeplug_av.st_iotecha.mfct.result",
8188
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_st_iotecha_mfct_result_vals), 0x0, NULL, HFILL }
8189
15
        },
8190
15
        { &hf_homeplug_av_st_iotecha_mfct_reboot,
8191
15
          { "Reboot when complete", "homeplug_av.st_iotecha.mfct.reboot",
8192
15
            FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }
8193
15
        },
8194
15
        { &hf_homeplug_av_st_iotecha_mfct_name,
8195
15
          { "Parameter name", "homeplug_av.st_iotecha.mfct.name",
8196
15
            FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
8197
15
        },
8198
15
        { &hf_homeplug_av_st_iotecha_mfct_value,
8199
15
          { "Value", "homeplug_av.st_iotecha.mfct.value",
8200
15
            FT_BYTES, SEP_SPACE, NULL, 0x0, NULL, HFILL }
8201
15
        },
8202
15
        { &hf_homeplug_av_st_iotecha_mfct_item_offset,
8203
15
          { "Offset", "homeplug_av.st_iotecha.mfct.item.offset",
8204
15
            FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
8205
15
        },
8206
15
        { &hf_homeplug_av_st_iotecha_mfct_item_total_length,
8207
15
          { "Total length", "homeplug_av.st_iotecha.mfct.item.total_length",
8208
15
            FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
8209
15
        },
8210
15
        { &hf_homeplug_av_st_iotecha_stp_fup_mac_da,
8211
15
          { "MAC DA", "homeplug_av.st_iotecha.stp_fup.mac_da",
8212
15
            FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
8213
15
        },
8214
15
        { &hf_homeplug_av_st_iotecha_stp_fup_mac_sa,
8215
15
          { "MAC SA", "homeplug_av.st_iotecha.stp_fup.mac_sa",
8216
15
            FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
8217
15
        },
8218
15
        { &hf_homeplug_av_st_iotecha_stp_fup_mtype,
8219
15
          { "Message Type", "homeplug_av.st_iotecha.stp_fup.mtype",
8220
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_st_iotecha_stp_fwup_mtype_vals), 0x0, NULL, HFILL }
8221
15
        },
8222
15
        { &hf_homeplug_av_st_iotecha_cpstate_state,
8223
15
          { "CP State", "homeplug_av.st_iotecha.cpstate.state",
8224
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_st_iotecha_stp_cpstate_state_vals), 0x0, NULL, HFILL }
8225
15
        },
8226
15
        { &hf_homeplug_av_st_iotecha_cpstate_pwm_duty,
8227
15
          { "PWM Duty Cycle", "homeplug_av.st_iotecha.cpstate.pwm_duty",
8228
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
8229
15
        },
8230
15
        { &hf_homeplug_av_st_iotecha_cpstate_pwm_freq,
8231
15
          { "PWM Frequency", "homeplug_av.st_iotecha.cpstate.pwm_freq",
8232
15
            FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
8233
15
        },
8234
15
        { &hf_homeplug_av_st_iotecha_cpstate_voltage,
8235
15
          { "CP Voltage", "homeplug_av.st_iotecha.cpstate.cp_voltage",
8236
15
            FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
8237
15
        },
8238
15
        { &hf_homeplug_av_st_iotecha_cpstate_adc_bitmask,
8239
15
          { "ADC Channels", "homeplug_av.st_iotecha.cpstate.adc_bitmask",
8240
15
            FT_UINT8, BASE_CUSTOM, CF_FUNC(adc_bitmask_base), 0x0, NULL, HFILL }
8241
15
        },
8242
15
        { &hf_homeplug_av_st_iotecha_cpstate_adc_voltage_1,
8243
15
          { "ADC Channel 1 (mV)", "homeplug_av.st_iotecha.cpstate.adc_channel_1",
8244
15
            FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
8245
15
        },
8246
15
        { &hf_homeplug_av_st_iotecha_cpstate_adc_voltage_2,
8247
15
          { "ADC Channel 2 (mV)", "homeplug_av.st_iotecha.cpstate.adc_channel_2",
8248
15
            FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
8249
15
        },
8250
15
        { &hf_homeplug_av_st_iotecha_cpstate_adc_voltage_3,
8251
15
          { "ADC Channel 3 (mV)", "homeplug_av.st_iotecha.cpstate.adc_channel_3",
8252
15
            FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
8253
15
        },
8254
15
        { &hf_homeplug_av_st_iotecha_user_message_info,
8255
15
          { "Message", "homeplug_av.st_iotecha.user_message",
8256
15
            FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
8257
15
        },
8258
15
        { &hf_homeplug_av_st_iotecha_user_message_details,
8259
15
          { "Details", "homeplug_av.st_iotecha.user_message_details",
8260
15
            FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
8261
15
        },
8262
15
        { &hf_homeplug_av_st_iotecha_test_type,
8263
15
          { "Test Type", "homeplug_av.st_iotecha.test_type",
8264
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_st_iotecha_test_type_vals), 0x0, NULL, HFILL }
8265
15
        },
8266
15
        { &hf_homeplug_av_st_iotecha_num_sound,
8267
15
          { "Number of soundings", "homeplug_av.st_iotecha.num_sound",
8268
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
8269
15
        },
8270
15
        { &hf_homeplug_av_st_iotecha_data_ind_addr,
8271
15
          { "MAC addr", "homeplug_av.st_iotecha.data_ind_addr",
8272
15
            FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
8273
15
        },
8274
15
        { &hf_homeplug_av_st_iotecha_agc_lock,
8275
15
          { "AgcLock", "homeplug_av.st_iotecha.agc_lock",
8276
15
            FT_UINT8, BASE_DEC, VALS(homeplug_av_st_iotecha_agc_lock_vals), 0x0, NULL, HFILL }
8277
15
        },
8278
15
        { &hf_homeplug_av_st_iotecha_db_agc_val,
8279
15
          { "DbAgcVal", "homeplug_av.st_iotecha.db_agc_val",
8280
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
8281
15
        },
8282
15
        { &hf_homeplug_av_st_iotecha_test_status,
8283
15
          { "Status", "homeplug_av.st_iotecha.test_status",
8284
15
            FT_UINT8, BASE_HEX, VALS(homeplug_av_st_iotecha_test_status_vals), 0x0, NULL, HFILL }
8285
15
        },
8286
15
        { &hf_homeplug_av_st_iotecha_suppress_data,
8287
15
          { "Suppress data", "homeplug_av.st_iotecha.suppress_data",
8288
15
            FT_UINT8, BASE_DEC, VALS(homeplug_av_st_iotecha_suppress_data_vals), 0x0, NULL, HFILL }
8289
15
        },
8290
15
        { &hf_homeplug_av_st_iotecha_sound_remain,
8291
15
          { "Counter of sound remain", "homeplug_av.st_iotecha.sound_remain",
8292
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
8293
15
        },
8294
15
        { &hf_homeplug_av_st_iotecha_ntb_time,
8295
15
          { "NTB time", "homeplug_av.st_iotecha.ntb_time",
8296
15
            FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
8297
15
        },
8298
15
        { &hf_homeplug_av_st_iotecha_rsvd1,
8299
15
          { "Reserved", "homeplug_av.st_iotecha.rsvd1",
8300
15
            FT_UINT24, BASE_DEC, NULL, 0x0, NULL, HFILL }
8301
15
        },
8302
15
        { &hf_homeplug_av_st_iotecha_rsvd2,
8303
15
          { "Reserved", "homeplug_av.st_iotecha.rsvd2",
8304
15
            FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
8305
15
        },
8306
15
        { &hf_homeplug_av_st_iotecha_num_segments,
8307
15
          { "Number of msg segments", "homeplug_av.st_iotecha.num_segments",
8308
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
8309
15
        },
8310
15
        { &hf_homeplug_av_st_iotecha_segment,
8311
15
          { "Index of curr segment", "homeplug_av.st_iotecha.segment",
8312
15
            FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
8313
15
        },
8314
15
        { &hf_homeplug_av_st_iotecha_num_chan,
8315
15
          { "Number of channels", "homeplug_av.st_iotecha.num_chan",
8316
15
            FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
8317
15
        },
8318
15
        { &hf_homeplug_av_st_iotecha_chan_start,
8319
15
          { "Carrier map index of ChanData", "homeplug_av.st_iotecha.chan_start",
8320
15
            FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
8321
15
        }
8322
        /* End of ST/IoTecha specific fields */
8323
15
    };
8324
8325
15
    static int *ett[] = {
8326
15
        &ett_homeplug_av,
8327
15
        &ett_homeplug_av_mmhdr,
8328
15
        &ett_homeplug_av_mmtype,
8329
15
        &ett_homeplug_av_fmi,
8330
15
        &ett_homeplug_av_vendor,
8331
15
        &ett_homeplug_av_public,
8332
8333
15
        &ett_homeplug_av_fc,
8334
15
        &ett_homeplug_av_sof,
8335
15
        &ett_homeplug_av_rtscts,
8336
15
        &ett_homeplug_av_sack,
8337
15
        &ett_homeplug_av_sound,
8338
15
        &ett_homeplug_av_rsof,
8339
15
        &ett_homeplug_av_bcn,
8340
15
        &ett_homeplug_av_bcn_payload,
8341
15
        &ett_homeplug_av_cc_disc_list_cnf,
8342
15
        &ett_homeplug_av_cc_sta_info,
8343
15
        &ett_homeplug_av_cc_net_info,
8344
15
        &ett_homeplug_av_cm_enc_pld_ind,
8345
15
        &ett_homeplug_av_cm_enc_pld_rsp,
8346
15
        &ett_homeplug_av_cm_set_key_req,
8347
15
        &ett_homeplug_av_cm_set_key_cnf,
8348
15
        &ett_homeplug_av_cm_get_key_req,
8349
15
        &ett_homeplug_av_cm_get_key_cnf,
8350
15
        &ett_homeplug_av_brg_infos_cnf,
8351
15
        &ett_homeplug_av_cm_nw_infos_cnf,
8352
15
        &ett_homeplug_av_nw_stats_cnf,
8353
8354
15
        &ett_homeplug_av_get_sw_cnf,
8355
15
        &ett_homeplug_av_wr_mem_req,
8356
15
        &ett_homeplug_av_wr_mem_cnf,
8357
15
        &ett_homeplug_av_rd_mem_req,
8358
15
        &ett_homeplug_av_st_mac_req,
8359
15
        &ett_homeplug_av_st_mac_cnf,
8360
15
        &ett_homeplug_av_rd_mem_cnf,
8361
15
        &ett_homeplug_av_get_nvm_cnf,
8362
15
        &ett_homeplug_av_rs_dev_cnf,
8363
15
        &ett_homeplug_av_wr_mod_req,
8364
15
        &ett_homeplug_av_wr_mod_cnf,
8365
15
        &ett_homeplug_av_wr_mod_ind,
8366
15
        &ett_homeplug_av_rd_mod_req,
8367
15
        &ett_homeplug_av_rd_mod_cnf,
8368
15
        &ett_homeplug_av_mod_nvm_req,
8369
15
        &ett_homeplug_av_mod_nvm_cnf,
8370
15
        &ett_homeplug_av_wd_rpt_req,
8371
15
        &ett_homeplug_av_wd_rpt_ind,
8372
15
        &ett_homeplug_av_lnk_stats_req,
8373
15
        &ett_homeplug_av_lnk_stats_cnf,
8374
15
        &ett_homeplug_av_lnk_stats_tx,
8375
15
        &ett_homeplug_av_lnk_stats_rx,
8376
15
        &ett_homeplug_av_lnk_stats_rx_inv,
8377
15
        &ett_homeplug_av_sniffer_req,
8378
15
        &ett_homeplug_av_sniffer_cnf,
8379
15
        &ett_homeplug_av_sniffer_ind,
8380
15
        &ett_homeplug_av_sniffer_ind_data,
8381
15
        &ett_homeplug_av_nw_info_cnf,
8382
15
        &ett_homeplug_av_nw_info_sta_info,
8383
15
        &ett_homeplug_av_nw_info_net_info,
8384
15
        &ett_homeplug_av_cp_rpt_req,
8385
15
        &ett_homeplug_av_cp_rpt_ind,
8386
15
        &ett_homeplug_av_fr_lbk_req,
8387
15
        &ett_homeplug_av_fr_lbk_cnf,
8388
15
        &ett_homeplug_av_lbk_stat_cnf,
8389
15
        &ett_homeplug_av_set_key_req,
8390
15
        &ett_homeplug_av_set_key_cnf,
8391
15
        &ett_homeplug_av_mfg_string_cnf,
8392
15
        &ett_homeplug_av_rd_cblock_cnf,
8393
15
        &ett_homeplug_av_cblock_hdr,
8394
15
        &ett_homeplug_av_cblock,
8395
15
        &ett_homeplug_av_set_sdram_req,
8396
15
        &ett_homeplug_av_set_sdram_cnf,
8397
15
        &ett_homeplug_av_host_action_ind,
8398
15
        &ett_homeplug_av_host_action_rsp,
8399
15
        &ett_homeplug_av_op_attr_req,
8400
15
        &ett_homeplug_av_op_attr_cnf,
8401
15
        &ett_homeplug_av_op_attr_data,
8402
15
        &ett_homeplug_av_enet_phy_req,
8403
15
        &ett_homeplug_av_enet_phy_cnf,
8404
15
        &ett_homeplug_av_tone_map_tx_req,
8405
15
        &ett_homeplug_av_tone_map_rx_req,
8406
15
        &ett_homeplug_av_tone_map_tx_cnf,
8407
15
        &ett_homeplug_av_tone_map_rx_cnf,
8408
15
        &ett_homeplug_av_tone_map_carriers,
8409
15
        &ett_homeplug_av_tone_map_carrier,
8410
        /* HPGP*/
8411
15
        &ett_homeplug_av_gp_cm_atten_char_profile,
8412
15
        &ett_homeplug_av_gp_cm_slac_user_data_tlv,
8413
        /* ST/IoTecha subtrees */
8414
15
        &ett_homeplug_av_st_iotecha_header,
8415
15
        &ett_homeplug_av_st_iotecha_type_length_value,
8416
15
        &ett_homeplug_av_st_iotecha_chanqual_int,
8417
15
        &ett_homeplug_av_st_iotecha_chanqual_cbld,
8418
15
        &ett_homeplug_av_st_iotecha_bss_entry
8419
15
    };
8420
8421
8422
15
    proto_homeplug_av = proto_register_protocol("HomePlug AV protocol", "HomePlug AV", "homeplug-av");
8423
8424
15
    proto_register_field_array(proto_homeplug_av, hf, array_length(hf));
8425
8426
15
    proto_register_subtree_array(ett, array_length(ett));
8427
8428
15
    homeplug_av_handle = register_dissector("homeplug-av", dissect_homeplug_av, proto_homeplug_av);
8429
15
}
8430
8431
void
8432
proto_reg_handoff_homeplug_av(void)
8433
15
{
8434
15
    dissector_add_uint("ethertype", ETHERTYPE_HOMEPLUG_AV, homeplug_av_handle);
8435
15
}
8436
8437
/*
8438
 * Editor modelines
8439
 *
8440
 * Local Variables:
8441
 * c-file-style: "bsd"
8442
 * c-basic-offset: 4
8443
 * tab-width: 8
8444
 * indent-tabs-mode: nil
8445
 * End:
8446
 *
8447
 * ex: set shiftwidth=4 tabstop=8 expandtab:
8448
 * :indentSize=4:tabSize=8:noTabs=true:
8449
 */