Coverage Report

Created: 2026-03-30 07:00

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/wireshark/epan/dissectors/packet-ipmi-transport.c
Line
Count
Source
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>
5
 *
6
 * Wireshark - Network traffic analyzer
7
 * By Gerald Combs <gerald@wireshark.org>
8
 * Copyright 1998 Gerald Combs
9
 *
10
 * SPDX-License-Identifier: GPL-2.0-or-later
11
 */
12
13
#include "config.h"
14
15
#include <epan/packet.h>
16
#include <epan/tfs.h>
17
#include <wsutil/array.h>
18
#include "packet-ipmi.h"
19
20
void proto_register_ipmi_transport(void);
21
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;
131
132
static int hf_ipmi_trn_lan00_sip;
133
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;
139
140
static int hf_ipmi_trn_lan03_ip;
141
142
static int hf_ipmi_trn_lan04_ipsrc;
143
144
static int hf_ipmi_trn_lan05_ether;
145
146
static int hf_ipmi_trn_lan06_subnet;
147
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;
152
153
static int hf_ipmi_trn_lan08_rmcp_port;
154
155
static int hf_ipmi_trn_lan09_rmcp_port;
156
157
static int hf_ipmi_trn_lan10_responses;
158
static int hf_ipmi_trn_lan10_gratuitous;
159
160
static int hf_ipmi_trn_lan11_arp_interval;
161
162
static int hf_ipmi_trn_lan12_def_gw_ip;
163
164
static int hf_ipmi_trn_lan13_def_gw_mac;
165
166
static int hf_ipmi_trn_lan14_bkp_gw_ip;
167
168
static int hf_ipmi_trn_lan15_bkp_gw_mac;
169
170
static int hf_ipmi_trn_lan16_comm_string;
171
172
static int hf_ipmi_trn_lan17_num_dst;
173
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;
179
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;
186
187
static int hf_ipmi_trn_lan20_vlan_id_enable;
188
static int hf_ipmi_trn_lan20_vlan_id;
189
190
static int hf_ipmi_trn_lan21_vlan_prio;
191
192
static int hf_ipmi_trn_lan22_num_cs_entries;
193
194
static int hf_ipmi_trn_lan23_cs_entry;
195
196
static int hf_ipmi_trn_lan24_priv1;
197
static int hf_ipmi_trn_lan24_priv2;
198
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;
205
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;
210
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;
214
215
static int hf_ipmi_trn_lan51_enables;
216
217
static int hf_ipmi_trn_lan52_traffic_class;
218
219
static int hf_ipmi_trn_lanXX_hop_limit;
220
221
static int hf_ipmi_trn_lan54_flow_label;
222
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;
227
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;
234
235
static int hf_ipmi_trn_lanXX_max_duid_blocks;
236
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;
240
241
static int hf_ipmi_trn_lanXX_timing_support;
242
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;
266
267
static int hf_ipmi_trn_lan64_static_cfg;
268
static int hf_ipmi_trn_lan64_dynamic_cfg;
269
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;
273
274
static int hf_ipmi_trn_lan73_num_dynamic_sets;
275
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;
289
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;
294
295
static int hf_ipmi_trn_serial04_timeout;
296
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;
306
307
static int hf_ipmi_trn_serial06_inactivity;
308
static int hf_ipmi_trn_serial06_dcd;
309
310
static int hf_ipmi_trn_serial07_flowctl;
311
static int hf_ipmi_trn_serial07_dtrhangup;
312
static int hf_ipmi_trn_serial07_bitrate;
313
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;
325
326
static int hf_ipmi_trn_serial09_ring_duration;
327
static int hf_ipmi_trn_serial09_ring_dead;
328
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;
336
337
static int hf_ipmi_trn_serial16_ndest;
338
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;
351
352
static int hf_ipmi_trn_serial18_call_retry;
353
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;
361
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;
377
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;
392
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;
414
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;
433
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;
446
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;
457
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;
461
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;
470
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;
476
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;
488
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;
492
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;
501
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;
510
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;
517
518
static int hf_ipmi_trn_14_chan;
519
static int hf_ipmi_trn_14_block;
520
static int hf_ipmi_trn_14_data;
521
522
static int hf_ipmi_trn_15_chan;
523
static int hf_ipmi_trn_15_block;
524
static int hf_ipmi_trn_15_data;
525
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;
532
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;
538
539
static int hf_ipmi_trn_18_state;
540
static int hf_ipmi_trn_18_ipmi_ver;
541
542
static int hf_ipmi_trn_19_chan;
543
static int hf_ipmi_trn_19_dest_sel;
544
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;
554
555
static int hf_ipmi_trn_1a_user;
556
static int hf_ipmi_trn_1a_chan;
557
558
static int hf_ipmi_trn_1b_user;
559
static int hf_ipmi_trn_1b_chan;
560
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;
565
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 }
572
};
573
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 }
581
};
582
583
static const struct true_false_string lan18_ack_tfs = {
584
  "Acknowledged", "Unacknowledged"
585
};
586
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 }
592
};
593
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 }
598
};
599
600
static const struct true_false_string lan19_gw_sel_tfs = {
601
  "Use backup gateway", "Use default gateway"
602
};
603
604
static const struct true_false_string lan20_enable_tfs = {
605
  "Enabled", "Disabled"
606
};
607
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 }
616
};
617
618
static const value_string lan25_af_vals[] = {
619
  { 0x00, "VLAN ID not used" },
620
  { 0x01, "802.1q VLAN TAG" },
621
  { 0, NULL }
622
};
623
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 }
629
};
630
631
static const value_string lanXX_addr_type[] = {
632
  { 0, "Static" },
633
  { 1, "SLAAC" },
634
  { 2, "DHCPv6" },
635
  { 0, NULL }
636
};
637
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 }
646
};
647
648
static const value_string lanXX_timing_support[] = {
649
  { 0, "Not supported" },
650
  { 1, "Global" },
651
  { 2, "Per interface" },
652
  { 0, NULL }
653
};
654
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 }
661
};
662
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 }
670
};
671
672
static const struct true_false_string serial03_connmode_tfs = {
673
  "Direct Connect", "Modem Connect"
674
};
675
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 }
685
};
686
687
static const struct true_false_string serial19_stopbits_tfs = {
688
  "2 stop bits", "1 stop bit"
689
};
690
691
static const struct true_false_string serial19_charsize_tfs = {
692
  "7-bit", "8-bit"
693
};
694
695
static const value_string serial19_parity_vals[] = {
696
  { 0x00, "No" },
697
  { 0x01, "Odd" },
698
  { 0x02, "Even" },
699
  { 0, NULL }
700
};
701
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 }
707
};
708
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 }
714
};
715
716
static const value_string serial29_delete_vals[] = {
717
  { 0x00, "<del>" },
718
  { 0x01, "<bksp><sp><bksp>" },
719
  { 0, NULL }
720
};
721
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 }
730
};
731
732
static const value_string serial29_i_nl_vals[] = {
733
  { 0x01, "<CR>" },
734
  { 0x02, "<NUL>" },
735
  { 0, NULL }
736
};
737
738
static const value_string serial30_snoopctl_vals[] = {
739
  { 0x00, "BMC uses Transmit ACCM" },
740
  { 0x01, "BMC uses Snoop ACCM" },
741
  { 0, NULL }
742
};
743
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 }
749
};
750
751
static const struct true_false_string serial30_filter_tfs = {
752
  "Using Transmit ACCM", "Assuming all control chars escaped"
753
};
754
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 }
760
};
761
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 }
770
};
771
772
static const struct true_false_string tfs_03_suspend = {
773
  "Suspend", "Do not suspend"
774
};
775
776
static const struct true_false_string tfs_03_arp_status = {
777
  "Occurring", "Suspended"
778
};
779
780
static const struct true_false_string tfs_04_clear = {
781
  "Clear", "Do not clear"
782
};
783
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 }
795
};
796
797
static const struct true_false_string tfs_12_blocked = {
798
  "blocked", "allowed"
799
};
800
801
static const struct true_false_string tfs_12_req = {
802
  "accepted/forced", "rejected"
803
};
804
805
static const struct true_false_string tfs_12_mux_state = {
806
  "BMC", "system"
807
};
808
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 }
814
};
815
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 };
818
819
static void
820
lan_serial_00(tvbuff_t *tvb, proto_tree *tree)
821
0
{
822
0
  static int * const byte1[] = { &hf_ipmi_trn_lan00_sip, NULL };
823
824
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL, ett_ipmi_trn_lan00_byte1,
825
0
      byte1, ENC_LITTLE_ENDIAN, 0);
826
0
}
827
828
static void
829
lan_serial_01(tvbuff_t *tvb, proto_tree *tree)
830
0
{
831
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, "Authentication types supported: ",
832
0
      "No authentication types supported for this channel", ett_ipmi_trn_lan01_byte1,
833
0
      lanXX_authtypes_byte, ENC_LITTLE_ENDIAN, 0);
834
0
}
835
836
static void
837
lan_serial_02(tvbuff_t *tvb, proto_tree *tree)
838
0
{
839
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, "Authentication types for Callback level: ",
840
0
      "No authentication types enabled", ett_ipmi_trn_lan02_byte1,
841
0
      lanXX_authtypes_byte, ENC_LITTLE_ENDIAN, 0);
842
0
  proto_tree_add_bitmask_text(tree, tvb, 1, 1, "Authentication types for User level: ",
843
0
      "No authentication types enabled", ett_ipmi_trn_lan02_byte2,
844
0
      lanXX_authtypes_byte, ENC_LITTLE_ENDIAN, 0);
845
0
  proto_tree_add_bitmask_text(tree, tvb, 2, 1, "Authentication types for Operator level: ",
846
0
      "No authentication types enabled", ett_ipmi_trn_lan02_byte3,
847
0
      lanXX_authtypes_byte, ENC_LITTLE_ENDIAN, 0);
848
0
  proto_tree_add_bitmask_text(tree, tvb, 3, 1, "Authentication types for Administrator level: ",
849
0
      "No authentication types enabled", ett_ipmi_trn_lan02_byte4,
850
0
      lanXX_authtypes_byte, ENC_LITTLE_ENDIAN, 0);
851
0
  proto_tree_add_bitmask_text(tree, tvb, 4, 1, "Authentication types for OEM level: ",
852
0
      "No authentication types enabled", ett_ipmi_trn_lan02_byte5,
853
0
      lanXX_authtypes_byte, ENC_LITTLE_ENDIAN, 0);
854
0
}
855
856
static void
857
lan_03(tvbuff_t *tvb, proto_tree *tree)
858
0
{
859
0
  proto_tree_add_item(tree, hf_ipmi_trn_lan03_ip, tvb, 0, 4, ENC_BIG_ENDIAN);
860
0
}
861
862
static void
863
lan_04(tvbuff_t *tvb, proto_tree *tree)
864
0
{
865
0
  static int * const byte1[] = { &hf_ipmi_trn_lan04_ipsrc, NULL };
866
867
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL, ett_ipmi_trn_lan04_byte1,
868
0
      byte1, ENC_LITTLE_ENDIAN, 0);
869
0
}
870
871
static void
872
lan_05(tvbuff_t *tvb, proto_tree *tree)
873
0
{
874
0
  proto_tree_add_item(tree, hf_ipmi_trn_lan05_ether, tvb, 0, 6, ENC_NA);
875
0
}
876
877
static void
878
lan_06(tvbuff_t *tvb, proto_tree *tree)
879
0
{
880
0
  proto_tree_add_item(tree, hf_ipmi_trn_lan06_subnet, tvb, 0, 4, ENC_BIG_ENDIAN);
881
0
}
882
883
static void
884
lan_07(tvbuff_t *tvb, proto_tree *tree)
885
0
{
886
0
  static int * const byte2[] = { &hf_ipmi_trn_lan07_flags, NULL };
887
0
  static int * const byte3[] = { &hf_ipmi_trn_lan07_precedence, &hf_ipmi_trn_lan07_tos, NULL };
888
889
0
  proto_tree_add_item(tree, hf_ipmi_trn_lan07_ttl, tvb, 0, 1, ENC_LITTLE_ENDIAN);
890
0
  proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL, ett_ipmi_trn_lan07_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
891
0
  proto_tree_add_bitmask_text(tree, tvb, 2, 1, NULL, NULL, ett_ipmi_trn_lan07_byte3, byte3, ENC_LITTLE_ENDIAN, 0);
892
0
}
893
894
static void
895
lan_08(tvbuff_t *tvb, proto_tree *tree)
896
0
{
897
0
  proto_tree_add_item(tree, hf_ipmi_trn_lan08_rmcp_port, tvb, 0, 2, ENC_LITTLE_ENDIAN);
898
0
}
899
900
static void
901
lan_09(tvbuff_t *tvb, proto_tree *tree)
902
0
{
903
0
  proto_tree_add_item(tree, hf_ipmi_trn_lan09_rmcp_port, tvb, 0, 2, ENC_LITTLE_ENDIAN);
904
0
}
905
906
static void
907
lan_10(tvbuff_t *tvb, proto_tree *tree)
908
0
{
909
0
  static int * const byte1[] = { &hf_ipmi_trn_lan10_responses, &hf_ipmi_trn_lan10_gratuitous, NULL };
910
911
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL, ett_ipmi_trn_lan10_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
912
0
}
913
914
static void
915
lan_11(tvbuff_t *tvb, proto_tree *tree)
916
0
{
917
0
  proto_tree_add_item(tree, hf_ipmi_trn_lan11_arp_interval, tvb, 0, 1, ENC_LITTLE_ENDIAN);
918
0
}
919
920
static void
921
lan_12(tvbuff_t *tvb, proto_tree *tree)
922
0
{
923
0
  proto_tree_add_item(tree, hf_ipmi_trn_lan12_def_gw_ip, tvb, 0, 4, ENC_BIG_ENDIAN);
924
0
}
925
926
static void
927
lan_13(tvbuff_t *tvb, proto_tree *tree)
928
0
{
929
0
  proto_tree_add_item(tree, hf_ipmi_trn_lan13_def_gw_mac, tvb, 0, 6, ENC_NA);
930
0
}
931
932
static void
933
lan_14(tvbuff_t *tvb, proto_tree *tree)
934
0
{
935
0
  proto_tree_add_item(tree, hf_ipmi_trn_lan14_bkp_gw_ip, tvb, 0, 4, ENC_BIG_ENDIAN);
936
0
}
937
938
static void
939
lan_15(tvbuff_t *tvb, proto_tree *tree)
940
0
{
941
0
  proto_tree_add_item(tree, hf_ipmi_trn_lan15_bkp_gw_mac, tvb, 0, 6, ENC_NA);
942
0
}
943
944
static void
945
lan_16(tvbuff_t *tvb, proto_tree *tree)
946
0
{
947
0
  proto_tree_add_item(tree, hf_ipmi_trn_lan16_comm_string, tvb, 0, 18, ENC_ASCII);
948
0
}
949
950
static void
951
lan_17(tvbuff_t *tvb, proto_tree *tree)
952
0
{
953
0
  static int * const byte1[] = { &hf_ipmi_trn_lan17_num_dst, NULL };
954
955
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL, ett_ipmi_trn_lan17_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
956
0
}
957
958
static void
959
lan_18(tvbuff_t *tvb, proto_tree *tree)
960
0
{
961
0
  static int * const byte1[] = { &hf_ipmi_trn_lan18_dst_selector, NULL };
962
0
  static int * const byte2[] = { &hf_ipmi_trn_lan18_ack, &hf_ipmi_trn_lan18_dst_type, NULL };
963
0
  static int * const byte4[] = { &hf_ipmi_trn_lan18_retries, NULL };
964
965
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL, ett_ipmi_trn_lan18_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
966
0
  proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL, ett_ipmi_trn_lan18_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
967
0
  proto_tree_add_item(tree, hf_ipmi_trn_lan18_tout, tvb, 2, 1, ENC_LITTLE_ENDIAN);
968
0
  proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL, ett_ipmi_trn_lan18_byte4, byte4, ENC_LITTLE_ENDIAN, 0);
969
0
}
970
971
static void
972
lan_19(tvbuff_t *tvb, proto_tree *tree)
973
0
{
974
0
  static int * const byte1[] = { &hf_ipmi_trn_lan19_dst_selector, NULL };
975
0
  static int * const byte2[] = { &hf_ipmi_trn_lan19_addr_format, NULL };
976
0
  static int * const byte3[] = { &hf_ipmi_trn_lan19_gw_sel, NULL };
977
0
  uint8_t v;
978
979
0
  v = tvb_get_uint8(tvb, 1) >> 4;
980
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL, ett_ipmi_trn_lan19_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
981
0
  proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL, ett_ipmi_trn_lan19_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
982
983
0
  if (v == 0) {
984
0
    proto_tree_add_bitmask_text(tree, tvb, 2, 1, NULL, NULL, ett_ipmi_trn_lan19_byte3, byte3, ENC_LITTLE_ENDIAN, 0);
985
0
    proto_tree_add_item(tree, hf_ipmi_trn_lan19_ip, tvb, 3, 4, ENC_BIG_ENDIAN);
986
0
    proto_tree_add_item(tree, hf_ipmi_trn_lan19_mac, tvb, 7, 6, ENC_NA);
987
0
    return;
988
0
  } else if (v == 1) {
989
0
    proto_tree_add_item(tree, hf_ipmi_trn_lanXX_addr, tvb, 2, 16, ENC_NA);
990
0
    return;
991
0
  }
992
993
0
  proto_tree_add_item(tree, hf_ipmi_trn_lan19_address, tvb, 2, -1, ENC_NA);
994
0
}
995
996
static void
997
lan_20(tvbuff_t *tvb, proto_tree *tree)
998
0
{
999
0
  static int * const byte12[] = { &hf_ipmi_trn_lan20_vlan_id_enable, &hf_ipmi_trn_lan20_vlan_id, NULL };
1000
1001
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 2, NULL, NULL, ett_ipmi_trn_lan20_byte12, byte12, ENC_LITTLE_ENDIAN, 0);
1002
0
}
1003
1004
static void
1005
lan_21(tvbuff_t *tvb, proto_tree *tree)
1006
0
{
1007
0
  static int * const byte1[] = { &hf_ipmi_trn_lan21_vlan_prio, NULL };
1008
1009
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL, ett_ipmi_trn_lan21_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1010
0
}
1011
1012
static void
1013
lan_22(tvbuff_t *tvb, proto_tree *tree)
1014
0
{
1015
0
  static int * const byte1[] = { &hf_ipmi_trn_lan22_num_cs_entries, NULL };
1016
1017
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL, ett_ipmi_trn_lan22_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1018
0
}
1019
1020
static void
1021
lan_23(tvbuff_t *tvb, proto_tree *tree)
1022
0
{
1023
0
  unsigned i;
1024
0
  uint8_t v;
1025
1026
0
  for (i = 0; i < 16; i++) {
1027
0
    v = tvb_get_uint8(tvb, i + 1);
1028
0
    proto_tree_add_uint_format(tree, hf_ipmi_trn_lan23_cs_entry, tvb, i + 1, 1,
1029
0
        v, "Cipher Suite ID entry %c: %u", 'A' + i, v);
1030
0
  }
1031
0
}
1032
1033
static void
1034
lan_24(tvbuff_t *tvb, proto_tree *tree)
1035
0
{
1036
0
  static int * const ett[] = { &ett_ipmi_trn_lan24_byte1, &ett_ipmi_trn_lan24_byte2, &ett_ipmi_trn_lan24_byte3,
1037
0
    &ett_ipmi_trn_lan24_byte4, &ett_ipmi_trn_lan24_byte5, &ett_ipmi_trn_lan24_byte6, &ett_ipmi_trn_lan24_byte7,
1038
0
    &ett_ipmi_trn_lan24_byte8 };
1039
0
  proto_tree *s_tree;
1040
0
  unsigned i;
1041
0
  uint8_t v, v1, v2;
1042
1043
0
  for (i = 0; i < 8; i++) {
1044
0
    v = tvb_get_uint8(tvb, i + 1);
1045
0
    v1 = v & 0x0f;
1046
0
    v2 = v >> 4;
1047
0
    s_tree = proto_tree_add_subtree_format(tree, tvb, i + 1, 1,
1048
0
        *ett[i], NULL, "Cipher Suite #%d: %s (0x%02x), Cipher Suite #%d: %s (0x%02x)",
1049
0
        i * 2 + 1, val_to_str_const(v1, lan24_priv_vals, "Reserved"), v1,
1050
0
        i * 2 + 2, val_to_str_const(v2, lan24_priv_vals, "Reserved"), v2);
1051
0
    proto_tree_add_uint_format_value(s_tree, hf_ipmi_trn_lan24_priv1, tvb, i + 1, 1,
1052
0
        v2 << 4, " #%d: %s (0x%02x)", i * 2 + 2, val_to_str_const(v2, lan24_priv_vals, "Reserved"), v2);
1053
0
    proto_tree_add_uint_format_value(s_tree, hf_ipmi_trn_lan24_priv2, tvb, i + 1, 1,
1054
0
        v1, " #%d: %s (0x%02x)", i * 2 + 1, val_to_str_const(v1, lan24_priv_vals, "Reserved"), v1);
1055
0
  }
1056
0
}
1057
1058
static void
1059
lan_25(tvbuff_t *tvb, proto_tree *tree)
1060
0
{
1061
0
  static int * const byte1[] = { &hf_ipmi_trn_lan25_dst_selector, NULL };
1062
0
  static int * const byte2[] = { &hf_ipmi_trn_lan25_addr_format, NULL };
1063
0
  static int * const byte34[] = { &hf_ipmi_trn_lan25_uprio, &hf_ipmi_trn_lan25_cfi, &hf_ipmi_trn_lan25_vlan_id, NULL };
1064
0
  uint8_t v;
1065
1066
0
  v = tvb_get_uint8(tvb, 1) >> 4;
1067
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL, ett_ipmi_trn_lan25_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1068
0
  proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL, ett_ipmi_trn_lan25_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
1069
0
  switch (v) {
1070
0
    case 0:
1071
0
      break;
1072
0
    case 1:
1073
0
      proto_tree_add_bitmask_text(tree, tvb, 2, 2, NULL, NULL, ett_ipmi_trn_lan25_byte34,
1074
0
          byte34, ENC_LITTLE_ENDIAN, 0);
1075
0
      break;
1076
0
    default:
1077
0
      proto_tree_add_item(tree, hf_ipmi_trn_lan25_address, tvb, 2, -1, ENC_LITTLE_ENDIAN);
1078
0
      break;
1079
0
  }
1080
0
}
1081
1082
static void
1083
lan_26(tvbuff_t *tvb, proto_tree *tree)
1084
0
{
1085
0
  proto_tree_add_item(tree, hf_ipmi_trn_lan26_gen_event, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1086
0
  proto_tree_add_item(tree, hf_ipmi_trn_lan26_thresh_number, tvb, 1, 1, ENC_LITTLE_ENDIAN);
1087
0
  proto_tree_add_item(tree, hf_ipmi_trn_lan26_reset_interval, tvb, 2, 2, ENC_LITTLE_ENDIAN);
1088
0
  proto_tree_add_item(tree, hf_ipmi_trn_lan26_lock_interval, tvb, 4, 2, ENC_LITTLE_ENDIAN);
1089
0
}
1090
1091
static void
1092
lan_50(tvbuff_t *tvb, proto_tree *tree)
1093
0
{
1094
0
  static int * const byte1[] = { &hf_ipmi_trn_lan50_ipv6_only,
1095
0
      &hf_ipmi_trn_lan50_both_ipv4_ipv6,
1096
0
      &hf_ipmi_trn_lan50_ipv6_alerting, NULL };
1097
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, "Data 1",  NULL, ett_ipmi_trn_lan50_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1098
0
}
1099
1100
static void
1101
lan_51(tvbuff_t *tvb, proto_tree *tree)
1102
0
{
1103
0
  proto_tree_add_item(tree, hf_ipmi_trn_lan51_enables, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1104
0
}
1105
1106
static void
1107
lan_52(tvbuff_t *tvb, proto_tree *tree)
1108
0
{
1109
0
  proto_tree_add_item(tree, hf_ipmi_trn_lan52_traffic_class, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1110
0
}
1111
1112
static void
1113
lan_53_78(tvbuff_t *tvb, proto_tree *tree)
1114
0
{
1115
0
  proto_tree_add_item(tree, hf_ipmi_trn_lanXX_hop_limit, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1116
0
}
1117
1118
static void
1119
lan_54(tvbuff_t *tvb, proto_tree *tree)
1120
0
{
1121
0
  proto_tree_add_item(tree, hf_ipmi_trn_lan54_flow_label, tvb, 0, 3, ENC_BIG_ENDIAN);
1122
0
}
1123
1124
static void
1125
lan_55(tvbuff_t *tvb, proto_tree *tree)
1126
0
{
1127
0
  static int * const byte3[] = { &hf_ipmi_trn_lan55_dhcpv6_support,
1128
0
      &hf_ipmi_trn_lan55_slaac_support, NULL };
1129
0
  proto_tree_add_item(tree, hf_ipmi_trn_lan55_static_addr_max, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1130
0
  proto_tree_add_item(tree, hf_ipmi_trn_lan55_dynamic_addr_max, tvb, 1, 1, ENC_LITTLE_ENDIAN);
1131
0
  proto_tree_add_bitmask_text(tree, tvb, 2, 1, NULL,  NULL, ett_ipmi_trn_lan55_byte3, byte3, ENC_LITTLE_ENDIAN, 0);
1132
0
}
1133
1134
static void
1135
lan_56(tvbuff_t *tvb, proto_tree *tree)
1136
0
{
1137
0
  static int * const byte2[] = { &hf_ipmi_trn_lanXX_addr_type,
1138
0
      &hf_ipmi_trn_lanXX_addr_enable, NULL };
1139
0
  proto_tree_add_item(tree, hf_ipmi_trn_lanXX_addr_selector, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1140
0
  proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL,  NULL, ett_ipmi_trn_lan56_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
1141
0
  proto_tree_add_item(tree, hf_ipmi_trn_lanXX_addr, tvb, 2, 16, ENC_NA);
1142
0
  proto_tree_add_item(tree, hf_ipmi_trn_lanXX_prefix_len, tvb, 18, 1, ENC_LITTLE_ENDIAN);
1143
0
  if (tvb_captured_length(tvb) > 19) {
1144
0
    proto_tree_add_item(tree, hf_ipmi_trn_lanXX_addr_status, tvb, 19, 1, ENC_LITTLE_ENDIAN);
1145
0
  }
1146
0
}
1147
1148
static void
1149
lan_57_60(tvbuff_t *tvb, proto_tree *tree)
1150
0
{
1151
0
  proto_tree_add_item(tree, hf_ipmi_trn_lanXX_max_duid_blocks, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1152
0
}
1153
1154
static void
1155
lan_58_61(tvbuff_t *tvb, proto_tree *tree)
1156
0
{
1157
0
  proto_tree_add_item(tree, hf_ipmi_trn_lanXX_duid_selector, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1158
0
  proto_tree_add_item(tree, hf_ipmi_trn_lanXX_block_selector, tvb, 1, 1, ENC_LITTLE_ENDIAN);
1159
0
  proto_tree_add_item(tree, hf_ipmi_trn_lanXX_duid, tvb, 2, -1, ENC_NA);
1160
0
}
1161
1162
static void
1163
lan_59(tvbuff_t *tvb, proto_tree *tree)
1164
0
{
1165
0
  proto_tree_add_item(tree, hf_ipmi_trn_lanXX_addr_selector, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1166
0
  proto_tree_add_item(tree, hf_ipmi_trn_lanXX_addr_type, tvb, 1, 1, ENC_LITTLE_ENDIAN);
1167
0
  proto_tree_add_item(tree, hf_ipmi_trn_lanXX_addr, tvb, 2, 16, ENC_NA);
1168
0
  proto_tree_add_item(tree, hf_ipmi_trn_lanXX_prefix_len, tvb, 18, 1, ENC_LITTLE_ENDIAN);
1169
0
  proto_tree_add_item(tree, hf_ipmi_trn_lanXX_addr_status, tvb, 19, 1, ENC_LITTLE_ENDIAN);
1170
0
}
1171
1172
static void
1173
lan_62_79(tvbuff_t *tvb, proto_tree *tree)
1174
0
{
1175
0
  proto_tree_add_item(tree, hf_ipmi_trn_lanXX_timing_support, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1176
0
}
1177
1178
static void
1179
lan_63(tvbuff_t *tvb, proto_tree *tree)
1180
0
{
1181
0
  uint8_t v;
1182
1183
0
  proto_tree_add_item(tree, hf_ipmi_trn_lanXX_iface_selector, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1184
0
  proto_tree_add_item(tree, hf_ipmi_trn_lanXX_block_selector, tvb, 1, 1, ENC_LITTLE_ENDIAN);
1185
1186
0
  v = tvb_get_uint8(tvb, 1);
1187
0
  if (v == 0) {
1188
0
    proto_tree_add_item(tree, hf_ipmi_trn_lan63_sol_max_delay, tvb, 2, 1, ENC_LITTLE_ENDIAN);
1189
0
    proto_tree_add_item(tree, hf_ipmi_trn_lan63_sol_timeout, tvb, 3, 1, ENC_LITTLE_ENDIAN);
1190
0
    proto_tree_add_item(tree, hf_ipmi_trn_lan63_sol_max_rt, tvb, 4, 1, ENC_LITTLE_ENDIAN);
1191
0
    proto_tree_add_item(tree, hf_ipmi_trn_lan63_req_timeout, tvb, 5, 1, ENC_LITTLE_ENDIAN);
1192
0
    proto_tree_add_item(tree, hf_ipmi_trn_lan63_req_max_rt, tvb, 6, 1, ENC_LITTLE_ENDIAN);
1193
0
    proto_tree_add_item(tree, hf_ipmi_trn_lan63_req_max_rc, tvb, 7, 1, ENC_LITTLE_ENDIAN);
1194
0
    proto_tree_add_item(tree, hf_ipmi_trn_lan63_cnf_max_delay, tvb, 8, 1, ENC_LITTLE_ENDIAN);
1195
0
    proto_tree_add_item(tree, hf_ipmi_trn_lan63_cnf_timeout, tvb, 9, 1, ENC_LITTLE_ENDIAN);
1196
0
    proto_tree_add_item(tree, hf_ipmi_trn_lan63_cnf_max_rt, tvb, 10, 1, ENC_LITTLE_ENDIAN);
1197
0
    proto_tree_add_item(tree, hf_ipmi_trn_lan63_cnf_max_rd, tvb, 11, 1, ENC_LITTLE_ENDIAN);
1198
0
    proto_tree_add_item(tree, hf_ipmi_trn_lan63_ren_timeout, tvb, 12, 1, ENC_LITTLE_ENDIAN);
1199
0
    proto_tree_add_item(tree, hf_ipmi_trn_lan63_ren_max_rt, tvb, 13, 1, ENC_LITTLE_ENDIAN);
1200
0
    proto_tree_add_item(tree, hf_ipmi_trn_lan63_reb_timeout, tvb, 14, 1, ENC_LITTLE_ENDIAN);
1201
0
    proto_tree_add_item(tree, hf_ipmi_trn_lan63_reb_max_rt, tvb, 15, 1, ENC_LITTLE_ENDIAN);
1202
0
    proto_tree_add_item(tree, hf_ipmi_trn_lan63_inf_max_delay, tvb, 16, 1, ENC_LITTLE_ENDIAN);
1203
0
    proto_tree_add_item(tree, hf_ipmi_trn_lan63_inf_timeout, tvb, 17, 1, ENC_LITTLE_ENDIAN);
1204
0
  } else if (v == 1) {
1205
0
    proto_tree_add_item(tree, hf_ipmi_trn_lan63_inf_max_rt, tvb, 2, 1, ENC_LITTLE_ENDIAN);
1206
0
    proto_tree_add_item(tree, hf_ipmi_trn_lan63_rel_timeout, tvb, 3, 1, ENC_LITTLE_ENDIAN);
1207
0
    proto_tree_add_item(tree, hf_ipmi_trn_lan63_rel_max_rc, tvb, 4, 1, ENC_LITTLE_ENDIAN);
1208
0
    proto_tree_add_item(tree, hf_ipmi_trn_lan63_dec_timeout, tvb, 5, 1, ENC_LITTLE_ENDIAN);
1209
0
    proto_tree_add_item(tree, hf_ipmi_trn_lan63_dec_max_rc, tvb, 6, 1, ENC_LITTLE_ENDIAN);
1210
0
    proto_tree_add_item(tree, hf_ipmi_trn_lan63_hop_count_limit, tvb, 7, 1, ENC_LITTLE_ENDIAN);
1211
0
    proto_tree_add_item(tree, hf_ipmi_trn_01_param_data, tvb, 8, -1, ENC_NA);
1212
0
  } else {
1213
0
    proto_tree_add_item(tree, hf_ipmi_trn_01_param_data, tvb, 2, -1, ENC_NA);
1214
0
  }
1215
0
}
1216
1217
static void
1218
lan_64(tvbuff_t *tvb, proto_tree *tree)
1219
0
{
1220
0
  static int * const byte1[] = { &hf_ipmi_trn_lan64_static_cfg,
1221
0
      &hf_ipmi_trn_lan64_dynamic_cfg, NULL };
1222
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL,  NULL, ett_ipmi_trn_lan64_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1223
0
}
1224
1225
static void
1226
lan_65_69(tvbuff_t *tvb, proto_tree *tree)
1227
0
{
1228
0
  proto_tree_add_item(tree, hf_ipmi_trn_lanXX_addr, tvb, 0, 16, ENC_NA);
1229
0
}
1230
1231
static void
1232
lan_66_70(tvbuff_t *tvb, proto_tree *tree)
1233
0
{
1234
0
  proto_tree_add_item(tree, hf_ipmi_trn_lanXX_router_mac, tvb, 0, 6, ENC_NA);
1235
0
}
1236
1237
static void
1238
lan_67_71(tvbuff_t *tvb, proto_tree *tree)
1239
0
{
1240
0
  proto_tree_add_item(tree, hf_ipmi_trn_lanXX_prefix_len, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1241
0
}
1242
1243
static void
1244
lan_68_72(tvbuff_t *tvb, proto_tree *tree)
1245
0
{
1246
0
  proto_tree_add_item(tree, hf_ipmi_trn_lanXX_router_prefix, tvb, 0, 16, ENC_NA);
1247
0
}
1248
1249
static void
1250
lan_73(tvbuff_t *tvb, proto_tree *tree)
1251
0
{
1252
0
  proto_tree_add_item(tree, hf_ipmi_trn_lan73_num_dynamic_sets, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1253
0
}
1254
1255
static void
1256
lan_74(tvbuff_t *tvb, proto_tree *tree)
1257
0
{
1258
0
  proto_tree_add_item(tree, hf_ipmi_trn_lanXX_router_selector, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1259
0
  proto_tree_add_item(tree, hf_ipmi_trn_lanXX_addr, tvb, 1, 16, ENC_NA);
1260
0
}
1261
1262
static void
1263
lan_75(tvbuff_t *tvb, proto_tree *tree)
1264
0
{
1265
0
  proto_tree_add_item(tree, hf_ipmi_trn_lanXX_router_selector, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1266
0
  proto_tree_add_item(tree, hf_ipmi_trn_lanXX_router_mac, tvb, 1, 6, ENC_NA);
1267
0
}
1268
1269
static void
1270
lan_76(tvbuff_t *tvb, proto_tree *tree)
1271
0
{
1272
0
  proto_tree_add_item(tree, hf_ipmi_trn_lanXX_router_selector, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1273
0
  proto_tree_add_item(tree, hf_ipmi_trn_lanXX_prefix_len, tvb, 1, 1, ENC_LITTLE_ENDIAN);
1274
0
}
1275
1276
static void
1277
lan_77(tvbuff_t *tvb, proto_tree *tree)
1278
0
{
1279
0
  proto_tree_add_item(tree, hf_ipmi_trn_lanXX_router_selector, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1280
0
  proto_tree_add_item(tree, hf_ipmi_trn_lanXX_router_prefix, tvb, 1, 16, ENC_NA);
1281
0
}
1282
1283
static void
1284
lan_80(tvbuff_t *tvb, proto_tree *tree)
1285
0
{
1286
0
  uint8_t v;
1287
1288
0
  proto_tree_add_item(tree, hf_ipmi_trn_lanXX_iface_selector, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1289
0
  proto_tree_add_item(tree, hf_ipmi_trn_lanXX_block_selector, tvb, 1, 1, ENC_LITTLE_ENDIAN);
1290
1291
0
  v = tvb_get_uint8(tvb, 1);
1292
0
  if (v == 0) {
1293
0
    proto_tree_add_item(tree, hf_ipmi_trn_lan80_max_rtr_solicitation_delay, tvb, 2, 1, ENC_LITTLE_ENDIAN);
1294
0
    proto_tree_add_item(tree, hf_ipmi_trn_lan80_rtr_solicitation_interval, tvb, 3, 1, ENC_LITTLE_ENDIAN);
1295
0
    proto_tree_add_item(tree, hf_ipmi_trn_lan80_max_rtr_solicitations, tvb, 4, 1, ENC_LITTLE_ENDIAN);
1296
0
    proto_tree_add_item(tree, hf_ipmi_trn_lan80_dup_addr_detect_transmits, tvb, 5, 1, ENC_LITTLE_ENDIAN);
1297
0
    proto_tree_add_item(tree, hf_ipmi_trn_lan80_max_multicast_solicit, tvb, 6, 1, ENC_LITTLE_ENDIAN);
1298
0
    proto_tree_add_item(tree, hf_ipmi_trn_lan80_max_unicast_solicit, tvb, 7, 1, ENC_LITTLE_ENDIAN);
1299
0
    proto_tree_add_item(tree, hf_ipmi_trn_lan80_max_anycast_delay_time, tvb, 8, 1, ENC_LITTLE_ENDIAN);
1300
0
    proto_tree_add_item(tree, hf_ipmi_trn_lan80_max_neighbor_advertisement, tvb, 9, 1, ENC_LITTLE_ENDIAN);
1301
0
    proto_tree_add_item(tree, hf_ipmi_trn_lan80_reachable_time, tvb, 10, 1, ENC_LITTLE_ENDIAN);
1302
0
    proto_tree_add_item(tree, hf_ipmi_trn_lan80_retrans_timer, tvb, 11, 1, ENC_LITTLE_ENDIAN);
1303
0
    proto_tree_add_item(tree, hf_ipmi_trn_lan80_delay_first_probe_time, tvb, 12, 1, ENC_LITTLE_ENDIAN);
1304
0
    proto_tree_add_item(tree, hf_ipmi_trn_lan80_max_random_factor, tvb, 13, 1, ENC_LITTLE_ENDIAN);
1305
0
    proto_tree_add_item(tree, hf_ipmi_trn_lan80_min_random_factor, tvb, 14, 1, ENC_LITTLE_ENDIAN);
1306
0
    proto_tree_add_item(tree, hf_ipmi_trn_01_param_data, tvb, 15, -1, ENC_NA);
1307
0
  } else {
1308
0
    proto_tree_add_item(tree, hf_ipmi_trn_01_param_data, tvb, 2, -1, ENC_NA);
1309
0
  }
1310
0
}
1311
1312
static const 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" },
1397
};
1398
1399
/* Set LAN Configuration Parameters
1400
 */
1401
static void
1402
rq01(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
1403
0
{
1404
0
  static int * const byte1[] = { &hf_ipmi_trn_01_chan, NULL };
1405
0
  tvbuff_t *next;
1406
0
  const char *desc;
1407
0
  uint8_t pno;
1408
1409
0
  pno = tvb_get_uint8(tvb, 1);
1410
0
  if (pno < array_length(lan_options)) {
1411
0
    desc = lan_options[pno].name;
1412
0
  } else if (pno >= 0xC0) {
1413
0
    desc = "OEM";
1414
0
  } else {
1415
0
    desc = "Reserved";
1416
0
  }
1417
1418
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL, ett_ipmi_trn_01_byte1,
1419
0
      byte1, ENC_LITTLE_ENDIAN, 0);
1420
0
  proto_tree_add_uint_format_value(tree, hf_ipmi_trn_01_param, tvb, 1, 1,
1421
0
      pno, "%s (0x%02x)", desc, pno);
1422
0
  if (pno < array_length(lan_options) && lan_options[pno].intrp) {
1423
0
    next = tvb_new_subset_remaining(tvb, 2);
1424
0
    lan_options[pno].intrp(next, tree);
1425
0
  } else {
1426
0
    proto_tree_add_item(tree, hf_ipmi_trn_01_param_data, tvb, 2, -1, ENC_NA);
1427
0
  }
1428
0
}
1429
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 }
1435
};
1436
1437
/* Get LAN Configuration Parameters
1438
 */
1439
static void
1440
rq02(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
1441
0
{
1442
0
  static int * const byte1[] = { &hf_ipmi_trn_02_getrev, &hf_ipmi_trn_02_chan, NULL };
1443
0
  const char *desc;
1444
0
  uint8_t pno;
1445
1446
0
  pno = tvb_get_uint8(tvb, 1);
1447
1448
0
  ipmi_set_data(pinfo, 0, pno);
1449
0
  ipmi_set_data(pinfo, 1, tvb_get_uint8(tvb, 0) & 0x80);
1450
1451
0
  if (!tree) {
1452
0
    return;
1453
0
  }
1454
1455
0
  if (pno < array_length(lan_options)) {
1456
0
    desc = lan_options[pno].name;
1457
0
  } else if (pno >= 0xC0) {
1458
0
    desc = "OEM";
1459
0
  } else {
1460
0
    desc = "Reserved";
1461
0
  }
1462
1463
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1464
0
      ett_ipmi_trn_02_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1465
0
  proto_tree_add_uint_format_value(tree, hf_ipmi_trn_02_param, tvb, 1, 1,
1466
0
      pno, "%s (0x%02x)", desc, pno);
1467
0
  proto_tree_add_item(tree, hf_ipmi_trn_02_set, tvb, 2, 1, ENC_LITTLE_ENDIAN);
1468
0
  proto_tree_add_item(tree, hf_ipmi_trn_02_block, tvb, 3, 1, ENC_LITTLE_ENDIAN);
1469
0
}
1470
1471
static void
1472
rs02(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
1473
0
{
1474
0
  static int * const byte1[] = { &hf_ipmi_trn_02_rev_present, &hf_ipmi_trn_02_rev_compat, NULL };
1475
0
  proto_item *ti;
1476
0
  proto_tree *subtree;
1477
0
  tvbuff_t *next;
1478
0
  const char *desc;
1479
0
  uint32_t pno, req;
1480
1481
0
  ti = proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1482
0
      ett_ipmi_trn_02_rev, byte1, ENC_LITTLE_ENDIAN, 0);
1483
1484
0
  if (!ipmi_get_data(pinfo, 0, &pno) || !ipmi_get_data(pinfo, 1, &req)) {
1485
    /* No request found - cannot parse further */
1486
0
    if (tvb_captured_length(tvb) > 1) {
1487
0
      proto_tree_add_item(tree, hf_ipmi_trn_02_param_data, tvb, 1, -1, ENC_NA);
1488
0
    };
1489
0
    return;
1490
0
  }
1491
1492
0
  if ((req & 0x80) && tvb_captured_length(tvb) > 1) {
1493
0
    expert_add_info(pinfo, ti, &ei_ipmi_trn_02_request_param_rev);
1494
0
  } else if (!(req & 0x80) && tvb_captured_length(tvb) == 1) {
1495
0
    expert_add_info(pinfo, ti, &ei_ipmi_trn_02_request_param_data);
1496
0
  }
1497
1498
0
  if (pno < array_length(lan_options)) {
1499
0
    desc = lan_options[pno].name;
1500
0
  } else if (pno >= 0xC0) {
1501
0
    desc = "OEM";
1502
0
  } else {
1503
0
    desc = "Reserved";
1504
0
  }
1505
1506
0
  subtree = proto_tree_add_subtree_format(tree, tvb, 0, 0, ett_ipmi_trn_parameter, NULL, "Parameter: %s", desc);
1507
1508
0
  if (tvb_captured_length(tvb) > 1) {
1509
0
    if (pno < array_length(lan_options) && lan_options[pno].intrp) {
1510
0
      next = tvb_new_subset_remaining(tvb, 1);
1511
0
      lan_options[pno].intrp(next, subtree);
1512
0
    } else {
1513
0
      proto_tree_add_item(subtree, hf_ipmi_trn_02_param_data, tvb, 1, -1, ENC_NA);
1514
0
    }
1515
0
  }
1516
0
}
1517
1518
static const value_string cc02[] = {
1519
  { 0x80, "Parameter not supported" },
1520
  { 0x83, "Attempt to read write-only parameter" },
1521
  { 0, NULL }
1522
};
1523
1524
static void
1525
rq03(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
1526
0
{
1527
0
  static int * const byte1[] = { &hf_ipmi_trn_03_chan, NULL };
1528
0
  static int * const byte2[] = { &hf_ipmi_trn_03_arp_resp, &hf_ipmi_trn_03_gratuitous_arp, NULL };
1529
1530
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1531
0
      ett_ipmi_trn_03_rq_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1532
0
  proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL,
1533
0
      ett_ipmi_trn_03_rq_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
1534
0
}
1535
1536
static void
1537
rs03(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
1538
0
{
1539
0
  static int * const byte1[] = { &hf_ipmi_trn_03_status_arp_resp,
1540
0
    &hf_ipmi_trn_03_status_gratuitous_arp, NULL };
1541
1542
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1543
0
      ett_ipmi_trn_03_rs_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1544
0
}
1545
1546
static void
1547
rq04(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
1548
0
{
1549
0
  static int * const byte1[] = { &hf_ipmi_trn_04_chan, NULL };
1550
0
  static int * const byte2[] = { &hf_ipmi_trn_04_clear, NULL };
1551
1552
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1553
0
      ett_ipmi_trn_04_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1554
0
  proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL,
1555
0
      ett_ipmi_trn_04_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
1556
0
}
1557
1558
static void
1559
rs04(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
1560
0
{
1561
0
  proto_tree_add_item(tree, hf_ipmi_trn_04_rx_ippkts, tvb, 0, 2, ENC_LITTLE_ENDIAN);
1562
0
  proto_tree_add_item(tree, hf_ipmi_trn_04_rx_iphdr_err, tvb, 2, 2, ENC_LITTLE_ENDIAN);
1563
0
  proto_tree_add_item(tree, hf_ipmi_trn_04_rx_ipaddr_err, tvb, 4, 2, ENC_LITTLE_ENDIAN);
1564
0
  proto_tree_add_item(tree, hf_ipmi_trn_04_rx_ippkts_frag, tvb, 6, 2, ENC_LITTLE_ENDIAN);
1565
0
  proto_tree_add_item(tree, hf_ipmi_trn_04_tx_ippkts, tvb, 8, 2, ENC_LITTLE_ENDIAN);
1566
0
  proto_tree_add_item(tree, hf_ipmi_trn_04_rx_udppkts, tvb, 10, 2, ENC_LITTLE_ENDIAN);
1567
0
  proto_tree_add_item(tree, hf_ipmi_trn_04_rx_validrmcp, tvb, 12, 2, ENC_LITTLE_ENDIAN);
1568
0
  proto_tree_add_item(tree, hf_ipmi_trn_04_rx_udpproxy, tvb, 14, 2, ENC_LITTLE_ENDIAN);
1569
0
  proto_tree_add_item(tree, hf_ipmi_trn_04_dr_udpproxy, tvb, 16, 2, ENC_LITTLE_ENDIAN);
1570
0
}
1571
1572
static void
1573
serial_03(tvbuff_t *tvb, proto_tree *tree)
1574
0
{
1575
0
  static int * const byte1[] = { &hf_ipmi_trn_serial03_connmode, &hf_ipmi_trn_serial03_terminal,
1576
0
    &hf_ipmi_trn_serial03_ppp, &hf_ipmi_trn_serial03_basic, NULL };
1577
1578
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1579
0
      ett_ipmi_trn_serial03_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1580
0
}
1581
1582
static void
1583
serial04_timeout_fmt(char *s, uint32_t v)
1584
0
{
1585
0
  if (v) {
1586
0
    snprintf(s, ITEM_LABEL_LENGTH, "%d sec", 30 * v);
1587
0
  }
1588
0
  else {
1589
0
    snprintf(s, ITEM_LABEL_LENGTH, "Does not timeout");
1590
0
  }
1591
0
}
1592
1593
static void
1594
serial_04(tvbuff_t *tvb, proto_tree *tree)
1595
0
{
1596
0
  static int * const byte1[] = { &hf_ipmi_trn_serial04_timeout, NULL };
1597
1598
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1599
0
      ett_ipmi_trn_serial04_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1600
0
}
1601
1602
static void
1603
serial_05(tvbuff_t *tvb, proto_tree *tree)
1604
0
{
1605
0
  static int * const byte1[] = { &hf_ipmi_trn_serial05_cbcp_callback,
1606
0
    &hf_ipmi_trn_serial05_ipmi_callback, NULL };
1607
0
  static int * const byte2[] = { &hf_ipmi_trn_serial05_cb_list, &hf_ipmi_trn_serial05_cb_user,
1608
0
    &hf_ipmi_trn_serial05_cb_prespec, &hf_ipmi_trn_serial05_no_cb, NULL };
1609
1610
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, "Callback capabilities: ", "None",
1611
0
      ett_ipmi_trn_serial05_byte1, byte1, ENC_LITTLE_ENDIAN, BMT_NO_TFS);
1612
0
  proto_tree_add_bitmask_text(tree, tvb, 1, 1, "CBCP negotiation options: ", "None",
1613
0
      ett_ipmi_trn_serial05_byte2, byte2, ENC_LITTLE_ENDIAN, BMT_NO_TFS);
1614
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial05_cb_dest1, tvb, 2, 1, ENC_LITTLE_ENDIAN);
1615
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial05_cb_dest2, tvb, 3, 1, ENC_LITTLE_ENDIAN);
1616
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial05_cb_dest3, tvb, 4, 1, ENC_LITTLE_ENDIAN);
1617
0
}
1618
1619
static void
1620
serial_06(tvbuff_t *tvb, proto_tree *tree)
1621
0
{
1622
0
  static int * const byte1[] = { &hf_ipmi_trn_serial06_inactivity,
1623
0
    &hf_ipmi_trn_serial06_dcd, NULL };
1624
1625
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1626
0
      ett_ipmi_trn_serial06_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1627
0
}
1628
1629
static void
1630
serial_07(tvbuff_t *tvb, proto_tree *tree)
1631
0
{
1632
0
  static int * const byte1[] = { &hf_ipmi_trn_serial07_flowctl, &hf_ipmi_trn_serial07_dtrhangup, NULL };
1633
0
  static int * const byte2[] = { &hf_ipmi_trn_serial07_bitrate, NULL };
1634
1635
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1636
0
      ett_ipmi_trn_serial07_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1637
0
  proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL,
1638
0
      ett_ipmi_trn_serial07_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
1639
0
}
1640
1641
static void
1642
serial_08(tvbuff_t *tvb, proto_tree *tree)
1643
0
{
1644
0
  static int * const byte1[] = { &hf_ipmi_trn_serial08_esc_powerup,
1645
0
    &hf_ipmi_trn_serial08_esc_reset, &hf_ipmi_trn_serial08_switch_authcap,
1646
0
    &hf_ipmi_trn_serial08_switch_rmcp, &hf_ipmi_trn_serial08_esc_switch1,
1647
0
    &hf_ipmi_trn_serial08_esc_switch2, &hf_ipmi_trn_serial08_switch_dcdloss, NULL };
1648
0
  static int * const byte2[] = { &hf_ipmi_trn_serial08_sharing,
1649
0
    &hf_ipmi_trn_serial08_ping_callback, &hf_ipmi_trn_serial08_ping_direct,
1650
0
    &hf_ipmi_trn_serial08_ping_retry, NULL };
1651
1652
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, "Switch/escape settings", NULL,
1653
0
      ett_ipmi_trn_serial08_byte1, byte1, ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
1654
0
  proto_tree_add_bitmask_text(tree, tvb, 1, 1, "Sharing/ping settings", NULL,
1655
0
      ett_ipmi_trn_serial08_byte2, byte2, ENC_LITTLE_ENDIAN, BMT_NO_APPEND);
1656
0
}
1657
1658
static void
1659
serial_09(tvbuff_t *tvb, proto_tree *tree)
1660
0
{
1661
0
  static int * const byte1[] = { &hf_ipmi_trn_serial09_ring_duration, NULL };
1662
0
  static int * const byte2[] = { &hf_ipmi_trn_serial09_ring_dead, NULL };
1663
1664
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1665
0
      ett_ipmi_trn_serial09_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1666
0
  proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL,
1667
0
      ett_ipmi_trn_serial09_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
1668
0
}
1669
1670
static void
1671
serial_10(tvbuff_t *tvb, proto_tree *tree)
1672
0
{
1673
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial10_set_sel, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1674
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial10_init_str, tvb, 1, -1, ENC_ASCII);
1675
0
}
1676
1677
static void
1678
serial_11(tvbuff_t *tvb, proto_tree *tree)
1679
0
{
1680
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial11_esc_seq, tvb, 0, 5, ENC_ASCII);
1681
0
}
1682
1683
static void
1684
serial_12(tvbuff_t *tvb, proto_tree *tree)
1685
0
{
1686
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial12_hangup_seq, tvb, 0, 8, ENC_ASCII);
1687
0
}
1688
1689
static void
1690
serial_13(tvbuff_t *tvb, proto_tree *tree)
1691
0
{
1692
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial13_dial_cmd, tvb, 0, 8, ENC_ASCII);
1693
0
}
1694
1695
static void
1696
serial_14(tvbuff_t *tvb, proto_tree *tree)
1697
0
{
1698
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial14_page_blackout, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1699
0
}
1700
1701
static void
1702
serial_15(tvbuff_t *tvb, proto_tree *tree)
1703
0
{
1704
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial15_comm_string, tvb, 0, 18, ENC_ASCII);
1705
0
}
1706
1707
static void
1708
serial_16(tvbuff_t *tvb, proto_tree *tree)
1709
0
{
1710
0
  static int * const byte1[] = { &hf_ipmi_trn_serial16_ndest, NULL };
1711
1712
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1713
0
      ett_ipmi_trn_serial16_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1714
0
}
1715
1716
static void
1717
serial_17(tvbuff_t *tvb, proto_tree *tree)
1718
0
{
1719
0
  static int * const byte1[] = { &hf_ipmi_trn_serial17_dest_sel, NULL };
1720
0
  static int * const byte2[] = { &hf_ipmi_trn_serial17_ack, &hf_ipmi_trn_serial17_dest_type, NULL };
1721
0
  static int * const byte4[] = { &hf_ipmi_trn_serial17_alert_retries, &hf_ipmi_trn_serial17_call_retries, NULL };
1722
0
  int * byte5[3] = { NULL, NULL, NULL };
1723
0
  uint8_t v;
1724
1725
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1726
0
      ett_ipmi_trn_serial17_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1727
0
  proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL,
1728
0
      ett_ipmi_trn_serial17_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
1729
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial17_alert_ack_timeout, tvb, 2, 1, ENC_LITTLE_ENDIAN);
1730
0
  proto_tree_add_bitmask_text(tree, tvb, 3, 1, NULL, NULL,
1731
0
      ett_ipmi_trn_serial17_byte4, byte4, ENC_LITTLE_ENDIAN, 0);
1732
1733
0
  v = tvb_get_uint8(tvb, 1) & 0x0f;
1734
0
  switch (v) {
1735
0
    case 0: /* Dial Page */
1736
0
    case 3: /* Basic Mode Callback */
1737
0
      byte5[0] = &hf_ipmi_trn_serial17_dialstr_sel;
1738
0
      break;
1739
0
    case 1: /* TAP Page */
1740
0
      byte5[0] = &hf_ipmi_trn_serial17_tap_sel;
1741
0
      break;
1742
0
    case 2: /* PPP Alert */
1743
0
    case 4: /* PPP Callback */
1744
0
      byte5[0] = &hf_ipmi_trn_serial17_ipaddr_sel;
1745
0
      byte5[1] = &hf_ipmi_trn_serial17_ppp_sel;
1746
0
      break;
1747
0
    default:
1748
0
      proto_tree_add_item(tree, hf_ipmi_trn_serial17_unknown, tvb, 4, 1, ENC_LITTLE_ENDIAN);
1749
0
      return;
1750
0
  }
1751
0
  proto_tree_add_bitmask_text(tree, tvb, 4, 1, NULL, NULL,
1752
0
      ett_ipmi_trn_serial17_byte5, byte5, ENC_LITTLE_ENDIAN, 0);
1753
0
}
1754
1755
static void
1756
serial_18(tvbuff_t *tvb, proto_tree *tree)
1757
0
{
1758
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial18_call_retry, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1759
0
}
1760
1761
static void
1762
serial_19(tvbuff_t *tvb, proto_tree *tree)
1763
0
{
1764
0
  static int * const byte1[] = { &hf_ipmi_trn_serial19_destsel, NULL };
1765
0
  static int * const byte2[] = { &hf_ipmi_trn_serial19_flowctl, &hf_ipmi_trn_serial19_dtrhangup,
1766
0
    &hf_ipmi_trn_serial19_stopbits, &hf_ipmi_trn_serial19_charsize, &hf_ipmi_trn_serial19_parity, NULL };
1767
0
  static int * const byte3[] = { &hf_ipmi_trn_serial19_bitrate, NULL };
1768
1769
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1770
0
      ett_ipmi_trn_serial19_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1771
0
  proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL,
1772
0
      ett_ipmi_trn_serial19_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
1773
0
  proto_tree_add_bitmask_text(tree, tvb, 2, 1, NULL, NULL,
1774
0
      ett_ipmi_trn_serial19_byte3, byte3, ENC_LITTLE_ENDIAN, 0);
1775
0
}
1776
1777
static void
1778
serial_20(tvbuff_t *tvb, proto_tree *tree)
1779
0
{
1780
0
  static int * const byte1[] = { &hf_ipmi_trn_serial20_num_dial_strings, NULL };
1781
1782
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1783
0
      ett_ipmi_trn_serial20_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1784
0
}
1785
1786
static void
1787
serial_21(tvbuff_t *tvb, proto_tree *tree)
1788
0
{
1789
0
  static int * const byte1[] = { &hf_ipmi_trn_serial21_dialsel, NULL };
1790
1791
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1792
0
      ett_ipmi_trn_serial21_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1793
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial21_blockno, tvb, 1, 1, ENC_LITTLE_ENDIAN);
1794
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial21_dialstr, tvb, 2, 1, ENC_ASCII);
1795
0
}
1796
1797
static void
1798
serial_22(tvbuff_t *tvb, proto_tree *tree)
1799
0
{
1800
0
  static int * const byte1[] = { &hf_ipmi_trn_serial22_num_ipaddrs, NULL };
1801
1802
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1803
0
      ett_ipmi_trn_serial22_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1804
0
}
1805
1806
static void
1807
serial_23(tvbuff_t *tvb, proto_tree *tree)
1808
0
{
1809
0
  static int * const byte1[] = { &hf_ipmi_trn_serial23_destsel, NULL };
1810
1811
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1812
0
      ett_ipmi_trn_serial23_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1813
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial23_ipaddr, tvb, 1, 4, ENC_BIG_ENDIAN);
1814
0
}
1815
1816
static void
1817
serial_24(tvbuff_t *tvb, proto_tree *tree)
1818
0
{
1819
0
  static int * const byte1[] = { &hf_ipmi_trn_serial24_num_tap_accounts, NULL };
1820
1821
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1822
0
      ett_ipmi_trn_serial24_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1823
0
}
1824
1825
static void
1826
serial_25(tvbuff_t *tvb, proto_tree *tree)
1827
0
{
1828
0
  static int * const byte2[] = { &hf_ipmi_trn_serial25_dialstr_sel, &hf_ipmi_trn_serial25_tapsrv_sel, NULL };
1829
1830
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial25_tap_acct, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1831
0
  proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL,
1832
0
      ett_ipmi_trn_serial25_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
1833
0
}
1834
1835
static void
1836
serial_26(tvbuff_t *tvb, proto_tree *tree)
1837
0
{
1838
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial26_tap_acct, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1839
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial26_tap_passwd, tvb, 1, 6, ENC_ASCII);
1840
0
}
1841
1842
static void
1843
serial_27(tvbuff_t *tvb, proto_tree *tree)
1844
0
{
1845
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial27_tap_acct, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1846
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial27_tap_pager_id, tvb, 1, 16, ENC_ASCII);
1847
0
}
1848
1849
static void
1850
serial_28(tvbuff_t *tvb, proto_tree *tree)
1851
0
{
1852
0
  static int * const byte1[] = { &hf_ipmi_trn_serial28_tapsrv_sel, NULL };
1853
0
  static int * const byte2[] = { &hf_ipmi_trn_serial28_confirm, NULL };
1854
0
  static int * const byte10[] = { &hf_ipmi_trn_serial28_t2, &hf_ipmi_trn_serial28_t1, NULL };
1855
0
  static int * const byte11[] = { &hf_ipmi_trn_serial28_t4, &hf_ipmi_trn_serial28_t3, NULL };
1856
0
  static int * const byte12[] = { &hf_ipmi_trn_serial28_t6, &hf_ipmi_trn_serial28_t5, NULL };
1857
0
  static int * const byte13[] = { &hf_ipmi_trn_serial28_n2, &hf_ipmi_trn_serial28_n1, NULL };
1858
0
  static int * const byte14[] = { &hf_ipmi_trn_serial28_n4, &hf_ipmi_trn_serial28_n3, NULL };
1859
1860
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1861
0
      ett_ipmi_trn_serial28_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1862
0
  proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL,
1863
0
      ett_ipmi_trn_serial28_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
1864
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial28_srvtype, tvb, 2, 3, ENC_ASCII);
1865
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial28_ctrl_esc, tvb, 5, 4, ENC_LITTLE_ENDIAN);
1866
0
  proto_tree_add_bitmask_text(tree, tvb, 9, 1, NULL, NULL,
1867
0
      ett_ipmi_trn_serial28_byte10, byte10, ENC_LITTLE_ENDIAN, 0);
1868
0
  proto_tree_add_bitmask_text(tree, tvb, 10, 1, NULL, NULL,
1869
0
      ett_ipmi_trn_serial28_byte11, byte11, ENC_LITTLE_ENDIAN, 0);
1870
0
  proto_tree_add_bitmask_text(tree, tvb, 11, 1, NULL, NULL,
1871
0
      ett_ipmi_trn_serial28_byte12, byte12, ENC_LITTLE_ENDIAN, 0);
1872
0
  proto_tree_add_bitmask_text(tree, tvb, 12, 1, NULL, NULL,
1873
0
      ett_ipmi_trn_serial28_byte13, byte13, ENC_LITTLE_ENDIAN, 0);
1874
0
  proto_tree_add_bitmask_text(tree, tvb, 13, 1, NULL, NULL,
1875
0
      ett_ipmi_trn_serial28_byte14, byte14, ENC_LITTLE_ENDIAN, 0);
1876
0
}
1877
1878
static void
1879
serial_29(tvbuff_t *tvb, proto_tree *tree)
1880
0
{
1881
0
  static int * const byte1[] = { &hf_ipmi_trn_serial29_op, &hf_ipmi_trn_serial29_lineedit,
1882
0
    &hf_ipmi_trn_serial29_deletectl, &hf_ipmi_trn_serial29_echo, &hf_ipmi_trn_serial29_handshake, NULL };
1883
0
  static int * const byte2[] = { &hf_ipmi_trn_serial29_o_newline, &hf_ipmi_trn_serial29_i_newline, NULL };
1884
1885
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1886
0
      ett_ipmi_trn_serial29_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1887
0
  proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL,
1888
0
      ett_ipmi_trn_serial29_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
1889
0
}
1890
1891
static void
1892
serial_30(tvbuff_t *tvb, proto_tree *tree)
1893
0
{
1894
0
  static int * const byte1[] = { &hf_ipmi_trn_serial30_snooping, &hf_ipmi_trn_serial30_snoopctl, NULL };
1895
0
  static int * const byte2[] = { &hf_ipmi_trn_serial30_negot_ctl, &hf_ipmi_trn_serial30_use_xmit_accm,
1896
0
    &hf_ipmi_trn_serial30_xmit_addr_comp, &hf_ipmi_trn_serial30_xmit_proto_comp, NULL };
1897
0
  static int * const byte3[] = { &hf_ipmi_trn_serial30_ipaddr, &hf_ipmi_trn_serial30_accm,
1898
0
    &hf_ipmi_trn_serial30_addr_comp, &hf_ipmi_trn_serial30_proto_comp, NULL };
1899
1900
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1901
0
      ett_ipmi_trn_serial30_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1902
0
  proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL,
1903
0
      ett_ipmi_trn_serial30_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
1904
0
  proto_tree_add_bitmask_text(tree, tvb, 2, 1, NULL, NULL,
1905
0
      ett_ipmi_trn_serial30_byte3, byte3, ENC_LITTLE_ENDIAN, 0);
1906
0
}
1907
1908
static void
1909
serial_31(tvbuff_t *tvb, proto_tree *tree)
1910
0
{
1911
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial31_port, tvb, 0, 2, ENC_LITTLE_ENDIAN);
1912
0
}
1913
1914
static void
1915
serial_32(tvbuff_t *tvb, proto_tree *tree)
1916
0
{
1917
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial32_port, tvb, 0, 2, ENC_LITTLE_ENDIAN);
1918
0
}
1919
1920
static void
1921
serial_33(tvbuff_t *tvb, proto_tree *tree)
1922
0
{
1923
0
  static int * const byte1[] = { &hf_ipmi_trn_serial33_auth_proto, NULL };
1924
1925
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1926
0
      ett_ipmi_trn_serial33_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1927
0
}
1928
1929
static void
1930
serial_34(tvbuff_t *tvb, proto_tree *tree)
1931
0
{
1932
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial34_chap_name, tvb, 0, 16, ENC_ASCII);
1933
0
}
1934
1935
static void
1936
serial_35(tvbuff_t *tvb, proto_tree *tree)
1937
0
{
1938
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial35_recv_accm, tvb, 0, 4, ENC_BIG_ENDIAN);
1939
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial35_xmit_accm, tvb, 4, 4, ENC_BIG_ENDIAN);
1940
0
}
1941
1942
static void
1943
serial_36(tvbuff_t *tvb, proto_tree *tree)
1944
0
{
1945
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial36_snoop_accm, tvb, 0, 4, ENC_BIG_ENDIAN);
1946
0
}
1947
1948
static void
1949
serial_37(tvbuff_t *tvb, proto_tree *tree)
1950
0
{
1951
0
  static int * const byte1[] = { &hf_ipmi_trn_serial37_num_ppp, NULL };
1952
1953
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
1954
0
      ett_ipmi_trn_serial37_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
1955
0
}
1956
1957
static void
1958
serial_38(tvbuff_t *tvb, proto_tree *tree)
1959
0
{
1960
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial38_acct_sel, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1961
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial38_dialstr_sel, tvb, 1, 1, ENC_LITTLE_ENDIAN);
1962
0
}
1963
1964
static void
1965
serial_39(tvbuff_t *tvb, proto_tree *tree)
1966
0
{
1967
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial39_acct_sel, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1968
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial39_ipaddr, tvb, 1, 4, ENC_BIG_ENDIAN);
1969
0
}
1970
1971
static void
1972
serial_40(tvbuff_t *tvb, proto_tree *tree)
1973
0
{
1974
0
  int slen;
1975
1976
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial40_acct_sel, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1977
0
  slen = tvb_captured_length(tvb) - 1;
1978
0
  if (slen > 16) {
1979
0
    slen = 16;
1980
0
  }
1981
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial40_username, tvb, 1, slen, ENC_ASCII);
1982
0
}
1983
1984
static void
1985
serial_41(tvbuff_t *tvb, proto_tree *tree)
1986
0
{
1987
0
  int slen;
1988
1989
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial41_acct_sel, tvb, 0, 1, ENC_LITTLE_ENDIAN);
1990
0
  slen = tvb_captured_length(tvb) - 1;
1991
0
  if (slen > 16) {
1992
0
    slen = 16;
1993
0
  }
1994
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial41_userdomain, tvb, 1, slen, ENC_ASCII);
1995
0
}
1996
1997
static void
1998
serial_42(tvbuff_t *tvb, proto_tree *tree)
1999
0
{
2000
0
  int slen;
2001
2002
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial42_acct_sel, tvb, 0, 1, ENC_LITTLE_ENDIAN);
2003
0
  slen = tvb_captured_length(tvb) - 1;
2004
0
  if (slen > 16) {
2005
0
    slen = 16;
2006
0
  }
2007
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial42_userpass, tvb, 1, slen, ENC_ASCII);
2008
0
}
2009
2010
static void
2011
serial_43(tvbuff_t *tvb, proto_tree *tree)
2012
0
{
2013
0
  static int * const byte1[] = { &hf_ipmi_trn_serial43_auth_proto, NULL };
2014
2015
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial43_acct_sel, tvb, 0, 1, ENC_LITTLE_ENDIAN);
2016
0
  proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL,
2017
0
      ett_ipmi_trn_serial43_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
2018
0
}
2019
2020
static void
2021
serial_44(tvbuff_t *tvb, proto_tree *tree)
2022
0
{
2023
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial44_acct_sel, tvb, 0, 1, ENC_LITTLE_ENDIAN);
2024
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial44_hold_time, tvb, 1, 1, ENC_LITTLE_ENDIAN);
2025
0
}
2026
2027
static void
2028
serial_45(tvbuff_t *tvb, proto_tree *tree)
2029
0
{
2030
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial45_src_ipaddr, tvb, 0, 4, ENC_BIG_ENDIAN);
2031
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial45_dst_ipaddr, tvb, 4, 4, ENC_BIG_ENDIAN);
2032
0
}
2033
2034
static void
2035
serial_46(tvbuff_t *tvb, proto_tree *tree)
2036
0
{
2037
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial46_tx_bufsize, tvb, 0, 2, ENC_LITTLE_ENDIAN);
2038
0
}
2039
2040
static void
2041
serial_47(tvbuff_t *tvb, proto_tree *tree)
2042
0
{
2043
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial47_rx_bufsize, tvb, 0, 2, ENC_LITTLE_ENDIAN);
2044
0
}
2045
2046
static void
2047
serial_48(tvbuff_t *tvb, proto_tree *tree)
2048
0
{
2049
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial48_ipaddr, tvb, 0, 4, ENC_BIG_ENDIAN);
2050
0
}
2051
2052
static void
2053
serial_49(tvbuff_t *tvb, proto_tree *tree)
2054
0
{
2055
0
  int slen;
2056
2057
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial49_blockno, tvb, 0, 1, ENC_LITTLE_ENDIAN);
2058
0
  slen = tvb_captured_length(tvb) - 1;
2059
0
  if (slen > 16) {
2060
0
    slen = 16;
2061
0
  }
2062
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial49_dialstr, tvb, 1, slen, ENC_ASCII);
2063
0
}
2064
2065
static void
2066
serial_50(tvbuff_t *tvb, proto_tree *tree)
2067
0
{
2068
0
  static int * const byte1[] = { &hf_ipmi_trn_serial50_115200, &hf_ipmi_trn_serial50_57600,
2069
0
    &hf_ipmi_trn_serial50_38400, &hf_ipmi_trn_serial50_19200, &hf_ipmi_trn_serial50_9600, NULL };
2070
2071
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, "Bit rate support: ", "None",
2072
0
      ett_ipmi_trn_serial50_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
2073
0
}
2074
2075
static void
2076
serial_51(tvbuff_t *tvb, proto_tree *tree)
2077
0
{
2078
0
  static int * const byte2[] = { &hf_ipmi_trn_serial51_ipmi_channel, &hf_ipmi_trn_serial51_conn_num, NULL };
2079
0
  static int * const byte3[] = { &hf_ipmi_trn_serial51_ipmi_sharing,
2080
0
    &hf_ipmi_trn_serial51_ipmi_sol, &hf_ipmi_trn_serial51_chan_num, NULL };
2081
2082
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial51_port_assoc_sel, tvb, 0, 1, ENC_LITTLE_ENDIAN);
2083
0
  proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL,
2084
0
      ett_ipmi_trn_serial51_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
2085
0
  proto_tree_add_bitmask_text(tree, tvb, 2, 1, NULL, NULL,
2086
0
      ett_ipmi_trn_serial51_byte3, byte3, ENC_LITTLE_ENDIAN, 0);
2087
0
}
2088
2089
static void
2090
serial_52(tvbuff_t *tvb, proto_tree *tree)
2091
0
{
2092
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial52_port_assoc_sel, tvb, 0, 1, ENC_LITTLE_ENDIAN);
2093
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial52_conn_name, tvb, 1, 16, ENC_NA);
2094
0
}
2095
2096
static void
2097
serial_53(tvbuff_t *tvb, proto_tree *tree)
2098
0
{
2099
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial53_port_assoc_sel, tvb, 0, 1, ENC_LITTLE_ENDIAN);
2100
0
  proto_tree_add_item(tree, hf_ipmi_trn_serial53_chan_name, tvb, 1, 16, ENC_NA);
2101
0
}
2102
2103
static const 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" }
2161
};
2162
2163
/* Set Serial/Modem Configuration Parameters
2164
 */
2165
static void
2166
rq10(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
2167
0
{
2168
0
  static int * const byte1[] = { &hf_ipmi_trn_10_chan, NULL };
2169
0
  tvbuff_t *next;
2170
0
  const char *desc;
2171
0
  uint8_t pno;
2172
2173
0
  pno = tvb_get_uint8(tvb, 1);
2174
0
  if (pno < array_length(serial_options)) {
2175
0
    desc = serial_options[pno].name;
2176
0
  } else if (pno >= 0xC0) {
2177
0
    desc = "OEM";
2178
0
  } else {
2179
0
    desc = "Reserved";
2180
0
  }
2181
2182
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL, ett_ipmi_trn_10_byte1,
2183
0
      byte1, ENC_LITTLE_ENDIAN, 0);
2184
0
  proto_tree_add_uint_format_value(tree, hf_ipmi_trn_10_param, tvb, 1, 1,
2185
0
      pno, "%s (0x%02x)", desc, pno);
2186
0
  if (pno < array_length(serial_options)) {
2187
0
    next = tvb_new_subset_remaining(tvb, 2);
2188
0
    serial_options[pno].intrp(next, tree);
2189
0
  } else {
2190
0
    proto_tree_add_item(tree, hf_ipmi_trn_10_param_data, tvb, 2, -1, ENC_NA);
2191
0
  }
2192
0
}
2193
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 }
2200
};
2201
2202
/* Get LAN Configuration Parameters
2203
 */
2204
static void
2205
rq11(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
2206
0
{
2207
0
  static int * const byte1[] = { &hf_ipmi_trn_11_getrev, &hf_ipmi_trn_11_chan, NULL };
2208
0
  const char *desc;
2209
0
  uint8_t pno;
2210
2211
0
  pno = tvb_get_uint8(tvb, 1);
2212
2213
0
  ipmi_set_data(pinfo, 0, pno);
2214
0
  ipmi_set_data(pinfo, 1, tvb_get_uint8(tvb, 0));
2215
2216
0
  if (!tree) {
2217
0
    return;
2218
0
  }
2219
2220
0
  if (pno < array_length(serial_options)) {
2221
0
    desc = serial_options[pno].name;
2222
0
  } else if (pno >= 0xC0) {
2223
0
    desc = "OEM";
2224
0
  } else {
2225
0
    desc = "Reserved";
2226
0
  }
2227
2228
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
2229
0
      ett_ipmi_trn_11_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
2230
0
  proto_tree_add_uint_format_value(tree, hf_ipmi_trn_11_param, tvb, 1, 1,
2231
0
      pno, "%s (0x%02x)", desc, pno);
2232
0
  proto_tree_add_item(tree, hf_ipmi_trn_11_set, tvb, 2, 1, ENC_LITTLE_ENDIAN);
2233
0
  proto_tree_add_item(tree, hf_ipmi_trn_11_block, tvb, 2, 1, ENC_LITTLE_ENDIAN);
2234
0
}
2235
2236
static void
2237
rs11(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
2238
0
{
2239
0
  static int * const byte1[] = { &hf_ipmi_trn_11_rev_present, &hf_ipmi_trn_11_rev_compat, NULL };
2240
0
  proto_item *ti;
2241
0
  proto_tree *subtree;
2242
0
  tvbuff_t *next;
2243
0
  const char *desc;
2244
0
  uint32_t pno, req;
2245
2246
0
  ti = proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
2247
0
      ett_ipmi_trn_11_rev, byte1, ENC_LITTLE_ENDIAN, 0);
2248
2249
0
  if (!ipmi_get_data(pinfo, 0, &pno) || !ipmi_get_data(pinfo, 1, &req)) {
2250
    /* No request found - cannot parse further */
2251
0
    if (tvb_captured_length(tvb) > 1) {
2252
0
      proto_tree_add_item(tree, hf_ipmi_trn_11_param_data, tvb, 1, -1, ENC_NA);
2253
0
    };
2254
0
    return;
2255
0
  }
2256
2257
0
  if (pno < array_length(serial_options)) {
2258
0
    desc = serial_options[pno].name;
2259
0
  } else if (pno >= 0xC0) {
2260
0
    desc = "OEM";
2261
0
  } else {
2262
0
    desc = "Reserved";
2263
0
  }
2264
2265
0
  if ((req & 0x80) && tvb_captured_length(tvb) > 1) {
2266
0
    expert_add_info(pinfo, ti, &ei_ipmi_trn_11_request_param_rev);
2267
0
  } else if (!(req & 0x80) && tvb_captured_length(tvb) == 1) {
2268
0
    expert_add_info(pinfo, ti, &ei_ipmi_trn_11_request_param_data);
2269
0
  }
2270
2271
0
  subtree = proto_tree_add_subtree_format(tree, tvb, 0, 0, ett_ipmi_trn_parameter, NULL, "Parameter: %s", desc);
2272
2273
0
  if (tvb_captured_length(tvb) > 1) {
2274
0
    if (pno < array_length(serial_options)) {
2275
0
      next = tvb_new_subset_remaining(tvb, 1);
2276
0
      serial_options[pno].intrp(next, subtree);
2277
0
    } else {
2278
0
      proto_tree_add_item(subtree, hf_ipmi_trn_11_param_data, tvb, 1, -1, ENC_NA);
2279
0
    }
2280
0
  }
2281
0
}
2282
2283
static const value_string cc11[] = {
2284
  { 0x80, "Parameter not supported" },
2285
  { 0, NULL }
2286
};
2287
2288
/* Set Serial/Modem Mux
2289
 */
2290
static void
2291
rq12(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
2292
0
{
2293
0
  static int * const byte1[] = { &hf_ipmi_trn_12_chan, NULL };
2294
0
  static int * const byte2[] = { &hf_ipmi_trn_12_mux_setting, NULL };
2295
2296
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
2297
0
      ett_ipmi_trn_12_rq_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
2298
0
  proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL,
2299
0
      ett_ipmi_trn_12_rq_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
2300
0
}
2301
2302
static void
2303
rs12(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
2304
0
{
2305
0
  static int * const byte1[] = { &hf_ipmi_trn_12_sw_to_sys, &hf_ipmi_trn_12_sw_to_bmc,
2306
0
    &hf_ipmi_trn_12_alert, &hf_ipmi_trn_12_msg, &hf_ipmi_trn_12_req, &hf_ipmi_trn_12_mux_state, NULL };
2307
2308
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
2309
0
      ett_ipmi_trn_12_rs_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
2310
0
}
2311
2312
/* Get TAP Response Codes
2313
 */
2314
static void
2315
rq13(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
2316
0
{
2317
0
  static int * const byte1[] = { &hf_ipmi_trn_13_chan, NULL };
2318
2319
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
2320
0
      ett_ipmi_trn_13_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
2321
0
}
2322
2323
static void
2324
rs13(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
2325
0
{
2326
0
  proto_tree_add_item(tree, hf_ipmi_trn_13_code1, tvb, 0, 3, ENC_ASCII);
2327
0
  proto_tree_add_item(tree, hf_ipmi_trn_13_code2, tvb, 3, 3, ENC_ASCII);
2328
0
  proto_tree_add_item(tree, hf_ipmi_trn_13_code3, tvb, 6, 3, ENC_ASCII);
2329
0
  proto_tree_add_item(tree, hf_ipmi_trn_13_code4, tvb, 9, 3, ENC_ASCII);
2330
0
  proto_tree_add_item(tree, hf_ipmi_trn_13_code5, tvb, 12, 3, ENC_ASCII);
2331
0
}
2332
2333
/* Set PPP UDP Proxy Transmit Data
2334
 */
2335
static void
2336
rq14(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
2337
0
{
2338
0
  static int * const byte1[] = { &hf_ipmi_trn_14_chan, NULL };
2339
2340
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
2341
0
      ett_ipmi_trn_14_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
2342
0
  proto_tree_add_item(tree, hf_ipmi_trn_14_block, tvb, 1, 1, ENC_LITTLE_ENDIAN);
2343
0
  proto_tree_add_item(tree, hf_ipmi_trn_14_data, tvb, 2, 16, ENC_NA);
2344
0
}
2345
2346
/* Get PPP UDP Proxy Transmit Data
2347
 */
2348
static void
2349
rq15(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
2350
0
{
2351
0
  static int * const byte1[] = { &hf_ipmi_trn_15_chan, NULL };
2352
2353
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
2354
0
      ett_ipmi_trn_15_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
2355
0
  proto_tree_add_item(tree, hf_ipmi_trn_15_block, tvb, 1, 1, ENC_LITTLE_ENDIAN);
2356
0
}
2357
2358
static void
2359
rs15(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
2360
0
{
2361
0
  proto_tree_add_item(tree, hf_ipmi_trn_15_data, tvb, 0, 16, ENC_NA);
2362
0
}
2363
2364
/* Send PPP UDP Proxy Packet
2365
 */
2366
static void
2367
rq16(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
2368
0
{
2369
0
  static int * const byte1[] = { &hf_ipmi_trn_16_chan, NULL };
2370
2371
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
2372
0
      ett_ipmi_trn_16_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
2373
0
  proto_tree_add_item(tree, hf_ipmi_trn_16_src_port, tvb, 1, 2, ENC_LITTLE_ENDIAN);
2374
0
  proto_tree_add_item(tree, hf_ipmi_trn_16_dst_port, tvb, 3, 2, ENC_LITTLE_ENDIAN);
2375
0
  proto_tree_add_item(tree, hf_ipmi_trn_16_src_addr, tvb, 5, 4, ENC_BIG_ENDIAN);
2376
0
  proto_tree_add_item(tree, hf_ipmi_trn_16_dst_addr, tvb, 9, 4, ENC_BIG_ENDIAN);
2377
0
  proto_tree_add_item(tree, hf_ipmi_trn_16_bytes, tvb, 13, 2, ENC_LITTLE_ENDIAN);
2378
0
}
2379
2380
static const value_string cc16[] = {
2381
  { 0x80, "PPP link is not up" },
2382
  { 0x81, "IP protocol is not up" },
2383
  { 0, NULL }
2384
};
2385
2386
/* Get PPP UDP Proxy Receive Data
2387
 */
2388
static void
2389
tr17_fmt_blockno(char *s, uint32_t v)
2390
0
{
2391
0
  snprintf(s, ITEM_LABEL_LENGTH, "%d%s",
2392
0
      v, v ? "" : " (get received data length)");
2393
0
}
2394
2395
static void
2396
rq17(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
2397
0
{
2398
0
  static int * const byte1[] = { &hf_ipmi_trn_17_chan, NULL };
2399
0
  static int * const byte2[] = { &hf_ipmi_trn_17_clear, &hf_ipmi_trn_17_block_num, NULL };
2400
2401
0
  ipmi_set_data(pinfo, 0, tvb_get_uint8(tvb, 1) & 0x7f);
2402
0
  if (!tree) {
2403
    /* Save block number */
2404
0
    return;
2405
0
  }
2406
2407
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
2408
0
      ett_ipmi_trn_17_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
2409
0
  proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL,
2410
0
      ett_ipmi_trn_17_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
2411
0
}
2412
2413
static void
2414
rs17(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
2415
0
{
2416
0
  uint32_t bno;
2417
2418
0
  if (ipmi_get_data(pinfo, 0, &bno) && bno == 0) {
2419
    /* Request for length */
2420
0
    proto_tree_add_item(tree, hf_ipmi_trn_17_size, tvb, 0, 2, ENC_LITTLE_ENDIAN);
2421
0
  } else {
2422
0
    proto_tree_add_item(tree, hf_ipmi_trn_17_data, tvb, 0,
2423
0
        tvb_captured_length(tvb) < 16 ? tvb_captured_length(tvb) : 16, ENC_NA);
2424
0
  }
2425
0
}
2426
2427
static const value_string cc17[] = {
2428
  { 0x80, "No packet data available" },
2429
  { 0, NULL }
2430
};
2431
2432
/* Serial/Modem Connection Active
2433
 */
2434
static void
2435
rq18(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
2436
0
{
2437
0
  static int * const byte1[] = { &hf_ipmi_trn_18_state, NULL };
2438
2439
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
2440
0
      ett_ipmi_trn_18_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
2441
0
  proto_tree_add_item(tree, hf_ipmi_trn_18_ipmi_ver, tvb, 1, 1, ENC_LITTLE_ENDIAN);
2442
0
}
2443
2444
/* Callback
2445
 */
2446
static void
2447
rq19(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
2448
0
{
2449
0
  static int * const byte1[] = { &hf_ipmi_trn_19_chan, NULL };
2450
0
  static int * const byte2[] = { &hf_ipmi_trn_19_dest_sel, NULL };
2451
2452
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
2453
0
      ett_ipmi_trn_19_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
2454
0
  proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL,
2455
0
      ett_ipmi_trn_19_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
2456
0
}
2457
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 }
2462
};
2463
2464
/* Common for Set/Get User Callback Options
2465
 */
2466
static void
2467
parse_callback_options(tvbuff_t *tvb, unsigned offs, proto_tree *tree)
2468
0
{
2469
0
  static int * const usercap[] = { &hf_ipmi_trn_XX_cap_cbcp, &hf_ipmi_trn_XX_cap_ipmi, NULL };
2470
0
  static int * const cbcp[] = { &hf_ipmi_trn_XX_cbcp_from_list, &hf_ipmi_trn_XX_cbcp_user,
2471
0
    &hf_ipmi_trn_XX_cbcp_prespec, &hf_ipmi_trn_XX_cbcp_nocb, NULL };
2472
2473
0
  proto_tree_add_bitmask_text(tree, tvb, offs, 1,
2474
0
      "User callback capabilities: ", "None",
2475
0
      ett_ipmi_trn_XX_usercap, usercap, ENC_LITTLE_ENDIAN, BMT_NO_TFS);
2476
0
  proto_tree_add_bitmask_text(tree, tvb, offs + 1, 1,
2477
0
      "CBCP negotiation options: ", "None",
2478
0
      ett_ipmi_trn_XX_cbcp, cbcp, ENC_LITTLE_ENDIAN, BMT_NO_TFS);
2479
0
  proto_tree_add_item(tree, hf_ipmi_trn_XX_dst1, tvb, offs + 2, 1, ENC_LITTLE_ENDIAN);
2480
0
  proto_tree_add_item(tree, hf_ipmi_trn_XX_dst2, tvb, offs + 3, 1, ENC_LITTLE_ENDIAN);
2481
0
  proto_tree_add_item(tree, hf_ipmi_trn_XX_dst3, tvb, offs + 4, 1, ENC_LITTLE_ENDIAN);
2482
0
}
2483
2484
/* Set User Callback Options
2485
 */
2486
static void
2487
rq1a(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
2488
0
{
2489
0
  static int * const byte1[] = { &hf_ipmi_trn_1a_user, NULL };
2490
0
  static int * const byte2[] = { &hf_ipmi_trn_1a_chan, NULL };
2491
2492
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
2493
0
      ett_ipmi_trn_1a_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
2494
0
  proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL,
2495
0
      ett_ipmi_trn_1a_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
2496
0
  parse_callback_options(tvb, 2, tree);
2497
0
}
2498
2499
/* Get User Callback Options
2500
 */
2501
static void
2502
rq1b(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
2503
0
{
2504
0
  static int * const byte1[] = { &hf_ipmi_trn_1b_user, NULL };
2505
0
  static int * const byte2[] = { &hf_ipmi_trn_1b_chan, NULL };
2506
2507
0
  proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL,
2508
0
      ett_ipmi_trn_1b_byte1, byte1, ENC_LITTLE_ENDIAN, 0);
2509
0
  proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL,
2510
0
      ett_ipmi_trn_1b_byte2, byte2, ENC_LITTLE_ENDIAN, 0);
2511
0
}
2512
2513
static void
2514
rs1b(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
2515
0
{
2516
0
  parse_callback_options(tvb, 0, tree);
2517
0
}
2518
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 }
2525
};
2526
2527
static const value_string cc22[] = {
2528
  { 0x80, "Parameter not supported" },
2529
  { 0, NULL }
2530
};
2531
2532
static const value_string cc33[] = {
2533
  { 0x80, "Target controller unavailable" },
2534
  { 0, NULL }
2535
};
2536
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 },
2543
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 },
2558
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 },
2563
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 },
2569
};
2570
2571
void
2572
proto_register_ipmi_transport(void)
2573
14
{
2574
14
  static hf_register_info hf[] = {
2575
14
    { &hf_ipmi_trn_lan00_sip,
2576
14
      { "Set In Progress",
2577
14
        "ipmi.lan00.sip", FT_UINT8, BASE_HEX, VALS(lan00_sip_vals), 0x03, NULL, HFILL }},
2578
2579
14
    { &hf_ipmi_trn_lanXX_oem,
2580
14
      { "OEM Proprietary",
2581
14
        "ipmi.lanXX.oem", FT_BOOLEAN, 8, NULL, 0x20, NULL, HFILL }},
2582
14
    { &hf_ipmi_trn_lanXX_passwd,
2583
14
      { "Straight password/key",
2584
14
        "ipmi.lanXX.passwd", FT_BOOLEAN, 8, NULL, 0x10, NULL, HFILL }},
2585
14
    { &hf_ipmi_trn_lanXX_md5,
2586
14
      { "MD5",
2587
14
        "ipmi.lanXX.md5", FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL }},
2588
14
    { &hf_ipmi_trn_lanXX_md2,
2589
14
      { "MD2",
2590
14
        "ipmi.lanXX.md2", FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL }},
2591
14
    { &hf_ipmi_trn_lanXX_none,
2592
14
      { "None",
2593
14
        "ipmi.lanXX.none", FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }},
2594
2595
14
    { &hf_ipmi_trn_lan03_ip,
2596
14
      { "IP Address",
2597
14
        "ipmi.lan03.ip", FT_IPv4, BASE_NONE, NULL, 0, NULL, HFILL }},
2598
2599
14
    { &hf_ipmi_trn_lan04_ipsrc,
2600
14
      { "IP Address Source",
2601
14
        "ipmi.lan04.ipsrc", FT_UINT8, BASE_HEX, VALS(lan04_ipsrc_vals), 0x0f, NULL, HFILL }},
2602
2603
14
    { &hf_ipmi_trn_lan05_ether,
2604
14
      { "MAC Address",
2605
14
        "ipmi.lan05.mac", FT_ETHER, BASE_NONE, NULL, 0, NULL, HFILL }},
2606
2607
14
    { &hf_ipmi_trn_lan06_subnet,
2608
14
      { "Subnet Mask",
2609
14
        "ipmi.lan06.subnet", FT_IPv4, BASE_NONE, NULL, 0, NULL, HFILL }},
2610
2611
14
    { &hf_ipmi_trn_lan07_ttl,
2612
14
      { "Time-to-live",
2613
14
        "ipmi.lan07.ttl", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2614
14
    { &hf_ipmi_trn_lan07_flags,
2615
14
      { "Flags",
2616
14
        "ipmi.lan07.flags", FT_UINT8, BASE_HEX, NULL, 0xe0, NULL, HFILL }},
2617
14
    { &hf_ipmi_trn_lan07_precedence,
2618
14
      { "Precedence",
2619
14
        "ipmi.lan07.precedence", FT_UINT8, BASE_DEC, NULL, 0xe0, NULL, HFILL }},
2620
14
    { &hf_ipmi_trn_lan07_tos,
2621
14
      { "Type of service",
2622
14
        "ipmi.lan07.tos", FT_UINT8, BASE_HEX, NULL, 0x1e, NULL, HFILL }},
2623
2624
14
    { &hf_ipmi_trn_lan08_rmcp_port,
2625
14
      { "Primary RMCP Port Number",
2626
14
        "ipmi.lan08.rmcp_port", FT_UINT16, BASE_CUSTOM, CF_FUNC(ipmi_fmt_udpport), 0, NULL, HFILL }},
2627
2628
14
    { &hf_ipmi_trn_lan09_rmcp_port,
2629
14
      { "Secondary RMCP Port Number",
2630
14
        "ipmi.lan09.rmcp_port", FT_UINT16, BASE_CUSTOM, CF_FUNC(ipmi_fmt_udpport), 0, NULL, HFILL }},
2631
2632
14
    { &hf_ipmi_trn_lan10_responses,
2633
14
      { "ARP responses",
2634
14
        "ipmi.lan10.responses", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02, NULL, HFILL }},
2635
14
    { &hf_ipmi_trn_lan10_gratuitous,
2636
14
      { "Gratuitous ARPs",
2637
14
        "ipmi.lan10.gratuitous", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01, NULL, HFILL }},
2638
2639
14
    { &hf_ipmi_trn_lan11_arp_interval,
2640
14
      { "Gratuitous ARP interval",
2641
14
        "ipmi.lan10.arp_interval", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_500ms_0based), 0, NULL, HFILL }},
2642
2643
14
    { &hf_ipmi_trn_lan12_def_gw_ip,
2644
14
      { "Default Gateway Address",
2645
14
        "ipmi.lan12.def_gw_ip", FT_IPv4, BASE_NONE, NULL, 0, NULL, HFILL }},
2646
2647
14
    { &hf_ipmi_trn_lan13_def_gw_mac,
2648
14
      { "Default Gateway MAC Address",
2649
14
        "ipmi.lan13.def_gw_mac", FT_ETHER, BASE_NONE, NULL, 0, NULL, HFILL }},
2650
2651
14
    { &hf_ipmi_trn_lan14_bkp_gw_ip,
2652
14
      { "Backup Gateway Address",
2653
14
        "ipmi.lan14.bkp_gw_ip", FT_IPv4, BASE_NONE, NULL, 0, NULL, HFILL }},
2654
2655
14
    { &hf_ipmi_trn_lan15_bkp_gw_mac,
2656
14
      { "Backup Gateway MAC Address",
2657
14
        "ipmi.lan15.bkp_gw_mac", FT_ETHER, BASE_NONE, NULL, 0, NULL, HFILL }},
2658
2659
14
    { &hf_ipmi_trn_lan16_comm_string,
2660
14
      { "Community String",
2661
14
        "ipmi.lan16.comm_string", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
2662
2663
14
    { &hf_ipmi_trn_lan17_num_dst,
2664
14
      { "Number of Destinations",
2665
14
        "ipmi.lan17.num_dst", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
2666
2667
14
    { &hf_ipmi_trn_lan18_dst_selector,
2668
14
      { "Destination Selector",
2669
14
        "ipmi.lan18.dst_selector", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
2670
14
    { &hf_ipmi_trn_lan18_ack,
2671
14
      { "Alert Acknowledged",
2672
14
        "ipmi.lan18.ack", FT_BOOLEAN, 8, TFS(&lan18_ack_tfs), 0x80, NULL, HFILL }},
2673
14
    { &hf_ipmi_trn_lan18_dst_type,
2674
14
      { "Destination Type",
2675
14
        "ipmi.lan18.dst_type", FT_UINT8, BASE_HEX, VALS(lan18_dst_type_vals), 0x07, NULL, HFILL }},
2676
14
    { &hf_ipmi_trn_lan18_tout,
2677
14
      { "Timeout/Retry Interval",
2678
14
        "ipmi.lan18.tout", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_1s_0based), 0, NULL, HFILL }},
2679
14
    { &hf_ipmi_trn_lan18_retries,
2680
14
      { "Retries",
2681
14
        "ipmi.lan18.retries", FT_UINT8, BASE_DEC, NULL, 0x07, NULL, HFILL }},
2682
2683
14
    { &hf_ipmi_trn_lan19_dst_selector,
2684
14
      { "Destination Selector",
2685
14
        "ipmi.lan19.dst_selector", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
2686
14
    { &hf_ipmi_trn_lan19_addr_format,
2687
14
      { "Address Format",
2688
14
        "ipmi.lan19.addr_format", FT_UINT8, BASE_HEX, VALS(lan19_af_vals), 0xf0, NULL, HFILL }},
2689
14
    { &hf_ipmi_trn_lan19_address,
2690
14
      { "Address (format unknown)",
2691
14
        "ipmi.lan19.address", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
2692
14
    { &hf_ipmi_trn_lan19_gw_sel,
2693
14
      { "Gateway selector",
2694
14
        "ipmi.lan19.gw_sel", FT_BOOLEAN, 8, TFS(&lan19_gw_sel_tfs), 0x01, NULL, HFILL }},
2695
14
    { &hf_ipmi_trn_lan19_ip,
2696
14
      { "Alerting IP Address",
2697
14
        "ipmi.lan19.ip", FT_IPv4, BASE_NONE, NULL, 0, NULL, HFILL }},
2698
14
    { &hf_ipmi_trn_lan19_mac,
2699
14
      { "Alerting MAC Address",
2700
14
        "ipmi.lan19.mac", FT_ETHER, BASE_NONE, NULL, 0, NULL, HFILL }},
2701
2702
14
    { &hf_ipmi_trn_lan20_vlan_id_enable,
2703
14
      { "VLAN ID Enable",
2704
14
        "ipmi.lan20.vlan_id_enable", FT_BOOLEAN, 16, TFS(&lan20_enable_tfs), 0x8000, NULL, HFILL }},
2705
14
    { &hf_ipmi_trn_lan20_vlan_id,
2706
14
      { "VLAN ID",
2707
14
        "ipmi.lan20.vlan_id", FT_UINT16, BASE_HEX, NULL, 0x0fff, NULL, HFILL }},
2708
2709
14
    { &hf_ipmi_trn_lan21_vlan_prio,
2710
14
      { "VLAN Priority",
2711
14
        "ipmi.lan21.vlan_prio", FT_UINT8, BASE_DEC, NULL, 0x07, NULL, HFILL }},
2712
2713
14
    { &hf_ipmi_trn_lan22_num_cs_entries,
2714
14
      { "Number of Cipher Suite Entries",
2715
14
        "ipmi.lan22.num_cs_entries", FT_UINT8, BASE_DEC, NULL, 0x1f, NULL, HFILL }},
2716
2717
14
    { &hf_ipmi_trn_lan23_cs_entry,
2718
14
      { "Cipher Suite ID",
2719
14
        "ipmi.lan23.cs_entry", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2720
2721
14
    { &hf_ipmi_trn_lan24_priv1,
2722
14
      { "Maximum Privilege Level for Cipher Suite",
2723
14
        "ipmi.lan24.priv", FT_UINT8, BASE_HEX, NULL, 0xF0, NULL, HFILL }},
2724
2725
14
    { &hf_ipmi_trn_lan24_priv2,
2726
14
      { "Maximum Privilege Level for Cipher Suite",
2727
14
        "ipmi.lan24.priv", FT_UINT8, BASE_HEX, NULL, 0x0F, NULL, HFILL }},
2728
2729
14
    { &hf_ipmi_trn_lan25_dst_selector,
2730
14
      { "Destination Selector",
2731
14
        "ipmi.lan25.dst_selector", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
2732
14
    { &hf_ipmi_trn_lan25_addr_format,
2733
14
      { "Address Format",
2734
14
        "ipmi.lan25.addr_format", FT_UINT8, BASE_HEX, VALS(lan25_af_vals), 0xf0, NULL, HFILL }},
2735
14
    { &hf_ipmi_trn_lan25_address,
2736
14
      { "Address (format unknown)",
2737
14
        "ipmi.lan25.address", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
2738
14
    { &hf_ipmi_trn_lan25_uprio,
2739
14
      { "User priority",
2740
14
        "ipmi.lan25.uprio", FT_UINT16, BASE_DEC, NULL, 0xe000, NULL, HFILL }},
2741
14
    { &hf_ipmi_trn_lan25_cfi,
2742
14
      { "CFI",
2743
14
        "ipmi.lan25.cfi", FT_BOOLEAN, 16, NULL, 0x1000, NULL, HFILL }},
2744
14
    { &hf_ipmi_trn_lan25_vlan_id,
2745
14
      { "VLAN ID",
2746
14
        "ipmi.lan25.vlan_id", FT_UINT16, BASE_HEX, NULL, 0x0fff, NULL, HFILL }},
2747
2748
14
    { &hf_ipmi_trn_lan26_gen_event,
2749
14
      { "Generate a Session Audit sensor \"Invalid password disable\" event message",
2750
14
        "ipmi.lan26.gen_event", FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }},
2751
14
    { &hf_ipmi_trn_lan26_thresh_number,
2752
14
      { "Bad Password Threshold number",
2753
14
        "ipmi.lan26.thresh_number", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2754
14
    { &hf_ipmi_trn_lan26_reset_interval,
2755
14
      { "Attempt Count Reset Interval",
2756
14
        "ipmi.lan26.reset_interval", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
2757
14
    { &hf_ipmi_trn_lan26_lock_interval,
2758
14
      { "User Lockout Interval",
2759
14
        "ipmi.lan26.lock_interval", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
2760
2761
14
    { &hf_ipmi_trn_lan50_ipv6_only,
2762
14
      { "Support IPv6 addressing only",
2763
14
        "ipmi.lan50.ipv6_only", FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }},
2764
14
    { &hf_ipmi_trn_lan50_both_ipv4_ipv6,
2765
14
      { "Support both IPv4 and IPv6 simultaneously",
2766
14
        "ipmi.lan50.both", FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL }},
2767
14
    { &hf_ipmi_trn_lan50_ipv6_alerting,
2768
14
      { "Support IPv6 destinations for LAN Alerting",
2769
14
        "ipmi.lan50.ipv6_alerting", FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL }},
2770
2771
14
    { &hf_ipmi_trn_lan51_enables,
2772
14
      { "Enables",
2773
14
        "ipmi.lan51.enables", FT_UINT8, BASE_HEX, VALS(lan51_enables), 0, NULL, HFILL }},
2774
2775
14
    { &hf_ipmi_trn_lan52_traffic_class,
2776
14
      { "Traffic Class",
2777
14
        "ipmi.lan52.class", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
2778
2779
14
    { &hf_ipmi_trn_lanXX_hop_limit,
2780
14
      { "Hop Limit",
2781
14
        "ipmi.lanXX.hop_limit", FT_UINT8, BASE_DEC_HEX, NULL, 0, NULL, HFILL }},
2782
2783
14
    { &hf_ipmi_trn_lan54_flow_label,
2784
14
      { "Flow Label",
2785
14
        "ipmi.lan.flow_label", FT_UINT24, BASE_HEX, NULL, 0x0FFFFF, NULL, HFILL }},
2786
2787
14
    { &hf_ipmi_trn_lan55_static_addr_max,
2788
14
      { "Static Address Max",
2789
14
        "ipmi.lan55.static_max", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2790
14
    { &hf_ipmi_trn_lan55_dynamic_addr_max,
2791
14
      { "Dynamic Address Max",
2792
14
        "ipmi.lan55.dynamic_max", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2793
14
    { &hf_ipmi_trn_lan55_dhcpv6_support,
2794
14
      { "DHCPv6 is supported",
2795
14
        "ipmi.lan55.dhcpv6", FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }},
2796
14
    { &hf_ipmi_trn_lan55_slaac_support,
2797
14
      { "SLAAC is supported",
2798
14
        "ipmi.lan55.slaac", FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL }},
2799
2800
14
    { &hf_ipmi_trn_lanXX_addr_selector,
2801
14
      { "Address Selector",
2802
14
        "ipmi.lanXX.addr_sel", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2803
14
    { &hf_ipmi_trn_lanXX_addr_type,
2804
14
      { "Address source/type",
2805
14
        "ipmi.lanXX.addr_type", FT_UINT8, BASE_DEC, VALS(lanXX_addr_type), 0xF, NULL, HFILL }},
2806
14
    { &hf_ipmi_trn_lanXX_addr_enable,
2807
14
      { "Address is enabled",
2808
14
        "ipmi.lanXX.addr_enable", FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }},
2809
14
    { &hf_ipmi_trn_lanXX_addr,
2810
14
      { "IPv6 Address",
2811
14
        "ipmi.lanXX.addr", FT_IPv6, BASE_NONE, NULL, 0, NULL, HFILL }},
2812
14
    { &hf_ipmi_trn_lanXX_prefix_len,
2813
14
      { "Prefix Length",
2814
14
        "ipmi.lanXX.prefix_len", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2815
14
    { &hf_ipmi_trn_lanXX_addr_status,
2816
14
      { "Address status",
2817
14
        "ipmi.lanXX.addr_status", FT_UINT8, BASE_DEC, VALS(lanXX_addr_status), 0, NULL, HFILL }},
2818
2819
14
    { &hf_ipmi_trn_lanXX_max_duid_blocks,
2820
14
      { "Maximum number of 16-byte blocks",
2821
14
        "ipmi.lanXX.max_duid_blocks", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2822
2823
14
    { &hf_ipmi_trn_lanXX_duid_selector,
2824
14
      { "DUID selector",
2825
14
        "ipmi.lanXX.duid_sel", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2826
14
    { &hf_ipmi_trn_lanXX_block_selector,
2827
14
      { "Block selector",
2828
14
        "ipmi.lanXX.block_sel", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2829
14
    { &hf_ipmi_trn_lanXX_duid,
2830
14
      { "DUID data",
2831
14
        "ipmi.lanXX.duid", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
2832
2833
14
    { &hf_ipmi_trn_lanXX_timing_support,
2834
14
      { "Timing Configuration Support",
2835
14
        "ipmi.lanXX.timing_support", FT_UINT8, BASE_DEC, VALS(lanXX_timing_support), 0, NULL, HFILL }},
2836
2837
14
    { &hf_ipmi_trn_lanXX_iface_selector,
2838
14
      { "IPv6 Interface selector",
2839
14
        "ipmi.lanXX.iface_sel", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2840
14
    { &hf_ipmi_trn_lan63_sol_max_delay,
2841
14
      { "SOL_MAX_DELAY",
2842
14
        "ipmi.lan63.sol_max_delay", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2843
14
    { &hf_ipmi_trn_lan63_sol_timeout,
2844
14
      { "SOL_TIMEOUT",
2845
14
        "ipmi.lan63.sol_timeout", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2846
14
    { &hf_ipmi_trn_lan63_sol_max_rt,
2847
14
      { "SOL_MAX_RT",
2848
14
        "ipmi.lan63.sol_max_rt", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2849
14
    { &hf_ipmi_trn_lan63_req_timeout,
2850
14
      { "REQ_TIMEOUT",
2851
14
        "ipmi.lan63.req_timeout", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2852
14
    { &hf_ipmi_trn_lan63_req_max_rt,
2853
14
      { "REQ_MAX_RT",
2854
14
        "ipmi.lan63.req_max_rt", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2855
14
    { &hf_ipmi_trn_lan63_req_max_rc,
2856
14
      { "REQ_MAX_RC",
2857
14
        "ipmi.lan63.req_max_rc", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2858
14
    { &hf_ipmi_trn_lan63_cnf_max_delay,
2859
14
      { "CNF_MAX_DELAY",
2860
14
        "ipmi.lan63.cnf_max_delay", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2861
14
    { &hf_ipmi_trn_lan63_cnf_timeout,
2862
14
      { "CNF_TIMEOUT",
2863
14
        "ipmi.lan63.cnf_timeout", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2864
14
    { &hf_ipmi_trn_lan63_cnf_max_rt,
2865
14
      { "CNF_MAX_RT",
2866
14
        "ipmi.lan63.cnf_max_rt", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2867
14
    { &hf_ipmi_trn_lan63_cnf_max_rd,
2868
14
      { "CNF_MAX_RD",
2869
14
        "ipmi.lan63.cnf_max_rd", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2870
14
    { &hf_ipmi_trn_lan63_ren_timeout,
2871
14
      { "REN_TIMEOUT",
2872
14
        "ipmi.lan63.ren_timeout", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2873
14
    { &hf_ipmi_trn_lan63_ren_max_rt,
2874
14
      { "REN_MAX_RT",
2875
14
        "ipmi.lan63.ren_max_rt", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2876
14
    { &hf_ipmi_trn_lan63_reb_timeout,
2877
14
      { "REB_TIMEOUT",
2878
14
        "ipmi.lan63.reb_timeout", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2879
14
    { &hf_ipmi_trn_lan63_reb_max_rt,
2880
14
      { "REB_MAX_RT",
2881
14
        "ipmi.lan63.reb_max_rt", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2882
14
    { &hf_ipmi_trn_lan63_inf_max_delay,
2883
14
      { "INF_MAX_DELAY",
2884
14
        "ipmi.lan63.inf_max_delay", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2885
14
    { &hf_ipmi_trn_lan63_inf_timeout,
2886
14
      { "INF_TIMEOUT",
2887
14
        "ipmi.lan63.inf_timeout", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2888
14
    { &hf_ipmi_trn_lan63_inf_max_rt,
2889
14
      { "INF_MAX_RT",
2890
14
        "ipmi.lan63.inf_max_rt", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2891
14
    { &hf_ipmi_trn_lan63_rel_timeout,
2892
14
      { "REL_TIMEOUT",
2893
14
        "ipmi.lan63.rel_timeout", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2894
14
    { &hf_ipmi_trn_lan63_rel_max_rc,
2895
14
      { "REL_MAX_RC",
2896
14
        "ipmi.lan63.rel_max_rc", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2897
14
    { &hf_ipmi_trn_lan63_dec_timeout,
2898
14
      { "DEC_TIMEOUT",
2899
14
        "ipmi.lan63.dec_timeout", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2900
14
    { &hf_ipmi_trn_lan63_dec_max_rc,
2901
14
      { "DEC_MAX_RC",
2902
14
        "ipmi.lan63.dec_max_rc", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2903
14
    { &hf_ipmi_trn_lan63_hop_count_limit,
2904
14
      { "HOP_COUNT_LIMIT",
2905
14
        "ipmi.lan63.hop_count_limit", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2906
2907
14
    { &hf_ipmi_trn_lan64_static_cfg,
2908
14
      { "Enable static router address",
2909
14
        "ipmi.lan64.static_cfg", FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }},
2910
14
    { &hf_ipmi_trn_lan64_dynamic_cfg,
2911
14
      { "Enable dynamic router address configuration",
2912
14
        "ipmi.lan64.dynamic_cfg", FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL }},
2913
2914
14
    { &hf_ipmi_trn_lanXX_router_selector,
2915
14
      { "Router selector",
2916
14
        "ipmi.lanXX.router_sel", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2917
14
    { &hf_ipmi_trn_lanXX_router_mac,
2918
14
      { "MAC Address",
2919
14
        "ipmi.lanXX.mac", FT_ETHER, BASE_NONE, NULL, 0, NULL, HFILL }},
2920
14
    { &hf_ipmi_trn_lanXX_router_prefix,
2921
14
      { "Prefix Value",
2922
14
        "ipmi.lanXX.prefix", FT_IPv6, BASE_NONE, NULL, 0, NULL, HFILL }},
2923
2924
14
    { &hf_ipmi_trn_lan73_num_dynamic_sets,
2925
14
      { "Number of Dynamic Router Info sets",
2926
14
        "ipmi.lanXX.num_dynamic_sets", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2927
2928
14
    { &hf_ipmi_trn_lan80_max_rtr_solicitation_delay,
2929
14
      { "MAX_RTR_SOLICITATION_DELAY",
2930
14
        "ipmi.lan80.max_rtr_sol_delay", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2931
14
    { &hf_ipmi_trn_lan80_rtr_solicitation_interval,
2932
14
      { "RTR_SOLICITATION_INTERVAL",
2933
14
        "ipmi.lan80.rtr_sol_interval", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2934
14
    { &hf_ipmi_trn_lan80_max_rtr_solicitations,
2935
14
      { "MAX_RTR_SOLICITATIONS",
2936
14
        "ipmi.lan80.max_rtr_sols", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2937
14
    { &hf_ipmi_trn_lan80_dup_addr_detect_transmits,
2938
14
      { "DupAddrDetectTransmits",
2939
14
        "ipmi.lan80.dup_addr_transmits", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2940
14
    { &hf_ipmi_trn_lan80_max_multicast_solicit,
2941
14
      { "MAX_MULTICAST_SOLICIT",
2942
14
        "ipmi.lan80.max_mcast_sol", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2943
14
    { &hf_ipmi_trn_lan80_max_unicast_solicit,
2944
14
      { "MAX_UNICAST_SOLICIT",
2945
14
        "ipmi.lan80.max_ucast_sol", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2946
14
    { &hf_ipmi_trn_lan80_max_anycast_delay_time,
2947
14
      { "MAX_ANYCAST_DELAY_TIME",
2948
14
        "ipmi.lan80.max_anycast_delay", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2949
14
    { &hf_ipmi_trn_lan80_max_neighbor_advertisement,
2950
14
      { "MAX_NEIGHBOR_ADVERTISEMENT",
2951
14
        "ipmi.lan80.max_neigh_adv", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2952
14
    { &hf_ipmi_trn_lan80_reachable_time,
2953
14
      { "REACHABLE_TIME",
2954
14
        "ipmi.lan80.reach_time", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2955
14
    { &hf_ipmi_trn_lan80_retrans_timer,
2956
14
      { "RETRANS_TIMER",
2957
14
        "ipmi.lan80.retrans_timer", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2958
14
    { &hf_ipmi_trn_lan80_delay_first_probe_time,
2959
14
      { "DELAY_FIRST_PROBE_TIME",
2960
14
        "ipmi.lan80.delay_first_probe", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2961
14
    { &hf_ipmi_trn_lan80_max_random_factor,
2962
14
      { "MAX_RANDOM_FACTOR",
2963
14
        "ipmi.lan80.max_rand", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2964
14
    { &hf_ipmi_trn_lan80_min_random_factor,
2965
14
      { "MIN_RANDOM_FACTOR",
2966
14
        "ipmi.lan80.min_rand", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
2967
2968
14
    { &hf_ipmi_trn_serial03_connmode,
2969
14
      { "Connection Mode",
2970
14
        "ipmi.serial03.connmode", FT_BOOLEAN, 8, TFS(&serial03_connmode_tfs), 0x80, NULL, HFILL }},
2971
14
    { &hf_ipmi_trn_serial03_terminal,
2972
14
      { "Terminal Mode",
2973
14
        "ipmi.serial03.terminal", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x04, NULL, HFILL }},
2974
14
    { &hf_ipmi_trn_serial03_ppp,
2975
14
      { "PPP Mode",
2976
14
        "ipmi.serial03.ppp", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02, NULL, HFILL }},
2977
14
    { &hf_ipmi_trn_serial03_basic,
2978
14
      { "Basic Mode",
2979
14
        "ipmi.serial03.basic", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01, NULL, HFILL }},
2980
14
    { &hf_ipmi_trn_serial04_timeout,
2981
14
      { "Session Inactivity Timeout",
2982
14
        "ipmi.serial04.timeout", FT_UINT8, BASE_CUSTOM, CF_FUNC(serial04_timeout_fmt), 0x0f, NULL, HFILL }},
2983
14
    { &hf_ipmi_trn_serial05_cbcp_callback,
2984
14
      { "CBCP Callback",
2985
14
        "ipmi.serial05.cbcp", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02, NULL, HFILL }},
2986
14
    { &hf_ipmi_trn_serial05_ipmi_callback,
2987
14
      { "IPMI Callback",
2988
14
        "ipmi.serial05.ipmi", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01, NULL, HFILL }},
2989
14
    { &hf_ipmi_trn_serial05_cb_list,
2990
14
      { "Callback to list of possible numbers",
2991
14
        "ipmi.serial05.cb_list", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x08, NULL, HFILL }},
2992
14
    { &hf_ipmi_trn_serial05_cb_user,
2993
14
      { "Callback to user-specifiable number",
2994
14
        "ipmi.serial05.cb_user", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x04, NULL, HFILL }},
2995
14
    { &hf_ipmi_trn_serial05_cb_prespec,
2996
14
      { "Callback to pre-specified number",
2997
14
        "ipmi.serial05.cb_prespec", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02, NULL, HFILL }},
2998
14
    { &hf_ipmi_trn_serial05_no_cb,
2999
14
      { "No callback",
3000
14
        "ipmi.serial05.no_cb", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01, NULL, HFILL }},
3001
14
    { &hf_ipmi_trn_serial05_cb_dest1,
3002
14
      { "Callback destination 1",
3003
14
        "ipmi.serial05.cb_dest1", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3004
14
    { &hf_ipmi_trn_serial05_cb_dest2,
3005
14
      { "Callback destination 2",
3006
14
        "ipmi.serial05.cb_dest2", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3007
14
    { &hf_ipmi_trn_serial05_cb_dest3,
3008
14
      { "Callback destination 3",
3009
14
        "ipmi.serial05.cb_dest3", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3010
14
    { &hf_ipmi_trn_serial06_inactivity,
3011
14
      { "Session Inactivity Timeout",
3012
14
        "ipmi.serial06.inactivity", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02, NULL, HFILL }},
3013
14
    { &hf_ipmi_trn_serial06_dcd,
3014
14
      { "Close on DCD Loss",
3015
14
        "ipmi.serial06.dcd", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01, NULL, HFILL }},
3016
14
    { &hf_ipmi_trn_serial07_flowctl,
3017
14
      { "Flow Control",
3018
14
        "ipmi.serial07.flowctl", FT_UINT8, BASE_HEX, VALS(serialXX_flowctl_vals), 0xc0, NULL, HFILL }},
3019
14
    { &hf_ipmi_trn_serial07_dtrhangup,
3020
14
      { "DTR Hang-up",
3021
14
        "ipmi.serial07.dtrhangup", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x20, NULL, HFILL }},
3022
14
    { &hf_ipmi_trn_serial07_bitrate,
3023
14
      { "Bit rate",
3024
14
        "ipmi.serial07.bitrate", FT_UINT8, BASE_HEX, VALS(serialXX_bitrate_vals), 0x0f, NULL, HFILL }},
3025
14
    { &hf_ipmi_trn_serial08_esc_powerup,
3026
14
      { "Power-up/wakeup via ESC-^",
3027
14
        "ipmi.serial08.esc_powerup", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x40, NULL, HFILL }},
3028
14
    { &hf_ipmi_trn_serial08_esc_reset,
3029
14
      { "Hard reset via ESC-R-ESC-r-ESC-R",
3030
14
        "ipmi.serial08.esc_reset", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x20, NULL, HFILL }},
3031
14
    { &hf_ipmi_trn_serial08_switch_authcap,
3032
14
      { "Baseboard-to-BMC switch on Get Channel Auth Capabilities",
3033
14
        "ipmi.serial08.switch_authcap", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x10, NULL, HFILL }},
3034
14
    { &hf_ipmi_trn_serial08_switch_rmcp,
3035
14
      { "Switch to BMC on IPMI-RMCP pattern",
3036
14
        "ipmi.serial08.switch_rmcp", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x08, NULL, HFILL }},
3037
14
    { &hf_ipmi_trn_serial08_esc_switch1,
3038
14
      { "BMC-to-Baseboard switch via ESC-Q",
3039
14
        "ipmi.serial08.esc_switch1", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x04, NULL, HFILL }},
3040
14
    { &hf_ipmi_trn_serial08_esc_switch2,
3041
14
      { "Baseboard-to-BMC switch via ESC-(",
3042
14
        "ipmi.serial08.esc_switch2", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02, NULL, HFILL }},
3043
14
    { &hf_ipmi_trn_serial08_switch_dcdloss,
3044
14
      { "Switch to BMC on DCD loss",
3045
14
        "ipmi.serial08.switch_dcdloss", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01, NULL, HFILL }},
3046
14
    { &hf_ipmi_trn_serial08_sharing,
3047
14
      { "Serial Port Sharing",
3048
14
        "ipmi.serial08.sharing", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x08, NULL, HFILL }},
3049
14
    { &hf_ipmi_trn_serial08_ping_callback,
3050
14
      { "Serial/Modem Connection Active during callback",
3051
14
        "ipmi.serial08.ping_callback", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x04, NULL, HFILL }},
3052
14
    { &hf_ipmi_trn_serial08_ping_direct,
3053
14
      { "Serial/Modem Connection Active during direct call",
3054
14
        "ipmi.serial08.ping_direct", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02, NULL, HFILL }},
3055
14
    { &hf_ipmi_trn_serial08_ping_retry,
3056
14
      { "Retry Serial/Modem Connection Active",
3057
14
        "ipmi.serial08.ping_retry", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01, NULL, HFILL }},
3058
14
    { &hf_ipmi_trn_serial09_ring_duration,
3059
14
      { "Ring Duration",
3060
14
        "ipmi.serial09.ring_duration", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_500ms_1based), 0x3f, NULL, HFILL }},
3061
14
    { &hf_ipmi_trn_serial09_ring_dead,
3062
14
      { "Ring Dead Time",
3063
14
        "ipmi.serial09.ring_dead", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_500ms_0based), 0x0f, NULL, HFILL }},
3064
14
    { &hf_ipmi_trn_serial10_set_sel,
3065
14
      { "Set selector (16-byte block #)",
3066
14
        "ipmi.serial10.set_sel", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3067
14
    { &hf_ipmi_trn_serial10_init_str,
3068
14
      { "Modem Init String",
3069
14
        "ipmi.serial10.init_str", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
3070
14
    { &hf_ipmi_trn_serial11_esc_seq,
3071
14
      { "Modem Escape Sequence",
3072
14
        "ipmi.serial11.esc_seq", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
3073
14
    { &hf_ipmi_trn_serial12_hangup_seq,
3074
14
      { "Modem Hang-up Sequence",
3075
14
        "ipmi.serial12.hangup_seq", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
3076
14
    { &hf_ipmi_trn_serial13_dial_cmd,
3077
14
      { "Modem Dial Command",
3078
14
        "ipmi.serial13.dial_cmd", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
3079
14
    { &hf_ipmi_trn_serial14_page_blackout,
3080
14
      { "Page Blackout Interval (minutes)",
3081
14
        "ipmi.serial14.page_blackout", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3082
14
    { &hf_ipmi_trn_serial15_comm_string,
3083
14
      { "Community String",
3084
14
        "ipmi.serial15.comm_string", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
3085
14
    { &hf_ipmi_trn_serial16_ndest,
3086
14
      { "Number of non-volatile Alert Destinations",
3087
14
        "ipmi.serial16.ndest", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
3088
14
    { &hf_ipmi_trn_serial17_dest_sel,
3089
14
      { "Destination Selector",
3090
14
        "ipmi.serial17.dest_sel", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
3091
14
    { &hf_ipmi_trn_serial17_ack,
3092
14
      { "Alert Acknowledge",
3093
14
        "ipmi.serial17.ack", FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }},
3094
14
    { &hf_ipmi_trn_serial17_dest_type,
3095
14
      { "Destination Type",
3096
14
        "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
14
    { &hf_ipmi_trn_serial17_alert_retries,
3103
14
      { "Alert retries",
3104
14
        "ipmi.serial17.alert_retries", FT_UINT8, BASE_DEC, NULL, 0x70, NULL, HFILL }},
3105
14
    { &hf_ipmi_trn_serial17_call_retries,
3106
14
      { "Call retries",
3107
14
        "ipmi.serial17.call_retries", FT_UINT8, BASE_DEC, NULL, 0x07, NULL, HFILL }},
3108
14
    { &hf_ipmi_trn_serial17_alert_ack_timeout,
3109
14
      { "Alert Acknowledge Timeout",
3110
14
        "ipmi.serial17.alert_ack_timeout", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_1s_0based), 0, NULL, HFILL }},
3111
14
    { &hf_ipmi_trn_serial17_dialstr_sel,
3112
14
      { "Dial String Selector",
3113
14
        "ipmi.serial17.dialstr_sel", FT_UINT8, BASE_DEC, NULL, 0xf0, NULL, HFILL }},
3114
14
    { &hf_ipmi_trn_serial17_tap_sel,
3115
14
      { "TAP Account Selector",
3116
14
        "ipmi.serial17.tap_sel", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
3117
14
    { &hf_ipmi_trn_serial17_ipaddr_sel,
3118
14
      { "Destination IP Address Selector",
3119
14
        "ipmi.serial17.ipaddr_sel", FT_UINT8, BASE_DEC, NULL, 0xf0, NULL, HFILL }},
3120
14
    { &hf_ipmi_trn_serial17_ppp_sel,
3121
14
      { "PPP Account Set Selector",
3122
14
        "ipmi.serial17.ppp_sel", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
3123
14
    { &hf_ipmi_trn_serial17_unknown,
3124
14
      { "Destination-specific (format unknown)",
3125
14
        "ipmi.serial17.unknown", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3126
14
    { &hf_ipmi_trn_serial18_call_retry,
3127
14
      { "Call Retry Interval",
3128
14
        "ipmi.serial18.call_retry", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3129
14
    { &hf_ipmi_trn_serial19_destsel,
3130
14
      { "Destination selector",
3131
14
        "ipmi.serial19.destsel", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
3132
14
    { &hf_ipmi_trn_serial19_flowctl,
3133
14
      { "Flow Control",
3134
14
        "ipmi.serial19.flowctl", FT_UINT8, BASE_HEX, VALS(serialXX_flowctl_vals), 0xc0, NULL, HFILL }},
3135
14
    { &hf_ipmi_trn_serial19_dtrhangup,
3136
14
      { "DTR Hang-up",
3137
14
        "ipmi.serial19.dtrhangup", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x20, NULL, HFILL }},
3138
14
    { &hf_ipmi_trn_serial19_stopbits,
3139
14
      { "Stop bits",
3140
14
        "ipmi.serial19.stopbits", FT_BOOLEAN, 8, TFS(&serial19_stopbits_tfs), 0x10, NULL, HFILL }},
3141
14
    { &hf_ipmi_trn_serial19_charsize,
3142
14
      { "Character size",
3143
14
        "ipmi.serial19.charsize", FT_BOOLEAN, 8, TFS(&serial19_charsize_tfs), 0x08, NULL, HFILL }},
3144
14
    { &hf_ipmi_trn_serial19_parity,
3145
14
      { "Parity",
3146
14
        "ipmi.serial19.parity", FT_UINT8, BASE_HEX, VALS(serial19_parity_vals), 0x07, NULL, HFILL }},
3147
14
    { &hf_ipmi_trn_serial19_bitrate,
3148
14
      { "Bit rate",
3149
14
        "ipmi.serial19.bitrate", FT_UINT8, BASE_HEX, VALS(serialXX_bitrate_vals), 0x0f, NULL, HFILL }},
3150
14
    { &hf_ipmi_trn_serial20_num_dial_strings,
3151
14
      { "Number of Dial Strings",
3152
14
        "ipmi.serial20.num_dial_strings", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
3153
14
    { &hf_ipmi_trn_serial21_dialsel,
3154
14
      { "Dial String Selector",
3155
14
        "ipmi.serial21.dialsel", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
3156
14
    { &hf_ipmi_trn_serial21_blockno,
3157
14
      { "Block number",
3158
14
        "ipmi.serial21.blockno", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3159
14
    { &hf_ipmi_trn_serial21_dialstr,
3160
14
      { "Dial string",
3161
14
        "ipmi.serial21.dialstr", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
3162
14
    { &hf_ipmi_trn_serial22_num_ipaddrs,
3163
14
      { "Number of Alert Destination IP Addresses",
3164
14
        "ipmi.serial22.num_ipaddrs", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
3165
14
    { &hf_ipmi_trn_serial23_destsel,
3166
14
      { "Destination IP Address selector",
3167
14
        "ipmi.serial23.destsel", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
3168
14
    { &hf_ipmi_trn_serial23_ipaddr,
3169
14
      { "Destination IP Address",
3170
14
        "ipmi.serial23.ipaddr", FT_IPv4, BASE_NONE, NULL, 0, NULL, HFILL }},
3171
14
    { &hf_ipmi_trn_serial24_num_tap_accounts,
3172
14
      { "Number of TAP Accounts",
3173
14
        "ipmi.serial24.num_tap_accounts", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
3174
14
    { &hf_ipmi_trn_serial25_tap_acct,
3175
14
      { "TAP Account Selector",
3176
14
        "ipmi.serial25.tap_acct", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3177
14
    { &hf_ipmi_trn_serial25_dialstr_sel,
3178
14
      { "Dial String Selector",
3179
14
        "ipmi.serial25.dialstr_sel", FT_UINT8, BASE_DEC, NULL, 0xf0, NULL, HFILL }},
3180
14
    { &hf_ipmi_trn_serial25_tapsrv_sel,
3181
14
      { "TAP Service Settings Selector",
3182
14
        "ipmi.serial25.tapsrv_sel", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
3183
14
    { &hf_ipmi_trn_serial26_tap_acct,
3184
14
      { "TAP Account Selector",
3185
14
        "ipmi.serial26.tap_acct", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3186
14
    { &hf_ipmi_trn_serial26_tap_passwd,
3187
14
      { "TAP Password",
3188
14
        "ipmi.serial26.tap_passwd", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
3189
14
    { &hf_ipmi_trn_serial27_tap_acct,
3190
14
      { "TAP Account Selector",
3191
14
        "ipmi.serial27.tap_acct", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3192
14
    { &hf_ipmi_trn_serial27_tap_pager_id,
3193
14
      { "TAP Pager ID String",
3194
14
        "ipmi.serial27.tap_pager_id", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
3195
14
    { &hf_ipmi_trn_serial28_tapsrv_sel,
3196
14
      { "TAP Service Settings Selector",
3197
14
        "ipmi.serial28.tapsrv_sel", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
3198
14
    { &hf_ipmi_trn_serial28_confirm,
3199
14
      { "TAP Confirmation",
3200
14
        "ipmi.serial28.confirm", FT_UINT8, BASE_HEX, VALS(serial28_confirm_vals), 0x03, NULL, HFILL }},
3201
14
    { &hf_ipmi_trn_serial28_srvtype,
3202
14
      { "TAP 'SST' Service Type",
3203
14
        "ipmi.serial28.srvtype", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
3204
14
    { &hf_ipmi_trn_serial28_ctrl_esc,
3205
14
      { "TAP Control-character escaping mask",
3206
14
        "ipmi.serial28.ctrl_esc", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
3207
14
    { &hf_ipmi_trn_serial28_t2,
3208
14
      { "TAP T2",
3209
14
        "ipmi.serial28.tap_t2", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_500ms_0based), 0xf0, NULL, HFILL }},
3210
14
    { &hf_ipmi_trn_serial28_t1,
3211
14
      { "TAP T1",
3212
14
        "ipmi.serial28.tap_t1", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_1s_0based), 0x0f, NULL, HFILL }},
3213
14
    { &hf_ipmi_trn_serial28_t4,
3214
14
      { "TAP T4",
3215
14
        "ipmi.serial28.tap_t4", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_1s_0based), 0xf0, NULL, HFILL }},
3216
14
    { &hf_ipmi_trn_serial28_t3,
3217
14
      { "TAP T3",
3218
14
        "ipmi.serial28.tap_t3", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_2s_0based), 0x0f, NULL, HFILL }},
3219
14
    { &hf_ipmi_trn_serial28_t6,
3220
14
      { "IPMI T6",
3221
14
        "ipmi.serial28.ipmi_t6", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_1s_0based), 0xf0, NULL, HFILL }},
3222
14
    { &hf_ipmi_trn_serial28_t5,
3223
14
      { "TAP T5",
3224
14
        "ipmi.serial28.tap_t5", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_2s_0based), 0x0f, NULL, HFILL }},
3225
14
    { &hf_ipmi_trn_serial28_n2,
3226
14
      { "TAP N2",
3227
14
        "ipmi.serial28.tap_n2", FT_UINT8, BASE_DEC, NULL, 0xf0, NULL, HFILL }},
3228
14
    { &hf_ipmi_trn_serial28_n1,
3229
14
      { "TAP N1",
3230
14
        "ipmi.serial28.tap_n1", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
3231
14
    { &hf_ipmi_trn_serial28_n4,
3232
14
      { "IPMI N4",
3233
14
        "ipmi.serial28.ipmi_n4", FT_UINT8, BASE_DEC, NULL, 0xf0, NULL, HFILL }},
3234
14
    { &hf_ipmi_trn_serial28_n3,
3235
14
      { "TAP N3",
3236
14
        "ipmi.serial28.tap_n3", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
3237
14
    { &hf_ipmi_trn_serial29_op,
3238
14
      { "Parameter Operation",
3239
14
        "ipmi.serial29.op", FT_UINT8, BASE_HEX, VALS(serial29_op_vals), 0xc0, NULL, HFILL }},
3240
14
    { &hf_ipmi_trn_serial29_lineedit,
3241
14
      { "Line Editing",
3242
14
        "ipmi.serial29.lineedit", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x20, NULL, HFILL }},
3243
14
    { &hf_ipmi_trn_serial29_deletectl,
3244
14
      { "Delete control",
3245
14
        "ipmi.serial29.deletectl", FT_UINT8, BASE_HEX, VALS(serial29_delete_vals), 0x0c, NULL, HFILL }},
3246
14
    { &hf_ipmi_trn_serial29_echo,
3247
14
      { "Echo",
3248
14
        "ipmi.serial29.echo", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02, NULL, HFILL }},
3249
14
    { &hf_ipmi_trn_serial29_handshake,
3250
14
      { "Handshake",
3251
14
        "ipmi.serial29.handshake", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01, NULL, HFILL }},
3252
14
    { &hf_ipmi_trn_serial29_o_newline,
3253
14
      { "Output newline sequence",
3254
14
        "ipmi.serial29.o_newline", FT_UINT8, BASE_HEX, VALS(serial29_o_nl_vals), 0xf0, NULL, HFILL }},
3255
14
    { &hf_ipmi_trn_serial29_i_newline,
3256
14
      { "Input newline sequence",
3257
14
        "ipmi.serial29.i_newline", FT_UINT8, BASE_HEX, VALS(serial29_i_nl_vals), 0x0f, NULL, HFILL }},
3258
14
    { &hf_ipmi_trn_serial30_snooping,
3259
14
      { "System Negotiation Snooping",
3260
14
        "ipmi.serial30.snooping", FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL }},
3261
14
    { &hf_ipmi_trn_serial30_snoopctl,
3262
14
      { "Snoop ACCM Control",
3263
14
        "ipmi.serial30.snoopctl", FT_UINT8, BASE_HEX, VALS(serial30_snoopctl_vals), 0x03, NULL, HFILL }},
3264
14
    { &hf_ipmi_trn_serial30_negot_ctl,
3265
14
      { "BMC negotiates link parameters",
3266
14
        "ipmi.serial30.negot_ctl", FT_UINT8, BASE_HEX, VALS(serial30_negoctl_vals), 0x30, NULL, HFILL }},
3267
14
    { &hf_ipmi_trn_serial30_use_xmit_accm,
3268
14
      { "Filtering incoming chars",
3269
14
        "ipmi.serial30.filter", FT_BOOLEAN, 8, TFS(&serial30_filter_tfs), 0x04, NULL, HFILL }},
3270
14
    { &hf_ipmi_trn_serial30_xmit_addr_comp,
3271
14
      { "Transmit with Address and Ctl Field Compression",
3272
14
        "ipmi.serial30.xmit_addr_comp", FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL }},
3273
14
    { &hf_ipmi_trn_serial30_xmit_proto_comp,
3274
14
      { "Transmit with Protocol Field Compression",
3275
14
        "ipmi.serial30.xmit_proto_comp", FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }},
3276
14
    { &hf_ipmi_trn_serial30_ipaddr,
3277
14
      { "IP Address negotiation",
3278
14
        "ipmi.serial30.ipaddr", FT_UINT8, BASE_HEX, VALS(serial30_ipaddr_val), 0x18, NULL, HFILL }},
3279
14
    { &hf_ipmi_trn_serial30_accm,
3280
14
      { "ACCM Negotiation",
3281
14
        "ipmi.serial30.accm", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x04, NULL, HFILL }},
3282
14
    { &hf_ipmi_trn_serial30_addr_comp,
3283
14
      { "Address and Ctl Field Compression",
3284
14
        "ipmi.serial30.addr_comp", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02, NULL, HFILL }},
3285
14
    { &hf_ipmi_trn_serial30_proto_comp,
3286
14
      { "Protocol Field Compression",
3287
14
        "ipmi.serial30.proto_comp", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01, NULL, HFILL }},
3288
14
    { &hf_ipmi_trn_serial31_port,
3289
14
      { "Primary RMCP Port Number",
3290
14
        "ipmi.serial31.port", FT_UINT16, BASE_CUSTOM, CF_FUNC(ipmi_fmt_udpport), 0, NULL, HFILL }},
3291
14
    { &hf_ipmi_trn_serial32_port,
3292
14
      { "Secondary RMCP Port Number",
3293
14
        "ipmi.serial32.port", FT_UINT16, BASE_CUSTOM, CF_FUNC(ipmi_fmt_udpport), 0, NULL, HFILL }},
3294
14
    { &hf_ipmi_trn_serial33_auth_proto,
3295
14
      { "PPP Link Authentication Protocol",
3296
14
        "ipmi.serial33.auth_proto", FT_UINT8, BASE_HEX, VALS(serialXX_proto_vals), 0x0f, NULL, HFILL }},
3297
14
    { &hf_ipmi_trn_serial34_chap_name,
3298
14
      { "CHAP Name",
3299
14
        "ipmi.serial34.chap_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
3300
14
    { &hf_ipmi_trn_serial35_recv_accm,
3301
14
      { "Receive ACCM",
3302
14
        "ipmi.serial35.recv_accm", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
3303
14
    { &hf_ipmi_trn_serial35_xmit_accm,
3304
14
      { "Transmit ACCM",
3305
14
        "ipmi.serial35.xmit_accm", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
3306
14
    { &hf_ipmi_trn_serial36_snoop_accm,
3307
14
      { "Snoop Receive ACCM",
3308
14
        "ipmi.serial36.snoop_accm", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }},
3309
14
    { &hf_ipmi_trn_serial37_num_ppp,
3310
14
      { "Number of PPP Accounts",
3311
14
        "ipmi.serial37.num_ppp", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
3312
14
    { &hf_ipmi_trn_serial38_acct_sel,
3313
14
      { "PPP Account Selector",
3314
14
        "ipmi.serial38.acct_sel", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3315
14
    { &hf_ipmi_trn_serial38_dialstr_sel,
3316
14
      { "Dial String Selector",
3317
14
        "ipmi.serial38.dialstr_sel", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3318
14
    { &hf_ipmi_trn_serial39_acct_sel,
3319
14
      { "PPP Account Selector",
3320
14
        "ipmi.serial39.acct_sel", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3321
14
    { &hf_ipmi_trn_serial39_ipaddr,
3322
14
      { "IP Address",
3323
14
        "ipmi.serial39.ipaddr", FT_IPv4, BASE_NONE, NULL, 0, NULL, HFILL }},
3324
14
    { &hf_ipmi_trn_serial40_acct_sel,
3325
14
      { "PPP Account Selector",
3326
14
        "ipmi.serial40.acct_sel", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3327
14
    { &hf_ipmi_trn_serial40_username,
3328
14
      { "User Name",
3329
14
        "ipmi.serial40.username", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
3330
14
    { &hf_ipmi_trn_serial41_acct_sel,
3331
14
      { "PPP Account Selector",
3332
14
        "ipmi.serial41.acct_sel", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3333
14
    { &hf_ipmi_trn_serial41_userdomain,
3334
14
      { "User Domain",
3335
14
        "ipmi.serial41.userdomain", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
3336
14
    { &hf_ipmi_trn_serial42_acct_sel,
3337
14
      { "PPP Account Selector",
3338
14
        "ipmi.serial42.acct_sel", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3339
14
    { &hf_ipmi_trn_serial42_userpass,
3340
14
      { "User Password",
3341
14
        "ipmi.serial42.userpass", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
3342
14
    { &hf_ipmi_trn_serial43_acct_sel,
3343
14
      { "PPP Account Selector",
3344
14
        "ipmi.serial43.acct_sel", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3345
14
    { &hf_ipmi_trn_serial43_auth_proto,
3346
14
      { "Link Auth Type",
3347
14
        "ipmi.serial43.auth_proto", FT_UINT8, BASE_HEX, VALS(serialXX_proto_vals), 0x0f, NULL, HFILL }},
3348
14
    { &hf_ipmi_trn_serial44_acct_sel,
3349
14
      { "PPP Account Selector",
3350
14
        "ipmi.serial44.acct_sel", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3351
14
    { &hf_ipmi_trn_serial44_hold_time,
3352
14
      { "Connection Hold Time",
3353
14
        "ipmi.serial44.hold_time", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_1s_1based), 0, NULL, HFILL }},
3354
14
    { &hf_ipmi_trn_serial45_src_ipaddr,
3355
14
      { "Source IP Address",
3356
14
        "ipmi.serial45.src_ipaddr", FT_IPv4, BASE_NONE, NULL, 0, NULL, HFILL }},
3357
14
    { &hf_ipmi_trn_serial45_dst_ipaddr,
3358
14
      { "Destination IP Address",
3359
14
        "ipmi.serial45.dst_ipaddr", FT_IPv4, BASE_NONE, NULL, 0, NULL, HFILL }},
3360
14
    { &hf_ipmi_trn_serial46_tx_bufsize,
3361
14
      { "Transmit Buffer Size",
3362
14
        "ipmi.serial46.tx_size", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
3363
14
    { &hf_ipmi_trn_serial47_rx_bufsize,
3364
14
      { "Receive Buffer Size",
3365
14
        "ipmi.serial47.rx_size", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
3366
14
    { &hf_ipmi_trn_serial48_ipaddr,
3367
14
      { "Remote Console IP Address",
3368
14
        "ipmi.serial48.ipaddr", FT_IPv4, BASE_NONE, NULL, 0, NULL, HFILL }},
3369
14
    { &hf_ipmi_trn_serial49_blockno,
3370
14
      { "Block number",
3371
14
        "ipmi.serial49.blockno", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3372
14
    { &hf_ipmi_trn_serial49_dialstr,
3373
14
      { "Dial string",
3374
14
        "ipmi.serial49.dialstr", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
3375
14
    { &hf_ipmi_trn_serial50_115200,
3376
14
      { "115200",
3377
14
        "ipmi.serial50.115200", FT_BOOLEAN, 8, NULL, 0x10, NULL, HFILL }},
3378
14
    { &hf_ipmi_trn_serial50_57600,
3379
14
      { "57600",
3380
14
        "ipmi.serial50.57600", FT_BOOLEAN, 8, NULL, 0x08, NULL, HFILL }},
3381
14
    { &hf_ipmi_trn_serial50_38400,
3382
14
      { "38400",
3383
14
        "ipmi.serial50.38400", FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL }},
3384
14
    { &hf_ipmi_trn_serial50_19200,
3385
14
      { "19200",
3386
14
        "ipmi.serial50.19200", FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL }},
3387
14
    { &hf_ipmi_trn_serial50_9600,
3388
14
      { "9600",
3389
14
        "ipmi.serial50.9600", FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }},
3390
14
    { &hf_ipmi_trn_serial51_port_assoc_sel,
3391
14
      { "Serial Port Association Entry",
3392
14
        "ipmi.serial51.port_assoc_sel", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3393
14
    { &hf_ipmi_trn_serial51_ipmi_channel,
3394
14
      { "IPMI Channel",
3395
14
        "ipmi.serial51.ipmi_channel", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_channel), 0xf0, NULL, HFILL }},
3396
14
    { &hf_ipmi_trn_serial51_conn_num,
3397
14
      { "Connector number",
3398
14
        "ipmi.serial51.conn_num", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
3399
14
    { &hf_ipmi_trn_serial51_ipmi_sharing,
3400
14
      { "Used with IPMI Serial Port Sharing",
3401
14
        "ipmi.serial51.ipmi_sharing", FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }},
3402
14
    { &hf_ipmi_trn_serial51_ipmi_sol,
3403
14
      { "Used with IPMI Serial-over-LAN",
3404
14
        "ipmi.serial51.ipmi_sol", FT_BOOLEAN, 8, NULL, 0x40, NULL, HFILL }},
3405
14
    { &hf_ipmi_trn_serial51_chan_num,
3406
14
      { "Serial controller channel number",
3407
14
        "ipmi.serial51.chan_num", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
3408
14
    { &hf_ipmi_trn_serial52_port_assoc_sel,
3409
14
      { "Serial Port Association Entry",
3410
14
        "ipmi.serial52.port_assoc_sel", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3411
14
    { &hf_ipmi_trn_serial52_conn_name,
3412
14
      { "Connector Name",
3413
14
        "ipmi.serial52_conn_name", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
3414
14
    { &hf_ipmi_trn_serial53_port_assoc_sel,
3415
14
      { "Serial Port Association Entry",
3416
14
        "ipmi.serial53.port_assoc_sel", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3417
14
    { &hf_ipmi_trn_serial53_chan_name,
3418
14
      { "Channel Name",
3419
14
        "ipmi.serial52_chan_name", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
3420
3421
14
    { &hf_ipmi_trn_01_chan,
3422
14
      { "Channel",
3423
14
        "ipmi.tr01.chan", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_channel), 0x0f, NULL, HFILL }},
3424
14
    { &hf_ipmi_trn_01_param,
3425
14
      { "Parameter Selector",
3426
14
        "ipmi.tr01.param", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3427
14
    { &hf_ipmi_trn_01_param_data,
3428
14
      { "Parameter data",
3429
14
        "ipmi.tr01.param_data", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
3430
3431
14
    { &hf_ipmi_trn_02_getrev,
3432
14
      { "Get parameter revision only",
3433
14
        "ipmi.tr02.getrev", FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }},
3434
14
    { &hf_ipmi_trn_02_chan,
3435
14
      { "Channel",
3436
14
        "ipmi.tr02.chan", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_channel), 0x0f, NULL, HFILL }},
3437
14
    { &hf_ipmi_trn_02_param,
3438
14
      { "Parameter selector",
3439
14
        "ipmi.tr02.param", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3440
14
    { &hf_ipmi_trn_02_set,
3441
14
      { "Set selector",
3442
14
        "ipmi.tr02.set", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
3443
14
    { &hf_ipmi_trn_02_block,
3444
14
      { "Block selector",
3445
14
        "ipmi.tr02.block", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
3446
14
    { &hf_ipmi_trn_02_rev_present,
3447
14
      { "Present parameter revision",
3448
14
        "ipmi.tr02.rev.present", FT_UINT8, BASE_DEC, NULL, 0xf0, NULL, HFILL }},
3449
14
    { &hf_ipmi_trn_02_rev_compat,
3450
14
      { "Oldest forward-compatible",
3451
14
        "ipmi.tr02.rev.compat", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
3452
14
    { &hf_ipmi_trn_02_param_data,
3453
14
      { "Parameter data",
3454
14
        "ipmi.tr02.param_data", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
3455
3456
14
    { &hf_ipmi_trn_03_chan,
3457
14
      { "Channel",
3458
14
        "ipmi.tr03.chan", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_channel), 0x0f, NULL, HFILL }},
3459
14
    { &hf_ipmi_trn_03_arp_resp,
3460
14
      { "BMC-generated ARP responses",
3461
14
        "ipmi.tr03.arp_resp", FT_BOOLEAN, 8, TFS(&tfs_03_suspend), 0x02, NULL, HFILL }},
3462
14
    { &hf_ipmi_trn_03_gratuitous_arp,
3463
14
      { "Gratuitous ARPs",
3464
14
        "ipmi.tr03.gratuitous_arp", FT_BOOLEAN, 8, TFS(&tfs_03_suspend), 0x01, NULL, HFILL }},
3465
14
    { &hf_ipmi_trn_03_status_arp_resp,
3466
14
      { "ARP Response status",
3467
14
        "ipmi.tr03.status_arp_resp", FT_BOOLEAN, 8, TFS(&tfs_03_arp_status), 0x02, NULL, HFILL }},
3468
14
    { &hf_ipmi_trn_03_status_gratuitous_arp,
3469
14
      { "Gratuitous ARP status",
3470
14
        "ipmi.tr03.status_gratuitous_arp", FT_BOOLEAN, 8, TFS(&tfs_03_arp_status), 0x01, NULL, HFILL }},
3471
3472
14
    { &hf_ipmi_trn_04_chan,
3473
14
      { "Channel",
3474
14
        "ipmi.tr04.chan", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_channel), 0x0f, NULL, HFILL }},
3475
14
    { &hf_ipmi_trn_04_clear,
3476
14
      { "Statistics",
3477
14
        "ipmi.tr04.clear", FT_BOOLEAN, 8, TFS(&tfs_04_clear), 0x01, NULL, HFILL }},
3478
14
    { &hf_ipmi_trn_04_rx_ippkts,
3479
14
      { "Received IP Packets",
3480
14
        "ipmi.tr04.rx_ippkts", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
3481
14
    { &hf_ipmi_trn_04_rx_iphdr_err,
3482
14
      { "Received IP Header Errors",
3483
14
        "ipmi.tr04.rx_iphdr_err", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
3484
14
    { &hf_ipmi_trn_04_rx_ipaddr_err,
3485
14
      { "Received IP Address Errors",
3486
14
        "ipmi.tr04.rx_ipaddr_err", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
3487
14
    { &hf_ipmi_trn_04_rx_ippkts_frag,
3488
14
      { "Received Fragmented IP Packets",
3489
14
        "ipmi.tr04.rx_ippkts_frag", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
3490
14
    { &hf_ipmi_trn_04_tx_ippkts,
3491
14
      { "Transmitted IP Packets",
3492
14
        "ipmi.tr04.tx_ippkts", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
3493
14
    { &hf_ipmi_trn_04_rx_udppkts,
3494
14
      { "Received UDP Packets",
3495
14
        "ipmi.tr04.rx_udppkts", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
3496
14
    { &hf_ipmi_trn_04_rx_validrmcp,
3497
14
      { "Received Valid RMCP Packets",
3498
14
        "ipmi.tr04.rx_validrmcp", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
3499
14
    { &hf_ipmi_trn_04_rx_udpproxy,
3500
14
      { "Received UDP Proxy Packets",
3501
14
        "ipmi.tr04.rx_udpproxy", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
3502
14
    { &hf_ipmi_trn_04_dr_udpproxy,
3503
14
      { "Dropped UDP Proxy Packets",
3504
14
        "ipmi.tr04.dr_udpproxy", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
3505
3506
14
    { &hf_ipmi_trn_10_chan,
3507
14
      { "Channel",
3508
14
        "ipmi.tr10.chan", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_channel), 0x0f, NULL, HFILL }},
3509
14
    { &hf_ipmi_trn_10_param,
3510
14
      { "Parameter Selector",
3511
14
        "ipmi.tr10.param", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3512
14
    { &hf_ipmi_trn_10_param_data,
3513
14
      { "Parameter data",
3514
14
        "ipmi.tr10.param_data", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
3515
3516
14
    { &hf_ipmi_trn_11_getrev,
3517
14
      { "Get parameter revision only",
3518
14
        "ipmi.tr11.getrev", FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }},
3519
14
    { &hf_ipmi_trn_11_chan,
3520
14
      { "Channel",
3521
14
        "ipmi.tr11.chan", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_channel), 0x0f, NULL, HFILL }},
3522
14
    { &hf_ipmi_trn_11_param,
3523
14
      { "Parameter selector",
3524
14
        "ipmi.tr11.param", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3525
14
    { &hf_ipmi_trn_11_set,
3526
14
      { "Set selector",
3527
14
        "ipmi.tr11.set", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
3528
14
    { &hf_ipmi_trn_11_block,
3529
14
      { "Block selector",
3530
14
        "ipmi.tr11.block", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
3531
14
    { &hf_ipmi_trn_11_rev_present,
3532
14
      { "Present parameter revision",
3533
14
        "ipmi.tr11.rev.present", FT_UINT8, BASE_DEC, NULL, 0xf0, NULL, HFILL }},
3534
14
    { &hf_ipmi_trn_11_rev_compat,
3535
14
      { "Oldest forward-compatible",
3536
14
        "ipmi.tr11.rev.compat", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
3537
14
    { &hf_ipmi_trn_11_param_data,
3538
14
      { "Parameter data",
3539
14
        "ipmi.tr11.param_data", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
3540
3541
14
    { &hf_ipmi_trn_12_chan,
3542
14
      { "Channel",
3543
14
        "ipmi.tr12.chan", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_channel), 0x0f, NULL, HFILL }},
3544
14
    { &hf_ipmi_trn_12_mux_setting,
3545
14
      { "Mux Setting",
3546
14
        "ipmi.tr12.mux_setting", FT_UINT8, BASE_HEX, VALS(vals_12_mux), 0x0f, NULL, HFILL }},
3547
14
    { &hf_ipmi_trn_12_sw_to_sys,
3548
14
      { "Requests to switch to system",
3549
14
        "ipmi.tr12.sw_to_sys", FT_BOOLEAN, 8, TFS(&tfs_12_blocked), 0x80, NULL, HFILL }},
3550
14
    { &hf_ipmi_trn_12_sw_to_bmc,
3551
14
      { "Requests to switch to BMC",
3552
14
        "ipmi.tr12.sw_to_bmc", FT_BOOLEAN, 8, TFS(&tfs_12_blocked), 0x40, NULL, HFILL }},
3553
14
    { &hf_ipmi_trn_12_alert,
3554
14
      { "Alert in progress",
3555
14
        "ipmi.tr12.alert", FT_BOOLEAN, 8, NULL, 0x08, NULL, HFILL }},
3556
14
    { &hf_ipmi_trn_12_msg,
3557
14
      { "IPMI/OEM messaging active",
3558
14
        "ipmi.tr12.msg", FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL }},
3559
14
    { &hf_ipmi_trn_12_req,
3560
14
      { "Request",
3561
14
        "ipmi.tr12.req", FT_BOOLEAN, 8, TFS(&tfs_12_req), 0x02, NULL, HFILL }},
3562
14
    { &hf_ipmi_trn_12_mux_state,
3563
14
      { "Mux set to",
3564
14
        "ipmi.tr12.mux_state", FT_BOOLEAN, 8, TFS(&tfs_12_mux_state), 0x01, NULL, HFILL }},
3565
3566
14
    { &hf_ipmi_trn_13_chan,
3567
14
      { "Channel",
3568
14
        "ipmi.tr13.chan", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_channel), 0x0f, NULL, HFILL }},
3569
14
    { &hf_ipmi_trn_13_code1,
3570
14
      { "Last code",
3571
14
        "ipmi.tr13.code1", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
3572
14
    { &hf_ipmi_trn_13_code2,
3573
14
      { "2nd code",
3574
14
        "ipmi.tr13.code2", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
3575
14
    { &hf_ipmi_trn_13_code3,
3576
14
      { "3rd code",
3577
14
        "ipmi.tr13.code3", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
3578
14
    { &hf_ipmi_trn_13_code4,
3579
14
      { "4th code",
3580
14
        "ipmi.tr13.code4", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
3581
14
    { &hf_ipmi_trn_13_code5,
3582
14
      { "5th code",
3583
14
        "ipmi.tr13.code5", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }},
3584
3585
14
    { &hf_ipmi_trn_14_chan,
3586
14
      { "Channel",
3587
14
        "ipmi.tr14.chan", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_channel), 0x0f, NULL, HFILL }},
3588
14
    { &hf_ipmi_trn_14_block,
3589
14
      { "Block number",
3590
14
        "ipmi.tr14.block", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3591
14
    { &hf_ipmi_trn_14_data,
3592
14
      { "Block data",
3593
14
        "ipmi.tr14.data", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
3594
3595
14
    { &hf_ipmi_trn_15_chan,
3596
14
      { "Channel",
3597
14
        "ipmi.tr15.chan", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_channel), 0x0f, NULL, HFILL }},
3598
14
    { &hf_ipmi_trn_15_block,
3599
14
      { "Block number",
3600
14
        "ipmi.tr15.block", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3601
14
    { &hf_ipmi_trn_15_data,
3602
14
      { "Block data",
3603
14
        "ipmi.tr15.data", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
3604
3605
14
    { &hf_ipmi_trn_16_chan,
3606
14
      { "Channel",
3607
14
        "ipmi.tr16.chan", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_channel), 0x0f, NULL, HFILL }},
3608
14
    { &hf_ipmi_trn_16_src_port,
3609
14
      { "Source Port",
3610
14
        "ipmi.tr16.src_port", FT_UINT16, BASE_CUSTOM, CF_FUNC(ipmi_fmt_udpport), 0, NULL, HFILL }},
3611
14
    { &hf_ipmi_trn_16_dst_port,
3612
14
      { "Destination Port",
3613
14
        "ipmi.tr16.dst_port", FT_UINT16, BASE_CUSTOM, CF_FUNC(ipmi_fmt_udpport), 0, NULL, HFILL }},
3614
14
    { &hf_ipmi_trn_16_src_addr,
3615
14
      { "Source IP Address",
3616
14
        "ipmi.tr16.src_addr", FT_IPv4, BASE_NONE, NULL, 0, NULL, HFILL }},
3617
14
    { &hf_ipmi_trn_16_dst_addr,
3618
14
      { "Destination IP Address",
3619
14
        "ipmi.tr16.dst_addr", FT_IPv4, BASE_NONE, NULL, 0, NULL, HFILL }},
3620
14
    { &hf_ipmi_trn_16_bytes,
3621
14
      { "Bytes to send",
3622
14
        "ipmi.tr16.bytes", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
3623
3624
14
    { &hf_ipmi_trn_17_chan,
3625
14
      { "Channel",
3626
14
        "ipmi.tr17.chan", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_channel), 0x0f, NULL, HFILL }},
3627
14
    { &hf_ipmi_trn_17_clear,
3628
14
      { "Clear buffer",
3629
14
        "ipmi.tr17.clear", FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }},
3630
14
    { &hf_ipmi_trn_17_block_num,
3631
14
      { "Block number",
3632
14
        "ipmi.tr17.block_num", FT_UINT8, BASE_CUSTOM, CF_FUNC(tr17_fmt_blockno), 0x7f, NULL, HFILL }},
3633
14
    { &hf_ipmi_trn_17_size,
3634
14
      { "Number of received bytes",
3635
14
        "ipmi.tr17.size", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }},
3636
14
    { &hf_ipmi_trn_17_data,
3637
14
      { "Block Data",
3638
14
        "ipmi.tr17.data", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }},
3639
3640
14
    { &hf_ipmi_trn_18_state,
3641
14
      { "Session state",
3642
14
        "ipmi.tr18.state", FT_UINT8, BASE_HEX, VALS(vals_18_state), 0x0f, NULL, HFILL }},
3643
14
    { &hf_ipmi_trn_18_ipmi_ver,
3644
14
      { "IPMI Version",
3645
14
        "ipmi.tr18.ipmi_ver", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_version), 0, NULL, HFILL }},
3646
3647
14
    { &hf_ipmi_trn_19_chan,
3648
14
      { "Channel",
3649
14
        "ipmi.tr19.chan", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_channel), 0x0f, NULL, HFILL }},
3650
14
    { &hf_ipmi_trn_19_dest_sel,
3651
14
      { "Destination selector",
3652
14
        "ipmi.tr19.dest_sel", FT_UINT8, BASE_DEC, NULL, 0x0f, NULL, HFILL }},
3653
3654
14
    { &hf_ipmi_trn_XX_cap_cbcp,
3655
14
      { "CBCP callback",
3656
14
        "ipmi.trXX.cap_cbcp", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02, NULL, HFILL }},
3657
14
    { &hf_ipmi_trn_XX_cap_ipmi,
3658
14
      { "IPMI callback",
3659
14
        "ipmi.trXX.cap_ipmi", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01, NULL, HFILL }},
3660
14
    { &hf_ipmi_trn_XX_cbcp_from_list,
3661
14
      { "Callback to one from list of numbers",
3662
14
        "ipmi.trXX.cbcp_from_list", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x08, NULL, HFILL }},
3663
14
    { &hf_ipmi_trn_XX_cbcp_user,
3664
14
      { "Callback to user-specified number",
3665
14
        "ipmi.trXX.cbcp_user", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x04, NULL, HFILL }},
3666
14
    { &hf_ipmi_trn_XX_cbcp_prespec,
3667
14
      { "Callback to pre-specified number",
3668
14
        "ipmi.trXX.cbcp_prespec", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x02, NULL, HFILL }},
3669
14
    { &hf_ipmi_trn_XX_cbcp_nocb,
3670
14
      { "No callback",
3671
14
        "ipmi.trXX.cbcp_nocb", FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), 0x01, NULL, HFILL }},
3672
14
    { &hf_ipmi_trn_XX_dst1,
3673
14
      { "Callback destination 1",
3674
14
        "ipmi.trXX.dst1", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3675
14
    { &hf_ipmi_trn_XX_dst2,
3676
14
      { "Callback destination 2",
3677
14
        "ipmi.trXX.dst2", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3678
14
    { &hf_ipmi_trn_XX_dst3,
3679
14
      { "Callback destination 3",
3680
14
        "ipmi.trXX.dst3", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
3681
3682
14
    { &hf_ipmi_trn_1a_user,
3683
14
      { "User ID",
3684
14
        "ipmi.tr1a.user", FT_UINT8, BASE_DEC, NULL, 0x3f, NULL, HFILL }},
3685
14
    { &hf_ipmi_trn_1a_chan,
3686
14
      { "Channel",
3687
14
        "ipmi.tr1a.chan", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_channel), 0x0f, NULL, HFILL }},
3688
3689
14
    { &hf_ipmi_trn_1b_user,
3690
14
      { "User ID",
3691
14
        "ipmi.tr1b.user", FT_UINT8, BASE_DEC, NULL, 0x3f, NULL, HFILL }},
3692
14
    { &hf_ipmi_trn_1b_chan,
3693
14
      { "Channel",
3694
14
        "ipmi.tr1b.chan", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_channel), 0x0f, NULL, HFILL }},
3695
3696
14
  };
3697
14
  static int *ett[] = {
3698
14
    &ett_ipmi_trn_lan00_byte1,
3699
14
    &ett_ipmi_trn_lan01_byte1,
3700
14
    &ett_ipmi_trn_lan02_byte1,
3701
14
    &ett_ipmi_trn_lan02_byte2,
3702
14
    &ett_ipmi_trn_lan02_byte3,
3703
14
    &ett_ipmi_trn_lan02_byte4,
3704
14
    &ett_ipmi_trn_lan02_byte5,
3705
14
    &ett_ipmi_trn_lan04_byte1,
3706
14
    &ett_ipmi_trn_lan07_byte2,
3707
14
    &ett_ipmi_trn_lan07_byte3,
3708
14
    &ett_ipmi_trn_lan10_byte1,
3709
14
    &ett_ipmi_trn_lan17_byte1,
3710
14
    &ett_ipmi_trn_lan18_byte1,
3711
14
    &ett_ipmi_trn_lan18_byte2,
3712
14
    &ett_ipmi_trn_lan18_byte4,
3713
14
    &ett_ipmi_trn_lan19_byte1,
3714
14
    &ett_ipmi_trn_lan19_byte2,
3715
14
    &ett_ipmi_trn_lan19_byte3,
3716
14
    &ett_ipmi_trn_lan20_byte12,
3717
14
    &ett_ipmi_trn_lan21_byte1,
3718
14
    &ett_ipmi_trn_lan22_byte1,
3719
14
    &ett_ipmi_trn_lan24_byte1,
3720
14
    &ett_ipmi_trn_lan24_byte2,
3721
14
    &ett_ipmi_trn_lan24_byte3,
3722
14
    &ett_ipmi_trn_lan24_byte4,
3723
14
    &ett_ipmi_trn_lan24_byte5,
3724
14
    &ett_ipmi_trn_lan24_byte6,
3725
14
    &ett_ipmi_trn_lan24_byte7,
3726
14
    &ett_ipmi_trn_lan24_byte8,
3727
14
    &ett_ipmi_trn_lan25_byte1,
3728
14
    &ett_ipmi_trn_lan25_byte2,
3729
14
    &ett_ipmi_trn_lan25_byte34,
3730
14
    &ett_ipmi_trn_lan50_byte1,
3731
14
    &ett_ipmi_trn_lan55_byte3,
3732
14
    &ett_ipmi_trn_lan56_byte2,
3733
14
    &ett_ipmi_trn_lan64_byte1,
3734
14
    &ett_ipmi_trn_serial03_byte1,
3735
14
    &ett_ipmi_trn_serial04_byte1,
3736
14
    &ett_ipmi_trn_serial05_byte1,
3737
14
    &ett_ipmi_trn_serial05_byte2,
3738
14
    &ett_ipmi_trn_serial06_byte1,
3739
14
    &ett_ipmi_trn_serial07_byte1,
3740
14
    &ett_ipmi_trn_serial07_byte2,
3741
14
    &ett_ipmi_trn_serial08_byte1,
3742
14
    &ett_ipmi_trn_serial08_byte2,
3743
14
    &ett_ipmi_trn_serial09_byte1,
3744
14
    &ett_ipmi_trn_serial09_byte2,
3745
14
    &ett_ipmi_trn_serial16_byte1,
3746
14
    &ett_ipmi_trn_serial17_byte1,
3747
14
    &ett_ipmi_trn_serial17_byte2,
3748
14
    &ett_ipmi_trn_serial17_byte4,
3749
14
    &ett_ipmi_trn_serial17_byte5,
3750
14
    &ett_ipmi_trn_serial19_byte1,
3751
14
    &ett_ipmi_trn_serial19_byte2,
3752
14
    &ett_ipmi_trn_serial19_byte3,
3753
14
    &ett_ipmi_trn_serial20_byte1,
3754
14
    &ett_ipmi_trn_serial21_byte1,
3755
14
    &ett_ipmi_trn_serial22_byte1,
3756
14
    &ett_ipmi_trn_serial23_byte1,
3757
14
    &ett_ipmi_trn_serial24_byte1,
3758
14
    &ett_ipmi_trn_serial25_byte2,
3759
14
    &ett_ipmi_trn_serial28_byte1,
3760
14
    &ett_ipmi_trn_serial28_byte2,
3761
14
    &ett_ipmi_trn_serial28_byte10,
3762
14
    &ett_ipmi_trn_serial28_byte11,
3763
14
    &ett_ipmi_trn_serial28_byte12,
3764
14
    &ett_ipmi_trn_serial28_byte13,
3765
14
    &ett_ipmi_trn_serial28_byte14,
3766
14
    &ett_ipmi_trn_serial29_byte1,
3767
14
    &ett_ipmi_trn_serial29_byte2,
3768
14
    &ett_ipmi_trn_serial30_byte1,
3769
14
    &ett_ipmi_trn_serial30_byte2,
3770
14
    &ett_ipmi_trn_serial30_byte3,
3771
14
    &ett_ipmi_trn_serial33_byte1,
3772
14
    &ett_ipmi_trn_serial37_byte1,
3773
14
    &ett_ipmi_trn_serial43_byte1,
3774
14
    &ett_ipmi_trn_serial50_byte1,
3775
14
    &ett_ipmi_trn_serial51_byte2,
3776
14
    &ett_ipmi_trn_serial51_byte3,
3777
14
    &ett_ipmi_trn_01_byte1,
3778
14
    &ett_ipmi_trn_02_byte1,
3779
14
    &ett_ipmi_trn_02_rev,
3780
14
    &ett_ipmi_trn_03_rq_byte1,
3781
14
    &ett_ipmi_trn_03_rq_byte2,
3782
14
    &ett_ipmi_trn_03_rs_byte1,
3783
14
    &ett_ipmi_trn_04_byte1,
3784
14
    &ett_ipmi_trn_04_byte2,
3785
14
    &ett_ipmi_trn_10_byte1,
3786
14
    &ett_ipmi_trn_11_byte1,
3787
14
    &ett_ipmi_trn_11_rev,
3788
14
    &ett_ipmi_trn_12_rq_byte1,
3789
14
    &ett_ipmi_trn_12_rq_byte2,
3790
14
    &ett_ipmi_trn_12_rs_byte1,
3791
14
    &ett_ipmi_trn_13_byte1,
3792
14
    &ett_ipmi_trn_14_byte1,
3793
14
    &ett_ipmi_trn_15_byte1,
3794
14
    &ett_ipmi_trn_16_byte1,
3795
14
    &ett_ipmi_trn_17_byte1,
3796
14
    &ett_ipmi_trn_17_byte2,
3797
14
    &ett_ipmi_trn_18_byte1,
3798
14
    &ett_ipmi_trn_19_byte1,
3799
14
    &ett_ipmi_trn_19_byte2,
3800
14
    &ett_ipmi_trn_XX_usercap,
3801
14
    &ett_ipmi_trn_XX_cbcp,
3802
14
    &ett_ipmi_trn_1a_byte1,
3803
14
    &ett_ipmi_trn_1a_byte2,
3804
14
    &ett_ipmi_trn_1b_byte1,
3805
14
    &ett_ipmi_trn_1b_byte2,
3806
14
    &ett_ipmi_trn_parameter
3807
14
  };
3808
3809
14
  static ei_register_info ei[] = {
3810
14
    { &ei_ipmi_trn_02_request_param_rev, { "ipmi.tr02.request_param_rev", PI_PROTOCOL, PI_NOTE, "Requested parameter revision; parameter data returned", EXPFILL }},
3811
14
    { &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
14
    { &ei_ipmi_trn_11_request_param_rev, { "ipmi.tr11.request_param_rev", PI_PROTOCOL, PI_NOTE, "Requested parameter revision; parameter data returned", EXPFILL }},
3813
14
    { &ei_ipmi_trn_11_request_param_data, { "ipmi.tr11.mrequest_param_data", PI_PROTOCOL, PI_NOTE, "Requested parameter data; only parameter version returned", EXPFILL }},
3814
14
  };
3815
3816
14
  expert_module_t* expert_ipmi_trn;
3817
3818
14
  proto_register_field_array(proto_ipmi, hf, array_length(hf));
3819
14
  proto_register_subtree_array(ett, array_length(ett));
3820
14
  expert_ipmi_trn = expert_register_protocol(proto_ipmi);
3821
14
  expert_register_field_array(expert_ipmi_trn, ei, array_length(ei));
3822
14
  ipmi_register_netfn_cmdtab(IPMI_TRANSPORT_REQ, IPMI_OEM_NONE, NULL, 0, NULL,
3823
14
      cmd_transport, array_length(cmd_transport));
3824
14
}
3825
3826
/*
3827
 * Editor modelines  -  https://www.wireshark.org/tools/modelines.html
3828
 *
3829
 * Local variables:
3830
 * c-basic-offset: 8
3831
 * tab-width: 8
3832
 * indent-tabs-mode: t
3833
 * End:
3834
 *
3835
 * vi: set shiftwidth=8 tabstop=8 noexpandtab:
3836
 * :indentSize=8:tabSize=8:noTabs=false:
3837
 */