/src/wireshark/epan/dissectors/packet-zbncp.c
Line | Count | Source (jump to first uncovered line) |
1 | | /* packet-zbncp.c |
2 | | * Dissector routines for the ZBOSS Network Co-Processor (NCP) |
3 | | * Copyright 2021 DSR Corporation, http://dsr-wireless.com/ |
4 | | * |
5 | | * Wireshark - Network traffic analyzer |
6 | | * By Gerald Combs <gerald@wireshark.org> |
7 | | * Copyright 1998 Gerald Combs |
8 | | * |
9 | | * SPDX-License-Identifier: GPL-2.0-or-later |
10 | | */ |
11 | | |
12 | | #include <config.h> |
13 | | #include <epan/packet.h> |
14 | | #include <epan/conversation.h> |
15 | | #include <epan/tfs.h> |
16 | | #include <wiretap/wtap.h> |
17 | | #include <wsutil/array.h> |
18 | | |
19 | | #include "packet-ieee802154.h" |
20 | | #include "packet-zbncp.h" |
21 | | |
22 | | void proto_reg_handoff_zbncp(void); |
23 | | void proto_register_zbncp(void); |
24 | | extern void dissect_zbee_nwk_status_code(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned offset); |
25 | | extern void dissect_zbee_aps_status_code(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned offset); |
26 | | |
27 | 14 | #define ZBNCP_PROTOABBREV "zbncp" |
28 | | |
29 | 0 | #define ZBNCP_SIGN_FST_BYTE 0xDEU |
30 | 0 | #define ZBNCP_SIGN_SEC_BYTE 0xADU |
31 | | #define ZBNCP_HDR_SIZE 7 |
32 | | |
33 | 14 | #define ZBNCP_HDR_FLAGS_ISACK_MASK 0x01 |
34 | 14 | #define ZBNCP_HDR_FLAGS_RETRANS_MASK 0x02 |
35 | 14 | #define ZBNCP_HDR_FLAGS_PKT_SEQ_MASK 0x0C |
36 | 14 | #define ZBNCP_HDR_FLAGS_ACK_SEQ_MASK 0x30 |
37 | 14 | #define ZBNCP_HDR_FLAGS_ISFIRST_MASK 0x40 |
38 | 14 | #define ZBNCP_HDR_FLAGS_ISLAST_MASK 0x80 |
39 | | |
40 | 0 | #define ZBNCP_DUMP_INFO_SIGN "ZBNCP" |
41 | 0 | #define ZBNCP_DUMP_INFO_SIGN_SIZE (sizeof(ZBNCP_DUMP_INFO_SIGN) - 1) |
42 | 0 | #define ZBNCP_DUMP_INFO_PAYLOAD_SIZE 3 |
43 | 0 | #define ZBNCP_DUMP_INFO_NCP_TYPE 0x06U |
44 | 0 | #define ZBNCP_DUMP_INFO_SIZE (ZBNCP_DUMP_INFO_SIGN_SIZE + ZBNCP_DUMP_INFO_PAYLOAD_SIZE) |
45 | 14 | #define ZBNCP_DUMP_DIR_MASK 0x01U |
46 | 14 | #define ZBNCP_DUMP_HOST_INT_DUMP_MASK 0x02U |
47 | 14 | #define ZBNCP_DUMP_POTENTIAL_TX_RX_ERROR_MASK 0x04U |
48 | | |
49 | | /* Bit Masks for Configuration Parameters Field */ |
50 | 14 | #define CONF_PARAMS_RESERVED 0x07 |
51 | 14 | #define CONF_PARAMS_DIS_PANID_CHANGE 0x08 |
52 | 14 | #define CONF_PARAMS_DIS_CHAN_CHANGE 0x10 |
53 | 14 | #define CONF_PARAMS_LEAVE_REQ_ALLOW 0x20 |
54 | 14 | #define CONF_PARAMS_REQ_TCLK 0x40 |
55 | 14 | #define CONF_PARAMS_RESTRICT_MODE_EN 0x80 |
56 | | |
57 | | |
58 | | /* decryption helpers */ |
59 | | static unsigned dissect_zbncp_ll_hdr(tvbuff_t *, packet_info *, proto_tree *, unsigned, uint8_t *); |
60 | | static void dissect_zbncp_body(tvbuff_t *, packet_info *, proto_tree *, unsigned, uint16_t *); |
61 | | static void dissect_zbncp_high_level(tvbuff_t *, packet_info *, proto_tree *, unsigned, uint16_t *); |
62 | | static unsigned dissect_zbncp_high_level_hdr(tvbuff_t *, packet_info *, proto_tree *, unsigned, uint8_t *, uint16_t *); |
63 | | static void dissect_zbncp_high_level_body(tvbuff_t *, packet_info *, proto_tree *, unsigned, uint8_t, uint16_t); |
64 | | static void dissect_zbncp_fragmentation_body(tvbuff_t *, packet_info *, proto_tree *, unsigned); |
65 | | static unsigned dissect_zbncp_packet(tvbuff_t *, packet_info *, proto_tree *, unsigned); |
66 | | static unsigned dissect_zbncp_status(tvbuff_t *, packet_info *, proto_tree *, unsigned); |
67 | | |
68 | | static tvbuff_t *dissect_zbncp_dump_info(tvbuff_t *, packet_info *, proto_tree *); |
69 | | |
70 | | /*------------------------------------- |
71 | | * Dissector Function Prototypes |
72 | | *------------------------------------- |
73 | | */ |
74 | | /* Dissection Routines. */ |
75 | | |
76 | | /* Initialize Protocol and Registered fields */ |
77 | | |
78 | | /* ZBNCP hdr */ |
79 | | static int zbncp_frame = -1; |
80 | | static int proto_zbncp; |
81 | | |
82 | | static int hf_zbncp_hdr_sign; |
83 | | static int hf_zbncp_packet_len; |
84 | | static int hf_zbncp_hdr_type; |
85 | | static int hf_zbncp_hdr_flags; |
86 | | static int hf_zbncp_hdr_flags_isack; |
87 | | static int hf_zbncp_hdr_flags_retrans; |
88 | | static int hf_zbncp_hdr_flags_packetseq; |
89 | | static int hf_zbncp_hdr_flags_ackseq; |
90 | | static int hf_zbncp_hdr_flags_first_frag; |
91 | | static int hf_zbncp_hdr_flags_last_frag; |
92 | | static int hf_zbncp_hdr_crc8; |
93 | | |
94 | | static int hf_zbncp_body_data_crc16; |
95 | | static int hf_zbncp_data_hl_version; |
96 | | static int hf_zbncp_data_hl_packet_type; |
97 | | static int hf_zbncp_data_hl_call_id; |
98 | | static int hf_zbncp_data_hl_tsn; |
99 | | static int hf_zbncp_data_hl_status_cat; |
100 | | static int hf_zbncp_data_hl_status; |
101 | | static int hf_zbncp_data_hl_status_generic; |
102 | | static int hf_zbncp_data_hl_status_mac; |
103 | | static int hf_zbncp_data_hl_status_nwk; |
104 | | static int hf_zbncp_data_hl_status_cbke; |
105 | | static int hf_zbncp_data_fw_vers; |
106 | | static int hf_zbncp_data_stack_vers; |
107 | | static int hf_zbncp_data_proto_vers; |
108 | | static int hf_zbncp_data_reset_opt; |
109 | | static int hf_zbncp_data_zb_role; |
110 | | static int hf_zbncp_data_ch_list_len; |
111 | | static int hf_zbncp_data_page; |
112 | | static int hf_zbncp_data_ch_mask; |
113 | | static int hf_zbncp_data_channel; |
114 | | static int hf_zbncp_data_channel4; |
115 | | static int hf_zbncp_data_pan_id; |
116 | | static int hf_zbncp_data_mac_int_num; |
117 | | static int hf_zbncp_data_index; |
118 | | static int hf_zbncp_data_enable; |
119 | | static int hf_zbncp_data_bind_type; |
120 | | static int hf_zbncp_data_ieee_addr; |
121 | | static int hf_zbncp_data_ext_pan_id; |
122 | | static int hf_zbncp_data_coordinator_version; |
123 | | static int hf_zbncp_data_trust_center_addres; |
124 | | static int hf_zbncp_data_remote_ieee_addr; |
125 | | static int hf_zbncp_data_src_ieee_addr; |
126 | | static int hf_zbncp_data_dst_ieee_addr; |
127 | | static int hf_zbncp_data_partner_ieee_addr; |
128 | | static int hf_zbncp_data_trace_mask; |
129 | | static int hf_zbncp_data_trace_wireless_traf; |
130 | | static int hf_zbncp_data_trace_reserved; |
131 | | static int hf_zbncp_data_trace_ncp_ll_proto; |
132 | | static int hf_zbncp_data_trace_host_int_line; |
133 | | static int hf_zbncp_data_trace_sleep_awake; |
134 | | static int hf_zbncp_data_trace_input_output; |
135 | | static int hf_zbncp_data_trace_timestamp; |
136 | | static int hf_zbncp_data_trace; |
137 | | static int hf_zbncp_data_key_neg_method; |
138 | | static int hf_zbncp_data_psk_secrets; |
139 | | static int hf_zbncp_data_r22_join_usage; |
140 | | static int hf_zbncp_data_nwk_conf_preset; |
141 | | static int hf_zbncp_data_short_address; |
142 | | static int hf_zbncp_data_raw_data; |
143 | | static int hf_zbncp_data_conf_params; |
144 | | static int hf_zbncp_data_channel_page_count; |
145 | | static int hf_zbncp_data_config_mask; |
146 | | static int hf_zbncp_data_dest_short_address; |
147 | | static int hf_zbncp_data_current_parents_short_address; |
148 | | static int hf_zbncp_data_current_parents_lqi; |
149 | | static int hf_zbncp_data_potential_parent_count; |
150 | | static int hf_zbncp_data_classification_mask; |
151 | | static int hf_zbncp_data_total_beacons_surveyed; |
152 | | static int hf_zbncp_data_current_pan_id_beacons; |
153 | | static int hf_zbncp_data_current_nwk_potential_parents; |
154 | | static int hf_zbncp_data_other_zigbee_beacons; |
155 | | static int hf_zbncp_data_pan_id_conflict_tlv; |
156 | | static int hf_zbncp_data_eui64_count; |
157 | | static int hf_zbncp_data_eui64; |
158 | | static int hf_zbncp_data_target_ieee_addr; |
159 | | static int hf_zbncp_data_initial_join_auth; |
160 | | static int hf_zbncp_data_key_update_method; |
161 | | static int hf_zbncp_data_next_pan_id_change; |
162 | | static int hf_zbncp_data_next_channel_change; |
163 | | static int hf_zbncp_data_error_count; |
164 | | static int hf_zbncp_data_keepalive; |
165 | | static int hf_zbncp_data_rx_on_idle; |
166 | | static int hf_zbncp_data_res_tx_power; |
167 | | static int hf_zbncp_data_req_tx_power; |
168 | | static int hf_zbncp_data_joined; |
169 | | static int hf_zbncp_data_joined_bit; |
170 | | static int hf_zbncp_data_parent_bit; |
171 | | static int hf_zbncp_data_authenticated; |
172 | | static int hf_zbncp_data_timeout; |
173 | | static int hf_zbncp_data_keepalive_mode; |
174 | | static int hf_zbncp_force_route_record_sending; |
175 | | static int hf_zbncp_data_nwk_addr; |
176 | | static int hf_zbncp_data_nwk_parent_addr; |
177 | | static int hf_zbncp_data_src_nwk_addr; |
178 | | static int hf_zbncp_data_dst_nwk_addr; |
179 | | static int hf_zbncp_data_remote_nwk_addr; |
180 | | static int hf_zbncp_data_group_nwk_addr; |
181 | | static int hf_zbncp_data_src_mac_addr; |
182 | | static int hf_zbncp_data_dst_mac_addr; |
183 | | static int hf_zbncp_data_nwk_key; |
184 | | static int hf_zbncp_data_key_num; |
185 | | static int hf_zbncp_data_serial_num; |
186 | | static int hf_zbncp_data_size; |
187 | | static int hf_zbncp_data_vendor_data; |
188 | | static int hf_zbncp_data_dump_type; |
189 | | static int hf_zbncp_data_dump_text; |
190 | | static int hf_zbncp_data_dump_bin; |
191 | | static int hf_zbncp_data_parameter_id; |
192 | | static int hf_zbncp_data_value8_dec; |
193 | | static int hf_zbncp_data_value16_dec; |
194 | | static int hf_zbncp_data_aps_ack_to_non_sleepy; |
195 | | static int hf_zbncp_data_aps_ack_to_sleepy; |
196 | | static int hf_zbncp_data_min16; |
197 | | static int hf_zbncp_data_max16; |
198 | | static int hf_zbncp_data_default8_sign; |
199 | | static int hf_zbncp_data_current8_sign; |
200 | | static int hf_zbncp_data_is_concentrator; |
201 | | static int hf_zbncp_data_concentrator_radius; |
202 | | static int hf_zbncp_data_time16; |
203 | | static int hf_zbncp_data_lock_status; |
204 | | static int hf_zbncp_data_reset_source; |
205 | | static int hf_zbncp_nwk_leave_allowed; |
206 | | static int hf_zbncp_data_nvram_dataset_quantity; |
207 | | static int hf_zbncp_data_nvram_dataset_type; |
208 | | static int hf_zbncp_data_nvram_version; |
209 | | static int hf_zbncp_data_dataset_version; |
210 | | static int hf_zbncp_data_dataset_length; |
211 | | static int hf_zbncp_data_nvram_dataset_data; |
212 | | static int hf_zbncp_data_tc_policy_type; |
213 | | static int hf_zbncp_data_tc_policy_value; |
214 | | static int hf_zbncp_ed_capacity; |
215 | | static int hf_zbncp_max_joins; |
216 | | static int hf_zbncp_zdo_leave_allowed; |
217 | | static int hf_zbncp_zdo_leave_wo_rejoin_allowed; |
218 | | static int hf_zbncp_data_aps_key; |
219 | | static int hf_zbncp_data_endpoint; |
220 | | static int hf_zbncp_data_aps_group_num; |
221 | | static int hf_zbncp_data_aps_group; |
222 | | static int hf_zbncp_data_src_endpoint; |
223 | | static int hf_zbncp_data_dst_endpoint; |
224 | | static int hf_zbncp_data_poll_pkt_cnt; |
225 | | static int hf_zbncp_data_poll_timeout; |
226 | | static int hf_zbncp_data_poll_permit_flag; |
227 | | static int hf_zbncp_data_profile_id; |
228 | | static int hf_zbncp_data_device_id; |
229 | | static int hf_zbncp_data_dev_version; |
230 | | static int hf_zbncp_data_in_cl_cnt; |
231 | | static int hf_zbncp_data_out_cl_cnt; |
232 | | static int hf_zbncp_data_cluster_id; |
233 | | static int hf_zbncp_data_mac_cap; |
234 | | static int hf_zbncp_data_manuf_id; |
235 | | static int hf_zbncp_data_cur_pwr_mode; |
236 | | static int hf_zbncp_data_cur_pwr_lvl; |
237 | | static int hf_zbncp_data_susp_period; |
238 | | static int hf_zbncp_data_av_pwr_src; |
239 | | static int hf_zbncp_data_cur_pwr_src; |
240 | | static int hf_zbncp_data_pwr_src_const; |
241 | | static int hf_zbncp_data_pwr_src_recharge; |
242 | | static int hf_zbncp_data_pwr_src_disposable; |
243 | | static int hf_zbncp_data_req_type; |
244 | | static int hf_zbncp_data_start_idx; |
245 | | static int hf_zbncp_data_start_idx_16b; |
246 | | static int hf_zbncp_data_upd_idx; |
247 | | static int hf_zbncp_data_entry_idx; |
248 | | static int hf_zbncp_data_num_asoc_dec; |
249 | | static int hf_zbncp_data_pwr_desc; |
250 | | static int hf_zbncp_data_pwr_desc_cur_power_mode; |
251 | | static int hf_zbncp_data_pwr_desc_av_pwr_src; |
252 | | static int hf_zbncp_data_pwr_desc_cur_pwr_src; |
253 | | static int hf_zbncp_data_pwr_desc_cur_pwr_lvl; |
254 | | static int hf_zbncp_data_max_buf_size; |
255 | | static int hf_zbncp_data_max_inc_trans_size; |
256 | | static int hf_zbncp_data_max_out_trans_size; |
257 | | static int hf_zbncp_data_desc_cap; |
258 | | static int hf_zbncp_data_desc_cap_ext_act_ep_list_av; |
259 | | static int hf_zbncp_data_desc_cap_ext_simple_desc_list_av; |
260 | | static int hf_zbncp_data_flags8; |
261 | | static int hf_zbncp_data_flags_permit_join; |
262 | | static int hf_zbncp_data_flags_router_cap; |
263 | | static int hf_zbncp_data_flags_ed_cap; |
264 | | static int hf_zbncp_data_flags_stack_profile; |
265 | | static int hf_zbncp_data_flags16; |
266 | | static int hf_zbncp_data_flags_zb_role; |
267 | | static int hf_zbncp_data_flags_comp_desc_av; |
268 | | static int hf_zbncp_data_flags_user_desc_av; |
269 | | static int hf_zbncp_data_flags_freq_868; |
270 | | static int hf_zbncp_data_flags_freq_902; |
271 | | static int hf_zbncp_data_flags_freq_2400; |
272 | | static int hf_zbncp_data_flags_freq_eu_sub_ghz; |
273 | | static int hf_zbncp_data_srv_msk; |
274 | | static int hf_zbncp_data_srv_msk_prim_tc; |
275 | | static int hf_zbncp_data_srv_msk_backup_tc; |
276 | | static int hf_zbncp_data_srv_msk_prim_bind_tbl_cache; |
277 | | static int hf_zbncp_data_srv_msk_backup_bind_tbl_cache; |
278 | | static int hf_zbncp_data_remote_bind_offset; |
279 | | static int hf_zbncp_data_srv_msk_prim_disc_cache; |
280 | | static int hf_zbncp_data_srv_msk_backup_disc_cache; |
281 | | static int hf_zbncp_data_srv_msk_nwk_manager; |
282 | | static int hf_zbncp_data_srv_msk_stack_compl_rev; |
283 | | static int hf_zbncp_data_ep_cnt; |
284 | | static int hf_zbncp_data_dst_addr_mode; |
285 | | static int hf_zbncp_data_leave_flags; |
286 | | static int hf_zbncp_data_leave_flags_remove_chil; |
287 | | static int hf_zbncp_data_leave_flags_rejoin; |
288 | | static int hf_zbncp_data_permit_dur; |
289 | | static int hf_zbncp_data_tc_sign; |
290 | | static int hf_zbncp_data_secur_rejoin; |
291 | | static int hf_zbncp_data_zdo_rejoin_flags; |
292 | | static int hf_zbncp_data_zdo_rejoin_flags_tcsw_happened; |
293 | | static int hf_zbncp_data_dlen8; |
294 | | static int hf_zbncp_data_dlen16; |
295 | | static int hf_zbncp_data_param_len; |
296 | | static int hf_zbncp_data_radius; |
297 | | static int hf_zbncp_data_time_between_disc; |
298 | | static int hf_zbncp_data_enable_flag; |
299 | | static int hf_zbncp_data_array; |
300 | | static int hf_zbncp_data_use_alias; |
301 | | static int hf_zbncp_data_alias_src; |
302 | | static int hf_zbncp_data_alias_seq; |
303 | | static int hf_zbncp_data_tx_opt; |
304 | | static int hf_zbncp_data_tx_opt_secur; |
305 | | static int hf_zbncp_data_tx_opt_obsolete; |
306 | | static int hf_zbncp_data_tx_opt_ack; |
307 | | static int hf_zbncp_data_tx_opt_frag; |
308 | | static int hf_zbncp_data_tx_opt_inc_ext_nonce; |
309 | | static int hf_zbncp_data_tx_opt_force_mesh_route; |
310 | | static int hf_zbncp_data_tx_opt_send_route_record; |
311 | | static int hf_zbncp_data_lqi; |
312 | | static int hf_zbncp_data_rssi; |
313 | | static int hf_zbncp_data_do_cleanup; |
314 | | static int hf_zbncp_data_max_rx_bcast; |
315 | | static int hf_zbncp_data_mac_tx_bcast; |
316 | | static int hf_zbncp_data_mac_rx_ucast; |
317 | | static int hf_zbncp_data_mac_tx_ucast_total_zcl; |
318 | | static int hf_zbncp_data_mac_tx_ucast_failures_zcl; |
319 | | static int hf_zbncp_data_mac_tx_ucast_retries_zcl; |
320 | | static int hf_zbncp_data_mac_tx_ucast_total; |
321 | | static int hf_zbncp_data_mac_tx_ucast_failures; |
322 | | static int hf_zbncp_data_mac_tx_ucast_retries; |
323 | | static int hf_zbncp_data_mac_validate_drop_cnt; |
324 | | static int hf_zbncp_data_mac_phy_cca_fail_count; |
325 | | static int hf_zbncp_data_phy_to_mac_que_lim_reached; |
326 | | static int hf_zbncp_data_period_of_time; |
327 | | static int hf_zbncp_data_last_msg_lqi; |
328 | | static int hf_zbncp_data_last_msg_rssi; |
329 | | static int hf_zbncp_data_number_of_resets; |
330 | | static int hf_zbncp_data_aps_tx_bcast; |
331 | | static int hf_zbncp_data_aps_tx_ucast_success; |
332 | | static int hf_zbncp_data_aps_tx_ucast_retry; |
333 | | static int hf_zbncp_data_aps_tx_ucast_fail; |
334 | | static int hf_zbncp_data_route_disc_initiated; |
335 | | static int hf_zbncp_data_nwk_neighbor_added; |
336 | | static int hf_zbncp_data_nwk_neighbor_removed; |
337 | | static int hf_zbncp_data_nwk_neighbor_stale; |
338 | | static int hf_zbncp_upd_status_code; |
339 | | static int hf_zbncp_data_join_indication; |
340 | | static int hf_zbncp_data_childs_removed; |
341 | | static int hf_zbncp_data_aps_decrypt_failure; |
342 | | static int hf_zbncp_data_packet_buffer_allocate_failures; |
343 | | static int hf_zbncp_data_aps_unauthorized_key; |
344 | | static int hf_zbncp_data_nwk_decrypt_failure; |
345 | | static int hf_zbncp_data_average_mac_retry_per_aps_message_sent; |
346 | | static int hf_zbncp_data_nwk_fc_failure; |
347 | | static int hf_zbncp_data_aps_fc_failure; |
348 | | static int hf_zbncp_data_nwk_retry_overflow; |
349 | | static int hf_zbncp_data_nwk_bcast_table_full; |
350 | | static int hf_zbncp_data_status; |
351 | | static int hf_zbncp_zdo_auth_type; |
352 | | static int hf_zbncp_zdo_leg_auth_status_code; |
353 | | static int hf_zbncp_zdo_tclk_auth_status_code; |
354 | | static int hf_zbncp_zdo_server_mask; |
355 | | static int hf_zbncp_zdo_start_entry_idx; |
356 | | static int hf_zbncp_zdo_scan_duration; |
357 | | static int hf_zbncp_zdo_scan_cnt; |
358 | | static int hf_zbncp_zdo_scan_mgr_addr; |
359 | | static int hf_zbncp_data_aps_cnt; |
360 | | static int hf_zbncp_data_aps_fc; |
361 | | static int hf_zbncp_data_aps_fc_deliv_mode; |
362 | | static int hf_zbncp_data_aps_fc_secur; |
363 | | static int hf_zbncp_data_aps_fc_ack_retrans; |
364 | | static int hf_zbncp_data_aps_key_attr; |
365 | | static int hf_zbncp_data_aps_key_attr_key_src; |
366 | | static int hf_zbncp_data_aps_key_attr_key_used; |
367 | | static int hf_zbncp_data_pkt_len; |
368 | | static int hf_zbncp_data_pkt; |
369 | | static int hf_zbncp_data_scan_dur; |
370 | | static int hf_zbncp_data_distr_nwk_flag; |
371 | | static int hf_zbncp_data_nwk_count; |
372 | | static int hf_zbncp_data_nwk_upd_id; |
373 | | static int hf_zbncp_data_rejoin; |
374 | | static int hf_zbncp_data_rejoin_nwk; |
375 | | static int hf_zbncp_data_secur_en; |
376 | | static int hf_zbncp_data_beacon_type; |
377 | | static int hf_zbncp_data_beacon_order; |
378 | | static int hf_zbncp_data_superframe_order; |
379 | | static int hf_zbncp_data_battery_life_ext; |
380 | | static int hf_zbncp_data_enh_beacon; |
381 | | static int hf_zbncp_data_mac_if; |
382 | | static int hf_zbncp_data_mac_if_idx; |
383 | | static int hf_zbncp_data_ed_config; |
384 | | static int hf_zbncp_data_timeout_cnt; |
385 | | static int hf_zbncp_data_dev_timeout; |
386 | | static int hf_zbncp_data_relationship; |
387 | | static int hf_zbncp_data_tx_fail_cnt; |
388 | | static int hf_zbncp_data_out_cost; |
389 | | static int hf_zbncp_data_age; |
390 | | static int hf_zbncp_data_keepalive_rec; |
391 | | static int hf_zbncp_data_fast_poll_int; |
392 | | static int hf_zbncp_data_long_poll_int; |
393 | | static int hf_zbncp_data_fast_poll_flag; |
394 | | static int hf_zbncp_data_stop_fast_poll_result; |
395 | | static int hf_zbncp_data_time; |
396 | | static int hf_zbncp_data_pan_id_cnt; |
397 | | static int hf_zbncp_data_ic; |
398 | | static int hf_zbncp_data_ic_table_size; |
399 | | static int hf_zbncp_data_ic_ent_cnt; |
400 | | static int hf_zbncp_data_cs; |
401 | | static int hf_zbncp_data_ca_pub_key; |
402 | | static int hf_zbncp_data_ca_priv_key; |
403 | | static int hf_zbncp_data_cert; |
404 | | static int hf_zbncp_data_ic_en; |
405 | | static int hf_zbncp_data_key_type; |
406 | | static int hf_zbncp_data_issuer; |
407 | | static int hf_zbncp_data_tx_power; |
408 | | static int hf_zbncp_data_seed; |
409 | | static int hf_zbncp_data_tx_time; |
410 | | static int hf_zbncp_data_link_key; |
411 | | static int hf_zbncp_data_aps_link_key_type; |
412 | | static int hf_zbncp_data_key_src; |
413 | | static int hf_zbncp_data_key_attr; |
414 | | static int hf_zbncp_data_out_frame_cnt; |
415 | | static int hf_zbncp_data_inc_frame_cnt; |
416 | | static int hf_zbncp_data_offset; |
417 | | static int hf_zbncp_data_do_erase; |
418 | | static int hf_zbncp_data_calibration_status; |
419 | | static int hf_zbncp_data_calibration_value; |
420 | | static int hf_zbncp_data_zgp_key_type; |
421 | | static int hf_zbncp_data_zgp_link_key; |
422 | | static int hf_zbncp_data_prod_conf_hdr_crc; |
423 | | static int hf_zbncp_data_prod_conf_hdr_len; |
424 | | static int hf_zbncp_data_prod_conf_hdr_version; |
425 | | static int hf_zbncp_data_prod_conf_body; |
426 | | |
427 | | /* IEEE802.15.4 capability info (copied from IEEE802.15.4 95e212e6c7 commit)*/ |
428 | | static int hf_ieee802154_cinfo_alt_coord; |
429 | | static int hf_ieee802154_cinfo_device_type; |
430 | | static int hf_ieee802154_cinfo_power_src; |
431 | | static int hf_ieee802154_cinfo_idle_rx; |
432 | | static int hf_ieee802154_cinfo_sec_capable; |
433 | | static int hf_ieee802154_cinfo_alloc_addr; |
434 | | |
435 | | /* Configuration parameters */ |
436 | | static int hf_zbncp_data_conf_params_reserved; |
437 | | static int hf_zbncp_data_conf_params_disable_pan_id_change; |
438 | | static int hf_zbncp_data_conf_params_disable_channel_change; |
439 | | static int hf_zbncp_data_conf_params_leave_request_allowed; |
440 | | static int hf_zbncp_data_conf_params_require_tclk; |
441 | | static int hf_zbncp_data_conf_params_restricted_enabled; |
442 | | |
443 | | /* ZBNCP traffic dump */ |
444 | | static int hf_zbncp_dump_preamble; |
445 | | static int hf_zbncp_dump_version; |
446 | | static int hf_zbncp_dump_type; |
447 | | static int hf_zbncp_dump_options; |
448 | | static int hf_zbncp_dump_options_dir; |
449 | | static int hf_zbncp_dump_options_int_state; |
450 | | static int hf_zbncp_dump_options_tx_conflict; |
451 | | |
452 | | /* Initialize subtree pointers */ |
453 | | static int ett_zbncp_hdr; |
454 | | static int ett_zbncp_hdr_flags; |
455 | | static int ett_zbncp_ll_body; |
456 | | static int ett_zbncp_hl_hdr; |
457 | | static int ett_zbncp_hl_body; |
458 | | static int ett_zbncp_data_in_cl_list; |
459 | | static int ett_zbncp_data_out_cl_list; |
460 | | static int ett_zbncp_data_mac_cap; |
461 | | static int ett_zbncp_data_pwr_src; |
462 | | static int ett_zbncp_data_cur_pwr_src; |
463 | | static int ett_zbncp_data_asoc_nwk_list; |
464 | | static int ett_zbncp_data_pwr_desc; |
465 | | static int ett_zbncp_data_desc_cap; |
466 | | static int ett_zbncp_data_flags; |
467 | | static int ett_zbncp_data_server_mask; |
468 | | static int ett_zbncp_data_ep_list; |
469 | | static int ett_zbncp_data_leave_flags; |
470 | | static int ett_zbncp_data_tx_opt; |
471 | | static int ett_zbncp_data_zdo_rejoin_flags; |
472 | | static int ett_zbncp_data_apc_fc; |
473 | | static int ett_zbncp_data_prod_conf_hdr; |
474 | | static int ett_zbncp_data_aps_key_attr; |
475 | | static int ett_zbncp_data_ch_list; |
476 | | static int ett_zbncp_data_channel; |
477 | | static int ett_zbncp_data_nwk_descr; |
478 | | static int ett_zbncp_data_cmd_opt; |
479 | | static int ett_zbncp_data_joind_bitmask; |
480 | | static int ett_zbncp_data_trace_bitmask; |
481 | | static int ett_zbncp_data_conf_params; |
482 | | |
483 | | static int ett_zbncp_dump; |
484 | | static int ett_zbncp_dump_opt; |
485 | | |
486 | | static dissector_handle_t zbncp_handle; |
487 | | |
488 | | static const value_string zbncp_hl_type[] = |
489 | | { |
490 | | {ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST, "Request"}, |
491 | | {ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE, "Response"}, |
492 | | {ZBNCP_HIGH_LVL_PACKET_TYPE_INDICATION, "Indication"}, |
493 | | {0, NULL} |
494 | | }; |
495 | | |
496 | | static const value_string zbncp_hl_status_cat[] = |
497 | | { |
498 | | {ZBNCP_HIGH_LVL_STAT_CAT_GENERIC, "Generic"}, |
499 | | {ZBNCP_HIGH_LVL_STAT_CAT_SYSTEM, "System"}, |
500 | | {ZBNCP_HIGH_LVL_STAT_CAT_MAC, "MAC"}, |
501 | | {ZBNCP_HIGH_LVL_STAT_CAT_NWK, "NWK"}, |
502 | | {ZBNCP_HIGH_LVL_STAT_CAT_APS, "APS"}, |
503 | | {ZBNCP_HIGH_LVL_STAT_CAT_ZDO, "ZDO"}, |
504 | | {ZBNCP_HIGH_LVL_STAT_CAT_CBKE, "CBKE"}, |
505 | | {0, NULL} |
506 | | }; |
507 | | |
508 | | static const value_string zbncp_reset_opt[] = |
509 | | { |
510 | | {0, "No options"}, |
511 | | {1, "Erase NVRAM"}, |
512 | | {2, "Factory Reset"}, |
513 | | {3, "Locking reading keys"}, |
514 | | {0, NULL} |
515 | | }; |
516 | | |
517 | | static const value_string zbncp_zb_role[] = |
518 | | { |
519 | | {0, "ZC"}, |
520 | | {1, "ZR"}, |
521 | | {2, "ZED"}, |
522 | | {0, NULL} |
523 | | }; |
524 | | |
525 | | static const value_string zbncp_bind_type_vals[] = |
526 | | { |
527 | | {0, "NCP_HL_UNUSED_BINDING"}, |
528 | | {1, "NCP_HL_UNICAST_BINDING"}, |
529 | | {0, NULL} |
530 | | }; |
531 | | |
532 | | static const value_string zbncp_tc_policy_types[] = |
533 | | { |
534 | | {0, "TC Link Keys Required"}, |
535 | | {1, "IC Required"}, |
536 | | {2, "TC Rejoin Enabled"}, |
537 | | {3, "Ignore TC Rejoin"}, |
538 | | {4, "APS Insecure Join"}, |
539 | | {5, "Disable NWK MGMT Channel Update"}, |
540 | | {6, "Unsecure TC Rejoin Enable"}, |
541 | | {7, "Enable Device Interview"}, |
542 | | {8, "Set APS encryption for ZDO"}, |
543 | | {0, NULL} |
544 | | }; |
545 | | |
546 | | static const value_string zbncp_dev_update_status_code[] = |
547 | | { |
548 | | {0, "Standard Device Secured Rejoin"}, |
549 | | {1, "Standard Device Unsecured Join"}, |
550 | | {2, "Device Left"}, |
551 | | {3, "Standard Device Trust Center Rejoin"}, |
552 | | {0, NULL} |
553 | | }; |
554 | | |
555 | | static const value_string zbncp_nwk_conf_behavior[] = |
556 | | { |
557 | | {0, "None"}, |
558 | | {1, "R22 Behavior"}, |
559 | | {2, "R23 Behavior"}, |
560 | | {0, NULL} |
561 | | }; |
562 | | |
563 | | static const value_string zbncp_hl_call_id[] = |
564 | | { |
565 | | {ZBNCP_CMD_GET_MODULE_VERSION, "GET_MODULE_VERSION"}, |
566 | | {ZBNCP_CMD_NCP_RESET, "NCP_RESET"}, |
567 | | {ZBNCP_CMD_GET_ZIGBEE_ROLE, "GET_ZIGBEE_ROLE"}, |
568 | | {ZBNCP_CMD_SET_ZIGBEE_ROLE, "SET_ZIGBEE_ROLE"}, |
569 | | {ZBNCP_CMD_GET_ZIGBEE_CHANNEL_MASK, "GET_ZIGBEE_CHANNEL_MASK"}, |
570 | | {ZBNCP_CMD_SET_ZIGBEE_CHANNEL_MASK, "SET_ZIGBEE_CHANNEL_MASK"}, |
571 | | {ZBNCP_CMD_GET_ZIGBEE_CHANNEL, "GET_ZIGBEE_CHANNEL"}, |
572 | | {ZBNCP_CMD_GET_PAN_ID, "GET_PAN_ID"}, |
573 | | {ZBNCP_CMD_SET_PAN_ID, "SET_PAN_ID"}, |
574 | | {ZBNCP_CMD_GET_LOCAL_IEEE_ADDR, "GET_LOCAL_IEEE_ADDR"}, |
575 | | {ZBNCP_CMD_SET_LOCAL_IEEE_ADDR, "SET_LOCAL_IEEE_ADDR"}, |
576 | | {ZBNCP_CMD_SET_TRACE, "SET_TRACE"}, |
577 | | {ZBNCP_CMD_GET_KEEPALIVE_TIMEOUT, "GET_KEEPALIVE_TIMEOUT"}, |
578 | | {ZBNCP_CMD_SET_KEEPALIVE_TIMEOUT, "SET_KEEPALIVE_TIMEOUT"}, |
579 | | {ZBNCP_CMD_GET_TX_POWER, "GET_TX_POWER"}, |
580 | | {ZBNCP_CMD_SET_TX_POWER, "SET_TX_POWER"}, |
581 | | {ZBNCP_CMD_GET_RX_ON_WHEN_IDLE, "GET_RX_ON_WHEN_IDLE"}, |
582 | | {ZBNCP_CMD_SET_RX_ON_WHEN_IDLE, "SET_RX_ON_WHEN_IDLE"}, |
583 | | {ZBNCP_CMD_GET_JOINED, "GET_JOINED"}, |
584 | | {ZBNCP_CMD_GET_AUTHENTICATED, "GET_AUTHENTICATED"}, |
585 | | {ZBNCP_CMD_GET_ED_TIMEOUT, "GET_ED_TIMEOUT"}, |
586 | | {ZBNCP_CMD_SET_ED_TIMEOUT, "SET_ED_TIMEOUT"}, |
587 | | {ZBNCP_CMD_ADD_VISIBLE_DEV, "ADD_VISIBLE_DEV"}, |
588 | | {ZBNCP_CMD_ADD_INVISIBLE_SHORT, "ADD_INVISIBLE_SHORT"}, |
589 | | {ZBNCP_CMD_RM_INVISIBLE_SHORT, "RM_INVISIBLE_SHORT"}, |
590 | | {ZBNCP_CMD_SET_NWK_KEY, "SET_NWK_KEY"}, |
591 | | {ZBNCP_CMD_GET_SERIAL_NUMBER, "GET_SERIAL_NUMBER"}, |
592 | | {ZBNCP_CMD_GET_VENDOR_DATA, "GET_VENDOR_DATA"}, |
593 | | {ZBNCP_CMD_GET_NWK_KEYS, "GET_NWK_KEYS"}, |
594 | | {ZBNCP_CMD_GET_APS_KEY_BY_IEEE, "GET_APS_KEY_BY_IEEE"}, |
595 | | {ZBNCP_CMD_BIG_PKT_TO_NCP, "BIG_PKT_TO_NCP"}, |
596 | | {ZBNCP_CMD_GET_PARENT_ADDR, "GET_PARENT_ADDR"}, |
597 | | {ZBNCP_CMD_GET_EXT_PAN_ID, "GET_EXT_PAN_ID"}, |
598 | | {ZBNCP_CMD_GET_COORDINATOR_VERSION, "GET_COORDINATOR_VERSION"}, |
599 | | {ZBNCP_CMD_GET_SHORT_ADDRESS, "GET_SHORT_ADDRESS"}, |
600 | | {ZBNCP_CMD_GET_TRUST_CENTER_ADDRESS, "GET_TRUST_CENTER_ADDRESS"}, |
601 | | {ZBNCP_CMD_DEBUG_WRITE, "DEBUG_WRITE"}, |
602 | | {ZBNCP_CMD_GET_CONFIG_PARAMETER, "GET_CONFIG_PARAMETER"}, |
603 | | {ZBNCP_CMD_GET_LOCK_STATUS, "GET_LOCK_STATUS"}, |
604 | | {ZBNCP_CMD_GET_TRACE, "GET_TRACE"}, |
605 | | {ZBNCP_CMD_NCP_RESET_IND, "NCP_RESET_IND"}, |
606 | | {ZBNCP_CMD_SET_NWK_LEAVE_ALLOWED, "SET_NWK_LEAVE_ALLOWED"}, |
607 | | {ZBNCP_CMD_GET_NWK_LEAVE_ALLOWED, "GET_NWK_LEAVE_ALLOWED"}, |
608 | | {ZBNCP_CMD_NVRAM_WRITE, "NVRAM_WRITE"}, |
609 | | {ZBNCP_CMD_NVRAM_READ, "NVRAM_READ"}, |
610 | | {ZBCNP_CMD_NVRAM_CLEAR, "NVRAM_CLEAR"}, |
611 | | {ZBNCP_CMD_NVRAM_ERASE, "NVRAM_ERASE"}, |
612 | | {ZBNCP_CMD_SET_TC_POLICY, "SET_TC_POLICY"}, |
613 | | {ZBNCP_CMD_SET_EXTENDED_PAN_ID, "SET_EXTENDED_PAN_ID"}, |
614 | | {ZBNCP_CMD_SET_ED_CAPACITY, "SET_ED_CAPACITY"}, |
615 | | {ZBNCP_CMD_GET_ED_CAPACITY, "GET_ED_CAPACITY"}, |
616 | | {ZBNCP_CMD_SET_ZDO_LEAVE_ALLOWED, "SET_ZDO_LEAVE_ALLOWED"}, |
617 | | {ZBNCP_CMD_GET_ZDO_LEAVE_ALLOWED, "GET_ZDO_LEAVE_ALLOWED"}, |
618 | | {ZBNCP_CMD_SET_LEAVE_WO_REJOIN_ALLOWED, "SET_LEAVE_WO_REJOIN_ALLOWED"}, |
619 | | {ZBNCP_CMD_GET_LEAVE_WO_REJOIN_ALLOWED, "GET_LEAVE_WO_REJOIN_ALLOWED"}, |
620 | | {ZBNCP_CMD_DISABLE_GPPB, "DISABLE_GPPB"}, |
621 | | {ZBNCP_CMD_GP_SET_SHARED_KEY_TYPE, "GP_SET_SHARED_KEY_TYPE"}, |
622 | | {ZBNCP_CMD_GP_SET_DEFAULT_LINK_KEY, "GP_SET_DEFAULT_LINK_KEY"}, |
623 | | {ZBNCP_CMD_PRODUCTION_CONFIG_READ, "PRODUCTION_CONFIG_READ"}, |
624 | | {ZBNCP_CMD_SET_MAX_JOINS, "SET_MAX_JOINS"}, |
625 | | {ZBNCP_CMD_GET_MAX_JOINS, "GET_MAX_JOINS"}, |
626 | | {ZBNCP_CMD_TRACE_IND, "TRACE_IND"}, |
627 | | {ZBNCP_CMD_GET_KEY_NEG_METHOD, "GET_KEY_NEG_METHOD"}, |
628 | | {ZBNCP_CMD_SET_KEY_NEG_METHOD, "SET_KEY_NEG_METHOD"}, |
629 | | {ZBNCP_CMD_GET_PSK_SECRETS, "GET_PSK_SECRETS"}, |
630 | | {ZBNCP_CMD_SET_PSK_SECRETS, "SET_PSK_SECRETS"}, |
631 | | {ZBNCP_CMD_SET_R22_JOIN_USAGE, "SET_R22_JOIN_USAGE"}, |
632 | | {ZBNCP_CMD_SET_NWK_CONF_PRESET, "SET_NWK_CONF_PRESET"}, |
633 | | {ZBNCP_CMD_DEBUG_BROAD_NWK_KEY, "DEBUG_BROAD_NWK_KEY"}, |
634 | | {ZBNCP_CMD_DEBUG_BROAD_APS_KEY, "DEBUG_BROAD_APS_KEY"}, |
635 | | {ZBNCP_CMD_AF_SET_SIMPLE_DESC, "AF_SET_SIMPLE_DESC"}, |
636 | | {ZBNCP_CMD_AF_DEL_EP, "AF_DEL_EP"}, |
637 | | {ZBNCP_CMD_AF_SET_NODE_DESC, "AF_SET_NODE_DESC"}, |
638 | | {ZBNCP_CMD_AF_SET_POWER_DESC, "AF_SET_POWER_DESC"}, |
639 | | {ZBNCP_CMD_AF_SUBGHZ_SUSPEND_IND, "AF_SUBGHZ_SUSPEND_IND"}, |
640 | | {ZBNCP_CMD_AF_SUBGHZ_RESUME_IND, "AF_SUBGHZ_RESUME_IND"}, |
641 | | {ZBNCP_CMD_ZDO_NWK_ADDR_REQ, "ZDO_NWK_ADDR_REQ"}, |
642 | | {ZBNCP_CMD_ZDO_IEEE_ADDR_REQ, "ZDO_IEEE_ADDR_REQ"}, |
643 | | {ZBNCP_CMD_ZDO_POWER_DESC_REQ, "ZDO_POWER_DESC_REQ"}, |
644 | | {ZBNCP_CMD_ZDO_NODE_DESC_REQ, "ZDO_NODE_DESC_REQ"}, |
645 | | {ZBNCP_CMD_ZDO_SIMPLE_DESC_REQ, "ZDO_SIMPLE_DESC_REQ"}, |
646 | | {ZBNCP_CMD_ZDO_ACTIVE_EP_REQ, "ZDO_ACTIVE_EP_REQ"}, |
647 | | {ZBNCP_CMD_ZDO_MATCH_DESC_REQ, "ZDO_MATCH_DESC_REQ"}, |
648 | | {ZBNCP_CMD_ZDO_BIND_REQ, "ZDO_BIND_REQ"}, |
649 | | {ZBNCP_CMD_ZDO_UNBIND_REQ, "ZDO_UNBIND_REQ"}, |
650 | | {ZBNCP_CMD_ZDO_MGMT_LEAVE_REQ, "ZDO_MGMT_LEAVE_REQ"}, |
651 | | {ZBNCP_CMD_ZDO_PERMIT_JOINING_REQ, "ZDO_PERMIT_JOINING_REQ"}, |
652 | | {ZBNCP_CMD_ZDO_DEV_ANNCE_IND, "ZDO_DEV_ANNCE_IND"}, |
653 | | {ZBNCP_CMD_ZDO_REJOIN, "ZDO_REJOIN"}, |
654 | | {ZBNCP_CMD_ZDO_SYSTEM_SRV_DISCOVERY_REQ, "ZDO_SYSTEM_SRV_DISCOVERY_REQ"}, |
655 | | {ZBNCP_CMD_ZDO_MGMT_BIND_REQ, "ZDO_MGMT_BIND_REQ"}, |
656 | | {ZBNCP_CMD_ZDO_MGMT_LQI_REQ, "ZDO_MGMT_LQI_REQ"}, |
657 | | {ZBNCP_CMD_ZDO_MGMT_NWK_UPDATE_REQ, "ZDO_MGMT_NWK_UPDATE_REQ"}, |
658 | | {ZBNCP_CMD_ZDO_REMOTE_CMD_IND, "ZDO_REMOTE_CMD_IND"}, |
659 | | {ZBNCP_CMD_ZDO_GET_STATS, "ZDO_GET_STATS"}, |
660 | | {ZBNCP_CMD_ZDO_DEV_AUTHORIZED_IND, "ZDO_DEV_AUTHORIZED_IND"}, |
661 | | {ZBNCP_CMD_ZDO_DEV_UPDATE_IND, "ZDO_DEV_UPDATE_IND"}, |
662 | | {ZBNCP_CMD_ZDO_SET_NODE_DESC_MANUF_CODE, "ZDO_SET_NODE_DESC_MANUF_CODE"}, |
663 | | {ZBNCP_CMD_HL_ZDO_GET_DIAG_DATA_REQ, "ZDO_GET_DIAG_DATA_REQ"}, |
664 | | {ZBNCP_CMD_HL_ZDO_RAW_REQ, "ZDO_RAW_REQ"}, |
665 | | {ZBNCP_CMD_HL_ZDO_SEND_CONF_PARAMS_REQ, "ZDO_SEND_CONF_PARAMS_REQ"}, |
666 | | {ZBNCP_CMD_HL_ZDO_MGMT_BEACON_SURVEY_REQ, "ZDO_MGMT_BEACON_SURVEY_REQ"}, |
667 | | {ZBNCP_CMD_HL_ZDO_DECOMMISSION_REQ, "ZDO_DECOMMISSION_REQ"}, |
668 | | {ZBNCP_CMD_HL_ZDO_GET_AUTH_LEVEL_REQ, "ZDO_GET_AUTH_LEVEL_REQ"}, |
669 | | {ZBNCP_CMD_APSDE_DATA_REQ, "APSDE_DATA_REQ"}, |
670 | | {ZBNCP_CMD_APSME_BIND, "APSME_BIND"}, |
671 | | {ZBNCP_CMD_APSME_UNBIND, "APSME_UNBIND"}, |
672 | | {ZBNCP_CMD_APSME_ADD_GROUP, "APSME_ADD_GROUP"}, |
673 | | {ZBNCP_CMD_APSME_RM_GROUP, "APSME_RM_GROUP"}, |
674 | | {ZBNCP_CMD_APSDE_DATA_IND, "APSDE_DATA_IND"}, |
675 | | {ZBNCP_CMD_APSME_RM_ALL_GROUPS, "APSME_RM_ALL_GROUPS"}, |
676 | | {ZBNCP_CMD_APS_GET_GROUP_TABLE, "APS_GET_GROUP_TABLE"}, |
677 | | {ZBNCP_CMD_APSME_UNBIND_ALL, "APSME_UNBIND_ALL"}, |
678 | | {ZBNCP_CMD_APSME_RM_BIND_ENTRY_BY_ID, "APSME_RM_BIND_ENTRY_BY_ID"}, |
679 | | {ZBNCP_CMD_APSME_CLEAR_BIND_TABLE, "APSME_CLEAR_BIND_TABLE"}, |
680 | | {ZBNCP_CMD_APSME_REMOTE_BIND_IND, "APSME_REMOTE_BIND_IND"}, |
681 | | {ZBNCP_CMD_APSME_REMOTE_UNBIND_IND, "APSME_REMOTE_UNBIND_IND"}, |
682 | | {ZBNCP_CMD_APSME_SET_REMOTE_BIND_OFFSET, "APSME_SET_REMOTE_BIND_OFFSET"}, |
683 | | {ZBNCP_CMD_APSME_GET_REMOTE_BIND_OFFSET, "APSME_GET_REMOTE_BIND_OFFSET"}, |
684 | | {ZBNCP_CMD_APSME_GET_BIND_ENTRY_BY_ID, "APSME_GET_BIND_ENTRY_BY_ID"}, |
685 | | {ZBNCP_CMD_NWK_FORMATION, "NWK_FORMATION"}, |
686 | | {ZBNCP_CMD_NWK_DISCOVERY, "NWK_DISCOVERY"}, |
687 | | {ZBNCP_CMD_NWK_NLME_JOIN, "NWK_NLME_JOIN"}, |
688 | | {ZBNCP_CMD_NWK_PERMIT_JOINING, "NWK_PERMIT_JOINING"}, |
689 | | {ZBNCP_CMD_NWK_GET_IEEE_BY_SHORT, "NWK_GET_IEEE_BY_SHORT"}, |
690 | | {ZBNCP_CMD_NWK_GET_SHORT_BY_IEEE, "NWK_GET_SHORT_BY_IEEE"}, |
691 | | {ZBNCP_CMD_NWK_GET_NEIGHBOR_BY_IEEE, "NWK_GET_NEIGHBOR_BY_IEEE"}, |
692 | | {ZBNCP_CMD_NWK_STARTED_IND, "NWK_STARTED_IND"}, |
693 | | {ZBNCP_CMD_NWK_REJOINED_IND, "NWK_REJOINED_IND"}, |
694 | | {ZBNCP_CMD_NWK_REJOIN_FAILED_IND, "NWK_REJOIN_FAILED_IND"}, |
695 | | {ZBNCP_CMD_NWK_LEAVE_IND, "NWK_LEAVE_IND"}, |
696 | | {ZBNCP_CMD_PIM_SET_FAST_POLL_INTERVAL, "PIM_SET_FAST_POLL_INTERVAL"}, |
697 | | {ZBNCP_CMD_PIM_SET_LONG_POLL_INTERVAL, "PIM_SET_LONG_POLL_INTERVAL"}, |
698 | | {ZBNCP_CMD_PIM_START_FAST_POLL, "PIM_START_FAST_POLL"}, |
699 | | {ZBNCP_CMD_PIM_START_POLL, "PIM_START_POLL"}, |
700 | | {ZBNCP_CMD_PIM_SET_ADAPTIVE_POLL, "PIM_SET_ADAPTIVE_POLL"}, |
701 | | {ZBNCP_CMD_PIM_STOP_FAST_POLL, "PIM_STOP_FAST_POLL"}, |
702 | | {ZBNCP_CMD_PIM_STOP_POLL, "PIM_STOP_POLL"}, |
703 | | {ZBNCP_CMD_PIM_ENABLE_TURBO_POLL, "PIM_ENABLE_TURBO_POLL"}, |
704 | | {ZBNCP_CMD_PIM_DISABLE_TURBO_POLL, "PIM_DISABLE_TURBO_POLL"}, |
705 | | {ZBNCP_CMD_NWK_GET_FIRST_NBT_ENTRY, "NWK_GET_FIRST_NBT_ENTRY"}, |
706 | | {ZBNCP_CMD_NWK_GET_NEXT_NBT_ENTRY, "NWK_GET_NEXT_NBT_ENTRY"}, |
707 | | {ZBNCP_CMD_NWK_PAN_ID_CONFLICT_RESOLVE, "NWK_PAN_ID_CONFLICT_RESOLVE"}, |
708 | | {ZBNCP_CMD_NWK_PAN_ID_CONFLICT_IND, "NWK_PAN_ID_CONFLICT_IND"}, |
709 | | {ZBNCP_CMD_NWK_ADDRESS_UPDATE_IND, "NWK_ADDRESS_UPDATE_IND"}, |
710 | | {ZBNCP_CMD_NWK_START_WITHOUT_FORMATION, "NWK_START_WITHOUT_FORMATION"}, |
711 | | {ZBNCP_CMD_NWK_NLME_ROUTER_START, "NWK_NLME_ROUTER_START"}, |
712 | | {ZBNCP_CMD_PIM_SINGLE_POLL, "PIM_SINGLE_POLL"}, |
713 | | {ZBNCP_CMD_PARENT_LOST_IND, "PARENT_LOST_IND"}, |
714 | | {ZBNCP_CMD_PIM_START_TURBO_POLL_PACKETS, "PIM_START_TURBO_POLL_PACKETS"}, |
715 | | {ZBNCP_CMD_PIM_START_TURBO_POLL_CONTINUOUS, "PIM_START_TURBO_POLL_CONTINUOUS"}, |
716 | | {ZBNCP_CMD_PIM_TURBO_POLL_CONTINUOUS_LEAVE, "PIM_TURBO_POLL_CONTINUOUS_LEAVE"}, |
717 | | {ZBNCP_CMD_PIM_TURBO_POLL_PACKETS_LEAVE, "PIM_TURBO_POLL_PACKETS_LEAVE"}, |
718 | | {ZBNCP_CMD_PIM_PERMIT_TURBO_POLL, "PIM_PERMIT_TURBO_POLL"}, |
719 | | {ZBNCP_CMD_PIM_SET_FAST_POLL_TIMEOUT, "PIM_SET_FAST_POLL_TIMEOUT"}, |
720 | | {ZBNCP_CMD_PIM_GET_LONG_POLL_INTERVAL, "PIM_GET_LONG_POLL_INTERVAL"}, |
721 | | {ZBNCP_CMD_PIM_GET_IN_FAST_POLL_FLAG, "PIM_GET_IN_FAST_POLL_FLAG"}, |
722 | | {ZBNCP_CMD_SET_KEEPALIVE_MODE, "SET_KEEPALIVE_MODE"}, |
723 | | {ZBNCP_CMD_START_CONCENTRATOR_MODE, "START_CONCENTRATOR_MODE"}, |
724 | | {ZBNCP_CMD_STOP_CONCENTRATOR_MODE, "STOP_CONCENTRATOR_MODE"}, |
725 | | {ZBNCP_CMD_NWK_ENABLE_PAN_ID_CONFLICT_RESOLUTION, "NWK_ENABLE_PAN_ID_CONFLICT_RESOLUTION"}, |
726 | | {ZBNCP_CMD_NWK_ENABLE_AUTO_PAN_ID_CONFLICT_RESOLUTION, "NWK_ENABLE_AUTO_PAN_ID_CONFLICT_RESOLUTION"}, |
727 | | {ZBNCP_CMD_PIM_TURBO_POLL_CANCEL_PACKET, "PIM_TURBO_POLL_CANCEL_PACKET"}, |
728 | | {ZBNCP_CMD_SET_FORCE_ROUTE_RECORD, "SET_FORCE_ROUTE_RECORD"}, |
729 | | {ZBNCP_CMD_GET_FORCE_ROUTE_RECORD, "GET_FORCE_ROUTE_RECORD"}, |
730 | | {ZBNCP_CMD_NWK_NBR_ITERATOR_NEXT, "NWK_NBR_ITERATOR_NEXT"}, |
731 | | {ZBNCP_CMD_ZB_DEBUG_SIGNAL_TCLK_READY_IND, "DEBUG_SIGNAL_TCLK_READY_IND"}, |
732 | | {ZBNCP_CMD_ZB_DEVICE_READY_FOR_INTERVIEW_IND, "DEVICE_READY_FOR_INTERVIEW_IND"}, |
733 | | {ZBNCP_CMD_ZB_DEVICE_INTERVIEW_FINISHED_IND, "DEVICE_INTERVIEW_FINISHED_IND"}, |
734 | | {ZBNCP_CMD_ZB_PREPARE_NETWORK_FOR_CHANNEL_PAN_ID_CHANGE, "PREPARE_NETWORK_FOR_CHANNEL_PAN_ID_CHANGE"}, |
735 | | {ZBNCP_CMD_ZB_PREPARE_NETWORK_FOR_CHANNEL_CHANGE, "PREPARE_NETWORK_FOR_CHANNEL_CHANGE"}, |
736 | | {ZBNCP_CMD_ZB_START_CHANNEL_CHANGE, "START_CHANNEL_CHANGE"}, |
737 | | {ZBNCP_CMD_ZB_START_PAN_ID_CHANGE, "START_PAN_ID_CHANGE"}, |
738 | | {ZBNCP_CMD_SECUR_SET_LOCAL_IC, "SECUR_SET_LOCAL_IC"}, |
739 | | {ZBNCP_CMD_SECUR_ADD_IC, "SECUR_ADD_IC"}, |
740 | | {ZBNCP_CMD_SECUR_DEL_IC, "SECUR_DEL_IC"}, |
741 | | {ZBNCP_CMD_SECUR_ADD_CERT, "SECUR_ADD_CERT"}, |
742 | | {ZBNCP_CMD_SECUR_DEL_CERT, "SECUR_DEL_CERT"}, |
743 | | {ZBNCP_CMD_SECUR_START_KE, "SECUR_START_KE"}, |
744 | | {ZBNCP_CMD_SECUR_START_PARTNER_LK, "SECUR_START_PARTNER_LK"}, |
745 | | {ZBNCP_CMD_SECUR_CBKE_SRV_FINISHED_IND, "SECUR_CBKE_SRV_FINISHED_IND"}, |
746 | | {ZBNCP_CMD_SECUR_PARTNER_LK_FINISHED_IND, "SECUR_PARTNER_LK_FINISHED_IND"}, |
747 | | {ZBNCP_CMD_SECUR_KE_WHITELIST_ADD, "SECUR_KE_WHITELIST_ADD"}, |
748 | | {ZBNCP_CMD_SECUR_KE_WHITELIST_DEL, "SECUR_KE_WHITELIST_DEL"}, |
749 | | {ZBNCP_CMD_SECUR_KE_WHITELIST_DEL_ALL, "SECUR_KE_WHITELIST_DEL_ALL"}, |
750 | | {ZBNCP_CMD_SECUR_JOIN_USES_IC, "SECUR_JOIN_USES_IC"}, |
751 | | {ZBNCP_CMD_SECUR_GET_IC_BY_IEEE, "SECUR_GET_IC_BY_IEEE"}, |
752 | | {ZBNCP_CMD_SECUR_GET_CERT, "SECUR_GET_CERT"}, |
753 | | {ZBNCP_CMD_SECUR_GET_LOCAL_IC, "SECUR_GET_LOCAL_IC"}, |
754 | | {ZBNCP_CMD_SECUR_TCLK_IND, "SECUR_TCLK_IND"}, |
755 | | {ZBNCP_CMD_SECUR_TCLK_EXCHANGE_FAILED_IND, "SECUR_TCLK_EXCHANGE_FAILED_IND"}, |
756 | | {ZBNCP_CMD_SECUR_GET_KEY_IDX, "SECUR_GET_KEY_IDX"}, |
757 | | {ZBNCP_CMD_SECUR_GET_KEY, "SECUR_GET_KEY"}, |
758 | | {ZBNCP_CMD_SECUR_ERASE_KEY, "SECUR_ERASE_KEY"}, |
759 | | {ZBNCP_CMD_SECUR_CLEAR_KEY_TABLE, "SECUR_CLEAR_KEY_TABLE"}, |
760 | | {ZBNCP_CMD_SECUR_NWK_INITIATE_KEY_SWITCH_PROCEDURE, "SECUR_NWK_INITIATE_KEY_SWITCH_PROCEDURE"}, |
761 | | {ZBNCP_CMD_SECUR_GET_IC_LIST, "SECUR_GET_IC_LIST"}, |
762 | | {ZBNCP_CMD_SECUR_GET_IC_BY_IDX, "SECUR_GET_IC_BY_IDX"}, |
763 | | {ZBNCP_CMD_SECUR_REMOVE_ALL_IC, "SECUR_REMOVE_ALL_IC"}, |
764 | | {ZBNCP_CMD_SECUR_PARTNER_LK_ENABLE, "SECUR_PARTNER_LK_ENABLE"}, |
765 | | {ZBNCP_CMD_SECUR_AUTH_DEVICE_AFTER_INTERVIEW, "SECUR_AUTH_DEVICE_AFTER_INTERVIEW"}, |
766 | | {ZBNCP_CMD_ZDO_SECUR_UPDATE_DEVICE_TCLK, "SECUR_UPDATE_DEVICE_TCLK"}, |
767 | | {ZBNCP_CMD_MANUF_MODE_START, "MANUF_MODE_START"}, |
768 | | {ZBNCP_CMD_MANUF_MODE_END, "MANUF_MODE_END"}, |
769 | | {ZBNCP_CMD_MANUF_SET_CHANNEL, "MANUF_SET_CHANNEL"}, |
770 | | {ZBNCP_CMD_MANUF_GET_CHANNEL, "MANUF_GET_CHANNEL"}, |
771 | | {ZBNCP_CMD_MANUF_SET_POWER, "MANUF_SET_POWER"}, |
772 | | {ZBNCP_CMD_MANUF_GET_POWER, "MANUF_GET_POWER"}, |
773 | | {ZBNCP_CMD_MANUF_START_TONE, "MANUF_START_TONE"}, |
774 | | {ZBNCP_CMD_MANUF_STOP_TONE, "MANUF_STOP_TONE"}, |
775 | | {ZBNCP_CMD_MANUF_START_STREAM_RANDOM, "MANUF_START_STREAM_RANDOM"}, |
776 | | {ZBNCP_CMD_MANUF_STOP_STREAM_RANDOM, "MANUF_STOP_STREAM_RANDOM"}, |
777 | | {ZBNCP_CMD_NCP_HL_MANUF_SEND_SINGLE_PACKET, "MANUF_SEND_SINGLE_PACKET"}, |
778 | | {ZBNCP_CMD_MANUF_START_TEST_RX, "MANUF_START_TEST_RX"}, |
779 | | {ZBNCP_CMD_MANUF_STOP_TEST_RX, "MANUF_STOP_TEST_RX"}, |
780 | | {ZBNCP_CMD_MANUF_RX_PACKET_IND, "MANUF_RX_PACKET_IND"}, |
781 | | {ZBNCP_CMD_OTA_RUN_BOOTLOADER, "OTA_RUN_BOOTLOADER"}, |
782 | | {ZBNCP_CMD_OTA_START_UPGRADE_IND, "OTA_START_UPGRADE_IND"}, |
783 | | {ZBNCP_CMD_OTA_SEND_PORTION_FW, "OTA_SEND_PORTION_FW"}, |
784 | | {ZBNCP_CMD_READ_NVRAM_RESERVED, "READ_NVRAM_RESERVED"}, |
785 | | {ZBNCP_CMD_WRITE_NVRAM_RESERVED, "WRITE_NVRAM_RESERVED"}, |
786 | | {ZBNCP_CMD_GET_CALIBRATION_INFO, "GET_CALIBRATION_INFO"}, |
787 | | {0, NULL} |
788 | | }; |
789 | | |
790 | | static const value_string zbncp_parameter_id_list[] = |
791 | | { |
792 | | {ZBNCP_PARAMETER_ID_IEEE_ADDR_TABLE_SIZE, "IEEE_ADDR_TABLE_SIZE"}, |
793 | | {ZBNCP_PARAMETER_ID_NEIGHBOR_TABLE_SIZE, "NEIGHBOR_TABLE_SIZE"}, |
794 | | {ZBNCP_PARAMETER_ID_APS_SRC_BINDING_TABLE_SIZE, "APS_SRC_BINDING_TABLE_SIZE"}, |
795 | | {ZBNCP_PARAMETER_ID_APS_GROUP_TABLE_SIZE, "APS_GROUP_TABLE_SIZE"}, |
796 | | {ZBNCP_PARAMETER_ID_NWK_ROUTING_TABLE_SIZE, "NWK_ROUTING_TABLE_SIZE"}, |
797 | | {ZBNCP_PARAMETER_ID_NWK_ROUTE_DISCOVERY_TABLE_SIZE, "NWK_ROUTE_DISCOVERY_TABLE_SIZE"}, |
798 | | {ZBNCP_PARAMETER_ID_IOBUF_POOL_SIZE, "IOBUF_POOL_SIZE"}, |
799 | | {ZBNCP_PARAMETER_ID_PANID_TABLE_SIZE, "PANID_TABLE_SIZE"}, |
800 | | {ZBNCP_PARAMETER_ID_APS_DUPS_TABLE_SIZE, "APS_DUPS_TABLE_SIZE"}, |
801 | | {ZBNCP_PARAMETER_ID_APS_BIND_TRANS_TABLE_SIZE, "APS_BIND_TRANS_TABLE_SIZE"}, |
802 | | {ZBNCP_PARAMETER_ID_N_APS_RETRANS_ENTRIES, "N_APS_RETRANS_ENTRIES"}, |
803 | | {ZBNCP_PARAMETER_ID_NWK_MAX_HOPS, "NWK_MAX_HOPS"}, |
804 | | {ZBNCP_PARAMETER_ID_NIB_MAX_CHILDREN, "NIB_MAX_CHILDREN"}, |
805 | | {ZBNCP_PARAMETER_ID_N_APS_KEY_PAIR_ARR_MAX_SIZE, "N_APS_KEY_PAIR_ARR_MAX_SIZE"}, |
806 | | {ZBNCP_PARAMETER_ID_NWK_MAX_SRC_ROUTES, "NWK_MAX_SRC_ROUTES"}, |
807 | | {ZBNCP_PARAMETER_ID_APS_MAX_WINDOW_SIZE, "APS_MAX_WINDOW_SIZE"}, |
808 | | {ZBNCP_PARAMETER_ID_APS_INTERFRAME_DELAY, "APS_INTERFRAME_DELAY"}, |
809 | | {ZBNCP_PARAMETER_ID_ZDO_ED_BIND_TIMEOUT, "ZDO_ED_BIND_TIMEOUT"}, |
810 | | {ZBNCP_PARAMETER_ID_NIB_PASSIVE_ASK_TIMEOUT, "NIB_PASSIVE_ASK_TIMEOUT"}, |
811 | | {ZBNCP_PARAMETER_ID_APS_ACK_TIMEOUTS, "APS_ACK_TIMEOUTS"}, |
812 | | {ZBNCP_PARAMETER_ID_MAC_BEACON_JITTER, "MAC_BEACON_JITTER"}, |
813 | | {ZBNCP_PARAMETER_ID_TX_POWER, "TX_POWER"}, |
814 | | {ZBNCP_PARAMETER_ID_ZLL_DEFAULT_RSSI_THRESHOLD, "ZLL_DEFAULT_RSSI_THRESHOLD"}, |
815 | | {ZBNCP_PARAMETER_ID_NIB_MTORR, "NIB_MTORR"}, |
816 | | {0, NULL} |
817 | | }; |
818 | | |
819 | | static const value_string zbncp_rst_src_list[] = |
820 | | { |
821 | | {0, "ZB_RESET_SRC_POWER_ON"}, |
822 | | {1, "ZB_RESET_SRC_SW_RESET"}, |
823 | | {2, "ZB_RESET_SRC_RESET_PIN"}, |
824 | | {3, "ZB_RESET_SRC_BROWN_OUT"}, |
825 | | {4, "ZB_RESET_SRC_CLOCK_LOSS"}, |
826 | | {5, "ZB_RESET_SRC_OTHER"}, |
827 | | {0, NULL} |
828 | | }; |
829 | | |
830 | | static const value_string zbncp_power_level[] = |
831 | | { |
832 | | {0, "Critical"}, |
833 | | {4, "33%"}, |
834 | | {8, "66%"}, |
835 | | {12, "100%"}, |
836 | | {0, NULL} |
837 | | }; |
838 | | |
839 | | static const value_string zbncp_nwk_req_type[] = |
840 | | { |
841 | | {0, "Single device response"}, |
842 | | {1, "Extended response"}, |
843 | | {0, NULL} |
844 | | }; |
845 | | |
846 | | static const value_string zbncp_hl_status_generic[] = |
847 | | { |
848 | | {0, "OK"}, |
849 | | {1, "ERROR"}, |
850 | | {2, "BLOCKED"}, |
851 | | {3, "EXIT"}, |
852 | | {4, "BUSY"}, |
853 | | {5, "EOF"}, |
854 | | {6, "OUT_OF_RANGE"}, |
855 | | {7, "EMPTY"}, |
856 | | {8, "CANCELLED"}, |
857 | | {10, "INVALID_PARAMETER_1"}, |
858 | | {11, "INVALID_PARAMETER_2"}, |
859 | | {12, "INVALID_PARAMETER_3"}, |
860 | | {13, "INVALID_PARAMETER_4"}, |
861 | | {14, "INVALID_PARAMETER_5"}, |
862 | | {15, "INVALID_PARAMETER_6"}, |
863 | | {16, "INVALID_PARAMETER_7"}, |
864 | | {17, "INVALID_PARAMETER_8"}, |
865 | | {18, "INVALID_PARAMETER_9"}, |
866 | | {19, "INVALID_PARAMETER_10"}, |
867 | | {20, "INVALID_PARAMETER_11_OR_MORE"}, |
868 | | {21, "PENDING"}, |
869 | | {22, "NO_MEMORY"}, |
870 | | {23, "INVALID_PARAMETER"}, |
871 | | {24, "OPERATION_FAILED"}, |
872 | | {25, "BUFFER_TOO_SMALL"}, |
873 | | {26, "END_OF_LIST"}, |
874 | | {27, "ALREADY_EXISTS"}, |
875 | | {28, "NOT_FOUND"}, |
876 | | {29, "OVERFLOW"}, |
877 | | {30, "TIMEOUT"}, |
878 | | {31, "NOT_IMPLEMENTED"}, |
879 | | {32, "NO_RESOURCES"}, |
880 | | {33, "UNINITIALIZED"}, |
881 | | {34, "NO_SERVER"}, |
882 | | {35, "INVALID_STATE"}, |
883 | | {37, "CONNECTION_FAILED"}, |
884 | | {38, "CONNECTION_LOST"}, |
885 | | {40, "UNAUTHORIZED"}, |
886 | | {41, "CONFLICT"}, |
887 | | {42, "INVALID_FORMAT"}, |
888 | | {43, "NO_MATCH"}, |
889 | | {44, "PROTOCOL_ERROR"}, |
890 | | {45, "VERSION"}, |
891 | | {46, "MALFORMED_ADDRESS"}, |
892 | | {47, "COULD_NOT_READ_FILE"}, |
893 | | {48, "FILE_NOT_FOUND"}, |
894 | | {49, "DIRECTORY_NOT_FOUND"}, |
895 | | {50, "CONVERSION_ERROR"}, |
896 | | {51, "INCOMPATIBLE_TYPES"}, |
897 | | {56, "FILE_CORRUPTED"}, |
898 | | {57, "PAGE_NOT_FOUND"}, |
899 | | {62, "ILLEGAL_REQUEST"}, |
900 | | {64, "INVALID_GROUP"}, |
901 | | {65, "TABLE_FULL"}, |
902 | | {69, "IGNORE"}, |
903 | | {70, "AGAIN"}, |
904 | | {71, "DEVICE_NOT_FOUND"}, |
905 | | {72, "OBSOLETE"}, |
906 | | {0, NULL} |
907 | | }; |
908 | | |
909 | | static const value_string zb_mac_state[] = |
910 | | { |
911 | | {MAC_ENUM_SUCCESS, "SUCCESS"}, |
912 | | {MAC_ENUM_BEACON_LOSS, "BEACON_LOSS"}, |
913 | | {MAC_ENUM_CHANNEL_ACCESS_FAILURE, "CHANNEL_ACCESS_FAILURE"}, |
914 | | {MAC_ENUM_COUNTER_ERROR, "COUNTER_ERROR"}, |
915 | | {MAC_ENUM_DENIED, "DENIED"}, |
916 | | {MAC_ENUM_DISABLE_TRX_FAILURE, "DISABLE_TRX_FAILURE"}, |
917 | | {MAC_ENUM_FRAME_TOO_LONG, "FRAME_TOO_LONG"}, |
918 | | {MAC_ENUM_IMPROPER_KEY_TYPE, "IMPROPER_KEY_TYPE"}, |
919 | | {MAC_ENUM_IMPROPER_SECURITY_LEVEL, "IMPROPER_SECURITY_LEVEL"}, |
920 | | {MAC_ENUM_INVALID_ADDRESS, "INVALID_ADDRESS"}, |
921 | | {MAC_ENUM_INVALID_GTS, "INVALID_GTS"}, |
922 | | {MAC_ENUM_INVALID_HANDLE, "INVALID_HANDLE"}, |
923 | | {MAC_ENUM_INVALID_INDEX, "INVALID_INDEX"}, |
924 | | {MAC_ENUM_INVALID_PARAMETER, "INVALID_PARAMETER"}, |
925 | | {MAC_ENUM_LIMIT_REACHED, "LIMIT_REACHED"}, |
926 | | {MAC_ENUM_NO_ACK, "NO_ACK"}, |
927 | | {MAC_ENUM_NO_BEACON, "NO_BEACON"}, |
928 | | {MAC_ENUM_NO_DATA, "NO_DATA"}, |
929 | | {MAC_ENUM_NO_SHORT_ADDRESS, "NO_SHORT_ADDRESS"}, |
930 | | {MAC_ENUM_ON_TIME_TOO_LONG, "ON_TIME_TOO_LONG"}, |
931 | | {MAC_ENUM_OUT_OF_CAP, "OUT_OF_CAP"}, |
932 | | {MAC_ENUM_PAN_ID_CONFLICT, "PAN_ID_CONFLICT"}, |
933 | | {MAC_ENUM_PAST_TIME, "PAST_TIME"}, |
934 | | {MAC_ENUM_READ_ONLY, "READ_ONLY"}, |
935 | | {MAC_ENUM_REALIGNMENT, "REALIGNMENT"}, |
936 | | {MAC_ENUM_SCAN_IN_PROGRESS, "SCAN_IN_PROGRESS"}, |
937 | | {MAC_ENUM_SECURITY_ERROR, "SECURITY_ERROR"}, |
938 | | {MAC_ENUM_SUPERFRAME_OVERLAP, "SUPERFRAME_OVERLAP"}, |
939 | | {MAC_ENUM_TRACKING_OFF, "TRACKING_OFF"}, |
940 | | {MAC_ENUM_TRANSACTION_EXPIRED, "TRANSACTION_EXPIRED"}, |
941 | | {MAC_ENUM_TRANSACTION_OVERFLOW, "TRANSACTION_OVERFLOW"}, |
942 | | {MAC_ENUM_TX_ACTIVE, "TX_ACTIVE"}, |
943 | | {MAC_ENUM_UNAVAILABLE_KEY, "UNAVAILABLE_KEY"}, |
944 | | {MAC_ENUM_UNSUPPORTED_LEGACY, "UNSUPPORTED_LEGACY"}, |
945 | | {MAC_ENUM_UNSUPPORTED_SECURITY, "UNSUPPORTED_SECURITY"}, |
946 | | {0, NULL} |
947 | | }; |
948 | | |
949 | | static const value_string zb_nwk_state[] = |
950 | | { |
951 | | {ZBNCP_NWK_STATUS_SUCCESS, "SUCCESS"}, |
952 | | {ZBNCP_NWK_STATUS_INVALID_PARAMETER, "INVALID_PARAMETER"}, |
953 | | {ZBNCP_NWK_STATUS_INVALID_REQUEST, "INVALID_REQUEST"}, |
954 | | {ZBNCP_NWK_STATUS_NOT_PERMITTED, "NOT_PERMITTED, "}, |
955 | | {ZBNCP_NWK_STATUS_ALREADY_PRESENT, "ALREADY_PRESENT"}, |
956 | | {ZBNCP_NWK_STATUS_SYNC_FAILURE, "SYNC_FAILURE"}, |
957 | | {ZBNCP_NWK_STATUS_NEIGHBOR_TABLE_FULL, "NEIGHBOR_TABLE_FULL"}, |
958 | | {ZBNCP_NWK_STATUS_UNKNOWN_DEVICE, "UNKNOWN_DEVICE"}, |
959 | | {ZBNCP_NWK_STATUS_UNSUPPORTED_ATTRIBUTE, "UNSUPPORTED_ATTRIBUTE"}, |
960 | | {ZBNCP_NWK_STATUS_NO_NETWORKS, "NO_NETWORKS"}, |
961 | | {ZBNCP_NWK_STATUS_MAX_FRM_COUNTER, "MAX_FRM_COUNTER"}, |
962 | | {ZBNCP_NWK_STATUS_NO_KEY, "NO_KEY"}, |
963 | | {ZBNCP_NWK_STATUS_ROUTE_DISCOVERY_FAILED, "ROUTE_DISCOVERY_FAILED"}, |
964 | | {ZBNCP_NWK_STATUS_ROUTE_ERROR, "ROUTE_ERROR"}, |
965 | | {ZBNCP_NWK_STATUS_BT_TABLE_FULL, "BT_TABLE_FULL"}, |
966 | | {ZBNCP_NWK_STATUS_FRAME_NOT_BUFFERED, "FRAME_NOT_BUFFERED"}, |
967 | | {ZBNCP_NWK_STATUS_INVALID_INTERFACE, "INVALID_INTERFACE"}, |
968 | | {0, NULL} |
969 | | }; |
970 | | |
971 | | static const value_string zb_cbke_state[] = |
972 | | { |
973 | | {ZBNCP_CBKE_STATUS_OK, "OK"}, |
974 | | {ZBNCP_CBKE_STATUS_UNKNOWN_ISSUER, "UNKNOWN_ISSUER"}, |
975 | | {ZBNCP_CBKE_STATUS_BAD_KEY_CONFIRM, "BAD_KEY_CONFIRM"}, |
976 | | {ZBNCP_CBKE_STATUS_BAD_MESSAGE, "BAD_MESSAGE"}, |
977 | | {ZBNCP_CBKE_STATUS_NO_RESOURCES, "NO_RESOURCES"}, |
978 | | {ZBNCP_CBKE_STATUS_UNSUPPORTED_SUITE, "UNSUPPORTED_SUITE"}, |
979 | | {ZBNCP_CBKE_STATUS_INVALID_CERTIFICATE, "INVALID_CERTIFICATE"}, |
980 | | {ZBNCP_CBKE_STATUS_NO_KE_EP, "NO_KE_EP"}, |
981 | | {0, NULL} |
982 | | }; |
983 | | |
984 | | static const value_string zb_nvram_database_types[] = |
985 | | { |
986 | | {ZB_NVRAM_RESERVED, "ZB_NVRAM_RESERVED"}, |
987 | | {ZB_NVRAM_COMMON_DATA, "ZB_NVRAM_COMMON_DATA"}, |
988 | | {ZB_NVRAM_HA_DATA, "ZB_NVRAM_HA_DATA"}, |
989 | | {ZB_NVRAM_ZCL_REPORTING_DATA, "ZB_NVRAM_ZCL_REPORTING_DATA"}, |
990 | | {ZB_NVRAM_APS_SECURE_DATA_GAP, "ZB_NVRAM_APS_SECURE_DATA_GAP"}, |
991 | | {ZB_NVRAM_APS_BINDING_DATA_GAP, "ZB_NVRAM_APS_BINDING_DATA_GAP"}, |
992 | | {ZB_NVRAM_HA_POLL_CONTROL_DATA, "ZB_NVRAM_HA_POLL_CONTROL_DATA"}, |
993 | | {ZB_IB_COUNTERS, "ZB_IB_COUNTERS"}, |
994 | | {ZB_NVRAM_DATASET_GRPW_DATA, "ZB_NVRAM_DATASET_GRPW_DATA"}, |
995 | | {ZB_NVRAM_APP_DATA1, "ZB_NVRAM_APP_DATA1"}, |
996 | | {ZB_NVRAM_APP_DATA2, "ZB_NVRAM_APP_DATA2"}, |
997 | | {ZB_NVRAM_ADDR_MAP, "ZB_NVRAM_ADDR_MAP"}, |
998 | | {ZB_NVRAM_NEIGHBOUR_TBL, "ZB_NVRAM_NEIGHBOUR_TBL"}, |
999 | | {ZB_NVRAM_INSTALLCODES, "ZB_NVRAM_INSTALLCODES"}, |
1000 | | {ZB_NVRAM_APS_SECURE_DATA, "ZB_NVRAM_APS_SECURE_DATA"}, |
1001 | | {ZB_NVRAM_APS_BINDING_DATA, "ZB_NVRAM_APS_BINDING_DATA"}, |
1002 | | {ZB_NVRAM_DATASET_GP_PRPOXYT, "ZB_NVRAM_DATASET_GP_PRPOXYT"}, |
1003 | | {ZB_NVRAM_DATASET_GP_SINKT, "ZB_NVRAM_DATASET_GP_SINKT"}, |
1004 | | {ZB_NVRAM_DATASET_GP_CLUSTER, "ZB_NVRAM_DATASET_GP_CLUSTER"}, |
1005 | | {ZB_NVRAM_APS_GROUPS_DATA, "ZB_NVRAM_APS_GROUPS_DATA"}, |
1006 | | {ZB_NVRAM_DATASET_SE_CERTDB, "ZB_NVRAM_DATASET_SE_CERTDB"}, |
1007 | | {ZB_NVRAM_DATASET_GP_APP_TBL, "ZB_NVRAM_DATASET_GP_APP_TBL"}, |
1008 | | {ZB_NVRAM_APP_DATA3, "ZB_NVRAM_APP_DATA3"}, |
1009 | | {ZB_NVRAM_APP_DATA4, "ZB_NVRAM_APP_DATA4"}, |
1010 | | {ZB_NVRAM_KE_WHITELIST, "ZB_NVRAM_KE_WHITELIST"}, |
1011 | | {ZB_NVRAM_ZDO_DIAGNOSTICS_DATA, "ZB_NVRAM_ZDO_DIAGNOSTICS_DATA"}, |
1012 | | {ZB_NVRAM_DATASET_NUMBER, "ZB_NVRAM_DATASET_NUMBER"}, |
1013 | | {ZB_NVRAM_DATA_SET_TYPE_PAGE_HDR, "ZB_NVRAM_DATA_SET_TYPE_PAGE_HDR"}, |
1014 | | {0, NULL} |
1015 | | }; |
1016 | | |
1017 | | static const value_string zbncp_zgp_key_types[] = |
1018 | | { |
1019 | | {0, "No key"}, |
1020 | | {1, "Zigbee NWK key"}, |
1021 | | {2, "ZGPD group key"}, |
1022 | | {3, "NWK-key derived ZGPD group key"}, |
1023 | | {4, "(Individual) out-of-the-box ZGPD key"}, |
1024 | | {7, "Derived individual ZGPD key"}, |
1025 | | {0, NULL} |
1026 | | }; |
1027 | | |
1028 | | static const value_string zbncp_deliv_mode[] = |
1029 | | { |
1030 | | {0, "Unicast"}, |
1031 | | {2, "Broadcast"}, |
1032 | | {3, "Group"}, |
1033 | | {0, NULL} |
1034 | | }; |
1035 | | |
1036 | | static const value_string zbncp_aps_key_src[] = |
1037 | | { |
1038 | | {0, "Unknown"}, |
1039 | | {1, "CBKE"}, |
1040 | | {0, NULL} |
1041 | | }; |
1042 | | |
1043 | | static const value_string zbncp_aps_key_used[] = |
1044 | | { |
1045 | | {0, "Provisional TCLK"}, |
1046 | | {1, "Unverified TCLK"}, |
1047 | | {2, "Verified TCLK"}, |
1048 | | {3, "Application LK"}, |
1049 | | {0, NULL} |
1050 | | }; |
1051 | | |
1052 | | static const value_string zbncp_rejoin_nwk[] = |
1053 | | { |
1054 | | {0, "Associate"}, |
1055 | | {2, "Rejoin"}, |
1056 | | {0, NULL} |
1057 | | }; |
1058 | | |
1059 | | static const value_string zbncp_beacon_type[] = |
1060 | | { |
1061 | | {0, "Non-enhanced beacon"}, |
1062 | | {1, "Enhanced Beacon"}, |
1063 | | {0, NULL} |
1064 | | }; |
1065 | | |
1066 | | static const value_string zbncp_relationship[] = |
1067 | | { |
1068 | | {0x00, "neighbor is the parent"}, |
1069 | | {0x01, "neighbor is a child"}, |
1070 | | {0x02, "neighbor is a sibling"}, |
1071 | | {0x03, "none of the above"}, |
1072 | | {0x04, "previous child"}, |
1073 | | {0x05, "unauthenticated child"}, |
1074 | | {0, NULL} |
1075 | | }; |
1076 | | |
1077 | | static const value_string zbncp_keepalive_mode[] = |
1078 | | { |
1079 | | {0, "ED_KEEPALIVE_DISABLED"}, |
1080 | | {1, "MAC_DATA_POLL_KEEPALIVE"}, |
1081 | | {2, "ED_TIMEOUT_REQUEST_KEEPALIVE"}, |
1082 | | {3, "BOTH_KEEPALIVE_METHODS"}, |
1083 | | {0, NULL} |
1084 | | }; |
1085 | | |
1086 | | static const value_string zbncp_stop_fast_poll_result[] = |
1087 | | { |
1088 | | {0, "Not started"}, |
1089 | | {1, "Not stopped"}, |
1090 | | {2, "Stopped"}, |
1091 | | {0, NULL} |
1092 | | }; |
1093 | | |
1094 | | static const value_string zbncp_aps_addr_modes[] = |
1095 | | { |
1096 | | {ZB_APSDE_DST_ADDR_MODE_DST_ADDR_ENDP_NOT_PRESENT, "No addr, no EP"}, |
1097 | | {ZB_APSDE_DST_ADDR_MODE_16_GROUP_ENDP_NOT_PRESENT, "16-bit group addr, no EP"}, |
1098 | | {ZB_APSDE_DST_ADDR_MODE_16_ENDP_PRESENT, "16-bit short addr and EP"}, |
1099 | | {ZB_APSDE_DST_ADDR_MODE_64_ENDP_PRESENT, "64-bit ext addr and EP"}, |
1100 | | {ZB_APSDE_DST_ADDR_MODE_BIND_TBL_ID, "From the dst binding table"}, |
1101 | | {0, NULL} |
1102 | | }; |
1103 | | |
1104 | | static const value_string zbncp_cs[] = |
1105 | | { |
1106 | | {1, "KEC Crypto-suite #1"}, |
1107 | | {2, "KEC Crypto-suite #2"}, |
1108 | | {0, NULL} |
1109 | | }; |
1110 | | |
1111 | | static const value_string zbncp_key_src[] = |
1112 | | { |
1113 | | {0, "Unknown"}, |
1114 | | {1, "CBKE"}, |
1115 | | {0, NULL} |
1116 | | }; |
1117 | | |
1118 | | static const value_string zbncp_key_attr[] = |
1119 | | { |
1120 | | {0, "Provisional key"}, |
1121 | | {1, "Unverified key"}, |
1122 | | {2, "Verified key"}, |
1123 | | {3, "Application key"}, |
1124 | | {0, NULL} |
1125 | | }; |
1126 | | |
1127 | | static const value_string zbncp_zdo_auth_types[] = |
1128 | | { |
1129 | | {ZB_ZDO_AUTH_LEGACY_TYPE, "legacy"}, |
1130 | | {ZB_ZDO_AUTH_TCLK_TYPE, "TCLK"}, |
1131 | | {0, NULL} |
1132 | | }; |
1133 | | |
1134 | | static const value_string zbncp_zdo_leg_auth_status_codes[] = |
1135 | | { |
1136 | | {0, "Authorization Success"}, |
1137 | | {1, "Authorization Failure"}, |
1138 | | {0, NULL} |
1139 | | }; |
1140 | | |
1141 | | static const value_string zbncp_zdo_tclk_auth_status_codes[] = |
1142 | | { |
1143 | | {0, "Authorization Success"}, |
1144 | | {1, "Authorization Timeout"}, |
1145 | | {2, "Authorization Failure"}, |
1146 | | {0, NULL} |
1147 | | }; |
1148 | | |
1149 | | static const value_string zbncp_dump_type[] = |
1150 | | { |
1151 | | {0, "Text"}, |
1152 | | {1, "Binary"}, |
1153 | | {0, NULL} |
1154 | | }; |
1155 | | |
1156 | | static const value_string zbncp_calibration_status[] = |
1157 | | { |
1158 | | {0x00, "Customer value"}, |
1159 | | {0x01, "Default value"}, |
1160 | | {0x02, "Error"}, |
1161 | | {0, NULL} |
1162 | | }; |
1163 | | |
1164 | | static const value_string zbncp_force_route_record_sending_modes[] = |
1165 | | { |
1166 | | {0x00, "Disabled"}, |
1167 | | {0x01, "Enabled"}, |
1168 | | {0, NULL} |
1169 | | }; |
1170 | | |
1171 | | static const true_false_string tfs_cinfo_device_type = {"FFD", "RFD"}; |
1172 | | static const true_false_string tfs_cinfo_power_src = {"AC/Mains Power", "Battery"}; |
1173 | | |
1174 | | /* Returns changed offset */ |
1175 | | static unsigned |
1176 | | dissect_zbncp_status(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned offset) |
1177 | 0 | { |
1178 | 0 | unsigned status_category = tvb_get_uint8(tvb, offset); |
1179 | 0 | unsigned status; |
1180 | |
|
1181 | 0 | proto_tree_add_item(tree, hf_zbncp_data_hl_status_cat, tvb, offset, 1, ENC_NA); |
1182 | 0 | offset += 1; |
1183 | | |
1184 | | /* Add status */ |
1185 | 0 | status = tvb_get_uint8(tvb, offset); |
1186 | 0 | switch (status_category) |
1187 | 0 | { |
1188 | 0 | case ZBNCP_HIGH_LVL_STAT_CAT_GENERIC: |
1189 | 0 | proto_tree_add_item(tree, hf_zbncp_data_hl_status_generic, tvb, offset, 1, ENC_NA); |
1190 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, ", Status: %s", val_to_str_const(status, zbncp_hl_status_generic, "Unknown Status")); |
1191 | 0 | break; |
1192 | | |
1193 | 0 | case ZBNCP_HIGH_LVL_STAT_CAT_MAC: |
1194 | 0 | proto_tree_add_item(tree, hf_zbncp_data_hl_status_mac, tvb, offset, 1, ENC_NA); |
1195 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, ", Status: %s", val_to_str_const(status, zb_mac_state, "Unknown Status")); |
1196 | 0 | break; |
1197 | | |
1198 | 0 | case ZBNCP_HIGH_LVL_STAT_CAT_NWK: |
1199 | 0 | proto_tree_add_item(tree, hf_zbncp_data_hl_status_nwk, tvb, offset, 1, ENC_NA); |
1200 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, ", Status: %s", val_to_str_const(status, zb_nwk_state, "Unknown Status")); |
1201 | 0 | break; |
1202 | | |
1203 | 0 | case ZBNCP_HIGH_LVL_STAT_CAT_APS: |
1204 | 0 | dissect_zbee_aps_status_code(tvb, pinfo, tree, offset); |
1205 | 0 | break; |
1206 | | |
1207 | 0 | case ZBNCP_HIGH_LVL_STAT_CAT_CBKE: |
1208 | 0 | proto_tree_add_item(tree, hf_zbncp_data_hl_status_cbke, tvb, offset, 1, ENC_NA); |
1209 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, ", Status: %s", val_to_str_const(status, zb_cbke_state, "Unknown Status")); |
1210 | 0 | break; |
1211 | | |
1212 | 0 | default: |
1213 | 0 | proto_tree_add_item(tree, hf_zbncp_data_hl_status, tvb, offset, 1, ENC_NA); |
1214 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, ", Status: 0x%x", status); |
1215 | 0 | } |
1216 | 0 | offset += 1; |
1217 | |
|
1218 | 0 | return offset; |
1219 | 0 | } |
1220 | | |
1221 | | static tvbuff_t * |
1222 | | dissect_zbncp_dump_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) |
1223 | 0 | { |
1224 | 0 | proto_tree *zbncp_dump_info_tree; |
1225 | 0 | unsigned idx, offset; |
1226 | 0 | uint8_t options; |
1227 | |
|
1228 | 0 | static int *const options_field[] = { |
1229 | 0 | &hf_zbncp_dump_options_dir, |
1230 | 0 | &hf_zbncp_dump_options_int_state, |
1231 | 0 | &hf_zbncp_dump_options_tx_conflict, |
1232 | 0 | NULL}; |
1233 | | |
1234 | | /* check is it ZBNCP dump sign or not */ |
1235 | 0 | for (idx = 0; idx < ZBNCP_DUMP_INFO_SIGN_SIZE; idx++) |
1236 | 0 | { |
1237 | 0 | if (tvb_get_uint8(tvb, idx) != ZBNCP_DUMP_INFO_SIGN[idx]) |
1238 | 0 | { |
1239 | 0 | return tvb; |
1240 | 0 | } |
1241 | 0 | } |
1242 | | |
1243 | | /* Check type */ |
1244 | 0 | if (tvb_get_uint8(tvb, ZBNCP_DUMP_INFO_SIGN_SIZE + 1) != ZBNCP_DUMP_INFO_NCP_TYPE) |
1245 | 0 | { |
1246 | 0 | return tvb; |
1247 | 0 | } |
1248 | | |
1249 | 0 | zbncp_dump_info_tree = proto_tree_add_subtree(tree, tvb, 0, ZBNCP_DUMP_INFO_SIZE, ett_zbncp_dump, NULL, "ZBNCP Dump"); |
1250 | |
|
1251 | 0 | proto_tree_add_item(zbncp_dump_info_tree, hf_zbncp_dump_preamble, tvb, 0, ZBNCP_DUMP_INFO_SIGN_SIZE, ENC_ASCII|ENC_NA); |
1252 | 0 | offset = ZBNCP_DUMP_INFO_SIGN_SIZE; |
1253 | |
|
1254 | 0 | proto_tree_add_item(zbncp_dump_info_tree, hf_zbncp_dump_version, tvb, offset, 1, ENC_NA); |
1255 | 0 | offset += 1; |
1256 | |
|
1257 | 0 | proto_tree_add_item(zbncp_dump_info_tree, hf_zbncp_dump_type, tvb, offset, 1, ENC_NA); |
1258 | 0 | offset += 1; |
1259 | | |
1260 | | /* options subtree */ |
1261 | 0 | options = tvb_get_uint8(tvb, offset); |
1262 | 0 | proto_tree_add_bitmask(zbncp_dump_info_tree, tvb, offset, hf_zbncp_dump_options, ett_zbncp_dump_opt, options_field, ENC_NA); |
1263 | 0 | offset += 1; |
1264 | |
|
1265 | 0 | if (options & ZBNCP_DUMP_DIR_MASK) |
1266 | 0 | { |
1267 | 0 | col_set_str(pinfo->cinfo, COL_DEF_SRC, "NCP"); |
1268 | 0 | col_set_str(pinfo->cinfo, COL_DEF_DST, "HOST"); |
1269 | 0 | } |
1270 | 0 | else |
1271 | 0 | { |
1272 | 0 | col_set_str(pinfo->cinfo, COL_DEF_SRC, "HOST"); |
1273 | 0 | col_set_str(pinfo->cinfo, COL_DEF_DST, "NCP"); |
1274 | 0 | } |
1275 | |
|
1276 | 0 | if (options & ZBNCP_DUMP_POTENTIAL_TX_RX_ERROR_MASK) |
1277 | 0 | { |
1278 | 0 | col_append_str(pinfo->cinfo, COL_INFO, ", Potential RX/TX Conflict"); |
1279 | 0 | } |
1280 | |
|
1281 | 0 | return tvb_new_subset_remaining(tvb, offset); |
1282 | 0 | } |
1283 | | |
1284 | | static unsigned |
1285 | | dissect_zbncp_high_level_hdr(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned offset, uint8_t *ptype, uint16_t *call_id) |
1286 | 0 | { |
1287 | 0 | proto_tree *zbncp_comm_hdr_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4, ett_zbncp_hl_hdr, NULL, "High Level Header"); |
1288 | | |
1289 | | /* Dissect common header */ |
1290 | |
|
1291 | 0 | proto_tree_add_item(zbncp_comm_hdr_tree, hf_zbncp_data_hl_version, tvb, offset, 1, ENC_NA); |
1292 | 0 | offset += 1; |
1293 | |
|
1294 | 0 | *ptype = tvb_get_uint8(tvb, offset); |
1295 | 0 | proto_tree_add_item(zbncp_comm_hdr_tree, hf_zbncp_data_hl_packet_type, tvb, offset, 1, ENC_NA); |
1296 | 0 | offset += 1; |
1297 | |
|
1298 | 0 | *call_id = tvb_get_uint16(tvb, offset, ENC_LITTLE_ENDIAN); |
1299 | 0 | proto_tree_add_item(zbncp_comm_hdr_tree, hf_zbncp_data_hl_call_id, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1300 | 0 | offset += 2; |
1301 | | |
1302 | | /* Update col */ |
1303 | 0 | col_append_str(pinfo->cinfo, COL_INFO, val_to_str_const(*ptype, zbncp_hl_type, "Unknown Type")); |
1304 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, ", %s", val_to_str_const(*call_id, zbncp_hl_call_id, "Unknown Call ID")); |
1305 | | |
1306 | | /* Dissect additional values */ |
1307 | |
|
1308 | 0 | if (*ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST || |
1309 | 0 | *ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
1310 | 0 | { |
1311 | | /* add TSN */ |
1312 | 0 | proto_tree_add_item(zbncp_comm_hdr_tree, hf_zbncp_data_hl_tsn, tvb, offset, 1, ENC_NA); |
1313 | 0 | offset += 1; |
1314 | 0 | } |
1315 | |
|
1316 | 0 | if (*ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
1317 | 0 | { |
1318 | 0 | offset = dissect_zbncp_status(tvb, pinfo, zbncp_comm_hdr_tree, offset); |
1319 | 0 | } |
1320 | |
|
1321 | 0 | return offset; |
1322 | 0 | } |
1323 | | |
1324 | | static void |
1325 | | dissect_zbncp_high_level(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned offset, uint16_t *cmd_id) |
1326 | 0 | { |
1327 | 0 | uint8_t packet_type; |
1328 | |
|
1329 | 0 | offset = dissect_zbncp_high_level_hdr(tvb, pinfo, tree, offset, &packet_type, cmd_id); |
1330 | |
|
1331 | 0 | dissect_zbncp_high_level_body(tvb, pinfo, tree, offset, packet_type, *cmd_id); |
1332 | 0 | } |
1333 | | |
1334 | | static void |
1335 | | dissect_zbncp_dst_addrs(proto_tree *zbncp_hl_body_tree, tvbuff_t *tvb, unsigned dst_addr_mode_offset, unsigned *offset) |
1336 | 0 | { |
1337 | 0 | uint8_t dst_addr_mode = tvb_get_uint8(tvb, dst_addr_mode_offset); |
1338 | |
|
1339 | 0 | if (dst_addr_mode == ZB_APSDE_DST_ADDR_MODE_DST_ADDR_ENDP_NOT_PRESENT || dst_addr_mode == ZB_APSDE_DST_ADDR_MODE_64_ENDP_PRESENT || dst_addr_mode == ZB_APSDE_DST_ADDR_MODE_BIND_TBL_ID) |
1340 | 0 | { |
1341 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dst_ieee_addr, tvb, *offset, 8, ENC_NA); |
1342 | 0 | *offset += 8; |
1343 | 0 | } |
1344 | 0 | else if (dst_addr_mode == ZB_APSDE_DST_ADDR_MODE_16_GROUP_ENDP_NOT_PRESENT || dst_addr_mode == ZB_APSDE_DST_ADDR_MODE_16_ENDP_PRESENT) |
1345 | 0 | { |
1346 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dst_nwk_addr, tvb, *offset, 2, ENC_LITTLE_ENDIAN); |
1347 | 0 | *offset += 8; |
1348 | 0 | } |
1349 | 0 | } |
1350 | | |
1351 | | static void |
1352 | | dissect_zbncp_high_level_body(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned offset, uint8_t ptype _U_, uint16_t cmd_id) |
1353 | 0 | { |
1354 | 0 | proto_tree *zbncp_hl_body_tree; |
1355 | |
|
1356 | 0 | if (offset >= tvb_reported_length(tvb)) |
1357 | 0 | { |
1358 | 0 | return; |
1359 | 0 | } |
1360 | | |
1361 | 0 | zbncp_hl_body_tree = proto_tree_add_subtree_format(tree, tvb, offset, tvb_reported_length(tvb) - offset, ett_zbncp_hl_body, NULL, "Data"); |
1362 | |
|
1363 | 0 | switch (cmd_id) |
1364 | 0 | { |
1365 | | /* NCP Configuration API */ |
1366 | 0 | case ZBNCP_CMD_GET_MODULE_VERSION: |
1367 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
1368 | 0 | { |
1369 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_fw_vers, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
1370 | 0 | offset += 4; |
1371 | |
|
1372 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_stack_vers, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
1373 | 0 | offset += 4; |
1374 | |
|
1375 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_proto_vers, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
1376 | 0 | offset += 4; |
1377 | 0 | } |
1378 | 0 | break; |
1379 | | |
1380 | 0 | case ZBNCP_CMD_NCP_RESET: |
1381 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
1382 | 0 | { |
1383 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_reset_opt, tvb, offset, 1, ENC_NA); |
1384 | 0 | offset += 1; |
1385 | 0 | } |
1386 | 0 | break; |
1387 | | |
1388 | 0 | case ZBNCP_CMD_GET_ZIGBEE_ROLE: |
1389 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
1390 | 0 | { |
1391 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_zb_role, tvb, offset, 1, ENC_NA); |
1392 | 0 | offset += 1; |
1393 | 0 | } |
1394 | 0 | break; |
1395 | | |
1396 | 0 | case ZBNCP_CMD_SET_ZIGBEE_ROLE: |
1397 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
1398 | 0 | { |
1399 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_zb_role, tvb, offset, 1, ENC_NA); |
1400 | 0 | offset += 1; |
1401 | 0 | } |
1402 | 0 | break; |
1403 | | |
1404 | 0 | case ZBNCP_CMD_GET_ZIGBEE_CHANNEL_MASK: |
1405 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
1406 | 0 | { |
1407 | 0 | unsigned i; |
1408 | 0 | uint8_t ch_list_len = tvb_get_uint8(tvb, offset); |
1409 | |
|
1410 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ch_list_len, tvb, offset, 1, ENC_NA); |
1411 | 0 | offset += 1; |
1412 | |
|
1413 | 0 | if (ch_list_len) |
1414 | 0 | { |
1415 | 0 | proto_tree *zbncp_hl_body_data_ch_list = proto_tree_add_subtree_format( |
1416 | 0 | zbncp_hl_body_tree, tvb, offset, ch_list_len * 5, ett_zbncp_data_ch_list, NULL, "Channel List"); |
1417 | 0 | for (i = 0; i < ch_list_len; i++) |
1418 | 0 | { |
1419 | 0 | proto_tree *zbncp_hl_body_data_channel_tree = proto_tree_add_subtree_format( |
1420 | 0 | zbncp_hl_body_data_ch_list, tvb, offset, 5, ett_zbncp_data_channel, NULL, "Channel"); |
1421 | |
|
1422 | 0 | proto_tree_add_item(zbncp_hl_body_data_channel_tree, hf_zbncp_data_page, tvb, offset, 1, ENC_NA); |
1423 | 0 | offset += 1; |
1424 | |
|
1425 | 0 | proto_tree_add_item(zbncp_hl_body_data_channel_tree, hf_zbncp_data_ch_mask, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
1426 | 0 | offset += 4; |
1427 | 0 | } |
1428 | 0 | } |
1429 | 0 | } |
1430 | 0 | break; |
1431 | | |
1432 | 0 | case ZBNCP_CMD_SET_ZIGBEE_CHANNEL_MASK: |
1433 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
1434 | 0 | { |
1435 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_page, tvb, offset, 1, ENC_NA); |
1436 | 0 | offset += 1; |
1437 | |
|
1438 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ch_mask, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
1439 | 0 | offset += 4; |
1440 | 0 | } |
1441 | 0 | break; |
1442 | | |
1443 | 0 | case ZBNCP_CMD_GET_ZIGBEE_CHANNEL: |
1444 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
1445 | 0 | { |
1446 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_page, tvb, offset, 1, ENC_NA); |
1447 | 0 | offset += 1; |
1448 | |
|
1449 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_channel, tvb, offset, 1, ENC_NA); |
1450 | 0 | offset += 1; |
1451 | 0 | } |
1452 | 0 | break; |
1453 | | |
1454 | 0 | case ZBNCP_CMD_GET_PAN_ID: |
1455 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
1456 | 0 | { |
1457 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_pan_id, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1458 | 0 | offset += 2; |
1459 | 0 | } |
1460 | 0 | break; |
1461 | | |
1462 | 0 | case ZBNCP_CMD_SET_PAN_ID: |
1463 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
1464 | 0 | { |
1465 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_pan_id, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1466 | 0 | offset += 2; |
1467 | 0 | } |
1468 | 0 | break; |
1469 | | |
1470 | 0 | case ZBNCP_CMD_GET_LOCAL_IEEE_ADDR: |
1471 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_mac_int_num, tvb, offset, 1, ENC_NA); |
1472 | 0 | offset += 1; |
1473 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
1474 | 0 | { |
1475 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ieee_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
1476 | 0 | offset += 8; |
1477 | 0 | } |
1478 | 0 | break; |
1479 | | |
1480 | 0 | case ZBNCP_CMD_SET_LOCAL_IEEE_ADDR: |
1481 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
1482 | 0 | { |
1483 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_mac_int_num, tvb, offset, 1, ENC_NA); |
1484 | 0 | offset += 1; |
1485 | |
|
1486 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ieee_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
1487 | 0 | offset += 8; |
1488 | 0 | } |
1489 | 0 | break; |
1490 | | |
1491 | 0 | case ZBNCP_CMD_SET_TRACE: |
1492 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
1493 | 0 | { |
1494 | 0 | static int *const trace_bitmask[] = { |
1495 | 0 | &hf_zbncp_data_trace_wireless_traf, |
1496 | 0 | &hf_zbncp_data_trace_reserved, |
1497 | 0 | &hf_zbncp_data_trace_ncp_ll_proto, |
1498 | 0 | &hf_zbncp_data_trace_host_int_line, |
1499 | 0 | &hf_zbncp_data_trace_sleep_awake, |
1500 | 0 | NULL}; |
1501 | |
|
1502 | 0 | proto_tree_add_bitmask(zbncp_hl_body_tree, tvb, offset, hf_zbncp_data_trace_mask, ett_zbncp_data_trace_bitmask, trace_bitmask, ENC_LITTLE_ENDIAN); |
1503 | 0 | offset += 4; |
1504 | 0 | } |
1505 | 0 | break; |
1506 | | |
1507 | 0 | case ZBNCP_CMD_GET_KEEPALIVE_TIMEOUT: |
1508 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
1509 | 0 | { |
1510 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_keepalive, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
1511 | 0 | offset += 4; |
1512 | 0 | } |
1513 | 0 | break; |
1514 | | |
1515 | 0 | case ZBNCP_CMD_SET_KEEPALIVE_TIMEOUT: |
1516 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
1517 | 0 | { |
1518 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_keepalive, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
1519 | 0 | offset += 4; |
1520 | 0 | } |
1521 | 0 | break; |
1522 | | |
1523 | 0 | case ZBNCP_CMD_GET_TX_POWER: |
1524 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
1525 | 0 | { |
1526 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_res_tx_power, tvb, offset, 1, ENC_NA); |
1527 | 0 | offset += 1; |
1528 | 0 | } |
1529 | 0 | break; |
1530 | | |
1531 | 0 | case ZBNCP_CMD_SET_TX_POWER: |
1532 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
1533 | 0 | { |
1534 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_req_tx_power, tvb, offset, 1, ENC_NA); |
1535 | 0 | offset += 1; |
1536 | 0 | } |
1537 | 0 | else if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
1538 | 0 | { |
1539 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_res_tx_power, tvb, offset, 1, ENC_NA); |
1540 | 0 | offset += 1; |
1541 | 0 | } |
1542 | 0 | break; |
1543 | | |
1544 | 0 | case ZBNCP_CMD_GET_RX_ON_WHEN_IDLE: |
1545 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
1546 | 0 | { |
1547 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_rx_on_idle, tvb, offset, 1, ENC_NA); |
1548 | 0 | offset += 1; |
1549 | 0 | } |
1550 | 0 | break; |
1551 | | |
1552 | 0 | case ZBNCP_CMD_SET_RX_ON_WHEN_IDLE: |
1553 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
1554 | 0 | { |
1555 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_rx_on_idle, tvb, offset, 1, ENC_NA); |
1556 | 0 | offset += 1; |
1557 | 0 | } |
1558 | 0 | break; |
1559 | | |
1560 | 0 | case ZBNCP_CMD_GET_JOINED: |
1561 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
1562 | 0 | { |
1563 | 0 | static int *const join_bitmask[] = { |
1564 | 0 | &hf_zbncp_data_joined_bit, |
1565 | 0 | &hf_zbncp_data_parent_bit, |
1566 | 0 | NULL}; |
1567 | |
|
1568 | 0 | proto_tree_add_bitmask(zbncp_hl_body_tree, tvb, offset, hf_zbncp_data_joined, ett_zbncp_data_joind_bitmask, join_bitmask, ENC_NA); |
1569 | 0 | offset += 1; |
1570 | 0 | } |
1571 | 0 | break; |
1572 | | |
1573 | 0 | case ZBNCP_CMD_GET_AUTHENTICATED: |
1574 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
1575 | 0 | { |
1576 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_authenticated, tvb, offset, 1, ENC_NA); |
1577 | 0 | offset += 1; |
1578 | 0 | } |
1579 | 0 | break; |
1580 | | |
1581 | 0 | case ZBNCP_CMD_GET_ED_TIMEOUT: |
1582 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
1583 | 0 | { |
1584 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_timeout, tvb, offset, 1, ENC_NA); |
1585 | 0 | offset += 1; |
1586 | 0 | } |
1587 | 0 | break; |
1588 | | |
1589 | 0 | case ZBNCP_CMD_SET_ED_TIMEOUT: |
1590 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
1591 | 0 | { |
1592 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_timeout, tvb, offset, 1, ENC_NA); |
1593 | 0 | offset += 1; |
1594 | 0 | } |
1595 | 0 | break; |
1596 | | |
1597 | 0 | case ZBNCP_CMD_ADD_VISIBLE_DEV: |
1598 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
1599 | 0 | { |
1600 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ieee_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
1601 | 0 | offset += 8; |
1602 | 0 | } |
1603 | 0 | break; |
1604 | | |
1605 | 0 | case ZBNCP_CMD_ADD_INVISIBLE_SHORT: |
1606 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
1607 | 0 | { |
1608 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1609 | 0 | offset += 2; |
1610 | 0 | } |
1611 | 0 | break; |
1612 | | |
1613 | 0 | case ZBNCP_CMD_RM_INVISIBLE_SHORT: |
1614 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
1615 | 0 | { |
1616 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1617 | 0 | offset += 2; |
1618 | 0 | } |
1619 | 0 | break; |
1620 | | |
1621 | 0 | case ZBNCP_CMD_SET_NWK_KEY: |
1622 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
1623 | 0 | { |
1624 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_key, tvb, offset, 16, ENC_NA); |
1625 | 0 | offset += 16; |
1626 | |
|
1627 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_key_num, tvb, offset, 1, ENC_NA); |
1628 | 0 | offset += 1; |
1629 | 0 | } |
1630 | 0 | break; |
1631 | | |
1632 | 0 | case ZBNCP_CMD_GET_SERIAL_NUMBER: |
1633 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
1634 | 0 | { |
1635 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_serial_num, tvb, offset, 16, ENC_NA); |
1636 | 0 | offset += 16; |
1637 | 0 | } |
1638 | 0 | break; |
1639 | | |
1640 | 0 | case ZBNCP_CMD_GET_VENDOR_DATA: |
1641 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
1642 | 0 | { |
1643 | 0 | uint8_t size = tvb_get_uint8(tvb, offset); |
1644 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_size, tvb, offset, 1, ENC_NA); |
1645 | 0 | offset += 1; |
1646 | |
|
1647 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_vendor_data, tvb, offset, size, ENC_NA); |
1648 | 0 | offset += size; |
1649 | 0 | } |
1650 | 0 | break; |
1651 | | |
1652 | 0 | case ZBNCP_CMD_GET_NWK_KEYS: |
1653 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
1654 | 0 | { |
1655 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_key, tvb, offset, 16, ENC_NA); |
1656 | 0 | offset += 16; |
1657 | |
|
1658 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_key_num, tvb, offset, 1, ENC_NA); |
1659 | 0 | offset += 1; |
1660 | |
|
1661 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_key, tvb, offset, 16, ENC_NA); |
1662 | 0 | offset += 16; |
1663 | |
|
1664 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_key_num, tvb, offset, 1, ENC_NA); |
1665 | 0 | offset += 1; |
1666 | |
|
1667 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_key, tvb, offset, 16, ENC_NA); |
1668 | 0 | offset += 16; |
1669 | |
|
1670 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_key_num, tvb, offset, 1, ENC_NA); |
1671 | 0 | offset += 1; |
1672 | 0 | } |
1673 | 0 | break; |
1674 | | |
1675 | 0 | case ZBNCP_CMD_GET_APS_KEY_BY_IEEE: |
1676 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
1677 | 0 | { |
1678 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ieee_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
1679 | 0 | offset += 8; |
1680 | 0 | } |
1681 | 0 | else if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
1682 | 0 | { |
1683 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_aps_key, tvb, offset, 16, ENC_NA); |
1684 | 0 | offset += 16; |
1685 | 0 | } |
1686 | 0 | break; |
1687 | | |
1688 | 0 | case ZBNCP_CMD_BIG_PKT_TO_NCP: |
1689 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
1690 | 0 | { |
1691 | 0 | uint16_t pkt_len; |
1692 | |
|
1693 | 0 | pkt_len = tvb_get_uint16(tvb, offset, ENC_LITTLE_ENDIAN); |
1694 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_pkt_len, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1695 | 0 | offset += 2; |
1696 | |
|
1697 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_pkt, tvb, offset, pkt_len, ENC_NA); |
1698 | 0 | offset += pkt_len; |
1699 | 0 | } |
1700 | 0 | break; |
1701 | | |
1702 | 0 | case ZBNCP_CMD_GET_PARENT_ADDR: |
1703 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
1704 | 0 | { |
1705 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_parent_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1706 | 0 | offset += 2; |
1707 | 0 | } |
1708 | 0 | break; |
1709 | | |
1710 | 0 | case ZBNCP_CMD_GET_EXT_PAN_ID: |
1711 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
1712 | 0 | { |
1713 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ext_pan_id, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
1714 | 0 | offset += 8; |
1715 | 0 | } |
1716 | 0 | break; |
1717 | | |
1718 | 0 | case ZBNCP_CMD_GET_COORDINATOR_VERSION: |
1719 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
1720 | 0 | { |
1721 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_coordinator_version, tvb, offset++, 1, ENC_NA); |
1722 | 0 | } |
1723 | 0 | break; |
1724 | | |
1725 | 0 | case ZBNCP_CMD_GET_SHORT_ADDRESS: |
1726 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
1727 | 0 | { |
1728 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1729 | 0 | offset += 2; |
1730 | 0 | } |
1731 | 0 | break; |
1732 | | |
1733 | 0 | case ZBNCP_CMD_GET_TRUST_CENTER_ADDRESS: |
1734 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
1735 | 0 | { |
1736 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_trust_center_addres, tvb, offset, 8, ENC_NA); |
1737 | 0 | offset += 8; |
1738 | 0 | } |
1739 | 0 | break; |
1740 | | |
1741 | 0 | case ZBNCP_CMD_DEBUG_WRITE: |
1742 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
1743 | 0 | { |
1744 | 0 | int dump_len; |
1745 | |
|
1746 | 0 | uint8_t dump_type = tvb_get_uint8(tvb, offset); |
1747 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dump_type, tvb, offset, 1, ENC_NA); |
1748 | 0 | offset += 1; |
1749 | |
|
1750 | 0 | dump_len = tvb_reported_length(tvb) - offset; |
1751 | 0 | if (dump_type == 0) |
1752 | 0 | { |
1753 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dump_text, tvb, offset, dump_len, ENC_ASCII | ENC_NA); |
1754 | 0 | offset += dump_len; |
1755 | 0 | } |
1756 | 0 | else if (dump_type == 1) |
1757 | 0 | { |
1758 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dump_bin, tvb, offset, dump_len, ENC_NA); |
1759 | 0 | offset += dump_len; |
1760 | 0 | } |
1761 | 0 | } |
1762 | 0 | break; |
1763 | | |
1764 | 0 | case ZBNCP_CMD_GET_CONFIG_PARAMETER: |
1765 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
1766 | 0 | { |
1767 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_parameter_id, tvb, offset, 1, ENC_NA); |
1768 | 0 | offset += 1; |
1769 | 0 | } |
1770 | 0 | else if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
1771 | 0 | { |
1772 | 0 | uint8_t param_id; |
1773 | |
|
1774 | 0 | param_id = tvb_get_uint8(tvb, offset); |
1775 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_parameter_id, tvb, offset, 1, ENC_NA); |
1776 | 0 | offset += 1; |
1777 | |
|
1778 | 0 | switch (param_id) |
1779 | 0 | { |
1780 | 0 | case ZBNCP_PARAMETER_ID_IEEE_ADDR_TABLE_SIZE: |
1781 | 0 | case ZBNCP_PARAMETER_ID_NEIGHBOR_TABLE_SIZE: |
1782 | 0 | case ZBNCP_PARAMETER_ID_APS_SRC_BINDING_TABLE_SIZE: |
1783 | 0 | case ZBNCP_PARAMETER_ID_APS_GROUP_TABLE_SIZE: |
1784 | 0 | case ZBNCP_PARAMETER_ID_NWK_ROUTE_DISCOVERY_TABLE_SIZE: |
1785 | 0 | case ZBNCP_PARAMETER_ID_IOBUF_POOL_SIZE: |
1786 | 0 | case ZBNCP_PARAMETER_ID_PANID_TABLE_SIZE: |
1787 | 0 | case ZBNCP_PARAMETER_ID_APS_DUPS_TABLE_SIZE: |
1788 | 0 | case ZBNCP_PARAMETER_ID_APS_BIND_TRANS_TABLE_SIZE: |
1789 | 0 | case ZBNCP_PARAMETER_ID_N_APS_RETRANS_ENTRIES: |
1790 | 0 | case ZBNCP_PARAMETER_ID_NWK_MAX_HOPS: |
1791 | 0 | case ZBNCP_PARAMETER_ID_NIB_MAX_CHILDREN: |
1792 | 0 | case ZBNCP_PARAMETER_ID_N_APS_KEY_PAIR_ARR_MAX_SIZE: |
1793 | 0 | case ZBNCP_PARAMETER_ID_NWK_MAX_SRC_ROUTES: |
1794 | 0 | case ZBNCP_PARAMETER_ID_APS_MAX_WINDOW_SIZE: |
1795 | 0 | case ZBNCP_PARAMETER_ID_APS_INTERFRAME_DELAY: |
1796 | 0 | case ZBNCP_PARAMETER_ID_ZDO_ED_BIND_TIMEOUT: |
1797 | 0 | case ZBNCP_PARAMETER_ID_ZLL_DEFAULT_RSSI_THRESHOLD: |
1798 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_value8_dec, tvb, offset, 1, ENC_NA); |
1799 | 0 | offset += 1; |
1800 | 0 | break; |
1801 | | |
1802 | 0 | case ZBNCP_PARAMETER_ID_NIB_PASSIVE_ASK_TIMEOUT: |
1803 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_value16_dec, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1804 | 0 | offset += 2; |
1805 | 0 | break; |
1806 | | |
1807 | 0 | case ZBNCP_PARAMETER_ID_APS_ACK_TIMEOUTS: |
1808 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_aps_ack_to_non_sleepy, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1809 | 0 | offset += 2; |
1810 | |
|
1811 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_aps_ack_to_sleepy, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1812 | 0 | offset += 2; |
1813 | 0 | break; |
1814 | | |
1815 | 0 | case ZBNCP_PARAMETER_ID_MAC_BEACON_JITTER: |
1816 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_min16, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1817 | 0 | offset += 2; |
1818 | |
|
1819 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_max16, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1820 | 0 | offset += 2; |
1821 | 0 | break; |
1822 | | |
1823 | 0 | case ZBNCP_PARAMETER_ID_TX_POWER: |
1824 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_default8_sign, tvb, offset, 1, ENC_NA); |
1825 | 0 | offset += 1; |
1826 | |
|
1827 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_current8_sign, tvb, offset, 1, ENC_NA); |
1828 | 0 | offset += 1; |
1829 | |
|
1830 | 0 | break; |
1831 | | |
1832 | 0 | case ZBNCP_PARAMETER_ID_NIB_MTORR: |
1833 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_is_concentrator, tvb, offset, 1, ENC_NA); |
1834 | 0 | offset += 1; |
1835 | |
|
1836 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_concentrator_radius, tvb, offset, 1, ENC_NA); |
1837 | 0 | offset += 1; |
1838 | |
|
1839 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_time16, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1840 | 0 | offset += 2; |
1841 | 0 | break; |
1842 | 0 | } |
1843 | 0 | } |
1844 | 0 | break; |
1845 | | |
1846 | 0 | case ZBNCP_CMD_GET_LOCK_STATUS: |
1847 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
1848 | 0 | { |
1849 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_lock_status, tvb, offset, 1, ENC_NA); |
1850 | 0 | offset += 1; |
1851 | 0 | } |
1852 | 0 | break; |
1853 | | |
1854 | 0 | case ZBNCP_CMD_GET_TRACE: |
1855 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
1856 | 0 | { |
1857 | 0 | static int *const trace_bitmask[] = { |
1858 | 0 | &hf_zbncp_data_trace_wireless_traf, |
1859 | 0 | &hf_zbncp_data_trace_ncp_ll_proto, |
1860 | 0 | &hf_zbncp_data_trace_host_int_line, |
1861 | 0 | &hf_zbncp_data_trace_sleep_awake, |
1862 | 0 | NULL}; |
1863 | |
|
1864 | 0 | proto_tree_add_bitmask(zbncp_hl_body_tree, tvb, offset, hf_zbncp_data_trace_mask, ett_zbncp_data_trace_bitmask, trace_bitmask, ENC_LITTLE_ENDIAN); |
1865 | 0 | offset += 4; |
1866 | 0 | } |
1867 | 0 | break; |
1868 | | |
1869 | 0 | case ZBNCP_CMD_NCP_RESET_IND: |
1870 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_INDICATION) |
1871 | 0 | { |
1872 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_reset_source, tvb, offset, 1, ENC_NA); |
1873 | 0 | offset += 1; |
1874 | 0 | } |
1875 | 0 | break; |
1876 | | |
1877 | 0 | case ZBNCP_CMD_SET_NWK_LEAVE_ALLOWED: |
1878 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
1879 | 0 | { |
1880 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_nwk_leave_allowed, tvb, offset, 1, ENC_NA); |
1881 | 0 | offset += 1; |
1882 | 0 | } |
1883 | 0 | break; |
1884 | | |
1885 | 0 | case ZBNCP_CMD_GET_NWK_LEAVE_ALLOWED: |
1886 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
1887 | 0 | { |
1888 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_nwk_leave_allowed, tvb, offset, 1, ENC_NA); |
1889 | 0 | offset += 1; |
1890 | 0 | } |
1891 | 0 | break; |
1892 | | |
1893 | 0 | case ZBNCP_CMD_NVRAM_WRITE: |
1894 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
1895 | 0 | { |
1896 | 0 | unsigned dataset_count, idx; |
1897 | 0 | uint16_t dataset_len; |
1898 | |
|
1899 | 0 | dataset_count = tvb_get_uint8(tvb, offset); |
1900 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nvram_dataset_quantity, tvb, offset, 1, ENC_NA); |
1901 | 0 | offset += 1; |
1902 | | |
1903 | | /* multiple datasets */ |
1904 | 0 | for (idx = 0; idx < dataset_count; idx++) |
1905 | 0 | { |
1906 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nvram_dataset_type, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1907 | 0 | offset += 2; |
1908 | |
|
1909 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dataset_version, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1910 | 0 | offset += 2; |
1911 | |
|
1912 | 0 | dataset_len = tvb_get_uint16(tvb, offset, ENC_LITTLE_ENDIAN); |
1913 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dataset_length, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1914 | 0 | offset += 2; |
1915 | |
|
1916 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nvram_dataset_data, tvb, offset, dataset_len, ENC_NA); |
1917 | 0 | offset += dataset_len; |
1918 | 0 | } |
1919 | 0 | } |
1920 | 0 | break; |
1921 | | |
1922 | 0 | case ZBNCP_CMD_NVRAM_READ: |
1923 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
1924 | 0 | { |
1925 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nvram_dataset_type, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1926 | 0 | offset += 2; |
1927 | 0 | } |
1928 | 0 | else if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
1929 | 0 | { |
1930 | 0 | uint16_t dataset_len; |
1931 | |
|
1932 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nvram_version, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1933 | 0 | offset += 2; |
1934 | |
|
1935 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nvram_dataset_type, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1936 | 0 | offset += 2; |
1937 | |
|
1938 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dataset_version, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1939 | 0 | offset += 2; |
1940 | |
|
1941 | 0 | dataset_len = tvb_get_uint16(tvb, offset, ENC_LITTLE_ENDIAN); |
1942 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dataset_length, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1943 | 0 | offset += 2; |
1944 | |
|
1945 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nvram_dataset_data, tvb, offset, dataset_len, ENC_NA); |
1946 | 0 | offset += dataset_len; |
1947 | 0 | } |
1948 | 0 | break; |
1949 | | |
1950 | 0 | case ZBNCP_CMD_SET_TC_POLICY: |
1951 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
1952 | 0 | { |
1953 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_tc_policy_type, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
1954 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_tc_policy_value, tvb, offset + 2, 1, ENC_NA); |
1955 | 0 | offset += 3; |
1956 | 0 | } |
1957 | 0 | break; |
1958 | | |
1959 | 0 | case ZBNCP_CMD_SET_EXTENDED_PAN_ID: |
1960 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
1961 | 0 | { |
1962 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ext_pan_id, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
1963 | 0 | offset += 8; |
1964 | 0 | } |
1965 | 0 | break; |
1966 | | |
1967 | 0 | case ZBNCP_CMD_SET_ED_CAPACITY: |
1968 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
1969 | 0 | { |
1970 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_ed_capacity, tvb, offset, 1, ENC_NA); |
1971 | 0 | offset += 1; |
1972 | 0 | } |
1973 | 0 | break; |
1974 | | |
1975 | 0 | case ZBNCP_CMD_GET_ED_CAPACITY: |
1976 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
1977 | 0 | { |
1978 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_ed_capacity, tvb, offset, 1, ENC_NA); |
1979 | 0 | offset += 1; |
1980 | 0 | } |
1981 | 0 | break; |
1982 | | |
1983 | 0 | case ZBNCP_CMD_SET_ZDO_LEAVE_ALLOWED: |
1984 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
1985 | 0 | { |
1986 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_zdo_leave_allowed, tvb, offset, 1, ENC_NA); |
1987 | 0 | offset += 1; |
1988 | 0 | } |
1989 | 0 | break; |
1990 | | |
1991 | 0 | case ZBNCP_CMD_GET_ZDO_LEAVE_ALLOWED: |
1992 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
1993 | 0 | { |
1994 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_zdo_leave_allowed, tvb, offset, 1, ENC_NA); |
1995 | 0 | offset += 1; |
1996 | 0 | } |
1997 | 0 | break; |
1998 | | |
1999 | 0 | case ZBNCP_CMD_SET_LEAVE_WO_REJOIN_ALLOWED: |
2000 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
2001 | 0 | { |
2002 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_zdo_leave_wo_rejoin_allowed, tvb, offset, 1, ENC_NA); |
2003 | 0 | offset += 1; |
2004 | 0 | } |
2005 | 0 | break; |
2006 | | |
2007 | 0 | case ZBNCP_CMD_GET_LEAVE_WO_REJOIN_ALLOWED: |
2008 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
2009 | 0 | { |
2010 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_zdo_leave_wo_rejoin_allowed, tvb, offset, 1, ENC_NA); |
2011 | 0 | offset += 1; |
2012 | 0 | } |
2013 | 0 | break; |
2014 | | |
2015 | 0 | case ZBNCP_CMD_GP_SET_SHARED_KEY_TYPE: |
2016 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
2017 | 0 | { |
2018 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_zgp_key_type, tvb, offset, 1, ENC_NA); |
2019 | 0 | offset += 1; |
2020 | 0 | } |
2021 | 0 | break; |
2022 | | |
2023 | 0 | case ZBNCP_CMD_GP_SET_DEFAULT_LINK_KEY: |
2024 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
2025 | 0 | { |
2026 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_zgp_link_key, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2027 | 0 | offset += 2; |
2028 | 0 | } |
2029 | 0 | break; |
2030 | | |
2031 | 0 | case ZBNCP_CMD_PRODUCTION_CONFIG_READ: |
2032 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
2033 | 0 | { |
2034 | 0 | proto_tree *prod_conf_hdr_subtree; |
2035 | 0 | prod_conf_hdr_subtree = proto_tree_add_subtree(zbncp_hl_body_tree, tvb, offset, 8, ett_zbncp_data_prod_conf_hdr, NULL, "Production config header"); |
2036 | |
|
2037 | 0 | proto_tree_add_item(prod_conf_hdr_subtree, hf_zbncp_data_prod_conf_hdr_crc, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
2038 | 0 | offset += 4; |
2039 | |
|
2040 | 0 | proto_tree_add_item(prod_conf_hdr_subtree, hf_zbncp_data_prod_conf_hdr_len, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2041 | 0 | offset += 2; |
2042 | |
|
2043 | 0 | proto_tree_add_item(prod_conf_hdr_subtree, hf_zbncp_data_prod_conf_hdr_version, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2044 | 0 | offset += 2; |
2045 | |
|
2046 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_prod_conf_body, tvb, offset, tvb_captured_length(tvb) - offset, ENC_NA); |
2047 | 0 | offset = tvb_captured_length(tvb); |
2048 | 0 | } |
2049 | 0 | break; |
2050 | | |
2051 | 0 | case ZBNCP_CMD_SET_MAX_JOINS: |
2052 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
2053 | 0 | { |
2054 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_max_joins, tvb, offset, 1, ENC_NA); |
2055 | 0 | offset += 1; |
2056 | 0 | } |
2057 | 0 | break; |
2058 | | |
2059 | 0 | case ZBNCP_CMD_GET_MAX_JOINS: |
2060 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
2061 | 0 | { |
2062 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_max_joins, tvb, offset, 1, ENC_NA); |
2063 | 0 | offset += 1; |
2064 | 0 | } |
2065 | 0 | break; |
2066 | | |
2067 | 0 | case ZBNCP_CMD_TRACE_IND: |
2068 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_INDICATION) |
2069 | 0 | { |
2070 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_trace_input_output, tvb, offset, 1, ENC_NA); |
2071 | 0 | offset += 1; |
2072 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_trace_timestamp, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
2073 | 0 | offset += 4; |
2074 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_trace, tvb, offset, tvb_captured_length(tvb) - offset, ENC_NA); |
2075 | 0 | offset = tvb_captured_length(tvb); |
2076 | 0 | } |
2077 | 0 | break; |
2078 | | |
2079 | 0 | case ZBNCP_CMD_GET_KEY_NEG_METHOD: |
2080 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
2081 | 0 | { |
2082 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_key_neg_method, tvb, offset, 1, ENC_NA); |
2083 | 0 | offset += 1; |
2084 | 0 | } |
2085 | 0 | break; |
2086 | | |
2087 | 0 | case ZBNCP_CMD_SET_KEY_NEG_METHOD: |
2088 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
2089 | 0 | { |
2090 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_key_neg_method, tvb, offset, 1, ENC_NA); |
2091 | 0 | offset += 1; |
2092 | 0 | } |
2093 | 0 | break; |
2094 | | |
2095 | 0 | case ZBNCP_CMD_GET_PSK_SECRETS: |
2096 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
2097 | 0 | { |
2098 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_psk_secrets, tvb, offset, 1, ENC_NA); |
2099 | 0 | offset += 1; |
2100 | 0 | } |
2101 | 0 | break; |
2102 | | |
2103 | 0 | case ZBNCP_CMD_SET_PSK_SECRETS: |
2104 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
2105 | 0 | { |
2106 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_psk_secrets, tvb, offset, 1, ENC_NA); |
2107 | 0 | offset += 1; |
2108 | 0 | } |
2109 | 0 | break; |
2110 | | |
2111 | 0 | case ZBNCP_CMD_SET_R22_JOIN_USAGE: |
2112 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
2113 | 0 | { |
2114 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_r22_join_usage, tvb, offset, 1, ENC_NA); |
2115 | 0 | offset += 1; |
2116 | 0 | } |
2117 | 0 | break; |
2118 | | |
2119 | 0 | case ZBNCP_CMD_SET_NWK_CONF_PRESET: |
2120 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
2121 | 0 | { |
2122 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_conf_preset, tvb, offset, 1, ENC_NA); |
2123 | 0 | offset += 1; |
2124 | 0 | } |
2125 | 0 | break; |
2126 | | |
2127 | | /* AF API */ |
2128 | 0 | case ZBNCP_CMD_AF_SET_SIMPLE_DESC: |
2129 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
2130 | 0 | { |
2131 | 0 | unsigned i; |
2132 | 0 | uint8_t in_cl_cnt; |
2133 | 0 | uint8_t out_cl_cnt; |
2134 | |
|
2135 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_endpoint, tvb, offset, 1, ENC_NA); |
2136 | 0 | offset += 1; |
2137 | |
|
2138 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_profile_id, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2139 | 0 | offset += 2; |
2140 | |
|
2141 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_device_id, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2142 | 0 | offset += 2; |
2143 | |
|
2144 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dev_version, tvb, offset, 1, ENC_NA); |
2145 | 0 | offset += 1; |
2146 | |
|
2147 | 0 | in_cl_cnt = tvb_get_uint8(tvb, offset); |
2148 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_in_cl_cnt, tvb, offset, 1, ENC_NA); |
2149 | 0 | offset += 1; |
2150 | |
|
2151 | 0 | out_cl_cnt = tvb_get_uint8(tvb, offset); |
2152 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_out_cl_cnt, tvb, offset, 1, ENC_NA); |
2153 | 0 | offset += 1; |
2154 | |
|
2155 | 0 | if (in_cl_cnt) |
2156 | 0 | { |
2157 | 0 | proto_tree *zbncp_hl_body_in_cl_list_tree = |
2158 | 0 | proto_tree_add_subtree_format(zbncp_hl_body_tree, tvb, offset, 2 * in_cl_cnt, ett_zbncp_data_in_cl_list, NULL, "Input Cluster List"); |
2159 | 0 | for (i = 0; i < in_cl_cnt; i++) |
2160 | 0 | { |
2161 | 0 | proto_tree_add_item(zbncp_hl_body_in_cl_list_tree, hf_zbncp_data_cluster_id, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2162 | 0 | offset += 2; |
2163 | 0 | } |
2164 | 0 | } |
2165 | |
|
2166 | 0 | if (out_cl_cnt) |
2167 | 0 | { |
2168 | 0 | proto_tree *zbncp_hl_body_out_cl_list_tree = |
2169 | 0 | proto_tree_add_subtree_format(zbncp_hl_body_tree, tvb, offset, 2 * out_cl_cnt, ett_zbncp_data_out_cl_list, NULL, "Output Cluster List"); |
2170 | 0 | for (i = 0; i < out_cl_cnt; i++) |
2171 | 0 | { |
2172 | 0 | proto_tree_add_item(zbncp_hl_body_out_cl_list_tree, hf_zbncp_data_cluster_id, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2173 | 0 | offset += 2; |
2174 | 0 | } |
2175 | 0 | } |
2176 | 0 | } |
2177 | 0 | break; |
2178 | | |
2179 | 0 | case ZBNCP_CMD_AF_DEL_EP: |
2180 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
2181 | 0 | { |
2182 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_endpoint, tvb, offset, 1, ENC_NA); |
2183 | 0 | offset += 1; |
2184 | 0 | } |
2185 | 0 | break; |
2186 | | |
2187 | 0 | case ZBNCP_CMD_AF_SET_NODE_DESC: |
2188 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
2189 | 0 | { |
2190 | | /* copy-pasted from packet-ieee802154.c */ |
2191 | 0 | static int *const capability[] = { |
2192 | 0 | &hf_ieee802154_cinfo_alt_coord, |
2193 | 0 | &hf_ieee802154_cinfo_device_type, |
2194 | 0 | &hf_ieee802154_cinfo_power_src, |
2195 | 0 | &hf_ieee802154_cinfo_idle_rx, |
2196 | 0 | &hf_ieee802154_cinfo_sec_capable, |
2197 | 0 | &hf_ieee802154_cinfo_alloc_addr, |
2198 | 0 | NULL}; |
2199 | |
|
2200 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_zb_role, tvb, offset, 1, ENC_NA); |
2201 | 0 | offset += 1; |
2202 | |
|
2203 | 0 | proto_tree_add_bitmask(zbncp_hl_body_tree, tvb, offset, hf_zbncp_data_mac_cap, ett_zbncp_data_mac_cap, capability, ENC_NA); |
2204 | 0 | offset += 1; |
2205 | |
|
2206 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_manuf_id, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2207 | 0 | offset += 2; |
2208 | 0 | } |
2209 | 0 | break; |
2210 | | |
2211 | 0 | case ZBNCP_CMD_AF_SET_POWER_DESC: |
2212 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
2213 | 0 | { |
2214 | 0 | static int *const pwr_sources[] = { |
2215 | 0 | &hf_zbncp_data_pwr_src_const, |
2216 | 0 | &hf_zbncp_data_pwr_src_recharge, |
2217 | 0 | &hf_zbncp_data_pwr_src_disposable, |
2218 | 0 | NULL}; |
2219 | |
|
2220 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_cur_pwr_mode, tvb, offset, 1, ENC_NA); |
2221 | 0 | offset += 1; |
2222 | |
|
2223 | 0 | proto_tree_add_bitmask(zbncp_hl_body_tree, tvb, offset, hf_zbncp_data_av_pwr_src, ett_zbncp_data_pwr_src, pwr_sources, ENC_NA); |
2224 | 0 | offset += 1; |
2225 | |
|
2226 | 0 | proto_tree_add_bitmask(zbncp_hl_body_tree, tvb, offset, hf_zbncp_data_cur_pwr_src, ett_zbncp_data_cur_pwr_src, pwr_sources, ENC_NA); |
2227 | 0 | offset += 1; |
2228 | |
|
2229 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_cur_pwr_lvl, tvb, offset, 1, ENC_NA); |
2230 | 0 | offset += 1; |
2231 | 0 | } |
2232 | 0 | break; |
2233 | | |
2234 | 0 | case ZBNCP_CMD_AF_SUBGHZ_SUSPEND_IND: |
2235 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_INDICATION) |
2236 | 0 | { |
2237 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_susp_period, tvb, offset, 1, ENC_NA); |
2238 | 0 | offset += 1; |
2239 | 0 | } |
2240 | 0 | break; |
2241 | | |
2242 | 0 | case ZBNCP_CMD_AF_SUBGHZ_RESUME_IND: |
2243 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_INDICATION) |
2244 | 0 | { |
2245 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_susp_period, tvb, offset, 1, ENC_NA); |
2246 | 0 | offset += 1; |
2247 | 0 | } |
2248 | 0 | break; |
2249 | | |
2250 | | /* ZDO API */ |
2251 | 0 | case ZBNCP_CMD_ZDO_NWK_ADDR_REQ: |
2252 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
2253 | 0 | { |
2254 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dst_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2255 | 0 | offset += 2; |
2256 | |
|
2257 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ieee_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
2258 | 0 | offset += 8; |
2259 | |
|
2260 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_req_type, tvb, offset, 1, ENC_NA); |
2261 | 0 | offset += 1; |
2262 | |
|
2263 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_start_idx, tvb, offset, 1, ENC_NA); |
2264 | 0 | offset += 1; |
2265 | 0 | } |
2266 | 0 | else if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
2267 | 0 | { |
2268 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_remote_ieee_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
2269 | 0 | offset += 8; |
2270 | |
|
2271 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_remote_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2272 | 0 | offset += 2; |
2273 | |
|
2274 | 0 | if (offset < tvb_reported_length(tvb)) |
2275 | 0 | { |
2276 | 0 | uint8_t num_assoc_dev = tvb_get_uint8(tvb, offset); |
2277 | |
|
2278 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_num_asoc_dec, tvb, offset, 1, ENC_NA); |
2279 | 0 | offset += 1; |
2280 | |
|
2281 | 0 | if (num_assoc_dev) |
2282 | 0 | { |
2283 | 0 | unsigned i; |
2284 | 0 | proto_tree *zbncp_hl_body_asoc_nwk_list; |
2285 | |
|
2286 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_start_idx, tvb, offset, 1, ENC_NA); |
2287 | 0 | offset += 1; |
2288 | |
|
2289 | 0 | zbncp_hl_body_asoc_nwk_list = |
2290 | 0 | proto_tree_add_subtree_format(zbncp_hl_body_tree, tvb, offset, 2 * num_assoc_dev, ett_zbncp_data_asoc_nwk_list, NULL, "Assoc Dev NWK Addr List"); |
2291 | |
|
2292 | 0 | for (i = 0; i < num_assoc_dev; i++) |
2293 | 0 | { |
2294 | 0 | proto_tree_add_item(zbncp_hl_body_asoc_nwk_list, hf_zbncp_data_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2295 | 0 | offset += 2; |
2296 | 0 | } |
2297 | 0 | } |
2298 | 0 | } |
2299 | 0 | } |
2300 | 0 | break; |
2301 | | |
2302 | 0 | case ZBNCP_CMD_ZDO_IEEE_ADDR_REQ: |
2303 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
2304 | 0 | { |
2305 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
2306 | 0 | { |
2307 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dst_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2308 | 0 | offset += 2; |
2309 | |
|
2310 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2311 | 0 | offset += 2; |
2312 | |
|
2313 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_req_type, tvb, offset, 1, ENC_NA); |
2314 | 0 | offset += 1; |
2315 | |
|
2316 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_start_idx, tvb, offset, 1, ENC_NA); |
2317 | 0 | offset += 1; |
2318 | 0 | } |
2319 | 0 | } |
2320 | 0 | else if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
2321 | 0 | { |
2322 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_remote_ieee_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
2323 | 0 | offset += 8; |
2324 | |
|
2325 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_remote_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2326 | 0 | offset += 2; |
2327 | |
|
2328 | 0 | if (offset < tvb_reported_length(tvb)) |
2329 | 0 | { |
2330 | 0 | uint8_t num_assoc_dev = tvb_get_uint8(tvb, offset); |
2331 | |
|
2332 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_num_asoc_dec, tvb, offset, 1, ENC_NA); |
2333 | 0 | offset += 1; |
2334 | |
|
2335 | 0 | if (num_assoc_dev) |
2336 | 0 | { |
2337 | 0 | unsigned i; |
2338 | 0 | proto_tree *zbncp_hl_body_asoc_nwk_list; |
2339 | |
|
2340 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_start_idx, tvb, offset, 1, ENC_NA); |
2341 | 0 | offset += 1; |
2342 | |
|
2343 | 0 | zbncp_hl_body_asoc_nwk_list = |
2344 | 0 | proto_tree_add_subtree_format(zbncp_hl_body_tree, tvb, offset, 2 * num_assoc_dev, ett_zbncp_data_asoc_nwk_list, NULL, "Assoc Dev NWK Addr List"); |
2345 | |
|
2346 | 0 | for (i = 0; i < num_assoc_dev; i++) |
2347 | 0 | { |
2348 | 0 | proto_tree_add_item(zbncp_hl_body_asoc_nwk_list, hf_zbncp_data_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2349 | 0 | offset += 2; |
2350 | 0 | } |
2351 | 0 | } |
2352 | 0 | } |
2353 | 0 | } |
2354 | 0 | break; |
2355 | | |
2356 | 0 | case ZBNCP_CMD_ZDO_POWER_DESC_REQ: |
2357 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
2358 | 0 | { |
2359 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2360 | 0 | offset += 2; |
2361 | 0 | } |
2362 | 0 | else if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
2363 | 0 | { |
2364 | 0 | static int *const pwr_desc[] = { |
2365 | 0 | &hf_zbncp_data_pwr_desc_cur_power_mode, |
2366 | 0 | &hf_zbncp_data_pwr_desc_av_pwr_src, |
2367 | 0 | &hf_zbncp_data_pwr_desc_cur_pwr_src, |
2368 | 0 | &hf_zbncp_data_pwr_desc_cur_pwr_lvl, |
2369 | 0 | NULL}; |
2370 | |
|
2371 | 0 | proto_tree_add_bitmask(zbncp_hl_body_tree, tvb, offset, hf_zbncp_data_pwr_desc, ett_zbncp_data_pwr_desc, pwr_desc, ENC_LITTLE_ENDIAN); |
2372 | 0 | offset += 2; |
2373 | |
|
2374 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_src_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2375 | 0 | offset += 2; |
2376 | 0 | } |
2377 | 0 | break; |
2378 | | |
2379 | 0 | case ZBNCP_CMD_ZDO_NODE_DESC_REQ: |
2380 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
2381 | 0 | { |
2382 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2383 | 0 | offset += 2; |
2384 | 0 | } |
2385 | 0 | else if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
2386 | 0 | { |
2387 | 0 | static int *const flags[] = { |
2388 | 0 | &hf_zbncp_data_flags_zb_role, |
2389 | 0 | &hf_zbncp_data_flags_comp_desc_av, |
2390 | 0 | &hf_zbncp_data_flags_user_desc_av, |
2391 | 0 | &hf_zbncp_data_flags_freq_868, |
2392 | 0 | &hf_zbncp_data_flags_freq_902, |
2393 | 0 | &hf_zbncp_data_flags_freq_2400, |
2394 | 0 | &hf_zbncp_data_flags_freq_eu_sub_ghz, |
2395 | 0 | NULL}; |
2396 | |
|
2397 | 0 | static int *const mac_capability[] = { |
2398 | 0 | &hf_ieee802154_cinfo_alt_coord, |
2399 | 0 | &hf_ieee802154_cinfo_device_type, |
2400 | 0 | &hf_ieee802154_cinfo_power_src, |
2401 | 0 | &hf_ieee802154_cinfo_idle_rx, |
2402 | 0 | &hf_ieee802154_cinfo_sec_capable, |
2403 | 0 | &hf_ieee802154_cinfo_alloc_addr, |
2404 | 0 | NULL}; |
2405 | |
|
2406 | 0 | static int *const server_mask[] = { |
2407 | 0 | &hf_zbncp_data_srv_msk_prim_tc, |
2408 | 0 | &hf_zbncp_data_srv_msk_backup_tc, |
2409 | 0 | &hf_zbncp_data_srv_msk_prim_bind_tbl_cache, |
2410 | 0 | &hf_zbncp_data_srv_msk_backup_bind_tbl_cache, |
2411 | 0 | &hf_zbncp_data_srv_msk_prim_disc_cache, |
2412 | 0 | &hf_zbncp_data_srv_msk_backup_disc_cache, |
2413 | 0 | &hf_zbncp_data_srv_msk_nwk_manager, |
2414 | 0 | &hf_zbncp_data_srv_msk_stack_compl_rev, |
2415 | 0 | NULL}; |
2416 | |
|
2417 | 0 | static int *const desc_capability[] = { |
2418 | 0 | &hf_zbncp_data_desc_cap_ext_act_ep_list_av, |
2419 | 0 | &hf_zbncp_data_desc_cap_ext_simple_desc_list_av, |
2420 | 0 | NULL}; |
2421 | |
|
2422 | 0 | proto_tree_add_bitmask_with_flags(zbncp_hl_body_tree, tvb, offset, hf_zbncp_data_flags16, ett_zbncp_data_flags, flags, ENC_LITTLE_ENDIAN, BMT_NO_APPEND); |
2423 | 0 | offset += 2; |
2424 | |
|
2425 | 0 | proto_tree_add_bitmask(zbncp_hl_body_tree, tvb, offset, hf_zbncp_data_mac_cap, ett_zbncp_data_mac_cap, mac_capability, ENC_NA); |
2426 | 0 | offset += 1; |
2427 | |
|
2428 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_manuf_id, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2429 | 0 | offset += 2; |
2430 | |
|
2431 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_max_buf_size, tvb, offset, 1, ENC_NA); |
2432 | 0 | offset += 1; |
2433 | |
|
2434 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_max_inc_trans_size, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2435 | 0 | offset += 2; |
2436 | |
|
2437 | 0 | proto_tree_add_bitmask_with_flags(zbncp_hl_body_tree, tvb, offset, hf_zbncp_data_srv_msk, ett_zbncp_data_server_mask, server_mask, ENC_LITTLE_ENDIAN, BMT_NO_APPEND); |
2438 | 0 | offset += 2; |
2439 | |
|
2440 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_max_out_trans_size, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2441 | 0 | offset += 2; |
2442 | |
|
2443 | 0 | proto_tree_add_bitmask(zbncp_hl_body_tree, tvb, offset, hf_zbncp_data_desc_cap, ett_zbncp_data_desc_cap, desc_capability, ENC_NA); |
2444 | 0 | offset += 1; |
2445 | |
|
2446 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_src_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2447 | 0 | offset += 2; |
2448 | 0 | } |
2449 | 0 | break; |
2450 | | |
2451 | 0 | case ZBNCP_CMD_ZDO_SIMPLE_DESC_REQ: |
2452 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
2453 | 0 | { |
2454 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2455 | 0 | offset += 2; |
2456 | |
|
2457 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_endpoint, tvb, offset, 1, ENC_NA); |
2458 | 0 | offset += 1; |
2459 | 0 | } |
2460 | 0 | else if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
2461 | 0 | { |
2462 | 0 | unsigned i; |
2463 | 0 | uint8_t in_cl_cnt; |
2464 | 0 | uint8_t out_cl_cnt; |
2465 | |
|
2466 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_endpoint, tvb, offset, 1, ENC_NA); |
2467 | 0 | offset += 1; |
2468 | |
|
2469 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_profile_id, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2470 | 0 | offset += 2; |
2471 | |
|
2472 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_device_id, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2473 | 0 | offset += 2; |
2474 | |
|
2475 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dev_version, tvb, offset, 1, ENC_NA); |
2476 | 0 | offset += 1; |
2477 | |
|
2478 | 0 | in_cl_cnt = tvb_get_uint8(tvb, offset); |
2479 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_in_cl_cnt, tvb, offset, 1, ENC_NA); |
2480 | 0 | offset += 1; |
2481 | |
|
2482 | 0 | out_cl_cnt = tvb_get_uint8(tvb, offset); |
2483 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_out_cl_cnt, tvb, offset, 1, ENC_NA); |
2484 | 0 | offset += 1; |
2485 | |
|
2486 | 0 | if (in_cl_cnt) |
2487 | 0 | { |
2488 | 0 | proto_tree *zbncp_hl_body_in_cl_list_tree = |
2489 | 0 | proto_tree_add_subtree_format(zbncp_hl_body_tree, tvb, offset, 2 * in_cl_cnt, ett_zbncp_data_in_cl_list, NULL, "Input Cluster List"); |
2490 | 0 | for (i = 0; i < in_cl_cnt; i++) |
2491 | 0 | { |
2492 | 0 | proto_tree_add_item(zbncp_hl_body_in_cl_list_tree, hf_zbncp_data_cluster_id, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2493 | 0 | offset += 2; |
2494 | 0 | } |
2495 | 0 | } |
2496 | |
|
2497 | 0 | if (out_cl_cnt) |
2498 | 0 | { |
2499 | 0 | proto_tree *zbncp_hl_body_out_cl_list_tree = |
2500 | 0 | proto_tree_add_subtree_format(zbncp_hl_body_tree, tvb, offset, 2 * out_cl_cnt, ett_zbncp_data_out_cl_list, NULL, "Output Cluster List"); |
2501 | 0 | for (i = 0; i < out_cl_cnt; i++) |
2502 | 0 | { |
2503 | 0 | proto_tree_add_item(zbncp_hl_body_out_cl_list_tree, hf_zbncp_data_cluster_id, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2504 | 0 | offset += 2; |
2505 | 0 | } |
2506 | 0 | } |
2507 | |
|
2508 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_src_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2509 | 0 | offset += 2; |
2510 | 0 | } |
2511 | 0 | break; |
2512 | | |
2513 | 0 | case ZBNCP_CMD_ZDO_ACTIVE_EP_REQ: |
2514 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
2515 | 0 | { |
2516 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2517 | 0 | offset += 2; |
2518 | 0 | } |
2519 | 0 | else if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
2520 | 0 | { |
2521 | 0 | unsigned i; |
2522 | 0 | uint8_t ep_cnt = tvb_get_uint8(tvb, offset); |
2523 | |
|
2524 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ep_cnt, tvb, offset, 1, ENC_NA); |
2525 | 0 | offset += 1; |
2526 | |
|
2527 | 0 | if (ep_cnt) |
2528 | 0 | { |
2529 | 0 | proto_tree *zbncp_hl_body_tree_ep_list = |
2530 | 0 | proto_tree_add_subtree_format(zbncp_hl_body_tree, tvb, offset, ep_cnt, ett_zbncp_data_ep_list, NULL, "Endpoint List"); |
2531 | 0 | for (i = 0; i < ep_cnt; i++) |
2532 | 0 | { |
2533 | 0 | proto_tree_add_item(zbncp_hl_body_tree_ep_list, hf_zbncp_data_endpoint, tvb, offset, 1, ENC_NA); |
2534 | 0 | offset += 1; |
2535 | 0 | } |
2536 | 0 | } |
2537 | |
|
2538 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_src_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2539 | 0 | offset += 2; |
2540 | 0 | } |
2541 | 0 | break; |
2542 | | |
2543 | 0 | case ZBNCP_CMD_ZDO_MATCH_DESC_REQ: |
2544 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
2545 | 0 | { |
2546 | 0 | unsigned i; |
2547 | 0 | uint8_t in_cl_cnt; |
2548 | 0 | uint8_t out_cl_cnt; |
2549 | |
|
2550 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2551 | 0 | offset += 2; |
2552 | |
|
2553 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_profile_id, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2554 | 0 | offset += 2; |
2555 | |
|
2556 | 0 | in_cl_cnt = tvb_get_uint8(tvb, offset); |
2557 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_in_cl_cnt, tvb, offset, 1, ENC_NA); |
2558 | 0 | offset += 1; |
2559 | |
|
2560 | 0 | out_cl_cnt = tvb_get_uint8(tvb, offset); |
2561 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_out_cl_cnt, tvb, offset, 1, ENC_NA); |
2562 | 0 | offset += 1; |
2563 | |
|
2564 | 0 | if (in_cl_cnt) |
2565 | 0 | { |
2566 | 0 | proto_tree *zbncp_hl_body_in_cl_list_tree = |
2567 | 0 | proto_tree_add_subtree_format(zbncp_hl_body_tree, tvb, offset, 2 * in_cl_cnt, ett_zbncp_data_in_cl_list, NULL, "Input Cluster List"); |
2568 | 0 | for (i = 0; i < in_cl_cnt; i++) |
2569 | 0 | { |
2570 | 0 | proto_tree_add_item(zbncp_hl_body_in_cl_list_tree, hf_zbncp_data_cluster_id, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2571 | 0 | offset += 2; |
2572 | 0 | } |
2573 | 0 | } |
2574 | |
|
2575 | 0 | if (out_cl_cnt) |
2576 | 0 | { |
2577 | 0 | proto_tree *zbncp_hl_body_out_cl_list_tree = |
2578 | 0 | proto_tree_add_subtree_format(zbncp_hl_body_tree, tvb, offset, 2 * out_cl_cnt, ett_zbncp_data_out_cl_list, NULL, "Output Cluster List"); |
2579 | 0 | for (i = 0; i < out_cl_cnt; i++) |
2580 | 0 | { |
2581 | 0 | proto_tree_add_item(zbncp_hl_body_out_cl_list_tree, hf_zbncp_data_cluster_id, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2582 | 0 | offset += 2; |
2583 | 0 | } |
2584 | 0 | } |
2585 | 0 | } |
2586 | 0 | else if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
2587 | 0 | { |
2588 | 0 | unsigned i; |
2589 | 0 | uint8_t ep_cnt = tvb_get_uint8(tvb, offset); |
2590 | |
|
2591 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ep_cnt, tvb, offset, 1, ENC_NA); |
2592 | 0 | offset += 1; |
2593 | |
|
2594 | 0 | if (ep_cnt) |
2595 | 0 | { |
2596 | 0 | proto_tree *zbncp_hl_body_tree_ep_list = |
2597 | 0 | proto_tree_add_subtree_format(zbncp_hl_body_tree, tvb, offset, ep_cnt, ett_zbncp_data_ep_list, NULL, "Endpoint List"); |
2598 | 0 | for (i = 0; i < ep_cnt; i++) |
2599 | 0 | { |
2600 | 0 | proto_tree_add_item(zbncp_hl_body_tree_ep_list, hf_zbncp_data_endpoint, tvb, offset, 1, ENC_NA); |
2601 | 0 | offset += 1; |
2602 | 0 | } |
2603 | 0 | } |
2604 | |
|
2605 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_src_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2606 | 0 | offset += 2; |
2607 | 0 | } |
2608 | 0 | break; |
2609 | | |
2610 | 0 | case ZBNCP_CMD_ZDO_BIND_REQ: |
2611 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
2612 | 0 | { |
2613 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2614 | 0 | offset += 2; |
2615 | |
|
2616 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_src_ieee_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
2617 | 0 | offset += 8; |
2618 | |
|
2619 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_src_endpoint, tvb, offset, 1, ENC_NA); |
2620 | 0 | offset += 1; |
2621 | |
|
2622 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_cluster_id, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2623 | 0 | offset += 2; |
2624 | |
|
2625 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dst_addr_mode, tvb, offset, 1, ENC_NA); |
2626 | 0 | offset += 1; |
2627 | |
|
2628 | 0 | dissect_zbncp_dst_addrs(zbncp_hl_body_tree, tvb, offset - 1, &offset); |
2629 | |
|
2630 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dst_endpoint, tvb, offset, 1, ENC_NA); |
2631 | 0 | offset += 1; |
2632 | 0 | } |
2633 | 0 | break; |
2634 | | |
2635 | 0 | case ZBNCP_CMD_ZDO_UNBIND_REQ: |
2636 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
2637 | 0 | { |
2638 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2639 | 0 | offset += 2; |
2640 | |
|
2641 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_src_ieee_addr, tvb, offset, 8, ENC_NA); |
2642 | 0 | offset += 8; |
2643 | |
|
2644 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_src_endpoint, tvb, offset, 1, ENC_NA); |
2645 | 0 | offset += 1; |
2646 | |
|
2647 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_cluster_id, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2648 | 0 | offset += 2; |
2649 | |
|
2650 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dst_addr_mode, tvb, offset, 1, ENC_NA); |
2651 | 0 | offset += 1; |
2652 | |
|
2653 | 0 | dissect_zbncp_dst_addrs(zbncp_hl_body_tree, tvb, offset - 1, &offset); |
2654 | |
|
2655 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dst_endpoint, tvb, offset, 1, ENC_NA); |
2656 | 0 | offset += 1; |
2657 | 0 | } |
2658 | 0 | break; |
2659 | | |
2660 | 0 | case ZBNCP_CMD_ZDO_MGMT_LEAVE_REQ: |
2661 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
2662 | 0 | { |
2663 | 0 | static int *const leave_flags[] = { |
2664 | 0 | &hf_zbncp_data_leave_flags_remove_chil, |
2665 | 0 | &hf_zbncp_data_leave_flags_rejoin, |
2666 | 0 | NULL}; |
2667 | |
|
2668 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2669 | 0 | offset += 2; |
2670 | |
|
2671 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ieee_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
2672 | 0 | offset += 8; |
2673 | |
|
2674 | 0 | proto_tree_add_bitmask(zbncp_hl_body_tree, tvb, offset, hf_zbncp_data_leave_flags, ett_zbncp_data_leave_flags, leave_flags, ENC_NA); |
2675 | 0 | offset += 1; |
2676 | 0 | } |
2677 | 0 | break; |
2678 | | |
2679 | 0 | case ZBNCP_CMD_ZDO_PERMIT_JOINING_REQ: |
2680 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
2681 | 0 | { |
2682 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dst_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2683 | 0 | offset += 2; |
2684 | |
|
2685 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_permit_dur, tvb, offset, 1, ENC_NA); |
2686 | 0 | offset += 1; |
2687 | |
|
2688 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_tc_sign, tvb, offset, 1, ENC_NA); |
2689 | 0 | offset += 1; |
2690 | 0 | } |
2691 | 0 | break; |
2692 | | |
2693 | 0 | case ZBNCP_CMD_ZDO_DEV_ANNCE_IND: |
2694 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_INDICATION) |
2695 | 0 | { |
2696 | 0 | static int *const mac_capability[] = { |
2697 | 0 | &hf_ieee802154_cinfo_alt_coord, |
2698 | 0 | &hf_ieee802154_cinfo_device_type, |
2699 | 0 | &hf_ieee802154_cinfo_power_src, |
2700 | 0 | &hf_ieee802154_cinfo_idle_rx, |
2701 | 0 | &hf_ieee802154_cinfo_sec_capable, |
2702 | 0 | &hf_ieee802154_cinfo_alloc_addr, |
2703 | 0 | NULL}; |
2704 | |
|
2705 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2706 | 0 | offset += 2; |
2707 | |
|
2708 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ieee_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
2709 | 0 | offset += 8; |
2710 | |
|
2711 | 0 | proto_tree_add_bitmask(zbncp_hl_body_tree, tvb, offset, hf_zbncp_data_mac_cap, ett_zbncp_data_mac_cap, mac_capability, ENC_NA); |
2712 | 0 | offset += 1; |
2713 | 0 | } |
2714 | 0 | break; |
2715 | | |
2716 | 0 | case ZBNCP_CMD_ZDO_REJOIN: |
2717 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
2718 | 0 | { |
2719 | 0 | unsigned i; |
2720 | 0 | uint8_t ch_list_len; |
2721 | |
|
2722 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ext_pan_id, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
2723 | 0 | offset += 8; |
2724 | |
|
2725 | 0 | ch_list_len = tvb_get_uint8(tvb, offset); |
2726 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ch_list_len, tvb, offset, 1, ENC_NA); |
2727 | 0 | offset += 1; |
2728 | |
|
2729 | 0 | if (ch_list_len) |
2730 | 0 | { |
2731 | 0 | proto_tree *zbncp_hl_body_data_ch_list = proto_tree_add_subtree_format( |
2732 | 0 | zbncp_hl_body_tree, tvb, offset, ch_list_len * 5, ett_zbncp_data_ch_list, NULL, "Channel List"); |
2733 | 0 | for (i = 0; i < ch_list_len; i++) |
2734 | 0 | { |
2735 | 0 | proto_tree *zbncp_hl_body_data_channel_tree = proto_tree_add_subtree_format( |
2736 | 0 | zbncp_hl_body_data_ch_list, tvb, offset, 5, ett_zbncp_data_channel, NULL, "Channel"); |
2737 | |
|
2738 | 0 | proto_tree_add_item(zbncp_hl_body_data_channel_tree, hf_zbncp_data_page, tvb, offset, 1, ENC_NA); |
2739 | 0 | offset += 1; |
2740 | |
|
2741 | 0 | proto_tree_add_item(zbncp_hl_body_data_channel_tree, hf_zbncp_data_ch_mask, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
2742 | 0 | offset += 4; |
2743 | 0 | } |
2744 | 0 | } |
2745 | |
|
2746 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_secur_rejoin, tvb, offset, 1, ENC_NA); |
2747 | 0 | offset += 1; |
2748 | 0 | } |
2749 | 0 | else if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
2750 | 0 | { |
2751 | 0 | static int *const zdo_rejoin_flags[] = { |
2752 | 0 | &hf_zbncp_data_zdo_rejoin_flags_tcsw_happened, |
2753 | 0 | NULL}; |
2754 | 0 | proto_tree_add_bitmask(zbncp_hl_body_tree, tvb, offset, hf_zbncp_data_zdo_rejoin_flags, ett_zbncp_data_zdo_rejoin_flags, zdo_rejoin_flags, ENC_NA); |
2755 | 0 | offset += 1; |
2756 | 0 | } |
2757 | 0 | break; |
2758 | | |
2759 | 0 | case ZBNCP_CMD_ZDO_SYSTEM_SRV_DISCOVERY_REQ: |
2760 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
2761 | 0 | { |
2762 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_zdo_server_mask, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2763 | 0 | offset += 2; |
2764 | 0 | } |
2765 | 0 | break; |
2766 | | |
2767 | 0 | case ZBNCP_CMD_ZDO_MGMT_BIND_REQ: |
2768 | 0 | case ZBNCP_CMD_ZDO_MGMT_LQI_REQ: |
2769 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
2770 | 0 | { |
2771 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2772 | 0 | offset += 2; |
2773 | |
|
2774 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_zdo_start_entry_idx, tvb, offset, 1, ENC_NA); |
2775 | 0 | offset += 1; |
2776 | 0 | } |
2777 | 0 | break; |
2778 | | |
2779 | 0 | case ZBNCP_CMD_ZDO_MGMT_NWK_UPDATE_REQ: |
2780 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
2781 | 0 | { |
2782 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ch_mask, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
2783 | 0 | offset += 4; |
2784 | |
|
2785 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_zdo_scan_duration, tvb, offset, 1, ENC_NA); |
2786 | 0 | offset += 1; |
2787 | |
|
2788 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_zdo_scan_cnt, tvb, offset, 1, ENC_NA); |
2789 | 0 | offset += 1; |
2790 | |
|
2791 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_zdo_scan_mgr_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2792 | 0 | offset += 2; |
2793 | |
|
2794 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dst_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2795 | 0 | offset += 2; |
2796 | 0 | } |
2797 | 0 | break; |
2798 | | |
2799 | 0 | case ZBNCP_CMD_ZDO_REMOTE_CMD_IND: |
2800 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_INDICATION) |
2801 | 0 | { |
2802 | 0 | uint16_t data_len; |
2803 | 0 | static int *const aps_fc[] = { |
2804 | 0 | &hf_zbncp_data_aps_fc_deliv_mode, |
2805 | 0 | &hf_zbncp_data_aps_fc_secur, |
2806 | 0 | &hf_zbncp_data_aps_fc_ack_retrans, |
2807 | 0 | NULL}; |
2808 | |
|
2809 | 0 | static int *const aps_key_attr[] = { |
2810 | 0 | &hf_zbncp_data_aps_key_attr_key_src, |
2811 | 0 | &hf_zbncp_data_aps_key_attr_key_used, |
2812 | 0 | NULL}; |
2813 | |
|
2814 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_param_len, tvb, offset, 1, ENC_NA); |
2815 | 0 | offset += 1; |
2816 | |
|
2817 | 0 | data_len = tvb_get_uint16(tvb, offset, ENC_LITTLE_ENDIAN); |
2818 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dlen16, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2819 | 0 | offset += 2; |
2820 | |
|
2821 | 0 | proto_tree_add_bitmask(zbncp_hl_body_tree, tvb, offset, hf_zbncp_data_aps_fc, ett_zbncp_data_apc_fc, aps_fc, ENC_NA); |
2822 | 0 | offset += 1; |
2823 | |
|
2824 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_src_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2825 | 0 | offset += 2; |
2826 | |
|
2827 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dst_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2828 | 0 | offset += 2; |
2829 | |
|
2830 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_group_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2831 | 0 | offset += 2; |
2832 | |
|
2833 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dst_endpoint, tvb, offset, 1, ENC_NA); |
2834 | 0 | offset += 1; |
2835 | |
|
2836 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_src_endpoint, tvb, offset, 1, ENC_NA); |
2837 | 0 | offset += 1; |
2838 | |
|
2839 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_cluster_id, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2840 | 0 | offset += 2; |
2841 | |
|
2842 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_profile_id, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2843 | 0 | offset += 2; |
2844 | |
|
2845 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_aps_cnt, tvb, offset, 1, ENC_NA); |
2846 | 0 | offset += 1; |
2847 | |
|
2848 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_src_mac_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2849 | 0 | offset += 2; |
2850 | |
|
2851 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dst_mac_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2852 | 0 | offset += 2; |
2853 | |
|
2854 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_lqi, tvb, offset, 1, ENC_NA); |
2855 | 0 | offset += 1; |
2856 | |
|
2857 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_rssi, tvb, offset, 1, ENC_NA); |
2858 | 0 | offset += 1; |
2859 | |
|
2860 | 0 | proto_tree_add_bitmask(zbncp_hl_body_tree, tvb, offset, hf_zbncp_data_aps_key_attr, ett_zbncp_data_aps_key_attr, aps_key_attr, ENC_NA); |
2861 | 0 | offset += 1; |
2862 | |
|
2863 | 0 | if (data_len > (tvb_reported_length(tvb) - offset)) |
2864 | 0 | { |
2865 | 0 | data_len = tvb_reported_length(tvb) - offset; |
2866 | 0 | } |
2867 | |
|
2868 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_array, tvb, offset, data_len, ENC_NA); |
2869 | 0 | offset += data_len; |
2870 | 0 | } |
2871 | 0 | break; |
2872 | | |
2873 | 0 | case ZBNCP_CMD_ZDO_GET_STATS: |
2874 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
2875 | 0 | { |
2876 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_do_cleanup, tvb, offset, 1, ENC_NA); |
2877 | 0 | offset += 1; |
2878 | 0 | } |
2879 | 0 | else if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
2880 | 0 | { |
2881 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_max_rx_bcast, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
2882 | 0 | offset += 4; |
2883 | |
|
2884 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_mac_tx_bcast, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
2885 | 0 | offset += 4; |
2886 | |
|
2887 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_mac_rx_ucast, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
2888 | 0 | offset += 4; |
2889 | |
|
2890 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_mac_tx_ucast_total_zcl, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
2891 | 0 | offset += 4; |
2892 | |
|
2893 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_mac_tx_ucast_failures_zcl, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2894 | 0 | offset += 2; |
2895 | |
|
2896 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_mac_tx_ucast_retries_zcl, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2897 | 0 | offset += 2; |
2898 | |
|
2899 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_mac_tx_ucast_total, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2900 | 0 | offset += 2; |
2901 | |
|
2902 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_mac_tx_ucast_failures, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2903 | 0 | offset += 2; |
2904 | |
|
2905 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_mac_tx_ucast_retries, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2906 | 0 | offset += 2; |
2907 | |
|
2908 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_phy_to_mac_que_lim_reached, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2909 | 0 | offset += 2; |
2910 | |
|
2911 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_mac_validate_drop_cnt, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2912 | 0 | offset += 2; |
2913 | |
|
2914 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_mac_phy_cca_fail_count, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2915 | 0 | offset += 2; |
2916 | |
|
2917 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_period_of_time, tvb, offset, 1, ENC_NA); |
2918 | 0 | offset += 1; |
2919 | |
|
2920 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_last_msg_lqi, tvb, offset, 1, ENC_NA); |
2921 | 0 | offset += 1; |
2922 | |
|
2923 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_last_msg_rssi, tvb, offset, 1, ENC_NA); |
2924 | 0 | offset += 1; |
2925 | |
|
2926 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_number_of_resets, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2927 | 0 | offset += 2; |
2928 | |
|
2929 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_aps_tx_bcast, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2930 | 0 | offset += 2; |
2931 | |
|
2932 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_aps_tx_ucast_success, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2933 | 0 | offset += 2; |
2934 | |
|
2935 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_aps_tx_ucast_retry, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2936 | 0 | offset += 2; |
2937 | |
|
2938 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_aps_tx_ucast_fail, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2939 | 0 | offset += 2; |
2940 | |
|
2941 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_route_disc_initiated, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2942 | 0 | offset += 2; |
2943 | |
|
2944 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_neighbor_added, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2945 | 0 | offset += 2; |
2946 | |
|
2947 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_neighbor_removed, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2948 | 0 | offset += 2; |
2949 | |
|
2950 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_neighbor_stale, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2951 | 0 | offset += 2; |
2952 | |
|
2953 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_join_indication, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2954 | 0 | offset += 2; |
2955 | |
|
2956 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_childs_removed, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2957 | 0 | offset += 2; |
2958 | |
|
2959 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_fc_failure, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2960 | 0 | offset += 2; |
2961 | |
|
2962 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_aps_fc_failure, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2963 | 0 | offset += 2; |
2964 | |
|
2965 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_aps_unauthorized_key, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2966 | 0 | offset += 2; |
2967 | |
|
2968 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_decrypt_failure, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2969 | 0 | offset += 2; |
2970 | |
|
2971 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_aps_decrypt_failure, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2972 | 0 | offset += 2; |
2973 | |
|
2974 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_packet_buffer_allocate_failures, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2975 | 0 | offset += 2; |
2976 | |
|
2977 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_average_mac_retry_per_aps_message_sent, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2978 | 0 | offset += 2; |
2979 | |
|
2980 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_retry_overflow, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2981 | 0 | offset += 2; |
2982 | |
|
2983 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_bcast_table_full, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2984 | 0 | offset += 2; |
2985 | |
|
2986 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_status, tvb, offset, 1, ENC_NA); |
2987 | 0 | offset += 1; |
2988 | 0 | } |
2989 | 0 | break; |
2990 | | |
2991 | 0 | case ZBNCP_CMD_ZDO_DEV_AUTHORIZED_IND: |
2992 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_INDICATION) |
2993 | 0 | { |
2994 | 0 | uint8_t auth_type; |
2995 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ieee_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
2996 | 0 | offset += 8; |
2997 | |
|
2998 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
2999 | 0 | offset += 2; |
3000 | |
|
3001 | 0 | auth_type = tvb_get_uint8(tvb, offset); |
3002 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_zdo_auth_type, tvb, offset, 1, ENC_NA); |
3003 | 0 | offset += 1; |
3004 | |
|
3005 | 0 | if (auth_type == ZB_ZDO_AUTH_LEGACY_TYPE) |
3006 | 0 | { |
3007 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_zdo_leg_auth_status_code, tvb, offset, 1, ENC_NA); |
3008 | 0 | offset += 1; |
3009 | 0 | } |
3010 | 0 | else if (auth_type == ZB_ZDO_AUTH_TCLK_TYPE) |
3011 | 0 | { |
3012 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_zdo_tclk_auth_status_code, tvb, offset, 1, ENC_NA); |
3013 | 0 | offset += 1; |
3014 | 0 | } |
3015 | 0 | } |
3016 | 0 | break; |
3017 | | |
3018 | 0 | case ZBNCP_CMD_ZDO_DEV_UPDATE_IND: |
3019 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_INDICATION) |
3020 | 0 | { |
3021 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ieee_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
3022 | 0 | offset += 8; |
3023 | |
|
3024 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3025 | 0 | offset += 2; |
3026 | |
|
3027 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_upd_status_code, tvb, offset, 1, ENC_NA); |
3028 | 0 | offset += 1; |
3029 | 0 | } |
3030 | 0 | break; |
3031 | | |
3032 | 0 | case ZBNCP_CMD_ZDO_SET_NODE_DESC_MANUF_CODE: |
3033 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
3034 | 0 | { |
3035 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_manuf_id, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3036 | 0 | offset += 2; |
3037 | 0 | } |
3038 | 0 | break; |
3039 | | |
3040 | 0 | case ZBNCP_CMD_HL_ZDO_GET_DIAG_DATA_REQ: |
3041 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
3042 | 0 | { |
3043 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3044 | 0 | offset += 2; |
3045 | 0 | } |
3046 | 0 | else if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
3047 | 0 | { |
3048 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_lqi, tvb, offset, 1, ENC_NA); |
3049 | 0 | offset += 1; |
3050 | |
|
3051 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_rssi, tvb, offset, 1, ENC_NA); |
3052 | 0 | offset += 1; |
3053 | 0 | } |
3054 | 0 | break; |
3055 | | |
3056 | 0 | case ZBNCP_CMD_HL_ZDO_RAW_REQ: |
3057 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
3058 | 0 | { |
3059 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_cluster_id, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3060 | 0 | offset += 2; |
3061 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_short_address, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3062 | 0 | offset += 2; |
3063 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_raw_data, tvb, offset, tvb_captured_length(tvb) - offset, ENC_NA); |
3064 | 0 | offset = tvb_captured_length(tvb); |
3065 | 0 | } |
3066 | 0 | else if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
3067 | 0 | { |
3068 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_cluster_id, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3069 | 0 | offset += 2; |
3070 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_short_address, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3071 | 0 | offset += 2; |
3072 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_raw_data, tvb, offset, tvb_captured_length(tvb) - offset, ENC_NA); |
3073 | 0 | offset = tvb_captured_length(tvb); |
3074 | 0 | } |
3075 | 0 | break; |
3076 | | |
3077 | 0 | case ZBNCP_CMD_HL_ZDO_SEND_CONF_PARAMS_REQ: |
3078 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
3079 | 0 | { |
3080 | 0 | static int *const parameters[] = { |
3081 | 0 | &hf_zbncp_data_conf_params_reserved, |
3082 | 0 | &hf_zbncp_data_conf_params_disable_pan_id_change, |
3083 | 0 | &hf_zbncp_data_conf_params_disable_channel_change, |
3084 | 0 | &hf_zbncp_data_conf_params_leave_request_allowed, |
3085 | 0 | &hf_zbncp_data_conf_params_require_tclk, |
3086 | 0 | &hf_zbncp_data_conf_params_restricted_enabled, |
3087 | 0 | NULL |
3088 | 0 | }; |
3089 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_short_address, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3090 | 0 | offset += 2; |
3091 | |
|
3092 | 0 | proto_tree_add_bitmask(zbncp_hl_body_tree, tvb, offset, hf_zbncp_data_conf_params, ett_zbncp_data_conf_params, parameters, ENC_NA); |
3093 | 0 | offset += 1; |
3094 | 0 | } |
3095 | 0 | break; |
3096 | | |
3097 | 0 | case ZBNCP_CMD_HL_ZDO_MGMT_BEACON_SURVEY_REQ: |
3098 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
3099 | 0 | { |
3100 | 0 | unsigned i; |
3101 | 0 | uint8_t ch_list_len; |
3102 | |
|
3103 | 0 | ch_list_len = tvb_get_uint8(tvb, offset); |
3104 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_channel_page_count, tvb, offset, 1, ENC_NA); |
3105 | 0 | offset += 1; |
3106 | |
|
3107 | 0 | if (ch_list_len) |
3108 | 0 | { |
3109 | 0 | proto_tree *zbncp_hl_body_data_ch_list = proto_tree_add_subtree_format( |
3110 | 0 | zbncp_hl_body_tree, tvb, offset, ch_list_len * 4, ett_zbncp_data_ch_list, NULL, "Channel List"); |
3111 | 0 | for (i = 0; i < ch_list_len; i++) |
3112 | 0 | { |
3113 | 0 | proto_tree_add_item(zbncp_hl_body_data_ch_list, hf_zbncp_data_ch_mask, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
3114 | 0 | offset += 4; |
3115 | 0 | } |
3116 | 0 | } |
3117 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_config_mask, tvb, offset, 1, ENC_NA); |
3118 | 0 | offset += 1; |
3119 | |
|
3120 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dest_short_address, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3121 | 0 | offset += 2; |
3122 | 0 | } |
3123 | 0 | else if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
3124 | 0 | { |
3125 | 0 | unsigned i; |
3126 | 0 | uint8_t parent_list_len; |
3127 | |
|
3128 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_hl_status, tvb, offset, 1, ENC_NA); |
3129 | 0 | offset += 1; |
3130 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_current_parents_short_address, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3131 | 0 | offset += 2; |
3132 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_current_parents_lqi, tvb, offset, 1, ENC_NA); |
3133 | 0 | offset += 1; |
3134 | |
|
3135 | 0 | parent_list_len = tvb_get_uint8(tvb, offset); |
3136 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_potential_parent_count, tvb, offset, 1, ENC_NA); |
3137 | 0 | offset += 1; |
3138 | |
|
3139 | 0 | if (parent_list_len) |
3140 | 0 | { |
3141 | 0 | proto_tree *zbncp_hl_body_data_parent_list = proto_tree_add_subtree_format( |
3142 | 0 | zbncp_hl_body_tree, tvb, offset, parent_list_len * 5, ett_zbncp_data_ch_list, NULL, "Potential Parent Surveys"); |
3143 | 0 | for (i = 0; i < parent_list_len; i++) |
3144 | 0 | { |
3145 | 0 | proto_tree *zbncp_hl_body_data_parent_tree = proto_tree_add_subtree_format( |
3146 | 0 | zbncp_hl_body_data_parent_list, tvb, offset, 5, ett_zbncp_data_channel, NULL, "Parent"); |
3147 | |
|
3148 | 0 | proto_tree_add_item(zbncp_hl_body_data_parent_tree, hf_zbncp_data_short_address, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3149 | 0 | offset += 2; |
3150 | 0 | proto_tree_add_item(zbncp_hl_body_data_parent_tree, hf_zbncp_data_rssi, tvb, offset, 1, ENC_NA); |
3151 | 0 | offset += 1; |
3152 | 0 | proto_tree_add_item(zbncp_hl_body_data_parent_tree, hf_zbncp_data_lqi, tvb, offset, 1, ENC_NA); |
3153 | 0 | offset += 1; |
3154 | 0 | proto_tree_add_item(zbncp_hl_body_data_parent_tree, hf_zbncp_data_classification_mask, tvb, offset, 1, ENC_NA); |
3155 | 0 | offset += 1; |
3156 | 0 | } |
3157 | 0 | } |
3158 | |
|
3159 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_total_beacons_surveyed, tvb, offset, 1, ENC_NA); |
3160 | 0 | offset += 1; |
3161 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_current_pan_id_beacons, tvb, offset, 1, ENC_NA); |
3162 | 0 | offset += 1; |
3163 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_current_nwk_potential_parents, tvb, offset, 1, ENC_NA); |
3164 | 0 | offset += 1; |
3165 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_other_zigbee_beacons, tvb, offset, 1, ENC_NA); |
3166 | 0 | offset += 1; |
3167 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_pan_id_conflict_tlv, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3168 | 0 | offset += 2; |
3169 | 0 | } |
3170 | 0 | break; |
3171 | | |
3172 | 0 | case ZBNCP_CMD_HL_ZDO_DECOMMISSION_REQ: |
3173 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
3174 | 0 | { |
3175 | 0 | unsigned i; |
3176 | 0 | uint8_t eui64_list_len; |
3177 | |
|
3178 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dest_short_address, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3179 | 0 | offset += 2; |
3180 | |
|
3181 | 0 | eui64_list_len = tvb_get_uint8(tvb, offset); |
3182 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_eui64_count, tvb, offset, 1, ENC_NA); |
3183 | 0 | offset += 1; |
3184 | |
|
3185 | 0 | if (eui64_list_len) |
3186 | 0 | { |
3187 | 0 | proto_tree *zbncp_hl_body_data_parent_list = proto_tree_add_subtree_format( |
3188 | 0 | zbncp_hl_body_tree, tvb, offset, eui64_list_len * 8, ett_zbncp_data_ch_list, NULL, "EUI64s"); |
3189 | 0 | for (i = 0; i < eui64_list_len; i++) |
3190 | 0 | { |
3191 | 0 | proto_tree_add_item(zbncp_hl_body_data_parent_list, hf_zbncp_data_eui64, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
3192 | 0 | offset += 8; |
3193 | 0 | } |
3194 | 0 | } |
3195 | 0 | } |
3196 | 0 | break; |
3197 | | |
3198 | 0 | case ZBNCP_CMD_HL_ZDO_GET_AUTH_LEVEL_REQ: |
3199 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
3200 | 0 | { |
3201 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_target_ieee_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
3202 | 0 | offset += 8; |
3203 | 0 | } |
3204 | 0 | else if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
3205 | 0 | { |
3206 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_hl_status, tvb, offset, 1, ENC_NA); |
3207 | 0 | offset += 1; |
3208 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_target_ieee_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
3209 | 0 | offset += 8; |
3210 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_initial_join_auth, tvb, offset, 1, ENC_NA); |
3211 | 0 | offset += 1; |
3212 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_key_update_method, tvb, offset, 1, ENC_NA); |
3213 | 0 | offset += 1; |
3214 | 0 | } |
3215 | 0 | break; |
3216 | | |
3217 | | /* APS API */ |
3218 | 0 | case ZBNCP_CMD_APSDE_DATA_REQ: |
3219 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
3220 | 0 | { |
3221 | 0 | uint16_t data_len; |
3222 | 0 | static int *const tx_options[] = { |
3223 | 0 | &hf_zbncp_data_tx_opt_secur, |
3224 | 0 | &hf_zbncp_data_tx_opt_obsolete, |
3225 | 0 | &hf_zbncp_data_tx_opt_ack, |
3226 | 0 | &hf_zbncp_data_tx_opt_frag, |
3227 | 0 | &hf_zbncp_data_tx_opt_inc_ext_nonce, |
3228 | 0 | &hf_zbncp_data_tx_opt_force_mesh_route, |
3229 | 0 | &hf_zbncp_data_tx_opt_send_route_record, |
3230 | 0 | NULL}; |
3231 | |
|
3232 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_param_len, tvb, offset, 1, ENC_NA); |
3233 | 0 | offset += 1; |
3234 | |
|
3235 | 0 | data_len = tvb_get_uint16(tvb, offset, ENC_LITTLE_ENDIAN); |
3236 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dlen16, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3237 | 0 | offset += 2; |
3238 | |
|
3239 | 0 | dissect_zbncp_dst_addrs(zbncp_hl_body_tree, tvb, offset + ZBNCP_CMD_APSDE_DATA_REQ_DST_ADDR_MODE_OFFSET, &offset); |
3240 | |
|
3241 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_profile_id, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3242 | 0 | offset += 2; |
3243 | |
|
3244 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_cluster_id, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3245 | 0 | offset += 2; |
3246 | |
|
3247 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dst_endpoint, tvb, offset, 1, ENC_NA); |
3248 | 0 | offset += 1; |
3249 | |
|
3250 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_src_endpoint, tvb, offset, 1, ENC_NA); |
3251 | 0 | offset += 1; |
3252 | |
|
3253 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_radius, tvb, offset, 1, ENC_NA); |
3254 | 0 | offset += 1; |
3255 | |
|
3256 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dst_addr_mode, tvb, offset, 1, ENC_NA); |
3257 | 0 | offset += 1; |
3258 | |
|
3259 | 0 | proto_tree_add_bitmask(zbncp_hl_body_tree, tvb, offset, hf_zbncp_data_tx_opt, ett_zbncp_data_tx_opt, tx_options, ENC_NA); |
3260 | 0 | offset += 1; |
3261 | |
|
3262 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_use_alias, tvb, offset, 1, ENC_NA); |
3263 | 0 | offset += 1; |
3264 | |
|
3265 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_alias_src, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3266 | 0 | offset += 2; |
3267 | |
|
3268 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_alias_seq, tvb, offset, 1, ENC_NA); |
3269 | 0 | offset += 1; |
3270 | |
|
3271 | 0 | if (data_len > (tvb_reported_length(tvb) - offset)) |
3272 | 0 | { |
3273 | 0 | data_len = tvb_reported_length(tvb) - offset; |
3274 | 0 | } |
3275 | |
|
3276 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_array, tvb, offset, data_len, ENC_NA); |
3277 | 0 | offset += data_len; |
3278 | 0 | } |
3279 | 0 | else if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
3280 | 0 | { |
3281 | 0 | dissect_zbncp_dst_addrs(zbncp_hl_body_tree, tvb, offset + ZBNCP_CMD_APSDE_DATA_REQ_RSP_DST_ADDR_MODE_OFFSET, &offset); |
3282 | |
|
3283 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dst_endpoint, tvb, offset, 1, ENC_NA); |
3284 | 0 | offset += 1; |
3285 | |
|
3286 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_src_endpoint, tvb, offset, 1, ENC_NA); |
3287 | 0 | offset += 1; |
3288 | |
|
3289 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_tx_time, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
3290 | 0 | offset += 4; |
3291 | |
|
3292 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dst_addr_mode, tvb, offset, 1, ENC_NA); |
3293 | 0 | offset += 1; |
3294 | 0 | } |
3295 | 0 | break; |
3296 | | |
3297 | 0 | case ZBNCP_CMD_APSME_BIND: |
3298 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
3299 | 0 | { |
3300 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_src_ieee_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
3301 | 0 | offset += 8; |
3302 | |
|
3303 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_src_endpoint, tvb, offset, 1, ENC_NA); |
3304 | 0 | offset += 1; |
3305 | |
|
3306 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_cluster_id, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3307 | 0 | offset += 2; |
3308 | |
|
3309 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dst_addr_mode, tvb, offset, 1, ENC_NA); |
3310 | 0 | offset += 1; |
3311 | |
|
3312 | 0 | dissect_zbncp_dst_addrs(zbncp_hl_body_tree, tvb, offset - 1, &offset); |
3313 | |
|
3314 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dst_endpoint, tvb, offset, 1, ENC_NA); |
3315 | 0 | offset += 1; |
3316 | 0 | } |
3317 | |
|
3318 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST || ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
3319 | 0 | { |
3320 | 0 | uint16_t data_len; |
3321 | | /* Binding table ID - it's an additional field for SNCP only */ |
3322 | 0 | data_len = tvb_reported_length(tvb) - offset; |
3323 | 0 | if (data_len == 1) |
3324 | 0 | { |
3325 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_index, tvb, offset, 1, ENC_NA); |
3326 | 0 | offset += 1; |
3327 | 0 | } |
3328 | 0 | } |
3329 | 0 | break; |
3330 | | |
3331 | 0 | case ZBNCP_CMD_APSME_UNBIND: |
3332 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
3333 | 0 | { |
3334 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_src_ieee_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
3335 | 0 | offset += 8; |
3336 | |
|
3337 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_src_endpoint, tvb, offset, 1, ENC_NA); |
3338 | 0 | offset += 1; |
3339 | |
|
3340 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_cluster_id, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3341 | 0 | offset += 2; |
3342 | |
|
3343 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dst_addr_mode, tvb, offset, 1, ENC_NA); |
3344 | 0 | offset += 1; |
3345 | |
|
3346 | 0 | dissect_zbncp_dst_addrs(zbncp_hl_body_tree, tvb, offset - 1, &offset); |
3347 | |
|
3348 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dst_endpoint, tvb, offset, 1, ENC_NA); |
3349 | 0 | offset += 1; |
3350 | 0 | } |
3351 | |
|
3352 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST || ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
3353 | 0 | { |
3354 | 0 | uint16_t data_len; |
3355 | | /* Binding table ID - it's an additional field for SNCP only */ |
3356 | 0 | data_len = tvb_reported_length(tvb) - offset; |
3357 | 0 | if (data_len == 1) |
3358 | 0 | { |
3359 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_index, tvb, offset, 1, ENC_NA); |
3360 | 0 | offset += 1; |
3361 | 0 | } |
3362 | 0 | } |
3363 | 0 | break; |
3364 | | |
3365 | 0 | case ZBNCP_CMD_APSME_ADD_GROUP: |
3366 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
3367 | 0 | { |
3368 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_group_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3369 | 0 | offset += 2; |
3370 | |
|
3371 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_endpoint, tvb, offset, 1, ENC_NA); |
3372 | 0 | offset += 1; |
3373 | 0 | } |
3374 | 0 | break; |
3375 | | |
3376 | 0 | case ZBNCP_CMD_APSME_RM_GROUP: |
3377 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
3378 | 0 | { |
3379 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_group_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3380 | 0 | offset += 2; |
3381 | |
|
3382 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_endpoint, tvb, offset, 1, ENC_NA); |
3383 | 0 | offset += 1; |
3384 | 0 | } |
3385 | 0 | break; |
3386 | | |
3387 | 0 | case ZBNCP_CMD_APSDE_DATA_IND: |
3388 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_INDICATION) |
3389 | 0 | { |
3390 | 0 | uint16_t data_len; |
3391 | 0 | static int *const aps_fc[] = { |
3392 | 0 | &hf_zbncp_data_aps_fc_deliv_mode, |
3393 | 0 | &hf_zbncp_data_aps_fc_secur, |
3394 | 0 | &hf_zbncp_data_aps_fc_ack_retrans, |
3395 | 0 | NULL}; |
3396 | |
|
3397 | 0 | static int *const aps_key_attr[] = { |
3398 | 0 | &hf_zbncp_data_aps_key_attr_key_src, |
3399 | 0 | &hf_zbncp_data_aps_key_attr_key_used, |
3400 | 0 | NULL}; |
3401 | |
|
3402 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_param_len, tvb, offset, 1, ENC_NA); |
3403 | 0 | offset += 1; |
3404 | |
|
3405 | 0 | data_len = tvb_get_uint16(tvb, offset, ENC_LITTLE_ENDIAN); |
3406 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dlen16, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3407 | 0 | offset += 2; |
3408 | |
|
3409 | 0 | proto_tree_add_bitmask(zbncp_hl_body_tree, tvb, offset, hf_zbncp_data_aps_fc, ett_zbncp_data_apc_fc, aps_fc, ENC_NA); |
3410 | 0 | offset += 1; |
3411 | |
|
3412 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_src_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3413 | 0 | offset += 2; |
3414 | |
|
3415 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dst_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3416 | 0 | offset += 2; |
3417 | |
|
3418 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_group_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3419 | 0 | offset += 2; |
3420 | |
|
3421 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dst_endpoint, tvb, offset, 1, ENC_NA); |
3422 | 0 | offset += 1; |
3423 | |
|
3424 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_src_endpoint, tvb, offset, 1, ENC_NA); |
3425 | 0 | offset += 1; |
3426 | |
|
3427 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_cluster_id, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3428 | 0 | offset += 2; |
3429 | |
|
3430 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_profile_id, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3431 | 0 | offset += 2; |
3432 | |
|
3433 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_aps_cnt, tvb, offset, 1, ENC_NA); |
3434 | 0 | offset += 1; |
3435 | |
|
3436 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_src_mac_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3437 | 0 | offset += 2; |
3438 | |
|
3439 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dst_mac_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3440 | 0 | offset += 2; |
3441 | |
|
3442 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_lqi, tvb, offset, 1, ENC_NA); |
3443 | 0 | offset += 1; |
3444 | |
|
3445 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_rssi, tvb, offset, 1, ENC_NA); |
3446 | 0 | offset += 1; |
3447 | |
|
3448 | 0 | proto_tree_add_bitmask(zbncp_hl_body_tree, tvb, offset, hf_zbncp_data_aps_key_attr, ett_zbncp_data_aps_key_attr, aps_key_attr, ENC_NA); |
3449 | 0 | offset += 1; |
3450 | |
|
3451 | 0 | if (data_len > (tvb_reported_length(tvb) - offset)) |
3452 | 0 | { |
3453 | 0 | data_len = tvb_reported_length(tvb) - offset; |
3454 | 0 | } |
3455 | |
|
3456 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_array, tvb, offset, data_len, ENC_NA); |
3457 | 0 | offset += data_len; |
3458 | 0 | } |
3459 | 0 | break; |
3460 | | |
3461 | 0 | case ZBNCP_CMD_APSME_RM_ALL_GROUPS: |
3462 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
3463 | 0 | { |
3464 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_endpoint, tvb, offset, 1, ENC_NA); |
3465 | 0 | offset += 1; |
3466 | 0 | } |
3467 | 0 | break; |
3468 | | |
3469 | 0 | case ZBNCP_CMD_APS_GET_GROUP_TABLE: |
3470 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
3471 | 0 | { |
3472 | 0 | uint8_t group_num; |
3473 | 0 | group_num = tvb_get_int8(tvb, offset); |
3474 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_aps_group_num, tvb, offset++, 1, ENC_NA); |
3475 | |
|
3476 | 0 | if (group_num) |
3477 | 0 | { |
3478 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_aps_group, tvb, offset, group_num * 2, ENC_LITTLE_ENDIAN); |
3479 | 0 | offset += group_num * 2; |
3480 | 0 | } |
3481 | 0 | } |
3482 | 0 | break; |
3483 | | |
3484 | 0 | case ZBNCP_CMD_APSME_RM_BIND_ENTRY_BY_ID: |
3485 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
3486 | 0 | { |
3487 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_index, tvb, offset, 1, ENC_NA); |
3488 | 0 | offset += 1; |
3489 | 0 | } |
3490 | 0 | break; |
3491 | | |
3492 | 0 | case ZBNCP_CMD_APSME_CLEAR_BIND_TABLE: |
3493 | | /* Empty: only common headers */ |
3494 | 0 | break; |
3495 | | |
3496 | 0 | case ZBNCP_CMD_APSME_GET_BIND_ENTRY_BY_ID: |
3497 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
3498 | 0 | { |
3499 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_index, tvb, offset, 1, ENC_NA); |
3500 | 0 | offset += 1; |
3501 | 0 | } |
3502 | 0 | else if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
3503 | 0 | { |
3504 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_src_endpoint, tvb, offset, 1, ENC_NA); |
3505 | 0 | offset += 1; |
3506 | |
|
3507 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_cluster_id, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3508 | 0 | offset += 2; |
3509 | |
|
3510 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dst_addr_mode, tvb, offset, 1, ENC_NA); |
3511 | 0 | offset += 1; |
3512 | |
|
3513 | 0 | dissect_zbncp_dst_addrs(zbncp_hl_body_tree, tvb, offset - 1, &offset); |
3514 | |
|
3515 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dst_endpoint, tvb, offset, 1, ENC_NA); |
3516 | 0 | offset += 1; |
3517 | |
|
3518 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_index, tvb, offset, 1, ENC_NA); |
3519 | 0 | offset += 1; |
3520 | |
|
3521 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_bind_type, tvb, offset, 1, ENC_NA); |
3522 | 0 | offset += 1; |
3523 | 0 | } |
3524 | 0 | break; |
3525 | | |
3526 | 0 | case ZBNCP_CMD_APSME_REMOTE_BIND_IND: |
3527 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_src_endpoint, tvb, offset, 1, ENC_NA); |
3528 | 0 | offset += 1; |
3529 | |
|
3530 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_cluster_id, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3531 | 0 | offset += 2; |
3532 | |
|
3533 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dst_addr_mode, tvb, offset, 1, ENC_NA); |
3534 | 0 | offset += 1; |
3535 | |
|
3536 | 0 | dissect_zbncp_dst_addrs(zbncp_hl_body_tree, tvb, offset - 1, &offset); |
3537 | |
|
3538 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dst_endpoint, tvb, offset, 1, ENC_NA); |
3539 | 0 | offset += 1; |
3540 | |
|
3541 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_index, tvb, offset, 1, ENC_NA); |
3542 | 0 | offset += 1; |
3543 | |
|
3544 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_bind_type, tvb, offset, 1, ENC_NA); |
3545 | 0 | offset += 1; |
3546 | 0 | break; |
3547 | | |
3548 | 0 | case ZBNCP_CMD_APSME_REMOTE_UNBIND_IND: |
3549 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_src_endpoint, tvb, offset, 1, ENC_NA); |
3550 | 0 | offset += 1; |
3551 | |
|
3552 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_cluster_id, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3553 | 0 | offset += 2; |
3554 | |
|
3555 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dst_addr_mode, tvb, offset, 1, ENC_NA); |
3556 | 0 | offset += 1; |
3557 | |
|
3558 | 0 | dissect_zbncp_dst_addrs(zbncp_hl_body_tree, tvb, offset - 1, &offset); |
3559 | |
|
3560 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dst_endpoint, tvb, offset, 1, ENC_NA); |
3561 | 0 | offset += 1; |
3562 | |
|
3563 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_index, tvb, offset, 1, ENC_NA); |
3564 | 0 | offset += 1; |
3565 | |
|
3566 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_bind_type, tvb, offset, 1, ENC_NA); |
3567 | 0 | offset += 1; |
3568 | 0 | break; |
3569 | | |
3570 | 0 | case ZBNCP_CMD_APSME_SET_REMOTE_BIND_OFFSET: |
3571 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
3572 | 0 | { |
3573 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_remote_bind_offset, tvb, offset, 1, ENC_NA); |
3574 | 0 | offset += 1; |
3575 | 0 | } |
3576 | 0 | break; |
3577 | | |
3578 | 0 | case ZBNCP_CMD_APSME_GET_REMOTE_BIND_OFFSET: |
3579 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
3580 | 0 | { |
3581 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_remote_bind_offset, tvb, offset, 1, ENC_NA); |
3582 | 0 | offset += 1; |
3583 | 0 | } |
3584 | 0 | break; |
3585 | | |
3586 | | /* NWK Management API*/ |
3587 | 0 | case ZBNCP_CMD_NWK_FORMATION: |
3588 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
3589 | 0 | { |
3590 | 0 | unsigned i; |
3591 | 0 | uint8_t ch_list_len = tvb_get_uint8(tvb, offset); |
3592 | |
|
3593 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ch_list_len, tvb, offset, 1, ENC_NA); |
3594 | 0 | offset += 1; |
3595 | |
|
3596 | 0 | if (ch_list_len) |
3597 | 0 | { |
3598 | 0 | proto_tree *zbncp_hl_body_data_ch_list = proto_tree_add_subtree_format( |
3599 | 0 | zbncp_hl_body_tree, tvb, offset, ch_list_len * 5, ett_zbncp_data_ch_list, NULL, "Channel List"); |
3600 | 0 | for (i = 0; i < ch_list_len; i++) |
3601 | 0 | { |
3602 | 0 | proto_tree *zbncp_hl_body_data_channel_tree = proto_tree_add_subtree_format( |
3603 | 0 | zbncp_hl_body_data_ch_list, tvb, offset, 5, ett_zbncp_data_channel, NULL, "Channel"); |
3604 | |
|
3605 | 0 | proto_tree_add_item(zbncp_hl_body_data_channel_tree, hf_zbncp_data_page, tvb, offset, 1, ENC_NA); |
3606 | 0 | offset += 1; |
3607 | |
|
3608 | 0 | proto_tree_add_item(zbncp_hl_body_data_channel_tree, hf_zbncp_data_ch_mask, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
3609 | 0 | offset += 4; |
3610 | 0 | } |
3611 | 0 | } |
3612 | |
|
3613 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_scan_dur, tvb, offset, 1, ENC_NA); |
3614 | 0 | offset += 1; |
3615 | |
|
3616 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_distr_nwk_flag, tvb, offset, 1, ENC_NA); |
3617 | 0 | offset += 1; |
3618 | |
|
3619 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3620 | 0 | offset += 2; |
3621 | |
|
3622 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ext_pan_id, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
3623 | 0 | offset += 8; |
3624 | 0 | } |
3625 | 0 | break; |
3626 | | |
3627 | 0 | case ZBNCP_CMD_NWK_DISCOVERY: |
3628 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
3629 | 0 | { |
3630 | 0 | unsigned i; |
3631 | 0 | uint8_t ch_list_len = tvb_get_uint8(tvb, offset); |
3632 | |
|
3633 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ch_list_len, tvb, offset, 1, ENC_NA); |
3634 | 0 | offset += 1; |
3635 | |
|
3636 | 0 | if (ch_list_len) |
3637 | 0 | { |
3638 | 0 | proto_tree *zbncp_hl_body_data_ch_list = proto_tree_add_subtree_format( |
3639 | 0 | zbncp_hl_body_tree, tvb, offset, ch_list_len * 5, ett_zbncp_data_ch_list, NULL, "Channel List"); |
3640 | 0 | for (i = 0; i < ch_list_len; i++) |
3641 | 0 | { |
3642 | 0 | proto_tree *zbncp_hl_body_data_channel_tree = proto_tree_add_subtree_format( |
3643 | 0 | zbncp_hl_body_data_ch_list, tvb, offset, 5, ett_zbncp_data_channel, NULL, "Channel"); |
3644 | |
|
3645 | 0 | proto_tree_add_item(zbncp_hl_body_data_channel_tree, hf_zbncp_data_page, tvb, offset, 1, ENC_NA); |
3646 | 0 | offset += 1; |
3647 | |
|
3648 | 0 | proto_tree_add_item(zbncp_hl_body_data_channel_tree, hf_zbncp_data_ch_mask, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
3649 | 0 | offset += 4; |
3650 | 0 | } |
3651 | 0 | } |
3652 | |
|
3653 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_scan_dur, tvb, offset, 1, ENC_NA); |
3654 | 0 | offset += 1; |
3655 | 0 | } |
3656 | 0 | else if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
3657 | 0 | { |
3658 | 0 | unsigned i; |
3659 | 0 | uint8_t nwk_count = tvb_get_uint8(tvb, offset); |
3660 | 0 | static int *flags[] = { |
3661 | 0 | &hf_zbncp_data_flags_permit_join, |
3662 | 0 | &hf_zbncp_data_flags_router_cap, |
3663 | 0 | &hf_zbncp_data_flags_ed_cap, |
3664 | 0 | &hf_zbncp_data_flags_stack_profile, |
3665 | 0 | NULL}; |
3666 | |
|
3667 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_count, tvb, offset, 1, ENC_NA); |
3668 | 0 | offset += 1; |
3669 | |
|
3670 | 0 | for (i = 0; i < nwk_count; i++) |
3671 | 0 | { |
3672 | 0 | proto_tree *zbncp_hl_body_data_nwk_descr = proto_tree_add_subtree_format( |
3673 | 0 | zbncp_hl_body_tree, tvb, offset, 14, ett_zbncp_data_nwk_descr, NULL, "Network Descriptor"); |
3674 | |
|
3675 | 0 | proto_tree_add_item(zbncp_hl_body_data_nwk_descr, hf_zbncp_data_ext_pan_id, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
3676 | 0 | offset += 8; |
3677 | |
|
3678 | 0 | proto_tree_add_item(zbncp_hl_body_data_nwk_descr, hf_zbncp_data_pan_id, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3679 | 0 | offset += 2; |
3680 | |
|
3681 | 0 | proto_tree_add_item(zbncp_hl_body_data_nwk_descr, hf_zbncp_data_nwk_upd_id, tvb, offset, 1, ENC_NA); |
3682 | 0 | offset += 1; |
3683 | |
|
3684 | 0 | proto_tree_add_item(zbncp_hl_body_data_nwk_descr, hf_zbncp_data_page, tvb, offset, 1, ENC_NA); |
3685 | 0 | offset += 1; |
3686 | |
|
3687 | 0 | proto_tree_add_item(zbncp_hl_body_data_nwk_descr, hf_zbncp_data_channel, tvb, offset, 1, ENC_NA); |
3688 | 0 | offset += 1; |
3689 | |
|
3690 | 0 | proto_tree_add_bitmask(zbncp_hl_body_data_nwk_descr, tvb, offset, hf_zbncp_data_flags8, ett_zbncp_data_flags, flags, ENC_NA); |
3691 | 0 | offset += 1; |
3692 | |
|
3693 | 0 | proto_tree_add_item(zbncp_hl_body_data_nwk_descr, hf_zbncp_data_lqi, tvb, offset, 1, ENC_NA); |
3694 | 0 | offset += 1; |
3695 | |
|
3696 | 0 | proto_tree_add_item(zbncp_hl_body_data_nwk_descr, hf_zbncp_data_rssi, tvb, offset, 1, ENC_NA); |
3697 | 0 | offset += 1; |
3698 | 0 | } |
3699 | 0 | } |
3700 | 0 | break; |
3701 | | |
3702 | 0 | case ZBNCP_CMD_NWK_NLME_JOIN: |
3703 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
3704 | 0 | { |
3705 | 0 | unsigned i; |
3706 | 0 | uint8_t ch_list_len; |
3707 | 0 | static int *const mac_capability[] = { |
3708 | 0 | &hf_ieee802154_cinfo_alt_coord, |
3709 | 0 | &hf_ieee802154_cinfo_device_type, |
3710 | 0 | &hf_ieee802154_cinfo_power_src, |
3711 | 0 | &hf_ieee802154_cinfo_idle_rx, |
3712 | 0 | &hf_ieee802154_cinfo_sec_capable, |
3713 | 0 | &hf_ieee802154_cinfo_alloc_addr, |
3714 | 0 | NULL}; |
3715 | |
|
3716 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ext_pan_id, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
3717 | 0 | offset += 8; |
3718 | |
|
3719 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_rejoin_nwk, tvb, offset, 1, ENC_NA); |
3720 | 0 | offset += 1; |
3721 | |
|
3722 | 0 | ch_list_len = tvb_get_uint8(tvb, offset); |
3723 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ch_list_len, tvb, offset, 1, ENC_NA); |
3724 | 0 | offset += 1; |
3725 | |
|
3726 | 0 | if (ch_list_len) |
3727 | 0 | { |
3728 | 0 | proto_tree *zbncp_hl_body_data_ch_list = proto_tree_add_subtree_format( |
3729 | 0 | zbncp_hl_body_tree, tvb, offset, ch_list_len * 5, ett_zbncp_data_ch_list, NULL, "Channel List"); |
3730 | 0 | for (i = 0; i < ch_list_len; i++) |
3731 | 0 | { |
3732 | 0 | proto_tree *zbncp_hl_body_data_channel_tree = proto_tree_add_subtree_format( |
3733 | 0 | zbncp_hl_body_data_ch_list, tvb, offset, 5, ett_zbncp_data_channel, NULL, "Channel"); |
3734 | |
|
3735 | 0 | proto_tree_add_item(zbncp_hl_body_data_channel_tree, hf_zbncp_data_page, tvb, offset, 1, ENC_NA); |
3736 | 0 | offset += 1; |
3737 | |
|
3738 | 0 | proto_tree_add_item(zbncp_hl_body_data_channel_tree, hf_zbncp_data_ch_mask, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
3739 | 0 | offset += 4; |
3740 | 0 | } |
3741 | 0 | } |
3742 | |
|
3743 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_scan_dur, tvb, offset, 1, ENC_NA); |
3744 | 0 | offset += 1; |
3745 | |
|
3746 | 0 | proto_tree_add_bitmask(zbncp_hl_body_tree, tvb, offset, hf_zbncp_data_mac_cap, ett_zbncp_data_mac_cap, mac_capability, ENC_NA); |
3747 | 0 | offset += 1; |
3748 | |
|
3749 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_secur_en, tvb, offset, 1, ENC_NA); |
3750 | 0 | offset += 1; |
3751 | 0 | } |
3752 | 0 | else if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
3753 | 0 | { |
3754 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3755 | 0 | offset += 2; |
3756 | |
|
3757 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ext_pan_id, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
3758 | 0 | offset += 8; |
3759 | |
|
3760 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_page, tvb, offset, 1, ENC_NA); |
3761 | 0 | offset += 1; |
3762 | |
|
3763 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_channel, tvb, offset, 1, ENC_NA); |
3764 | 0 | offset += 1; |
3765 | |
|
3766 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_enh_beacon, tvb, offset, 1, ENC_NA); |
3767 | 0 | offset += 1; |
3768 | |
|
3769 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_mac_if, tvb, offset, 1, ENC_NA); |
3770 | 0 | offset += 1; |
3771 | 0 | } |
3772 | 0 | break; |
3773 | | |
3774 | 0 | case ZBNCP_CMD_NWK_PERMIT_JOINING: |
3775 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
3776 | 0 | { |
3777 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_permit_dur, tvb, offset, 1, ENC_NA); |
3778 | 0 | offset += 1; |
3779 | 0 | } |
3780 | 0 | break; |
3781 | | |
3782 | 0 | case ZBNCP_CMD_NWK_GET_IEEE_BY_SHORT: |
3783 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
3784 | 0 | { |
3785 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3786 | 0 | offset += 2; |
3787 | 0 | } |
3788 | 0 | else if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
3789 | 0 | { |
3790 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ieee_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
3791 | 0 | offset += 8; |
3792 | 0 | } |
3793 | 0 | break; |
3794 | | |
3795 | 0 | case ZBNCP_CMD_NWK_GET_SHORT_BY_IEEE: |
3796 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
3797 | 0 | { |
3798 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ieee_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
3799 | 0 | offset += 8; |
3800 | 0 | } |
3801 | 0 | else if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
3802 | 0 | { |
3803 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3804 | 0 | offset += 2; |
3805 | 0 | } |
3806 | 0 | break; |
3807 | | |
3808 | 0 | case ZBNCP_CMD_NWK_GET_NEIGHBOR_BY_IEEE: |
3809 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
3810 | 0 | { |
3811 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ieee_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
3812 | 0 | offset += 8; |
3813 | 0 | } |
3814 | 0 | else if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
3815 | 0 | { |
3816 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ieee_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
3817 | 0 | offset += 8; |
3818 | |
|
3819 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3820 | 0 | offset += 2; |
3821 | |
|
3822 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_zb_role, tvb, offset, 1, ENC_NA); |
3823 | 0 | offset += 1; |
3824 | |
|
3825 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_rx_on_idle, tvb, offset, 1, ENC_NA); |
3826 | 0 | offset += 1; |
3827 | |
|
3828 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ed_config, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3829 | 0 | offset += 2; |
3830 | |
|
3831 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_timeout_cnt, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
3832 | 0 | offset += 4; |
3833 | |
|
3834 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dev_timeout, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
3835 | 0 | offset += 4; |
3836 | |
|
3837 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_relationship, tvb, offset, 1, ENC_NA); |
3838 | 0 | offset += 1; |
3839 | |
|
3840 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_tx_fail_cnt, tvb, offset, 1, ENC_NA); |
3841 | 0 | offset += 1; |
3842 | |
|
3843 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_lqi, tvb, offset, 1, ENC_NA); |
3844 | 0 | offset += 1; |
3845 | |
|
3846 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_out_cost, tvb, offset, 1, ENC_NA); |
3847 | 0 | offset += 1; |
3848 | |
|
3849 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_age, tvb, offset, 1, ENC_NA); |
3850 | 0 | offset += 1; |
3851 | |
|
3852 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_keepalive_rec, tvb, offset, 1, ENC_NA); |
3853 | 0 | offset += 1; |
3854 | |
|
3855 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_mac_if_idx, tvb, offset, 1, ENC_NA); |
3856 | 0 | offset += 1; |
3857 | 0 | } |
3858 | 0 | break; |
3859 | | |
3860 | 0 | case ZBNCP_CMD_NWK_REJOINED_IND: |
3861 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_INDICATION) |
3862 | 0 | { |
3863 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3864 | 0 | offset += 2; |
3865 | |
|
3866 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ext_pan_id, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
3867 | 0 | offset += 8; |
3868 | |
|
3869 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_page, tvb, offset, 1, ENC_NA); |
3870 | 0 | offset += 1; |
3871 | |
|
3872 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_channel, tvb, offset, 1, ENC_NA); |
3873 | 0 | offset += 1; |
3874 | |
|
3875 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_beacon_type, tvb, offset, 1, ENC_NA); |
3876 | 0 | offset += 1; |
3877 | |
|
3878 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_mac_if, tvb, offset, 1, ENC_NA); |
3879 | 0 | offset += 1; |
3880 | 0 | } |
3881 | 0 | break; |
3882 | | |
3883 | 0 | case ZBNCP_CMD_NWK_REJOIN_FAILED_IND: |
3884 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_INDICATION) |
3885 | 0 | { |
3886 | 0 | unsigned status_category = tvb_get_uint8(tvb, offset); |
3887 | 0 | unsigned status; |
3888 | |
|
3889 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_hl_status_cat, tvb, offset, 1, ENC_NA); |
3890 | 0 | offset += 1; |
3891 | | |
3892 | | /* Add status */ |
3893 | 0 | status = tvb_get_uint8(tvb, offset); |
3894 | 0 | switch (status_category) |
3895 | 0 | { |
3896 | 0 | case ZBNCP_HIGH_LVL_STAT_CAT_GENERIC: |
3897 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_hl_status_generic, tvb, offset, 1, ENC_NA); |
3898 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, ", Status: %s", val_to_str_const(status, zbncp_hl_status_generic, "Unknown Status")); |
3899 | 0 | break; |
3900 | | |
3901 | 0 | case ZBNCP_HIGH_LVL_STAT_CAT_MAC: |
3902 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_hl_status_mac, tvb, offset, 1, ENC_NA); |
3903 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, ", Status: %s", val_to_str_const(status, zb_mac_state, "Unknown Status")); |
3904 | 0 | break; |
3905 | | |
3906 | 0 | case ZBNCP_HIGH_LVL_STAT_CAT_NWK: |
3907 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_hl_status_nwk, tvb, offset, 1, ENC_NA); |
3908 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, ", Status: %s", val_to_str_const(status, zb_nwk_state, "Unknown Status")); |
3909 | 0 | break; |
3910 | | |
3911 | 0 | case ZBNCP_HIGH_LVL_STAT_CAT_APS: |
3912 | 0 | dissect_zbee_aps_status_code(tvb, pinfo, zbncp_hl_body_tree, offset); |
3913 | 0 | break; |
3914 | | |
3915 | 0 | case ZBNCP_HIGH_LVL_STAT_CAT_CBKE: |
3916 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_hl_status_cbke, tvb, offset, 1, ENC_NA); |
3917 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, ", Status: %s", val_to_str_const(status, zb_cbke_state, "Unknown Status")); |
3918 | 0 | break; |
3919 | | |
3920 | 0 | default: |
3921 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_hl_status, tvb, offset, 1, ENC_NA); |
3922 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, ", Status: 0x%x", status); |
3923 | 0 | } |
3924 | 0 | offset += 1; |
3925 | 0 | } |
3926 | 0 | break; |
3927 | | |
3928 | 0 | case ZBNCP_CMD_NWK_LEAVE_IND: |
3929 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_INDICATION) |
3930 | 0 | { |
3931 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ieee_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
3932 | 0 | offset += 8; |
3933 | |
|
3934 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_rejoin, tvb, offset, 1, ENC_NA); |
3935 | 0 | offset += 1; |
3936 | 0 | } |
3937 | 0 | break; |
3938 | | |
3939 | 0 | case ZBNCP_CMD_PIM_SET_FAST_POLL_INTERVAL: |
3940 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
3941 | 0 | { |
3942 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_fast_poll_int, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
3943 | 0 | offset += 2; |
3944 | 0 | } |
3945 | 0 | break; |
3946 | | |
3947 | 0 | case ZBNCP_CMD_PIM_SET_LONG_POLL_INTERVAL: |
3948 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
3949 | 0 | { |
3950 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_long_poll_int, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
3951 | 0 | offset += 4; |
3952 | 0 | } |
3953 | 0 | break; |
3954 | | |
3955 | 0 | case ZBNCP_CMD_PIM_START_FAST_POLL: |
3956 | | /* Empty: only common headers */ |
3957 | 0 | break; |
3958 | | |
3959 | 0 | case ZBNCP_CMD_PIM_START_POLL: |
3960 | | /* Empty: only common headers */ |
3961 | 0 | break; |
3962 | | |
3963 | 0 | case ZBNCP_CMD_PIM_SET_ADAPTIVE_POLL: |
3964 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
3965 | 0 | { |
3966 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_time, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
3967 | 0 | offset += 4; |
3968 | 0 | } |
3969 | 0 | break; |
3970 | | |
3971 | 0 | case ZBNCP_CMD_PIM_STOP_FAST_POLL: |
3972 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
3973 | 0 | { |
3974 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_stop_fast_poll_result, tvb, offset, 1, ENC_NA); |
3975 | 0 | offset += 1; |
3976 | 0 | } |
3977 | 0 | break; |
3978 | | |
3979 | 0 | case ZBNCP_CMD_PIM_STOP_POLL: |
3980 | | /* Empty: only common headers */ |
3981 | 0 | break; |
3982 | | |
3983 | 0 | case ZBNCP_CMD_PIM_ENABLE_TURBO_POLL: |
3984 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
3985 | 0 | { |
3986 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_time, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
3987 | 0 | offset += 4; |
3988 | 0 | } |
3989 | 0 | break; |
3990 | | |
3991 | 0 | case ZBNCP_CMD_PIM_DISABLE_TURBO_POLL: |
3992 | | /* Empty: only common headers */ |
3993 | 0 | break; |
3994 | | |
3995 | 0 | case ZBNCP_CMD_NWK_GET_FIRST_NBT_ENTRY: |
3996 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
3997 | 0 | { |
3998 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ieee_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
3999 | 0 | offset += 8; |
4000 | |
|
4001 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
4002 | 0 | offset += 2; |
4003 | |
|
4004 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_zb_role, tvb, offset, 1, ENC_NA); |
4005 | 0 | offset += 1; |
4006 | |
|
4007 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_rx_on_idle, tvb, offset, 1, ENC_NA); |
4008 | 0 | offset += 1; |
4009 | |
|
4010 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ed_config, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
4011 | 0 | offset += 2; |
4012 | |
|
4013 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_timeout_cnt, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
4014 | 0 | offset += 4; |
4015 | |
|
4016 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dev_timeout, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
4017 | 0 | offset += 4; |
4018 | |
|
4019 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_relationship, tvb, offset, 1, ENC_NA); |
4020 | 0 | offset += 1; |
4021 | |
|
4022 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_tx_fail_cnt, tvb, offset, 1, ENC_NA); |
4023 | 0 | offset += 1; |
4024 | |
|
4025 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_lqi, tvb, offset, 1, ENC_NA); |
4026 | 0 | offset += 1; |
4027 | |
|
4028 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_out_cost, tvb, offset, 1, ENC_NA); |
4029 | 0 | offset += 1; |
4030 | |
|
4031 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_age, tvb, offset, 1, ENC_NA); |
4032 | 0 | offset += 1; |
4033 | |
|
4034 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_keepalive_rec, tvb, offset, 1, ENC_NA); |
4035 | 0 | offset += 1; |
4036 | |
|
4037 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_mac_if_idx, tvb, offset, 1, ENC_NA); |
4038 | 0 | offset += 1; |
4039 | 0 | } |
4040 | 0 | break; |
4041 | | |
4042 | 0 | case ZBNCP_CMD_NWK_GET_NEXT_NBT_ENTRY: |
4043 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
4044 | 0 | { |
4045 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ieee_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
4046 | 0 | offset += 8; |
4047 | |
|
4048 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
4049 | 0 | offset += 2; |
4050 | |
|
4051 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_zb_role, tvb, offset, 1, ENC_NA); |
4052 | 0 | offset += 1; |
4053 | |
|
4054 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_rx_on_idle, tvb, offset, 1, ENC_NA); |
4055 | 0 | offset += 1; |
4056 | |
|
4057 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ed_config, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
4058 | 0 | offset += 2; |
4059 | |
|
4060 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_timeout_cnt, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
4061 | 0 | offset += 4; |
4062 | |
|
4063 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dev_timeout, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
4064 | 0 | offset += 4; |
4065 | |
|
4066 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_relationship, tvb, offset, 1, ENC_NA); |
4067 | 0 | offset += 1; |
4068 | |
|
4069 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_tx_fail_cnt, tvb, offset, 1, ENC_NA); |
4070 | 0 | offset += 1; |
4071 | |
|
4072 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_lqi, tvb, offset, 1, ENC_NA); |
4073 | 0 | offset += 1; |
4074 | |
|
4075 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_out_cost, tvb, offset, 1, ENC_NA); |
4076 | 0 | offset += 1; |
4077 | |
|
4078 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_age, tvb, offset, 1, ENC_NA); |
4079 | 0 | offset += 1; |
4080 | |
|
4081 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_keepalive_rec, tvb, offset, 1, ENC_NA); |
4082 | 0 | offset += 1; |
4083 | |
|
4084 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_mac_if_idx, tvb, offset, 1, ENC_NA); |
4085 | 0 | offset += 1; |
4086 | 0 | } |
4087 | 0 | break; |
4088 | | |
4089 | 0 | case ZBNCP_CMD_NWK_PAN_ID_CONFLICT_RESOLVE: |
4090 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4091 | 0 | { |
4092 | 0 | unsigned i; |
4093 | 0 | uint16_t pan_id_cnt = tvb_get_uint16(tvb, offset, ENC_LITTLE_ENDIAN); |
4094 | |
|
4095 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_pan_id_cnt, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
4096 | 0 | offset += 2; |
4097 | |
|
4098 | 0 | for (i = 0; i < pan_id_cnt; i++) |
4099 | 0 | { |
4100 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_pan_id, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
4101 | 0 | offset += 2; |
4102 | 0 | } |
4103 | 0 | } |
4104 | 0 | break; |
4105 | | |
4106 | 0 | case ZBNCP_CMD_NWK_PAN_ID_CONFLICT_IND: |
4107 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_INDICATION) |
4108 | 0 | { |
4109 | 0 | unsigned i; |
4110 | 0 | uint16_t pan_id_cnt = tvb_get_uint16(tvb, offset, ENC_LITTLE_ENDIAN); |
4111 | |
|
4112 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_pan_id_cnt, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
4113 | 0 | offset += 2; |
4114 | |
|
4115 | 0 | for (i = 0; i < pan_id_cnt; i++) |
4116 | 0 | { |
4117 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_pan_id, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
4118 | 0 | offset += 2; |
4119 | 0 | } |
4120 | 0 | } |
4121 | 0 | break; |
4122 | | |
4123 | 0 | case ZBNCP_CMD_NWK_ADDRESS_UPDATE_IND: |
4124 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_INDICATION) |
4125 | 0 | { |
4126 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
4127 | 0 | offset += 2; |
4128 | 0 | } |
4129 | 0 | break; |
4130 | | |
4131 | 0 | case ZBNCP_CMD_NWK_START_WITHOUT_FORMATION: |
4132 | | /* Empty: only common headers */ |
4133 | 0 | break; |
4134 | | |
4135 | 0 | case ZBNCP_CMD_NWK_NLME_ROUTER_START: |
4136 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4137 | 0 | { |
4138 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_beacon_order, tvb, offset, 1, ENC_NA); |
4139 | 0 | offset += 1; |
4140 | |
|
4141 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_superframe_order, tvb, offset, 1, ENC_NA); |
4142 | 0 | offset += 1; |
4143 | |
|
4144 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_battery_life_ext, tvb, offset, 1, ENC_NA); |
4145 | 0 | offset += 1; |
4146 | 0 | } |
4147 | 0 | break; |
4148 | | |
4149 | 0 | case ZBNCP_CMD_PIM_SINGLE_POLL: |
4150 | | /* Empty: only common headers */ |
4151 | 0 | break; |
4152 | | |
4153 | 0 | case ZBNCP_CMD_PARENT_LOST_IND: |
4154 | | /* Empty: only common headers */ |
4155 | 0 | break; |
4156 | | |
4157 | 0 | case ZBNCP_CMD_PIM_START_TURBO_POLL_PACKETS: |
4158 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4159 | 0 | { |
4160 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_poll_pkt_cnt, tvb, offset, 1, ENC_NA); |
4161 | 0 | offset += 1; |
4162 | 0 | } |
4163 | 0 | break; |
4164 | | |
4165 | 0 | case ZBNCP_CMD_PIM_START_TURBO_POLL_CONTINUOUS: |
4166 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4167 | 0 | { |
4168 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_poll_timeout, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
4169 | 0 | offset += 4; |
4170 | 0 | } |
4171 | 0 | break; |
4172 | | |
4173 | 0 | case ZBNCP_CMD_PIM_TURBO_POLL_CONTINUOUS_LEAVE: |
4174 | | /* Empty: only common headers */ |
4175 | 0 | break; |
4176 | | |
4177 | 0 | case ZBNCP_CMD_PIM_TURBO_POLL_PACKETS_LEAVE: |
4178 | | /* Empty: only common headers */ |
4179 | 0 | break; |
4180 | | |
4181 | 0 | case ZBNCP_CMD_PIM_PERMIT_TURBO_POLL: |
4182 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4183 | 0 | { |
4184 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_poll_permit_flag, tvb, offset, 1, ENC_NA); |
4185 | 0 | offset += 1; |
4186 | 0 | } |
4187 | 0 | break; |
4188 | | |
4189 | 0 | case ZBNCP_CMD_PIM_SET_FAST_POLL_TIMEOUT: |
4190 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4191 | 0 | { |
4192 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_poll_timeout, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
4193 | 0 | offset += 4; |
4194 | 0 | } |
4195 | 0 | break; |
4196 | | |
4197 | 0 | case ZBNCP_CMD_PIM_GET_LONG_POLL_INTERVAL: |
4198 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
4199 | 0 | { |
4200 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_long_poll_int, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
4201 | 0 | offset += 4; |
4202 | 0 | } |
4203 | 0 | break; |
4204 | | |
4205 | 0 | case ZBNCP_CMD_PIM_GET_IN_FAST_POLL_FLAG: |
4206 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
4207 | 0 | { |
4208 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_fast_poll_flag, tvb, offset, 1, ENC_NA); |
4209 | 0 | offset += 1; |
4210 | 0 | } |
4211 | 0 | break; |
4212 | | |
4213 | 0 | case ZBNCP_CMD_SET_KEEPALIVE_MODE: |
4214 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4215 | 0 | { |
4216 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_keepalive_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
4217 | 0 | offset += 1; |
4218 | 0 | } |
4219 | 0 | break; |
4220 | | |
4221 | 0 | case ZBNCP_CMD_START_CONCENTRATOR_MODE: |
4222 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4223 | 0 | { |
4224 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_radius, tvb, offset, 1, ENC_NA); |
4225 | 0 | offset += 1; |
4226 | |
|
4227 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_time_between_disc, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
4228 | 0 | offset += 4; |
4229 | 0 | } |
4230 | 0 | break; |
4231 | | |
4232 | 0 | case ZBNCP_CMD_STOP_CONCENTRATOR_MODE: |
4233 | | /* Empty: only common headers */ |
4234 | 0 | break; |
4235 | | |
4236 | 0 | case ZBNCP_CMD_NWK_ENABLE_PAN_ID_CONFLICT_RESOLUTION: |
4237 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4238 | 0 | { |
4239 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_enable_flag, tvb, offset, 1, ENC_NA); |
4240 | 0 | offset += 1; |
4241 | 0 | } |
4242 | 0 | break; |
4243 | | |
4244 | 0 | case ZBNCP_CMD_NWK_ENABLE_AUTO_PAN_ID_CONFLICT_RESOLUTION: |
4245 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4246 | 0 | { |
4247 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_enable_flag, tvb, offset, 1, ENC_NA); |
4248 | 0 | offset += 1; |
4249 | 0 | } |
4250 | 0 | break; |
4251 | | |
4252 | 0 | case ZBNCP_CMD_PIM_TURBO_POLL_CANCEL_PACKET: |
4253 | | /* Empty: only common headers */ |
4254 | 0 | break; |
4255 | | |
4256 | 0 | case ZBNCP_CMD_SET_FORCE_ROUTE_RECORD: |
4257 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4258 | 0 | { |
4259 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_force_route_record_sending, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
4260 | 0 | offset += 1; |
4261 | 0 | } |
4262 | 0 | break; |
4263 | | |
4264 | 0 | case ZBNCP_CMD_GET_FORCE_ROUTE_RECORD: |
4265 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
4266 | 0 | { |
4267 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_force_route_record_sending, tvb, offset, 1, ENC_LITTLE_ENDIAN); |
4268 | 0 | offset += 1; |
4269 | 0 | } |
4270 | 0 | break; |
4271 | | |
4272 | 0 | case ZBNCP_CMD_NWK_NBR_ITERATOR_NEXT: |
4273 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4274 | 0 | { |
4275 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_start_idx_16b, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
4276 | 0 | offset += 2; |
4277 | |
|
4278 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_upd_idx, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
4279 | 0 | offset += 4; |
4280 | 0 | } |
4281 | 0 | break; |
4282 | | |
4283 | 0 | case ZBNCP_CMD_ZB_DEBUG_SIGNAL_TCLK_READY_IND: |
4284 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_INDICATION) |
4285 | 0 | { |
4286 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ieee_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
4287 | 0 | offset += 8; |
4288 | 0 | } |
4289 | 0 | break; |
4290 | | |
4291 | 0 | case ZBNCP_CMD_ZB_DEVICE_READY_FOR_INTERVIEW_IND: |
4292 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_INDICATION) |
4293 | 0 | { |
4294 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ieee_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
4295 | 0 | offset += 8; |
4296 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_short_address, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
4297 | 0 | offset += 2; |
4298 | 0 | } |
4299 | 0 | break; |
4300 | | |
4301 | 0 | case ZBNCP_CMD_ZB_DEVICE_INTERVIEW_FINISHED_IND: |
4302 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_INDICATION) |
4303 | 0 | { |
4304 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ieee_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
4305 | 0 | offset += 8; |
4306 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_short_address, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
4307 | 0 | offset += 2; |
4308 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_hl_status, tvb, offset, 1, ENC_NA); |
4309 | 0 | offset += 1; |
4310 | 0 | } |
4311 | 0 | break; |
4312 | | |
4313 | 0 | case ZBNCP_CMD_ZB_PREPARE_NETWORK_FOR_CHANNEL_PAN_ID_CHANGE: |
4314 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4315 | 0 | { |
4316 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_next_pan_id_change, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
4317 | 0 | offset += 2; |
4318 | 0 | } |
4319 | 0 | else if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
4320 | 0 | { |
4321 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_error_count, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
4322 | 0 | offset += 2; |
4323 | 0 | } |
4324 | 0 | break; |
4325 | | |
4326 | 0 | case ZBNCP_CMD_ZB_PREPARE_NETWORK_FOR_CHANNEL_CHANGE: |
4327 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4328 | 0 | { |
4329 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_next_channel_change, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
4330 | 0 | offset += 4; |
4331 | 0 | } |
4332 | 0 | else if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
4333 | 0 | { |
4334 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_error_count, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
4335 | 0 | offset += 2; |
4336 | 0 | } |
4337 | 0 | break; |
4338 | | |
4339 | 0 | case ZBNCP_CMD_ZB_START_CHANNEL_CHANGE: |
4340 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4341 | 0 | { |
4342 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_next_channel_change, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
4343 | 0 | offset += 4; |
4344 | 0 | } |
4345 | 0 | break; |
4346 | | |
4347 | 0 | case ZBNCP_CMD_ZB_START_PAN_ID_CHANGE: |
4348 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4349 | 0 | { |
4350 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_next_pan_id_change, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
4351 | 0 | offset += 2; |
4352 | 0 | } |
4353 | 0 | break; |
4354 | | |
4355 | | /* Security API */ |
4356 | 0 | case ZBNCP_CMD_SECUR_SET_LOCAL_IC: |
4357 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4358 | 0 | { |
4359 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ic, tvb, offset, tvb_reported_length(tvb) - offset, ENC_NA); |
4360 | 0 | offset = tvb_reported_length(tvb); |
4361 | 0 | } |
4362 | 0 | break; |
4363 | | |
4364 | 0 | case ZBNCP_CMD_SECUR_ADD_IC: |
4365 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4366 | 0 | { |
4367 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ieee_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
4368 | 0 | offset += 8; |
4369 | |
|
4370 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ic, tvb, offset, tvb_reported_length(tvb) - offset, ENC_NA); |
4371 | 0 | offset = tvb_reported_length(tvb); |
4372 | 0 | } |
4373 | 0 | break; |
4374 | | |
4375 | 0 | case ZBNCP_CMD_SECUR_DEL_IC: |
4376 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4377 | 0 | { |
4378 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ieee_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
4379 | 0 | offset += 8; |
4380 | 0 | } |
4381 | 0 | break; |
4382 | | |
4383 | 0 | case ZBNCP_CMD_SECUR_ADD_CERT: |
4384 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4385 | 0 | { |
4386 | 0 | uint8_t crypto_suite = tvb_get_uint8(tvb, offset); |
4387 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_cs, tvb, offset, 1, ENC_NA); |
4388 | 0 | offset += 1; |
4389 | |
|
4390 | 0 | if (crypto_suite == 1) |
4391 | 0 | { |
4392 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ca_pub_key, tvb, offset, 22, ENC_NA); |
4393 | 0 | offset += 22; |
4394 | |
|
4395 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_cert, tvb, offset, 48, ENC_NA); |
4396 | 0 | offset += 48; |
4397 | |
|
4398 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ca_priv_key, tvb, offset, 21, ENC_NA); |
4399 | 0 | offset += 21; |
4400 | 0 | } |
4401 | 0 | else if (crypto_suite == 2) |
4402 | 0 | { |
4403 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ca_pub_key, tvb, offset, 37, ENC_NA); |
4404 | 0 | offset += 37; |
4405 | |
|
4406 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_cert, tvb, offset, 74, ENC_NA); |
4407 | 0 | offset += 74; |
4408 | |
|
4409 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ca_priv_key, tvb, offset, 36, ENC_NA); |
4410 | 0 | offset += 36; |
4411 | 0 | } |
4412 | 0 | } |
4413 | 0 | break; |
4414 | | |
4415 | 0 | case ZBNCP_CMD_SECUR_DEL_CERT: |
4416 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4417 | 0 | { |
4418 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_cs, tvb, offset, 1, ENC_NA); |
4419 | 0 | offset += 1; |
4420 | |
|
4421 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_issuer, tvb, offset, 8, ENC_NA); |
4422 | 0 | offset += 8; |
4423 | |
|
4424 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ieee_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
4425 | 0 | offset += 8; |
4426 | 0 | } |
4427 | 0 | break; |
4428 | | |
4429 | 0 | case ZBNCP_CMD_SECUR_START_KE: |
4430 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4431 | 0 | { |
4432 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_cs, tvb, offset, 1, ENC_NA); |
4433 | 0 | offset += 1; |
4434 | |
|
4435 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
4436 | 0 | offset += 2; |
4437 | 0 | } |
4438 | 0 | else if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
4439 | 0 | { |
4440 | 0 | unsigned status_category = tvb_get_uint8(tvb, offset); |
4441 | 0 | unsigned status; |
4442 | |
|
4443 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_hl_status_cat, tvb, offset, 1, ENC_NA); |
4444 | 0 | offset += 1; |
4445 | | |
4446 | | /* Add status */ |
4447 | 0 | status = tvb_get_uint8(tvb, offset); |
4448 | 0 | switch (status_category) |
4449 | 0 | { |
4450 | 0 | case ZBNCP_HIGH_LVL_STAT_CAT_GENERIC: |
4451 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_hl_status_generic, tvb, offset, 1, ENC_NA); |
4452 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, ", Status: %s", val_to_str_const(status, zbncp_hl_status_generic, "Unknown Status")); |
4453 | 0 | break; |
4454 | | |
4455 | 0 | case ZBNCP_HIGH_LVL_STAT_CAT_MAC: |
4456 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_hl_status_mac, tvb, offset, 1, ENC_NA); |
4457 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, ", Status: %s", val_to_str_const(status, zb_mac_state, "Unknown Status")); |
4458 | 0 | break; |
4459 | | |
4460 | 0 | case ZBNCP_HIGH_LVL_STAT_CAT_NWK: |
4461 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_hl_status_nwk, tvb, offset, 1, ENC_NA); |
4462 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, ", Status: %s", val_to_str_const(status, zb_nwk_state, "Unknown Status")); |
4463 | 0 | break; |
4464 | | |
4465 | 0 | case ZBNCP_HIGH_LVL_STAT_CAT_APS: |
4466 | 0 | dissect_zbee_aps_status_code(tvb, pinfo, zbncp_hl_body_tree, offset); |
4467 | 0 | break; |
4468 | | |
4469 | 0 | case ZBNCP_HIGH_LVL_STAT_CAT_CBKE: |
4470 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_hl_status_cbke, tvb, offset, 1, ENC_NA); |
4471 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, ", Status: %s", val_to_str_const(status, zb_cbke_state, "Unknown Status")); |
4472 | 0 | break; |
4473 | | |
4474 | 0 | default: |
4475 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_hl_status, tvb, offset, 1, ENC_NA); |
4476 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, ", Status: 0x%x", status); |
4477 | 0 | } |
4478 | 0 | offset += 1; |
4479 | 0 | } |
4480 | 0 | break; |
4481 | | |
4482 | 0 | case ZBNCP_CMD_SECUR_START_PARTNER_LK: |
4483 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4484 | 0 | { |
4485 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
4486 | 0 | offset += 2; |
4487 | 0 | } |
4488 | 0 | break; |
4489 | | |
4490 | 0 | case ZBNCP_CMD_SECUR_CBKE_SRV_FINISHED_IND: |
4491 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_INDICATION) |
4492 | 0 | { |
4493 | 0 | unsigned status_category = tvb_get_uint8(tvb, offset); |
4494 | 0 | unsigned status; |
4495 | |
|
4496 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_hl_status_cat, tvb, offset, 1, ENC_NA); |
4497 | 0 | offset += 1; |
4498 | | |
4499 | | /* Add status */ |
4500 | 0 | status = tvb_get_uint8(tvb, offset); |
4501 | 0 | switch (status_category) |
4502 | 0 | { |
4503 | 0 | case ZBNCP_HIGH_LVL_STAT_CAT_GENERIC: |
4504 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_hl_status_generic, tvb, offset, 1, ENC_NA); |
4505 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, ", Status: %s", val_to_str_const(status, zbncp_hl_status_generic, "Unknown Status")); |
4506 | 0 | break; |
4507 | | |
4508 | 0 | case ZBNCP_HIGH_LVL_STAT_CAT_MAC: |
4509 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_hl_status_mac, tvb, offset, 1, ENC_NA); |
4510 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, ", Status: %s", val_to_str_const(status, zb_mac_state, "Unknown Status")); |
4511 | 0 | break; |
4512 | | |
4513 | 0 | case ZBNCP_HIGH_LVL_STAT_CAT_NWK: |
4514 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_hl_status_nwk, tvb, offset, 1, ENC_NA); |
4515 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, ", Status: %s", val_to_str_const(status, zb_nwk_state, "Unknown Status")); |
4516 | 0 | break; |
4517 | | |
4518 | 0 | case ZBNCP_HIGH_LVL_STAT_CAT_APS: |
4519 | 0 | dissect_zbee_aps_status_code(tvb, pinfo, zbncp_hl_body_tree, offset); |
4520 | 0 | break; |
4521 | | |
4522 | 0 | case ZBNCP_HIGH_LVL_STAT_CAT_CBKE: |
4523 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_hl_status_cbke, tvb, offset, 1, ENC_NA); |
4524 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, ", Status: %s", val_to_str_const(status, zb_cbke_state, "Unknown Status")); |
4525 | 0 | break; |
4526 | | |
4527 | 0 | default: |
4528 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_hl_status, tvb, offset, 1, ENC_NA); |
4529 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, ", Status: 0x%x", status); |
4530 | 0 | } |
4531 | 0 | offset += 1; |
4532 | |
|
4533 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
4534 | 0 | offset += 2; |
4535 | |
|
4536 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ieee_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
4537 | 0 | offset += 8; |
4538 | 0 | } |
4539 | 0 | break; |
4540 | | |
4541 | 0 | case ZBNCP_CMD_SECUR_PARTNER_LK_FINISHED_IND: |
4542 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_INDICATION) |
4543 | 0 | { |
4544 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ieee_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
4545 | 0 | offset += 8; |
4546 | 0 | } |
4547 | 0 | break; |
4548 | | |
4549 | 0 | case ZBNCP_CMD_SECUR_KE_WHITELIST_ADD: |
4550 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4551 | 0 | { |
4552 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ieee_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
4553 | 0 | offset += 8; |
4554 | 0 | } |
4555 | 0 | break; |
4556 | | |
4557 | 0 | case ZBNCP_CMD_SECUR_KE_WHITELIST_DEL: |
4558 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4559 | 0 | { |
4560 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ieee_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
4561 | 0 | offset += 8; |
4562 | 0 | } |
4563 | 0 | break; |
4564 | | |
4565 | 0 | case ZBNCP_CMD_SECUR_KE_WHITELIST_DEL_ALL: |
4566 | | /* Empty: only common headers */ |
4567 | 0 | break; |
4568 | | |
4569 | 0 | case ZBNCP_CMD_SECUR_JOIN_USES_IC: |
4570 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4571 | 0 | { |
4572 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ic_en, tvb, offset, 1, ENC_NA); |
4573 | 0 | offset += 1; |
4574 | 0 | } |
4575 | 0 | break; |
4576 | | |
4577 | 0 | case ZBNCP_CMD_SECUR_GET_IC_BY_IEEE: |
4578 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4579 | 0 | { |
4580 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ieee_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
4581 | 0 | offset += 8; |
4582 | 0 | } |
4583 | 0 | else if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
4584 | 0 | { |
4585 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ic, tvb, offset, tvb_reported_length(tvb) - offset, ENC_NA); |
4586 | 0 | offset = tvb_reported_length(tvb); |
4587 | 0 | } |
4588 | 0 | break; |
4589 | | |
4590 | 0 | case ZBNCP_CMD_SECUR_GET_CERT: |
4591 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4592 | 0 | { |
4593 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_cs, tvb, offset, 1, ENC_NA); |
4594 | 0 | offset += 1; |
4595 | |
|
4596 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ieee_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
4597 | 0 | offset += 8; |
4598 | 0 | } |
4599 | 0 | else if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
4600 | 0 | { |
4601 | 0 | uint8_t crypto_suite = tvb_get_uint8(tvb, offset); |
4602 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_cs, tvb, offset, 1, ENC_NA); |
4603 | 0 | offset += 1; |
4604 | |
|
4605 | 0 | if (crypto_suite == 1) |
4606 | 0 | { |
4607 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ca_pub_key, tvb, offset, 22, ENC_NA); |
4608 | 0 | offset += 22; |
4609 | |
|
4610 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_cert, tvb, offset, 48, ENC_NA); |
4611 | 0 | offset += 48; |
4612 | 0 | } |
4613 | 0 | else if (crypto_suite == 2) |
4614 | 0 | { |
4615 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ca_pub_key, tvb, offset, 37, ENC_NA); |
4616 | 0 | offset += 37; |
4617 | |
|
4618 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_cert, tvb, offset, 74, ENC_NA); |
4619 | 0 | offset += 74; |
4620 | 0 | } |
4621 | 0 | } |
4622 | 0 | break; |
4623 | | |
4624 | 0 | case ZBNCP_CMD_SECUR_GET_LOCAL_IC: |
4625 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
4626 | 0 | { |
4627 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ic, tvb, offset, tvb_reported_length(tvb) - offset, ENC_NA); |
4628 | 0 | offset = tvb_reported_length(tvb); |
4629 | 0 | } |
4630 | 0 | break; |
4631 | | |
4632 | 0 | case ZBNCP_CMD_SECUR_TCLK_IND: |
4633 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_INDICATION) |
4634 | 0 | { |
4635 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ieee_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
4636 | 0 | offset += 8; |
4637 | |
|
4638 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_key_type, tvb, offset, 1, ENC_NA); |
4639 | 0 | offset += 1; |
4640 | 0 | } |
4641 | 0 | break; |
4642 | | |
4643 | 0 | case ZBNCP_CMD_SECUR_TCLK_EXCHANGE_FAILED_IND: |
4644 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_INDICATION) |
4645 | 0 | { |
4646 | 0 | offset = dissect_zbncp_status(tvb, pinfo, zbncp_hl_body_tree, offset); |
4647 | 0 | } |
4648 | 0 | break; |
4649 | | |
4650 | 0 | case ZBNCP_CMD_SECUR_GET_KEY_IDX: |
4651 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4652 | 0 | { |
4653 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ieee_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
4654 | 0 | offset += 8; |
4655 | 0 | } |
4656 | 0 | else if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
4657 | 0 | { |
4658 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_index, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
4659 | 0 | offset += 2; |
4660 | 0 | } |
4661 | 0 | break; |
4662 | | |
4663 | 0 | case ZBNCP_CMD_SECUR_GET_KEY: |
4664 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4665 | 0 | { |
4666 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_index, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
4667 | 0 | offset += 2; |
4668 | 0 | } |
4669 | 0 | else if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
4670 | 0 | { |
4671 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_link_key, tvb, offset, 16, ENC_NA); |
4672 | 0 | offset += 16; |
4673 | |
|
4674 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_aps_link_key_type, tvb, offset, 1, ENC_NA); |
4675 | 0 | offset += 1; |
4676 | |
|
4677 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_key_src, tvb, offset, 1, ENC_NA); |
4678 | 0 | offset += 1; |
4679 | |
|
4680 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_key_attr, tvb, offset, 1, ENC_NA); |
4681 | 0 | offset += 1; |
4682 | |
|
4683 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_out_frame_cnt, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
4684 | 0 | offset += 4; |
4685 | |
|
4686 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_inc_frame_cnt, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
4687 | 0 | offset += 4; |
4688 | |
|
4689 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_partner_ieee_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
4690 | 0 | offset += 8; |
4691 | 0 | } |
4692 | 0 | break; |
4693 | | |
4694 | 0 | case ZBNCP_CMD_SECUR_ERASE_KEY: |
4695 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4696 | 0 | { |
4697 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_index, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
4698 | 0 | offset += 2; |
4699 | 0 | } |
4700 | 0 | break; |
4701 | | |
4702 | 0 | case ZBNCP_CMD_SECUR_CLEAR_KEY_TABLE: |
4703 | | /* Empty: only common headers */ |
4704 | 0 | break; |
4705 | | |
4706 | 0 | case ZBNCP_CMD_SECUR_NWK_INITIATE_KEY_SWITCH_PROCEDURE: |
4707 | | /* Empty: only common headers */ |
4708 | 0 | break; |
4709 | | |
4710 | 0 | case ZBNCP_CMD_SECUR_GET_IC_LIST: |
4711 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4712 | 0 | { |
4713 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_start_idx, tvb, offset, 1, ENC_NA); |
4714 | 0 | offset += 1; |
4715 | 0 | } |
4716 | 0 | else if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
4717 | 0 | { |
4718 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ic_table_size, tvb, offset, 1, ENC_NA); |
4719 | 0 | offset += 1; |
4720 | |
|
4721 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_start_idx, tvb, offset, 1, ENC_NA); |
4722 | 0 | offset += 1; |
4723 | |
|
4724 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ic_ent_cnt, tvb, offset, 1, ENC_NA); |
4725 | 0 | offset += 1; |
4726 | |
|
4727 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ic, tvb, offset, tvb_captured_length(tvb) - offset, ENC_NA); |
4728 | 0 | offset += tvb_captured_length(tvb) - offset; |
4729 | 0 | } |
4730 | 0 | break; |
4731 | | |
4732 | 0 | case ZBNCP_CMD_SECUR_GET_IC_BY_IDX: |
4733 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4734 | 0 | { |
4735 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_entry_idx, tvb, offset, 1, ENC_NA); |
4736 | 0 | offset += 1; |
4737 | 0 | } |
4738 | 0 | else if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
4739 | 0 | { |
4740 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ic, tvb, offset, tvb_captured_length(tvb) - offset, ENC_NA); |
4741 | 0 | offset += tvb_captured_length(tvb) - offset; |
4742 | 0 | } |
4743 | 0 | break; |
4744 | | |
4745 | 0 | case ZBNCP_CMD_SECUR_REMOVE_ALL_IC: |
4746 | | /* Empty: only common headers */ |
4747 | 0 | break; |
4748 | | |
4749 | 0 | case ZBNCP_CMD_SECUR_PARTNER_LK_ENABLE: |
4750 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4751 | 0 | { |
4752 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_enable, tvb, offset, 1, ENC_NA); |
4753 | 0 | offset += 1; |
4754 | 0 | } |
4755 | 0 | break; |
4756 | | |
4757 | 0 | case ZBNCP_CMD_SECUR_AUTH_DEVICE_AFTER_INTERVIEW: |
4758 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4759 | 0 | { |
4760 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ieee_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
4761 | 0 | offset += 8; |
4762 | 0 | } |
4763 | 0 | break; |
4764 | | |
4765 | 0 | case ZBNCP_CMD_ZDO_SECUR_UPDATE_DEVICE_TCLK: |
4766 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4767 | 0 | { |
4768 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_ieee_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN); |
4769 | 0 | offset += 8; |
4770 | 0 | } |
4771 | 0 | break; |
4772 | | |
4773 | | /* Manufacturing Test API */ |
4774 | 0 | case ZBNCP_CMD_MANUF_MODE_START: |
4775 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4776 | 0 | { |
4777 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_page, tvb, offset, 1, ENC_NA); |
4778 | 0 | offset += 1; |
4779 | |
|
4780 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_channel4, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
4781 | 0 | offset += 4; |
4782 | 0 | } |
4783 | 0 | break; |
4784 | | |
4785 | 0 | case ZBNCP_CMD_MANUF_MODE_END: |
4786 | | /* Empty: only common headers */ |
4787 | 0 | break; |
4788 | | |
4789 | 0 | case ZBNCP_CMD_MANUF_SET_CHANNEL: |
4790 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4791 | 0 | { |
4792 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_page, tvb, offset, 1, ENC_NA); |
4793 | 0 | offset += 1; |
4794 | |
|
4795 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_channel4, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
4796 | 0 | offset += 4; |
4797 | 0 | } |
4798 | 0 | break; |
4799 | | |
4800 | 0 | case ZBNCP_CMD_MANUF_GET_CHANNEL: |
4801 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
4802 | 0 | { |
4803 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_page, tvb, offset, 1, ENC_NA); |
4804 | 0 | offset += 1; |
4805 | |
|
4806 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_channel4, tvb, offset, 4, ENC_LITTLE_ENDIAN); |
4807 | 0 | offset += 4; |
4808 | 0 | } |
4809 | 0 | break; |
4810 | | |
4811 | 0 | case ZBNCP_CMD_MANUF_SET_POWER: |
4812 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4813 | 0 | { |
4814 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_tx_power, tvb, offset, 1, ENC_NA); |
4815 | 0 | offset += 1; |
4816 | 0 | } |
4817 | 0 | break; |
4818 | | |
4819 | 0 | case ZBNCP_CMD_MANUF_GET_POWER: |
4820 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
4821 | 0 | { |
4822 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_tx_power, tvb, offset, 1, ENC_NA); |
4823 | 0 | offset += 1; |
4824 | 0 | } |
4825 | 0 | break; |
4826 | | |
4827 | 0 | case ZBNCP_CMD_MANUF_START_TONE: |
4828 | | /* Empty: only common headers */ |
4829 | 0 | break; |
4830 | | |
4831 | 0 | case ZBNCP_CMD_MANUF_STOP_TONE: |
4832 | | /* Empty: only common headers */ |
4833 | 0 | break; |
4834 | | |
4835 | 0 | case ZBNCP_CMD_MANUF_START_STREAM_RANDOM: |
4836 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4837 | 0 | { |
4838 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_seed, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
4839 | 0 | offset += 2; |
4840 | 0 | } |
4841 | 0 | break; |
4842 | | |
4843 | 0 | case ZBNCP_CMD_MANUF_STOP_STREAM_RANDOM: |
4844 | | /* Empty: only common headers */ |
4845 | 0 | break; |
4846 | | |
4847 | 0 | case ZBNCP_CMD_NCP_HL_MANUF_SEND_SINGLE_PACKET: |
4848 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4849 | 0 | { |
4850 | 0 | uint8_t data_len = tvb_get_uint8(tvb, offset); |
4851 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dlen8, tvb, offset, 1, ENC_NA); |
4852 | 0 | offset += 1; |
4853 | |
|
4854 | 0 | if (data_len > (tvb_reported_length(tvb) - offset)) |
4855 | 0 | { |
4856 | 0 | data_len = tvb_reported_length(tvb) - offset; |
4857 | 0 | } |
4858 | |
|
4859 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_array, tvb, offset, data_len, ENC_NA); |
4860 | 0 | offset += data_len; |
4861 | 0 | } |
4862 | 0 | break; |
4863 | | |
4864 | 0 | case ZBNCP_CMD_MANUF_START_TEST_RX: |
4865 | | /* Empty: only common headers */ |
4866 | 0 | break; |
4867 | | |
4868 | 0 | case ZBNCP_CMD_MANUF_STOP_TEST_RX: |
4869 | | /* Empty: only common headers */ |
4870 | 0 | break; |
4871 | | |
4872 | 0 | case ZBNCP_CMD_MANUF_RX_PACKET_IND: |
4873 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_INDICATION) |
4874 | 0 | { |
4875 | 0 | uint16_t data_len = tvb_get_uint16(tvb, offset, ENC_LITTLE_ENDIAN); |
4876 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dlen16, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
4877 | 0 | offset += 2; |
4878 | |
|
4879 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_lqi, tvb, offset, 1, ENC_NA); |
4880 | 0 | offset += 1; |
4881 | |
|
4882 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_rssi, tvb, offset, 1, ENC_NA); |
4883 | 0 | offset += 1; |
4884 | |
|
4885 | 0 | if (data_len > (tvb_reported_length(tvb) - offset)) |
4886 | 0 | { |
4887 | 0 | data_len = tvb_reported_length(tvb) - offset; |
4888 | 0 | } |
4889 | |
|
4890 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_array, tvb, offset, data_len, ENC_NA); |
4891 | 0 | offset += data_len; |
4892 | 0 | } |
4893 | 0 | break; |
4894 | | |
4895 | | /* NCP FW upgrade API */ |
4896 | 0 | case ZBNCP_CMD_OTA_RUN_BOOTLOADER: |
4897 | | /* Empty: only common headers */ |
4898 | 0 | break; |
4899 | | |
4900 | 0 | case ZBNCP_CMD_OTA_START_UPGRADE_IND: |
4901 | | /* Empty: only common headers */ |
4902 | 0 | break; |
4903 | | |
4904 | 0 | case ZBNCP_CMD_OTA_SEND_PORTION_FW: |
4905 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4906 | 0 | { |
4907 | 0 | uint16_t data_len = tvb_get_uint16(tvb, offset, ENC_LITTLE_ENDIAN); |
4908 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dlen16, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
4909 | 0 | offset += 2; |
4910 | |
|
4911 | 0 | if (data_len > (tvb_reported_length(tvb) - offset)) |
4912 | 0 | { |
4913 | 0 | data_len = tvb_reported_length(tvb) - offset; |
4914 | 0 | } |
4915 | |
|
4916 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_array, tvb, offset, data_len, ENC_NA); |
4917 | 0 | offset += data_len; |
4918 | 0 | } |
4919 | 0 | break; |
4920 | | |
4921 | 0 | case ZBNCP_CMD_READ_NVRAM_RESERVED: |
4922 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4923 | 0 | { |
4924 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_offset, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
4925 | 0 | offset += 2; |
4926 | |
|
4927 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dlen8, tvb, offset, 1, ENC_NA); |
4928 | 0 | offset += 1; |
4929 | 0 | } |
4930 | 0 | else if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
4931 | 0 | { |
4932 | 0 | uint8_t data_len; |
4933 | |
|
4934 | 0 | data_len = tvb_get_uint8(tvb, offset); |
4935 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dlen8, tvb, offset, 1, ENC_NA); |
4936 | 0 | offset += 1; |
4937 | |
|
4938 | 0 | if (data_len > (tvb_reported_length(tvb) - offset)) |
4939 | 0 | { |
4940 | 0 | data_len = tvb_reported_length(tvb) - offset; |
4941 | 0 | } |
4942 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_array, tvb, offset, data_len, ENC_NA); |
4943 | 0 | offset += data_len; |
4944 | 0 | } |
4945 | 0 | break; |
4946 | | |
4947 | 0 | case ZBNCP_CMD_WRITE_NVRAM_RESERVED: |
4948 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_REQUEST) |
4949 | 0 | { |
4950 | 0 | uint8_t data_len; |
4951 | |
|
4952 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_do_erase, tvb, offset, 1, ENC_NA); |
4953 | 0 | offset += 1; |
4954 | |
|
4955 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_offset, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
4956 | 0 | offset += 2; |
4957 | |
|
4958 | 0 | data_len = tvb_get_uint8(tvb, offset); |
4959 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_dlen8, tvb, offset, 1, ENC_NA); |
4960 | 0 | offset += 1; |
4961 | |
|
4962 | 0 | if (data_len > (tvb_reported_length(tvb) - offset)) |
4963 | 0 | { |
4964 | 0 | data_len = tvb_reported_length(tvb) - offset; |
4965 | 0 | } |
4966 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_array, tvb, offset, data_len, ENC_NA); |
4967 | 0 | offset += data_len; |
4968 | 0 | } |
4969 | 0 | break; |
4970 | | |
4971 | 0 | case ZBNCP_CMD_GET_CALIBRATION_INFO: |
4972 | 0 | if (ptype == ZBNCP_HIGH_LVL_PACKET_TYPE_RESPONSE) |
4973 | 0 | { |
4974 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_calibration_status, tvb, offset, 1, ENC_NA); |
4975 | 0 | offset += 1; |
4976 | 0 | proto_tree_add_item(zbncp_hl_body_tree, hf_zbncp_data_calibration_value, tvb, offset, 1, ENC_NA); |
4977 | 0 | offset += 1; |
4978 | 0 | } |
4979 | 0 | break; |
4980 | | |
4981 | 0 | default:; |
4982 | 0 | } |
4983 | | |
4984 | | /* Dump the tail. */ |
4985 | 0 | if (offset < tvb_reported_length(tvb)) |
4986 | 0 | { |
4987 | 0 | tvbuff_t *leftover_tvb = tvb_new_subset_remaining(tvb, offset); |
4988 | 0 | call_data_dissector(leftover_tvb, pinfo, tree); |
4989 | 0 | } |
4990 | 0 | } |
4991 | | |
4992 | | static void |
4993 | | dissect_zbncp_fragmentation_body(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned offset) |
4994 | 0 | { |
4995 | 0 | proto_tree *zbncp_body_tree = proto_tree_add_subtree_format(tree, tvb, offset, tvb_reported_length(tvb) - offset, ett_zbncp_ll_body, NULL, "ZBNCP Packet Body"); |
4996 | | |
4997 | | /* CRC */ |
4998 | 0 | proto_tree_add_item(zbncp_body_tree, hf_zbncp_body_data_crc16, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
4999 | 0 | offset += 2; |
5000 | | |
5001 | | /* Dump the tail. */ |
5002 | 0 | if (offset < tvb_reported_length(tvb)) |
5003 | 0 | { |
5004 | 0 | tvbuff_t *leftover_tvb = tvb_new_subset_remaining(tvb, offset); |
5005 | 0 | call_data_dissector(leftover_tvb, pinfo, zbncp_body_tree); |
5006 | 0 | } |
5007 | 0 | } |
5008 | | |
5009 | | static void |
5010 | | dissect_zbncp_body(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, unsigned offset, uint16_t *cmd_id) |
5011 | 0 | { |
5012 | 0 | proto_tree *zbncp_body_tree = proto_tree_add_subtree_format(tree, tvb, offset, tvb_reported_length(tvb) - offset, ett_zbncp_ll_body, NULL, "ZBNCP Packet Body"); |
5013 | | |
5014 | | /* CRC */ |
5015 | 0 | proto_tree_add_item(zbncp_body_tree, hf_zbncp_body_data_crc16, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
5016 | 0 | offset += 2; |
5017 | |
|
5018 | 0 | dissect_zbncp_high_level(tvb, pinfo, zbncp_body_tree, offset, cmd_id); |
5019 | 0 | } |
5020 | | |
5021 | | static unsigned |
5022 | | dissect_zbncp_ll_hdr(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned offset, uint8_t *hdr_flags) |
5023 | 0 | { |
5024 | 0 | proto_tree *ncp_ll_hdr_tree; |
5025 | 0 | proto_item *proto_root; |
5026 | |
|
5027 | 0 | static int *const packet_flags[] = { |
5028 | 0 | &hf_zbncp_hdr_flags_isack, |
5029 | 0 | &hf_zbncp_hdr_flags_retrans, |
5030 | 0 | &hf_zbncp_hdr_flags_packetseq, |
5031 | 0 | &hf_zbncp_hdr_flags_ackseq, |
5032 | 0 | &hf_zbncp_hdr_flags_first_frag, |
5033 | 0 | &hf_zbncp_hdr_flags_last_frag, |
5034 | 0 | NULL}; |
5035 | |
|
5036 | 0 | if (tvb_get_uint8(tvb, 0) != ZBNCP_SIGN_FST_BYTE || |
5037 | 0 | tvb_get_uint8(tvb, 1) != ZBNCP_SIGN_SEC_BYTE) |
5038 | 0 | { |
5039 | 0 | return 0; |
5040 | 0 | } |
5041 | | |
5042 | 0 | col_set_str(pinfo->cinfo, COL_PROTOCOL, "ZB NCP"); |
5043 | |
|
5044 | 0 | proto_root = proto_tree_add_protocol_format(tree, zbncp_frame, tvb, 0, tvb_captured_length(tvb), "ZBNCP Low Level Header"); |
5045 | 0 | ncp_ll_hdr_tree = proto_item_add_subtree(proto_root, ett_zbncp_hdr); |
5046 | | |
5047 | | /* hdr */ |
5048 | 0 | proto_tree_add_item(ncp_ll_hdr_tree, hf_zbncp_hdr_sign, tvb, offset, 2, ENC_ASCII); |
5049 | 0 | offset += 2; |
5050 | | |
5051 | | /* pkt length without sign */ |
5052 | 0 | proto_tree_add_item(ncp_ll_hdr_tree, hf_zbncp_packet_len, tvb, offset, 2, ENC_LITTLE_ENDIAN); |
5053 | 0 | offset += 2; |
5054 | | |
5055 | | /* hl packet type */ |
5056 | 0 | proto_tree_add_item(ncp_ll_hdr_tree, hf_zbncp_hdr_type, tvb, offset, 1, ENC_NA); |
5057 | 0 | offset += 1; |
5058 | | |
5059 | | /* hdr flags */ |
5060 | 0 | *hdr_flags = tvb_get_uint8(tvb, offset); |
5061 | 0 | proto_tree_add_bitmask(ncp_ll_hdr_tree, tvb, offset, hf_zbncp_hdr_flags, ett_zbncp_hdr_flags, packet_flags, ENC_NA); |
5062 | 0 | offset += 1; |
5063 | | |
5064 | | /* check is ack */ |
5065 | 0 | if (*hdr_flags & ZBNCP_HDR_FLAGS_ISACK_MASK) |
5066 | 0 | { |
5067 | 0 | col_set_str(pinfo->cinfo, COL_INFO, "ACK"); |
5068 | 0 | } |
5069 | | |
5070 | | /* crc 8 */ |
5071 | 0 | proto_tree_add_item(ncp_ll_hdr_tree, hf_zbncp_hdr_crc8, tvb, offset++, 1, ENC_NA); |
5072 | |
|
5073 | 0 | return offset; |
5074 | 0 | } |
5075 | | |
5076 | | static unsigned |
5077 | | dissect_zbncp_packet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, unsigned offset) |
5078 | 0 | { |
5079 | 0 | uint8_t flags; |
5080 | 0 | uint16_t cmd_id; |
5081 | |
|
5082 | 0 | conversation_t *conversation; |
5083 | 0 | char *zbncp_ctx_str; |
5084 | |
|
5085 | 0 | flags = 0; |
5086 | 0 | offset = dissect_zbncp_ll_hdr(tvb, pinfo, tree, offset, &flags); |
5087 | |
|
5088 | 0 | if (!offset) |
5089 | 0 | { |
5090 | 0 | return 0; |
5091 | 0 | } |
5092 | | |
5093 | 0 | if (offset < tvb_reported_length(tvb)) |
5094 | 0 | { |
5095 | 0 | if (ZBNCP_GET_PACKET_FLAGS_FIRST_FRAG_BIT(flags)) |
5096 | 0 | { |
5097 | | /* No fragmentation or first fragment */ |
5098 | 0 | dissect_zbncp_body(tvb, pinfo, tree, offset, &cmd_id); |
5099 | | |
5100 | | /* First fragment */ |
5101 | 0 | if (!ZBNCP_GET_PACKET_FLAGS_LAST_FRAG_BIT(flags)) |
5102 | 0 | { |
5103 | 0 | const char *tmp = val_to_str_const(cmd_id, zbncp_hl_call_id, "Unknown Call ID"); |
5104 | 0 | zbncp_ctx_str = wmem_alloc(wmem_file_scope(), 64); |
5105 | |
|
5106 | 0 | if(zbncp_ctx_str != NULL) |
5107 | 0 | { |
5108 | 0 | memcpy(zbncp_ctx_str, tmp, strlen(tmp) + 1); |
5109 | |
|
5110 | 0 | conversation = conversation_new(pinfo->num, &pinfo->src, &pinfo->dst, |
5111 | 0 | conversation_pt_to_conversation_type(pinfo->ptype), |
5112 | 0 | pinfo->srcport, pinfo->destport, 0); |
5113 | |
|
5114 | 0 | conversation_add_proto_data(conversation, zbncp_frame, (void *)zbncp_ctx_str); |
5115 | 0 | } |
5116 | |
|
5117 | 0 | col_append_str(pinfo->cinfo, COL_INFO, ", first fragment"); |
5118 | 0 | } |
5119 | 0 | } |
5120 | 0 | else /* It's fragmentation frame */ |
5121 | 0 | { |
5122 | | /* Fragmentation frame */ |
5123 | 0 | dissect_zbncp_fragmentation_body(tvb, pinfo, tree, offset); |
5124 | |
|
5125 | 0 | conversation = find_conversation(pinfo->num, &pinfo->src, &pinfo->dst, |
5126 | 0 | conversation_pt_to_conversation_type(pinfo->ptype), |
5127 | 0 | pinfo->srcport, pinfo->destport, 0); |
5128 | |
|
5129 | 0 | if (conversation != NULL) |
5130 | 0 | { |
5131 | 0 | zbncp_ctx_str = (char *) conversation_get_proto_data(conversation, zbncp_frame); |
5132 | |
|
5133 | 0 | if (zbncp_ctx_str != NULL) |
5134 | 0 | { |
5135 | 0 | col_append_fstr(pinfo->cinfo, COL_INFO, ", %s", zbncp_ctx_str); |
5136 | 0 | conversation_delete_proto_data(conversation, zbncp_frame); |
5137 | 0 | } |
5138 | 0 | } |
5139 | |
|
5140 | 0 | if (ZBNCP_GET_PACKET_FLAGS_LAST_FRAG_BIT(flags)) |
5141 | 0 | { |
5142 | 0 | col_append_str(pinfo->cinfo, COL_INFO, ", last fragment"); |
5143 | 0 | } |
5144 | 0 | else |
5145 | 0 | { |
5146 | 0 | col_append_str(pinfo->cinfo, COL_INFO, ", fragment"); |
5147 | 0 | } |
5148 | 0 | } |
5149 | 0 | } |
5150 | |
|
5151 | 0 | return tvb_captured_length(tvb); |
5152 | 0 | } |
5153 | | |
5154 | | /** |
5155 | | * Dissector for ZBOSS NCP packet with an additional dump info. |
5156 | | * |
5157 | | * @param tvb pointer to buffer containing raw packet. |
5158 | | * @param pinfo pointer to packet information fields. |
5159 | | * @param tree pointer to data tree wireshark uses to display packet. |
5160 | | */ |
5161 | | static int |
5162 | | dissect_zbncp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) |
5163 | 0 | { |
5164 | 0 | tvbuff_t *new_tvb; |
5165 | 0 | new_tvb = dissect_zbncp_dump_info(tvb, pinfo, tree); |
5166 | |
|
5167 | 0 | dissect_zbncp_packet(new_tvb, pinfo, tree, 0); |
5168 | |
|
5169 | 0 | return tvb_captured_length(tvb); |
5170 | 0 | } |
5171 | | |
5172 | | /** |
5173 | | * Proto ZBOSS Network Coprocessor product registration routine |
5174 | | */ |
5175 | | void proto_register_zbncp(void) |
5176 | 14 | { |
5177 | | /* NCP protocol headers */ |
5178 | 14 | static hf_register_info hf_zbncp_phy[] = { |
5179 | 14 | {&hf_zbncp_hdr_sign, |
5180 | 14 | {"Signature", "zbncp.hdr.sign", FT_UINT16, BASE_HEX, NULL, |
5181 | 14 | 0x0, NULL, HFILL}}, |
5182 | | |
5183 | 14 | {&hf_zbncp_packet_len, |
5184 | 14 | {"Packet length", "zbncp.hdr.plen", FT_UINT16, BASE_DEC, NULL, |
5185 | 14 | 0x0, NULL, HFILL}}, |
5186 | | |
5187 | 14 | {&hf_zbncp_hdr_type, |
5188 | 14 | {"Packet type", "zbncp.hdr.ptype", FT_UINT8, BASE_HEX, NULL, |
5189 | 14 | 0x0, NULL, HFILL}}, |
5190 | | |
5191 | 14 | {&hf_zbncp_hdr_flags, |
5192 | 14 | {"Packet flags", "zbncp.hdr.flags", FT_UINT8, BASE_HEX, NULL, |
5193 | 14 | 0x0, NULL, HFILL}}, |
5194 | | |
5195 | 14 | {&hf_zbncp_hdr_flags_isack, |
5196 | 14 | {"isACK", "zbncp.hdr.flags.isack", FT_BOOLEAN, 8, NULL, |
5197 | 14 | ZBNCP_HDR_FLAGS_ISACK_MASK, NULL, HFILL}}, |
5198 | | |
5199 | 14 | {&hf_zbncp_hdr_flags_retrans, |
5200 | 14 | {"Should retransmit", "zbncp.hdr.flags.retrans", FT_BOOLEAN, 8, NULL, |
5201 | 14 | ZBNCP_HDR_FLAGS_RETRANS_MASK, NULL, HFILL}}, |
5202 | | |
5203 | 14 | {&hf_zbncp_hdr_flags_packetseq, |
5204 | 14 | {"Packet#", "zbncp.hdr.flags.packet_seq", FT_UINT8, BASE_DEC, NULL, |
5205 | 14 | ZBNCP_HDR_FLAGS_PKT_SEQ_MASK, NULL, HFILL}}, |
5206 | | |
5207 | 14 | {&hf_zbncp_hdr_flags_ackseq, |
5208 | 14 | {"ACK#", "zbncp.hdr.flags.ack_seq", FT_UINT8, BASE_DEC, NULL, |
5209 | 14 | ZBNCP_HDR_FLAGS_ACK_SEQ_MASK, NULL, HFILL}}, |
5210 | | |
5211 | 14 | {&hf_zbncp_hdr_flags_first_frag, |
5212 | 14 | {"First fragment", "zbncp.hdr.flags.first_frag", FT_BOOLEAN, 8, NULL, |
5213 | 14 | ZBNCP_HDR_FLAGS_ISFIRST_MASK, NULL, HFILL}}, |
5214 | | |
5215 | 14 | {&hf_zbncp_hdr_flags_last_frag, |
5216 | 14 | {"Last fragment", "zbncp.hdr.flags.last_frag", FT_BOOLEAN, 8, NULL, |
5217 | 14 | ZBNCP_HDR_FLAGS_ISLAST_MASK, NULL, HFILL}}, |
5218 | | |
5219 | 14 | {&hf_zbncp_hdr_crc8, |
5220 | 14 | {"CRC8", "zbncp.hdr.crc8", FT_UINT8, BASE_HEX, NULL, |
5221 | 14 | 0x0, NULL, HFILL}}, |
5222 | | |
5223 | 14 | {&hf_zbncp_body_data_crc16, |
5224 | 14 | {"CRC16", "zbncp.data.crc16", FT_UINT16, BASE_HEX, NULL, |
5225 | 14 | 0x0, NULL, HFILL}}, |
5226 | | |
5227 | 14 | {&hf_zbncp_data_hl_version, |
5228 | 14 | {"Version", "zbncp.data.hl.vers", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
5229 | | |
5230 | 14 | {&hf_zbncp_data_hl_packet_type, |
5231 | 14 | {"Packet type", "zbncp.data.hl.ptype", FT_UINT8, BASE_HEX, VALS(zbncp_hl_type), 0x0, NULL, HFILL}}, |
5232 | | |
5233 | 14 | {&hf_zbncp_data_hl_call_id, |
5234 | 14 | {"Call/evt id", "zbncp.data.hl.id", FT_UINT16, BASE_HEX, VALS(zbncp_hl_call_id), 0x0, NULL, HFILL}}, |
5235 | | |
5236 | 14 | {&hf_zbncp_data_hl_tsn, |
5237 | 14 | {"TSN", "zbncp.data.hl.tsn", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
5238 | | |
5239 | 14 | {&hf_zbncp_data_hl_status_cat, |
5240 | 14 | {"Status category", "zbncp.data.hl.status_cat", FT_UINT8, BASE_HEX, VALS(zbncp_hl_status_cat), 0x0, NULL, HFILL}}, |
5241 | | |
5242 | 14 | {&hf_zbncp_data_hl_status, |
5243 | 14 | {"Status", "zbncp.data.hl.status", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
5244 | | |
5245 | 14 | {&hf_zbncp_data_hl_status_generic, |
5246 | 14 | {"Status", "zbncp.data.hl.status", FT_UINT8, BASE_HEX, VALS(zbncp_hl_status_generic), 0x0, NULL, HFILL}}, |
5247 | | |
5248 | 14 | {&hf_zbncp_data_hl_status_mac, |
5249 | 14 | {"Status", "zbncp.data.hl.status", FT_UINT8, BASE_HEX, VALS(zb_mac_state), 0x0, NULL, HFILL}}, |
5250 | | |
5251 | 14 | {&hf_zbncp_data_hl_status_nwk, |
5252 | 14 | {"Status", "zbncp.data.hl.status", FT_UINT8, BASE_HEX, VALS(zb_nwk_state), 0x0, NULL, HFILL}}, |
5253 | | |
5254 | 14 | {&hf_zbncp_data_hl_status_cbke, |
5255 | 14 | {"Status", "zbncp.data.hl.status", FT_UINT8, BASE_HEX, VALS(zb_cbke_state), 0x0, NULL, HFILL}}, |
5256 | | |
5257 | 14 | {&hf_zbncp_data_fw_vers, |
5258 | 14 | {"FW Version", "zbncp.data.fw_vers", FT_UINT32, BASE_HEX, NULL, 0x0, "NCP module firmware version", HFILL}}, |
5259 | | |
5260 | 14 | {&hf_zbncp_data_stack_vers, |
5261 | 14 | {"Stack Version", "zbncp.data.stack_vers", FT_UINT32, BASE_HEX, NULL, 0x0, "NCP module stack version", HFILL}}, |
5262 | | |
5263 | 14 | {&hf_zbncp_data_proto_vers, |
5264 | 14 | {"Protocol Version", "zbncp.data.proto_vers", FT_UINT32, BASE_HEX, NULL, 0x0, "NCP module protocol version", HFILL}}, |
5265 | | |
5266 | 14 | {&hf_zbncp_data_reset_opt, |
5267 | 14 | {"Options", "zbncp.data.rst_opt", FT_UINT8, BASE_HEX, VALS(zbncp_reset_opt), 0x0, "Force NCP module reboot", HFILL}}, |
5268 | | |
5269 | 14 | {&hf_zbncp_data_zb_role, |
5270 | 14 | {"Zigbee role", "zbncp.data.zb_role", FT_UINT8, BASE_HEX, VALS(zbncp_zb_role), 0x0, "Zigbee role code", HFILL}}, |
5271 | | |
5272 | 14 | {&hf_zbncp_data_ch_list_len, |
5273 | 14 | {"Channel list length", "zbncp.data.ch_list_len", FT_UINT8, BASE_HEX, NULL, 0x0, "Number of entries in the following Channel List array", HFILL}}, |
5274 | | |
5275 | 14 | {&hf_zbncp_data_page, |
5276 | 14 | {"Channel page", "zbncp.data.page", FT_UINT8, BASE_DEC_HEX, VALS(zboss_page_names), 0x0, |
5277 | 14 | "IEEE802.15.4 page number", HFILL}}, |
5278 | | |
5279 | 14 | {&hf_zbncp_data_ch_mask, |
5280 | 14 | {"Channel mask", "zbncp.data.ch_mask", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
5281 | | |
5282 | 14 | {&hf_zbncp_data_channel, |
5283 | 14 | {"Channel", "zbncp.data.mask", FT_UINT8, BASE_DEC, NULL, 0x0, |
5284 | 14 | "Channel number", HFILL}}, |
5285 | | |
5286 | 14 | {&hf_zbncp_data_channel4, |
5287 | 14 | {"Channel", "zbncp.data.mask", FT_UINT32, BASE_DEC, NULL, 0x0, |
5288 | 14 | "Channel number", HFILL}}, |
5289 | | |
5290 | 14 | {&hf_zbncp_data_pan_id, |
5291 | 14 | {"PAN ID", "zbncp.data.pan_id", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
5292 | | |
5293 | 14 | {&hf_zbncp_data_index, |
5294 | 14 | {"Index", "zbncp.data.index", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5295 | | |
5296 | 14 | {&hf_zbncp_data_enable, |
5297 | 14 | {"Enable", "zbncp.data.enable", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL}}, |
5298 | | |
5299 | 14 | {&hf_zbncp_data_bind_type, |
5300 | 14 | {"Bind Type", "zbncp.data.bind_type", FT_UINT8, BASE_DEC, VALS(zbncp_bind_type_vals), 0x0, NULL, HFILL}}, |
5301 | | |
5302 | 14 | {&hf_zbncp_data_mac_int_num, |
5303 | 14 | {"MAC Interface Num", "zbncp.data.mac_int_num", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
5304 | | |
5305 | 14 | {&hf_zbncp_data_ext_pan_id, |
5306 | 14 | {"Ext PAN ID", "zbncp.data.ext_pan_id", FT_EUI64, BASE_NONE, NULL, 0x0, NULL, HFILL}}, |
5307 | | |
5308 | 14 | {&hf_zbncp_data_coordinator_version, |
5309 | 14 | {"Coordinator version", "zbncp.data.coord_version", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5310 | | |
5311 | 14 | {&hf_zbncp_data_trust_center_addres, |
5312 | 14 | {"IEEE trust center address", "zbncp.data.ieee_trust_center_addr", FT_EUI64, BASE_NONE, NULL, 0x0, NULL, HFILL}}, |
5313 | | |
5314 | 14 | {&hf_zbncp_data_ieee_addr, |
5315 | 14 | {"IEEE address", "zbncp.data.ieee_addr", FT_EUI64, BASE_NONE, NULL, 0x0, NULL, HFILL}}, |
5316 | | |
5317 | 14 | {&hf_zbncp_data_remote_ieee_addr, |
5318 | 14 | {"Remote IEEE address", "zbncp.data.rmt_ieee_addr", FT_EUI64, BASE_NONE, NULL, 0x0, NULL, HFILL}}, |
5319 | | |
5320 | 14 | {&hf_zbncp_data_src_ieee_addr, |
5321 | 14 | {"Source IEEE address", "zbncp.data.src_ieee_addr", FT_EUI64, BASE_NONE, NULL, 0x0, NULL, HFILL}}, |
5322 | | |
5323 | 14 | {&hf_zbncp_data_dst_ieee_addr, |
5324 | 14 | {"Destination IEEE address", "zbncp.data.dst_ieee_addr", FT_EUI64, BASE_NONE, NULL, 0x0, NULL, HFILL}}, |
5325 | | |
5326 | 14 | {&hf_zbncp_data_target_ieee_addr, |
5327 | 14 | {"Target IEEE address", "zbncp.data.target_ieee_addr", FT_EUI64, BASE_NONE, NULL, 0x0, NULL, HFILL}}, |
5328 | | |
5329 | 14 | {&hf_zbncp_data_partner_ieee_addr, |
5330 | 14 | {"Partner IEEE address", "zbncp.data.partner_ieee_addr", FT_EUI64, BASE_NONE, NULL, 0x0, NULL, HFILL}}, |
5331 | | |
5332 | 14 | {&hf_zbncp_data_keepalive, |
5333 | 14 | {"Keepalive Timeout", "zbncp.data.keepalive", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
5334 | | |
5335 | 14 | {&hf_zbncp_force_route_record_sending, |
5336 | 14 | {"Force route record sending mode", "zbncp.data.force_route_rec_mode", FT_UINT8, BASE_DEC, VALS(zbncp_force_route_record_sending_modes), 0x0, NULL, HFILL}}, |
5337 | | |
5338 | 14 | {&hf_zbncp_data_rx_on_idle, |
5339 | 14 | {"Rx On When Idle", "zbncp.data.rx_on_idle", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL}}, |
5340 | | |
5341 | 14 | {&hf_zbncp_data_res_tx_power, |
5342 | 14 | {"Resultant TX power", "zbncp.data.tx_power", FT_INT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5343 | | |
5344 | 14 | {&hf_zbncp_data_req_tx_power, |
5345 | 14 | {"Required TX power", "zbncp.data.tx_power", FT_INT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5346 | | |
5347 | 14 | {&hf_zbncp_data_joined, |
5348 | 14 | {"Joined", "zbncp.data.joined", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5349 | | |
5350 | 14 | {&hf_zbncp_data_joined_bit, |
5351 | 14 | {"Device is joined", "zbncp.data.device_is_joined", FT_BOOLEAN, 8, NULL, 0x1, NULL, HFILL}}, |
5352 | | |
5353 | 14 | {&hf_zbncp_data_parent_bit, |
5354 | 14 | {"Parent is lost", "zbncp.data.parent_is_lost", FT_BOOLEAN, 8, NULL, 0x2, NULL, HFILL}}, |
5355 | | |
5356 | 14 | {&hf_zbncp_data_authenticated, |
5357 | 14 | {"Authenticated", "zbncp.data.auth", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL}}, |
5358 | | |
5359 | 14 | {&hf_zbncp_data_timeout, |
5360 | 14 | {"Timeout", "zbncp.data.timeout", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5361 | | |
5362 | 14 | {&hf_zbncp_data_nwk_addr, |
5363 | 14 | {"NWK address", "zbncp.data.nwk_addr", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
5364 | | |
5365 | 14 | {&hf_zbncp_data_nwk_parent_addr, |
5366 | 14 | {"NWK parent address", "zbncp.data.nwk_addr", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
5367 | | |
5368 | 14 | {&hf_zbncp_data_dst_nwk_addr, |
5369 | 14 | {"Destination NWK address", "zbncp.data.dst_nwk_addr", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
5370 | | |
5371 | 14 | {&hf_zbncp_data_src_nwk_addr, |
5372 | 14 | {"Source NWK address", "zbncp.data.src_nwk_addr", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
5373 | | |
5374 | 14 | {&hf_zbncp_data_remote_nwk_addr, |
5375 | 14 | {"Remote NWK address", "zbncp.data.rmt_nwk_addr", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
5376 | | |
5377 | 14 | {&hf_zbncp_data_group_nwk_addr, |
5378 | 14 | {"Group NWK address", "zbncp.data.group_nwk_addr", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
5379 | | |
5380 | 14 | {&hf_zbncp_data_src_mac_addr, |
5381 | 14 | {"Source MAC address", "zbncp.data.src_mac_addr", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
5382 | | |
5383 | 14 | {&hf_zbncp_data_dst_mac_addr, |
5384 | 14 | {"Destination MAC address", "zbncp.data.dst_mac_addr", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
5385 | | |
5386 | 14 | {&hf_zbncp_data_nwk_key, |
5387 | 14 | {"NWK Key", "zbncp.data.nwk_key", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL}}, |
5388 | | |
5389 | 14 | {&hf_zbncp_data_key_num, |
5390 | 14 | {"Key number", "zbncp.data.key_num", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5391 | | |
5392 | 14 | {&hf_zbncp_data_serial_num, |
5393 | 14 | {"Serial number", "zbncp.data.serial_num", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL}}, |
5394 | | |
5395 | 14 | {&hf_zbncp_data_size, |
5396 | 14 | {"Size", "zbncp.data.size", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5397 | | |
5398 | 14 | {&hf_zbncp_data_parameter_id, |
5399 | 14 | {"Parameter ID", "zbncp.data.param_id", FT_UINT8, BASE_DEC, VALS(zbncp_parameter_id_list), 0x0, NULL, HFILL}}, |
5400 | | |
5401 | 14 | {&hf_zbncp_data_value8_dec, |
5402 | 14 | {"Value", "zbncp.data.value", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5403 | | |
5404 | 14 | {&hf_zbncp_data_value16_dec, |
5405 | 14 | {"Value", "zbncp.data.value", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5406 | | |
5407 | 14 | {&hf_zbncp_data_aps_ack_to_non_sleepy, |
5408 | 14 | {"Value (for non-sleepy dev)", "zbncp.data.non_sleepy_value", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5409 | | |
5410 | 14 | {&hf_zbncp_data_aps_ack_to_sleepy, |
5411 | 14 | {"Value (for sleepy dev)", "zbncp.data.sleepy_value", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5412 | | |
5413 | 14 | {&hf_zbncp_data_min16, |
5414 | 14 | {"Min", "zbncp.data.min_value", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5415 | | |
5416 | 14 | {&hf_zbncp_data_max16, |
5417 | 14 | {"Max", "zbncp.data.max_value", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5418 | | |
5419 | 14 | {&hf_zbncp_data_default8_sign, |
5420 | 14 | {"Default", "zbncp.data.default_val", FT_INT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5421 | | |
5422 | 14 | {&hf_zbncp_data_current8_sign, |
5423 | 14 | {"Current", "zbncp.data.current_val", FT_INT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5424 | | |
5425 | 14 | {&hf_zbncp_data_is_concentrator, |
5426 | 14 | {"Is concentrator", "zbncp.data.is_conc", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL}}, |
5427 | | |
5428 | 14 | {&hf_zbncp_data_concentrator_radius, |
5429 | 14 | {"Concentrator radius", "zbncp.data.conc_rad", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5430 | | |
5431 | 14 | {&hf_zbncp_data_time16, |
5432 | 14 | {"Time", "zbncp.data.conc_time", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5433 | | |
5434 | 14 | {&hf_zbncp_data_lock_status, |
5435 | 14 | {"Locking status", "zbncp.data.lock_status", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5436 | | |
5437 | 14 | {&hf_zbncp_nwk_leave_allowed, |
5438 | 14 | {"NWK Leave Allowed", "zbncp.data.nwk_leave_allow", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL}}, |
5439 | | |
5440 | 14 | {&hf_zbncp_data_nvram_dataset_quantity, |
5441 | 14 | {"Dataset quantity", "zbncp.data.nvram_dataset_quantity", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5442 | | |
5443 | 14 | {&hf_zbncp_data_nvram_dataset_type, |
5444 | 14 | {"NVRAM Database type", "zbncp.data.nvram_database_type", FT_UINT16, BASE_HEX, VALS(zb_nvram_database_types), 0x0, NULL, HFILL}}, |
5445 | | |
5446 | 14 | {&hf_zbncp_data_nvram_version, |
5447 | 14 | {"NVRAM Version", "zbncp.data.nvram_version", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5448 | | |
5449 | 14 | {&hf_zbncp_data_dataset_version, |
5450 | 14 | {"NVRAM Dataset Version", "zbncp.data.dataset_version", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5451 | | |
5452 | 14 | {&hf_zbncp_data_dataset_length, |
5453 | 14 | {"NVRAM Dataset size", "zbncp.data.dataset_size", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5454 | | |
5455 | 14 | {&hf_zbncp_data_nvram_dataset_data, |
5456 | 14 | {"NVRAM Dataset data", "zbncp.data.dataset_data", FT_UINT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL}}, |
5457 | | |
5458 | 14 | {&hf_zbncp_data_tc_policy_type, |
5459 | 14 | {"Trust center policy type", "zbncp.data.tc_policy_type", FT_UINT16, BASE_HEX, VALS(zbncp_tc_policy_types), 0x0, NULL, HFILL}}, |
5460 | | |
5461 | 14 | {&hf_zbncp_data_tc_policy_value, |
5462 | 14 | {"Trust center policy value", "zbncp.data.tc_policy_value", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
5463 | | |
5464 | 14 | {&hf_zbncp_ed_capacity, |
5465 | 14 | {"Number of children", "zbncp.data.num_children", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5466 | | |
5467 | 14 | {&hf_zbncp_max_joins, |
5468 | 14 | {"Max successful join attempts", "zbncp.data.max_joins", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5469 | | |
5470 | 14 | {&hf_zbncp_zdo_leave_allowed, |
5471 | 14 | {"ZDO Leave Allowed", "zbncp.data.zdo_leave_allow", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL}}, |
5472 | | |
5473 | 14 | {&hf_zbncp_zdo_leave_wo_rejoin_allowed, |
5474 | 14 | {"ZDO Leave Without Rejoin Allowed", "zbncp.data.zdo_leave_wo_rejoin_allow", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL}}, |
5475 | | |
5476 | 14 | {&hf_zbncp_data_reset_source, |
5477 | 14 | {"Reset source", "zbncp.data.rst_src", FT_UINT8, BASE_DEC, VALS(zbncp_rst_src_list), 0x0, NULL, HFILL}}, |
5478 | | |
5479 | 14 | {&hf_zbncp_data_vendor_data, |
5480 | 14 | {"Vendor data", "zbncp.data.vendor_data", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL}}, |
5481 | | |
5482 | 14 | {&hf_zbncp_data_aps_key, |
5483 | 14 | {"APS Key", "zbncp.data.aps_key", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL}}, |
5484 | | |
5485 | 14 | {&hf_zbncp_data_endpoint, |
5486 | 14 | {"Endpoint", "zbncp.data.endpoint", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5487 | | |
5488 | 14 | {&hf_zbncp_data_aps_group_num, |
5489 | 14 | {"APS group number", "zbncp.data.aps_group_num", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5490 | | |
5491 | 14 | {&hf_zbncp_data_aps_group, |
5492 | 14 | {"APS group", "zbncp.data.aps_group", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
5493 | | |
5494 | 14 | {&hf_zbncp_data_src_endpoint, |
5495 | 14 | {"Source Endpoint", "zbncp.data.src_endpoint", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5496 | | |
5497 | 14 | {&hf_zbncp_data_dst_endpoint, |
5498 | 14 | {"Destination Endpoint", "zbncp.data.dst_endpoint", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5499 | | |
5500 | 14 | {&hf_zbncp_data_poll_pkt_cnt, |
5501 | 14 | {"Packet count", "zbncp.data.poll_pkt_cnt", FT_UINT8, BASE_DEC, NULL, 0x0, "The number of packets to poll", HFILL}}, |
5502 | | |
5503 | 14 | {&hf_zbncp_data_poll_timeout, |
5504 | 14 | {"Poll Timeout", "zbncp.data.poll_timeout", FT_UINT32, BASE_DEC, NULL, 0x0, "The duration of poll in ms", HFILL}}, |
5505 | | |
5506 | 14 | {&hf_zbncp_data_poll_permit_flag, |
5507 | 14 | {"Permit flag", "zbncp.data.poll_permit_flag", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL}}, |
5508 | | |
5509 | 14 | {&hf_zbncp_data_profile_id, |
5510 | 14 | {"Profile ID", "zbncp.data.profile_id", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
5511 | | |
5512 | 14 | {&hf_zbncp_data_device_id, |
5513 | 14 | {"Device ID", "zbncp.data.device_id", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
5514 | | |
5515 | 14 | {&hf_zbncp_data_dev_version, |
5516 | 14 | {"Device Version", "zbncp.data.dev_vers", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
5517 | | |
5518 | 14 | {&hf_zbncp_data_in_cl_cnt, |
5519 | 14 | {"Input Cluster Count", "zbncp.data.in_cl_cnt", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
5520 | | |
5521 | 14 | {&hf_zbncp_data_out_cl_cnt, |
5522 | 14 | {"Output Cluster Count", "zbncp.data.out_cl_cnt", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
5523 | | |
5524 | 14 | {&hf_zbncp_data_cluster_id, |
5525 | 14 | {"Cluster ID", "zbncp.data.cluster_id", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
5526 | | |
5527 | 14 | {&hf_zbncp_data_mac_cap, |
5528 | 14 | {"MAC capability", "zbncp.data.mac_cap", FT_UINT8, BASE_HEX, NULL, |
5529 | 14 | 0x0, NULL, HFILL}}, |
5530 | | |
5531 | 14 | {&hf_zbncp_data_manuf_id, |
5532 | 14 | {"Manufacturer ID", "zbncp.data.manuf_id", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
5533 | | |
5534 | 14 | {&hf_zbncp_data_cur_pwr_mode, |
5535 | 14 | {"Current Power Mode", "zbncp.data.pwr_mode", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5536 | | |
5537 | 14 | {&hf_zbncp_data_cur_pwr_lvl, |
5538 | 14 | {"Current Power Level", "zbncp.data.pwr_lvl", FT_UINT8, BASE_DEC, VALS(zbncp_power_level), 0x0, NULL, HFILL}}, |
5539 | | |
5540 | 14 | {&hf_zbncp_data_susp_period, |
5541 | 14 | {"Suspension Period", "zbncp.data.susp_period", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5542 | | |
5543 | 14 | {&hf_zbncp_data_av_pwr_src, |
5544 | 14 | {"Available Power Sources", "zbncp.data.av_pwr_src", FT_UINT8, BASE_HEX, NULL, |
5545 | 14 | 0x0, NULL, HFILL}}, |
5546 | | |
5547 | 14 | {&hf_zbncp_data_cur_pwr_src, |
5548 | 14 | {"Current Power Source", "zbncp.data.cur_pwr_src", FT_UINT8, BASE_HEX, NULL, |
5549 | 14 | 0x0, NULL, HFILL}}, |
5550 | | |
5551 | 14 | {&hf_zbncp_data_pwr_src_const, |
5552 | 14 | {"Constant (mains) power", "zbncp.data.pwr_src_const", FT_BOOLEAN, 8, NULL, |
5553 | 14 | 0x01, NULL, HFILL}}, |
5554 | | |
5555 | 14 | {&hf_zbncp_data_pwr_src_recharge, |
5556 | 14 | {"Rechargeable battery", "zbncp.data.pwr_src_recharge", FT_BOOLEAN, 8, NULL, |
5557 | 14 | 0x02, NULL, HFILL}}, |
5558 | | |
5559 | 14 | {&hf_zbncp_data_pwr_src_disposable, |
5560 | 14 | {"Disposable battery", "zbncp.data.pwr_src_disp", FT_BOOLEAN, 8, NULL, |
5561 | 14 | 0x04, NULL, HFILL}}, |
5562 | | |
5563 | 14 | {&hf_zbncp_data_req_type, |
5564 | 14 | {"Request Type", "zbncp.data.nwk_req_type", FT_UINT8, BASE_DEC, VALS(zbncp_nwk_req_type), 0x0, NULL, HFILL}}, |
5565 | | |
5566 | 14 | {&hf_zbncp_data_start_idx, |
5567 | 14 | {"Start Index", "zbncp.data.start_idx", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5568 | | |
5569 | 14 | {&hf_zbncp_data_start_idx_16b, |
5570 | 14 | {"Start Index", "zbncp.data.start_idx", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5571 | | |
5572 | 14 | {&hf_zbncp_data_upd_idx, |
5573 | 14 | {"Update Index", "zbncp.data.update_idx", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5574 | | |
5575 | 14 | {&hf_zbncp_data_entry_idx, |
5576 | 14 | {"Entry Index", "zbncp.data.entry_idx", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5577 | | |
5578 | 14 | {&hf_zbncp_data_num_asoc_dec, |
5579 | 14 | {"Num Assoc Dev", "zbncp.data.num_asoc_dev", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5580 | | |
5581 | 14 | {&hf_zbncp_data_pwr_desc, |
5582 | 14 | {"Power Descriptor", "zbncp.data.pwr_desc", FT_UINT16, BASE_HEX, NULL, |
5583 | 14 | 0x0, NULL, HFILL}}, |
5584 | | |
5585 | 14 | {&hf_zbncp_data_pwr_desc_cur_power_mode, |
5586 | 14 | {"Current Power Mode", "zbncp.data.pwr_desc.pwr_mode", FT_UINT16, BASE_DEC, NULL, |
5587 | 14 | 0x000F, NULL, HFILL}}, |
5588 | | |
5589 | 14 | {&hf_zbncp_data_pwr_desc_av_pwr_src, |
5590 | 14 | {"Available Power Sources", "zbncp.data.pwr_desc.av_pwr_src", FT_UINT16, BASE_DEC, NULL, |
5591 | 14 | 0x00F0, NULL, HFILL}}, /* todo */ |
5592 | | |
5593 | 14 | {&hf_zbncp_data_pwr_desc_cur_pwr_src, |
5594 | 14 | {"Current Power Sources", "zbncp.data.pwr_desc.cur_pwr_src", FT_UINT16, BASE_DEC, NULL, |
5595 | 14 | 0x0F00, NULL, HFILL}}, /* todo */ |
5596 | | |
5597 | 14 | {&hf_zbncp_data_pwr_desc_cur_pwr_lvl, |
5598 | 14 | {"Current Power Level", "zbncp.data.cur_pwr_lvl", FT_UINT16, BASE_DEC, VALS(zbncp_power_level), |
5599 | 14 | 0xF000, NULL, HFILL}}, |
5600 | | |
5601 | 14 | {&hf_zbncp_data_max_buf_size, |
5602 | 14 | {"Max buffer size", "zbncp.data.max_buf_size", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5603 | | |
5604 | 14 | {&hf_zbncp_data_max_inc_trans_size, |
5605 | 14 | {"Max Incoming transfer size", "zbncp.data.max_inc_size", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5606 | | |
5607 | 14 | {&hf_zbncp_data_max_out_trans_size, |
5608 | 14 | {"Max Outgoing transfer size", "zbncp.data.max_out_size", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5609 | | |
5610 | 14 | {&hf_zbncp_data_desc_cap, |
5611 | 14 | {"Descriptor Capabilities", "zbncp.data.desc_cap", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5612 | | |
5613 | 14 | {&hf_zbncp_data_desc_cap_ext_act_ep_list_av, |
5614 | 14 | {"Extended Active Endpoint List Available", "zbncp.data.desc_cap.active_ep_list", FT_BOOLEAN, 8, NULL, |
5615 | 14 | 0x1, NULL, HFILL}}, |
5616 | | |
5617 | 14 | {&hf_zbncp_data_desc_cap_ext_simple_desc_list_av, |
5618 | 14 | {"Extended Simple Descriptor List Available", "zbncp.data.desc_cap.simple_desc_list", FT_BOOLEAN, 8, NULL, |
5619 | 14 | 0x2, NULL, HFILL}}, |
5620 | | |
5621 | 14 | {&hf_zbncp_data_flags8, |
5622 | 14 | {"Flags", "zbncp.data.flags8", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
5623 | | |
5624 | 14 | {&hf_zbncp_data_flags_permit_join, |
5625 | 14 | {"Permit Joining", "zbncp.data.flags.perm_join", FT_BOOLEAN, 8, NULL, |
5626 | 14 | 0x1, NULL, HFILL}}, |
5627 | | |
5628 | 14 | {&hf_zbncp_data_flags_router_cap, |
5629 | 14 | {"Router capacity", "zbncp.data.flags.router_cap", FT_BOOLEAN, 8, NULL, |
5630 | 14 | 0x2, NULL, HFILL}}, |
5631 | | |
5632 | 14 | {&hf_zbncp_data_flags_ed_cap, |
5633 | 14 | {"ED capacity", "zbncp.data.flags.ed_cap", FT_BOOLEAN, 8, NULL, |
5634 | 14 | 0x4, NULL, HFILL}}, |
5635 | | |
5636 | 14 | {&hf_zbncp_data_flags_stack_profile, |
5637 | 14 | {"Stack profile", "zbncp.data.flags.stack_profile", FT_UINT8, BASE_DEC, NULL, |
5638 | 14 | 0xF0, NULL, HFILL}}, |
5639 | | |
5640 | 14 | {&hf_zbncp_data_flags16, |
5641 | 14 | {"Flags", "zbncp.data.flags16", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
5642 | | |
5643 | 14 | {&hf_zbncp_data_flags_zb_role, |
5644 | 14 | {"Zigbee role", "zbncp.data.flags.zb_role", FT_UINT16, BASE_HEX, VALS(zbncp_zb_role), |
5645 | 14 | 0x7, NULL, HFILL}}, |
5646 | | |
5647 | 14 | {&hf_zbncp_data_flags_comp_desc_av, |
5648 | 14 | {"Complex desc available", "zbncp.data.flags.comp_desc_av", FT_BOOLEAN, 16, NULL, |
5649 | 14 | 0x8, NULL, HFILL}}, |
5650 | | |
5651 | 14 | {&hf_zbncp_data_flags_user_desc_av, |
5652 | 14 | {"User desc available", "zbncp.data.flags.user_desc_av", FT_BOOLEAN, 16, NULL, |
5653 | 14 | 0x0010, NULL, HFILL}}, |
5654 | | |
5655 | 14 | {&hf_zbncp_data_flags_freq_868, |
5656 | 14 | {"868MHz BPSK Band", "zbncp.data.flags.freq.868mhz", FT_BOOLEAN, 16, NULL, |
5657 | 14 | 0x0800, NULL, HFILL}}, |
5658 | | |
5659 | 14 | {&hf_zbncp_data_flags_freq_902, |
5660 | 14 | {"902MHz BPSK Band", "zbncp.data.flags.freq.902mhz", FT_BOOLEAN, 16, NULL, |
5661 | 14 | 0x2000, NULL, HFILL}}, |
5662 | | |
5663 | 14 | {&hf_zbncp_data_flags_freq_2400, |
5664 | 14 | {"2.4GHz OQPSK Band", "zbncp.data.flags.freq.2400mhz", FT_BOOLEAN, 16, NULL, |
5665 | 14 | 0x4000, NULL, HFILL}}, |
5666 | | |
5667 | 14 | {&hf_zbncp_data_flags_freq_eu_sub_ghz, |
5668 | 14 | {"EU Sub-GHz FSK Band", "zbncp.data.flags.freq.eu_sub_ghz", FT_BOOLEAN, 16, NULL, |
5669 | 14 | 0x8000, NULL, HFILL}}, |
5670 | | |
5671 | 14 | {&hf_zbncp_data_srv_msk, |
5672 | 14 | {"Server mask", "zbncp.data.srv_msk", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
5673 | | |
5674 | 14 | {&hf_zbncp_data_srv_msk_prim_tc, |
5675 | 14 | {"Primary Trust Center", "zbncp.data.srv_msk.prim_tc", FT_BOOLEAN, 16, NULL, |
5676 | 14 | 0x0001, NULL, HFILL}}, |
5677 | | |
5678 | 14 | {&hf_zbncp_data_srv_msk_backup_tc, |
5679 | 14 | {"Backup Trust Center", "zbncp.data.srv_msk.backup_tc", FT_BOOLEAN, 16, NULL, |
5680 | 14 | 0x0002, NULL, HFILL}}, |
5681 | | |
5682 | 14 | {&hf_zbncp_data_srv_msk_prim_bind_tbl_cache, |
5683 | 14 | {"Primary Binding Table Cache", "zbncp.data.srv_msk.prim_bind_tbl_cache", FT_BOOLEAN, 16, NULL, |
5684 | 14 | 0x0004, NULL, HFILL}}, |
5685 | | |
5686 | 14 | {&hf_zbncp_data_srv_msk_backup_bind_tbl_cache, |
5687 | 14 | {"Backup Binding Table Cache", "zbncp.data.srv_msk.backup_bind_tbl_cache", FT_BOOLEAN, 16, NULL, |
5688 | 14 | 0x0008, NULL, HFILL}}, |
5689 | | |
5690 | 14 | {&hf_zbncp_data_remote_bind_offset, |
5691 | 14 | {"Remote Bind Offset", "zbncp.data.remote_bind_access", FT_UINT8, BASE_HEX, NULL, |
5692 | 14 | 0x0, |
5693 | 14 | "Remote bind offset, divides the bind table in two parts [0:remote_bind_offset) are for localbindings and " |
5694 | 14 | "[remote_bind_offset:tbl_size) to remote bindings", |
5695 | 14 | HFILL}}, |
5696 | | |
5697 | 14 | {&hf_zbncp_data_srv_msk_prim_disc_cache, |
5698 | 14 | {"Primary Discovery Cache", "zbncp.data.srv_msk.prim_disc_cache", FT_BOOLEAN, 16, NULL, |
5699 | 14 | 0x0010, NULL, HFILL}}, |
5700 | | |
5701 | 14 | {&hf_zbncp_data_srv_msk_backup_disc_cache, |
5702 | 14 | {"Backup Discovery Cache", "zbncp.data.srv_msk.backup_disc_cache", FT_BOOLEAN, 16, NULL, |
5703 | 14 | 0x0020, NULL, HFILL}}, |
5704 | | |
5705 | 14 | {&hf_zbncp_data_srv_msk_nwk_manager, |
5706 | 14 | {"Network Manager", "zbncp.data.srv_msk.nwk_manager", FT_BOOLEAN, 16, NULL, |
5707 | 14 | 0x0040, NULL, HFILL}}, |
5708 | | |
5709 | 14 | {&hf_zbncp_data_srv_msk_stack_compl_rev, |
5710 | 14 | {"Stack Compliance Revision", "zbncp.data.srv_msk.stack_compl_rev", FT_UINT16, BASE_DEC, NULL, |
5711 | 14 | 0xFE00, NULL, HFILL}}, |
5712 | | |
5713 | 14 | {&hf_zbncp_data_ep_cnt, |
5714 | 14 | {"Endpoint Count", "zbncp.data.endpoint_cnt", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5715 | | |
5716 | 14 | {&hf_zbncp_data_dst_addr_mode, |
5717 | 14 | {"Dst Address Mode", "zbncp.data.dst_addr_mode", FT_UINT8, BASE_HEX, VALS(zbncp_aps_addr_modes), 0x0, NULL, HFILL}}, |
5718 | | |
5719 | 14 | {&hf_zbncp_data_leave_flags, |
5720 | 14 | {"Leave flags", "zbncp.data.leave_flags", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5721 | | |
5722 | 14 | {&hf_zbncp_data_leave_flags_remove_chil, |
5723 | 14 | {"Remove children", "zbncp.data.leave_flags.remove_chil", FT_BOOLEAN, 8, NULL, |
5724 | 14 | 0x40, NULL, HFILL}}, |
5725 | | |
5726 | 14 | {&hf_zbncp_data_leave_flags_rejoin, |
5727 | 14 | {"Rejoin", "zbncp.data.leave_flags.rejoin", FT_BOOLEAN, 8, NULL, |
5728 | 14 | 0x80, NULL, HFILL}}, |
5729 | | |
5730 | 14 | {&hf_zbncp_data_permit_dur, |
5731 | 14 | {"Permit Duration", "zbncp.data.permit_dur", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5732 | | |
5733 | 14 | {&hf_zbncp_data_tc_sign, |
5734 | 14 | {"TC Significance", "zbncp.data.tc_sign", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL}}, |
5735 | | |
5736 | 14 | {&hf_zbncp_data_secur_rejoin, |
5737 | 14 | {"Secure Rejoin", "zbncp.data.secure_rejoin", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL}}, |
5738 | | |
5739 | 14 | {&hf_zbncp_data_zdo_rejoin_flags, |
5740 | 14 | {"Flags", "zbncp.data.zdo_rejoin.flags", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
5741 | | |
5742 | 14 | {&hf_zbncp_data_zdo_rejoin_flags_tcsw_happened, |
5743 | 14 | {"Trust Center Swap-out happened", "zbncp.data.zdo_rejoin.flags.tcsw_happened", FT_BOOLEAN, 8, NULL, |
5744 | 14 | 0x01, NULL, HFILL}}, |
5745 | | |
5746 | 14 | {&hf_zbncp_data_dlen8, |
5747 | 14 | {"Data Length", "zbncp.data.dlen8", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5748 | | |
5749 | 14 | {&hf_zbncp_data_dlen16, |
5750 | 14 | {"Data Length", "zbncp.data.dlen16", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5751 | | |
5752 | 14 | {&hf_zbncp_data_param_len, |
5753 | 14 | {"Param Length", "zbncp.data.param_len", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5754 | | |
5755 | 14 | {&hf_zbncp_data_radius, |
5756 | 14 | {"Radius", "zbncp.data.radius", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5757 | | |
5758 | 14 | {&hf_zbncp_data_time_between_disc, |
5759 | 14 | {"Time between discoveries", "zbncp.data.time_between_disc", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5760 | | |
5761 | 14 | {&hf_zbncp_data_enable_flag, |
5762 | 14 | {"Enable flag", "zbncp.data.enable_flag", FT_BOOLEAN, BASE_NONE, NULL, 0x0, "0 - to disable, 1 - to enable", HFILL}}, |
5763 | | |
5764 | 14 | {&hf_zbncp_data_array, |
5765 | 14 | {"Data", "zbncp.data.data_arr", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL}}, |
5766 | | |
5767 | 14 | {&hf_zbncp_data_use_alias, |
5768 | 14 | {"Use alias", "zbncp.data.use_alias", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL}}, |
5769 | | |
5770 | 14 | {&hf_zbncp_data_alias_src, |
5771 | 14 | {"Alias source address", "zbncp.data.alias_src", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
5772 | | |
5773 | 14 | {&hf_zbncp_data_alias_seq, |
5774 | 14 | {"Alias sequence number", "zbncp.data.alias_seq", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5775 | | |
5776 | 14 | {&hf_zbncp_data_tx_opt, |
5777 | 14 | {"TX Options", "zbncp.data.tx_opt", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
5778 | | |
5779 | 14 | {&hf_zbncp_data_tx_opt_secur, |
5780 | 14 | {"Security enabled transmission", "zbncp.data.secur", FT_BOOLEAN, 8, NULL, |
5781 | 14 | 0x01, NULL, HFILL}}, |
5782 | | |
5783 | 14 | {&hf_zbncp_data_tx_opt_obsolete, |
5784 | 14 | {"Obsolete", "zbncp.data.obsolete", FT_BOOLEAN, 8, NULL, |
5785 | 14 | 0x02, NULL, HFILL}}, |
5786 | | |
5787 | 14 | {&hf_zbncp_data_tx_opt_ack, |
5788 | 14 | {"ACK", "zbncp.data.ack", FT_BOOLEAN, 8, NULL, |
5789 | 14 | 0x04, NULL, HFILL}}, |
5790 | | |
5791 | 14 | {&hf_zbncp_data_tx_opt_frag, |
5792 | 14 | {"Fragmentation permitted", "zbncp.data.frag", FT_BOOLEAN, 8, NULL, |
5793 | 14 | 0x08, NULL, HFILL}}, |
5794 | | |
5795 | 14 | {&hf_zbncp_data_tx_opt_inc_ext_nonce, |
5796 | 14 | {"Include extended nonce", "zbncp.data.ext_nonce", FT_BOOLEAN, 8, NULL, |
5797 | 14 | 0x10, NULL, HFILL}}, |
5798 | | |
5799 | 14 | {&hf_zbncp_data_tx_opt_force_mesh_route, |
5800 | 14 | {"Force mesh route discovery for this request", "zbncp.data.force_mesh_route", FT_BOOLEAN, 8, NULL, |
5801 | 14 | 0x20, NULL, HFILL}}, |
5802 | | |
5803 | 14 | {&hf_zbncp_data_tx_opt_send_route_record, |
5804 | 14 | {"Send route record for this request", "zbncp.data.send_route_record", FT_BOOLEAN, 8, NULL, |
5805 | 14 | 0x40, NULL, HFILL}}, |
5806 | | |
5807 | 14 | {&hf_zbncp_data_lqi, |
5808 | 14 | {"LQI", "zbncp.data.lqi", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5809 | | |
5810 | 14 | {&hf_zbncp_data_rssi, |
5811 | 14 | {"RSSI", "zbncp.data.rssi", FT_INT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5812 | | |
5813 | 14 | {&hf_zbncp_data_do_cleanup, |
5814 | 14 | {"Do cleanup", "zbncp.data.do_clean", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5815 | | |
5816 | 14 | {&hf_zbncp_data_max_rx_bcast, |
5817 | 14 | {"max_rx_bcast", "zbncp.data.max_rx_bcast", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5818 | | |
5819 | 14 | {&hf_zbncp_data_mac_tx_bcast, |
5820 | 14 | {"max_tx_bcast", "zbncp.data.max_tx_bcast", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5821 | | |
5822 | 14 | {&hf_zbncp_data_mac_rx_ucast, |
5823 | 14 | {"mac_rx_ucast", "zbncp.data.mac_rx_ucast", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5824 | | |
5825 | 14 | {&hf_zbncp_data_mac_tx_ucast_total_zcl, |
5826 | 14 | {"mac_tx_ucast_total_zcl", "zbncp.data.mac_tx_ucast_total_zcl", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5827 | | |
5828 | 14 | {&hf_zbncp_data_mac_tx_ucast_failures_zcl, |
5829 | 14 | {"mac_tx_ucast_failures_zcl", "zbncp.data.mac_tx_ucast_failures_zcl", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5830 | | |
5831 | 14 | {&hf_zbncp_data_mac_tx_ucast_retries_zcl, |
5832 | 14 | {"mac_tx_ucast_retries_zcl", "zbncp.data.mac_tx_ucast_retries_zcl", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5833 | | |
5834 | 14 | {&hf_zbncp_data_mac_tx_ucast_total, |
5835 | 14 | {"mac_tx_ucast_total", "zbncp.data.mac_tx_ucast_total", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5836 | | |
5837 | 14 | {&hf_zbncp_data_mac_tx_ucast_failures, |
5838 | 14 | {"mac_tx_ucast_failures", "zbncp.data.mac_tx_ucast_failures", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5839 | | |
5840 | 14 | {&hf_zbncp_data_mac_tx_ucast_retries, |
5841 | 14 | {"mac_tx_ucast_retries", "zbncp.data.mac_tx_ucast_retries", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5842 | | |
5843 | 14 | {&hf_zbncp_data_mac_validate_drop_cnt, |
5844 | 14 | {"mac_validate_drop_cnt", "zbncp.data.mac_validate_drop_cnt", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5845 | | |
5846 | 14 | {&hf_zbncp_data_mac_phy_cca_fail_count, |
5847 | 14 | {"phy_cca_fail_count", "zbncp.data.phy_cca_fail_count", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5848 | | |
5849 | 14 | {&hf_zbncp_data_phy_to_mac_que_lim_reached, |
5850 | 14 | {"phy_to_mac_que_lim_reached", "zbncp.data.phy_to_mac_que_lim_reached", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5851 | | |
5852 | 14 | {&hf_zbncp_data_period_of_time, |
5853 | 14 | {"period_of_time", "zbncp.data.period_of_time", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5854 | | |
5855 | 14 | {&hf_zbncp_data_last_msg_lqi, |
5856 | 14 | {"last_msg_lqi", "zbncp.data.last_msg_lqi", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5857 | | |
5858 | 14 | {&hf_zbncp_data_last_msg_rssi, |
5859 | 14 | {"last_msg_rssi", "zbncp.data.last_msg_rssi", FT_INT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5860 | | |
5861 | 14 | {&hf_zbncp_data_number_of_resets, |
5862 | 14 | {"number_of_resets", "zbncp.data.number_of_resets", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5863 | | |
5864 | 14 | {&hf_zbncp_data_aps_tx_bcast, |
5865 | 14 | {"aps_tx_bcast", "zbncp.data.aps_tx_bcast", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5866 | | |
5867 | 14 | {&hf_zbncp_data_aps_tx_ucast_success, |
5868 | 14 | {"aps_tx_ucast_success", "zbncp.data.aps_tx_ucast_success", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5869 | | |
5870 | 14 | {&hf_zbncp_data_aps_tx_ucast_retry, |
5871 | 14 | {"aps_tx_ucast_retry", "zbncp.data.aps_tx_ucast_retry", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5872 | | |
5873 | 14 | {&hf_zbncp_data_aps_tx_ucast_fail, |
5874 | 14 | {"aps_tx_ucast_fail", "zbncp.data.aps_tx_ucast_fail", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5875 | | |
5876 | 14 | {&hf_zbncp_data_route_disc_initiated, |
5877 | 14 | {"route_disc_initiated", "zbncp.data.route_disc_initiated", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5878 | | |
5879 | 14 | {&hf_zbncp_data_nwk_neighbor_added, |
5880 | 14 | {"nwk_neighbor_added", "zbncp.data.nwk_neighbor_added", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5881 | | |
5882 | 14 | {&hf_zbncp_data_nwk_neighbor_removed, |
5883 | 14 | {"nwk_neighbor_removed", "zbncp.data.nwk_neighbor_removed", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5884 | | |
5885 | 14 | {&hf_zbncp_data_nwk_neighbor_stale, |
5886 | 14 | {"nwk_neighbor_stale", "zbncp.data.nwk_neighbor_stale", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5887 | | |
5888 | 14 | {&hf_zbncp_upd_status_code, |
5889 | 14 | {"Device update status code", "zbncp.data.dev_upd_status_code", FT_UINT8, BASE_DEC, VALS(zbncp_dev_update_status_code), 0x0, NULL, HFILL}}, |
5890 | | |
5891 | 14 | {&hf_zbncp_data_join_indication, |
5892 | 14 | {"join_indication", "zbncp.data.join_indication", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5893 | | |
5894 | 14 | {&hf_zbncp_data_childs_removed, |
5895 | 14 | {"childs_removed", "zbncp.data.childs_removed", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5896 | | |
5897 | 14 | {&hf_zbncp_data_nwk_fc_failure, |
5898 | 14 | {"nwk_fc_failure", "zbncp.data.nwk_fc_failure", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5899 | | |
5900 | 14 | {&hf_zbncp_data_aps_unauthorized_key, |
5901 | 14 | {"aps_unauthorized_key", "zbncp.data.aps_unauthorized_key", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5902 | | |
5903 | 14 | {&hf_zbncp_data_nwk_decrypt_failure, |
5904 | 14 | {"nwk_decrypt_failure", "zbncp.data.nwk_decrypt_failure", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5905 | | |
5906 | 14 | {&hf_zbncp_data_aps_decrypt_failure, |
5907 | 14 | {"aps_decrypt_failure", "zbncp.data.aps_decrypt_failure", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5908 | | |
5909 | 14 | {&hf_zbncp_data_packet_buffer_allocate_failures, |
5910 | 14 | {"packet_buffer_allocate_failures", "zbncp.data.packet_buffer_allocate_failures", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5911 | | |
5912 | 14 | {&hf_zbncp_data_average_mac_retry_per_aps_message_sent, |
5913 | 14 | {"average_mac_retry_per_aps_message_sent", "zbncp.data.avg_mac_retry", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5914 | | |
5915 | 14 | {&hf_zbncp_data_aps_fc_failure, |
5916 | 14 | {"aps_fc_failure", "zbncp.data.aps_fc_failure", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5917 | | |
5918 | 14 | {&hf_zbncp_data_nwk_retry_overflow, |
5919 | 14 | {"nwk_retry_overflow", "zbncp.data.nwk_retry_overflow", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5920 | | |
5921 | 14 | {&hf_zbncp_data_nwk_bcast_table_full, |
5922 | 14 | {"nwk_bcast_table_full", "zbncp.data.nwk_bcast_table_full", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5923 | | |
5924 | 14 | {&hf_zbncp_data_status, |
5925 | 14 | {"status", "zbncp.data.status", FT_INT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5926 | | |
5927 | 14 | {&hf_zbncp_zdo_auth_type, |
5928 | 14 | {"Authorization type", "zbncp.data.zdo_auth_type", FT_UINT8, BASE_DEC, VALS(zbncp_zdo_auth_types), 0x0, NULL, HFILL}}, |
5929 | | |
5930 | 14 | {&hf_zbncp_zdo_leg_auth_status_code, |
5931 | 14 | {"Status code", "zbncp.data.zdo_status_code", FT_UINT8, BASE_DEC, VALS(zbncp_zdo_leg_auth_status_codes), 0x0, NULL, HFILL}}, |
5932 | | |
5933 | 14 | {&hf_zbncp_zdo_tclk_auth_status_code, |
5934 | 14 | {"Status code", "zbncp.data.zdo_status_code", FT_UINT8, BASE_DEC, VALS(zbncp_zdo_tclk_auth_status_codes), 0x0, NULL, HFILL}}, |
5935 | | |
5936 | 14 | {&hf_zbncp_zdo_server_mask, |
5937 | 14 | {"Server mask", "zbncp.data.zdo_serv_mask", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
5938 | | |
5939 | 14 | {&hf_zbncp_zdo_start_entry_idx, |
5940 | 14 | {"Start entry index", "zbncp.data.zdo_start_idx", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5941 | | |
5942 | 14 | {&hf_zbncp_zdo_scan_duration, |
5943 | 14 | {"Scan duration", "zbncp.data.zdo_scan_duration", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5944 | | |
5945 | 14 | {&hf_zbncp_zdo_scan_cnt, |
5946 | 14 | {"Scan count", "zbncp.data.zdo_scan_cnt", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5947 | | |
5948 | 14 | {&hf_zbncp_zdo_scan_mgr_addr, |
5949 | 14 | {"Manager NWK address", "zbncp.data.zdo_mgr_addr", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
5950 | | |
5951 | 14 | {&hf_zbncp_data_aps_cnt, |
5952 | 14 | {"APS counter", "zbncp.data.aps_cnt", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5953 | | |
5954 | 14 | {&hf_zbncp_data_aps_fc, |
5955 | 14 | {"APS FC", "zbncp.data.aps_fc", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
5956 | | |
5957 | 14 | {&hf_zbncp_data_aps_fc_deliv_mode, |
5958 | 14 | {"Delivery mode", "zbncp.data.aps_fc.deliv_mode", FT_UINT8, BASE_DEC, VALS(zbncp_deliv_mode), |
5959 | 14 | 0x0C, NULL, HFILL}}, |
5960 | | |
5961 | 14 | {&hf_zbncp_data_aps_fc_secur, |
5962 | 14 | {"Security", "zbncp.data.aps_fc.secur", FT_BOOLEAN, 8, NULL, |
5963 | 14 | 0x20, NULL, HFILL}}, |
5964 | | |
5965 | 14 | {&hf_zbncp_data_aps_fc_ack_retrans, |
5966 | 14 | {"ACK & retransmit", "zbncp.data.aps_fc.ack_retrans", FT_BOOLEAN, 8, NULL, |
5967 | 14 | 0x40, NULL, HFILL}}, |
5968 | | |
5969 | 14 | {&hf_zbncp_data_aps_key_attr, |
5970 | 14 | {"APS key source & attr", "zbncp.data.aps_key_attr", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
5971 | | |
5972 | 14 | {&hf_zbncp_data_aps_key_attr_key_src, |
5973 | 14 | {"Key source", "zbncp.data.aps_key_attr.key_src", FT_UINT8, BASE_HEX, VALS(zbncp_aps_key_src), |
5974 | 14 | 0x1, NULL, HFILL}}, |
5975 | | |
5976 | 14 | {&hf_zbncp_data_aps_key_attr_key_used, |
5977 | 14 | {"Key used", "zbncp.data.aps_key_attr.key_used", FT_UINT8, BASE_HEX, VALS(zbncp_aps_key_used), |
5978 | 14 | 0x6, NULL, HFILL}}, |
5979 | | |
5980 | 14 | {&hf_zbncp_data_pkt_len, |
5981 | 14 | {"Packet length", "zbncp.data.pkt_len", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5982 | | |
5983 | 14 | {&hf_zbncp_data_pkt, |
5984 | 14 | {"Packet", "zbncp.data.pkt", FT_UINT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL}}, |
5985 | | |
5986 | 14 | {&hf_zbncp_data_scan_dur, |
5987 | 14 | {"Scan Duration", "zbncp.data.scan_dur", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5988 | | |
5989 | 14 | {&hf_zbncp_data_distr_nwk_flag, |
5990 | 14 | {"Distributed Network Flag", "zbncp.data.distr_nwk_flag", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL}}, |
5991 | | |
5992 | 14 | {&hf_zbncp_data_nwk_count, |
5993 | 14 | {"Network Count", "zbncp.data.nwk_cnt", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5994 | | |
5995 | 14 | {&hf_zbncp_data_nwk_upd_id, |
5996 | 14 | {"NWK Update ID", "zbncp.data.nwk_upd_id", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
5997 | | |
5998 | 14 | {&hf_zbncp_data_rejoin, |
5999 | 14 | {"Rejoin", "zbncp.data.rejoin", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL}}, |
6000 | | |
6001 | 14 | {&hf_zbncp_data_rejoin_nwk, |
6002 | 14 | {"Rejoin Network", "zbncp.data.rejoin_nwk", FT_UINT8, BASE_DEC, VALS(zbncp_rejoin_nwk), 0x0, NULL, HFILL}}, |
6003 | | |
6004 | 14 | {&hf_zbncp_data_secur_en, |
6005 | 14 | {"Security Enable", "zbncp.data.secur_en", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL}}, |
6006 | | |
6007 | 14 | {&hf_zbncp_data_enh_beacon, |
6008 | 14 | {"Enhanced Beacon", "zbncp.data.enh_beacon", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL}}, |
6009 | | |
6010 | 14 | {&hf_zbncp_data_beacon_type, |
6011 | 14 | {"Beacon Type", "zbncp.data.beacon_type", FT_UINT8, BASE_DEC, VALS(zbncp_beacon_type), 0x0, NULL, HFILL}}, |
6012 | | |
6013 | 14 | {&hf_zbncp_data_beacon_order, |
6014 | 14 | {"Beacon Order", "zbncp.data.becon_order", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
6015 | | |
6016 | 14 | {&hf_zbncp_data_superframe_order, |
6017 | 14 | {"Superframe Order", "zbncp.data.superframe_order", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
6018 | | |
6019 | 14 | {&hf_zbncp_data_battery_life_ext, |
6020 | 14 | {"Battery Life Extension", "zbncp.data.battery_life_ext", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
6021 | | |
6022 | 14 | {&hf_zbncp_data_mac_if, |
6023 | 14 | {"MAC interface #", "zbncp.data.mac_if", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
6024 | | |
6025 | 14 | {&hf_zbncp_data_ed_config, |
6026 | 14 | {"ED config", "zbncp.data.ed_cfg", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
6027 | | |
6028 | 14 | {&hf_zbncp_data_timeout_cnt, |
6029 | 14 | {"Timeout Counter", "zbncp.data.timeout_cnt", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
6030 | | |
6031 | 14 | {&hf_zbncp_data_keepalive_mode, |
6032 | 14 | {"Keepalive mode", "zbncp.data.keepalive", FT_UINT8, BASE_DEC, VALS(zbncp_keepalive_mode), 0x0, NULL, HFILL}}, |
6033 | | |
6034 | 14 | {&hf_zbncp_data_dev_timeout, |
6035 | 14 | {"Device Timeout", "zbncp.data.dev_timeout", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
6036 | | |
6037 | 14 | {&hf_zbncp_data_relationship, |
6038 | 14 | {"Relationship", "zbncp.data.relationship", FT_UINT8, BASE_HEX, VALS(zbncp_relationship), 0x0, NULL, HFILL}}, |
6039 | | |
6040 | 14 | {&hf_zbncp_data_tx_fail_cnt, |
6041 | 14 | {"Transmit Failure Cnt", "zbncp.data.tx_fail_cnt", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
6042 | | |
6043 | 14 | {&hf_zbncp_data_out_cost, |
6044 | 14 | {"Outgoing Cost", "zbncp.data.out_cost", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
6045 | | |
6046 | 14 | {&hf_zbncp_data_age, |
6047 | 14 | {"Age", "zbncp.data.age", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
6048 | | |
6049 | 14 | {&hf_zbncp_data_trace_mask, |
6050 | 14 | {"Trace mask", "zbncp.data.trace_mask", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
6051 | | |
6052 | 14 | {&hf_zbncp_data_trace_wireless_traf, |
6053 | 14 | {"Wireless traffic", "zbncp.data.trace_wireless_traf", FT_UINT32, BASE_DEC, NULL, 0x1, NULL, HFILL}}, |
6054 | | |
6055 | 14 | {&hf_zbncp_data_trace_reserved, |
6056 | 14 | {"Reserved", "zbncp.data.trace_reserved", FT_UINT32, BASE_DEC, NULL, 0x2, NULL, HFILL}}, |
6057 | | |
6058 | 14 | {&hf_zbncp_data_trace_ncp_ll_proto, |
6059 | 14 | {"NCP LL protocol", "zbncp.data.trace_ncp_ll_proto", FT_UINT32, BASE_DEC, NULL, 0x4, NULL, HFILL}}, |
6060 | | |
6061 | 14 | {&hf_zbncp_data_trace_host_int_line, |
6062 | 14 | {"HOST INT line", "zbncp.data.trace_host_int_line", FT_UINT32, BASE_DEC, NULL, 0x8, NULL, HFILL}}, |
6063 | | |
6064 | 14 | {&hf_zbncp_data_trace_sleep_awake, |
6065 | 14 | {"Sleep/awake", "zbncp.data.trace_sleep_awake", FT_UINT32, BASE_DEC, NULL, 0x10, NULL, HFILL}}, |
6066 | | |
6067 | 14 | {&hf_zbncp_data_trace_input_output, |
6068 | 14 | {"Input/Output trace", "zbncp.data.trace_input_output", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
6069 | | |
6070 | 14 | {&hf_zbncp_data_trace_timestamp, |
6071 | 14 | {"Trace timestamp in beacon intervals", "zbncp.data.trace_timestamp", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
6072 | | |
6073 | 14 | {&hf_zbncp_data_trace, |
6074 | 14 | {"Raw trace data", "zbncp.data.trace", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL}}, |
6075 | | |
6076 | 14 | {&hf_zbncp_data_key_neg_method, |
6077 | 14 | {"Key Negotiation Methods Mask", "zbncp.data.key_neg_method", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
6078 | | |
6079 | 14 | {&hf_zbncp_data_psk_secrets, |
6080 | 14 | {"PSK Secrets Mask", "zbncp.data.psk_secrets", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
6081 | | |
6082 | 14 | {&hf_zbncp_data_r22_join_usage, |
6083 | 14 | {"Use r22 join procedure", "zbncp.data.r22_join_usage", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
6084 | | |
6085 | 14 | {&hf_zbncp_data_nwk_conf_preset, |
6086 | 14 | {"Network preset configuration", "zbncp.data.nwk_conf_preset", FT_UINT8, BASE_HEX, VALS(zbncp_nwk_conf_behavior), 0x0, NULL, HFILL}}, |
6087 | | |
6088 | 14 | {&hf_zbncp_data_short_address, |
6089 | 14 | {"Short Network address", "zbncp.data.short_address", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
6090 | | |
6091 | 14 | {&hf_zbncp_data_raw_data, |
6092 | 14 | {"Raw data", "zbncp.data.raw_data", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL}}, |
6093 | | |
6094 | 14 | {&hf_zbncp_data_conf_params, |
6095 | 14 | {"Configuration parameters", "zbncp.data.conf_params", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
6096 | | |
6097 | | /* Configuration Parameter Fields */ |
6098 | 14 | {&hf_zbncp_data_conf_params_reserved, |
6099 | 14 | {"Reserved", "zbncp.data.reserved", FT_BOOLEAN, 8, NULL, CONF_PARAMS_RESERVED, |
6100 | 14 | "Whether this device can act as a PAN coordinator or not.", HFILL}}, |
6101 | | |
6102 | 14 | {&hf_zbncp_data_conf_params_disable_pan_id_change, |
6103 | 14 | {"Disable PAN ID Change", "zbncp.data.conf_params.disable_pan_id_change", FT_BOOLEAN, 8, NULL, CONF_PARAMS_DIS_PANID_CHANGE, "", HFILL}}, |
6104 | | |
6105 | 14 | {&hf_zbncp_data_conf_params_disable_channel_change, |
6106 | 14 | {"Disable Channel Change", "zbncp.data.conf_params.disable_channel_change", FT_BOOLEAN, 8, NULL, CONF_PARAMS_DIS_CHAN_CHANGE, "", HFILL}}, |
6107 | | |
6108 | 14 | {&hf_zbncp_data_conf_params_leave_request_allowed, |
6109 | 14 | {"Leave Requests Allowed", "zbncp.data.conf_params.leave_request_allowed", FT_BOOLEAN, 8, NULL, CONF_PARAMS_LEAVE_REQ_ALLOW, "", HFILL}}, |
6110 | | |
6111 | 14 | {&hf_zbncp_data_conf_params_require_tclk, |
6112 | 14 | {"Require Link Key for Transport Key transmission", "zbncp.data.conf_params.require_tclk", FT_BOOLEAN, 8, NULL, CONF_PARAMS_REQ_TCLK, "", HFILL}}, |
6113 | | |
6114 | 14 | {&hf_zbncp_data_conf_params_restricted_enabled, |
6115 | 14 | {"Restricted Mode Enabled", "zbncp.data.conf_params.restricted_enabled", FT_BOOLEAN, 8, NULL, CONF_PARAMS_RESTRICT_MODE_EN, "", HFILL}}, |
6116 | | |
6117 | 14 | {&hf_zbncp_data_channel_page_count, |
6118 | 14 | {"Channel Page Count", "zbncp.data.channel_page_count", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
6119 | | |
6120 | 14 | {&hf_zbncp_data_config_mask, |
6121 | 14 | {"Configuration mask", "zbncp.data.config_mask", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
6122 | | |
6123 | 14 | {&hf_zbncp_data_dest_short_address, |
6124 | 14 | {"Destination Short Network address", "zbncp.data.short_address", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
6125 | | |
6126 | 14 | {&hf_zbncp_data_current_parents_short_address, |
6127 | 14 | {"Current Parents Short Address", "zbncp.data.current_parents_short_address", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
6128 | | |
6129 | 14 | {&hf_zbncp_data_current_parents_lqi, |
6130 | 14 | {"Current Parents' LQI", "zbncp.data.current_parents_lqi", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
6131 | | |
6132 | 14 | {&hf_zbncp_data_potential_parent_count, |
6133 | 14 | {"Potential Parent Count", "zbncp.data.potential_parent_count", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
6134 | | |
6135 | 14 | {&hf_zbncp_data_classification_mask, |
6136 | 14 | {"Classification Mask", "zbncp.data.classification_mask", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
6137 | | |
6138 | 14 | {&hf_zbncp_data_total_beacons_surveyed, |
6139 | 14 | {"Total Beacons Surveyed", "zbncp.data.total_beacons_surveyed", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
6140 | | |
6141 | 14 | {&hf_zbncp_data_current_pan_id_beacons, |
6142 | 14 | {"Number of Beacons with Current PAN ID", "zbncp.data.current_pan_id_beacons", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
6143 | | |
6144 | 14 | {&hf_zbncp_data_current_nwk_potential_parents, |
6145 | 14 | {"Number of potential parents from current Zigbee Network", "zbncp.data.current_nwk_potential_parents", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
6146 | | |
6147 | 14 | {&hf_zbncp_data_other_zigbee_beacons, |
6148 | 14 | {"Number of Other Zigbee Beacons", "zbncp.data.other_zigbee_beacons", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
6149 | | |
6150 | 14 | {&hf_zbncp_data_pan_id_conflict_tlv, |
6151 | 14 | {"PAN ID Conflict TLV", "zbncp.data.pan_id_conflict_tlv", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
6152 | | |
6153 | 14 | {&hf_zbncp_data_eui64_count, |
6154 | 14 | {"Amount of EUI64s'", "zbncp.data.eui64_count", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
6155 | | |
6156 | 14 | {&hf_zbncp_data_eui64, |
6157 | 14 | {"EUI64", "zbncp.data.eui64", FT_EUI64, BASE_NONE, NULL, 0x0, NULL, HFILL}}, |
6158 | | |
6159 | 14 | {&hf_zbncp_data_initial_join_auth, |
6160 | 14 | {"Initial Join Auth", "zbncp.data.initial_join_auth", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
6161 | | |
6162 | 14 | {&hf_zbncp_data_key_update_method, |
6163 | 14 | {"Key Update Method", "zbncp.data.key_update_method", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
6164 | | |
6165 | 14 | {&hf_zbncp_data_next_pan_id_change, |
6166 | 14 | {"Next PAN Id Change", "zbncp.data.next_pan_id_change", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
6167 | | |
6168 | 14 | {&hf_zbncp_data_next_channel_change, |
6169 | 14 | {"Next Channel Change", "zbncp.data.next_channel_change", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
6170 | | |
6171 | 14 | {&hf_zbncp_data_error_count, |
6172 | 14 | {"Error Count", "zbncp.data.error_count", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
6173 | | |
6174 | 14 | {&hf_zbncp_data_keepalive_rec, |
6175 | 14 | {"Keepalive Received", "zbncp.data.keepalive_rec", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL}}, |
6176 | | |
6177 | 14 | {&hf_zbncp_data_mac_if_idx, |
6178 | 14 | {"MAC Interface Index", "zbncp.data.mac_if_idx", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
6179 | | |
6180 | 14 | {&hf_zbncp_data_fast_poll_int, |
6181 | 14 | {"Fast Poll Interval", "zbncp.data.fast_poll", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
6182 | | |
6183 | 14 | {&hf_zbncp_data_long_poll_int, |
6184 | 14 | {"Long Poll Interval", "zbncp.data.long_poll", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
6185 | | |
6186 | 14 | {&hf_zbncp_data_fast_poll_flag, |
6187 | 14 | {"Fast Poll Flag", "zbncp.data.fast_poll_flag", FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL}}, |
6188 | | |
6189 | 14 | {&hf_zbncp_data_stop_fast_poll_result, |
6190 | 14 | {"Stop Fast Poll Result", "zbncp.data.stop_fast_poll_result", FT_UINT8, BASE_HEX, VALS(zbncp_stop_fast_poll_result), 0x0, NULL, HFILL}}, |
6191 | | |
6192 | 14 | {&hf_zbncp_data_time, |
6193 | 14 | {"Time", "zbncp.data.time", FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
6194 | | |
6195 | 14 | {&hf_zbncp_data_pan_id_cnt, |
6196 | 14 | {"Pan ID count", "zbncp.data.pan_id_cnt", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
6197 | | |
6198 | 14 | {&hf_zbncp_data_ic, |
6199 | 14 | {"Install Code", "zbncp.data.ic", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL}}, |
6200 | | |
6201 | 14 | {&hf_zbncp_data_ic_table_size, |
6202 | 14 | {"IC Table Size", "zbncp.data.table_size", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
6203 | | |
6204 | 14 | {&hf_zbncp_data_ic_ent_cnt, |
6205 | 14 | {"Entry Count", "zbncp.data.entry_count", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
6206 | | |
6207 | 14 | {&hf_zbncp_data_cs, |
6208 | 14 | {"Suite", "zbncp.data.cs", FT_UINT8, BASE_DEC, VALS(zbncp_cs), 0, NULL, HFILL}}, |
6209 | | |
6210 | 14 | {&hf_zbncp_data_ca_pub_key, |
6211 | 14 | {"CA Public Key", "zbncp.data.ca_pub_key", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL}}, |
6212 | | |
6213 | 14 | {&hf_zbncp_data_ca_priv_key, |
6214 | 14 | {"Device Private Key", "zbncp.data.ca_priv_key", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL}}, |
6215 | | |
6216 | 14 | {&hf_zbncp_data_cert, |
6217 | 14 | {"Certificate", "zbncp.data.cert", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL}}, |
6218 | | |
6219 | 14 | {&hf_zbncp_data_issuer, |
6220 | 14 | {"Issuer", "zbncp.data.issuer", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL}}, |
6221 | | |
6222 | 14 | {&hf_zbncp_data_ic_en, |
6223 | 14 | {"Enable IC", "zbncp.data.ic_en", FT_BOOLEAN, BASE_NONE, NULL, 0, NULL, HFILL}}, |
6224 | | |
6225 | 14 | {&hf_zbncp_data_key_type, |
6226 | 14 | {"Key type", "zbncp.data.key_type", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL}}, |
6227 | | |
6228 | 14 | {&hf_zbncp_data_tx_power, |
6229 | 14 | {"TX Power", "zbncp.data.tx_power", FT_INT8, BASE_DEC, NULL, 0, NULL, HFILL}}, |
6230 | | |
6231 | 14 | {&hf_zbncp_data_tx_time, |
6232 | 14 | {"TX Time", "zbncp.data.tx_time", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL}}, |
6233 | | |
6234 | 14 | {&hf_zbncp_data_seed, |
6235 | 14 | {"Seed", "zbncp.data.seed", FT_INT16, BASE_DEC, NULL, 0, NULL, HFILL}}, |
6236 | | |
6237 | 14 | {&hf_zbncp_data_link_key, |
6238 | 14 | {"Link Key", "zbncp.data.link_key", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL}}, |
6239 | | |
6240 | 14 | {&hf_zbncp_data_aps_link_key_type, |
6241 | 14 | {"APS Link Key Type", "zbncp.data.link_key_type", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL}}, |
6242 | | |
6243 | 14 | {&hf_zbncp_data_key_src, |
6244 | 14 | {"Key source", "zbncp.data.key_src", FT_UINT8, BASE_DEC, VALS(zbncp_key_src), 0, NULL, HFILL}}, |
6245 | | |
6246 | 14 | {&hf_zbncp_data_key_attr, |
6247 | 14 | {"Key attributes", "zbncp.data.key_attr", FT_UINT8, BASE_DEC, VALS(zbncp_key_attr), 0, NULL, HFILL}}, |
6248 | | |
6249 | 14 | {&hf_zbncp_data_out_frame_cnt, |
6250 | 14 | {"Outgoing frame counter", "zbncp.data.out_cnt", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL}}, |
6251 | | |
6252 | 14 | {&hf_zbncp_data_inc_frame_cnt, |
6253 | 14 | {"Incoming frame counter", "zbncp.data.inc_cnt", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL}}, |
6254 | | |
6255 | 14 | {&hf_zbncp_data_dump_type, |
6256 | 14 | {"Dump Type", "zbncp.data.dump_type", FT_UINT8, BASE_DEC, VALS(zbncp_dump_type), 0, NULL, HFILL}}, |
6257 | | |
6258 | 14 | {&hf_zbncp_data_dump_text, |
6259 | 14 | {"Dump", "zbncp.data.dump_text", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL}}, |
6260 | | |
6261 | 14 | {&hf_zbncp_data_dump_bin, |
6262 | 14 | {"Dump", "zbncp.data.dump_bin", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL}}, |
6263 | | |
6264 | 14 | {&hf_zbncp_data_offset, |
6265 | 14 | {"Offset", "zbncp.data.offset", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL}}, |
6266 | | |
6267 | 14 | {&hf_zbncp_data_do_erase, |
6268 | 14 | {"Do erase", "zbncp.data.do_erase", FT_BOOLEAN, BASE_NONE, NULL, 0, NULL, HFILL}}, |
6269 | | |
6270 | 14 | {&hf_zbncp_data_calibration_status, |
6271 | 14 | {"Calibration status", "zbncp.data.calibration_status", FT_UINT8, BASE_HEX, VALS(zbncp_calibration_status), 0, NULL, HFILL}}, |
6272 | | |
6273 | 14 | {&hf_zbncp_data_calibration_value, |
6274 | 14 | {"Calibration value", "zbncp.data.calibration_value", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL}}, |
6275 | | |
6276 | 14 | {&hf_zbncp_data_zgp_key_type, |
6277 | 14 | {"Key type", "zbncp.data.zgp_key_type", FT_UINT8, BASE_HEX, VALS(zbncp_zgp_key_types), 0, NULL, HFILL}}, |
6278 | | |
6279 | 14 | {&hf_zbncp_data_zgp_link_key, |
6280 | 14 | {"Link key", "zbncp.data.zgp_link_key", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL}}, |
6281 | | |
6282 | 14 | {&hf_zbncp_data_prod_conf_hdr_crc, |
6283 | 14 | {"Production config crc", "zbncp.data.prod_conf.hdr.crc", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL}}, |
6284 | | |
6285 | 14 | {&hf_zbncp_data_prod_conf_hdr_len, |
6286 | 14 | {"Length (with application section)", "zbncp.data.prod_conf.hdr.len", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL}}, |
6287 | | |
6288 | 14 | {&hf_zbncp_data_prod_conf_hdr_version, |
6289 | 14 | {"Version", "zbncp.data.prod_conf.hdr.version", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL}}, |
6290 | | |
6291 | 14 | {&hf_zbncp_data_prod_conf_body, |
6292 | 14 | {"Production config body", "zbncp.data.prod_conf.body", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL}}, |
6293 | | |
6294 | | /* ZBOSS NCP dump */ |
6295 | 14 | {&hf_zbncp_dump_preamble, |
6296 | 14 | {"ZBNCP Dump preamble", "zbncp.dump.preamble", FT_STRING, BASE_NONE, NULL, 0x0, |
6297 | 14 | NULL, HFILL}}, |
6298 | | |
6299 | 14 | {&hf_zbncp_dump_version, |
6300 | 14 | {"ZBNCP Dump version", "zbncp.dump.version", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}}, |
6301 | | |
6302 | 14 | {&hf_zbncp_dump_type, |
6303 | 14 | {"Frame type", "zbncp.dump.ftype", FT_UINT8, BASE_HEX, NULL, 0x0, |
6304 | 14 | NULL, HFILL}}, |
6305 | | |
6306 | 14 | {&hf_zbncp_dump_options, |
6307 | 14 | {"Options", "zbncp.dump.options", FT_UINT8, BASE_HEX, NULL, 0x0, |
6308 | 14 | NULL, HFILL}}, |
6309 | | |
6310 | 14 | {&hf_zbncp_dump_options_dir, |
6311 | 14 | {"Direction", "zbncp.dump.options.direction", FT_BOOLEAN, 8, NULL, ZBNCP_DUMP_DIR_MASK, |
6312 | 14 | NULL, HFILL}}, |
6313 | | |
6314 | 14 | {&hf_zbncp_dump_options_int_state, |
6315 | 14 | {"HOST INT", "zbncp.dump.options.int_state", FT_BOOLEAN, 8, NULL, ZBNCP_DUMP_HOST_INT_DUMP_MASK, |
6316 | 14 | NULL, HFILL}}, |
6317 | | |
6318 | 14 | {&hf_zbncp_dump_options_tx_conflict, |
6319 | 14 | {"Potential TX/TX conflict", "zbncp.dump.options.tx_conflict", FT_BOOLEAN, 8, NULL, ZBNCP_DUMP_POTENTIAL_TX_RX_ERROR_MASK, |
6320 | 14 | NULL, HFILL}}, |
6321 | | |
6322 | | /* Capability Information Fields */ |
6323 | | |
6324 | 14 | {&hf_ieee802154_cinfo_alt_coord, |
6325 | 14 | {"Alternate PAN Coordinator", "zbncp.wpan.cinfo.alt_coord", FT_BOOLEAN, 8, NULL, IEEE802154_CMD_CINFO_ALT_PAN_COORD, |
6326 | 14 | "Whether this device can act as a PAN coordinator or not.", HFILL}}, |
6327 | | |
6328 | 14 | {&hf_ieee802154_cinfo_device_type, |
6329 | 14 | {"Device Type", "zbncp.wpan.cinfo.device_type", FT_BOOLEAN, 8, TFS(&tfs_cinfo_device_type), IEEE802154_CMD_CINFO_DEVICE_TYPE, |
6330 | 14 | "Whether this device is RFD (reduced-function device) or FFD (full-function device).", HFILL}}, |
6331 | | |
6332 | 14 | {&hf_ieee802154_cinfo_power_src, |
6333 | 14 | {"Power Source", "zbncp.wpan.cinfo.power_src", FT_BOOLEAN, 8, TFS(&tfs_cinfo_power_src), IEEE802154_CMD_CINFO_POWER_SRC, |
6334 | 14 | "Whether this device is operating on AC/mains or battery power.", HFILL}}, |
6335 | | |
6336 | 14 | {&hf_ieee802154_cinfo_idle_rx, |
6337 | 14 | {"Receive On When Idle", "zbncp.wpan.cinfo.idle_rx", FT_BOOLEAN, 8, NULL, IEEE802154_CMD_CINFO_IDLE_RX, |
6338 | 14 | "Whether this device can receive packets while idle or not.", HFILL}}, |
6339 | | |
6340 | 14 | {&hf_ieee802154_cinfo_sec_capable, |
6341 | 14 | {"Security Capability", "zbncp.wpan.cinfo.sec_capable", FT_BOOLEAN, 8, NULL, IEEE802154_CMD_CINFO_SEC_CAPABLE, |
6342 | 14 | "Whether this device is capable of receiving encrypted packets.", HFILL}}, |
6343 | | |
6344 | 14 | {&hf_ieee802154_cinfo_alloc_addr, |
6345 | 14 | {"Allocate Address", "zbncp.wpan.cinfo.alloc_addr", FT_BOOLEAN, 8, NULL, IEEE802154_CMD_CINFO_ALLOC_ADDR, |
6346 | 14 | "Whether this device wishes to use a 16-bit short address instead of its IEEE 802.15.4 64-bit long address.", HFILL}}}; |
6347 | | |
6348 | | /* Protocol subtrees */ |
6349 | 14 | static int *ett[] = |
6350 | 14 | { |
6351 | 14 | &ett_zbncp_hdr, |
6352 | 14 | &ett_zbncp_hdr_flags, |
6353 | 14 | &ett_zbncp_ll_body, |
6354 | 14 | &ett_zbncp_hl_hdr, |
6355 | 14 | &ett_zbncp_hl_body, |
6356 | 14 | &ett_zbncp_data_in_cl_list, |
6357 | 14 | &ett_zbncp_data_out_cl_list, |
6358 | 14 | &ett_zbncp_data_mac_cap, |
6359 | 14 | &ett_zbncp_data_pwr_src, |
6360 | 14 | &ett_zbncp_data_cur_pwr_src, |
6361 | 14 | &ett_zbncp_data_asoc_nwk_list, |
6362 | 14 | &ett_zbncp_data_pwr_desc, |
6363 | 14 | &ett_zbncp_data_desc_cap, |
6364 | 14 | &ett_zbncp_data_flags, |
6365 | 14 | &ett_zbncp_data_server_mask, |
6366 | 14 | &ett_zbncp_data_ep_list, |
6367 | 14 | &ett_zbncp_data_leave_flags, |
6368 | 14 | &ett_zbncp_data_tx_opt, |
6369 | 14 | &ett_zbncp_data_zdo_rejoin_flags, |
6370 | 14 | &ett_zbncp_data_apc_fc, |
6371 | 14 | &ett_zbncp_data_prod_conf_hdr, |
6372 | 14 | &ett_zbncp_data_aps_key_attr, |
6373 | 14 | &ett_zbncp_data_ch_list, |
6374 | 14 | &ett_zbncp_data_channel, |
6375 | 14 | &ett_zbncp_data_nwk_descr, |
6376 | 14 | &ett_zbncp_data_cmd_opt, |
6377 | 14 | &ett_zbncp_data_joind_bitmask, |
6378 | 14 | &ett_zbncp_data_trace_bitmask, |
6379 | 14 | &ett_zbncp_data_conf_params, |
6380 | 14 | &ett_zbncp_dump, |
6381 | 14 | &ett_zbncp_dump_opt |
6382 | 14 | }; |
6383 | | |
6384 | 14 | zbncp_frame = proto_register_protocol("ZBOSS Network Coprocessor product", "ZB NCP", |
6385 | 14 | ZBNCP_PROTOABBREV); |
6386 | | |
6387 | 14 | proto_register_field_array(zbncp_frame, hf_zbncp_phy, array_length(hf_zbncp_phy)); |
6388 | 14 | proto_register_subtree_array(ett, array_length(ett)); |
6389 | | |
6390 | 14 | zbncp_handle = register_dissector("zbncp", dissect_zbncp, proto_zbncp); |
6391 | 14 | } /* proto_register_zbncp */ |
6392 | | |
6393 | | void proto_reg_handoff_zbncp(void) |
6394 | 14 | { |
6395 | 14 | dissector_add_uint("wtap_encap", WTAP_ENCAP_ZBNCP, zbncp_handle); |
6396 | 14 | } |