Revert "TODO epan/dissectors/asn1/kerberos/packet-kerberos-template.c new GSS flags"
[wireshark-sm.git] / epan / dissectors / packet-ipmi-transport.c
blob7cc22ed64d099e16bfe1c70813b30777880f6779
1 /* packet-ipmi-transport.c
2 * Sub-dissectors for IPMI messages (netFn=Transport)
3 * Copyright 2007-2008, Alexey Neyman, Pigeon Point Systems <avn@pigeonpoint.com>
4 * Copyright 2015, Dmitry Bazhenov, Pigeon Point Systems <dima_b@pigeonpoint.com>
6 * Wireshark - Network traffic analyzer
7 * By Gerald Combs <gerald@wireshark.org>
8 * Copyright 1998 Gerald Combs
10 * SPDX-License-Identifier: GPL-2.0-or-later
13 #include "config.h"
15 #include <epan/packet.h>
16 #include <epan/tfs.h>
17 #include <wsutil/array.h>
18 #include "packet-ipmi.h"
20 void proto_register_ipmi_transport(void);
22 static int ett_ipmi_trn_lan00_byte1;
23 static int ett_ipmi_trn_lan01_byte1;
24 static int ett_ipmi_trn_lan02_byte1;
25 static int ett_ipmi_trn_lan02_byte2;
26 static int ett_ipmi_trn_lan02_byte3;
27 static int ett_ipmi_trn_lan02_byte4;
28 static int ett_ipmi_trn_lan02_byte5;
29 static int ett_ipmi_trn_lan04_byte1;
30 static int ett_ipmi_trn_lan07_byte2;
31 static int ett_ipmi_trn_lan07_byte3;
32 static int ett_ipmi_trn_lan10_byte1;
33 static int ett_ipmi_trn_lan17_byte1;
34 static int ett_ipmi_trn_lan18_byte1;
35 static int ett_ipmi_trn_lan18_byte2;
36 static int ett_ipmi_trn_lan18_byte4;
37 static int ett_ipmi_trn_lan19_byte1;
38 static int ett_ipmi_trn_lan19_byte2;
39 static int ett_ipmi_trn_lan19_byte3;
40 static int ett_ipmi_trn_lan20_byte12;
41 static int ett_ipmi_trn_lan21_byte1;
42 static int ett_ipmi_trn_lan22_byte1;
43 static int ett_ipmi_trn_lan24_byte1;
44 static int ett_ipmi_trn_lan24_byte2;
45 static int ett_ipmi_trn_lan24_byte3;
46 static int ett_ipmi_trn_lan24_byte4;
47 static int ett_ipmi_trn_lan24_byte5;
48 static int ett_ipmi_trn_lan24_byte6;
49 static int ett_ipmi_trn_lan24_byte7;
50 static int ett_ipmi_trn_lan24_byte8;
51 static int ett_ipmi_trn_lan25_byte1;
52 static int ett_ipmi_trn_lan25_byte2;
53 static int ett_ipmi_trn_lan25_byte34;
54 static int ett_ipmi_trn_lan50_byte1;
55 static int ett_ipmi_trn_lan55_byte3;
56 static int ett_ipmi_trn_lan56_byte2;
57 static int ett_ipmi_trn_lan64_byte1;
58 static int ett_ipmi_trn_serial03_byte1;
59 static int ett_ipmi_trn_serial04_byte1;
60 static int ett_ipmi_trn_serial05_byte1;
61 static int ett_ipmi_trn_serial05_byte2;
62 static int ett_ipmi_trn_serial06_byte1;
63 static int ett_ipmi_trn_serial07_byte1;
64 static int ett_ipmi_trn_serial07_byte2;
65 static int ett_ipmi_trn_serial08_byte1;
66 static int ett_ipmi_trn_serial08_byte2;
67 static int ett_ipmi_trn_serial09_byte1;
68 static int ett_ipmi_trn_serial09_byte2;
69 static int ett_ipmi_trn_serial16_byte1;
70 static int ett_ipmi_trn_serial17_byte1;
71 static int ett_ipmi_trn_serial17_byte2;
72 static int ett_ipmi_trn_serial17_byte4;
73 static int ett_ipmi_trn_serial17_byte5;
74 static int ett_ipmi_trn_serial19_byte1;
75 static int ett_ipmi_trn_serial19_byte2;
76 static int ett_ipmi_trn_serial19_byte3;
77 static int ett_ipmi_trn_serial20_byte1;
78 static int ett_ipmi_trn_serial21_byte1;
79 static int ett_ipmi_trn_serial22_byte1;
80 static int ett_ipmi_trn_serial23_byte1;
81 static int ett_ipmi_trn_serial24_byte1;
82 static int ett_ipmi_trn_serial25_byte2;
83 static int ett_ipmi_trn_serial28_byte1;
84 static int ett_ipmi_trn_serial28_byte2;
85 static int ett_ipmi_trn_serial28_byte10;
86 static int ett_ipmi_trn_serial28_byte11;
87 static int ett_ipmi_trn_serial28_byte12;
88 static int ett_ipmi_trn_serial28_byte13;
89 static int ett_ipmi_trn_serial28_byte14;
90 static int ett_ipmi_trn_serial29_byte1;
91 static int ett_ipmi_trn_serial29_byte2;
92 static int ett_ipmi_trn_serial30_byte1;
93 static int ett_ipmi_trn_serial30_byte2;
94 static int ett_ipmi_trn_serial30_byte3;
95 static int ett_ipmi_trn_serial33_byte1;
96 static int ett_ipmi_trn_serial37_byte1;
97 static int ett_ipmi_trn_serial43_byte1;
98 static int ett_ipmi_trn_serial50_byte1;
99 static int ett_ipmi_trn_serial51_byte2;
100 static int ett_ipmi_trn_serial51_byte3;
101 static int ett_ipmi_trn_01_byte1;
102 static int ett_ipmi_trn_02_byte1;
103 static int ett_ipmi_trn_02_rev;
104 static int ett_ipmi_trn_03_rq_byte1;
105 static int ett_ipmi_trn_03_rq_byte2;
106 static int ett_ipmi_trn_03_rs_byte1;
107 static int ett_ipmi_trn_04_byte1;
108 static int ett_ipmi_trn_04_byte2;
109 static int ett_ipmi_trn_10_byte1;
110 static int ett_ipmi_trn_11_byte1;
111 static int ett_ipmi_trn_11_rev;
112 static int ett_ipmi_trn_12_rq_byte1;
113 static int ett_ipmi_trn_12_rq_byte2;
114 static int ett_ipmi_trn_12_rs_byte1;
115 static int ett_ipmi_trn_13_byte1;
116 static int ett_ipmi_trn_14_byte1;
117 static int ett_ipmi_trn_15_byte1;
118 static int ett_ipmi_trn_16_byte1;
119 static int ett_ipmi_trn_17_byte1;
120 static int ett_ipmi_trn_17_byte2;
121 static int ett_ipmi_trn_18_byte1;
122 static int ett_ipmi_trn_19_byte1;
123 static int ett_ipmi_trn_19_byte2;
124 static int ett_ipmi_trn_XX_usercap;
125 static int ett_ipmi_trn_XX_cbcp;
126 static int ett_ipmi_trn_1a_byte1;
127 static int ett_ipmi_trn_1a_byte2;
128 static int ett_ipmi_trn_1b_byte1;
129 static int ett_ipmi_trn_1b_byte2;
130 static int ett_ipmi_trn_parameter;
132 static int hf_ipmi_trn_lan00_sip;
134 static int hf_ipmi_trn_lanXX_oem;
135 static int hf_ipmi_trn_lanXX_passwd;
136 static int hf_ipmi_trn_lanXX_md5;
137 static int hf_ipmi_trn_lanXX_md2;
138 static int hf_ipmi_trn_lanXX_none;
140 static int hf_ipmi_trn_lan03_ip;
142 static int hf_ipmi_trn_lan04_ipsrc;
144 static int hf_ipmi_trn_lan05_ether;
146 static int hf_ipmi_trn_lan06_subnet;
148 static int hf_ipmi_trn_lan07_ttl;
149 static int hf_ipmi_trn_lan07_flags;
150 static int hf_ipmi_trn_lan07_precedence;
151 static int hf_ipmi_trn_lan07_tos;
153 static int hf_ipmi_trn_lan08_rmcp_port;
155 static int hf_ipmi_trn_lan09_rmcp_port;
157 static int hf_ipmi_trn_lan10_responses;
158 static int hf_ipmi_trn_lan10_gratuitous;
160 static int hf_ipmi_trn_lan11_arp_interval;
162 static int hf_ipmi_trn_lan12_def_gw_ip;
164 static int hf_ipmi_trn_lan13_def_gw_mac;
166 static int hf_ipmi_trn_lan14_bkp_gw_ip;
168 static int hf_ipmi_trn_lan15_bkp_gw_mac;
170 static int hf_ipmi_trn_lan16_comm_string;
172 static int hf_ipmi_trn_lan17_num_dst;
174 static int hf_ipmi_trn_lan18_dst_selector;
175 static int hf_ipmi_trn_lan18_ack;
176 static int hf_ipmi_trn_lan18_dst_type;
177 static int hf_ipmi_trn_lan18_tout;
178 static int hf_ipmi_trn_lan18_retries;
180 static int hf_ipmi_trn_lan19_dst_selector;
181 static int hf_ipmi_trn_lan19_addr_format;
182 static int hf_ipmi_trn_lan19_address;
183 static int hf_ipmi_trn_lan19_gw_sel;
184 static int hf_ipmi_trn_lan19_ip;
185 static int hf_ipmi_trn_lan19_mac;
187 static int hf_ipmi_trn_lan20_vlan_id_enable;
188 static int hf_ipmi_trn_lan20_vlan_id;
190 static int hf_ipmi_trn_lan21_vlan_prio;
192 static int hf_ipmi_trn_lan22_num_cs_entries;
194 static int hf_ipmi_trn_lan23_cs_entry;
196 static int hf_ipmi_trn_lan24_priv1;
197 static int hf_ipmi_trn_lan24_priv2;
199 static int hf_ipmi_trn_lan25_dst_selector;
200 static int hf_ipmi_trn_lan25_addr_format;
201 static int hf_ipmi_trn_lan25_address;
202 static int hf_ipmi_trn_lan25_uprio;
203 static int hf_ipmi_trn_lan25_cfi;
204 static int hf_ipmi_trn_lan25_vlan_id;
206 static int hf_ipmi_trn_lan26_gen_event;
207 static int hf_ipmi_trn_lan26_thresh_number;
208 static int hf_ipmi_trn_lan26_reset_interval;
209 static int hf_ipmi_trn_lan26_lock_interval;
211 static int hf_ipmi_trn_lan50_ipv6_only;
212 static int hf_ipmi_trn_lan50_both_ipv4_ipv6;
213 static int hf_ipmi_trn_lan50_ipv6_alerting;
215 static int hf_ipmi_trn_lan51_enables;
217 static int hf_ipmi_trn_lan52_traffic_class;
219 static int hf_ipmi_trn_lanXX_hop_limit;
221 static int hf_ipmi_trn_lan54_flow_label;
223 static int hf_ipmi_trn_lan55_static_addr_max;
224 static int hf_ipmi_trn_lan55_dynamic_addr_max;
225 static int hf_ipmi_trn_lan55_dhcpv6_support;
226 static int hf_ipmi_trn_lan55_slaac_support;
228 static int hf_ipmi_trn_lanXX_addr_selector;
229 static int hf_ipmi_trn_lanXX_addr_type;
230 static int hf_ipmi_trn_lanXX_addr_enable;
231 static int hf_ipmi_trn_lanXX_addr;
232 static int hf_ipmi_trn_lanXX_prefix_len;
233 static int hf_ipmi_trn_lanXX_addr_status;
235 static int hf_ipmi_trn_lanXX_max_duid_blocks;
237 static int hf_ipmi_trn_lanXX_duid_selector;
238 static int hf_ipmi_trn_lanXX_block_selector;
239 static int hf_ipmi_trn_lanXX_duid;
241 static int hf_ipmi_trn_lanXX_timing_support;
243 static int hf_ipmi_trn_lanXX_iface_selector;
244 static int hf_ipmi_trn_lan63_sol_max_delay;
245 static int hf_ipmi_trn_lan63_sol_timeout;
246 static int hf_ipmi_trn_lan63_sol_max_rt;
247 static int hf_ipmi_trn_lan63_req_timeout;
248 static int hf_ipmi_trn_lan63_req_max_rt;
249 static int hf_ipmi_trn_lan63_req_max_rc;
250 static int hf_ipmi_trn_lan63_cnf_max_delay;
251 static int hf_ipmi_trn_lan63_cnf_timeout;
252 static int hf_ipmi_trn_lan63_cnf_max_rt;
253 static int hf_ipmi_trn_lan63_cnf_max_rd;
254 static int hf_ipmi_trn_lan63_ren_timeout;
255 static int hf_ipmi_trn_lan63_ren_max_rt;
256 static int hf_ipmi_trn_lan63_reb_timeout;
257 static int hf_ipmi_trn_lan63_reb_max_rt;
258 static int hf_ipmi_trn_lan63_inf_max_delay;
259 static int hf_ipmi_trn_lan63_inf_timeout;
260 static int hf_ipmi_trn_lan63_inf_max_rt;
261 static int hf_ipmi_trn_lan63_rel_timeout;
262 static int hf_ipmi_trn_lan63_rel_max_rc;
263 static int hf_ipmi_trn_lan63_dec_timeout;
264 static int hf_ipmi_trn_lan63_dec_max_rc;
265 static int hf_ipmi_trn_lan63_hop_count_limit;
267 static int hf_ipmi_trn_lan64_static_cfg;
268 static int hf_ipmi_trn_lan64_dynamic_cfg;
270 static int hf_ipmi_trn_lanXX_router_selector;
271 static int hf_ipmi_trn_lanXX_router_mac;
272 static int hf_ipmi_trn_lanXX_router_prefix;
274 static int hf_ipmi_trn_lan73_num_dynamic_sets;
276 static int hf_ipmi_trn_lan80_max_rtr_solicitation_delay;
277 static int hf_ipmi_trn_lan80_rtr_solicitation_interval;
278 static int hf_ipmi_trn_lan80_max_rtr_solicitations;
279 static int hf_ipmi_trn_lan80_dup_addr_detect_transmits;
280 static int hf_ipmi_trn_lan80_max_multicast_solicit;
281 static int hf_ipmi_trn_lan80_max_unicast_solicit;
282 static int hf_ipmi_trn_lan80_max_anycast_delay_time;
283 static int hf_ipmi_trn_lan80_max_neighbor_advertisement;
284 static int hf_ipmi_trn_lan80_reachable_time;
285 static int hf_ipmi_trn_lan80_retrans_timer;
286 static int hf_ipmi_trn_lan80_delay_first_probe_time;
287 static int hf_ipmi_trn_lan80_max_random_factor;
288 static int hf_ipmi_trn_lan80_min_random_factor;
290 static int hf_ipmi_trn_serial03_connmode;
291 static int hf_ipmi_trn_serial03_terminal;
292 static int hf_ipmi_trn_serial03_ppp;
293 static int hf_ipmi_trn_serial03_basic;
295 static int hf_ipmi_trn_serial04_timeout;
297 static int hf_ipmi_trn_serial05_cbcp_callback;
298 static int hf_ipmi_trn_serial05_ipmi_callback;
299 static int hf_ipmi_trn_serial05_cb_list;
300 static int hf_ipmi_trn_serial05_cb_user;
301 static int hf_ipmi_trn_serial05_cb_prespec;
302 static int hf_ipmi_trn_serial05_no_cb;
303 static int hf_ipmi_trn_serial05_cb_dest1;
304 static int hf_ipmi_trn_serial05_cb_dest2;
305 static int hf_ipmi_trn_serial05_cb_dest3;
307 static int hf_ipmi_trn_serial06_inactivity;
308 static int hf_ipmi_trn_serial06_dcd;
310 static int hf_ipmi_trn_serial07_flowctl;
311 static int hf_ipmi_trn_serial07_dtrhangup;
312 static int hf_ipmi_trn_serial07_bitrate;
314 static int hf_ipmi_trn_serial08_esc_powerup;
315 static int hf_ipmi_trn_serial08_esc_reset;
316 static int hf_ipmi_trn_serial08_switch_authcap;
317 static int hf_ipmi_trn_serial08_switch_rmcp;
318 static int hf_ipmi_trn_serial08_esc_switch1;
319 static int hf_ipmi_trn_serial08_esc_switch2;
320 static int hf_ipmi_trn_serial08_switch_dcdloss;
321 static int hf_ipmi_trn_serial08_sharing;
322 static int hf_ipmi_trn_serial08_ping_callback;
323 static int hf_ipmi_trn_serial08_ping_direct;
324 static int hf_ipmi_trn_serial08_ping_retry;
326 static int hf_ipmi_trn_serial09_ring_duration;
327 static int hf_ipmi_trn_serial09_ring_dead;
329 static int hf_ipmi_trn_serial10_set_sel;
330 static int hf_ipmi_trn_serial10_init_str;
331 static int hf_ipmi_trn_serial11_esc_seq;
332 static int hf_ipmi_trn_serial12_hangup_seq;
333 static int hf_ipmi_trn_serial13_dial_cmd;
334 static int hf_ipmi_trn_serial14_page_blackout;
335 static int hf_ipmi_trn_serial15_comm_string;
337 static int hf_ipmi_trn_serial16_ndest;
339 static int hf_ipmi_trn_serial17_dest_sel;
340 static int hf_ipmi_trn_serial17_ack;
341 static int hf_ipmi_trn_serial17_dest_type;
342 /* static int hf_ipmi_trn_serial17_ack_timeout; */
343 static int hf_ipmi_trn_serial17_alert_retries;
344 static int hf_ipmi_trn_serial17_call_retries;
345 static int hf_ipmi_trn_serial17_alert_ack_timeout;
346 static int hf_ipmi_trn_serial17_dialstr_sel;
347 static int hf_ipmi_trn_serial17_tap_sel;
348 static int hf_ipmi_trn_serial17_ipaddr_sel;
349 static int hf_ipmi_trn_serial17_ppp_sel;
350 static int hf_ipmi_trn_serial17_unknown;
352 static int hf_ipmi_trn_serial18_call_retry;
354 static int hf_ipmi_trn_serial19_destsel;
355 static int hf_ipmi_trn_serial19_flowctl;
356 static int hf_ipmi_trn_serial19_dtrhangup;
357 static int hf_ipmi_trn_serial19_stopbits;
358 static int hf_ipmi_trn_serial19_charsize;
359 static int hf_ipmi_trn_serial19_parity;
360 static int hf_ipmi_trn_serial19_bitrate;
362 static int hf_ipmi_trn_serial20_num_dial_strings;
363 static int hf_ipmi_trn_serial21_dialsel;
364 static int hf_ipmi_trn_serial21_blockno;
365 static int hf_ipmi_trn_serial21_dialstr;
366 static int hf_ipmi_trn_serial22_num_ipaddrs;
367 static int hf_ipmi_trn_serial23_destsel;
368 static int hf_ipmi_trn_serial23_ipaddr;
369 static int hf_ipmi_trn_serial24_num_tap_accounts;
370 static int hf_ipmi_trn_serial25_tap_acct;
371 static int hf_ipmi_trn_serial25_dialstr_sel;
372 static int hf_ipmi_trn_serial25_tapsrv_sel;
373 static int hf_ipmi_trn_serial26_tap_acct;
374 static int hf_ipmi_trn_serial26_tap_passwd;
375 static int hf_ipmi_trn_serial27_tap_acct;
376 static int hf_ipmi_trn_serial27_tap_pager_id;
378 static int hf_ipmi_trn_serial28_tapsrv_sel;
379 static int hf_ipmi_trn_serial28_confirm;
380 static int hf_ipmi_trn_serial28_srvtype;
381 static int hf_ipmi_trn_serial28_ctrl_esc;
382 static int hf_ipmi_trn_serial28_t2;
383 static int hf_ipmi_trn_serial28_t1;
384 static int hf_ipmi_trn_serial28_t4;
385 static int hf_ipmi_trn_serial28_t3;
386 static int hf_ipmi_trn_serial28_t6;
387 static int hf_ipmi_trn_serial28_t5;
388 static int hf_ipmi_trn_serial28_n2;
389 static int hf_ipmi_trn_serial28_n1;
390 static int hf_ipmi_trn_serial28_n4;
391 static int hf_ipmi_trn_serial28_n3;
393 static int hf_ipmi_trn_serial29_op;
394 static int hf_ipmi_trn_serial29_lineedit;
395 static int hf_ipmi_trn_serial29_deletectl;
396 static int hf_ipmi_trn_serial29_echo;
397 static int hf_ipmi_trn_serial29_handshake;
398 static int hf_ipmi_trn_serial29_o_newline;
399 static int hf_ipmi_trn_serial29_i_newline;
400 static int hf_ipmi_trn_serial30_snooping;
401 static int hf_ipmi_trn_serial30_snoopctl;
402 static int hf_ipmi_trn_serial30_negot_ctl;
403 static int hf_ipmi_trn_serial30_use_xmit_accm;
404 static int hf_ipmi_trn_serial30_xmit_addr_comp;
405 static int hf_ipmi_trn_serial30_xmit_proto_comp;
406 static int hf_ipmi_trn_serial30_ipaddr;
407 static int hf_ipmi_trn_serial30_accm;
408 static int hf_ipmi_trn_serial30_addr_comp;
409 static int hf_ipmi_trn_serial30_proto_comp;
410 static int hf_ipmi_trn_serial31_port;
411 static int hf_ipmi_trn_serial32_port;
412 static int hf_ipmi_trn_serial33_auth_proto;
413 static int hf_ipmi_trn_serial34_chap_name;
415 static int hf_ipmi_trn_serial35_recv_accm;
416 static int hf_ipmi_trn_serial35_xmit_accm;
417 static int hf_ipmi_trn_serial36_snoop_accm;
418 static int hf_ipmi_trn_serial37_num_ppp;
419 static int hf_ipmi_trn_serial38_acct_sel;
420 static int hf_ipmi_trn_serial38_dialstr_sel;
421 static int hf_ipmi_trn_serial39_acct_sel;
422 static int hf_ipmi_trn_serial39_ipaddr;
423 static int hf_ipmi_trn_serial40_acct_sel;
424 static int hf_ipmi_trn_serial40_username;
425 static int hf_ipmi_trn_serial41_acct_sel;
426 static int hf_ipmi_trn_serial41_userdomain;
427 static int hf_ipmi_trn_serial42_acct_sel;
428 static int hf_ipmi_trn_serial42_userpass;
429 static int hf_ipmi_trn_serial43_acct_sel;
430 static int hf_ipmi_trn_serial43_auth_proto;
431 static int hf_ipmi_trn_serial44_acct_sel;
432 static int hf_ipmi_trn_serial44_hold_time;
434 static int hf_ipmi_trn_serial45_src_ipaddr;
435 static int hf_ipmi_trn_serial45_dst_ipaddr;
436 static int hf_ipmi_trn_serial46_tx_bufsize;
437 static int hf_ipmi_trn_serial47_rx_bufsize;
438 static int hf_ipmi_trn_serial48_ipaddr;
439 static int hf_ipmi_trn_serial49_blockno;
440 static int hf_ipmi_trn_serial49_dialstr;
441 static int hf_ipmi_trn_serial50_115200;
442 static int hf_ipmi_trn_serial50_57600;
443 static int hf_ipmi_trn_serial50_38400;
444 static int hf_ipmi_trn_serial50_19200;
445 static int hf_ipmi_trn_serial50_9600;
447 static int hf_ipmi_trn_serial51_port_assoc_sel;
448 static int hf_ipmi_trn_serial51_ipmi_channel;
449 static int hf_ipmi_trn_serial51_conn_num;
450 static int hf_ipmi_trn_serial51_ipmi_sharing;
451 static int hf_ipmi_trn_serial51_ipmi_sol;
452 static int hf_ipmi_trn_serial51_chan_num;
453 static int hf_ipmi_trn_serial52_port_assoc_sel;
454 static int hf_ipmi_trn_serial52_conn_name;
455 static int hf_ipmi_trn_serial53_port_assoc_sel;
456 static int hf_ipmi_trn_serial53_chan_name;
458 static int hf_ipmi_trn_01_chan;
459 static int hf_ipmi_trn_01_param;
460 static int hf_ipmi_trn_01_param_data;
462 static int hf_ipmi_trn_02_getrev;
463 static int hf_ipmi_trn_02_chan;
464 static int hf_ipmi_trn_02_param;
465 static int hf_ipmi_trn_02_set;
466 static int hf_ipmi_trn_02_block;
467 static int hf_ipmi_trn_02_rev_present;
468 static int hf_ipmi_trn_02_rev_compat;
469 static int hf_ipmi_trn_02_param_data;
471 static int hf_ipmi_trn_03_chan;
472 static int hf_ipmi_trn_03_arp_resp;
473 static int hf_ipmi_trn_03_gratuitous_arp;
474 static int hf_ipmi_trn_03_status_arp_resp;
475 static int hf_ipmi_trn_03_status_gratuitous_arp;
477 static int hf_ipmi_trn_04_chan;
478 static int hf_ipmi_trn_04_clear;
479 static int hf_ipmi_trn_04_rx_ippkts;
480 static int hf_ipmi_trn_04_rx_iphdr_err;
481 static int hf_ipmi_trn_04_rx_ipaddr_err;
482 static int hf_ipmi_trn_04_rx_ippkts_frag;
483 static int hf_ipmi_trn_04_tx_ippkts;
484 static int hf_ipmi_trn_04_rx_udppkts;
485 static int hf_ipmi_trn_04_rx_validrmcp;
486 static int hf_ipmi_trn_04_rx_udpproxy;
487 static int hf_ipmi_trn_04_dr_udpproxy;
489 static int hf_ipmi_trn_10_chan;
490 static int hf_ipmi_trn_10_param;
491 static int hf_ipmi_trn_10_param_data;
493 static int hf_ipmi_trn_11_getrev;
494 static int hf_ipmi_trn_11_chan;
495 static int hf_ipmi_trn_11_param;
496 static int hf_ipmi_trn_11_set;
497 static int hf_ipmi_trn_11_block;
498 static int hf_ipmi_trn_11_rev_present;
499 static int hf_ipmi_trn_11_rev_compat;
500 static int hf_ipmi_trn_11_param_data;
502 static int hf_ipmi_trn_12_chan;
503 static int hf_ipmi_trn_12_mux_setting;
504 static int hf_ipmi_trn_12_sw_to_sys;
505 static int hf_ipmi_trn_12_sw_to_bmc;
506 static int hf_ipmi_trn_12_alert;
507 static int hf_ipmi_trn_12_msg;
508 static int hf_ipmi_trn_12_req;
509 static int hf_ipmi_trn_12_mux_state;
511 static int hf_ipmi_trn_13_chan;
512 static int hf_ipmi_trn_13_code1;
513 static int hf_ipmi_trn_13_code2;
514 static int hf_ipmi_trn_13_code3;
515 static int hf_ipmi_trn_13_code4;
516 static int hf_ipmi_trn_13_code5;
518 static int hf_ipmi_trn_14_chan;
519 static int hf_ipmi_trn_14_block;
520 static int hf_ipmi_trn_14_data;
522 static int hf_ipmi_trn_15_chan;
523 static int hf_ipmi_trn_15_block;
524 static int hf_ipmi_trn_15_data;
526 static int hf_ipmi_trn_16_chan;
527 static int hf_ipmi_trn_16_src_port;
528 static int hf_ipmi_trn_16_dst_port;
529 static int hf_ipmi_trn_16_src_addr;
530 static int hf_ipmi_trn_16_dst_addr;
531 static int hf_ipmi_trn_16_bytes;
533 static int hf_ipmi_trn_17_chan;
534 static int hf_ipmi_trn_17_clear;
535 static int hf_ipmi_trn_17_block_num;
536 static int hf_ipmi_trn_17_size;
537 static int hf_ipmi_trn_17_data;
539 static int hf_ipmi_trn_18_state;
540 static int hf_ipmi_trn_18_ipmi_ver;
542 static int hf_ipmi_trn_19_chan;
543 static int hf_ipmi_trn_19_dest_sel;
545 static int hf_ipmi_trn_XX_cap_cbcp;
546 static int hf_ipmi_trn_XX_cap_ipmi;
547 static int hf_ipmi_trn_XX_cbcp_from_list;
548 static int hf_ipmi_trn_XX_cbcp_user;
549 static int hf_ipmi_trn_XX_cbcp_prespec;
550 static int hf_ipmi_trn_XX_cbcp_nocb;
551 static int hf_ipmi_trn_XX_dst1;
552 static int hf_ipmi_trn_XX_dst2;
553 static int hf_ipmi_trn_XX_dst3;
555 static int hf_ipmi_trn_1a_user;
556 static int hf_ipmi_trn_1a_chan;
558 static int hf_ipmi_trn_1b_user;
559 static int hf_ipmi_trn_1b_chan;
561 static expert_field ei_ipmi_trn_02_request_param_rev;
562 static expert_field ei_ipmi_trn_02_request_param_data;
563 static expert_field ei_ipmi_trn_11_request_param_rev;
564 static expert_field ei_ipmi_trn_11_request_param_data;
566 static const value_string lan00_sip_vals[] = {
567 { 0x00, "Set complete" },
568 { 0x01, "Set in progress" },
569 { 0x02, "Commit write" },
570 { 0x03, "Reserved" },
571 { 0, NULL }
574 static const value_string lan04_ipsrc_vals[] = {
575 { 0x00, "Unspecified" },
576 { 0x01, "Static address (manually configured)" },
577 { 0x02, "Address obtained by BMC running DHCP" },
578 { 0x03, "Address loaded by BIOS or system software" },
579 { 0x04, "Address obtained by BMC running other address assignment protocol" },
580 { 0, NULL }
583 static const struct true_false_string lan18_ack_tfs = {
584 "Acknowledged", "Unacknowledged"
587 static const value_string lan18_dst_type_vals[] = {
588 { 0x00, "PET Trap destination" },
589 { 0x06, "OEM 1" },
590 { 0x07, "OEM 2" },
591 { 0, NULL }
594 static const value_string lan19_af_vals[] = {
595 { 0x00, "IPv4 Address followed by Ethernet/802.3 MAC Address" },
596 { 0x01, "IPv6 Address" },
597 { 0, NULL }
600 static const struct true_false_string lan19_gw_sel_tfs = {
601 "Use backup gateway", "Use default gateway"
604 static const struct true_false_string lan20_enable_tfs = {
605 "Enabled", "Disabled"
608 static const value_string lan24_priv_vals[] = {
609 { 0x00, "Unspecified" },
610 { 0x01, "Callback" },
611 { 0x02, "User" },
612 { 0x03, "Operator" },
613 { 0x04, "Administrator" },
614 { 0x05, "OEM" },
615 { 0, NULL }
618 static const value_string lan25_af_vals[] = {
619 { 0x00, "VLAN ID not used" },
620 { 0x01, "802.1q VLAN TAG" },
621 { 0, NULL }
624 static const value_string lan51_enables[] = {
625 { 0, "IPv6 addressing disabled" },
626 { 1, "Enable IPv6 addressing only. IPv5 addressing is disabled" },
627 { 2, "Enable IPv6 and IPv4 addressing simultaneously" },
628 { 0, NULL }
631 static const value_string lanXX_addr_type[] = {
632 { 0, "Static" },
633 { 1, "SLAAC" },
634 { 2, "DHCPv6" },
635 { 0, NULL }
638 static const value_string lanXX_addr_status[] = {
639 { 0, "Active (in-use)" },
640 { 1, "Disabled" },
641 { 2, "Pending" },
642 { 3, "Failed" },
643 { 4, "Deprecated" },
644 { 5, "Invalid" },
645 { 0, NULL }
648 static const value_string lanXX_timing_support[] = {
649 { 0, "Not supported" },
650 { 1, "Global" },
651 { 2, "Per interface" },
652 { 0, NULL }
655 static const value_string serialXX_flowctl_vals[] = {
656 { 0x00, "No flow control" },
657 { 0x01, "RTS/CTS flow control" },
658 { 0x02, "XON/XOFF flow control" },
659 { 0x03, "Reserved" },
660 { 0, NULL }
663 static const value_string serialXX_bitrate_vals[] = {
664 { 0x06, "9600 bps" },
665 { 0x07, "19.2 kbps" },
666 { 0x08, "38.4 kbps" },
667 { 0x09, "57.6 kbps" },
668 { 0x0A, "115.2 kbps" },
669 { 0, NULL }
672 static const struct true_false_string serial03_connmode_tfs = {
673 "Direct Connect", "Modem Connect"
676 static const value_string serial17_dest_type_vals[] = {
677 { 0x00, "Dial Page" },
678 { 0x01, "TAP Page" },
679 { 0x02, "PPP Alert" },
680 { 0x03, "Basic Mode Callback" },
681 { 0x04, "PPP Mode Callback" },
682 { 0x0e, "OEM 1" },
683 { 0x0f, "OEM 2" },
684 { 0, NULL }
687 static const struct true_false_string serial19_stopbits_tfs = {
688 "2 stop bits", "1 stop bit"
691 static const struct true_false_string serial19_charsize_tfs = {
692 "7-bit", "8-bit"
695 static const value_string serial19_parity_vals[] = {
696 { 0x00, "No" },
697 { 0x01, "Odd" },
698 { 0x02, "Even" },
699 { 0, NULL }
702 static const value_string serial28_confirm_vals[] = {
703 { 0x00, "ACK received after end-of-transaction only" },
704 { 0x01, "Code 211 and ACK received after ETX" },
705 { 0x02, "Code 211 or 213, and ACK received after ETX" },
706 { 0, NULL }
709 static const value_string serial29_op_vals[] = {
710 { 0x00, "Set volatile settings" },
711 { 0x01, "Set non-volatile settings" },
712 { 0x02, "Restore default" },
713 { 0, NULL }
716 static const value_string serial29_delete_vals[] = {
717 { 0x00, "<del>" },
718 { 0x01, "<bksp><sp><bksp>" },
719 { 0, NULL }
722 static const value_string serial29_o_nl_vals[] = {
723 { 0x00, "None" },
724 { 0x01, "<CR><LF>" },
725 { 0x02, "<NUL>" },
726 { 0x03, "<CR>" },
727 { 0x04, "<LF><CR>" },
728 { 0x05, "<LF>" },
729 { 0, NULL }
732 static const value_string serial29_i_nl_vals[] = {
733 { 0x01, "<CR>" },
734 { 0x02, "<NUL>" },
735 { 0, NULL }
738 static const value_string serial30_snoopctl_vals[] = {
739 { 0x00, "BMC uses Transmit ACCM" },
740 { 0x01, "BMC uses Snoop ACCM" },
741 { 0, NULL }
744 static const value_string serial30_negoctl_vals[] = {
745 { 0x00, "On initial connection and mux switch" },
746 { 0x01, "On initial connection" },
747 { 0x02, "Never" },
748 { 0, NULL }
751 static const struct true_false_string serial30_filter_tfs = {
752 "Using Transmit ACCM", "Assuming all control chars escaped"
755 static const value_string serial30_ipaddr_val[] = {
756 { 0x00, "Request IP Address" },
757 { 0x01, "Request Fixed IP Address" },
758 { 0x02, "No Negotiation" },
759 { 0, NULL }
762 static const value_string serialXX_proto_vals[] = {
763 { 0x00, "None" },
764 { 0x01, "CHAP" },
765 { 0x02, "PAP" },
766 { 0x03, "MS-CHAP v1, Windows NT" },
767 { 0x04, "MS-CHAP v1, Lan Manager" },
768 { 0x05, "MS-CHAP v2" },
769 { 0, NULL }
772 static const struct true_false_string tfs_03_suspend = {
773 "Suspend", "Do not suspend"
776 static const struct true_false_string tfs_03_arp_status = {
777 "Occurring", "Suspended"
780 static const struct true_false_string tfs_04_clear = {
781 "Clear", "Do not clear"
784 static const value_string vals_12_mux[] = {
785 { 0x00, "Get present status" },
786 { 0x01, "Request switch to system" },
787 { 0x02, "Request switch to BMC" },
788 { 0x03, "Force switch to system" },
789 { 0x04, "Force switch to BMC" },
790 { 0x05, "Block requests to switch to system" },
791 { 0x06, "Allow requests to switch to system" },
792 { 0x07, "Block requests to switch to BMC" },
793 { 0x08, "Allow requests to switch to BMC" },
794 { 0, NULL }
797 static const struct true_false_string tfs_12_blocked = {
798 "blocked", "allowed"
801 static const struct true_false_string tfs_12_req = {
802 "accepted/forced", "rejected"
805 static const struct true_false_string tfs_12_mux_state = {
806 "BMC", "system"
809 static const value_string vals_18_state[] = {
810 { 0x00, "No session active" },
811 { 0x01, "Session active (mux switched to BMC)" },
812 { 0x02, "Switching mux to system" },
813 { 0, NULL }
816 static int * const lanXX_authtypes_byte[] = { &hf_ipmi_trn_lanXX_oem, &hf_ipmi_trn_lanXX_passwd, &hf_ipmi_trn_lanXX_md5,
817 &hf_ipmi_trn_lanXX_md2, &hf_ipmi_trn_lanXX_none, NULL };
819 static void
820 lan_serial_00(tvbuff_t *tvb, proto_tree *tree)
822 static int * const byte1[] = { &hf_ipmi_trn_lan00_sip, NULL };
824 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL, ett_ipmi_trn_lan00_byte1,
825 byte1, ENC_LITTLE_ENDIAN, 0);
828 static void
829 lan_serial_01(tvbuff_t *tvb, proto_tree *tree)
831 proto_tree_add_bitmask_text(tree, tvb, 0, 1, "Authentication types supported: ",
832 "No authentication types supported for this channel", ett_ipmi_trn_lan01_byte1,
833 lanXX_authtypes_byte, ENC_LITTLE_ENDIAN, 0);
836 static void
837 lan_serial_02(tvbuff_t *tvb, proto_tree *tree)
839 proto_tree_add_bitmask_text(tree, tvb, 0, 1, "Authentication types for Callback level: ",
840 "No authentication types enabled", ett_ipmi_trn_lan02_byte1,
841 lanXX_authtypes_byte, ENC_LITTLE_ENDIAN, 0);
842 proto_tree_add_bitmask_text(tree, tvb, 1, 1, "Authentication types for User level: ",
843 "No authentication types enabled", ett_ipmi_trn_lan02_byte2,
844 lanXX_authtypes_byte, ENC_LITTLE_ENDIAN, 0);
845 proto_tree_add_bitmask_text(tree, tvb, 2, 1, "Authentication types for Operator level: ",
846 "No authentication types enabled", ett_ipmi_trn_lan02_byte3,
847 lanXX_authtypes_byte, ENC_LITTLE_ENDIAN, 0);
848 proto_tree_add_bitmask_text(tree, tvb, 3, 1, "Authentication types for Administrator level: ",
849 "No authentication types enabled", ett_ipmi_trn_lan02_byte4,
850 lanXX_authtypes_byte, ENC_LITTLE_ENDIAN, 0);
851 proto_tree_add_bitmask_text(tree, tvb, 4, 1, "Authentication types for OEM level: ",
852 "No authentication types enabled", ett_ipmi_trn_lan02_byte5,
853 lanXX_authtypes_byte, ENC_LITTLE_ENDIAN, 0);
856 static void
857 lan_03(tvbuff_t *tvb, proto_tree *tree)
859 proto_tree_add_item(tree, hf_ipmi_trn_lan03_ip, tvb, 0, 4, ENC_BIG_ENDIAN);
862 static void
863 lan_04(tvbuff_t *tvb, proto_tree *tree)
865 static int * const byte1[] = { &hf_ipmi_trn_lan04_ipsrc, NULL };
867 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL, ett_ipmi_trn_lan04_byte1,
868 byte1, ENC_LITTLE_ENDIAN, 0);
871 static void
872 lan_05(tvbuff_t *tvb, proto_tree *tree)
874 proto_tree_add_item(tree, hf_ipmi_trn_lan05_ether, tvb, 0, 6, ENC_NA);
877 static void
878 lan_06(tvbuff_t *tvb, proto_tree *tree)
880 proto_tree_add_item(tree, hf_ipmi_trn_lan06_subnet, tvb, 0, 4, ENC_BIG_ENDIAN);
883 static void
884 lan_07(tvbuff_t *tvb, proto_tree *tree)
886 static int * const byte2[] = { &hf_ipmi_trn_lan07_flags, NULL };
887 static int * const byte3[] = { &hf_ipmi_trn_lan07_precedence, &hf_ipmi_trn_lan07_tos, NULL };
889 proto_tree_add_item(tree, hf_ipmi_trn_lan07_ttl, tvb, 0, 1, ENC_LITTLE_ENDIAN);
890 proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL, ett_ipmi_trn_lan07_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
891 proto_tree_add_bitmask_text(tree, tvb, 2, 1, NULL, NULL, ett_ipmi_trn_lan07_byte3, byte3, ENC_LITTLE_ENDIAN, 0);
894 static void
895 lan_08(tvbuff_t *tvb, proto_tree *tree)
897 proto_tree_add_item(tree, hf_ipmi_trn_lan08_rmcp_port, tvb, 0, 2, ENC_LITTLE_ENDIAN);
900 static void
901 lan_09(tvbuff_t *tvb, proto_tree *tree)
903 proto_tree_add_item(tree, hf_ipmi_trn_lan09_rmcp_port, tvb, 0, 2, ENC_LITTLE_ENDIAN);
906 static void
907 lan_10(tvbuff_t *tvb, proto_tree *tree)
909 static int * const byte1[] = { &hf_ipmi_trn_lan10_responses, &hf_ipmi_trn_lan10_gratuitous, NULL };
911 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL, ett_ipmi_trn_lan10_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
914 static void
915 lan_11(tvbuff_t *tvb, proto_tree *tree)
917 proto_tree_add_item(tree, hf_ipmi_trn_lan11_arp_interval, tvb, 0, 1, ENC_LITTLE_ENDIAN);
920 static void
921 lan_12(tvbuff_t *tvb, proto_tree *tree)
923 proto_tree_add_item(tree, hf_ipmi_trn_lan12_def_gw_ip, tvb, 0, 4, ENC_BIG_ENDIAN);
926 static void
927 lan_13(tvbuff_t *tvb, proto_tree *tree)
929 proto_tree_add_item(tree, hf_ipmi_trn_lan13_def_gw_mac, tvb, 0, 6, ENC_NA);
932 static void
933 lan_14(tvbuff_t *tvb, proto_tree *tree)
935 proto_tree_add_item(tree, hf_ipmi_trn_lan14_bkp_gw_ip, tvb, 0, 4, ENC_BIG_ENDIAN);
938 static void
939 lan_15(tvbuff_t *tvb, proto_tree *tree)
941 proto_tree_add_item(tree, hf_ipmi_trn_lan15_bkp_gw_mac, tvb, 0, 6, ENC_NA);
944 static void
945 lan_16(tvbuff_t *tvb, proto_tree *tree)
947 proto_tree_add_item(tree, hf_ipmi_trn_lan16_comm_string, tvb, 0, 18, ENC_ASCII);
950 static void
951 lan_17(tvbuff_t *tvb, proto_tree *tree)
953 static int * const byte1[] = { &hf_ipmi_trn_lan17_num_dst, NULL };
955 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL, ett_ipmi_trn_lan17_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
958 static void
959 lan_18(tvbuff_t *tvb, proto_tree *tree)
961 static int * const byte1[] = { &hf_ipmi_trn_lan18_dst_selector, NULL };
962 static int * const byte2[] = { &hf_ipmi_trn_lan18_ack, &hf_ipmi_trn_lan18_dst_type, NULL };
963 static int * const byte4[] = { &hf_ipmi_trn_lan18_retries, NULL };
965 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL, ett_ipmi_trn_lan18_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
966 proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL, ett_ipmi_trn_lan18_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
967 proto_tree_add_item(tree, hf_ipmi_trn_lan18_tout, tvb, 2, 1, ENC_LITTLE_ENDIAN);
968 proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL, ett_ipmi_trn_lan18_byte4, byte4, ENC_LITTLE_ENDIAN, 0);
971 static void
972 lan_19(tvbuff_t *tvb, proto_tree *tree)
974 static int * const byte1[] = { &hf_ipmi_trn_lan19_dst_selector, NULL };
975 static int * const byte2[] = { &hf_ipmi_trn_lan19_addr_format, NULL };
976 static int * const byte3[] = { &hf_ipmi_trn_lan19_gw_sel, NULL };
977 uint8_t v;
979 v = tvb_get_uint8(tvb, 1) >> 4;
980 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL, ett_ipmi_trn_lan19_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
981 proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL, ett_ipmi_trn_lan19_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
983 if (v == 0) {
984 proto_tree_add_bitmask_text(tree, tvb, 2, 1, NULL, NULL, ett_ipmi_trn_lan19_byte3, byte3, ENC_LITTLE_ENDIAN, 0);
985 proto_tree_add_item(tree, hf_ipmi_trn_lan19_ip, tvb, 3, 4, ENC_BIG_ENDIAN);
986 proto_tree_add_item(tree, hf_ipmi_trn_lan19_mac, tvb, 7, 6, ENC_NA);
987 return;
988 } else if (v == 1) {
989 proto_tree_add_item(tree, hf_ipmi_trn_lanXX_addr, tvb, 2, 16, ENC_NA);
990 return;
993 proto_tree_add_item(tree, hf_ipmi_trn_lan19_address, tvb, 2, -1, ENC_NA);
996 static void
997 lan_20(tvbuff_t *tvb, proto_tree *tree)
999 static int * const byte12[] = { &hf_ipmi_trn_lan20_vlan_id_enable, &hf_ipmi_trn_lan20_vlan_id, NULL };
1001 proto_tree_add_bitmask_text(tree, tvb, 0, 2, NULL, NULL, ett_ipmi_trn_lan20_byte12, byte12, ENC_LITTLE_ENDIAN, 0);
1004 static void
1005 lan_21(tvbuff_t *tvb, proto_tree *tree)
1007 static int * const byte1[] = { &hf_ipmi_trn_lan21_vlan_prio, NULL };
1009 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL, ett_ipmi_trn_lan21_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1012 static void
1013 lan_22(tvbuff_t *tvb, proto_tree *tree)
1015 static int * const byte1[] = { &hf_ipmi_trn_lan22_num_cs_entries, NULL };
1017 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL, ett_ipmi_trn_lan22_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1020 static void
1021 lan_23(tvbuff_t *tvb, proto_tree *tree)
1023 unsigned i;
1024 uint8_t v;
1026 for (i = 0; i < 16; i++) {
1027 v = tvb_get_uint8(tvb, i + 1);
1028 proto_tree_add_uint_format(tree, hf_ipmi_trn_lan23_cs_entry, tvb, i + 1, 1,
1029 v, "Cipher Suite ID entry %c: %u", 'A' + i, v);
1033 static void
1034 lan_24(tvbuff_t *tvb, proto_tree *tree)
1036 static int * const ett[] = { &ett_ipmi_trn_lan24_byte1, &ett_ipmi_trn_lan24_byte2, &ett_ipmi_trn_lan24_byte3,
1037 &ett_ipmi_trn_lan24_byte4, &ett_ipmi_trn_lan24_byte5, &ett_ipmi_trn_lan24_byte6, &ett_ipmi_trn_lan24_byte7,
1038 &ett_ipmi_trn_lan24_byte8 };
1039 proto_tree *s_tree;
1040 unsigned i;
1041 uint8_t v, v1, v2;
1043 for (i = 0; i < 8; i++) {
1044 v = tvb_get_uint8(tvb, i + 1);
1045 v1 = v & 0x0f;
1046 v2 = v >> 4;
1047 s_tree = proto_tree_add_subtree_format(tree, tvb, i + 1, 1,
1048 *ett[i], NULL, "Cipher Suite #%d: %s (0x%02x), Cipher Suite #%d: %s (0x%02x)",
1049 i * 2 + 1, val_to_str_const(v1, lan24_priv_vals, "Reserved"), v1,
1050 i * 2 + 2, val_to_str_const(v2, lan24_priv_vals, "Reserved"), v2);
1051 proto_tree_add_uint_format_value(s_tree, hf_ipmi_trn_lan24_priv1, tvb, i + 1, 1,
1052 v2 << 4, " #%d: %s (0x%02x)", i * 2 + 2, val_to_str_const(v2, lan24_priv_vals, "Reserved"), v2);
1053 proto_tree_add_uint_format_value(s_tree, hf_ipmi_trn_lan24_priv2, tvb, i + 1, 1,
1054 v1, " #%d: %s (0x%02x)", i * 2 + 1, val_to_str_const(v1, lan24_priv_vals, "Reserved"), v1);
1058 static void
1059 lan_25(tvbuff_t *tvb, proto_tree *tree)
1061 static int * const byte1[] = { &hf_ipmi_trn_lan25_dst_selector, NULL };
1062 static int * const byte2[] = { &hf_ipmi_trn_lan25_addr_format, NULL };
1063 static int * const byte34[] = { &hf_ipmi_trn_lan25_uprio, &hf_ipmi_trn_lan25_cfi, &hf_ipmi_trn_lan25_vlan_id, NULL };
1064 uint8_t v;
1066 v = tvb_get_uint8(tvb, 1) >> 4;
1067 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL, ett_ipmi_trn_lan25_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1068 proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL, ett_ipmi_trn_lan25_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
1069 switch (v) {
1070 case 0:
1071 break;
1072 case 1:
1073 proto_tree_add_bitmask_text(tree, tvb, 2, 2, NULL, NULL, ett_ipmi_trn_lan25_byte34,
1074 byte34, ENC_LITTLE_ENDIAN, 0);
1075 break;
1076 default:
1077 proto_tree_add_item(tree, hf_ipmi_trn_lan25_address, tvb, 2, -1, ENC_LITTLE_ENDIAN);
1078 break;
1082 static void
1083 lan_26(tvbuff_t *tvb, proto_tree *tree)
1085 proto_tree_add_item(tree, hf_ipmi_trn_lan26_gen_event, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1086 proto_tree_add_item(tree, hf_ipmi_trn_lan26_thresh_number, tvb, 1, 1, ENC_LITTLE_ENDIAN);
1087 proto_tree_add_item(tree, hf_ipmi_trn_lan26_reset_interval, tvb, 2, 2, ENC_LITTLE_ENDIAN);
1088 proto_tree_add_item(tree, hf_ipmi_trn_lan26_lock_interval, tvb, 4, 2, ENC_LITTLE_ENDIAN);
1091 static void
1092 lan_50(tvbuff_t *tvb, proto_tree *tree)
1094 static int * const byte1[] = { &hf_ipmi_trn_lan50_ipv6_only,
1095 &hf_ipmi_trn_lan50_both_ipv4_ipv6,
1096 &hf_ipmi_trn_lan50_ipv6_alerting, NULL };
1097 proto_tree_add_bitmask_text(tree, tvb, 0, 1, "Data 1", NULL, ett_ipmi_trn_lan50_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1100 static void
1101 lan_51(tvbuff_t *tvb, proto_tree *tree)
1103 proto_tree_add_item(tree, hf_ipmi_trn_lan51_enables, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1106 static void
1107 lan_52(tvbuff_t *tvb, proto_tree *tree)
1109 proto_tree_add_item(tree, hf_ipmi_trn_lan52_traffic_class, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1112 static void
1113 lan_53_78(tvbuff_t *tvb, proto_tree *tree)
1115 proto_tree_add_item(tree, hf_ipmi_trn_lanXX_hop_limit, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1118 static void
1119 lan_54(tvbuff_t *tvb, proto_tree *tree)
1121 proto_tree_add_item(tree, hf_ipmi_trn_lan54_flow_label, tvb, 0, 3, ENC_BIG_ENDIAN);
1124 static void
1125 lan_55(tvbuff_t *tvb, proto_tree *tree)
1127 static int * const byte3[] = { &hf_ipmi_trn_lan55_dhcpv6_support,
1128 &hf_ipmi_trn_lan55_slaac_support, NULL };
1129 proto_tree_add_item(tree, hf_ipmi_trn_lan55_static_addr_max, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1130 proto_tree_add_item(tree, hf_ipmi_trn_lan55_dynamic_addr_max, tvb, 1, 1, ENC_LITTLE_ENDIAN);
1131 proto_tree_add_bitmask_text(tree, tvb, 2, 1, NULL, NULL, ett_ipmi_trn_lan55_byte3, byte3, ENC_LITTLE_ENDIAN, 0);
1134 static void
1135 lan_56(tvbuff_t *tvb, proto_tree *tree)
1137 static int * const byte2[] = { &hf_ipmi_trn_lanXX_addr_type,
1138 &hf_ipmi_trn_lanXX_addr_enable, NULL };
1139 proto_tree_add_item(tree, hf_ipmi_trn_lanXX_addr_selector, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1140 proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL, ett_ipmi_trn_lan56_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
1141 proto_tree_add_item(tree, hf_ipmi_trn_lanXX_addr, tvb, 2, 16, ENC_NA);
1142 proto_tree_add_item(tree, hf_ipmi_trn_lanXX_prefix_len, tvb, 18, 1, ENC_LITTLE_ENDIAN);
1143 if (tvb_captured_length(tvb) > 19) {
1144 proto_tree_add_item(tree, hf_ipmi_trn_lanXX_addr_status, tvb, 19, 1, ENC_LITTLE_ENDIAN);
1148 static void
1149 lan_57_60(tvbuff_t *tvb, proto_tree *tree)
1151 proto_tree_add_item(tree, hf_ipmi_trn_lanXX_max_duid_blocks, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1154 static void
1155 lan_58_61(tvbuff_t *tvb, proto_tree *tree)
1157 proto_tree_add_item(tree, hf_ipmi_trn_lanXX_duid_selector, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1158 proto_tree_add_item(tree, hf_ipmi_trn_lanXX_block_selector, tvb, 1, 1, ENC_LITTLE_ENDIAN);
1159 proto_tree_add_item(tree, hf_ipmi_trn_lanXX_duid, tvb, 2, -1, ENC_NA);
1162 static void
1163 lan_59(tvbuff_t *tvb, proto_tree *tree)
1165 proto_tree_add_item(tree, hf_ipmi_trn_lanXX_addr_selector, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1166 proto_tree_add_item(tree, hf_ipmi_trn_lanXX_addr_type, tvb, 1, 1, ENC_LITTLE_ENDIAN);
1167 proto_tree_add_item(tree, hf_ipmi_trn_lanXX_addr, tvb, 2, 16, ENC_NA);
1168 proto_tree_add_item(tree, hf_ipmi_trn_lanXX_prefix_len, tvb, 18, 1, ENC_LITTLE_ENDIAN);
1169 proto_tree_add_item(tree, hf_ipmi_trn_lanXX_addr_status, tvb, 19, 1, ENC_LITTLE_ENDIAN);
1172 static void
1173 lan_62_79(tvbuff_t *tvb, proto_tree *tree)
1175 proto_tree_add_item(tree, hf_ipmi_trn_lanXX_timing_support, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1178 static void
1179 lan_63(tvbuff_t *tvb, proto_tree *tree)
1181 uint8_t v;
1183 proto_tree_add_item(tree, hf_ipmi_trn_lanXX_iface_selector, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1184 proto_tree_add_item(tree, hf_ipmi_trn_lanXX_block_selector, tvb, 1, 1, ENC_LITTLE_ENDIAN);
1186 v = tvb_get_uint8(tvb, 1);
1187 if (v == 0) {
1188 proto_tree_add_item(tree, hf_ipmi_trn_lan63_sol_max_delay, tvb, 2, 1, ENC_LITTLE_ENDIAN);
1189 proto_tree_add_item(tree, hf_ipmi_trn_lan63_sol_timeout, tvb, 3, 1, ENC_LITTLE_ENDIAN);
1190 proto_tree_add_item(tree, hf_ipmi_trn_lan63_sol_max_rt, tvb, 4, 1, ENC_LITTLE_ENDIAN);
1191 proto_tree_add_item(tree, hf_ipmi_trn_lan63_req_timeout, tvb, 5, 1, ENC_LITTLE_ENDIAN);
1192 proto_tree_add_item(tree, hf_ipmi_trn_lan63_req_max_rt, tvb, 6, 1, ENC_LITTLE_ENDIAN);
1193 proto_tree_add_item(tree, hf_ipmi_trn_lan63_req_max_rc, tvb, 7, 1, ENC_LITTLE_ENDIAN);
1194 proto_tree_add_item(tree, hf_ipmi_trn_lan63_cnf_max_delay, tvb, 8, 1, ENC_LITTLE_ENDIAN);
1195 proto_tree_add_item(tree, hf_ipmi_trn_lan63_cnf_timeout, tvb, 9, 1, ENC_LITTLE_ENDIAN);
1196 proto_tree_add_item(tree, hf_ipmi_trn_lan63_cnf_max_rt, tvb, 10, 1, ENC_LITTLE_ENDIAN);
1197 proto_tree_add_item(tree, hf_ipmi_trn_lan63_cnf_max_rd, tvb, 11, 1, ENC_LITTLE_ENDIAN);
1198 proto_tree_add_item(tree, hf_ipmi_trn_lan63_ren_timeout, tvb, 12, 1, ENC_LITTLE_ENDIAN);
1199 proto_tree_add_item(tree, hf_ipmi_trn_lan63_ren_max_rt, tvb, 13, 1, ENC_LITTLE_ENDIAN);
1200 proto_tree_add_item(tree, hf_ipmi_trn_lan63_reb_timeout, tvb, 14, 1, ENC_LITTLE_ENDIAN);
1201 proto_tree_add_item(tree, hf_ipmi_trn_lan63_reb_max_rt, tvb, 15, 1, ENC_LITTLE_ENDIAN);
1202 proto_tree_add_item(tree, hf_ipmi_trn_lan63_inf_max_delay, tvb, 16, 1, ENC_LITTLE_ENDIAN);
1203 proto_tree_add_item(tree, hf_ipmi_trn_lan63_inf_timeout, tvb, 17, 1, ENC_LITTLE_ENDIAN);
1204 } else if (v == 1) {
1205 proto_tree_add_item(tree, hf_ipmi_trn_lan63_inf_max_rt, tvb, 2, 1, ENC_LITTLE_ENDIAN);
1206 proto_tree_add_item(tree, hf_ipmi_trn_lan63_rel_timeout, tvb, 3, 1, ENC_LITTLE_ENDIAN);
1207 proto_tree_add_item(tree, hf_ipmi_trn_lan63_rel_max_rc, tvb, 4, 1, ENC_LITTLE_ENDIAN);
1208 proto_tree_add_item(tree, hf_ipmi_trn_lan63_dec_timeout, tvb, 5, 1, ENC_LITTLE_ENDIAN);
1209 proto_tree_add_item(tree, hf_ipmi_trn_lan63_dec_max_rc, tvb, 6, 1, ENC_LITTLE_ENDIAN);
1210 proto_tree_add_item(tree, hf_ipmi_trn_lan63_hop_count_limit, tvb, 7, 1, ENC_LITTLE_ENDIAN);
1211 proto_tree_add_item(tree, hf_ipmi_trn_01_param_data, tvb, 8, -1, ENC_NA);
1212 } else {
1213 proto_tree_add_item(tree, hf_ipmi_trn_01_param_data, tvb, 2, -1, ENC_NA);
1217 static void
1218 lan_64(tvbuff_t *tvb, proto_tree *tree)
1220 static int * const byte1[] = { &hf_ipmi_trn_lan64_static_cfg,
1221 &hf_ipmi_trn_lan64_dynamic_cfg, NULL };
1222 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL, ett_ipmi_trn_lan64_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1225 static void
1226 lan_65_69(tvbuff_t *tvb, proto_tree *tree)
1228 proto_tree_add_item(tree, hf_ipmi_trn_lanXX_addr, tvb, 0, 16, ENC_NA);
1231 static void
1232 lan_66_70(tvbuff_t *tvb, proto_tree *tree)
1234 proto_tree_add_item(tree, hf_ipmi_trn_lanXX_router_mac, tvb, 0, 6, ENC_NA);
1237 static void
1238 lan_67_71(tvbuff_t *tvb, proto_tree *tree)
1240 proto_tree_add_item(tree, hf_ipmi_trn_lanXX_prefix_len, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1243 static void
1244 lan_68_72(tvbuff_t *tvb, proto_tree *tree)
1246 proto_tree_add_item(tree, hf_ipmi_trn_lanXX_router_prefix, tvb, 0, 16, ENC_NA);
1249 static void
1250 lan_73(tvbuff_t *tvb, proto_tree *tree)
1252 proto_tree_add_item(tree, hf_ipmi_trn_lan73_num_dynamic_sets, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1255 static void
1256 lan_74(tvbuff_t *tvb, proto_tree *tree)
1258 proto_tree_add_item(tree, hf_ipmi_trn_lanXX_router_selector, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1259 proto_tree_add_item(tree, hf_ipmi_trn_lanXX_addr, tvb, 1, 16, ENC_NA);
1262 static void
1263 lan_75(tvbuff_t *tvb, proto_tree *tree)
1265 proto_tree_add_item(tree, hf_ipmi_trn_lanXX_router_selector, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1266 proto_tree_add_item(tree, hf_ipmi_trn_lanXX_router_mac, tvb, 1, 6, ENC_NA);
1269 static void
1270 lan_76(tvbuff_t *tvb, proto_tree *tree)
1272 proto_tree_add_item(tree, hf_ipmi_trn_lanXX_router_selector, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1273 proto_tree_add_item(tree, hf_ipmi_trn_lanXX_prefix_len, tvb, 1, 1, ENC_LITTLE_ENDIAN);
1276 static void
1277 lan_77(tvbuff_t *tvb, proto_tree *tree)
1279 proto_tree_add_item(tree, hf_ipmi_trn_lanXX_router_selector, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1280 proto_tree_add_item(tree, hf_ipmi_trn_lanXX_router_prefix, tvb, 1, 16, ENC_NA);
1283 static void
1284 lan_80(tvbuff_t *tvb, proto_tree *tree)
1286 uint8_t v;
1288 proto_tree_add_item(tree, hf_ipmi_trn_lanXX_iface_selector, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1289 proto_tree_add_item(tree, hf_ipmi_trn_lanXX_block_selector, tvb, 1, 1, ENC_LITTLE_ENDIAN);
1291 v = tvb_get_uint8(tvb, 1);
1292 if (v == 0) {
1293 proto_tree_add_item(tree, hf_ipmi_trn_lan80_max_rtr_solicitation_delay, tvb, 2, 1, ENC_LITTLE_ENDIAN);
1294 proto_tree_add_item(tree, hf_ipmi_trn_lan80_rtr_solicitation_interval, tvb, 3, 1, ENC_LITTLE_ENDIAN);
1295 proto_tree_add_item(tree, hf_ipmi_trn_lan80_max_rtr_solicitations, tvb, 4, 1, ENC_LITTLE_ENDIAN);
1296 proto_tree_add_item(tree, hf_ipmi_trn_lan80_dup_addr_detect_transmits, tvb, 5, 1, ENC_LITTLE_ENDIAN);
1297 proto_tree_add_item(tree, hf_ipmi_trn_lan80_max_multicast_solicit, tvb, 6, 1, ENC_LITTLE_ENDIAN);
1298 proto_tree_add_item(tree, hf_ipmi_trn_lan80_max_unicast_solicit, tvb, 7, 1, ENC_LITTLE_ENDIAN);
1299 proto_tree_add_item(tree, hf_ipmi_trn_lan80_max_anycast_delay_time, tvb, 8, 1, ENC_LITTLE_ENDIAN);
1300 proto_tree_add_item(tree, hf_ipmi_trn_lan80_max_neighbor_advertisement, tvb, 9, 1, ENC_LITTLE_ENDIAN);
1301 proto_tree_add_item(tree, hf_ipmi_trn_lan80_reachable_time, tvb, 10, 1, ENC_LITTLE_ENDIAN);
1302 proto_tree_add_item(tree, hf_ipmi_trn_lan80_retrans_timer, tvb, 11, 1, ENC_LITTLE_ENDIAN);
1303 proto_tree_add_item(tree, hf_ipmi_trn_lan80_delay_first_probe_time, tvb, 12, 1, ENC_LITTLE_ENDIAN);
1304 proto_tree_add_item(tree, hf_ipmi_trn_lan80_max_random_factor, tvb, 13, 1, ENC_LITTLE_ENDIAN);
1305 proto_tree_add_item(tree, hf_ipmi_trn_lan80_min_random_factor, tvb, 14, 1, ENC_LITTLE_ENDIAN);
1306 proto_tree_add_item(tree, hf_ipmi_trn_01_param_data, tvb, 15, -1, ENC_NA);
1307 } else {
1308 proto_tree_add_item(tree, hf_ipmi_trn_01_param_data, tvb, 2, -1, ENC_NA);
1312 static struct {
1313 void (*intrp)(tvbuff_t *tvb, proto_tree *tree);
1314 const char *name;
1315 } lan_options[] = {
1316 { lan_serial_00, "Set In Progress" },
1317 { lan_serial_01, "Authentication Type Support" },
1318 { lan_serial_02, "Authentication Type Enables" },
1319 { lan_03, "IP Address" },
1320 { lan_04, "IP Address Source" },
1321 { lan_05, "MAC Address" },
1322 { lan_06, "Subnet Mask" },
1323 { lan_07, "IPv4 Header Parameters" },
1324 { lan_08, "Primary RMCP Port Number" },
1325 { lan_09, "Secondary RMCP Port Number" },
1326 { lan_10, "BMC-generated ARP Control" },
1327 { lan_11, "Gratuitous ARP Interval" },
1328 { lan_12, "Default Gateway Address" },
1329 { lan_13, "Default Gateway MAC Address" },
1330 { lan_14, "Backup Gateway Address" },
1331 { lan_15, "Backup Gateway MAC Address" },
1332 { lan_16, "Community String" },
1333 { lan_17, "Number of Destinations" },
1334 { lan_18, "Destination Type" },
1335 { lan_19, "Destination Addresses" },
1336 { lan_20, "VLAN ID (802.1q)" },
1337 { lan_21, "VLAN Priority (802.1q)" },
1338 { lan_22, "Cipher Suite Entry Support (RMCP+)" },
1339 { lan_23, "Cipher Suite Entries (RMCP+)" },
1340 { lan_24, "Cipher Suite Privilege Levels (RMCP+)" },
1341 { lan_25, "Destination Address VLAN TAGs" },
1342 { lan_26, "Bad Password Threshold" },
1343 { NULL, "Reserved" },
1344 { NULL, "Reserved" },
1345 { NULL, "Reserved" },
1346 { NULL, "Reserved" },
1347 { NULL, "Reserved" },
1348 { NULL, "Reserved" },
1349 { NULL, "Reserved" },
1350 { NULL, "Reserved" },
1351 { NULL, "Reserved" },
1352 { NULL, "Reserved" },
1353 { NULL, "Reserved" },
1354 { NULL, "Reserved" },
1355 { NULL, "Reserved" },
1356 { NULL, "Reserved" },
1357 { NULL, "Reserved" },
1358 { NULL, "Reserved" },
1359 { NULL, "Reserved" },
1360 { NULL, "Reserved" },
1361 { NULL, "Reserved" },
1362 { NULL, "Reserved" },
1363 { NULL, "Reserved" },
1364 { NULL, "Reserved" },
1365 { NULL, "Reserved" },
1366 { lan_50, "IPv6/IPv4 Support" },
1367 { lan_51, "IPv6/IPv4 Addressing enables" },
1368 { lan_52, "IPv6 Header Static Traffic Class" },
1369 { lan_53_78, "IPv6 Header Static Hop Limit" },
1370 { lan_54, "IPv6 Header Flow Label" },
1371 { lan_55, "IPv6 Status" },
1372 { lan_56, "IPv6 Static Addresses" },
1373 { lan_57_60, "IPv6 DHCPv6 Static DUID storage length" },
1374 { lan_58_61, "IPv6 DHCPv6 Static DUIDs" },
1375 { lan_59, "IPv6 Dynamic Addresses" },
1376 { lan_57_60, "IPv6 DHCPv6 Dynamic DUID storage length" },
1377 { lan_58_61, "IPv6 DHCPv6 Dynamic DUIDs" },
1378 { lan_62_79, "IPv6 DHCPv6 Timing Configuration Support" },
1379 { lan_63, "IPv6 DHCPv6 Timing Configuration" },
1380 { lan_64, "IPv6 Router Address Configuration Control" },
1381 { lan_65_69, "IPv6 Static Router 1 IP Address" },
1382 { lan_66_70, "IPv6 Static Router 1 MAC Address" },
1383 { lan_67_71, "IPv6 Static Router 1 Prefix Length" },
1384 { lan_68_72, "IPv6 Static Router 1 Prefix Value" },
1385 { lan_65_69, "IPv6 Static Router 2 IP Address" },
1386 { lan_66_70, "IPv6 Static Router 2 MAC Address" },
1387 { lan_67_71, "IPv6 Static Router 2 Prefix Length" },
1388 { lan_68_72, "IPv6 Static Router 2 Prefix Value" },
1389 { lan_73, "Number of Dynamic Router Info Sets" },
1390 { lan_74, "IPv6 Dynamic Router Info IP Address" },
1391 { lan_75, "IPv6 Dynamic Router Info MAC Address" },
1392 { lan_76, "IPv6 Dynamic Router Info Prefix Length" },
1393 { lan_77, "IPv6 Dynamic Router Info Prefix Value" },
1394 { lan_53_78, "IPv6 Dynamic Router Received Hop Limit" },
1395 { lan_62_79, "IPv6 NDISC/SLAAC Timing Configuration Support" },
1396 { lan_80, "IPv6 NDISC/SLAAC Timing Configuration" },
1399 /* Set LAN Configuration Parameters
1401 static void
1402 rq01(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
1404 static int * const byte1[] = { &hf_ipmi_trn_01_chan, NULL };
1405 tvbuff_t *next;
1406 const char *desc;
1407 uint8_t pno;
1409 pno = tvb_get_uint8(tvb, 1);
1410 if (pno < array_length(lan_options)) {
1411 desc = lan_options[pno].name;
1412 } else if (pno >= 0xC0) {
1413 desc = "OEM";
1414 } else {
1415 desc = "Reserved";
1418 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL, ett_ipmi_trn_01_byte1,
1419 byte1, ENC_LITTLE_ENDIAN, 0);
1420 proto_tree_add_uint_format_value(tree, hf_ipmi_trn_01_param, tvb, 1, 1,
1421 pno, "%s (0x%02x)", desc, pno);
1422 if (pno < array_length(lan_options) && lan_options[pno].intrp) {
1423 next = tvb_new_subset_remaining(tvb, 2);
1424 lan_options[pno].intrp(next, tree);
1425 } else {
1426 proto_tree_add_item(tree, hf_ipmi_trn_01_param_data, tvb, 2, -1, ENC_NA);
1430 static const value_string cc01[] = {
1431 { 0x80, "Parameter not supported" },
1432 { 0x81, "Attempt to set the 'set in progress' value (in parameter #0) when not in the 'set complete' state" },
1433 { 0x82, "Attempt to write read-only parameter" },
1434 { 0, NULL }
1437 /* Get LAN Configuration Parameters
1439 static void
1440 rq02(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
1442 static int * const byte1[] = { &hf_ipmi_trn_02_getrev, &hf_ipmi_trn_02_chan, NULL };
1443 const char *desc;
1444 uint8_t pno;
1446 pno = tvb_get_uint8(tvb, 1);
1448 ipmi_set_data(pinfo, 0, pno);
1449 ipmi_set_data(pinfo, 1, tvb_get_uint8(tvb, 0) & 0x80);
1451 if (!tree) {
1452 return;
1455 if (pno < array_length(lan_options)) {
1456 desc = lan_options[pno].name;
1457 } else if (pno >= 0xC0) {
1458 desc = "OEM";
1459 } else {
1460 desc = "Reserved";
1463 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1464 ett_ipmi_trn_02_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1465 proto_tree_add_uint_format_value(tree, hf_ipmi_trn_02_param, tvb, 1, 1,
1466 pno, "%s (0x%02x)", desc, pno);
1467 proto_tree_add_item(tree, hf_ipmi_trn_02_set, tvb, 2, 1, ENC_LITTLE_ENDIAN);
1468 proto_tree_add_item(tree, hf_ipmi_trn_02_block, tvb, 3, 1, ENC_LITTLE_ENDIAN);
1471 static void
1472 rs02(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
1474 static int * const byte1[] = { &hf_ipmi_trn_02_rev_present, &hf_ipmi_trn_02_rev_compat, NULL };
1475 proto_item *ti;
1476 proto_tree *subtree;
1477 tvbuff_t *next;
1478 const char *desc;
1479 uint32_t pno, req;
1481 ti = proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1482 ett_ipmi_trn_02_rev, byte1, ENC_LITTLE_ENDIAN, 0);
1484 if (!ipmi_get_data(pinfo, 0, &pno) || !ipmi_get_data(pinfo, 1, &req)) {
1485 /* No request found - cannot parse further */
1486 if (tvb_captured_length(tvb) > 1) {
1487 proto_tree_add_item(tree, hf_ipmi_trn_02_param_data, tvb, 1, -1, ENC_NA);
1489 return;
1492 if ((req & 0x80) && tvb_captured_length(tvb) > 1) {
1493 expert_add_info(pinfo, ti, &ei_ipmi_trn_02_request_param_rev);
1494 } else if (!(req & 0x80) && tvb_captured_length(tvb) == 1) {
1495 expert_add_info(pinfo, ti, &ei_ipmi_trn_02_request_param_data);
1498 if (pno < array_length(lan_options)) {
1499 desc = lan_options[pno].name;
1500 } else if (pno >= 0xC0) {
1501 desc = "OEM";
1502 } else {
1503 desc = "Reserved";
1506 subtree = proto_tree_add_subtree_format(tree, tvb, 0, 0, ett_ipmi_trn_parameter, NULL, "Parameter: %s", desc);
1508 if (tvb_captured_length(tvb) > 1) {
1509 if (pno < array_length(lan_options) && lan_options[pno].intrp) {
1510 next = tvb_new_subset_remaining(tvb, 1);
1511 lan_options[pno].intrp(next, subtree);
1512 } else {
1513 proto_tree_add_item(subtree, hf_ipmi_trn_02_param_data, tvb, 1, -1, ENC_NA);
1518 static const value_string cc02[] = {
1519 { 0x80, "Parameter not supported" },
1520 { 0x83, "Attempt to read write-only parameter" },
1521 { 0, NULL }
1524 static void
1525 rq03(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
1527 static int * const byte1[] = { &hf_ipmi_trn_03_chan, NULL };
1528 static int * const byte2[] = { &hf_ipmi_trn_03_arp_resp, &hf_ipmi_trn_03_gratuitous_arp, NULL };
1530 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1531 ett_ipmi_trn_03_rq_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1532 proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL,
1533 ett_ipmi_trn_03_rq_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
1536 static void
1537 rs03(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
1539 static int * const byte1[] = { &hf_ipmi_trn_03_status_arp_resp,
1540 &hf_ipmi_trn_03_status_gratuitous_arp, NULL };
1542 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1543 ett_ipmi_trn_03_rs_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1546 static void
1547 rq04(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
1549 static int * const byte1[] = { &hf_ipmi_trn_04_chan, NULL };
1550 static int * const byte2[] = { &hf_ipmi_trn_04_clear, NULL };
1552 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1553 ett_ipmi_trn_04_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1554 proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL,
1555 ett_ipmi_trn_04_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
1558 static void
1559 rs04(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
1561 proto_tree_add_item(tree, hf_ipmi_trn_04_rx_ippkts, tvb, 0, 2, ENC_LITTLE_ENDIAN);
1562 proto_tree_add_item(tree, hf_ipmi_trn_04_rx_iphdr_err, tvb, 2, 2, ENC_LITTLE_ENDIAN);
1563 proto_tree_add_item(tree, hf_ipmi_trn_04_rx_ipaddr_err, tvb, 4, 2, ENC_LITTLE_ENDIAN);
1564 proto_tree_add_item(tree, hf_ipmi_trn_04_rx_ippkts_frag, tvb, 6, 2, ENC_LITTLE_ENDIAN);
1565 proto_tree_add_item(tree, hf_ipmi_trn_04_tx_ippkts, tvb, 8, 2, ENC_LITTLE_ENDIAN);
1566 proto_tree_add_item(tree, hf_ipmi_trn_04_rx_udppkts, tvb, 10, 2, ENC_LITTLE_ENDIAN);
1567 proto_tree_add_item(tree, hf_ipmi_trn_04_rx_validrmcp, tvb, 12, 2, ENC_LITTLE_ENDIAN);
1568 proto_tree_add_item(tree, hf_ipmi_trn_04_rx_udpproxy, tvb, 14, 2, ENC_LITTLE_ENDIAN);
1569 proto_tree_add_item(tree, hf_ipmi_trn_04_dr_udpproxy, tvb, 16, 2, ENC_LITTLE_ENDIAN);
1572 static void
1573 serial_03(tvbuff_t *tvb, proto_tree *tree)
1575 static int * const byte1[] = { &hf_ipmi_trn_serial03_connmode, &hf_ipmi_trn_serial03_terminal,
1576 &hf_ipmi_trn_serial03_ppp, &hf_ipmi_trn_serial03_basic, NULL };
1578 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1579 ett_ipmi_trn_serial03_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1582 static void
1583 serial04_timeout_fmt(char *s, uint32_t v)
1585 if (v) {
1586 snprintf(s, ITEM_LABEL_LENGTH, "%d sec", 30 * v);
1588 else {
1589 snprintf(s, ITEM_LABEL_LENGTH, "Does not timeout");
1593 static void
1594 serial_04(tvbuff_t *tvb, proto_tree *tree)
1596 static int * const byte1[] = { &hf_ipmi_trn_serial04_timeout, NULL };
1598 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1599 ett_ipmi_trn_serial04_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1602 static void
1603 serial_05(tvbuff_t *tvb, proto_tree *tree)
1605 static int * const byte1[] = { &hf_ipmi_trn_serial05_cbcp_callback,
1606 &hf_ipmi_trn_serial05_ipmi_callback, NULL };
1607 static int * const byte2[] = { &hf_ipmi_trn_serial05_cb_list, &hf_ipmi_trn_serial05_cb_user,
1608 &hf_ipmi_trn_serial05_cb_prespec, &hf_ipmi_trn_serial05_no_cb, NULL };
1610 proto_tree_add_bitmask_text(tree, tvb, 0, 1, "Callback capabilities: ", "None",
1611 ett_ipmi_trn_serial05_byte1, byte1, ENC_LITTLE_ENDIAN, BMT_NO_TFS);
1612 proto_tree_add_bitmask_text(tree, tvb, 1, 1, "CBCP negotiation options: ", "None",
1613 ett_ipmi_trn_serial05_byte2, byte2, ENC_LITTLE_ENDIAN, BMT_NO_TFS);
1614 proto_tree_add_item(tree, hf_ipmi_trn_serial05_cb_dest1, tvb, 2, 1, ENC_LITTLE_ENDIAN);
1615 proto_tree_add_item(tree, hf_ipmi_trn_serial05_cb_dest2, tvb, 3, 1, ENC_LITTLE_ENDIAN);
1616 proto_tree_add_item(tree, hf_ipmi_trn_serial05_cb_dest3, tvb, 4, 1, ENC_LITTLE_ENDIAN);
1619 static void
1620 serial_06(tvbuff_t *tvb, proto_tree *tree)
1622 static int * const byte1[] = { &hf_ipmi_trn_serial06_inactivity,
1623 &hf_ipmi_trn_serial06_dcd, NULL };
1625 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1626 ett_ipmi_trn_serial06_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1629 static void
1630 serial_07(tvbuff_t *tvb, proto_tree *tree)
1632 static int * const byte1[] = { &hf_ipmi_trn_serial07_flowctl, &hf_ipmi_trn_serial07_dtrhangup, NULL };
1633 static int * const byte2[] = { &hf_ipmi_trn_serial07_bitrate, NULL };
1635 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1636 ett_ipmi_trn_serial07_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1637 proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL,
1638 ett_ipmi_trn_serial07_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
1641 static void
1642 serial_08(tvbuff_t *tvb, proto_tree *tree)
1644 static int * const byte1[] = { &hf_ipmi_trn_serial08_esc_powerup,
1645 &hf_ipmi_trn_serial08_esc_reset, &hf_ipmi_trn_serial08_switch_authcap,
1646 &hf_ipmi_trn_serial08_switch_rmcp, &hf_ipmi_trn_serial08_esc_switch1,
1647 &hf_ipmi_trn_serial08_esc_switch2, &hf_ipmi_trn_serial08_switch_dcdloss, NULL };
1648 static int * const byte2[] = { &hf_ipmi_trn_serial08_sharing,
1649 &hf_ipmi_trn_serial08_ping_callback, &hf_ipmi_trn_serial08_ping_direct,
1650 &hf_ipmi_trn_serial08_ping_retry, NULL };
1652 proto_tree_add_bitmask_text(tree, tvb, 0, 1, "Switch/escape settings", NULL,
1653 ett_ipmi_trn_serial08_byte1, byte1, ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
1654 proto_tree_add_bitmask_text(tree, tvb, 1, 1, "Sharing/ping settings", NULL,
1655 ett_ipmi_trn_serial08_byte2, byte2, ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
1658 static void
1659 serial_09(tvbuff_t *tvb, proto_tree *tree)
1661 static int * const byte1[] = { &hf_ipmi_trn_serial09_ring_duration, NULL };
1662 static int * const byte2[] = { &hf_ipmi_trn_serial09_ring_dead, NULL };
1664 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1665 ett_ipmi_trn_serial09_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1666 proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL,
1667 ett_ipmi_trn_serial09_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
1670 static void
1671 serial_10(tvbuff_t *tvb, proto_tree *tree)
1673 proto_tree_add_item(tree, hf_ipmi_trn_serial10_set_sel, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1674 proto_tree_add_item(tree, hf_ipmi_trn_serial10_init_str, tvb, 1, -1, ENC_ASCII);
1677 static void
1678 serial_11(tvbuff_t *tvb, proto_tree *tree)
1680 proto_tree_add_item(tree, hf_ipmi_trn_serial11_esc_seq, tvb, 0, 5, ENC_ASCII);
1683 static void
1684 serial_12(tvbuff_t *tvb, proto_tree *tree)
1686 proto_tree_add_item(tree, hf_ipmi_trn_serial12_hangup_seq, tvb, 0, 8, ENC_ASCII);
1689 static void
1690 serial_13(tvbuff_t *tvb, proto_tree *tree)
1692 proto_tree_add_item(tree, hf_ipmi_trn_serial13_dial_cmd, tvb, 0, 8, ENC_ASCII);
1695 static void
1696 serial_14(tvbuff_t *tvb, proto_tree *tree)
1698 proto_tree_add_item(tree, hf_ipmi_trn_serial14_page_blackout, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1701 static void
1702 serial_15(tvbuff_t *tvb, proto_tree *tree)
1704 proto_tree_add_item(tree, hf_ipmi_trn_serial15_comm_string, tvb, 0, 18, ENC_ASCII);
1707 static void
1708 serial_16(tvbuff_t *tvb, proto_tree *tree)
1710 static int * const byte1[] = { &hf_ipmi_trn_serial16_ndest, NULL };
1712 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1713 ett_ipmi_trn_serial16_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1716 static void
1717 serial_17(tvbuff_t *tvb, proto_tree *tree)
1719 static int * const byte1[] = { &hf_ipmi_trn_serial17_dest_sel, NULL };
1720 static int * const byte2[] = { &hf_ipmi_trn_serial17_ack, &hf_ipmi_trn_serial17_dest_type, NULL };
1721 static int * const byte4[] = { &hf_ipmi_trn_serial17_alert_retries, &hf_ipmi_trn_serial17_call_retries, NULL };
1722 int * byte5[3] = { NULL, NULL, NULL };
1723 uint8_t v;
1725 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1726 ett_ipmi_trn_serial17_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1727 proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL,
1728 ett_ipmi_trn_serial17_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
1729 proto_tree_add_item(tree, hf_ipmi_trn_serial17_alert_ack_timeout, tvb, 2, 1, ENC_LITTLE_ENDIAN);
1730 proto_tree_add_bitmask_text(tree, tvb, 3, 1, NULL, NULL,
1731 ett_ipmi_trn_serial17_byte4, byte4, ENC_LITTLE_ENDIAN, 0);
1733 v = tvb_get_uint8(tvb, 1) & 0x0f;
1734 switch (v) {
1735 case 0: /* Dial Page */
1736 case 3: /* Basic Mode Callback */
1737 byte5[0] = &hf_ipmi_trn_serial17_dialstr_sel;
1738 break;
1739 case 1: /* TAP Page */
1740 byte5[0] = &hf_ipmi_trn_serial17_tap_sel;
1741 break;
1742 case 2: /* PPP Alert */
1743 case 4: /* PPP Callback */
1744 byte5[0] = &hf_ipmi_trn_serial17_ipaddr_sel;
1745 byte5[1] = &hf_ipmi_trn_serial17_ppp_sel;
1746 break;
1747 default:
1748 proto_tree_add_item(tree, hf_ipmi_trn_serial17_unknown, tvb, 4, 1, ENC_LITTLE_ENDIAN);
1749 return;
1751 proto_tree_add_bitmask_text(tree, tvb, 4, 1, NULL, NULL,
1752 ett_ipmi_trn_serial17_byte5, byte5, ENC_LITTLE_ENDIAN, 0);
1755 static void
1756 serial_18(tvbuff_t *tvb, proto_tree *tree)
1758 proto_tree_add_item(tree, hf_ipmi_trn_serial18_call_retry, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1761 static void
1762 serial_19(tvbuff_t *tvb, proto_tree *tree)
1764 static int * const byte1[] = { &hf_ipmi_trn_serial19_destsel, NULL };
1765 static int * const byte2[] = { &hf_ipmi_trn_serial19_flowctl, &hf_ipmi_trn_serial19_dtrhangup,
1766 &hf_ipmi_trn_serial19_stopbits, &hf_ipmi_trn_serial19_charsize, &hf_ipmi_trn_serial19_parity, NULL };
1767 static int * const byte3[] = { &hf_ipmi_trn_serial19_bitrate, NULL };
1769 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1770 ett_ipmi_trn_serial19_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1771 proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL,
1772 ett_ipmi_trn_serial19_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
1773 proto_tree_add_bitmask_text(tree, tvb, 2, 1, NULL, NULL,
1774 ett_ipmi_trn_serial19_byte3, byte3, ENC_LITTLE_ENDIAN, 0);
1777 static void
1778 serial_20(tvbuff_t *tvb, proto_tree *tree)
1780 static int * const byte1[] = { &hf_ipmi_trn_serial20_num_dial_strings, NULL };
1782 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1783 ett_ipmi_trn_serial20_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1786 static void
1787 serial_21(tvbuff_t *tvb, proto_tree *tree)
1789 static int * const byte1[] = { &hf_ipmi_trn_serial21_dialsel, NULL };
1791 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1792 ett_ipmi_trn_serial21_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1793 proto_tree_add_item(tree, hf_ipmi_trn_serial21_blockno, tvb, 1, 1, ENC_LITTLE_ENDIAN);
1794 proto_tree_add_item(tree, hf_ipmi_trn_serial21_dialstr, tvb, 2, 1, ENC_ASCII);
1797 static void
1798 serial_22(tvbuff_t *tvb, proto_tree *tree)
1800 static int * const byte1[] = { &hf_ipmi_trn_serial22_num_ipaddrs, NULL };
1802 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1803 ett_ipmi_trn_serial22_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1806 static void
1807 serial_23(tvbuff_t *tvb, proto_tree *tree)
1809 static int * const byte1[] = { &hf_ipmi_trn_serial23_destsel, NULL };
1811 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1812 ett_ipmi_trn_serial23_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1813 proto_tree_add_item(tree, hf_ipmi_trn_serial23_ipaddr, tvb, 1, 4, ENC_BIG_ENDIAN);
1816 static void
1817 serial_24(tvbuff_t *tvb, proto_tree *tree)
1819 static int * const byte1[] = { &hf_ipmi_trn_serial24_num_tap_accounts, NULL };
1821 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1822 ett_ipmi_trn_serial24_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1825 static void
1826 serial_25(tvbuff_t *tvb, proto_tree *tree)
1828 static int * const byte2[] = { &hf_ipmi_trn_serial25_dialstr_sel, &hf_ipmi_trn_serial25_tapsrv_sel, NULL };
1830 proto_tree_add_item(tree, hf_ipmi_trn_serial25_tap_acct, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1831 proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL,
1832 ett_ipmi_trn_serial25_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
1835 static void
1836 serial_26(tvbuff_t *tvb, proto_tree *tree)
1838 proto_tree_add_item(tree, hf_ipmi_trn_serial26_tap_acct, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1839 proto_tree_add_item(tree, hf_ipmi_trn_serial26_tap_passwd, tvb, 1, 6, ENC_ASCII);
1842 static void
1843 serial_27(tvbuff_t *tvb, proto_tree *tree)
1845 proto_tree_add_item(tree, hf_ipmi_trn_serial27_tap_acct, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1846 proto_tree_add_item(tree, hf_ipmi_trn_serial27_tap_pager_id, tvb, 1, 16, ENC_ASCII);
1849 static void
1850 serial_28(tvbuff_t *tvb, proto_tree *tree)
1852 static int * const byte1[] = { &hf_ipmi_trn_serial28_tapsrv_sel, NULL };
1853 static int * const byte2[] = { &hf_ipmi_trn_serial28_confirm, NULL };
1854 static int * const byte10[] = { &hf_ipmi_trn_serial28_t2, &hf_ipmi_trn_serial28_t1, NULL };
1855 static int * const byte11[] = { &hf_ipmi_trn_serial28_t4, &hf_ipmi_trn_serial28_t3, NULL };
1856 static int * const byte12[] = { &hf_ipmi_trn_serial28_t6, &hf_ipmi_trn_serial28_t5, NULL };
1857 static int * const byte13[] = { &hf_ipmi_trn_serial28_n2, &hf_ipmi_trn_serial28_n1, NULL };
1858 static int * const byte14[] = { &hf_ipmi_trn_serial28_n4, &hf_ipmi_trn_serial28_n3, NULL };
1860 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1861 ett_ipmi_trn_serial28_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1862 proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL,
1863 ett_ipmi_trn_serial28_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
1864 proto_tree_add_item(tree, hf_ipmi_trn_serial28_srvtype, tvb, 2, 3, ENC_ASCII);
1865 proto_tree_add_item(tree, hf_ipmi_trn_serial28_ctrl_esc, tvb, 5, 4, ENC_LITTLE_ENDIAN);
1866 proto_tree_add_bitmask_text(tree, tvb, 9, 1, NULL, NULL,
1867 ett_ipmi_trn_serial28_byte10, byte10, ENC_LITTLE_ENDIAN, 0);
1868 proto_tree_add_bitmask_text(tree, tvb, 10, 1, NULL, NULL,
1869 ett_ipmi_trn_serial28_byte11, byte11, ENC_LITTLE_ENDIAN, 0);
1870 proto_tree_add_bitmask_text(tree, tvb, 11, 1, NULL, NULL,
1871 ett_ipmi_trn_serial28_byte12, byte12, ENC_LITTLE_ENDIAN, 0);
1872 proto_tree_add_bitmask_text(tree, tvb, 12, 1, NULL, NULL,
1873 ett_ipmi_trn_serial28_byte13, byte13, ENC_LITTLE_ENDIAN, 0);
1874 proto_tree_add_bitmask_text(tree, tvb, 13, 1, NULL, NULL,
1875 ett_ipmi_trn_serial28_byte14, byte14, ENC_LITTLE_ENDIAN, 0);
1878 static void
1879 serial_29(tvbuff_t *tvb, proto_tree *tree)
1881 static int * const byte1[] = { &hf_ipmi_trn_serial29_op, &hf_ipmi_trn_serial29_lineedit,
1882 &hf_ipmi_trn_serial29_deletectl, &hf_ipmi_trn_serial29_echo, &hf_ipmi_trn_serial29_handshake, NULL };
1883 static int * const byte2[] = { &hf_ipmi_trn_serial29_o_newline, &hf_ipmi_trn_serial29_i_newline, NULL };
1885 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1886 ett_ipmi_trn_serial29_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1887 proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL,
1888 ett_ipmi_trn_serial29_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
1891 static void
1892 serial_30(tvbuff_t *tvb, proto_tree *tree)
1894 static int * const byte1[] = { &hf_ipmi_trn_serial30_snooping, &hf_ipmi_trn_serial30_snoopctl, NULL };
1895 static int * const byte2[] = { &hf_ipmi_trn_serial30_negot_ctl, &hf_ipmi_trn_serial30_use_xmit_accm,
1896 &hf_ipmi_trn_serial30_xmit_addr_comp, &hf_ipmi_trn_serial30_xmit_proto_comp, NULL };
1897 static int * const byte3[] = { &hf_ipmi_trn_serial30_ipaddr, &hf_ipmi_trn_serial30_accm,
1898 &hf_ipmi_trn_serial30_addr_comp, &hf_ipmi_trn_serial30_proto_comp, NULL };
1900 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1901 ett_ipmi_trn_serial30_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1902 proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL,
1903 ett_ipmi_trn_serial30_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
1904 proto_tree_add_bitmask_text(tree, tvb, 2, 1, NULL, NULL,
1905 ett_ipmi_trn_serial30_byte3, byte3, ENC_LITTLE_ENDIAN, 0);
1908 static void
1909 serial_31(tvbuff_t *tvb, proto_tree *tree)
1911 proto_tree_add_item(tree, hf_ipmi_trn_serial31_port, tvb, 0, 2, ENC_LITTLE_ENDIAN);
1914 static void
1915 serial_32(tvbuff_t *tvb, proto_tree *tree)
1917 proto_tree_add_item(tree, hf_ipmi_trn_serial32_port, tvb, 0, 2, ENC_LITTLE_ENDIAN);
1920 static void
1921 serial_33(tvbuff_t *tvb, proto_tree *tree)
1923 static int * const byte1[] = { &hf_ipmi_trn_serial33_auth_proto, NULL };
1925 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1926 ett_ipmi_trn_serial33_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1929 static void
1930 serial_34(tvbuff_t *tvb, proto_tree *tree)
1932 proto_tree_add_item(tree, hf_ipmi_trn_serial34_chap_name, tvb, 0, 16, ENC_ASCII);
1935 static void
1936 serial_35(tvbuff_t *tvb, proto_tree *tree)
1938 proto_tree_add_item(tree, hf_ipmi_trn_serial35_recv_accm, tvb, 0, 4, ENC_BIG_ENDIAN);
1939 proto_tree_add_item(tree, hf_ipmi_trn_serial35_xmit_accm, tvb, 4, 4, ENC_BIG_ENDIAN);
1942 static void
1943 serial_36(tvbuff_t *tvb, proto_tree *tree)
1945 proto_tree_add_item(tree, hf_ipmi_trn_serial36_snoop_accm, tvb, 0, 4, ENC_BIG_ENDIAN);
1948 static void
1949 serial_37(tvbuff_t *tvb, proto_tree *tree)
1951 static int * const byte1[] = { &hf_ipmi_trn_serial37_num_ppp, NULL };
1953 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1954 ett_ipmi_trn_serial37_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1957 static void
1958 serial_38(tvbuff_t *tvb, proto_tree *tree)
1960 proto_tree_add_item(tree, hf_ipmi_trn_serial38_acct_sel, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1961 proto_tree_add_item(tree, hf_ipmi_trn_serial38_dialstr_sel, tvb, 1, 1, ENC_LITTLE_ENDIAN);
1964 static void
1965 serial_39(tvbuff_t *tvb, proto_tree *tree)
1967 proto_tree_add_item(tree, hf_ipmi_trn_serial39_acct_sel, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1968 proto_tree_add_item(tree, hf_ipmi_trn_serial39_ipaddr, tvb, 1, 4, ENC_BIG_ENDIAN);
1971 static void
1972 serial_40(tvbuff_t *tvb, proto_tree *tree)
1974 int slen;
1976 proto_tree_add_item(tree, hf_ipmi_trn_serial40_acct_sel, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1977 slen = tvb_captured_length(tvb) - 1;
1978 if (slen > 16) {
1979 slen = 16;
1981 proto_tree_add_item(tree, hf_ipmi_trn_serial40_username, tvb, 1, slen, ENC_ASCII);
1984 static void
1985 serial_41(tvbuff_t *tvb, proto_tree *tree)
1987 int slen;
1989 proto_tree_add_item(tree, hf_ipmi_trn_serial41_acct_sel, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1990 slen = tvb_captured_length(tvb) - 1;
1991 if (slen > 16) {
1992 slen = 16;
1994 proto_tree_add_item(tree, hf_ipmi_trn_serial41_userdomain, tvb, 1, slen, ENC_ASCII);
1997 static void
1998 serial_42(tvbuff_t *tvb, proto_tree *tree)
2000 int slen;
2002 proto_tree_add_item(tree, hf_ipmi_trn_serial42_acct_sel, tvb, 0, 1, ENC_LITTLE_ENDIAN);
2003 slen = tvb_captured_length(tvb) - 1;
2004 if (slen > 16) {
2005 slen = 16;
2007 proto_tree_add_item(tree, hf_ipmi_trn_serial42_userpass, tvb, 1, slen, ENC_ASCII);
2010 static void
2011 serial_43(tvbuff_t *tvb, proto_tree *tree)
2013 static int * const byte1[] = { &hf_ipmi_trn_serial43_auth_proto, NULL };
2015 proto_tree_add_item(tree, hf_ipmi_trn_serial43_acct_sel, tvb, 0, 1, ENC_LITTLE_ENDIAN);
2016 proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL,
2017 ett_ipmi_trn_serial43_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
2020 static void
2021 serial_44(tvbuff_t *tvb, proto_tree *tree)
2023 proto_tree_add_item(tree, hf_ipmi_trn_serial44_acct_sel, tvb, 0, 1, ENC_LITTLE_ENDIAN);
2024 proto_tree_add_item(tree, hf_ipmi_trn_serial44_hold_time, tvb, 1, 1, ENC_LITTLE_ENDIAN);
2027 static void
2028 serial_45(tvbuff_t *tvb, proto_tree *tree)
2030 proto_tree_add_item(tree, hf_ipmi_trn_serial45_src_ipaddr, tvb, 0, 4, ENC_BIG_ENDIAN);
2031 proto_tree_add_item(tree, hf_ipmi_trn_serial45_dst_ipaddr, tvb, 4, 4, ENC_BIG_ENDIAN);
2034 static void
2035 serial_46(tvbuff_t *tvb, proto_tree *tree)
2037 proto_tree_add_item(tree, hf_ipmi_trn_serial46_tx_bufsize, tvb, 0, 2, ENC_LITTLE_ENDIAN);
2040 static void
2041 serial_47(tvbuff_t *tvb, proto_tree *tree)
2043 proto_tree_add_item(tree, hf_ipmi_trn_serial47_rx_bufsize, tvb, 0, 2, ENC_LITTLE_ENDIAN);
2046 static void
2047 serial_48(tvbuff_t *tvb, proto_tree *tree)
2049 proto_tree_add_item(tree, hf_ipmi_trn_serial48_ipaddr, tvb, 0, 4, ENC_BIG_ENDIAN);
2052 static void
2053 serial_49(tvbuff_t *tvb, proto_tree *tree)
2055 int slen;
2057 proto_tree_add_item(tree, hf_ipmi_trn_serial49_blockno, tvb, 0, 1, ENC_LITTLE_ENDIAN);
2058 slen = tvb_captured_length(tvb) - 1;
2059 if (slen > 16) {
2060 slen = 16;
2062 proto_tree_add_item(tree, hf_ipmi_trn_serial49_dialstr, tvb, 1, slen, ENC_ASCII);
2065 static void
2066 serial_50(tvbuff_t *tvb, proto_tree *tree)
2068 static int * const byte1[] = { &hf_ipmi_trn_serial50_115200, &hf_ipmi_trn_serial50_57600,
2069 &hf_ipmi_trn_serial50_38400, &hf_ipmi_trn_serial50_19200, &hf_ipmi_trn_serial50_9600, NULL };
2071 proto_tree_add_bitmask_text(tree, tvb, 0, 1, "Bit rate support: ", "None",
2072 ett_ipmi_trn_serial50_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
2075 static void
2076 serial_51(tvbuff_t *tvb, proto_tree *tree)
2078 static int * const byte2[] = { &hf_ipmi_trn_serial51_ipmi_channel, &hf_ipmi_trn_serial51_conn_num, NULL };
2079 static int * const byte3[] = { &hf_ipmi_trn_serial51_ipmi_sharing,
2080 &hf_ipmi_trn_serial51_ipmi_sol, &hf_ipmi_trn_serial51_chan_num, NULL };
2082 proto_tree_add_item(tree, hf_ipmi_trn_serial51_port_assoc_sel, tvb, 0, 1, ENC_LITTLE_ENDIAN);
2083 proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL,
2084 ett_ipmi_trn_serial51_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
2085 proto_tree_add_bitmask_text(tree, tvb, 2, 1, NULL, NULL,
2086 ett_ipmi_trn_serial51_byte3, byte3, ENC_LITTLE_ENDIAN, 0);
2089 static void
2090 serial_52(tvbuff_t *tvb, proto_tree *tree)
2092 proto_tree_add_item(tree, hf_ipmi_trn_serial52_port_assoc_sel, tvb, 0, 1, ENC_LITTLE_ENDIAN);
2093 proto_tree_add_item(tree, hf_ipmi_trn_serial52_conn_name, tvb, 1, 16, ENC_NA);
2096 static void
2097 serial_53(tvbuff_t *tvb, proto_tree *tree)
2099 proto_tree_add_item(tree, hf_ipmi_trn_serial53_port_assoc_sel, tvb, 0, 1, ENC_LITTLE_ENDIAN);
2100 proto_tree_add_item(tree, hf_ipmi_trn_serial53_chan_name, tvb, 1, 16, ENC_NA);
2103 static struct {
2104 void (*intrp)(tvbuff_t *tvb, proto_tree *tree);
2105 const char *name;
2106 } serial_options[] = {
2107 { lan_serial_00, "Set In Progress" },
2108 { lan_serial_01, "Authentication Type Support" },
2109 { lan_serial_02, "Authentication Type Enables" },
2110 { serial_03, "Connection Mode" },
2111 { serial_04, "Session Inactivity Timeout" },
2112 { serial_05, "Channel Callback Control" },
2113 { serial_06, "Session Termination" },
2114 { serial_07, "IPMI Messaging Comm Settings" },
2115 { serial_08, "Mux Switch Control" },
2116 { serial_09, "Modem Ring Time" },
2117 { serial_10, "Modem Init String" },
2118 { serial_11, "Modem Escape Sequence" },
2119 { serial_12, "Modem Hang-up Sequence" },
2120 { serial_13, "Modem Dial Command" },
2121 { serial_14, "Page Blackout Interval" },
2122 { serial_15, "Community String" },
2123 { serial_16, "Number of Alert Destinations" },
2124 { serial_17, "Destination Info" },
2125 { serial_18, "Call Retry Interval" },
2126 { serial_19, "Destination Comm Settings" },
2127 { serial_20, "Number of Dial Strings" },
2128 { serial_21, "Destination Dial Strings" },
2129 { serial_22, "Number of Alert Destination IP Addresses" },
2130 { serial_23, "Destination IP Addresses" },
2131 { serial_24, "Number of TAP Accounts" },
2132 { serial_25, "TAP Account" },
2133 { serial_26, "TAP Passwords" },
2134 { serial_27, "TAP Pager ID Strings" },
2135 { serial_28, "TAP Service Settings" },
2136 { serial_29, "Terminal Mode Configuration" },
2137 { serial_30, "PPP Protocol Options" },
2138 { serial_31, "PPP Primary RMCP Port" },
2139 { serial_32, "PPP Secondary RMCP Port" },
2140 { serial_33, "PPP Link Authentication" },
2141 { serial_34, "CHAP Name" },
2142 { serial_35, "PPP ACCM" },
2143 { serial_36, "PPP Snoop ACCM" },
2144 { serial_37, "Number of PPP Accounts" },
2145 { serial_38, "PPP Account Dial String Selector" },
2146 { serial_39, "PPP Account IP Addresses" },
2147 { serial_40, "PPP Account User Names" },
2148 { serial_41, "PPP Account User Domains" },
2149 { serial_42, "PPP Account User Passwords" },
2150 { serial_43, "PPP Account Authentication Settings" },
2151 { serial_44, "PPP Account Connection Hold Times" },
2152 { serial_45, "PPP UDP Proxy IP Header" },
2153 { serial_46, "PPP UDP Proxy Transmit Buffer Size" },
2154 { serial_47, "PPP UDP Proxy Receive Buffer Size" },
2155 { serial_48, "PPP Remote Console IP Address" },
2156 { serial_49, "System Phone Number" },
2157 { serial_50, "Bitrate Support" },
2158 { serial_51, "System Serial Port Association" },
2159 { serial_52, "System Connector Names" },
2160 { serial_53, "System Serial Channel Names" }
2163 /* Set Serial/Modem Configuration Parameters
2165 static void
2166 rq10(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
2168 static int * const byte1[] = { &hf_ipmi_trn_10_chan, NULL };
2169 tvbuff_t *next;
2170 const char *desc;
2171 uint8_t pno;
2173 pno = tvb_get_uint8(tvb, 1);
2174 if (pno < array_length(serial_options)) {
2175 desc = serial_options[pno].name;
2176 } else if (pno >= 0xC0) {
2177 desc = "OEM";
2178 } else {
2179 desc = "Reserved";
2182 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL, ett_ipmi_trn_10_byte1,
2183 byte1, ENC_LITTLE_ENDIAN, 0);
2184 proto_tree_add_uint_format_value(tree, hf_ipmi_trn_10_param, tvb, 1, 1,
2185 pno, "%s (0x%02x)", desc, pno);
2186 if (pno < array_length(serial_options)) {
2187 next = tvb_new_subset_remaining(tvb, 2);
2188 serial_options[pno].intrp(next, tree);
2189 } else {
2190 proto_tree_add_item(tree, hf_ipmi_trn_10_param_data, tvb, 2, -1, ENC_NA);
2194 static const value_string cc10[] = {
2195 { 0x80, "Parameter not supported" },
2196 { 0x81, "Attempt to set the 'set in progress' value (in parameter #0) when not in the 'set complete' state" },
2197 { 0x82, "Attempt to write read-only parameter" },
2198 { 0x83, "Attempt to read write-only parameter" },
2199 { 0, NULL }
2202 /* Get LAN Configuration Parameters
2204 static void
2205 rq11(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
2207 static int * const byte1[] = { &hf_ipmi_trn_11_getrev, &hf_ipmi_trn_11_chan, NULL };
2208 const char *desc;
2209 uint8_t pno;
2211 pno = tvb_get_uint8(tvb, 1);
2213 ipmi_set_data(pinfo, 0, pno);
2214 ipmi_set_data(pinfo, 1, tvb_get_uint8(tvb, 0));
2216 if (!tree) {
2217 return;
2220 if (pno < array_length(serial_options)) {
2221 desc = serial_options[pno].name;
2222 } else if (pno >= 0xC0) {
2223 desc = "OEM";
2224 } else {
2225 desc = "Reserved";
2228 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
2229 ett_ipmi_trn_11_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
2230 proto_tree_add_uint_format_value(tree, hf_ipmi_trn_11_param, tvb, 1, 1,
2231 pno, "%s (0x%02x)", desc, pno);
2232 proto_tree_add_item(tree, hf_ipmi_trn_11_set, tvb, 2, 1, ENC_LITTLE_ENDIAN);
2233 proto_tree_add_item(tree, hf_ipmi_trn_11_block, tvb, 2, 1, ENC_LITTLE_ENDIAN);
2236 static void
2237 rs11(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
2239 static int * const byte1[] = { &hf_ipmi_trn_11_rev_present, &hf_ipmi_trn_11_rev_compat, NULL };
2240 proto_item *ti;
2241 proto_tree *subtree;
2242 tvbuff_t *next;
2243 const char *desc;
2244 uint32_t pno, req;
2246 ti = proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
2247 ett_ipmi_trn_11_rev, byte1, ENC_LITTLE_ENDIAN, 0);
2249 if (!ipmi_get_data(pinfo, 0, &pno) || !ipmi_get_data(pinfo, 1, &req)) {
2250 /* No request found - cannot parse further */
2251 if (tvb_captured_length(tvb) > 1) {
2252 proto_tree_add_item(tree, hf_ipmi_trn_11_param_data, tvb, 1, -1, ENC_NA);
2254 return;
2257 if (pno < array_length(serial_options)) {
2258 desc = serial_options[pno].name;
2259 } else if (pno >= 0xC0) {
2260 desc = "OEM";
2261 } else {
2262 desc = "Reserved";
2265 if ((req & 0x80) && tvb_captured_length(tvb) > 1) {
2266 expert_add_info(pinfo, ti, &ei_ipmi_trn_11_request_param_rev);
2267 } else if (!(req & 0x80) && tvb_captured_length(tvb) == 1) {
2268 expert_add_info(pinfo, ti, &ei_ipmi_trn_11_request_param_data);
2271 subtree = proto_tree_add_subtree_format(tree, tvb, 0, 0, ett_ipmi_trn_parameter, NULL, "Parameter: %s", desc);
2273 if (tvb_captured_length(tvb) > 1) {
2274 if (pno < array_length(serial_options)) {
2275 next = tvb_new_subset_remaining(tvb, 1);
2276 serial_options[pno].intrp(next, subtree);
2277 } else {
2278 proto_tree_add_item(subtree, hf_ipmi_trn_11_param_data, tvb, 1, -1, ENC_NA);
2283 static const value_string cc11[] = {
2284 { 0x80, "Parameter not supported" },
2285 { 0, NULL }
2288 /* Set Serial/Modem Mux
2290 static void
2291 rq12(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
2293 static int * const byte1[] = { &hf_ipmi_trn_12_chan, NULL };
2294 static int * const byte2[] = { &hf_ipmi_trn_12_mux_setting, NULL };
2296 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
2297 ett_ipmi_trn_12_rq_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
2298 proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL,
2299 ett_ipmi_trn_12_rq_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
2302 static void
2303 rs12(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
2305 static int * const byte1[] = { &hf_ipmi_trn_12_sw_to_sys, &hf_ipmi_trn_12_sw_to_bmc,
2306 &hf_ipmi_trn_12_alert, &hf_ipmi_trn_12_msg, &hf_ipmi_trn_12_req, &hf_ipmi_trn_12_mux_state, NULL };
2308 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
2309 ett_ipmi_trn_12_rs_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
2312 /* Get TAP Response Codes
2314 static void
2315 rq13(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
2317 static int * const byte1[] = { &hf_ipmi_trn_13_chan, NULL };
2319 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
2320 ett_ipmi_trn_13_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
2323 static void
2324 rs13(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
2326 proto_tree_add_item(tree, hf_ipmi_trn_13_code1, tvb, 0, 3, ENC_ASCII);
2327 proto_tree_add_item(tree, hf_ipmi_trn_13_code2, tvb, 3, 3, ENC_ASCII);
2328 proto_tree_add_item(tree, hf_ipmi_trn_13_code3, tvb, 6, 3, ENC_ASCII);
2329 proto_tree_add_item(tree, hf_ipmi_trn_13_code4, tvb, 9, 3, ENC_ASCII);
2330 proto_tree_add_item(tree, hf_ipmi_trn_13_code5, tvb, 12, 3, ENC_ASCII);
2333 /* Set PPP UDP Proxy Transmit Data
2335 static void
2336 rq14(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
2338 static int * const byte1[] = { &hf_ipmi_trn_14_chan, NULL };
2340 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
2341 ett_ipmi_trn_14_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
2342 proto_tree_add_item(tree, hf_ipmi_trn_14_block, tvb, 1, 1, ENC_LITTLE_ENDIAN);
2343 proto_tree_add_item(tree, hf_ipmi_trn_14_data, tvb, 2, 16, ENC_NA);
2346 /* Get PPP UDP Proxy Transmit Data
2348 static void
2349 rq15(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
2351 static int * const byte1[] = { &hf_ipmi_trn_15_chan, NULL };
2353 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
2354 ett_ipmi_trn_15_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
2355 proto_tree_add_item(tree, hf_ipmi_trn_15_block, tvb, 1, 1, ENC_LITTLE_ENDIAN);
2358 static void
2359 rs15(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
2361 proto_tree_add_item(tree, hf_ipmi_trn_15_data, tvb, 0, 16, ENC_NA);
2364 /* Send PPP UDP Proxy Packet
2366 static void
2367 rq16(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
2369 static int * const byte1[] = { &hf_ipmi_trn_16_chan, NULL };
2371 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
2372 ett_ipmi_trn_16_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
2373 proto_tree_add_item(tree, hf_ipmi_trn_16_src_port, tvb, 1, 2, ENC_LITTLE_ENDIAN);
2374 proto_tree_add_item(tree, hf_ipmi_trn_16_dst_port, tvb, 3, 2, ENC_LITTLE_ENDIAN);
2375 proto_tree_add_item(tree, hf_ipmi_trn_16_src_addr, tvb, 5, 4, ENC_BIG_ENDIAN);
2376 proto_tree_add_item(tree, hf_ipmi_trn_16_dst_addr, tvb, 9, 4, ENC_BIG_ENDIAN);
2377 proto_tree_add_item(tree, hf_ipmi_trn_16_bytes, tvb, 13, 2, ENC_LITTLE_ENDIAN);
2380 static const value_string cc16[] = {
2381 { 0x80, "PPP link is not up" },
2382 { 0x81, "IP protocol is not up" },
2383 { 0, NULL }
2386 /* Get PPP UDP Proxy Receive Data
2388 static void
2389 tr17_fmt_blockno(char *s, uint32_t v)
2391 snprintf(s, ITEM_LABEL_LENGTH, "%d%s",
2392 v, v ? "" : " (get received data length)");
2395 static void
2396 rq17(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
2398 static int * const byte1[] = { &hf_ipmi_trn_17_chan, NULL };
2399 static int * const byte2[] = { &hf_ipmi_trn_17_clear, &hf_ipmi_trn_17_block_num, NULL };
2401 ipmi_set_data(pinfo, 0, tvb_get_uint8(tvb, 1) & 0x7f);
2402 if (!tree) {
2403 /* Save block number */
2404 return;
2407 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
2408 ett_ipmi_trn_17_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
2409 proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL,
2410 ett_ipmi_trn_17_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
2413 static void
2414 rs17(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
2416 uint32_t bno;
2418 if (ipmi_get_data(pinfo, 0, &bno) && bno == 0) {
2419 /* Request for length */
2420 proto_tree_add_item(tree, hf_ipmi_trn_17_size, tvb, 0, 2, ENC_LITTLE_ENDIAN);
2421 } else {
2422 proto_tree_add_item(tree, hf_ipmi_trn_17_data, tvb, 0,
2423 tvb_captured_length(tvb) < 16 ? tvb_captured_length(tvb) : 16, ENC_NA);
2427 static const value_string cc17[] = {
2428 { 0x80, "No packet data available" },
2429 { 0, NULL }
2432 /* Serial/Modem Connection Active
2434 static void
2435 rq18(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
2437 static int * const byte1[] = { &hf_ipmi_trn_18_state, NULL };
2439 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
2440 ett_ipmi_trn_18_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
2441 proto_tree_add_item(tree, hf_ipmi_trn_18_ipmi_ver, tvb, 1, 1, ENC_LITTLE_ENDIAN);
2444 /* Callback
2446 static void
2447 rq19(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
2449 static int * const byte1[] = { &hf_ipmi_trn_19_chan, NULL };
2450 static int * const byte2[] = { &hf_ipmi_trn_19_dest_sel, NULL };
2452 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
2453 ett_ipmi_trn_19_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
2454 proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL,
2455 ett_ipmi_trn_19_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
2458 static const value_string cc19[] = {
2459 { 0x81, "Callback rejected, alert in progress on this channel" },
2460 { 0x82, "Callback rejected, IPMI messaging active on this channel" },
2461 { 0, NULL }
2464 /* Common for Set/Get User Callback Options
2466 static void
2467 parse_callback_options(tvbuff_t *tvb, unsigned offs, proto_tree *tree)
2469 static int * const usercap[] = { &hf_ipmi_trn_XX_cap_cbcp, &hf_ipmi_trn_XX_cap_ipmi, NULL };
2470 static int * const cbcp[] = { &hf_ipmi_trn_XX_cbcp_from_list, &hf_ipmi_trn_XX_cbcp_user,
2471 &hf_ipmi_trn_XX_cbcp_prespec, &hf_ipmi_trn_XX_cbcp_nocb, NULL };
2473 proto_tree_add_bitmask_text(tree, tvb, offs, 1,
2474 "User callback capabilities: ", "None",
2475 ett_ipmi_trn_XX_usercap, usercap, ENC_LITTLE_ENDIAN, BMT_NO_TFS);
2476 proto_tree_add_bitmask_text(tree, tvb, offs + 1, 1,
2477 "CBCP negotiation options: ", "None",
2478 ett_ipmi_trn_XX_cbcp, cbcp, ENC_LITTLE_ENDIAN, BMT_NO_TFS);
2479 proto_tree_add_item(tree, hf_ipmi_trn_XX_dst1, tvb, offs + 2, 1, ENC_LITTLE_ENDIAN);
2480 proto_tree_add_item(tree, hf_ipmi_trn_XX_dst2, tvb, offs + 3, 1, ENC_LITTLE_ENDIAN);
2481 proto_tree_add_item(tree, hf_ipmi_trn_XX_dst3, tvb, offs + 4, 1, ENC_LITTLE_ENDIAN);
2484 /* Set User Callback Options
2486 static void
2487 rq1a(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
2489 static int * const byte1[] = { &hf_ipmi_trn_1a_user, NULL };
2490 static int * const byte2[] = { &hf_ipmi_trn_1a_chan, NULL };
2492 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
2493 ett_ipmi_trn_1a_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
2494 proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL,
2495 ett_ipmi_trn_1a_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
2496 parse_callback_options(tvb, 2, tree);
2499 /* Get User Callback Options
2501 static void
2502 rq1b(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
2504 static int * const byte1[] = { &hf_ipmi_trn_1b_user, NULL };
2505 static int * const byte2[] = { &hf_ipmi_trn_1b_chan, NULL };
2507 proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
2508 ett_ipmi_trn_1b_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
2509 proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL,
2510 ett_ipmi_trn_1b_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
2513 static void
2514 rs1b(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
2516 parse_callback_options(tvb, 0, tree);
2519 static const value_string cc21[] = {
2520 { 0x80, "Parameter not supported" },
2521 { 0x81, "Attempt to set the 'set in progress' value (in parameter #0) when not in the 'set complete' state" },
2522 { 0x82, "Attempt to write read-only parameter" },
2523 { 0x83, "Attempt to read write-only parameter" },
2524 { 0, NULL }
2527 static const value_string cc22[] = {
2528 { 0x80, "Parameter not supported" },
2529 { 0, NULL }
2532 static const value_string cc33[] = {
2533 { 0x80, "Target controller unavailable" },
2534 { 0, NULL }
2537 static const ipmi_cmd_t cmd_transport[] = {
2538 /* LAN Device Commands */
2539 { 0x01, rq01, NULL, cc01, NULL, "Set LAN Configuration Parameters", 0 },
2540 { 0x02, rq02, rs02, cc02, NULL, "Get LAN Configuration Parameters", CMD_CALLRQ },
2541 { 0x03, rq03, rs03, NULL, NULL, "Suspend BMC ARPs", 0 },
2542 { 0x04, rq04, rs04, NULL, NULL, "Get IP/UDP/RMCP Statistics", 0 },
2544 /* Serial/Modem Device Commands */
2545 { 0x10, rq10, NULL, cc10, NULL, "Set Serial/Modem Configuration", 0 },
2546 { 0x11, rq11, rs11, cc11, NULL, "Get Serial/Modem Configuration", CMD_CALLRQ },
2547 { 0x12, rq12, rs12, NULL, NULL, "Set Serial/Modem Mux", 0 },
2548 { 0x13, rq13, rs13, NULL, NULL, "Get TAP Response Codes", 0 },
2549 { 0x14, rq14, NULL, NULL, NULL, "Set PPP UDP Proxy Transmit Data", 0 },
2550 { 0x15, rq15, rs15, NULL, NULL, "Get PPP UDP Proxy Transmit Data", 0 },
2551 { 0x16, rq16, NULL, cc16, NULL, "Send PPP UDP Proxy Packet", 0 },
2552 { 0x17, rq17, rs17, cc17, NULL, "Get PPP UDP Proxy Receive Data", CMD_CALLRQ },
2553 { 0x18, rq18, NULL, NULL, NULL, "Serial/Modem Connection Active", 0 },
2554 { 0x19, rq19, NULL, cc19, NULL, "Callback", 0 },
2555 { 0x1a, rq1a, NULL, NULL, NULL, "Set User Callback Options", 0 },
2556 { 0x1b, rq1b, rs1b, NULL, NULL, "Get User Callback Options", 0 },
2557 { 0x1c, IPMI_TBD, NULL, NULL, "Set Serial Routing Mux", 0 },
2559 /* Serial-Over-LAN Commands */
2560 { 0x20, IPMI_TBD, NULL, NULL, "SOL Activating", 0 },
2561 { 0x21, IPMI_TBD, cc21, NULL, "Set SOL Configuration Parameters", 0 },
2562 { 0x22, IPMI_TBD, cc22, NULL, "Get SOL Configuration Parameters", CMD_CALLRQ },
2564 /* Command Forwarding Commands */
2565 { 0x30, IPMI_TBD, NULL, NULL, "Forwarded Command", 0 },
2566 { 0x31, IPMI_TBD, NULL, NULL, "Set Forwarded Commands", 0 },
2567 { 0x32, IPMI_TBD, NULL, NULL, "Get Forwarded Commands", 0 },
2568 { 0x33, IPMI_TBD, cc33, NULL, "Enable Forwarded Commands", 0 },
2571 void
2572 proto_register_ipmi_transport(void)
2574 static hf_register_info hf[] = {
2575 { &hf_ipmi_trn_lan00_sip,
2576 { "Set In Progress",
2577 "ipmi.lan00.sip", FT_UINT8, BASE_HEX, VALS(lan00_sip_vals), 0x03, NULL, HFILL }},
2579 { &hf_ipmi_trn_lanXX_oem,
2580 { "OEM Proprietary",
2581 "ipmi.lanXX.oem", FT_BOOLEAN, 8, NULL, 0x20, NULL, HFILL }},
2582 { &hf_ipmi_trn_lanXX_passwd,
2583 { "Straight password/key",
2584 "ipmi.lanXX.passwd", FT_BOOLEAN, 8, NULL, 0x10, NULL, HFILL }},
2585 { &hf_ipmi_trn_lanXX_md5,
2586 { "MD5",
2587 "ipmi.lanXX.md5", FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL }},
2588 { &hf_ipmi_trn_lanXX_md2,
2589 { "MD2",
2590 "ipmi.lanXX.md2", FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL }},
2591 { &hf_ipmi_trn_lanXX_none,
2592 { "None",
2593 "ipmi.lanXX.none", FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }},
2595 { &hf_ipmi_trn_lan03_ip,
2596 { "IP Address",
2597 "ipmi.lan03.ip", FT_IPv4, BASE_NONE, NULL, 0, NULL, HFILL }},
2599 { &hf_ipmi_trn_lan04_ipsrc,
2600 { "IP Address Source",
2601 "ipmi.lan04.ipsrc", FT_UINT8, BASE_HEX, VALS(lan04_ipsrc_vals), 0x0f, NULL, HFILL }},
2603 { &hf_ipmi_trn_lan05_ether,
2604 { "MAC Address",
2605 "ipmi.lan05.mac", FT_ETHER, BASE_NONE, NULL, 0, NULL, HFILL }},
2607 { &hf_ipmi_trn_lan06_subnet,
2608 { "Subnet Mask",
2609 "ipmi.lan06.subnet", FT_IPv4, BASE_NONE, NULL, 0, NULL, HFILL }},
2611 { &hf_ipmi_trn_lan07_ttl,
2612 { "Time-to-live",
2613 "ipmi.lan07.ttl", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2614 { &hf_ipmi_trn_lan07_flags,
2615 { "Flags",
2616 "ipmi.lan07.flags", FT_UINT8, BASE_HEX, NULL, 0xe0, NULL, HFILL }},
2617 { &hf_ipmi_trn_lan07_precedence,
2618 { "Precedence",
2619 "ipmi.lan07.precedence", FT_UINT8, BASE_DEC, NULL, 0xe0, NULL, HFILL }},
2620 { &hf_ipmi_trn_lan07_tos,
2621 { "Type of service",
2622 "ipmi.lan07.tos", FT_UINT8, BASE_HEX, NULL, 0x1e, NULL, HFILL }},
2624 { &hf_ipmi_trn_lan08_rmcp_port,
2625 { "Primary RMCP Port Number",
2626 "ipmi.lan08.rmcp_port", FT_UINT16, BASE_CUSTOM, CF_FUNC(ipmi_fmt_udpport), 0, NULL, HFILL }},
2628 { &hf_ipmi_trn_lan09_rmcp_port,
2629 { "Secondary RMCP Port Number",
2630 "ipmi.lan09.rmcp_port", FT_UINT16, BASE_CUSTOM, CF_FUNC(ipmi_fmt_udpport), 0, NULL, HFILL }},
2632 { &hf_ipmi_trn_lan10_responses,
2633 { "ARP responses",
2634 "ipmi.lan10.responses", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02, NULL, HFILL }},
2635 { &hf_ipmi_trn_lan10_gratuitous,
2636 { "Gratuitous ARPs",
2637 "ipmi.lan10.gratuitous", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01, NULL, HFILL }},
2639 { &hf_ipmi_trn_lan11_arp_interval,
2640 { "Gratuitous ARP interval",
2641 "ipmi.lan10.arp_interval", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_500ms_0based), 0, NULL, HFILL }},
2643 { &hf_ipmi_trn_lan12_def_gw_ip,
2644 { "Default Gateway Address",
2645 "ipmi.lan12.def_gw_ip", FT_IPv4, BASE_NONE, NULL, 0, NULL, HFILL }},
2647 { &hf_ipmi_trn_lan13_def_gw_mac,
2648 { "Default Gateway MAC Address",
2649 "ipmi.lan13.def_gw_mac", FT_ETHER, BASE_NONE, NULL, 0, NULL, HFILL }},
2651 { &hf_ipmi_trn_lan14_bkp_gw_ip,
2652 { "Backup Gateway Address",
2653 "ipmi.lan14.bkp_gw_ip", FT_IPv4, BASE_NONE, NULL, 0, NULL, HFILL }},
2655 { &hf_ipmi_trn_lan15_bkp_gw_mac,
2656 { "Backup Gateway MAC Address",
2657 "ipmi.lan15.bkp_gw_mac", FT_ETHER, BASE_NONE, NULL, 0, NULL, HFILL }},
2659 { &hf_ipmi_trn_lan16_comm_string,
2660 { "Community String",
2661 "ipmi.lan16.comm_string", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
2663 { &hf_ipmi_trn_lan17_num_dst,
2664 { "Number of Destinations",
2665 "ipmi.lan17.num_dst", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
2667 { &hf_ipmi_trn_lan18_dst_selector,
2668 { "Destination Selector",
2669 "ipmi.lan18.dst_selector", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
2670 { &hf_ipmi_trn_lan18_ack,
2671 { "Alert Acknowledged",
2672 "ipmi.lan18.ack", FT_BOOLEAN, 8, TFS(&lan18_ack_tfs), 0x80, NULL, HFILL }},
2673 { &hf_ipmi_trn_lan18_dst_type,
2674 { "Destination Type",
2675 "ipmi.lan18.dst_type", FT_UINT8, BASE_HEX, VALS(lan18_dst_type_vals), 0x07, NULL, HFILL }},
2676 { &hf_ipmi_trn_lan18_tout,
2677 { "Timeout/Retry Interval",
2678 "ipmi.lan18.tout", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_1s_0based), 0, NULL, HFILL }},
2679 { &hf_ipmi_trn_lan18_retries,
2680 { "Retries",
2681 "ipmi.lan18.retries", FT_UINT8, BASE_DEC, NULL, 0x07, NULL, HFILL }},
2683 { &hf_ipmi_trn_lan19_dst_selector,
2684 { "Destination Selector",
2685 "ipmi.lan19.dst_selector", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
2686 { &hf_ipmi_trn_lan19_addr_format,
2687 { "Address Format",
2688 "ipmi.lan19.addr_format", FT_UINT8, BASE_HEX, VALS(lan19_af_vals), 0xf0, NULL, HFILL }},
2689 { &hf_ipmi_trn_lan19_address,
2690 { "Address (format unknown)",
2691 "ipmi.lan19.address", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
2692 { &hf_ipmi_trn_lan19_gw_sel,
2693 { "Gateway selector",
2694 "ipmi.lan19.gw_sel", FT_BOOLEAN, 8, TFS(&lan19_gw_sel_tfs), 0x01, NULL, HFILL }},
2695 { &hf_ipmi_trn_lan19_ip,
2696 { "Alerting IP Address",
2697 "ipmi.lan19.ip", FT_IPv4, BASE_NONE, NULL, 0, NULL, HFILL }},
2698 { &hf_ipmi_trn_lan19_mac,
2699 { "Alerting MAC Address",
2700 "ipmi.lan19.mac", FT_ETHER, BASE_NONE, NULL, 0, NULL, HFILL }},
2702 { &hf_ipmi_trn_lan20_vlan_id_enable,
2703 { "VLAN ID Enable",
2704 "ipmi.lan20.vlan_id_enable", FT_BOOLEAN, 16, TFS(&lan20_enable_tfs), 0x8000, NULL, HFILL }},
2705 { &hf_ipmi_trn_lan20_vlan_id,
2706 { "VLAN ID",
2707 "ipmi.lan20.vlan_id", FT_UINT16, BASE_HEX, NULL, 0x0fff, NULL, HFILL }},
2709 { &hf_ipmi_trn_lan21_vlan_prio,
2710 { "VLAN Priority",
2711 "ipmi.lan21.vlan_prio", FT_UINT8, BASE_DEC, NULL, 0x07, NULL, HFILL }},
2713 { &hf_ipmi_trn_lan22_num_cs_entries,
2714 { "Number of Cipher Suite Entries",
2715 "ipmi.lan22.num_cs_entries", FT_UINT8, BASE_DEC, NULL, 0x1f, NULL, HFILL }},
2717 { &hf_ipmi_trn_lan23_cs_entry,
2718 { "Cipher Suite ID",
2719 "ipmi.lan23.cs_entry", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2721 { &hf_ipmi_trn_lan24_priv1,
2722 { "Maximum Privilege Level for Cipher Suite",
2723 "ipmi.lan24.priv", FT_UINT8, BASE_HEX, NULL, 0xF0, NULL, HFILL }},
2725 { &hf_ipmi_trn_lan24_priv2,
2726 { "Maximum Privilege Level for Cipher Suite",
2727 "ipmi.lan24.priv", FT_UINT8, BASE_HEX, NULL, 0x0F, NULL, HFILL }},
2729 { &hf_ipmi_trn_lan25_dst_selector,
2730 { "Destination Selector",
2731 "ipmi.lan25.dst_selector", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
2732 { &hf_ipmi_trn_lan25_addr_format,
2733 { "Address Format",
2734 "ipmi.lan25.addr_format", FT_UINT8, BASE_HEX, VALS(lan25_af_vals), 0xf0, NULL, HFILL }},
2735 { &hf_ipmi_trn_lan25_address,
2736 { "Address (format unknown)",
2737 "ipmi.lan25.address", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
2738 { &hf_ipmi_trn_lan25_uprio,
2739 { "User priority",
2740 "ipmi.lan25.uprio", FT_UINT16, BASE_DEC, NULL, 0xe000, NULL, HFILL }},
2741 { &hf_ipmi_trn_lan25_cfi,
2742 { "CFI",
2743 "ipmi.lan25.cfi", FT_BOOLEAN, 16, NULL, 0x1000, NULL, HFILL }},
2744 { &hf_ipmi_trn_lan25_vlan_id,
2745 { "VLAN ID",
2746 "ipmi.lan25.vlan_id", FT_UINT16, BASE_HEX, NULL, 0x0fff, NULL, HFILL }},
2748 { &hf_ipmi_trn_lan26_gen_event,
2749 { "Generate a Session Audit sensor \"Invalid password disable\" event message",
2750 "ipmi.lan26.gen_event", FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }},
2751 { &hf_ipmi_trn_lan26_thresh_number,
2752 { "Bad Password Threshold number",
2753 "ipmi.lan26.thresh_number", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2754 { &hf_ipmi_trn_lan26_reset_interval,
2755 { "Attempt Count Reset Interval",
2756 "ipmi.lan26.reset_interval", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
2757 { &hf_ipmi_trn_lan26_lock_interval,
2758 { "User Lockout Interval",
2759 "ipmi.lan26.lock_interval", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
2761 { &hf_ipmi_trn_lan50_ipv6_only,
2762 { "Support IPv6 addressing only",
2763 "ipmi.lan50.ipv6_only", FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }},
2764 { &hf_ipmi_trn_lan50_both_ipv4_ipv6,
2765 { "Support both IPv4 and IPv6 simultaneously",
2766 "ipmi.lan50.both", FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL }},
2767 { &hf_ipmi_trn_lan50_ipv6_alerting,
2768 { "Support IPv6 destinations for LAN Alerting",
2769 "ipmi.lan50.ipv6_alerting", FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL }},
2771 { &hf_ipmi_trn_lan51_enables,
2772 { "Enables",
2773 "ipmi.lan51.enables", FT_UINT8, BASE_HEX, VALS(lan51_enables), 0, NULL, HFILL }},
2775 { &hf_ipmi_trn_lan52_traffic_class,
2776 { "Traffic Class",
2777 "ipmi.lan52.class", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
2779 { &hf_ipmi_trn_lanXX_hop_limit,
2780 { "Hop Limit",
2781 "ipmi.lanXX.hop_limit", FT_UINT8, BASE_DEC_HEX, NULL, 0, NULL, HFILL }},
2783 { &hf_ipmi_trn_lan54_flow_label,
2784 { "Flow Label",
2785 "ipmi.lan.flow_label", FT_UINT24, BASE_HEX, NULL, 0x0FFFFF, NULL, HFILL }},
2787 { &hf_ipmi_trn_lan55_static_addr_max,
2788 { "Static Address Max",
2789 "ipmi.lan55.static_max", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2790 { &hf_ipmi_trn_lan55_dynamic_addr_max,
2791 { "Dynamic Address Max",
2792 "ipmi.lan55.dynamic_max", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2793 { &hf_ipmi_trn_lan55_dhcpv6_support,
2794 { "DHCPv6 is supported",
2795 "ipmi.lan55.dhcpv6", FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }},
2796 { &hf_ipmi_trn_lan55_slaac_support,
2797 { "SLAAC is supported",
2798 "ipmi.lan55.slaac", FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL }},
2800 { &hf_ipmi_trn_lanXX_addr_selector,
2801 { "Address Selector",
2802 "ipmi.lanXX.addr_sel", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2803 { &hf_ipmi_trn_lanXX_addr_type,
2804 { "Address source/type",
2805 "ipmi.lanXX.addr_type", FT_UINT8, BASE_DEC, VALS(lanXX_addr_type), 0xF, NULL, HFILL }},
2806 { &hf_ipmi_trn_lanXX_addr_enable,
2807 { "Address is enabled",
2808 "ipmi.lanXX.addr_enable", FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }},
2809 { &hf_ipmi_trn_lanXX_addr,
2810 { "IPv6 Address",
2811 "ipmi.lanXX.addr", FT_IPv6, BASE_NONE, NULL, 0, NULL, HFILL }},
2812 { &hf_ipmi_trn_lanXX_prefix_len,
2813 { "Prefix Length",
2814 "ipmi.lanXX.prefix_len", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2815 { &hf_ipmi_trn_lanXX_addr_status,
2816 { "Address status",
2817 "ipmi.lanXX.addr_status", FT_UINT8, BASE_DEC, VALS(lanXX_addr_status), 0, NULL, HFILL }},
2819 { &hf_ipmi_trn_lanXX_max_duid_blocks,
2820 { "Maximum number of 16-byte blocks",
2821 "ipmi.lanXX.max_duid_blocks", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2823 { &hf_ipmi_trn_lanXX_duid_selector,
2824 { "DUID selector",
2825 "ipmi.lanXX.duid_sel", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2826 { &hf_ipmi_trn_lanXX_block_selector,
2827 { "Block selector",
2828 "ipmi.lanXX.block_sel", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2829 { &hf_ipmi_trn_lanXX_duid,
2830 { "DUID data",
2831 "ipmi.lanXX.duid", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
2833 { &hf_ipmi_trn_lanXX_timing_support,
2834 { "Timing Configuration Support",
2835 "ipmi.lanXX.timing_support", FT_UINT8, BASE_DEC, VALS(lanXX_timing_support), 0, NULL, HFILL }},
2837 { &hf_ipmi_trn_lanXX_iface_selector,
2838 { "IPv6 Interface selector",
2839 "ipmi.lanXX.iface_sel", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2840 { &hf_ipmi_trn_lan63_sol_max_delay,
2841 { "SOL_MAX_DELAY",
2842 "ipmi.lan63.sol_max_delay", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2843 { &hf_ipmi_trn_lan63_sol_timeout,
2844 { "SOL_TIMEOUT",
2845 "ipmi.lan63.sol_timeout", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2846 { &hf_ipmi_trn_lan63_sol_max_rt,
2847 { "SOL_MAX_RT",
2848 "ipmi.lan63.sol_max_rt", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2849 { &hf_ipmi_trn_lan63_req_timeout,
2850 { "REQ_TIMEOUT",
2851 "ipmi.lan63.req_timeout", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2852 { &hf_ipmi_trn_lan63_req_max_rt,
2853 { "REQ_MAX_RT",
2854 "ipmi.lan63.req_max_rt", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2855 { &hf_ipmi_trn_lan63_req_max_rc,
2856 { "REQ_MAX_RC",
2857 "ipmi.lan63.req_max_rc", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2858 { &hf_ipmi_trn_lan63_cnf_max_delay,
2859 { "CNF_MAX_DELAY",
2860 "ipmi.lan63.cnf_max_delay", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2861 { &hf_ipmi_trn_lan63_cnf_timeout,
2862 { "CNF_TIMEOUT",
2863 "ipmi.lan63.cnf_timeout", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2864 { &hf_ipmi_trn_lan63_cnf_max_rt,
2865 { "CNF_MAX_RT",
2866 "ipmi.lan63.cnf_max_rt", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2867 { &hf_ipmi_trn_lan63_cnf_max_rd,
2868 { "CNF_MAX_RD",
2869 "ipmi.lan63.cnf_max_rd", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2870 { &hf_ipmi_trn_lan63_ren_timeout,
2871 { "REN_TIMEOUT",
2872 "ipmi.lan63.ren_timeout", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2873 { &hf_ipmi_trn_lan63_ren_max_rt,
2874 { "REN_MAX_RT",
2875 "ipmi.lan63.ren_max_rt", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2876 { &hf_ipmi_trn_lan63_reb_timeout,
2877 { "REB_TIMEOUT",
2878 "ipmi.lan63.reb_timeout", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2879 { &hf_ipmi_trn_lan63_reb_max_rt,
2880 { "REB_MAX_RT",
2881 "ipmi.lan63.reb_max_rt", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2882 { &hf_ipmi_trn_lan63_inf_max_delay,
2883 { "INF_MAX_DELAY",
2884 "ipmi.lan63.inf_max_delay", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2885 { &hf_ipmi_trn_lan63_inf_timeout,
2886 { "INF_TIMEOUT",
2887 "ipmi.lan63.inf_timeout", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2888 { &hf_ipmi_trn_lan63_inf_max_rt,
2889 { "INF_MAX_RT",
2890 "ipmi.lan63.inf_max_rt", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2891 { &hf_ipmi_trn_lan63_rel_timeout,
2892 { "REL_TIMEOUT",
2893 "ipmi.lan63.rel_timeout", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2894 { &hf_ipmi_trn_lan63_rel_max_rc,
2895 { "REL_MAX_RC",
2896 "ipmi.lan63.rel_max_rc", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2897 { &hf_ipmi_trn_lan63_dec_timeout,
2898 { "DEC_TIMEOUT",
2899 "ipmi.lan63.dec_timeout", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2900 { &hf_ipmi_trn_lan63_dec_max_rc,
2901 { "DEC_MAX_RC",
2902 "ipmi.lan63.dec_max_rc", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2903 { &hf_ipmi_trn_lan63_hop_count_limit,
2904 { "HOP_COUNT_LIMIT",
2905 "ipmi.lan63.hop_count_limit", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2907 { &hf_ipmi_trn_lan64_static_cfg,
2908 { "Enable static router address",
2909 "ipmi.lan64.static_cfg", FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }},
2910 { &hf_ipmi_trn_lan64_dynamic_cfg,
2911 { "Enable dynamic router address configuration",
2912 "ipmi.lan64.dynamic_cfg", FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL }},
2914 { &hf_ipmi_trn_lanXX_router_selector,
2915 { "Router selector",
2916 "ipmi.lanXX.router_sel", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2917 { &hf_ipmi_trn_lanXX_router_mac,
2918 { "MAC Address",
2919 "ipmi.lanXX.mac", FT_ETHER, BASE_NONE, NULL, 0, NULL, HFILL }},
2920 { &hf_ipmi_trn_lanXX_router_prefix,
2921 { "Prefix Value",
2922 "ipmi.lanXX.prefix", FT_IPv6, BASE_NONE, NULL, 0, NULL, HFILL }},
2924 { &hf_ipmi_trn_lan73_num_dynamic_sets,
2925 { "Number of Dynamic Router Info sets",
2926 "ipmi.lanXX.num_dynamic_sets", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2928 { &hf_ipmi_trn_lan80_max_rtr_solicitation_delay,
2929 { "MAX_RTR_SOLICITATION_DELAY",
2930 "ipmi.lan80.max_rtr_sol_delay", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2931 { &hf_ipmi_trn_lan80_rtr_solicitation_interval,
2932 { "RTR_SOLICITATION_INTERVAL",
2933 "ipmi.lan80.rtr_sol_interval", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2934 { &hf_ipmi_trn_lan80_max_rtr_solicitations,
2935 { "MAX_RTR_SOLICITATIONS",
2936 "ipmi.lan80.max_rtr_sols", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2937 { &hf_ipmi_trn_lan80_dup_addr_detect_transmits,
2938 { "DupAddrDetectTransmits",
2939 "ipmi.lan80.dup_addr_transmits", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2940 { &hf_ipmi_trn_lan80_max_multicast_solicit,
2941 { "MAX_MULTICAST_SOLICIT",
2942 "ipmi.lan80.max_mcast_sol", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2943 { &hf_ipmi_trn_lan80_max_unicast_solicit,
2944 { "MAX_UNICAST_SOLICIT",
2945 "ipmi.lan80.max_ucast_sol", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2946 { &hf_ipmi_trn_lan80_max_anycast_delay_time,
2947 { "MAX_ANYCAST_DELAY_TIME",
2948 "ipmi.lan80.max_anycast_delay", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2949 { &hf_ipmi_trn_lan80_max_neighbor_advertisement,
2950 { "MAX_NEIGHBOR_ADVERTISEMENT",
2951 "ipmi.lan80.max_neigh_adv", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2952 { &hf_ipmi_trn_lan80_reachable_time,
2953 { "REACHABLE_TIME",
2954 "ipmi.lan80.reach_time", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2955 { &hf_ipmi_trn_lan80_retrans_timer,
2956 { "RETRANS_TIMER",
2957 "ipmi.lan80.retrans_timer", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2958 { &hf_ipmi_trn_lan80_delay_first_probe_time,
2959 { "DELAY_FIRST_PROBE_TIME",
2960 "ipmi.lan80.delay_first_probe", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2961 { &hf_ipmi_trn_lan80_max_random_factor,
2962 { "MAX_RANDOM_FACTOR",
2963 "ipmi.lan80.max_rand", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2964 { &hf_ipmi_trn_lan80_min_random_factor,
2965 { "MIN_RANDOM_FACTOR",
2966 "ipmi.lan80.min_rand", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2968 { &hf_ipmi_trn_serial03_connmode,
2969 { "Connection Mode",
2970 "ipmi.serial03.connmode", FT_BOOLEAN, 8, TFS(&serial03_connmode_tfs), 0x80, NULL, HFILL }},
2971 { &hf_ipmi_trn_serial03_terminal,
2972 { "Terminal Mode",
2973 "ipmi.serial03.terminal", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x04, NULL, HFILL }},
2974 { &hf_ipmi_trn_serial03_ppp,
2975 { "PPP Mode",
2976 "ipmi.serial03.ppp", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02, NULL, HFILL }},
2977 { &hf_ipmi_trn_serial03_basic,
2978 { "Basic Mode",
2979 "ipmi.serial03.basic", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01, NULL, HFILL }},
2980 { &hf_ipmi_trn_serial04_timeout,
2981 { "Session Inactivity Timeout",
2982 "ipmi.serial04.timeout", FT_UINT8, BASE_CUSTOM, CF_FUNC(serial04_timeout_fmt), 0x0f, NULL, HFILL }},
2983 { &hf_ipmi_trn_serial05_cbcp_callback,
2984 { "CBCP Callback",
2985 "ipmi.serial05.cbcp", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02, NULL, HFILL }},
2986 { &hf_ipmi_trn_serial05_ipmi_callback,
2987 { "IPMI Callback",
2988 "ipmi.serial05.ipmi", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01, NULL, HFILL }},
2989 { &hf_ipmi_trn_serial05_cb_list,
2990 { "Callback to list of possible numbers",
2991 "ipmi.serial05.cb_list", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x08, NULL, HFILL }},
2992 { &hf_ipmi_trn_serial05_cb_user,
2993 { "Callback to user-specifiable number",
2994 "ipmi.serial05.cb_user", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x04, NULL, HFILL }},
2995 { &hf_ipmi_trn_serial05_cb_prespec,
2996 { "Callback to pre-specified number",
2997 "ipmi.serial05.cb_prespec", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02, NULL, HFILL }},
2998 { &hf_ipmi_trn_serial05_no_cb,
2999 { "No callback",
3000 "ipmi.serial05.no_cb", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01, NULL, HFILL }},
3001 { &hf_ipmi_trn_serial05_cb_dest1,
3002 { "Callback destination 1",
3003 "ipmi.serial05.cb_dest1", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3004 { &hf_ipmi_trn_serial05_cb_dest2,
3005 { "Callback destination 2",
3006 "ipmi.serial05.cb_dest2", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3007 { &hf_ipmi_trn_serial05_cb_dest3,
3008 { "Callback destination 3",
3009 "ipmi.serial05.cb_dest3", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3010 { &hf_ipmi_trn_serial06_inactivity,
3011 { "Session Inactivity Timeout",
3012 "ipmi.serial06.inactivity", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02, NULL, HFILL }},
3013 { &hf_ipmi_trn_serial06_dcd,
3014 { "Close on DCD Loss",
3015 "ipmi.serial06.dcd", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01, NULL, HFILL }},
3016 { &hf_ipmi_trn_serial07_flowctl,
3017 { "Flow Control",
3018 "ipmi.serial07.flowctl", FT_UINT8, BASE_HEX, VALS(serialXX_flowctl_vals), 0xc0, NULL, HFILL }},
3019 { &hf_ipmi_trn_serial07_dtrhangup,
3020 { "DTR Hang-up",
3021 "ipmi.serial07.dtrhangup", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x20, NULL, HFILL }},
3022 { &hf_ipmi_trn_serial07_bitrate,
3023 { "Bit rate",
3024 "ipmi.serial07.bitrate", FT_UINT8, BASE_HEX, VALS(serialXX_bitrate_vals), 0x0f, NULL, HFILL }},
3025 { &hf_ipmi_trn_serial08_esc_powerup,
3026 { "Power-up/wakeup via ESC-^",
3027 "ipmi.serial08.esc_powerup", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x40, NULL, HFILL }},
3028 { &hf_ipmi_trn_serial08_esc_reset,
3029 { "Hard reset via ESC-R-ESC-r-ESC-R",
3030 "ipmi.serial08.esc_reset", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x20, NULL, HFILL }},
3031 { &hf_ipmi_trn_serial08_switch_authcap,
3032 { "Baseboard-to-BMC switch on Get Channel Auth Capabilities",
3033 "ipmi.serial08.switch_authcap", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x10, NULL, HFILL }},
3034 { &hf_ipmi_trn_serial08_switch_rmcp,
3035 { "Switch to BMC on IPMI-RMCP pattern",
3036 "ipmi.serial08.switch_rmcp", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x08, NULL, HFILL }},
3037 { &hf_ipmi_trn_serial08_esc_switch1,
3038 { "BMC-to-Baseboard switch via ESC-Q",
3039 "ipmi.serial08.esc_switch1", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x04, NULL, HFILL }},
3040 { &hf_ipmi_trn_serial08_esc_switch2,
3041 { "Baseboard-to-BMC switch via ESC-(",
3042 "ipmi.serial08.esc_switch2", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02, NULL, HFILL }},
3043 { &hf_ipmi_trn_serial08_switch_dcdloss,
3044 { "Switch to BMC on DCD loss",
3045 "ipmi.serial08.switch_dcdloss", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01, NULL, HFILL }},
3046 { &hf_ipmi_trn_serial08_sharing,
3047 { "Serial Port Sharing",
3048 "ipmi.serial08.sharing", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x08, NULL, HFILL }},
3049 { &hf_ipmi_trn_serial08_ping_callback,
3050 { "Serial/Modem Connection Active during callback",
3051 "ipmi.serial08.ping_callback", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x04, NULL, HFILL }},
3052 { &hf_ipmi_trn_serial08_ping_direct,
3053 { "Serial/Modem Connection Active during direct call",
3054 "ipmi.serial08.ping_direct", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02, NULL, HFILL }},
3055 { &hf_ipmi_trn_serial08_ping_retry,
3056 { "Retry Serial/Modem Connection Active",
3057 "ipmi.serial08.ping_retry", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01, NULL, HFILL }},
3058 { &hf_ipmi_trn_serial09_ring_duration,
3059 { "Ring Duration",
3060 "ipmi.serial09.ring_duration", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_500ms_1based), 0x3f, NULL, HFILL }},
3061 { &hf_ipmi_trn_serial09_ring_dead,
3062 { "Ring Dead Time",
3063 "ipmi.serial09.ring_dead", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_500ms_0based), 0x0f, NULL, HFILL }},
3064 { &hf_ipmi_trn_serial10_set_sel,
3065 { "Set selector (16-byte block #)",
3066 "ipmi.serial10.set_sel", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3067 { &hf_ipmi_trn_serial10_init_str,
3068 { "Modem Init String",
3069 "ipmi.serial10.init_str", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
3070 { &hf_ipmi_trn_serial11_esc_seq,
3071 { "Modem Escape Sequence",
3072 "ipmi.serial11.esc_seq", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
3073 { &hf_ipmi_trn_serial12_hangup_seq,
3074 { "Modem Hang-up Sequence",
3075 "ipmi.serial12.hangup_seq", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
3076 { &hf_ipmi_trn_serial13_dial_cmd,
3077 { "Modem Dial Command",
3078 "ipmi.serial13.dial_cmd", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
3079 { &hf_ipmi_trn_serial14_page_blackout,
3080 { "Page Blackout Interval (minutes)",
3081 "ipmi.serial14.page_blackout", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3082 { &hf_ipmi_trn_serial15_comm_string,
3083 { "Community String",
3084 "ipmi.serial15.comm_string", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
3085 { &hf_ipmi_trn_serial16_ndest,
3086 { "Number of non-volatile Alert Destinations",
3087 "ipmi.serial16.ndest", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
3088 { &hf_ipmi_trn_serial17_dest_sel,
3089 { "Destination Selector",
3090 "ipmi.serial17.dest_sel", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
3091 { &hf_ipmi_trn_serial17_ack,
3092 { "Alert Acknowledge",
3093 "ipmi.serial17.ack", FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }},
3094 { &hf_ipmi_trn_serial17_dest_type,
3095 { "Destination Type",
3096 "ipmi.serial17.dest_type", FT_UINT8, BASE_HEX, VALS(serial17_dest_type_vals), 0x0f, NULL, HFILL }},
3097 #if 0
3098 { &hf_ipmi_trn_serial17_ack_timeout,
3099 { "Alert Acknowledge Timeout",
3100 "ipmi.serial17.ack_timeout", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3101 #endif
3102 { &hf_ipmi_trn_serial17_alert_retries,
3103 { "Alert retries",
3104 "ipmi.serial17.alert_retries", FT_UINT8, BASE_DEC, NULL, 0x70, NULL, HFILL }},
3105 { &hf_ipmi_trn_serial17_call_retries,
3106 { "Call retries",
3107 "ipmi.serial17.call_retries", FT_UINT8, BASE_DEC, NULL, 0x07, NULL, HFILL }},
3108 { &hf_ipmi_trn_serial17_alert_ack_timeout,
3109 { "Alert Acknowledge Timeout",
3110 "ipmi.serial17.alert_ack_timeout", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_1s_0based), 0, NULL, HFILL }},
3111 { &hf_ipmi_trn_serial17_dialstr_sel,
3112 { "Dial String Selector",
3113 "ipmi.serial17.dialstr_sel", FT_UINT8, BASE_DEC, NULL, 0xf0, NULL, HFILL }},
3114 { &hf_ipmi_trn_serial17_tap_sel,
3115 { "TAP Account Selector",
3116 "ipmi.serial17.tap_sel", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
3117 { &hf_ipmi_trn_serial17_ipaddr_sel,
3118 { "Destination IP Address Selector",
3119 "ipmi.serial17.ipaddr_sel", FT_UINT8, BASE_DEC, NULL, 0xf0, NULL, HFILL }},
3120 { &hf_ipmi_trn_serial17_ppp_sel,
3121 { "PPP Account Set Selector",
3122 "ipmi.serial17.ppp_sel", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
3123 { &hf_ipmi_trn_serial17_unknown,
3124 { "Destination-specific (format unknown)",
3125 "ipmi.serial17.unknown", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3126 { &hf_ipmi_trn_serial18_call_retry,
3127 { "Call Retry Interval",
3128 "ipmi.serial18.call_retry", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3129 { &hf_ipmi_trn_serial19_destsel,
3130 { "Destination selector",
3131 "ipmi.serial19.destsel", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
3132 { &hf_ipmi_trn_serial19_flowctl,
3133 { "Flow Control",
3134 "ipmi.serial19.flowctl", FT_UINT8, BASE_HEX, VALS(serialXX_flowctl_vals), 0xc0, NULL, HFILL }},
3135 { &hf_ipmi_trn_serial19_dtrhangup,
3136 { "DTR Hang-up",
3137 "ipmi.serial19.dtrhangup", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x20, NULL, HFILL }},
3138 { &hf_ipmi_trn_serial19_stopbits,
3139 { "Stop bits",
3140 "ipmi.serial19.stopbits", FT_BOOLEAN, 8, TFS(&serial19_stopbits_tfs), 0x10, NULL, HFILL }},
3141 { &hf_ipmi_trn_serial19_charsize,
3142 { "Character size",
3143 "ipmi.serial19.charsize", FT_BOOLEAN, 8, TFS(&serial19_charsize_tfs), 0x08, NULL, HFILL }},
3144 { &hf_ipmi_trn_serial19_parity,
3145 { "Parity",
3146 "ipmi.serial19.parity", FT_UINT8, BASE_HEX, VALS(serial19_parity_vals), 0x07, NULL, HFILL }},
3147 { &hf_ipmi_trn_serial19_bitrate,
3148 { "Bit rate",
3149 "ipmi.serial19.bitrate", FT_UINT8, BASE_HEX, VALS(serialXX_bitrate_vals), 0x0f, NULL, HFILL }},
3150 { &hf_ipmi_trn_serial20_num_dial_strings,
3151 { "Number of Dial Strings",
3152 "ipmi.serial20.num_dial_strings", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
3153 { &hf_ipmi_trn_serial21_dialsel,
3154 { "Dial String Selector",
3155 "ipmi.serial21.dialsel", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
3156 { &hf_ipmi_trn_serial21_blockno,
3157 { "Block number",
3158 "ipmi.serial21.blockno", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3159 { &hf_ipmi_trn_serial21_dialstr,
3160 { "Dial string",
3161 "ipmi.serial21.dialstr", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
3162 { &hf_ipmi_trn_serial22_num_ipaddrs,
3163 { "Number of Alert Destination IP Addresses",
3164 "ipmi.serial22.num_ipaddrs", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
3165 { &hf_ipmi_trn_serial23_destsel,
3166 { "Destination IP Address selector",
3167 "ipmi.serial23.destsel", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
3168 { &hf_ipmi_trn_serial23_ipaddr,
3169 { "Destination IP Address",
3170 "ipmi.serial23.ipaddr", FT_IPv4, BASE_NONE, NULL, 0, NULL, HFILL }},
3171 { &hf_ipmi_trn_serial24_num_tap_accounts,
3172 { "Number of TAP Accounts",
3173 "ipmi.serial24.num_tap_accounts", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
3174 { &hf_ipmi_trn_serial25_tap_acct,
3175 { "TAP Account Selector",
3176 "ipmi.serial25.tap_acct", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3177 { &hf_ipmi_trn_serial25_dialstr_sel,
3178 { "Dial String Selector",
3179 "ipmi.serial25.dialstr_sel", FT_UINT8, BASE_DEC, NULL, 0xf0, NULL, HFILL }},
3180 { &hf_ipmi_trn_serial25_tapsrv_sel,
3181 { "TAP Service Settings Selector",
3182 "ipmi.serial25.tapsrv_sel", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
3183 { &hf_ipmi_trn_serial26_tap_acct,
3184 { "TAP Account Selector",
3185 "ipmi.serial26.tap_acct", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3186 { &hf_ipmi_trn_serial26_tap_passwd,
3187 { "TAP Password",
3188 "ipmi.serial26.tap_passwd", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
3189 { &hf_ipmi_trn_serial27_tap_acct,
3190 { "TAP Account Selector",
3191 "ipmi.serial27.tap_acct", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3192 { &hf_ipmi_trn_serial27_tap_pager_id,
3193 { "TAP Pager ID String",
3194 "ipmi.serial27.tap_pager_id", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
3195 { &hf_ipmi_trn_serial28_tapsrv_sel,
3196 { "TAP Service Settings Selector",
3197 "ipmi.serial28.tapsrv_sel", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
3198 { &hf_ipmi_trn_serial28_confirm,
3199 { "TAP Confirmation",
3200 "ipmi.serial28.confirm", FT_UINT8, BASE_HEX, VALS(serial28_confirm_vals), 0x03, NULL, HFILL }},
3201 { &hf_ipmi_trn_serial28_srvtype,
3202 { "TAP 'SST' Service Type",
3203 "ipmi.serial28.srvtype", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
3204 { &hf_ipmi_trn_serial28_ctrl_esc,
3205 { "TAP Control-character escaping mask",
3206 "ipmi.serial28.ctrl_esc", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
3207 { &hf_ipmi_trn_serial28_t2,
3208 { "TAP T2",
3209 "ipmi.serial28.tap_t2", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_500ms_0based), 0xf0, NULL, HFILL }},
3210 { &hf_ipmi_trn_serial28_t1,
3211 { "TAP T1",
3212 "ipmi.serial28.tap_t1", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_1s_0based), 0x0f, NULL, HFILL }},
3213 { &hf_ipmi_trn_serial28_t4,
3214 { "TAP T4",
3215 "ipmi.serial28.tap_t4", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_1s_0based), 0xf0, NULL, HFILL }},
3216 { &hf_ipmi_trn_serial28_t3,
3217 { "TAP T3",
3218 "ipmi.serial28.tap_t3", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_2s_0based), 0x0f, NULL, HFILL }},
3219 { &hf_ipmi_trn_serial28_t6,
3220 { "IPMI T6",
3221 "ipmi.serial28.ipmi_t6", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_1s_0based), 0xf0, NULL, HFILL }},
3222 { &hf_ipmi_trn_serial28_t5,
3223 { "TAP T5",
3224 "ipmi.serial28.tap_t5", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_2s_0based), 0x0f, NULL, HFILL }},
3225 { &hf_ipmi_trn_serial28_n2,
3226 { "TAP N2",
3227 "ipmi.serial28.tap_n2", FT_UINT8, BASE_DEC, NULL, 0xf0, NULL, HFILL }},
3228 { &hf_ipmi_trn_serial28_n1,
3229 { "TAP N1",
3230 "ipmi.serial28.tap_n1", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
3231 { &hf_ipmi_trn_serial28_n4,
3232 { "IPMI N4",
3233 "ipmi.serial28.ipmi_n4", FT_UINT8, BASE_DEC, NULL, 0xf0, NULL, HFILL }},
3234 { &hf_ipmi_trn_serial28_n3,
3235 { "TAP N3",
3236 "ipmi.serial28.tap_n3", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
3237 { &hf_ipmi_trn_serial29_op,
3238 { "Parameter Operation",
3239 "ipmi.serial29.op", FT_UINT8, BASE_HEX, VALS(serial29_op_vals), 0xc0, NULL, HFILL }},
3240 { &hf_ipmi_trn_serial29_lineedit,
3241 { "Line Editing",
3242 "ipmi.serial29.lineedit", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x20, NULL, HFILL }},
3243 { &hf_ipmi_trn_serial29_deletectl,
3244 { "Delete control",
3245 "ipmi.serial29.deletectl", FT_UINT8, BASE_HEX, VALS(serial29_delete_vals), 0x0c, NULL, HFILL }},
3246 { &hf_ipmi_trn_serial29_echo,
3247 { "Echo",
3248 "ipmi.serial29.echo", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02, NULL, HFILL }},
3249 { &hf_ipmi_trn_serial29_handshake,
3250 { "Handshake",
3251 "ipmi.serial29.handshake", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01, NULL, HFILL }},
3252 { &hf_ipmi_trn_serial29_o_newline,
3253 { "Output newline sequence",
3254 "ipmi.serial29.o_newline", FT_UINT8, BASE_HEX, VALS(serial29_o_nl_vals), 0xf0, NULL, HFILL }},
3255 { &hf_ipmi_trn_serial29_i_newline,
3256 { "Input newline sequence",
3257 "ipmi.serial29.i_newline", FT_UINT8, BASE_HEX, VALS(serial29_i_nl_vals), 0x0f, NULL, HFILL }},
3258 { &hf_ipmi_trn_serial30_snooping,
3259 { "System Negotiation Snooping",
3260 "ipmi.serial30.snooping", FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL }},
3261 { &hf_ipmi_trn_serial30_snoopctl,
3262 { "Snoop ACCM Control",
3263 "ipmi.serial30.snoopctl", FT_UINT8, BASE_HEX, VALS(serial30_snoopctl_vals), 0x03, NULL, HFILL }},
3264 { &hf_ipmi_trn_serial30_negot_ctl,
3265 { "BMC negotiates link parameters",
3266 "ipmi.serial30.negot_ctl", FT_UINT8, BASE_HEX, VALS(serial30_negoctl_vals), 0x30, NULL, HFILL }},
3267 { &hf_ipmi_trn_serial30_use_xmit_accm,
3268 { "Filtering incoming chars",
3269 "ipmi.serial30.filter", FT_BOOLEAN, 8, TFS(&serial30_filter_tfs), 0x04, NULL, HFILL }},
3270 { &hf_ipmi_trn_serial30_xmit_addr_comp,
3271 { "Transmit with Address and Ctl Field Compression",
3272 "ipmi.serial30.xmit_addr_comp", FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL }},
3273 { &hf_ipmi_trn_serial30_xmit_proto_comp,
3274 { "Transmit with Protocol Field Compression",
3275 "ipmi.serial30.xmit_proto_comp", FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }},
3276 { &hf_ipmi_trn_serial30_ipaddr,
3277 { "IP Address negotiation",
3278 "ipmi.serial30.ipaddr", FT_UINT8, BASE_HEX, VALS(serial30_ipaddr_val), 0x18, NULL, HFILL }},
3279 { &hf_ipmi_trn_serial30_accm,
3280 { "ACCM Negotiation",
3281 "ipmi.serial30.accm", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x04, NULL, HFILL }},
3282 { &hf_ipmi_trn_serial30_addr_comp,
3283 { "Address and Ctl Field Compression",
3284 "ipmi.serial30.addr_comp", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02, NULL, HFILL }},
3285 { &hf_ipmi_trn_serial30_proto_comp,
3286 { "Protocol Field Compression",
3287 "ipmi.serial30.proto_comp", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01, NULL, HFILL }},
3288 { &hf_ipmi_trn_serial31_port,
3289 { "Primary RMCP Port Number",
3290 "ipmi.serial31.port", FT_UINT16, BASE_CUSTOM, CF_FUNC(ipmi_fmt_udpport), 0, NULL, HFILL }},
3291 { &hf_ipmi_trn_serial32_port,
3292 { "Secondary RMCP Port Number",
3293 "ipmi.serial32.port", FT_UINT16, BASE_CUSTOM, CF_FUNC(ipmi_fmt_udpport), 0, NULL, HFILL }},
3294 { &hf_ipmi_trn_serial33_auth_proto,
3295 { "PPP Link Authentication Protocol",
3296 "ipmi.serial33.auth_proto", FT_UINT8, BASE_HEX, VALS(serialXX_proto_vals), 0x0f, NULL, HFILL }},
3297 { &hf_ipmi_trn_serial34_chap_name,
3298 { "CHAP Name",
3299 "ipmi.serial34.chap_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
3300 { &hf_ipmi_trn_serial35_recv_accm,
3301 { "Receive ACCM",
3302 "ipmi.serial35.recv_accm", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
3303 { &hf_ipmi_trn_serial35_xmit_accm,
3304 { "Transmit ACCM",
3305 "ipmi.serial35.xmit_accm", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
3306 { &hf_ipmi_trn_serial36_snoop_accm,
3307 { "Snoop Receive ACCM",
3308 "ipmi.serial36.snoop_accm", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
3309 { &hf_ipmi_trn_serial37_num_ppp,
3310 { "Number of PPP Accounts",
3311 "ipmi.serial37.num_ppp", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
3312 { &hf_ipmi_trn_serial38_acct_sel,
3313 { "PPP Account Selector",
3314 "ipmi.serial38.acct_sel", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3315 { &hf_ipmi_trn_serial38_dialstr_sel,
3316 { "Dial String Selector",
3317 "ipmi.serial38.dialstr_sel", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3318 { &hf_ipmi_trn_serial39_acct_sel,
3319 { "PPP Account Selector",
3320 "ipmi.serial39.acct_sel", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3321 { &hf_ipmi_trn_serial39_ipaddr,
3322 { "IP Address",
3323 "ipmi.serial39.ipaddr", FT_IPv4, BASE_NONE, NULL, 0, NULL, HFILL }},
3324 { &hf_ipmi_trn_serial40_acct_sel,
3325 { "PPP Account Selector",
3326 "ipmi.serial40.acct_sel", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3327 { &hf_ipmi_trn_serial40_username,
3328 { "User Name",
3329 "ipmi.serial40.username", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
3330 { &hf_ipmi_trn_serial41_acct_sel,
3331 { "PPP Account Selector",
3332 "ipmi.serial41.acct_sel", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3333 { &hf_ipmi_trn_serial41_userdomain,
3334 { "User Domain",
3335 "ipmi.serial41.userdomain", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
3336 { &hf_ipmi_trn_serial42_acct_sel,
3337 { "PPP Account Selector",
3338 "ipmi.serial42.acct_sel", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3339 { &hf_ipmi_trn_serial42_userpass,
3340 { "User Password",
3341 "ipmi.serial42.userpass", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
3342 { &hf_ipmi_trn_serial43_acct_sel,
3343 { "PPP Account Selector",
3344 "ipmi.serial43.acct_sel", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3345 { &hf_ipmi_trn_serial43_auth_proto,
3346 { "Link Auth Type",
3347 "ipmi.serial43.auth_proto", FT_UINT8, BASE_HEX, VALS(serialXX_proto_vals), 0x0f, NULL, HFILL }},
3348 { &hf_ipmi_trn_serial44_acct_sel,
3349 { "PPP Account Selector",
3350 "ipmi.serial44.acct_sel", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3351 { &hf_ipmi_trn_serial44_hold_time,
3352 { "Connection Hold Time",
3353 "ipmi.serial44.hold_time", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_1s_1based), 0, NULL, HFILL }},
3354 { &hf_ipmi_trn_serial45_src_ipaddr,
3355 { "Source IP Address",
3356 "ipmi.serial45.src_ipaddr", FT_IPv4, BASE_NONE, NULL, 0, NULL, HFILL }},
3357 { &hf_ipmi_trn_serial45_dst_ipaddr,
3358 { "Destination IP Address",
3359 "ipmi.serial45.dst_ipaddr", FT_IPv4, BASE_NONE, NULL, 0, NULL, HFILL }},
3360 { &hf_ipmi_trn_serial46_tx_bufsize,
3361 { "Transmit Buffer Size",
3362 "ipmi.serial46.tx_size", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
3363 { &hf_ipmi_trn_serial47_rx_bufsize,
3364 { "Receive Buffer Size",
3365 "ipmi.serial47.rx_size", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
3366 { &hf_ipmi_trn_serial48_ipaddr,
3367 { "Remote Console IP Address",
3368 "ipmi.serial48.ipaddr", FT_IPv4, BASE_NONE, NULL, 0, NULL, HFILL }},
3369 { &hf_ipmi_trn_serial49_blockno,
3370 { "Block number",
3371 "ipmi.serial49.blockno", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3372 { &hf_ipmi_trn_serial49_dialstr,
3373 { "Dial string",
3374 "ipmi.serial49.dialstr", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
3375 { &hf_ipmi_trn_serial50_115200,
3376 { "115200",
3377 "ipmi.serial50.115200", FT_BOOLEAN, 8, NULL, 0x10, NULL, HFILL }},
3378 { &hf_ipmi_trn_serial50_57600,
3379 { "57600",
3380 "ipmi.serial50.57600", FT_BOOLEAN, 8, NULL, 0x08, NULL, HFILL }},
3381 { &hf_ipmi_trn_serial50_38400,
3382 { "38400",
3383 "ipmi.serial50.38400", FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL }},
3384 { &hf_ipmi_trn_serial50_19200,
3385 { "19200",
3386 "ipmi.serial50.19200", FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL }},
3387 { &hf_ipmi_trn_serial50_9600,
3388 { "9600",
3389 "ipmi.serial50.9600", FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }},
3390 { &hf_ipmi_trn_serial51_port_assoc_sel,
3391 { "Serial Port Association Entry",
3392 "ipmi.serial51.port_assoc_sel", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3393 { &hf_ipmi_trn_serial51_ipmi_channel,
3394 { "IPMI Channel",
3395 "ipmi.serial51.ipmi_channel", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_channel), 0xf0, NULL, HFILL }},
3396 { &hf_ipmi_trn_serial51_conn_num,
3397 { "Connector number",
3398 "ipmi.serial51.conn_num", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
3399 { &hf_ipmi_trn_serial51_ipmi_sharing,
3400 { "Used with IPMI Serial Port Sharing",
3401 "ipmi.serial51.ipmi_sharing", FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }},
3402 { &hf_ipmi_trn_serial51_ipmi_sol,
3403 { "Used with IPMI Serial-over-LAN",
3404 "ipmi.serial51.ipmi_sol", FT_BOOLEAN, 8, NULL, 0x40, NULL, HFILL }},
3405 { &hf_ipmi_trn_serial51_chan_num,
3406 { "Serial controller channel number",
3407 "ipmi.serial51.chan_num", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
3408 { &hf_ipmi_trn_serial52_port_assoc_sel,
3409 { "Serial Port Association Entry",
3410 "ipmi.serial52.port_assoc_sel", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3411 { &hf_ipmi_trn_serial52_conn_name,
3412 { "Connector Name",
3413 "ipmi.serial52_conn_name", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
3414 { &hf_ipmi_trn_serial53_port_assoc_sel,
3415 { "Serial Port Association Entry",
3416 "ipmi.serial53.port_assoc_sel", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3417 { &hf_ipmi_trn_serial53_chan_name,
3418 { "Channel Name",
3419 "ipmi.serial52_chan_name", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
3421 { &hf_ipmi_trn_01_chan,
3422 { "Channel",
3423 "ipmi.tr01.chan", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_channel), 0x0f, NULL, HFILL }},
3424 { &hf_ipmi_trn_01_param,
3425 { "Parameter Selector",
3426 "ipmi.tr01.param", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3427 { &hf_ipmi_trn_01_param_data,
3428 { "Parameter data",
3429 "ipmi.tr01.param_data", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
3431 { &hf_ipmi_trn_02_getrev,
3432 { "Get parameter revision only",
3433 "ipmi.tr02.getrev", FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }},
3434 { &hf_ipmi_trn_02_chan,
3435 { "Channel",
3436 "ipmi.tr02.chan", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_channel), 0x0f, NULL, HFILL }},
3437 { &hf_ipmi_trn_02_param,
3438 { "Parameter selector",
3439 "ipmi.tr02.param", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3440 { &hf_ipmi_trn_02_set,
3441 { "Set selector",
3442 "ipmi.tr02.set", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
3443 { &hf_ipmi_trn_02_block,
3444 { "Block selector",
3445 "ipmi.tr02.block", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
3446 { &hf_ipmi_trn_02_rev_present,
3447 { "Present parameter revision",
3448 "ipmi.tr02.rev.present", FT_UINT8, BASE_DEC, NULL, 0xf0, NULL, HFILL }},
3449 { &hf_ipmi_trn_02_rev_compat,
3450 { "Oldest forward-compatible",
3451 "ipmi.tr02.rev.compat", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
3452 { &hf_ipmi_trn_02_param_data,
3453 { "Parameter data",
3454 "ipmi.tr02.param_data", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
3456 { &hf_ipmi_trn_03_chan,
3457 { "Channel",
3458 "ipmi.tr03.chan", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_channel), 0x0f, NULL, HFILL }},
3459 { &hf_ipmi_trn_03_arp_resp,
3460 { "BMC-generated ARP responses",
3461 "ipmi.tr03.arp_resp", FT_BOOLEAN, 8, TFS(&tfs_03_suspend), 0x02, NULL, HFILL }},
3462 { &hf_ipmi_trn_03_gratuitous_arp,
3463 { "Gratuitous ARPs",
3464 "ipmi.tr03.gratuitous_arp", FT_BOOLEAN, 8, TFS(&tfs_03_suspend), 0x01, NULL, HFILL }},
3465 { &hf_ipmi_trn_03_status_arp_resp,
3466 { "ARP Response status",
3467 "ipmi.tr03.status_arp_resp", FT_BOOLEAN, 8, TFS(&tfs_03_arp_status), 0x02, NULL, HFILL }},
3468 { &hf_ipmi_trn_03_status_gratuitous_arp,
3469 { "Gratuitous ARP status",
3470 "ipmi.tr03.status_gratuitous_arp", FT_BOOLEAN, 8, TFS(&tfs_03_arp_status), 0x01, NULL, HFILL }},
3472 { &hf_ipmi_trn_04_chan,
3473 { "Channel",
3474 "ipmi.tr04.chan", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_channel), 0x0f, NULL, HFILL }},
3475 { &hf_ipmi_trn_04_clear,
3476 { "Statistics",
3477 "ipmi.tr04.clear", FT_BOOLEAN, 8, TFS(&tfs_04_clear), 0x01, NULL, HFILL }},
3478 { &hf_ipmi_trn_04_rx_ippkts,
3479 { "Received IP Packets",
3480 "ipmi.tr04.rx_ippkts", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
3481 { &hf_ipmi_trn_04_rx_iphdr_err,
3482 { "Received IP Header Errors",
3483 "ipmi.tr04.rx_iphdr_err", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
3484 { &hf_ipmi_trn_04_rx_ipaddr_err,
3485 { "Received IP Address Errors",
3486 "ipmi.tr04.rx_ipaddr_err", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
3487 { &hf_ipmi_trn_04_rx_ippkts_frag,
3488 { "Received Fragmented IP Packets",
3489 "ipmi.tr04.rx_ippkts_frag", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
3490 { &hf_ipmi_trn_04_tx_ippkts,
3491 { "Transmitted IP Packets",
3492 "ipmi.tr04.tx_ippkts", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
3493 { &hf_ipmi_trn_04_rx_udppkts,
3494 { "Received UDP Packets",
3495 "ipmi.tr04.rx_udppkts", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
3496 { &hf_ipmi_trn_04_rx_validrmcp,
3497 { "Received Valid RMCP Packets",
3498 "ipmi.tr04.rx_validrmcp", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
3499 { &hf_ipmi_trn_04_rx_udpproxy,
3500 { "Received UDP Proxy Packets",
3501 "ipmi.tr04.rx_udpproxy", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
3502 { &hf_ipmi_trn_04_dr_udpproxy,
3503 { "Dropped UDP Proxy Packets",
3504 "ipmi.tr04.dr_udpproxy", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
3506 { &hf_ipmi_trn_10_chan,
3507 { "Channel",
3508 "ipmi.tr10.chan", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_channel), 0x0f, NULL, HFILL }},
3509 { &hf_ipmi_trn_10_param,
3510 { "Parameter Selector",
3511 "ipmi.tr10.param", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3512 { &hf_ipmi_trn_10_param_data,
3513 { "Parameter data",
3514 "ipmi.tr10.param_data", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
3516 { &hf_ipmi_trn_11_getrev,
3517 { "Get parameter revision only",
3518 "ipmi.tr11.getrev", FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }},
3519 { &hf_ipmi_trn_11_chan,
3520 { "Channel",
3521 "ipmi.tr11.chan", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_channel), 0x0f, NULL, HFILL }},
3522 { &hf_ipmi_trn_11_param,
3523 { "Parameter selector",
3524 "ipmi.tr11.param", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3525 { &hf_ipmi_trn_11_set,
3526 { "Set selector",
3527 "ipmi.tr11.set", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
3528 { &hf_ipmi_trn_11_block,
3529 { "Block selector",
3530 "ipmi.tr11.block", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
3531 { &hf_ipmi_trn_11_rev_present,
3532 { "Present parameter revision",
3533 "ipmi.tr11.rev.present", FT_UINT8, BASE_DEC, NULL, 0xf0, NULL, HFILL }},
3534 { &hf_ipmi_trn_11_rev_compat,
3535 { "Oldest forward-compatible",
3536 "ipmi.tr11.rev.compat", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
3537 { &hf_ipmi_trn_11_param_data,
3538 { "Parameter data",
3539 "ipmi.tr11.param_data", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
3541 { &hf_ipmi_trn_12_chan,
3542 { "Channel",
3543 "ipmi.tr12.chan", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_channel), 0x0f, NULL, HFILL }},
3544 { &hf_ipmi_trn_12_mux_setting,
3545 { "Mux Setting",
3546 "ipmi.tr12.mux_setting", FT_UINT8, BASE_HEX, VALS(vals_12_mux), 0x0f, NULL, HFILL }},
3547 { &hf_ipmi_trn_12_sw_to_sys,
3548 { "Requests to switch to system",
3549 "ipmi.tr12.sw_to_sys", FT_BOOLEAN, 8, TFS(&tfs_12_blocked), 0x80, NULL, HFILL }},
3550 { &hf_ipmi_trn_12_sw_to_bmc,
3551 { "Requests to switch to BMC",
3552 "ipmi.tr12.sw_to_bmc", FT_BOOLEAN, 8, TFS(&tfs_12_blocked), 0x40, NULL, HFILL }},
3553 { &hf_ipmi_trn_12_alert,
3554 { "Alert in progress",
3555 "ipmi.tr12.alert", FT_BOOLEAN, 8, NULL, 0x08, NULL, HFILL }},
3556 { &hf_ipmi_trn_12_msg,
3557 { "IPMI/OEM messaging active",
3558 "ipmi.tr12.msg", FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL }},
3559 { &hf_ipmi_trn_12_req,
3560 { "Request",
3561 "ipmi.tr12.req", FT_BOOLEAN, 8, TFS(&tfs_12_req), 0x02, NULL, HFILL }},
3562 { &hf_ipmi_trn_12_mux_state,
3563 { "Mux set to",
3564 "ipmi.tr12.mux_state", FT_BOOLEAN, 8, TFS(&tfs_12_mux_state), 0x01, NULL, HFILL }},
3566 { &hf_ipmi_trn_13_chan,
3567 { "Channel",
3568 "ipmi.tr13.chan", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_channel), 0x0f, NULL, HFILL }},
3569 { &hf_ipmi_trn_13_code1,
3570 { "Last code",
3571 "ipmi.tr13.code1", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
3572 { &hf_ipmi_trn_13_code2,
3573 { "2nd code",
3574 "ipmi.tr13.code2", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
3575 { &hf_ipmi_trn_13_code3,
3576 { "3rd code",
3577 "ipmi.tr13.code3", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
3578 { &hf_ipmi_trn_13_code4,
3579 { "4th code",
3580 "ipmi.tr13.code4", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
3581 { &hf_ipmi_trn_13_code5,
3582 { "5th code",
3583 "ipmi.tr13.code5", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
3585 { &hf_ipmi_trn_14_chan,
3586 { "Channel",
3587 "ipmi.tr14.chan", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_channel), 0x0f, NULL, HFILL }},
3588 { &hf_ipmi_trn_14_block,
3589 { "Block number",
3590 "ipmi.tr14.block", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3591 { &hf_ipmi_trn_14_data,
3592 { "Block data",
3593 "ipmi.tr14.data", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
3595 { &hf_ipmi_trn_15_chan,
3596 { "Channel",
3597 "ipmi.tr15.chan", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_channel), 0x0f, NULL, HFILL }},
3598 { &hf_ipmi_trn_15_block,
3599 { "Block number",
3600 "ipmi.tr15.block", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3601 { &hf_ipmi_trn_15_data,
3602 { "Block data",
3603 "ipmi.tr15.data", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
3605 { &hf_ipmi_trn_16_chan,
3606 { "Channel",
3607 "ipmi.tr16.chan", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_channel), 0x0f, NULL, HFILL }},
3608 { &hf_ipmi_trn_16_src_port,
3609 { "Source Port",
3610 "ipmi.tr16.src_port", FT_UINT16, BASE_CUSTOM, CF_FUNC(ipmi_fmt_udpport), 0, NULL, HFILL }},
3611 { &hf_ipmi_trn_16_dst_port,
3612 { "Destination Port",
3613 "ipmi.tr16.dst_port", FT_UINT16, BASE_CUSTOM, CF_FUNC(ipmi_fmt_udpport), 0, NULL, HFILL }},
3614 { &hf_ipmi_trn_16_src_addr,
3615 { "Source IP Address",
3616 "ipmi.tr16.src_addr", FT_IPv4, BASE_NONE, NULL, 0, NULL, HFILL }},
3617 { &hf_ipmi_trn_16_dst_addr,
3618 { "Destination IP Address",
3619 "ipmi.tr16.dst_addr", FT_IPv4, BASE_NONE, NULL, 0, NULL, HFILL }},
3620 { &hf_ipmi_trn_16_bytes,
3621 { "Bytes to send",
3622 "ipmi.tr16.bytes", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
3624 { &hf_ipmi_trn_17_chan,
3625 { "Channel",
3626 "ipmi.tr17.chan", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_channel), 0x0f, NULL, HFILL }},
3627 { &hf_ipmi_trn_17_clear,
3628 { "Clear buffer",
3629 "ipmi.tr17.clear", FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }},
3630 { &hf_ipmi_trn_17_block_num,
3631 { "Block number",
3632 "ipmi.tr17.block_num", FT_UINT8, BASE_CUSTOM, CF_FUNC(tr17_fmt_blockno), 0x7f, NULL, HFILL }},
3633 { &hf_ipmi_trn_17_size,
3634 { "Number of received bytes",
3635 "ipmi.tr17.size", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
3636 { &hf_ipmi_trn_17_data,
3637 { "Block Data",
3638 "ipmi.tr17.data", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
3640 { &hf_ipmi_trn_18_state,
3641 { "Session state",
3642 "ipmi.tr18.state", FT_UINT8, BASE_HEX, VALS(vals_18_state), 0x0f, NULL, HFILL }},
3643 { &hf_ipmi_trn_18_ipmi_ver,
3644 { "IPMI Version",
3645 "ipmi.tr18.ipmi_ver", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_version), 0, NULL, HFILL }},
3647 { &hf_ipmi_trn_19_chan,
3648 { "Channel",
3649 "ipmi.tr19.chan", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_channel), 0x0f, NULL, HFILL }},
3650 { &hf_ipmi_trn_19_dest_sel,
3651 { "Destination selector",
3652 "ipmi.tr19.dest_sel", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
3654 { &hf_ipmi_trn_XX_cap_cbcp,
3655 { "CBCP callback",
3656 "ipmi.trXX.cap_cbcp", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02, NULL, HFILL }},
3657 { &hf_ipmi_trn_XX_cap_ipmi,
3658 { "IPMI callback",
3659 "ipmi.trXX.cap_ipmi", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01, NULL, HFILL }},
3660 { &hf_ipmi_trn_XX_cbcp_from_list,
3661 { "Callback to one from list of numbers",
3662 "ipmi.trXX.cbcp_from_list", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x08, NULL, HFILL }},
3663 { &hf_ipmi_trn_XX_cbcp_user,
3664 { "Callback to user-specified number",
3665 "ipmi.trXX.cbcp_user", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x04, NULL, HFILL }},
3666 { &hf_ipmi_trn_XX_cbcp_prespec,
3667 { "Callback to pre-specified number",
3668 "ipmi.trXX.cbcp_prespec", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02, NULL, HFILL }},
3669 { &hf_ipmi_trn_XX_cbcp_nocb,
3670 { "No callback",
3671 "ipmi.trXX.cbcp_nocb", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01, NULL, HFILL }},
3672 { &hf_ipmi_trn_XX_dst1,
3673 { "Callback destination 1",
3674 "ipmi.trXX.dst1", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3675 { &hf_ipmi_trn_XX_dst2,
3676 { "Callback destination 2",
3677 "ipmi.trXX.dst2", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3678 { &hf_ipmi_trn_XX_dst3,
3679 { "Callback destination 3",
3680 "ipmi.trXX.dst3", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3682 { &hf_ipmi_trn_1a_user,
3683 { "User ID",
3684 "ipmi.tr1a.user", FT_UINT8, BASE_DEC, NULL, 0x3f, NULL, HFILL }},
3685 { &hf_ipmi_trn_1a_chan,
3686 { "Channel",
3687 "ipmi.tr1a.chan", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_channel), 0x0f, NULL, HFILL }},
3689 { &hf_ipmi_trn_1b_user,
3690 { "User ID",
3691 "ipmi.tr1b.user", FT_UINT8, BASE_DEC, NULL, 0x3f, NULL, HFILL }},
3692 { &hf_ipmi_trn_1b_chan,
3693 { "Channel",
3694 "ipmi.tr1b.chan", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_channel), 0x0f, NULL, HFILL }},
3697 static int *ett[] = {
3698 &ett_ipmi_trn_lan00_byte1,
3699 &ett_ipmi_trn_lan01_byte1,
3700 &ett_ipmi_trn_lan02_byte1,
3701 &ett_ipmi_trn_lan02_byte2,
3702 &ett_ipmi_trn_lan02_byte3,
3703 &ett_ipmi_trn_lan02_byte4,
3704 &ett_ipmi_trn_lan02_byte5,
3705 &ett_ipmi_trn_lan04_byte1,
3706 &ett_ipmi_trn_lan07_byte2,
3707 &ett_ipmi_trn_lan07_byte3,
3708 &ett_ipmi_trn_lan10_byte1,
3709 &ett_ipmi_trn_lan17_byte1,
3710 &ett_ipmi_trn_lan18_byte1,
3711 &ett_ipmi_trn_lan18_byte2,
3712 &ett_ipmi_trn_lan18_byte4,
3713 &ett_ipmi_trn_lan19_byte1,
3714 &ett_ipmi_trn_lan19_byte2,
3715 &ett_ipmi_trn_lan19_byte3,
3716 &ett_ipmi_trn_lan20_byte12,
3717 &ett_ipmi_trn_lan21_byte1,
3718 &ett_ipmi_trn_lan22_byte1,
3719 &ett_ipmi_trn_lan24_byte1,
3720 &ett_ipmi_trn_lan24_byte2,
3721 &ett_ipmi_trn_lan24_byte3,
3722 &ett_ipmi_trn_lan24_byte4,
3723 &ett_ipmi_trn_lan24_byte5,
3724 &ett_ipmi_trn_lan24_byte6,
3725 &ett_ipmi_trn_lan24_byte7,
3726 &ett_ipmi_trn_lan24_byte8,
3727 &ett_ipmi_trn_lan25_byte1,
3728 &ett_ipmi_trn_lan25_byte2,
3729 &ett_ipmi_trn_lan25_byte34,
3730 &ett_ipmi_trn_lan50_byte1,
3731 &ett_ipmi_trn_lan55_byte3,
3732 &ett_ipmi_trn_lan56_byte2,
3733 &ett_ipmi_trn_lan64_byte1,
3734 &ett_ipmi_trn_serial03_byte1,
3735 &ett_ipmi_trn_serial04_byte1,
3736 &ett_ipmi_trn_serial05_byte1,
3737 &ett_ipmi_trn_serial05_byte2,
3738 &ett_ipmi_trn_serial06_byte1,
3739 &ett_ipmi_trn_serial07_byte1,
3740 &ett_ipmi_trn_serial07_byte2,
3741 &ett_ipmi_trn_serial08_byte1,
3742 &ett_ipmi_trn_serial08_byte2,
3743 &ett_ipmi_trn_serial09_byte1,
3744 &ett_ipmi_trn_serial09_byte2,
3745 &ett_ipmi_trn_serial16_byte1,
3746 &ett_ipmi_trn_serial17_byte1,
3747 &ett_ipmi_trn_serial17_byte2,
3748 &ett_ipmi_trn_serial17_byte4,
3749 &ett_ipmi_trn_serial17_byte5,
3750 &ett_ipmi_trn_serial19_byte1,
3751 &ett_ipmi_trn_serial19_byte2,
3752 &ett_ipmi_trn_serial19_byte3,
3753 &ett_ipmi_trn_serial20_byte1,
3754 &ett_ipmi_trn_serial21_byte1,
3755 &ett_ipmi_trn_serial22_byte1,
3756 &ett_ipmi_trn_serial23_byte1,
3757 &ett_ipmi_trn_serial24_byte1,
3758 &ett_ipmi_trn_serial25_byte2,
3759 &ett_ipmi_trn_serial28_byte1,
3760 &ett_ipmi_trn_serial28_byte2,
3761 &ett_ipmi_trn_serial28_byte10,
3762 &ett_ipmi_trn_serial28_byte11,
3763 &ett_ipmi_trn_serial28_byte12,
3764 &ett_ipmi_trn_serial28_byte13,
3765 &ett_ipmi_trn_serial28_byte14,
3766 &ett_ipmi_trn_serial29_byte1,
3767 &ett_ipmi_trn_serial29_byte2,
3768 &ett_ipmi_trn_serial30_byte1,
3769 &ett_ipmi_trn_serial30_byte2,
3770 &ett_ipmi_trn_serial30_byte3,
3771 &ett_ipmi_trn_serial33_byte1,
3772 &ett_ipmi_trn_serial37_byte1,
3773 &ett_ipmi_trn_serial43_byte1,
3774 &ett_ipmi_trn_serial50_byte1,
3775 &ett_ipmi_trn_serial51_byte2,
3776 &ett_ipmi_trn_serial51_byte3,
3777 &ett_ipmi_trn_01_byte1,
3778 &ett_ipmi_trn_02_byte1,
3779 &ett_ipmi_trn_02_rev,
3780 &ett_ipmi_trn_03_rq_byte1,
3781 &ett_ipmi_trn_03_rq_byte2,
3782 &ett_ipmi_trn_03_rs_byte1,
3783 &ett_ipmi_trn_04_byte1,
3784 &ett_ipmi_trn_04_byte2,
3785 &ett_ipmi_trn_10_byte1,
3786 &ett_ipmi_trn_11_byte1,
3787 &ett_ipmi_trn_11_rev,
3788 &ett_ipmi_trn_12_rq_byte1,
3789 &ett_ipmi_trn_12_rq_byte2,
3790 &ett_ipmi_trn_12_rs_byte1,
3791 &ett_ipmi_trn_13_byte1,
3792 &ett_ipmi_trn_14_byte1,
3793 &ett_ipmi_trn_15_byte1,
3794 &ett_ipmi_trn_16_byte1,
3795 &ett_ipmi_trn_17_byte1,
3796 &ett_ipmi_trn_17_byte2,
3797 &ett_ipmi_trn_18_byte1,
3798 &ett_ipmi_trn_19_byte1,
3799 &ett_ipmi_trn_19_byte2,
3800 &ett_ipmi_trn_XX_usercap,
3801 &ett_ipmi_trn_XX_cbcp,
3802 &ett_ipmi_trn_1a_byte1,
3803 &ett_ipmi_trn_1a_byte2,
3804 &ett_ipmi_trn_1b_byte1,
3805 &ett_ipmi_trn_1b_byte2,
3806 &ett_ipmi_trn_parameter
3809 static ei_register_info ei[] = {
3810 { &ei_ipmi_trn_02_request_param_rev, { "ipmi.tr02.request_param_rev", PI_PROTOCOL, PI_NOTE, "Requested parameter revision; parameter data returned", EXPFILL }},
3811 { &ei_ipmi_trn_02_request_param_data, { "ipmi.tr02.mrequest_param_data", PI_PROTOCOL, PI_NOTE, "Requested parameter data; only parameter version returned", EXPFILL }},
3812 { &ei_ipmi_trn_11_request_param_rev, { "ipmi.tr11.request_param_rev", PI_PROTOCOL, PI_NOTE, "Requested parameter revision; parameter data returned", EXPFILL }},
3813 { &ei_ipmi_trn_11_request_param_data, { "ipmi.tr11.mrequest_param_data", PI_PROTOCOL, PI_NOTE, "Requested parameter data; only parameter version returned", EXPFILL }},
3816 expert_module_t* expert_ipmi_trn;
3818 proto_register_field_array(proto_ipmi, hf, array_length(hf));
3819 proto_register_subtree_array(ett, array_length(ett));
3820 expert_ipmi_trn = expert_register_protocol(proto_ipmi);
3821 expert_register_field_array(expert_ipmi_trn, ei, array_length(ei));
3822 ipmi_register_netfn_cmdtab(IPMI_TRANSPORT_REQ, IPMI_OEM_NONE, NULL, 0, NULL,
3823 cmd_transport, array_length(cmd_transport));
3827 * Editor modelines - https://www.wireshark.org/tools/modelines.html
3829 * Local variables:
3830 * c-basic-offset: 8
3831 * tab-width: 8
3832 * indent-tabs-mode: t
3833 * End:
3835 * vi: set shiftwidth=8 tabstop=8 noexpandtab:
3836 * :indentSize=8:tabSize=8:noTabs=false: