/src/wireshark/epan/dissectors/packet-ipmi-app.c
Line | Count | Source |
1 | | /* packet-ipmi-app.c |
2 | | * Sub-dissectors for IPMI messages (netFn=Application) |
3 | | * Copyright 2007-2008, Alexey Neyman, Pigeon Point Systems <avn@pigeonpoint.com> |
4 | | * |
5 | | * Wireshark - Network traffic analyzer |
6 | | * By Gerald Combs <gerald@wireshark.org> |
7 | | * Copyright 1998 Gerald Combs |
8 | | * |
9 | | * SPDX-License-Identifier: GPL-2.0-or-later |
10 | | */ |
11 | | |
12 | | #include "config.h" |
13 | | |
14 | | |
15 | | #include <epan/packet.h> |
16 | | #include <epan/tfs.h> |
17 | | #include <wsutil/array.h> |
18 | | |
19 | | #include "packet-ipmi.h" |
20 | | |
21 | | void proto_register_ipmi_app(void); |
22 | | |
23 | | static int ett_ipmi_app_01_byte2; |
24 | | static int ett_ipmi_app_01_byte3; |
25 | | static int ett_ipmi_app_01_byte6; |
26 | | |
27 | | static int ett_ipmi_app_04_byte2; |
28 | | |
29 | | static int ett_ipmi_app_06_syspwr; |
30 | | static int ett_ipmi_app_06_devpwr; |
31 | | |
32 | | static int ett_ipmi_app_07_syspwr; |
33 | | static int ett_ipmi_app_07_devpwr; |
34 | | |
35 | | static int ett_ipmi_app_24_timer_use; |
36 | | static int ett_ipmi_app_24_timer_action; |
37 | | static int ett_ipmi_app_24_expiration_flags; |
38 | | |
39 | | static int ett_ipmi_app_25_timer_use; |
40 | | static int ett_ipmi_app_25_timer_action; |
41 | | static int ett_ipmi_app_25_expiration_flags; |
42 | | |
43 | | static int ett_ipmi_app_2e_byte1; |
44 | | static int ett_ipmi_app_2f_byte1; |
45 | | static int ett_ipmi_app_30_byte1; |
46 | | static int ett_ipmi_app_31_byte1; |
47 | | static int ett_ipmi_app_32_rq_byte1; |
48 | | static int ett_ipmi_app_32_rq_byte2; |
49 | | static int ett_ipmi_app_32_rs_byte1; |
50 | | static int ett_ipmi_app_32_rs_byte2; |
51 | | static int ett_ipmi_app_33_rs_byte1; |
52 | | static int ett_ipmi_app_33_msg; |
53 | | static int ett_ipmi_app_34_byte1; |
54 | | static int ett_ipmi_app_34_msg; |
55 | | |
56 | | static int ett_ipmi_app_38_rq_byte1; |
57 | | static int ett_ipmi_app_38_rq_byte2; |
58 | | static int ett_ipmi_app_38_rs_byte1; |
59 | | static int ett_ipmi_app_38_rs_byte2; |
60 | | static int ett_ipmi_app_38_rs_byte3; |
61 | | static int ett_ipmi_app_38_rs_byte4; |
62 | | |
63 | | static int ett_ipmi_app_39_byte1; |
64 | | |
65 | | static int ett_ipmi_app_3a_rq_byte1; |
66 | | static int ett_ipmi_app_3a_rq_byte2; |
67 | | static int ett_ipmi_app_3a_rs_byte1; |
68 | | static int ett_ipmi_app_3a_rs_byte10; |
69 | | |
70 | | static int ett_ipmi_app_3b_rq_byte1; |
71 | | static int ett_ipmi_app_3b_rs_byte1; |
72 | | |
73 | | static int hf_ipmi_app_01_dev_id; |
74 | | static int hf_ipmi_app_01_dev_prov_sdr; |
75 | | static int hf_ipmi_app_01_dev_rev; |
76 | | static int hf_ipmi_app_01_dev_avail; |
77 | | static int hf_ipmi_app_01_fw_rev_maj; |
78 | | static int hf_ipmi_app_01_fw_rev_min; |
79 | | static int hf_ipmi_app_01_ipmi_version; |
80 | | static int hf_ipmi_app_01_ipmi_ads_chassis; |
81 | | static int hf_ipmi_app_01_ipmi_ads_bridge; |
82 | | static int hf_ipmi_app_01_ipmi_ads_ipmb_ev_gen; |
83 | | static int hf_ipmi_app_01_ipmi_ads_ipmb_ev_recv; |
84 | | static int hf_ipmi_app_01_ipmi_ads_fru; |
85 | | static int hf_ipmi_app_01_ipmi_ads_sel; |
86 | | static int hf_ipmi_app_01_ipmi_ads_sdr; |
87 | | static int hf_ipmi_app_01_ipmi_ads_sensor; |
88 | | static int hf_ipmi_app_01_manufacturer; |
89 | | static int hf_ipmi_app_01_product; |
90 | | static int hf_ipmi_app_01_fw_aux; |
91 | | |
92 | | static int hf_ipmi_app_04_result; |
93 | | static int hf_ipmi_app_04_fail; |
94 | | static int hf_ipmi_app_04_fail_sel; |
95 | | static int hf_ipmi_app_04_fail_sdr; |
96 | | static int hf_ipmi_app_04_fail_bmc_fru; |
97 | | static int hf_ipmi_app_04_fail_ipmb_sig; |
98 | | static int hf_ipmi_app_04_fail_sdr_empty; |
99 | | static int hf_ipmi_app_04_fail_iua; |
100 | | static int hf_ipmi_app_04_fail_bb_fw; |
101 | | static int hf_ipmi_app_04_fail_oper_fw; |
102 | | |
103 | | static int hf_ipmi_app_05_devspec; |
104 | | |
105 | | static int hf_ipmi_app_06_syspwr_set; |
106 | | static int hf_ipmi_app_06_syspwr_enum; |
107 | | static int hf_ipmi_app_06_devpwr_set; |
108 | | static int hf_ipmi_app_06_devpwr_enum; |
109 | | |
110 | | static int hf_ipmi_app_07_syspwr_enum; |
111 | | static int hf_ipmi_app_07_devpwr_enum; |
112 | | |
113 | | static int hf_ipmi_app_08_guid; |
114 | | |
115 | | static int hf_ipmi_app_24_timer_use_dont_log; |
116 | | static int hf_ipmi_app_24_timer_use_dont_stop; |
117 | | static int hf_ipmi_app_24_timer_use_timer_use; |
118 | | static int hf_ipmi_app_24_timer_action_interrupt; |
119 | | static int hf_ipmi_app_24_timer_action_timeout_action; |
120 | | static int hf_ipmi_app_24_pretimeout; |
121 | | static int hf_ipmi_app_24_expiration_flags_oem; |
122 | | static int hf_ipmi_app_24_expiration_flags_smsos; |
123 | | static int hf_ipmi_app_24_expiration_flags_osload; |
124 | | static int hf_ipmi_app_24_expiration_flags_biospost; |
125 | | static int hf_ipmi_app_24_expiration_flags_biosfrb2; |
126 | | static int hf_ipmi_app_24_initial_countdown; |
127 | | |
128 | | static int hf_ipmi_app_25_timer_use_dont_log; |
129 | | static int hf_ipmi_app_25_timer_use_started; |
130 | | static int hf_ipmi_app_25_timer_use_timer_use; |
131 | | static int hf_ipmi_app_25_timer_action_interrupt; |
132 | | static int hf_ipmi_app_25_timer_action_timeout_action; |
133 | | static int hf_ipmi_app_25_pretimeout; |
134 | | static int hf_ipmi_app_25_expiration_flags_oem; |
135 | | static int hf_ipmi_app_25_expiration_flags_smsos; |
136 | | static int hf_ipmi_app_25_expiration_flags_osload; |
137 | | static int hf_ipmi_app_25_expiration_flags_biospost; |
138 | | static int hf_ipmi_app_25_expiration_flags_biosfrb2; |
139 | | static int hf_ipmi_app_25_initial_countdown; |
140 | | static int hf_ipmi_app_25_present_countdown; |
141 | | |
142 | | static int hf_ipmi_app_2e_byte1_oem2; |
143 | | static int hf_ipmi_app_2e_byte1_oem1; |
144 | | static int hf_ipmi_app_2e_byte1_oem0; |
145 | | static int hf_ipmi_app_2e_byte1_sel; |
146 | | static int hf_ipmi_app_2e_byte1_emb; |
147 | | static int hf_ipmi_app_2e_byte1_emb_full_intr; |
148 | | static int hf_ipmi_app_2e_byte1_rmq_intr; |
149 | | |
150 | | static int hf_ipmi_app_2f_byte1_oem2; |
151 | | static int hf_ipmi_app_2f_byte1_oem1; |
152 | | static int hf_ipmi_app_2f_byte1_oem0; |
153 | | static int hf_ipmi_app_2f_byte1_sel; |
154 | | static int hf_ipmi_app_2f_byte1_emb; |
155 | | static int hf_ipmi_app_2f_byte1_emb_full_intr; |
156 | | static int hf_ipmi_app_2f_byte1_rmq_intr; |
157 | | |
158 | | static int hf_ipmi_app_30_byte1_oem2; |
159 | | static int hf_ipmi_app_30_byte1_oem1; |
160 | | static int hf_ipmi_app_30_byte1_oem0; |
161 | | static int hf_ipmi_app_30_byte1_wd_pretimeout; |
162 | | static int hf_ipmi_app_30_byte1_emb; |
163 | | static int hf_ipmi_app_30_byte1_rmq; |
164 | | |
165 | | static int hf_ipmi_app_31_byte1_oem2; |
166 | | static int hf_ipmi_app_31_byte1_oem1; |
167 | | static int hf_ipmi_app_31_byte1_oem0; |
168 | | static int hf_ipmi_app_31_byte1_wd_pretimeout; |
169 | | static int hf_ipmi_app_31_byte1_emb; |
170 | | static int hf_ipmi_app_31_byte1_rmq; |
171 | | |
172 | | static int hf_ipmi_app_32_rq_chno; |
173 | | static int hf_ipmi_app_32_rq_state; |
174 | | static int hf_ipmi_app_32_rs_chno; |
175 | | static int hf_ipmi_app_32_rs_state; |
176 | | |
177 | | static int hf_ipmi_app_33_rs_chan; |
178 | | static int hf_ipmi_app_33_rs_priv; |
179 | | static int hf_ipmi_app_33_msg; |
180 | | |
181 | | static int hf_ipmi_app_34_track; |
182 | | static int hf_ipmi_app_34_encrypt; |
183 | | static int hf_ipmi_app_34_auth; |
184 | | static int hf_ipmi_app_34_chan; |
185 | | static int hf_ipmi_app_34_msg; |
186 | | |
187 | | static int hf_ipmi_app_38_rq_ipmi20; |
188 | | static int hf_ipmi_app_38_rq_chan; |
189 | | static int hf_ipmi_app_38_rq_priv; |
190 | | static int hf_ipmi_app_38_rs_chan; |
191 | | static int hf_ipmi_app_38_rs_ipmi20; |
192 | | static int hf_ipmi_app_38_rs_auth_oem; |
193 | | static int hf_ipmi_app_38_rs_auth_straight; |
194 | | static int hf_ipmi_app_38_rs_auth_md5; |
195 | | static int hf_ipmi_app_38_rs_auth_md2; |
196 | | static int hf_ipmi_app_38_rs_auth_none; |
197 | | static int hf_ipmi_app_38_rs_kg; |
198 | | static int hf_ipmi_app_38_rs_permsg; |
199 | | static int hf_ipmi_app_38_rs_userauth; |
200 | | static int hf_ipmi_app_38_rs_user_nonnull; |
201 | | static int hf_ipmi_app_38_rs_user_null; |
202 | | static int hf_ipmi_app_38_rs_user_anon; |
203 | | static int hf_ipmi_app_38_rs_ipmi20_conn; |
204 | | static int hf_ipmi_app_38_rs_ipmi15_conn; |
205 | | static int hf_ipmi_app_38_rs_oem_iana; |
206 | | static int hf_ipmi_app_38_rs_oem_aux; |
207 | | |
208 | | static int hf_ipmi_app_39_authtype; |
209 | | static int hf_ipmi_app_39_user; |
210 | | static int hf_ipmi_app_39_temp_session; |
211 | | static int hf_ipmi_app_39_challenge; |
212 | | |
213 | | static int hf_ipmi_app_3a_authtype; |
214 | | static int hf_ipmi_app_3a_privlevel; |
215 | | static int hf_ipmi_app_3a_authcode; |
216 | | static int hf_ipmi_app_3a_outbound_seq; |
217 | | static int hf_ipmi_app_3a_authtype_session; |
218 | | static int hf_ipmi_app_3a_session_id; |
219 | | static int hf_ipmi_app_3a_inbound_seq; |
220 | | static int hf_ipmi_app_3a_maxpriv_session; |
221 | | |
222 | | static int hf_ipmi_app_3b_req_priv; |
223 | | static int hf_ipmi_app_3b_new_priv; |
224 | | |
225 | | static int hf_ipmi_app_3c_session_id; |
226 | | static int hf_ipmi_app_3c_session_handle; |
227 | | |
228 | | static const struct true_false_string tfs_01_dev_avail = { |
229 | | "Device firmware, SDR Repository update or self-initialization in progress", |
230 | | "Normal operation" |
231 | | }; |
232 | | |
233 | | static const value_string vals_04_result[] = { |
234 | | { 0x55, "No error. All Self Tests Passed" }, |
235 | | { 0x56, "Self Test function not implemented in this controller" }, |
236 | | { 0x57, "Corrupted or inaccessible data or devices" }, |
237 | | { 0x58, "Fatal hardware error" }, |
238 | | { 0xff, "Reserved" }, |
239 | | { 0, NULL } |
240 | | }; |
241 | | |
242 | | static const struct true_false_string tfs_04_fail_unknown = { |
243 | | "Test failed", |
244 | | "Unknown" |
245 | | }; |
246 | | |
247 | | static const struct true_false_string tfs_06_pwr = { |
248 | | "Set", |
249 | | "Do not change" |
250 | | }; |
251 | | |
252 | | static const value_string vals_06_syspwr[] = { |
253 | | { 0x00, "Set S0 / G0" }, |
254 | | { 0x01, "Set S1" }, |
255 | | { 0x02, "Set S2" }, |
256 | | { 0x03, "Set S3" }, |
257 | | { 0x04, "Set S4" }, |
258 | | { 0x05, "Set S5 / G2" }, |
259 | | { 0x06, "Set S4/S5" }, |
260 | | { 0x07, "Set G3" }, |
261 | | { 0x08, "Sleeping" }, |
262 | | { 0x09, "G1 sleeping" }, |
263 | | { 0x0a, "Set override" }, |
264 | | { 0x20, "Set Legacy On" }, |
265 | | { 0x21, "Set Legacy Off" }, |
266 | | { 0x2a, "Set unknown" }, |
267 | | { 0x7f, "No change" }, |
268 | | { 0, NULL } |
269 | | }; |
270 | | |
271 | | static const value_string vals_06_devpwr[] = { |
272 | | { 0x00, "Set D0" }, |
273 | | { 0x01, "Set D1" }, |
274 | | { 0x02, "Set D2" }, |
275 | | { 0x03, "Set D3" }, |
276 | | { 0x2a, "Set unknown" }, |
277 | | { 0x7f, "No change" }, |
278 | | { 0, NULL } |
279 | | }; |
280 | | |
281 | | static const value_string vals_07_syspwr[] = { |
282 | | { 0x00, "S0 / G0" }, |
283 | | { 0x01, "S1" }, |
284 | | { 0x02, "S2" }, |
285 | | { 0x03, "S3" }, |
286 | | { 0x04, "S4" }, |
287 | | { 0x05, "S5 / G2" }, |
288 | | { 0x06, "S4/S5" }, |
289 | | { 0x07, "G3" }, |
290 | | { 0x08, "Sleeping" }, |
291 | | { 0x09, "G1 sleeping" }, |
292 | | { 0x0a, "Override" }, |
293 | | { 0x20, "Legacy On" }, |
294 | | { 0x21, "Legacy Off" }, |
295 | | { 0x2a, "unknown" }, |
296 | | { 0, NULL } |
297 | | }; |
298 | | |
299 | | static const value_string vals_07_devpwr[] = { |
300 | | { 0x00, "D0" }, |
301 | | { 0x01, "D1" }, |
302 | | { 0x02, "D2" }, |
303 | | { 0x03, "D3" }, |
304 | | { 0x2a, "unknown" }, |
305 | | { 0, NULL } |
306 | | }; |
307 | | |
308 | | static const value_string vals_24_timer_use[] = { |
309 | | { 0x00, "reserved" }, |
310 | | { 0x01, "BIOS FRB2" }, |
311 | | { 0x02, "BIOS/POST" }, |
312 | | { 0x03, "OS Load" }, |
313 | | { 0x04, "SMS/OS" }, |
314 | | { 0x05, "OEM" }, |
315 | | { 0x06, "reserved" }, |
316 | | { 0x07, "reserved" }, |
317 | | |
318 | | { 0, NULL } |
319 | | }; |
320 | | |
321 | | static const value_string vals_24_timer_action_interrupt[] = { |
322 | | { 0x00, "none" }, |
323 | | { 0x01, "SMI" }, |
324 | | { 0x02, "NMI / Diagnostic interrupt" }, |
325 | | { 0x03, "Messaging interrupt" }, |
326 | | { 0x04, "reserved" }, |
327 | | { 0x05, "reserved" }, |
328 | | { 0x06, "reserved" }, |
329 | | { 0x07, "reserved" }, |
330 | | |
331 | | { 0, NULL } |
332 | | }; |
333 | | |
334 | | static const value_string vals_24_timer_action_timeout[] = { |
335 | | { 0x00, "no action" }, |
336 | | { 0x01, "Hard Reset" }, |
337 | | { 0x02, "Power Down" }, |
338 | | { 0x03, "Power Cycle" }, |
339 | | { 0x04, "reserved" }, |
340 | | { 0x05, "reserved" }, |
341 | | { 0x06, "reserved" }, |
342 | | { 0x07, "reserved" }, |
343 | | |
344 | | { 0, NULL } |
345 | | }; |
346 | | |
347 | | static const struct true_false_string tfs_24_exp_flags = { |
348 | | "clear timer use expiration bit", |
349 | | "leave alone" |
350 | | }; |
351 | | |
352 | | static const struct true_false_string tfs_2e_enable = { "Enable", "Disable" }; |
353 | | static const struct true_false_string tfs_2f_enabled = { "Enabled", "Disabled" }; |
354 | | |
355 | | static const struct true_false_string tfs_30_clear = { |
356 | | "clear", |
357 | | "leave alone" |
358 | | }; |
359 | | |
360 | | static const value_string vals_32_state[] = { |
361 | | { 0x00, "Disable channel" }, |
362 | | { 0x01, "Enable channel" }, |
363 | | { 0x02, "Get channel enable/disable state" }, |
364 | | { 0x03, "Reserved" }, |
365 | | |
366 | | { 0, NULL } |
367 | | }; |
368 | | |
369 | | static const struct true_false_string tfs_32_state = { |
370 | | "Channel enabled", |
371 | | "Channel disabled" |
372 | | }; |
373 | | |
374 | | static const value_string vals_34_track[] = { |
375 | | { 0x00, "No tracking" }, |
376 | | { 0x01, "Track Request" }, |
377 | | { 0x02, "Send Raw" }, |
378 | | { 0, NULL } |
379 | | }; |
380 | | |
381 | | static const value_string vals_38_ipmi20[] = { |
382 | | { 0x00, "Backward compatible with IPMI 1.5" }, |
383 | | { 0x01, "IPMI v2.0+ extended data" }, |
384 | | { 0, NULL } |
385 | | }; |
386 | | |
387 | | static const value_string vals_XX_priv[] = { |
388 | | { 0x00, "None / No change" }, |
389 | | { 0x01, "Callback" }, |
390 | | { 0x02, "User" }, |
391 | | { 0x03, "Operator" }, |
392 | | { 0x04, "Administrator" }, |
393 | | { 0x05, "OEM Proprietary" }, |
394 | | { 0, NULL } |
395 | | }; |
396 | | |
397 | | static const struct true_false_string tfs_38_supp = { "Supported", "Not supported" }; |
398 | | static const struct true_false_string tfs_38_kg = { "Set to non-zero", "Set to default (0)" }; |
399 | | |
400 | | static const value_string vals_XX_auth[] = { |
401 | | { 0x00, "None" }, |
402 | | { 0x01, "MD2" }, |
403 | | { 0x02, "MD5" }, |
404 | | { 0x04, "straight password" }, |
405 | | { 0x05, "OEM" }, |
406 | | { 0, NULL } |
407 | | }; |
408 | | |
409 | | |
410 | | /* Get Device ID. |
411 | | */ |
412 | | static void |
413 | | rs01(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) |
414 | 0 | { |
415 | 0 | static int * const byte2[] = { &hf_ipmi_app_01_dev_prov_sdr, &hf_ipmi_app_01_dev_rev, NULL }; |
416 | 0 | static int * const byte3[] = { &hf_ipmi_app_01_dev_avail, &hf_ipmi_app_01_fw_rev_maj, NULL }; |
417 | 0 | static int * const byte6[] = { &hf_ipmi_app_01_ipmi_ads_chassis, &hf_ipmi_app_01_ipmi_ads_bridge, |
418 | 0 | &hf_ipmi_app_01_ipmi_ads_ipmb_ev_gen, &hf_ipmi_app_01_ipmi_ads_ipmb_ev_recv, |
419 | 0 | &hf_ipmi_app_01_ipmi_ads_fru, &hf_ipmi_app_01_ipmi_ads_sel, &hf_ipmi_app_01_ipmi_ads_sdr, |
420 | 0 | &hf_ipmi_app_01_ipmi_ads_sensor, NULL }; |
421 | 0 | size_t len; |
422 | |
|
423 | 0 | len = tvb_captured_length(tvb); |
424 | |
|
425 | 0 | proto_tree_add_item(tree, hf_ipmi_app_01_dev_id, tvb, 0, 1, ENC_LITTLE_ENDIAN); |
426 | 0 | proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL, ett_ipmi_app_01_byte2, byte2, ENC_LITTLE_ENDIAN, 0); |
427 | 0 | proto_tree_add_bitmask_text(tree, tvb, 2, 1, NULL, NULL, ett_ipmi_app_01_byte3, byte3, ENC_LITTLE_ENDIAN, 0); |
428 | 0 | proto_tree_add_item(tree, hf_ipmi_app_01_fw_rev_min, tvb, 3, 1, ENC_LITTLE_ENDIAN); |
429 | |
|
430 | 0 | proto_tree_add_item(tree, hf_ipmi_app_01_ipmi_version, tvb, 4, 1, ENC_LITTLE_ENDIAN); |
431 | |
|
432 | 0 | proto_tree_add_bitmask_text(tree, tvb, 5, 1, "Additional device support: ", "None", |
433 | 0 | ett_ipmi_app_01_byte6, byte6, ENC_LITTLE_ENDIAN, 0); |
434 | 0 | proto_tree_add_item(tree, hf_ipmi_app_01_manufacturer, tvb, 6, 3, ENC_LITTLE_ENDIAN); |
435 | 0 | proto_tree_add_item(tree, hf_ipmi_app_01_product, tvb, 9, 2, ENC_LITTLE_ENDIAN); |
436 | 0 | if (len > 11) { |
437 | | /* IPMI states that Aux Revision should be displayed in MSB order */ |
438 | 0 | proto_tree_add_item(tree, hf_ipmi_app_01_fw_aux, tvb, 11, 4, ENC_NA); |
439 | 0 | } |
440 | 0 | } |
441 | | |
442 | | /* Get Self Test Results. |
443 | | */ |
444 | | static void |
445 | | rs04(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) |
446 | 0 | { |
447 | 0 | static int * const byte2[] = { &hf_ipmi_app_04_fail_sel, &hf_ipmi_app_04_fail_sdr, |
448 | 0 | &hf_ipmi_app_04_fail_bmc_fru, &hf_ipmi_app_04_fail_ipmb_sig, &hf_ipmi_app_04_fail_sdr_empty, |
449 | 0 | &hf_ipmi_app_04_fail_iua, &hf_ipmi_app_04_fail_bb_fw, &hf_ipmi_app_04_fail_oper_fw, NULL }; |
450 | 0 | int res, fail; |
451 | |
|
452 | 0 | res = tvb_get_uint8(tvb, 0); |
453 | 0 | fail = tvb_get_uint8(tvb, 1); |
454 | |
|
455 | 0 | proto_tree_add_uint_format_value(tree, hf_ipmi_app_04_result, tvb, 0, 1, |
456 | 0 | res, "%s (0x%02x)", |
457 | 0 | val_to_str_const(res, vals_04_result, "Device-specific internal failure"), |
458 | 0 | res); |
459 | |
|
460 | 0 | if (res == 0x55 || res == 0x56 || res == 0xff) { |
461 | 0 | proto_tree_add_uint_format_value(tree, hf_ipmi_app_04_fail, tvb, 1, 1, |
462 | 0 | fail, "0x%02x (must be 0x00)", |
463 | 0 | fail); |
464 | 0 | return; |
465 | 0 | } |
466 | | |
467 | 0 | if (res != 0x57) { |
468 | 0 | proto_tree_add_uint_format_value(tree, hf_ipmi_app_04_fail, tvb, 1, 1, |
469 | 0 | fail, "0x%02x (device-specific)", |
470 | 0 | fail); |
471 | 0 | return; |
472 | 0 | } |
473 | | |
474 | 0 | proto_tree_add_bitmask(tree, tvb, 1, hf_ipmi_app_04_fail, ett_ipmi_app_04_byte2, byte2, ENC_LITTLE_ENDIAN); |
475 | 0 | } |
476 | | |
477 | | /* Manufacturing Test On. |
478 | | */ |
479 | | static void |
480 | | rq05(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) |
481 | 0 | { |
482 | 0 | proto_tree_add_item(tree, hf_ipmi_app_05_devspec, tvb, 0, -1, ENC_NA); |
483 | 0 | } |
484 | | |
485 | | /* Set ACPI Power State. |
486 | | */ |
487 | | static void |
488 | | rq06(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) |
489 | 0 | { |
490 | 0 | static int * const byte1[] = { &hf_ipmi_app_06_syspwr_set, &hf_ipmi_app_06_syspwr_enum, NULL }; |
491 | 0 | static int * const byte2[] = { &hf_ipmi_app_06_devpwr_set, &hf_ipmi_app_06_devpwr_enum, NULL }; |
492 | |
|
493 | 0 | proto_tree_add_bitmask_text(tree, tvb, 0, 1, "ACPI System Power State: ", NULL, |
494 | 0 | ett_ipmi_app_06_syspwr, byte1, ENC_LITTLE_ENDIAN, 0); |
495 | 0 | proto_tree_add_bitmask_text(tree, tvb, 1, 1, "ACPI Device Power State: ", NULL, |
496 | 0 | ett_ipmi_app_06_devpwr, byte2, ENC_LITTLE_ENDIAN, 0); |
497 | 0 | } |
498 | | |
499 | | /* Get ACPI Power State. |
500 | | */ |
501 | | static void |
502 | | rs07(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) |
503 | 0 | { |
504 | 0 | static int * const byte1[] = { &hf_ipmi_app_07_syspwr_enum, NULL }; |
505 | 0 | static int * const byte2[] = { &hf_ipmi_app_07_devpwr_enum, NULL }; |
506 | |
|
507 | 0 | proto_tree_add_bitmask_text(tree, tvb, 0, 1, "ACPI System Power State: ", NULL, |
508 | 0 | ett_ipmi_app_07_syspwr, byte1, ENC_LITTLE_ENDIAN, 0); |
509 | 0 | proto_tree_add_bitmask_text(tree, tvb, 1, 1, "ACPI Device Power State: ", NULL, |
510 | 0 | ett_ipmi_app_07_devpwr, byte2, ENC_LITTLE_ENDIAN, 0); |
511 | 0 | } |
512 | | |
513 | | /* Get Device GUID. |
514 | | */ |
515 | | static void |
516 | | rs08(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) |
517 | 0 | { |
518 | 0 | ipmi_add_guid(tree, hf_ipmi_app_08_guid, tvb, 0); |
519 | 0 | } |
520 | | |
521 | | /* Reset Watchdog Timer. |
522 | | */ |
523 | | static const value_string cc22[] = { |
524 | | { 0x80, "Attempt to start un-initialized watchdog" }, |
525 | | { 0, NULL } |
526 | | }; |
527 | | |
528 | | /* Set Watchdog Timer. |
529 | | */ |
530 | | static void |
531 | | rq24(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) |
532 | 0 | { |
533 | 0 | static int * const byte1[] = { &hf_ipmi_app_24_timer_use_dont_log, |
534 | 0 | &hf_ipmi_app_24_timer_use_dont_stop, &hf_ipmi_app_24_timer_use_timer_use, NULL }; |
535 | 0 | static int * const byte2[] = { &hf_ipmi_app_24_timer_action_interrupt, |
536 | 0 | &hf_ipmi_app_24_timer_action_timeout_action, NULL }; |
537 | 0 | static int * const byte4[] = { &hf_ipmi_app_24_expiration_flags_oem, |
538 | 0 | &hf_ipmi_app_24_expiration_flags_smsos, &hf_ipmi_app_24_expiration_flags_osload, |
539 | 0 | &hf_ipmi_app_24_expiration_flags_biospost, &hf_ipmi_app_24_expiration_flags_biosfrb2, NULL }; |
540 | |
|
541 | 0 | proto_tree_add_bitmask_text(tree, tvb, 0, 1, "Timer Use: ", NULL, ett_ipmi_app_24_timer_use, |
542 | 0 | byte1, ENC_LITTLE_ENDIAN, 0); |
543 | 0 | proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL, ett_ipmi_app_24_timer_action, |
544 | 0 | byte2, ENC_LITTLE_ENDIAN, 0); |
545 | 0 | proto_tree_add_item(tree, hf_ipmi_app_24_pretimeout, tvb, 2, 1, ENC_LITTLE_ENDIAN); |
546 | 0 | proto_tree_add_bitmask_text(tree, tvb, 3, 1, "Timer Use Expiration flags clear: ", "None", |
547 | 0 | ett_ipmi_app_24_expiration_flags, byte4, ENC_LITTLE_ENDIAN, BMT_NO_TFS); |
548 | 0 | proto_tree_add_item(tree, hf_ipmi_app_24_initial_countdown, tvb, 4, 2, ENC_LITTLE_ENDIAN); |
549 | 0 | } |
550 | | |
551 | | /* Get Watchdog Timer. |
552 | | */ |
553 | | static void |
554 | | rs25(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) |
555 | 0 | { |
556 | 0 | static int * const byte1[] = { &hf_ipmi_app_25_timer_use_dont_log, |
557 | 0 | &hf_ipmi_app_25_timer_use_started, &hf_ipmi_app_25_timer_use_timer_use, NULL }; |
558 | 0 | static int * const byte2[] = { &hf_ipmi_app_25_timer_action_interrupt, |
559 | 0 | &hf_ipmi_app_25_timer_action_timeout_action, NULL }; |
560 | 0 | static int * const byte4[] = { &hf_ipmi_app_25_expiration_flags_oem, &hf_ipmi_app_25_expiration_flags_smsos, |
561 | 0 | &hf_ipmi_app_25_expiration_flags_osload, &hf_ipmi_app_25_expiration_flags_biospost, |
562 | 0 | &hf_ipmi_app_25_expiration_flags_biosfrb2, NULL }; |
563 | |
|
564 | 0 | proto_tree_add_bitmask_text(tree, tvb, 0, 1, "Timer Use: ", NULL, ett_ipmi_app_25_timer_use, |
565 | 0 | byte1, ENC_LITTLE_ENDIAN, 0); |
566 | 0 | proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL, ett_ipmi_app_25_timer_action, |
567 | 0 | byte2, ENC_LITTLE_ENDIAN, 0); |
568 | 0 | proto_tree_add_item(tree, hf_ipmi_app_25_pretimeout, tvb, 2, 1, ENC_LITTLE_ENDIAN); |
569 | 0 | proto_tree_add_bitmask_text(tree, tvb, 3, 1, "Timer Use Expiration flags: ", "None", |
570 | 0 | ett_ipmi_app_25_expiration_flags, byte4, ENC_LITTLE_ENDIAN, BMT_NO_TFS); |
571 | 0 | proto_tree_add_item(tree, hf_ipmi_app_25_initial_countdown, tvb, 4, 2, ENC_LITTLE_ENDIAN); |
572 | 0 | proto_tree_add_item(tree, hf_ipmi_app_25_present_countdown, tvb, 6, 2, ENC_LITTLE_ENDIAN); |
573 | 0 | } |
574 | | |
575 | | /* Set BMC Global Enables. |
576 | | */ |
577 | | static void |
578 | | rq2e(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) |
579 | 0 | { |
580 | 0 | static int * const byte1[] = { &hf_ipmi_app_2e_byte1_oem2, &hf_ipmi_app_2e_byte1_oem1, |
581 | 0 | &hf_ipmi_app_2e_byte1_oem0, &hf_ipmi_app_2e_byte1_sel, &hf_ipmi_app_2e_byte1_emb, |
582 | 0 | &hf_ipmi_app_2e_byte1_emb_full_intr, &hf_ipmi_app_2e_byte1_rmq_intr, NULL }; |
583 | |
|
584 | 0 | proto_tree_add_bitmask_text(tree, tvb, 0, 1, "Enables: ", "None", ett_ipmi_app_2e_byte1, |
585 | 0 | byte1, ENC_LITTLE_ENDIAN, BMT_NO_TFS); |
586 | 0 | } |
587 | | |
588 | | /* Get BMC Global Enables. |
589 | | */ |
590 | | static void |
591 | | rs2f(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) |
592 | 0 | { |
593 | 0 | static int * const byte1[] = { &hf_ipmi_app_2f_byte1_oem2, &hf_ipmi_app_2f_byte1_oem1, |
594 | 0 | &hf_ipmi_app_2f_byte1_oem0, &hf_ipmi_app_2f_byte1_sel, &hf_ipmi_app_2f_byte1_emb, |
595 | 0 | &hf_ipmi_app_2f_byte1_emb_full_intr, &hf_ipmi_app_2f_byte1_rmq_intr, NULL }; |
596 | |
|
597 | 0 | proto_tree_add_bitmask_text(tree, tvb, 0, 1, "Enables: ", "None", ett_ipmi_app_2f_byte1, |
598 | 0 | byte1, ENC_LITTLE_ENDIAN, BMT_NO_TFS); |
599 | 0 | } |
600 | | |
601 | | /* Clear Message Flags. |
602 | | */ |
603 | | static void |
604 | | rq30(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) |
605 | 0 | { |
606 | 0 | static int * const byte1[] = { &hf_ipmi_app_30_byte1_oem2, &hf_ipmi_app_30_byte1_oem1, |
607 | 0 | &hf_ipmi_app_30_byte1_oem0, &hf_ipmi_app_30_byte1_wd_pretimeout, |
608 | 0 | &hf_ipmi_app_30_byte1_emb, &hf_ipmi_app_30_byte1_rmq, NULL }; |
609 | |
|
610 | 0 | proto_tree_add_bitmask_text(tree, tvb, 0, 1, "Clear Message Flags: ", "None", |
611 | 0 | ett_ipmi_app_30_byte1, byte1, ENC_LITTLE_ENDIAN, BMT_NO_TFS); |
612 | 0 | } |
613 | | |
614 | | /* Get Message Flags. |
615 | | */ |
616 | | static void |
617 | | rs31(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) |
618 | 0 | { |
619 | 0 | static int * const byte1[] = { &hf_ipmi_app_31_byte1_oem2, &hf_ipmi_app_31_byte1_oem1, |
620 | 0 | &hf_ipmi_app_31_byte1_oem0, &hf_ipmi_app_31_byte1_wd_pretimeout, |
621 | 0 | &hf_ipmi_app_31_byte1_emb, &hf_ipmi_app_31_byte1_rmq, NULL }; |
622 | |
|
623 | 0 | proto_tree_add_bitmask_text(tree, tvb, 0, 1, "Flags: ", "None", |
624 | 0 | ett_ipmi_app_31_byte1, byte1, ENC_LITTLE_ENDIAN, BMT_NO_TFS); |
625 | 0 | } |
626 | | |
627 | | /* Enable Message Channel Receive. |
628 | | */ |
629 | | static void |
630 | | rq32(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) |
631 | 0 | { |
632 | 0 | static int * const byte1[] = { &hf_ipmi_app_32_rq_chno, NULL }; |
633 | 0 | static int * const byte2[] = { &hf_ipmi_app_32_rq_state, NULL }; |
634 | |
|
635 | 0 | proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL, ett_ipmi_app_32_rq_byte1, |
636 | 0 | byte1, ENC_LITTLE_ENDIAN, 0); |
637 | 0 | proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL, ett_ipmi_app_32_rq_byte2, |
638 | 0 | byte2, ENC_LITTLE_ENDIAN, 0); |
639 | 0 | } |
640 | | |
641 | | static void |
642 | | rs32(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) |
643 | 0 | { |
644 | 0 | static int * const byte1[] = { &hf_ipmi_app_32_rs_chno, NULL }; |
645 | 0 | static int * const byte2[] = { &hf_ipmi_app_32_rs_state, NULL }; |
646 | |
|
647 | 0 | proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL, ett_ipmi_app_32_rs_byte1, |
648 | 0 | byte1, ENC_LITTLE_ENDIAN, 0); |
649 | 0 | proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL, ett_ipmi_app_32_rs_byte2, |
650 | 0 | byte2, ENC_LITTLE_ENDIAN, 0); |
651 | 0 | } |
652 | | |
653 | | /* Get Message |
654 | | */ |
655 | | static const value_string cc33[] = { |
656 | | { 0x80, "Data not available (queue/buffer empty)" }, |
657 | | { 0, NULL } |
658 | | }; |
659 | | |
660 | | static void |
661 | | rs33(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) |
662 | 0 | { |
663 | 0 | static int * const byte1[] = { &hf_ipmi_app_33_rs_chan, |
664 | 0 | &hf_ipmi_app_33_rs_priv, NULL }; |
665 | 0 | tvbuff_t *next; |
666 | 0 | ipmi_dissect_arg_t arg; |
667 | |
|
668 | 0 | proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL, ett_ipmi_app_33_rs_byte1, |
669 | 0 | byte1, ENC_LITTLE_ENDIAN, 0); |
670 | |
|
671 | 0 | next = tvb_new_subset_remaining(tvb, 1); |
672 | |
|
673 | 0 | arg.context = IPMI_E_GETMSG; |
674 | 0 | arg.channel = tvb_get_uint8(tvb, 0) & 0xF; |
675 | 0 | arg.flags = 0; |
676 | |
|
677 | 0 | do_dissect_ipmb(next, pinfo, tree, |
678 | 0 | hf_ipmi_app_33_msg, ett_ipmi_app_33_msg, &arg); |
679 | |
|
680 | 0 | } |
681 | | |
682 | | |
683 | | /* Send Message |
684 | | */ |
685 | | static void |
686 | | rq34(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) |
687 | 0 | { |
688 | 0 | static int * const byte1[] = { &hf_ipmi_app_34_track, &hf_ipmi_app_34_encrypt, |
689 | 0 | &hf_ipmi_app_34_auth, &hf_ipmi_app_34_chan, NULL }; |
690 | 0 | tvbuff_t *next; |
691 | 0 | ipmi_dissect_arg_t arg; |
692 | |
|
693 | 0 | proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL, |
694 | 0 | ett_ipmi_app_34_byte1, byte1, ENC_LITTLE_ENDIAN, 0); |
695 | |
|
696 | 0 | next = tvb_new_subset_remaining(tvb, 1); |
697 | |
|
698 | 0 | arg.context = IPMI_E_SENDMSG_RQ; |
699 | 0 | arg.channel = tvb_get_uint8(tvb, 0) & 0xF; |
700 | 0 | arg.flags = 0; |
701 | |
|
702 | 0 | do_dissect_ipmb(next, pinfo, tree, |
703 | 0 | hf_ipmi_app_34_msg, ett_ipmi_app_34_msg, &arg); |
704 | 0 | } |
705 | | |
706 | | static void |
707 | | rs34(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) |
708 | 0 | { |
709 | 0 | if (tvb_captured_length(tvb)) { |
710 | 0 | ipmi_dissect_arg_t arg; |
711 | |
|
712 | 0 | arg.context = IPMI_E_SENDMSG_RS; |
713 | 0 | arg.channel = 0; |
714 | 0 | arg.flags = 0; |
715 | |
|
716 | 0 | do_dissect_ipmb(tvb, pinfo, tree, |
717 | 0 | hf_ipmi_app_34_msg, ett_ipmi_app_34_msg, &arg); |
718 | 0 | } |
719 | 0 | } |
720 | | |
721 | | static const value_string cc34[] = { |
722 | | { 0x80, "Invalid Session Handle" }, |
723 | | { 0x81, "Lost Arbitration" }, |
724 | | { 0x82, "Bus Error" }, |
725 | | { 0x83, "NAK on Write" }, |
726 | | { 0, NULL } |
727 | | }; |
728 | | |
729 | | /* Read Event Message Buffer |
730 | | */ |
731 | | static const value_string cc35[] = { |
732 | | { 0x80, "Data not available (queue/buffer empty)" }, |
733 | | { 0, NULL } |
734 | | }; |
735 | | |
736 | | /* Get Channel Authentication Capabilities |
737 | | */ |
738 | | static void |
739 | | rq38(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) |
740 | 0 | { |
741 | 0 | static int * const byte1[] = { &hf_ipmi_app_38_rq_ipmi20, &hf_ipmi_app_38_rq_chan, NULL }; |
742 | 0 | static int * const byte2[] = { &hf_ipmi_app_38_rq_priv, NULL }; |
743 | |
|
744 | 0 | proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL, ett_ipmi_app_38_rq_byte1, byte1, ENC_LITTLE_ENDIAN, 0); |
745 | 0 | proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL, ett_ipmi_app_38_rq_byte2, byte2, ENC_LITTLE_ENDIAN, 0); |
746 | 0 | } |
747 | | |
748 | | static void |
749 | | rs38(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) |
750 | 0 | { |
751 | 0 | static int * const byte1[] = { &hf_ipmi_app_38_rs_chan, NULL }; |
752 | 0 | static int * const byte2[] = { &hf_ipmi_app_38_rs_ipmi20, &hf_ipmi_app_38_rs_auth_oem, |
753 | 0 | &hf_ipmi_app_38_rs_auth_straight, &hf_ipmi_app_38_rs_auth_md5, &hf_ipmi_app_38_rs_auth_md2, |
754 | 0 | &hf_ipmi_app_38_rs_auth_none, NULL }; |
755 | 0 | static int * const byte3[] = { &hf_ipmi_app_38_rs_kg, &hf_ipmi_app_38_rs_permsg, &hf_ipmi_app_38_rs_userauth, |
756 | 0 | &hf_ipmi_app_38_rs_user_nonnull, &hf_ipmi_app_38_rs_user_null, &hf_ipmi_app_38_rs_user_anon, NULL }; |
757 | 0 | static int * const byte4[] = { &hf_ipmi_app_38_rs_ipmi20_conn, &hf_ipmi_app_38_rs_ipmi15_conn, NULL }; |
758 | |
|
759 | 0 | proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL, ett_ipmi_app_38_rs_byte1, byte1, ENC_LITTLE_ENDIAN, 0); |
760 | 0 | proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL, ett_ipmi_app_38_rs_byte2, byte2, ENC_LITTLE_ENDIAN, BMT_NO_FALSE); |
761 | 0 | proto_tree_add_bitmask_text(tree, tvb, 2, 1, NULL, NULL, ett_ipmi_app_38_rs_byte3, byte3, ENC_LITTLE_ENDIAN, BMT_NO_FALSE); |
762 | 0 | proto_tree_add_bitmask_text(tree, tvb, 3, 1, "Supported connections: ", "None", |
763 | 0 | ett_ipmi_app_38_rs_byte4, byte4, ENC_LITTLE_ENDIAN, 0); |
764 | 0 | proto_tree_add_item(tree, hf_ipmi_app_38_rs_oem_iana, tvb, 4, 3, ENC_LITTLE_ENDIAN); |
765 | 0 | proto_tree_add_item(tree, hf_ipmi_app_38_rs_oem_aux, tvb, 7, 1, ENC_LITTLE_ENDIAN); |
766 | 0 | } |
767 | | |
768 | | /* Get Session Challenge |
769 | | */ |
770 | | static void |
771 | | rq39(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) |
772 | 0 | { |
773 | 0 | static int * const byte1[] = { &hf_ipmi_app_39_authtype, NULL }; |
774 | |
|
775 | 0 | proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL, |
776 | 0 | ett_ipmi_app_39_byte1, byte1, ENC_LITTLE_ENDIAN, 0); |
777 | 0 | proto_tree_add_item(tree, hf_ipmi_app_39_user, tvb, 1, 16, ENC_ASCII); |
778 | 0 | } |
779 | | |
780 | | static void |
781 | | rs39(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) |
782 | 0 | { |
783 | 0 | proto_tree_add_item(tree, hf_ipmi_app_39_temp_session, tvb, 0, 4, ENC_LITTLE_ENDIAN); |
784 | 0 | proto_tree_add_item(tree, hf_ipmi_app_39_challenge, tvb, 4, 16, ENC_NA); |
785 | 0 | } |
786 | | |
787 | | static const value_string cc39[] = { |
788 | | { 0x81, "Invalid user name" }, |
789 | | { 0x82, "Null user name (User 1) not enabled" }, |
790 | | { 0, NULL } |
791 | | }; |
792 | | |
793 | | /* Activate Session |
794 | | */ |
795 | | static void |
796 | | rq3a(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) |
797 | 0 | { |
798 | 0 | static int * const byte1[] = { &hf_ipmi_app_3a_authtype, NULL }; |
799 | 0 | static int * const byte2[] = { &hf_ipmi_app_3a_privlevel, NULL }; |
800 | |
|
801 | 0 | proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL, |
802 | 0 | ett_ipmi_app_3a_rq_byte1, byte1, ENC_LITTLE_ENDIAN, 0); |
803 | 0 | proto_tree_add_bitmask_text(tree, tvb, 1, 1, NULL, NULL, |
804 | 0 | ett_ipmi_app_3a_rq_byte2, byte2, ENC_LITTLE_ENDIAN, 0); |
805 | 0 | proto_tree_add_item(tree, hf_ipmi_app_3a_authcode, tvb, 2, 16, ENC_NA); |
806 | 0 | proto_tree_add_item(tree, hf_ipmi_app_3a_outbound_seq, tvb, 18, 4, ENC_LITTLE_ENDIAN); |
807 | 0 | } |
808 | | |
809 | | static void |
810 | | rs3a(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) |
811 | 0 | { |
812 | 0 | static int * const byte1[] = { &hf_ipmi_app_3a_authtype_session, NULL }; |
813 | 0 | static int * const byte10[] = { &hf_ipmi_app_3a_maxpriv_session, NULL }; |
814 | |
|
815 | 0 | proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL, |
816 | 0 | ett_ipmi_app_3a_rs_byte1, byte1, ENC_LITTLE_ENDIAN, 0); |
817 | 0 | proto_tree_add_item(tree, hf_ipmi_app_3a_session_id, tvb, 1, 4, ENC_LITTLE_ENDIAN); |
818 | 0 | proto_tree_add_item(tree, hf_ipmi_app_3a_inbound_seq, tvb, 5, 4, ENC_LITTLE_ENDIAN); |
819 | 0 | proto_tree_add_bitmask_text(tree, tvb, 9, 1, NULL, NULL, |
820 | 0 | ett_ipmi_app_3a_rs_byte10, byte10, ENC_LITTLE_ENDIAN, 0); |
821 | 0 | } |
822 | | |
823 | | static const value_string cc3a[] = { |
824 | | { 0x81, "No session slot available" }, |
825 | | { 0x82, "No slot available for given user" }, |
826 | | { 0x83, "No slot available to support user due to maximum privilege capability" }, |
827 | | { 0x84, "Session sequence number out-of-range" }, |
828 | | { 0x85, "Invalid session ID in request" }, |
829 | | { 0x86, "Requested maximum privilege level exceeds user and/or channel privilege limit" }, |
830 | | { 0, NULL } |
831 | | }; |
832 | | |
833 | | /* Set Session Privilege Level |
834 | | */ |
835 | | static void |
836 | | rq3b(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) |
837 | 0 | { |
838 | 0 | static int * const byte1[] = { &hf_ipmi_app_3b_req_priv, NULL }; |
839 | |
|
840 | 0 | proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL, |
841 | 0 | ett_ipmi_app_3b_rq_byte1, byte1, ENC_LITTLE_ENDIAN, 0); |
842 | 0 | } |
843 | | |
844 | | static void |
845 | | rs3b(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) |
846 | 0 | { |
847 | 0 | static int * const byte1[] = { &hf_ipmi_app_3b_new_priv, NULL }; |
848 | |
|
849 | 0 | proto_tree_add_bitmask_text(tree, tvb, 0, 1, NULL, NULL, |
850 | 0 | ett_ipmi_app_3b_rs_byte1, byte1, ENC_LITTLE_ENDIAN, 0); |
851 | 0 | } |
852 | | |
853 | | static const value_string cc3b[] = { |
854 | | { 0x80, "Requested level not available for this user" }, |
855 | | { 0x81, "Requested level exceeds Channel and/or User Privilege Limit" }, |
856 | | { 0x82, "Cannot disable User Level authentication" }, |
857 | | { 0, NULL } |
858 | | }; |
859 | | |
860 | | /* Close Session |
861 | | */ |
862 | | static void |
863 | | rq3c(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) |
864 | 0 | { |
865 | 0 | proto_tree_add_item(tree, hf_ipmi_app_3c_session_id, tvb, 0, 4, ENC_LITTLE_ENDIAN); |
866 | 0 | if (tvb_captured_length(tvb) > 4) { |
867 | 0 | proto_tree_add_item(tree, hf_ipmi_app_3c_session_handle, tvb, 4, 1, ENC_LITTLE_ENDIAN); |
868 | 0 | } |
869 | 0 | } |
870 | | |
871 | | static const value_string cc3c[] = { |
872 | | { 0x87, "Invalid Session ID in request" }, |
873 | | { 0x88, "Invalid Session Handle in request" }, |
874 | | { 0, NULL } |
875 | | }; |
876 | | |
877 | | static const value_string cc40[] = { |
878 | | { 0x82, "Set not supported on selected channel" }, |
879 | | { 0x83, "Access mode not supported" }, |
880 | | { 0, NULL } |
881 | | }; |
882 | | |
883 | | static const value_string cc41[] = { |
884 | | { 0x82, "Command not supported for selected channel" }, |
885 | | { 0, NULL } |
886 | | }; |
887 | | |
888 | | static const value_string cc47[] = { |
889 | | { 0x80, "Password test failed: password data does not match stored value" }, |
890 | | { 0x81, "Password test failed: wrong password size was used" }, |
891 | | { 0, NULL } |
892 | | }; |
893 | | |
894 | | static const value_string cc48[] = { |
895 | | { 0x80, "Payload already active on another session" }, |
896 | | { 0x81, "Payload type is disabled" }, |
897 | | { 0x82, "Payload activation limit reached" }, |
898 | | { 0x83, "Cannot activate payload with encryption" }, |
899 | | { 0x84, "Cannot activate payload without encryption" }, |
900 | | { 0, NULL } |
901 | | }; |
902 | | |
903 | | static const value_string cc49[] = { |
904 | | { 0x80, "Payload already deactivated" }, |
905 | | { 0x81, "Payload type is disabled" }, |
906 | | { 0, NULL } |
907 | | }; |
908 | | |
909 | | static const value_string cc4f[] = { |
910 | | { 0x80, "Payload type not available on given channel" }, |
911 | | { 0, NULL } |
912 | | }; |
913 | | |
914 | | static const value_string cc50[] = { |
915 | | { 0x80, "OEM Payload IANA and/or Payload ID not supported" }, |
916 | | { 0, NULL } |
917 | | }; |
918 | | |
919 | | static const value_string cc52[] = { |
920 | | { 0x81, "Lost Arbitration" }, |
921 | | { 0x82, "Bus Error" }, |
922 | | { 0x83, "NAK on Write" }, |
923 | | { 0x84, "Truncated Read" }, |
924 | | { 0, NULL } |
925 | | }; |
926 | | |
927 | | static const value_string cc55[] = { |
928 | | { 0x80, "Operation not supported for given payload type" }, |
929 | | { 0x81, "Operation not allowed under present configuration" }, |
930 | | { 0x82, "Encryption not available for session that payload type is active under" }, |
931 | | { 0x83, "Payload instance is not presently active" }, |
932 | | { 0, NULL } |
933 | | }; |
934 | | |
935 | | static const value_string cc56[] = { |
936 | | { 0x80, "Cannot perform set/confirm, key is locked" }, |
937 | | { 0x81, "Insufficient key bytes" }, |
938 | | { 0x82, "Too many key bytes" }, |
939 | | { 0x83, "Key value does not meet criteria for specified type" }, |
940 | | { 0x84, "KR is not used" }, |
941 | | { 0, NULL } |
942 | | }; |
943 | | |
944 | | static const value_string cc58[] = { |
945 | | { 0x80, "Parameter not supported" }, |
946 | | { 0x81, "Attempt to set the set-in-progress when not in set-complete state" }, |
947 | | { 0x82, "Attempt to write read-only parameter" }, |
948 | | { 0, NULL } |
949 | | }; |
950 | | |
951 | | static const value_string cc59[] = { |
952 | | { 0x80, "Parameter not supported" }, |
953 | | { 0, NULL } |
954 | | }; |
955 | | |
956 | | static const value_string cc60[] = { |
957 | | { 0x80, "Attempt to enable unsupported/unconfigurable command" }, |
958 | | { 0, NULL } |
959 | | }; |
960 | | |
961 | | static const value_string cc62[] = { |
962 | | { 0x80, "Attempt to enable unsupported/unconfigurable sub-function" }, |
963 | | { 0, NULL } |
964 | | }; |
965 | | |
966 | | static const ipmi_cmd_t cmd_app[] = { |
967 | | /* IPM Device Global Commands */ |
968 | | { 0x01, NULL, rs01, NULL, NULL, "Get Device ID", 0 }, |
969 | | { 0x02, NULL, NULL, NULL, NULL, "Cold Reset", 0 }, |
970 | | { 0x03, NULL, NULL, NULL, NULL, "Warm Reset", 0 }, |
971 | | { 0x04, NULL, rs04, NULL, NULL, "Get Self Test Results", 0 }, |
972 | | { 0x05, rq05, NULL, NULL, NULL, "Manufacturing Test On", 0 }, |
973 | | { 0x06, rq06, NULL, NULL, NULL, "Set ACPI Power State", 0 }, |
974 | | { 0x07, NULL, rs07, NULL, NULL, "Get ACPI Power State", 0 }, |
975 | | { 0x08, NULL, rs08, NULL, NULL, "Get Device GUID", 0 }, |
976 | | { 0x09, IPMI_TBD, NULL, NULL, "Get NetFn Support", 0 }, |
977 | | { 0x0a, IPMI_TBD, NULL, NULL, "Get Command Support", 0 }, |
978 | | { 0x0b, IPMI_TBD, NULL, NULL, "Get Command Sub-function Support", 0 }, |
979 | | { 0x0c, IPMI_TBD, NULL, NULL, "Get Configurable Commands", 0 }, |
980 | | { 0x0d, IPMI_TBD, NULL, NULL, "Get Configurable Command Sub-functions", 0 }, |
981 | | |
982 | | /* BMC Watchdog Timer Commands */ |
983 | | { 0x22, NULL, NULL, cc22, NULL, "Reset Watchdog Timer", 0 }, |
984 | | { 0x24, rq24, NULL, NULL, NULL, "Set Watchdog Timer", 0 }, |
985 | | { 0x25, NULL, rs25, NULL, NULL, "Get Watchdog Timer", 0 }, |
986 | | |
987 | | /* BMC Device and Messaging Commands */ |
988 | | { 0x2e, rq2e, NULL, NULL, NULL, "Set BMC Global Enables", 0 }, |
989 | | { 0x2f, NULL, rs2f, NULL, NULL, "Get BMC Global Enables", 0 }, |
990 | | { 0x30, rq30, NULL, NULL, NULL, "Clear Message Flags", 0 }, |
991 | | { 0x31, NULL, rs31, NULL, NULL, "Get Message Flags", 0 }, |
992 | | { 0x32, rq32, rs32, NULL, NULL, "Enable Message Channel Receive", 0 }, |
993 | | { 0x33, NULL, rs33, cc33, NULL, "Get Message", CMD_CALLRQ }, |
994 | | { 0x34, rq34, rs34, cc34, NULL, "Send Message", CMD_CALLRQ }, |
995 | | { 0x35, IPMI_TBD, cc35, NULL, "Read Event Message Buffer", 0 }, |
996 | | { 0x36, IPMI_TBD, NULL, NULL, "Get BT Interface Capabilities", 0 }, |
997 | | { 0x37, IPMI_TBD, NULL, NULL, "Get System GUID", 0 }, |
998 | | { 0x38, rq38, rs38, NULL, NULL, "Get Channel Authentication Capabilities", 0 }, |
999 | | { 0x39, rq39, rs39, cc39, NULL, "Get Session Challenge", 0 }, |
1000 | | { 0x3a, rq3a, rs3a, cc3a, NULL, "Activate Session", 0 }, |
1001 | | { 0x3b, rq3b, rs3b, cc3b, NULL, "Set Session Privilege Level", 0 }, |
1002 | | { 0x3c, rq3c, NULL, cc3c, NULL, "Close Session", 0 }, |
1003 | | { 0x3d, IPMI_TBD, NULL, NULL, "Get Session Info", 0 }, |
1004 | | { 0x3f, IPMI_TBD, NULL, NULL, "Get AuthCode", 0 }, |
1005 | | { 0x40, IPMI_TBD, cc40, NULL, "Set Channel Access", 0 }, |
1006 | | { 0x41, IPMI_TBD, cc41, NULL, "Get Channel Access", 0 }, |
1007 | | { 0x42, IPMI_TBD, NULL, NULL, "Get Channel Info", 0 }, |
1008 | | { 0x43, IPMI_TBD, NULL, NULL, "Set User Access", 0 }, |
1009 | | { 0x44, IPMI_TBD, NULL, NULL, "Get User Access", 0 }, |
1010 | | { 0x45, IPMI_TBD, NULL, NULL, "Set User Name", 0 }, |
1011 | | { 0x46, IPMI_TBD, NULL, NULL, "Get User Name", 0 }, |
1012 | | { 0x47, IPMI_TBD, cc47, NULL, "Set User Password", 0 }, |
1013 | | { 0x48, IPMI_TBD, cc48, NULL, "Activate Payload", 0 }, |
1014 | | { 0x49, IPMI_TBD, cc49, NULL, "Deactivate Payload", 0 }, |
1015 | | { 0x4a, IPMI_TBD, NULL, NULL, "Get Payload Activation Status", 0 }, |
1016 | | { 0x4b, IPMI_TBD, NULL, NULL, "Get Payload Instance Info", 0 }, |
1017 | | { 0x4c, IPMI_TBD, NULL, NULL, "Set User Payload Access", 0 }, |
1018 | | { 0x4d, IPMI_TBD, NULL, NULL, "Get User Payload Access", 0 }, |
1019 | | { 0x4e, IPMI_TBD, NULL, NULL, "Get Channel Payload Support", 0 }, |
1020 | | { 0x4f, IPMI_TBD, cc4f, NULL, "Get Channel Payload Version", 0 }, |
1021 | | { 0x50, IPMI_TBD, cc50, NULL, "Get Channel OEM Payload Info", 0 }, |
1022 | | { 0x52, IPMI_TBD, cc52, NULL, "Master Write-Read", 0 }, |
1023 | | { 0x54, IPMI_TBD, NULL, NULL, "Get Channel Cipher Suites", 0 }, |
1024 | | { 0x55, IPMI_TBD, cc55, NULL, "Suspend/Resume Payload Encryption", 0 }, |
1025 | | { 0x56, IPMI_TBD, cc56, NULL, "Set Channel Security Keys", 0 }, |
1026 | | { 0x57, IPMI_TBD, NULL, NULL, "Get System Interface Capabilities", 0 }, |
1027 | | { 0x58, IPMI_TBD, cc58, NULL, "Set System Info Parameters", 0 }, |
1028 | | { 0x59, IPMI_TBD, cc59, NULL, "Get System Info Parameters", 0 }, |
1029 | | |
1030 | | /* Device "Global" commands, continued */ |
1031 | | { 0x60, IPMI_TBD, cc60, NULL, "Set Command Enables", 0 }, |
1032 | | { 0x61, IPMI_TBD, NULL, NULL, "Get Command Enables", 0 }, |
1033 | | { 0x62, IPMI_TBD, cc62, NULL, "Set Command Sub-function Enables", 0 }, |
1034 | | { 0x63, IPMI_TBD, NULL, NULL, "Get Command Sub-function Enables", 0 }, |
1035 | | { 0x64, IPMI_TBD, NULL, NULL, "Get OEM NetFn IANA Support", 0 }, |
1036 | | }; |
1037 | | |
1038 | | void |
1039 | | proto_register_ipmi_app(void) |
1040 | 15 | { |
1041 | 15 | static hf_register_info hf[] = { |
1042 | 15 | { &hf_ipmi_app_01_dev_id, |
1043 | 15 | { "Device ID", |
1044 | 15 | "ipmi.app00.dev.id", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, |
1045 | 15 | { &hf_ipmi_app_01_dev_prov_sdr, |
1046 | 15 | { "Device provides Device SDRs", |
1047 | 15 | "ipmi.app00.dev.provides_dev_sdr", FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }}, |
1048 | 15 | { &hf_ipmi_app_01_dev_rev, |
1049 | 15 | { "Device Revision (binary encoded)", |
1050 | 15 | "ipmi.app00.dev.rev", FT_UINT8, BASE_HEX, NULL, 0x0f, NULL, HFILL }}, |
1051 | 15 | { &hf_ipmi_app_01_dev_avail, |
1052 | 15 | { "Device availability", |
1053 | 15 | "ipmi.app01.dev.avail", FT_BOOLEAN, 8, TFS(&tfs_01_dev_avail), 0x80, NULL, HFILL }}, |
1054 | 15 | { &hf_ipmi_app_01_fw_rev_maj, |
1055 | 15 | { "Major Firmware Revision (binary encoded)", |
1056 | 15 | "ipmi.app01.fw.major", FT_UINT8, BASE_HEX, NULL, 0x7f, NULL, HFILL }}, |
1057 | 15 | { &hf_ipmi_app_01_fw_rev_min, |
1058 | 15 | { "Minor Firmware Revision (BCD encoded)", |
1059 | 15 | "ipmi.app01.fw.minor", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, |
1060 | 15 | { &hf_ipmi_app_01_ipmi_version, |
1061 | 15 | { "IPMI version", |
1062 | 15 | "ipmi.app01.ipmi.version", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_version), 0, NULL, HFILL }}, |
1063 | 15 | { &hf_ipmi_app_01_ipmi_ads_chassis, |
1064 | 15 | { "Chassis", |
1065 | 15 | "ipmi.app01.ads.chassis", FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }}, |
1066 | 15 | { &hf_ipmi_app_01_ipmi_ads_bridge, |
1067 | 15 | { "Bridge", |
1068 | 15 | "ipmi.app01.ads.bridge", FT_BOOLEAN, 8, NULL, 0x40, NULL, HFILL }}, |
1069 | 15 | { &hf_ipmi_app_01_ipmi_ads_ipmb_ev_gen, |
1070 | 15 | { "Event Generator", |
1071 | 15 | "ipmi.app01.ads.ipmb_ev_gen", FT_BOOLEAN, 8, NULL, 0x20, NULL, HFILL }}, |
1072 | 15 | { &hf_ipmi_app_01_ipmi_ads_ipmb_ev_recv, |
1073 | 15 | { "Event Receiver", |
1074 | 15 | "ipmi.app01.ads.ipmb_ev_recv", FT_BOOLEAN, 8, NULL, 0x10, NULL, HFILL }}, |
1075 | 15 | { &hf_ipmi_app_01_ipmi_ads_fru, |
1076 | 15 | { "FRU Inventory", |
1077 | 15 | "ipmi.app01.ads.fru", FT_BOOLEAN, 8, NULL, 0x08, NULL, HFILL }}, |
1078 | 15 | { &hf_ipmi_app_01_ipmi_ads_sel, |
1079 | 15 | { "SEL", |
1080 | 15 | "ipmi.app01.ads.sel", FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL }}, |
1081 | 15 | { &hf_ipmi_app_01_ipmi_ads_sdr, |
1082 | 15 | { "SDR Repository", |
1083 | 15 | "ipmi.app01.ads.sdr", FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL }}, |
1084 | 15 | { &hf_ipmi_app_01_ipmi_ads_sensor, |
1085 | 15 | { "Sensor", |
1086 | 15 | "ipmi.app01.ads.sensor", FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }}, |
1087 | 15 | { &hf_ipmi_app_01_manufacturer, |
1088 | 15 | { "Manufacturer ID", |
1089 | 15 | "ipmi.app01.manufacturer", FT_UINT24, BASE_DEC, NULL, 0, NULL, HFILL }}, |
1090 | 15 | { &hf_ipmi_app_01_product, |
1091 | 15 | { "Product ID", |
1092 | 15 | "ipmi.app01.product", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL }}, |
1093 | 15 | { &hf_ipmi_app_01_fw_aux, |
1094 | 15 | { "Auxiliary Firmware Revision Information", |
1095 | 15 | "ipmi.app01.fw.aux", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
1096 | | |
1097 | 15 | { &hf_ipmi_app_04_result, |
1098 | 15 | { "Self test result", |
1099 | 15 | "ipmi.app04.self_test_result", FT_UINT8, BASE_HEX, VALS(vals_04_result), 0, NULL, HFILL }}, |
1100 | 15 | { &hf_ipmi_app_04_fail, |
1101 | 15 | { "Self-test error bitfield", |
1102 | 15 | "ipmi.app04.fail", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, |
1103 | 15 | { &hf_ipmi_app_04_fail_sel, |
1104 | 15 | { "Cannot access SEL device", |
1105 | 15 | "ipmi.app04.fail.sel", FT_BOOLEAN, 8, TFS(&tfs_04_fail_unknown), 0x80, NULL, HFILL }}, |
1106 | 15 | { &hf_ipmi_app_04_fail_sdr, |
1107 | 15 | { "Cannot access SDR Repository", |
1108 | 15 | "ipmi.app04.fail.sdr", FT_BOOLEAN, 8, TFS(&tfs_04_fail_unknown), 0x40, NULL, HFILL }}, |
1109 | 15 | { &hf_ipmi_app_04_fail_bmc_fru, |
1110 | 15 | { "Cannot access BMC FRU device", |
1111 | 15 | "ipmi.app04.fail.bmc_fru", FT_BOOLEAN, 8, TFS(&tfs_04_fail_unknown), 0x20, NULL, HFILL }}, |
1112 | 15 | { &hf_ipmi_app_04_fail_ipmb_sig, |
1113 | 15 | { "IPMB signal lines do not respond", |
1114 | 15 | "ipmi.app04.fail.ipmb_sig", FT_BOOLEAN, 8, TFS(&tfs_04_fail_unknown), 0x10, NULL, HFILL }}, |
1115 | 15 | { &hf_ipmi_app_04_fail_sdr_empty, |
1116 | 15 | { "SDR Repository is empty", |
1117 | 15 | "ipmi.app04.fail.sdr_empty", FT_BOOLEAN, 8, TFS(&tfs_04_fail_unknown), 0x08, NULL, HFILL }}, |
1118 | 15 | { &hf_ipmi_app_04_fail_iua, |
1119 | 15 | { "Internal Use Area of BMC FRU corrupted", |
1120 | 15 | "ipmi.app04.fail.iua", FT_BOOLEAN, 8, TFS(&tfs_04_fail_unknown), 0x04, NULL, HFILL }}, |
1121 | 15 | { &hf_ipmi_app_04_fail_bb_fw, |
1122 | 15 | { "Controller update boot block firmware corrupted", |
1123 | 15 | "ipmi.app04.fail.bb_fw", FT_BOOLEAN, 8, TFS(&tfs_04_fail_unknown), 0x02, NULL, HFILL }}, |
1124 | 15 | { &hf_ipmi_app_04_fail_oper_fw, |
1125 | 15 | { "Controller operational firmware corrupted", |
1126 | 15 | "ipmi.app04.fail.oper_fw", FT_BOOLEAN, 8, TFS(&tfs_04_fail_unknown), 0x01, NULL, HFILL }}, |
1127 | | |
1128 | 15 | { &hf_ipmi_app_05_devspec, |
1129 | 15 | { "Device-specific parameters", |
1130 | 15 | "ipmi.app05.devspec", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
1131 | | |
1132 | 15 | { &hf_ipmi_app_06_syspwr_set, |
1133 | 15 | { "System Power State", |
1134 | 15 | "ipmi.app06.syspwr.set", FT_BOOLEAN, 8, TFS(&tfs_06_pwr), 0x80, NULL, HFILL }}, |
1135 | 15 | { &hf_ipmi_app_06_syspwr_enum, |
1136 | 15 | { "System Power State enumeration", |
1137 | 15 | "ipmi.app06.syspwr.enum", FT_UINT8, BASE_HEX, VALS(vals_06_syspwr), 0x7f, NULL, HFILL }}, |
1138 | 15 | { &hf_ipmi_app_06_devpwr_set, |
1139 | 15 | { "Device Power State", |
1140 | 15 | "ipmi.app06.devpwr.set", FT_BOOLEAN, 8, TFS(&tfs_06_pwr), 0x80, NULL, HFILL }}, |
1141 | 15 | { &hf_ipmi_app_06_devpwr_enum, |
1142 | 15 | { "Device Power State enumeration", |
1143 | 15 | "ipmi.app06.devpwr.enum", FT_UINT8, BASE_HEX, VALS(vals_06_devpwr), 0x7f, NULL, HFILL }}, |
1144 | | |
1145 | 15 | { &hf_ipmi_app_07_syspwr_enum, |
1146 | 15 | { "ACPI System Power State", |
1147 | 15 | "ipmi.app07.syspwr", FT_UINT8, BASE_HEX, VALS(vals_07_syspwr), 0x7f, NULL, HFILL }}, |
1148 | 15 | { &hf_ipmi_app_07_devpwr_enum, |
1149 | 15 | { "ACPI Device Power State", |
1150 | 15 | "ipmi.app07.devpwr", FT_UINT8, BASE_HEX, VALS(vals_07_devpwr), 0x7f, NULL, HFILL }}, |
1151 | | |
1152 | 15 | { &hf_ipmi_app_08_guid, |
1153 | 15 | { "GUID", |
1154 | 15 | "ipmi.app08.guid", FT_GUID, BASE_NONE, NULL, 0, NULL, HFILL }}, |
1155 | | |
1156 | 15 | { &hf_ipmi_app_24_timer_use_dont_log, |
1157 | 15 | { "Don't log", |
1158 | 15 | "ipmi.app24.timer_use.dont_log", FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }}, |
1159 | 15 | { &hf_ipmi_app_24_timer_use_dont_stop, |
1160 | 15 | { "Don't stop timer on Set Watchdog command", |
1161 | 15 | "ipmi.app24.timer_use.dont_stop", FT_BOOLEAN, 8, NULL, 0x40, NULL, HFILL }}, |
1162 | 15 | { &hf_ipmi_app_24_timer_use_timer_use, |
1163 | 15 | { "Timer use", |
1164 | 15 | "ipmi.app24.timer_use.timer_use", FT_UINT8, BASE_HEX, VALS(vals_24_timer_use), 0x07, NULL, HFILL }}, |
1165 | 15 | { &hf_ipmi_app_24_timer_action_interrupt, |
1166 | 15 | { "Pre-timeout interrupt", |
1167 | 15 | "ipmi.app24.timer_action.interrupt", FT_UINT8, BASE_HEX, VALS(vals_24_timer_action_interrupt), 0x70, NULL, HFILL }}, |
1168 | 15 | { &hf_ipmi_app_24_timer_action_timeout_action, |
1169 | 15 | { "Timeout action", |
1170 | 15 | "ipmi.app24.timer_action.timeout", FT_UINT8, BASE_HEX, VALS(vals_24_timer_action_timeout), 0x07, NULL, HFILL }}, |
1171 | 15 | { &hf_ipmi_app_24_pretimeout, |
1172 | 15 | { "Pre-timeout interval", |
1173 | 15 | "ipmi.app24.pretimeout", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_1s_1based), 0, NULL, HFILL }}, |
1174 | 15 | { &hf_ipmi_app_24_expiration_flags_oem, |
1175 | 15 | { "OEM", |
1176 | 15 | "ipmi.app24.exp_flags.oem", FT_BOOLEAN, 8, TFS(&tfs_24_exp_flags), 0x20, NULL, HFILL }}, |
1177 | 15 | { &hf_ipmi_app_24_expiration_flags_smsos, |
1178 | 15 | { "SMS/OS", |
1179 | 15 | "ipmi.app24.exp_flags.sms_os", FT_BOOLEAN, 8, TFS(&tfs_24_exp_flags), 0x10, NULL, HFILL }}, |
1180 | 15 | { &hf_ipmi_app_24_expiration_flags_osload, |
1181 | 15 | { "OS Load", |
1182 | 15 | "ipmi.app24.exp_flags.osload", FT_BOOLEAN, 8, TFS(&tfs_24_exp_flags), 0x08, NULL, HFILL }}, |
1183 | 15 | { &hf_ipmi_app_24_expiration_flags_biospost, |
1184 | 15 | { "BIOS/POST", |
1185 | 15 | "ipmi.app24.exp_flags.biospost", FT_BOOLEAN, 8, TFS(&tfs_24_exp_flags), 0x04, NULL, HFILL }}, |
1186 | 15 | { &hf_ipmi_app_24_expiration_flags_biosfrb2, |
1187 | 15 | { "BIOS FRB2", |
1188 | 15 | "ipmi.app24.exp_flags.biosfrb2", FT_BOOLEAN, 8, TFS(&tfs_24_exp_flags), 0x02, NULL, HFILL }}, |
1189 | 15 | { &hf_ipmi_app_24_initial_countdown, |
1190 | 15 | { "Initial countdown value (100ms/count)", |
1191 | 15 | "ipmi.app24.initial_countdown", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, |
1192 | | |
1193 | 15 | { &hf_ipmi_app_25_timer_use_dont_log, |
1194 | 15 | { "Don't log", |
1195 | 15 | "ipmi.app25.timer_use.dont_log", FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }}, |
1196 | 15 | { &hf_ipmi_app_25_timer_use_started, |
1197 | 15 | { "Started", |
1198 | 15 | "ipmi.app25.timer_use.started", FT_BOOLEAN, 8, NULL, 0x40, NULL, HFILL }}, |
1199 | 15 | { &hf_ipmi_app_25_timer_use_timer_use, |
1200 | 15 | { "Timer user", |
1201 | 15 | "ipmi.app25.timer_use.timer_use", FT_UINT8, BASE_HEX, VALS(vals_24_timer_use), 0x07, NULL, HFILL }}, |
1202 | 15 | { &hf_ipmi_app_25_timer_action_interrupt, |
1203 | 15 | { "Pre-timeout interrupt", |
1204 | 15 | "ipmi.app25.timer_action.interrupt", FT_UINT8, BASE_HEX, VALS(vals_24_timer_action_interrupt), 0x70, NULL, HFILL }}, |
1205 | 15 | { &hf_ipmi_app_25_timer_action_timeout_action, |
1206 | 15 | { "Timeout action", |
1207 | 15 | "ipmi.app25.timer_action.timeout", FT_UINT8, BASE_HEX, VALS(vals_24_timer_action_timeout), 0x07, NULL, HFILL }}, |
1208 | 15 | { &hf_ipmi_app_25_pretimeout, |
1209 | 15 | { "Pre-timeout interval", |
1210 | 15 | "ipmi.app25.pretimeout", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_1s_1based), 0, NULL, HFILL }}, |
1211 | 15 | { &hf_ipmi_app_25_expiration_flags_oem, |
1212 | 15 | { "OEM", |
1213 | 15 | "ipmi.app25.exp_flags.oem", FT_BOOLEAN, 8, TFS(&tfs_24_exp_flags), 0x20, NULL, HFILL }}, |
1214 | 15 | { &hf_ipmi_app_25_expiration_flags_smsos, |
1215 | 15 | { "SMS/OS", |
1216 | 15 | "ipmi.app25.exp_flags.sms_os", FT_BOOLEAN, 8, TFS(&tfs_24_exp_flags), 0x10, NULL, HFILL }}, |
1217 | 15 | { &hf_ipmi_app_25_expiration_flags_osload, |
1218 | 15 | { "OS Load", |
1219 | 15 | "ipmi.app25.exp_flags.osload", FT_BOOLEAN, 8, TFS(&tfs_24_exp_flags), 0x08, NULL, HFILL }}, |
1220 | 15 | { &hf_ipmi_app_25_expiration_flags_biospost, |
1221 | 15 | { "BIOS/POST", |
1222 | 15 | "ipmi.app25.exp_flags.biospost", FT_BOOLEAN, 8, TFS(&tfs_24_exp_flags), 0x04, NULL, HFILL }}, |
1223 | 15 | { &hf_ipmi_app_25_expiration_flags_biosfrb2, |
1224 | 15 | { "BIOS FRB2", |
1225 | 15 | "ipmi.app25.exp_flags.biosfrb2", FT_BOOLEAN, 8, TFS(&tfs_24_exp_flags), 0x02, NULL, HFILL }}, |
1226 | 15 | { &hf_ipmi_app_25_initial_countdown, |
1227 | 15 | { "Initial countdown value (100ms/count)", |
1228 | 15 | "ipmi.app25.initial_countdown", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, |
1229 | 15 | { &hf_ipmi_app_25_present_countdown, |
1230 | 15 | { "Present countdown value (100ms/count)", |
1231 | 15 | "ipmi.app25.present_countdown", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, |
1232 | | |
1233 | 15 | { &hf_ipmi_app_2e_byte1_oem2, |
1234 | 15 | { "OEM 2", |
1235 | 15 | "ipmi.app2e.bmc_global_enables.oem2", FT_BOOLEAN, 8, TFS(&tfs_2e_enable), 0x80, NULL, HFILL }}, |
1236 | 15 | { &hf_ipmi_app_2e_byte1_oem1, |
1237 | 15 | { "OEM 1", |
1238 | 15 | "ipmi.app2e.bmc_global_enables.oem1", FT_BOOLEAN, 8, TFS(&tfs_2e_enable), 0x40, NULL, HFILL }}, |
1239 | 15 | { &hf_ipmi_app_2e_byte1_oem0, |
1240 | 15 | { "OEM 0", |
1241 | 15 | "ipmi.app2e.bmc_global_enables.oem0", FT_BOOLEAN, 8, TFS(&tfs_2e_enable), 0x20, NULL, HFILL }}, |
1242 | 15 | { &hf_ipmi_app_2e_byte1_sel, |
1243 | 15 | { "System Event Logging", |
1244 | 15 | "ipmi.app2e.bmc_global_enables.sel", FT_BOOLEAN, 8, TFS(&tfs_2e_enable), 0x08, NULL, HFILL }}, |
1245 | 15 | { &hf_ipmi_app_2e_byte1_emb, |
1246 | 15 | { "Event Message Buffer", |
1247 | 15 | "ipmi.app2e.bmc_global_enables.emb", FT_BOOLEAN, 8, TFS(&tfs_2e_enable), 0x04, NULL, HFILL }}, |
1248 | 15 | { &hf_ipmi_app_2e_byte1_emb_full_intr, |
1249 | 15 | { "Event Message Buffer Full Interrupt", |
1250 | 15 | "ipmi.app2e.bmc_global_enables.emb_full_intr", FT_BOOLEAN, 8, TFS(&tfs_2e_enable), 0x02, NULL, HFILL }}, |
1251 | 15 | { &hf_ipmi_app_2e_byte1_rmq_intr, |
1252 | 15 | { "Receive Message Queue Interrupt", |
1253 | 15 | "ipmi.app2e.bmc_global_enables.rmq_intr", FT_BOOLEAN, 8, TFS(&tfs_2e_enable), 0x01, NULL, HFILL }}, |
1254 | | |
1255 | 15 | { &hf_ipmi_app_2f_byte1_oem2, |
1256 | 15 | { "OEM 2", |
1257 | 15 | "ipmi.app2f.bmc_global_enables.oem2", FT_BOOLEAN, 8, TFS(&tfs_2f_enabled), 0x80, NULL, HFILL }}, |
1258 | 15 | { &hf_ipmi_app_2f_byte1_oem1, |
1259 | 15 | { "OEM 1", |
1260 | 15 | "ipmi.app2f.bmc_global_enables.oem1", FT_BOOLEAN, 8, TFS(&tfs_2f_enabled), 0x40, NULL, HFILL }}, |
1261 | 15 | { &hf_ipmi_app_2f_byte1_oem0, |
1262 | 15 | { "OEM 0", |
1263 | 15 | "ipmi.app2f.bmc_global_enables.oem0", FT_BOOLEAN, 8, TFS(&tfs_2f_enabled), 0x20, NULL, HFILL }}, |
1264 | 15 | { &hf_ipmi_app_2f_byte1_sel, |
1265 | 15 | { "System Event Logging", |
1266 | 15 | "ipmi.app2f.bmc_global_enables.sel", FT_BOOLEAN, 8, TFS(&tfs_2f_enabled), 0x08, NULL, HFILL }}, |
1267 | 15 | { &hf_ipmi_app_2f_byte1_emb, |
1268 | 15 | { "Event Message Buffer", |
1269 | 15 | "ipmi.app2f.bmc_global_enables.emb", FT_BOOLEAN, 8, TFS(&tfs_2f_enabled), 0x04, NULL, HFILL }}, |
1270 | 15 | { &hf_ipmi_app_2f_byte1_emb_full_intr, |
1271 | 15 | { "Event Message Buffer Full Interrupt", |
1272 | 15 | "ipmi.app2f.bmc_global_enables.emb_full_intr", FT_BOOLEAN, 8, TFS(&tfs_2f_enabled), 0x02, NULL, HFILL }}, |
1273 | 15 | { &hf_ipmi_app_2f_byte1_rmq_intr, |
1274 | 15 | { "Receive Message Queue Interrupt", |
1275 | 15 | "ipmi.app2f.bmc_global_enables.rmq_intr", FT_BOOLEAN, 8, TFS(&tfs_2f_enabled), 0x01, NULL, HFILL }}, |
1276 | | |
1277 | 15 | { &hf_ipmi_app_30_byte1_oem2, |
1278 | 15 | { "OEM 2", |
1279 | 15 | "ipmi.app30.byte1.oem2", FT_BOOLEAN, 8, TFS(&tfs_30_clear), 0x80, NULL, HFILL }}, |
1280 | 15 | { &hf_ipmi_app_30_byte1_oem1, |
1281 | 15 | { "OEM 1", |
1282 | 15 | "ipmi.app30.byte1.oem1", FT_BOOLEAN, 8, TFS(&tfs_30_clear), 0x40, NULL, HFILL }}, |
1283 | 15 | { &hf_ipmi_app_30_byte1_oem0, |
1284 | 15 | { "OEM 0", |
1285 | 15 | "ipmi.app30.byte1.oem0", FT_BOOLEAN, 8, TFS(&tfs_30_clear), 0x20, NULL, HFILL }}, |
1286 | 15 | { &hf_ipmi_app_30_byte1_wd_pretimeout, |
1287 | 15 | { "Watchdog pre-timeout interrupt flag", |
1288 | 15 | "ipmi.app30.byte1.wd_pretimeout", FT_BOOLEAN, 8, TFS(&tfs_30_clear), 0x08, NULL, HFILL }}, |
1289 | 15 | { &hf_ipmi_app_30_byte1_emb, |
1290 | 15 | { "Event Message Buffer", |
1291 | 15 | "ipmi.app30.byte1.emb", FT_BOOLEAN, 8, TFS(&tfs_30_clear), 0x02, NULL, HFILL }}, |
1292 | 15 | { &hf_ipmi_app_30_byte1_rmq, |
1293 | 15 | { "Receive Message Queue", |
1294 | 15 | "ipmi.app30.byte1.rmq", FT_BOOLEAN, 8, TFS(&tfs_30_clear), 0x01, NULL, HFILL }}, |
1295 | | |
1296 | 15 | { &hf_ipmi_app_31_byte1_oem2, |
1297 | 15 | { "OEM 2 data available", |
1298 | 15 | "ipmi.app31.byte1.oem2", FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }}, |
1299 | 15 | { &hf_ipmi_app_31_byte1_oem1, |
1300 | 15 | { "OEM 1 data available", |
1301 | 15 | "ipmi.app31.byte1.oem1", FT_BOOLEAN, 8, NULL, 0x40, NULL, HFILL }}, |
1302 | 15 | { &hf_ipmi_app_31_byte1_oem0, |
1303 | 15 | { "OEM 0 data available", |
1304 | 15 | "ipmi.app31.byte1.oem0", FT_BOOLEAN, 8, NULL, 0x20, NULL, HFILL }}, |
1305 | 15 | { &hf_ipmi_app_31_byte1_wd_pretimeout, |
1306 | 15 | { "Watchdog pre-timeout interrupt occurred", |
1307 | 15 | "ipmi.app31.byte1.wd_pretimeout", FT_BOOLEAN, 8, NULL, 0x08, NULL, HFILL }}, |
1308 | 15 | { &hf_ipmi_app_31_byte1_emb, |
1309 | 15 | { "Event Message Buffer Full", |
1310 | 15 | "ipmi.app31.byte1.emb", FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL }}, |
1311 | 15 | { &hf_ipmi_app_31_byte1_rmq, |
1312 | 15 | { "Receive Message Available", |
1313 | 15 | "ipmi.app31.byte1.rmq", FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }}, |
1314 | | |
1315 | 15 | { &hf_ipmi_app_32_rq_chno, |
1316 | 15 | { "Channel", |
1317 | 15 | "ipmi.app32.rq_chno", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_channel), 0x0f, NULL, HFILL }}, |
1318 | 15 | { &hf_ipmi_app_32_rq_state, |
1319 | 15 | { "Channel State", |
1320 | 15 | "ipmi.app32.rq_state", FT_UINT8, BASE_HEX, VALS(vals_32_state), 0x03, NULL, HFILL }}, |
1321 | 15 | { &hf_ipmi_app_32_rs_chno, |
1322 | 15 | { "Channel", |
1323 | 15 | "ipmi.app32.rs_chno", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_channel), 0x0f, NULL, HFILL }}, |
1324 | 15 | { &hf_ipmi_app_32_rs_state, |
1325 | 15 | { "Channel State", |
1326 | 15 | "ipmi.app32.rs_state", FT_BOOLEAN, 8, TFS(&tfs_32_state), 0x01, NULL, HFILL }}, |
1327 | | |
1328 | 15 | { &hf_ipmi_app_33_rs_chan, |
1329 | 15 | { "Channel", |
1330 | 15 | "ipmi.app33.chan", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_channel), 0x0f, NULL, HFILL }}, |
1331 | 15 | { &hf_ipmi_app_33_rs_priv, |
1332 | 15 | { "Inferred privilege level", |
1333 | 15 | "ipmi.app33.priv", FT_UINT8, BASE_HEX, VALS(vals_XX_priv), 0xf0, NULL, HFILL }}, |
1334 | 15 | { &hf_ipmi_app_33_msg, |
1335 | 15 | { "Message data", |
1336 | 15 | "ipmi.app33.msg", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, |
1337 | | |
1338 | 15 | { &hf_ipmi_app_34_track, |
1339 | 15 | { "Tracking", |
1340 | 15 | "ipmi.app34.track", FT_UINT8, BASE_HEX, VALS(vals_34_track), 0xc0, NULL, HFILL }}, |
1341 | 15 | { &hf_ipmi_app_34_encrypt, |
1342 | 15 | { "Encryption required", |
1343 | 15 | "ipmi.app34.encrypt", FT_BOOLEAN, 8, NULL, 0x20, NULL, HFILL }}, |
1344 | 15 | { &hf_ipmi_app_34_auth, |
1345 | 15 | { "Authentication required", |
1346 | 15 | "ipmi.app34.auth", FT_BOOLEAN, 8, NULL, 0x10, NULL, HFILL }}, |
1347 | 15 | { &hf_ipmi_app_34_chan, |
1348 | 15 | { "Channel", |
1349 | 15 | "ipmi.app34.chan", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_channel), 0x0f, NULL, HFILL }}, |
1350 | 15 | { &hf_ipmi_app_34_msg, |
1351 | 15 | { "Embedded message", |
1352 | 15 | "ipmi.app34.msg", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, |
1353 | | |
1354 | 15 | { &hf_ipmi_app_38_rq_ipmi20, |
1355 | 15 | { "Version compatibility", |
1356 | 15 | "ipmi.app38.rq_ipmi20", FT_UINT8, BASE_DEC, VALS(vals_38_ipmi20), 0x80, NULL, HFILL }}, |
1357 | 15 | { &hf_ipmi_app_38_rq_chan, |
1358 | 15 | { "Channel", |
1359 | 15 | "ipmi.app38.rq_chan", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_channel), 0x0f, NULL, HFILL }}, |
1360 | 15 | { &hf_ipmi_app_38_rq_priv, |
1361 | 15 | { "Requested privilege level", |
1362 | 15 | "ipmi.app38.rq_priv", FT_UINT8, BASE_HEX, VALS(vals_XX_priv), 0x0f, NULL, HFILL }}, |
1363 | 15 | { &hf_ipmi_app_38_rs_chan, |
1364 | 15 | { "Channel", |
1365 | 15 | "ipmi.app38.rs_chan", FT_UINT8, BASE_CUSTOM, CF_FUNC(ipmi_fmt_channel), 0x0f, NULL, HFILL }}, |
1366 | 15 | { &hf_ipmi_app_38_rs_ipmi20, |
1367 | 15 | { "Version compatibility", |
1368 | 15 | "ipmi.app38.rs_ipmi20", FT_UINT8, BASE_DEC, VALS(vals_38_ipmi20), 0x80, NULL, HFILL }}, |
1369 | 15 | { &hf_ipmi_app_38_rs_auth_oem, |
1370 | 15 | { "OEM Proprietary authentication", |
1371 | 15 | "ipmi.app38.rs_auth_oem", FT_BOOLEAN, 8, TFS(&tfs_38_supp), 0x20, NULL, HFILL }}, |
1372 | 15 | { &hf_ipmi_app_38_rs_auth_straight, |
1373 | 15 | { "Straight password/key", |
1374 | 15 | "ipmi.app38.rs_auth_straight", FT_BOOLEAN, 8, TFS(&tfs_38_supp), 0x10, NULL, HFILL }}, |
1375 | 15 | { &hf_ipmi_app_38_rs_auth_md5, |
1376 | 15 | { "MD5", |
1377 | 15 | "ipmi.app38.rs_auth_md5", FT_BOOLEAN, 8, TFS(&tfs_38_supp), 0x04, NULL, HFILL }}, |
1378 | 15 | { &hf_ipmi_app_38_rs_auth_md2, |
1379 | 15 | { "MD2", |
1380 | 15 | "ipmi.app38.rs_auth_md2", FT_BOOLEAN, 8, TFS(&tfs_38_supp), 0x02, NULL, HFILL }}, |
1381 | 15 | { &hf_ipmi_app_38_rs_auth_none, |
1382 | 15 | { "No auth", |
1383 | 15 | "ipmi.app38.rs_auth_none", FT_BOOLEAN, 8, TFS(&tfs_38_supp), 0x01, NULL, HFILL }}, |
1384 | 15 | { &hf_ipmi_app_38_rs_kg, |
1385 | 15 | { "KG", |
1386 | 15 | "ipmi.app38.rs_kg_status", FT_BOOLEAN, 8, TFS(&tfs_38_kg), 0x20, NULL, HFILL }}, |
1387 | 15 | { &hf_ipmi_app_38_rs_permsg, |
1388 | 15 | { "Per-message Authentication disabled", |
1389 | 15 | "ipmi.app38.rs_permsg", FT_BOOLEAN, 8, NULL, 0x10, NULL, HFILL }}, |
1390 | 15 | { &hf_ipmi_app_38_rs_userauth, |
1391 | 15 | { "User-level Authentication disabled", |
1392 | 15 | "ipmi.app38.rs_userauth", FT_BOOLEAN, 8, NULL, 0x08, NULL, HFILL }}, |
1393 | 15 | { &hf_ipmi_app_38_rs_user_nonnull, |
1394 | 15 | { "Non-null usernames enabled", |
1395 | 15 | "ipmi.app38.rs_user_nonnull", FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL }}, |
1396 | 15 | { &hf_ipmi_app_38_rs_user_null, |
1397 | 15 | { "Null usernames enabled", |
1398 | 15 | "ipmi.app38.rs_user_null", FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL }}, |
1399 | 15 | { &hf_ipmi_app_38_rs_user_anon, |
1400 | 15 | { "Anonymous login enabled", |
1401 | 15 | "ipmi.app38.rs_user_anon", FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }}, |
1402 | 15 | { &hf_ipmi_app_38_rs_ipmi20_conn, |
1403 | 15 | { "IPMI v2.0", |
1404 | 15 | "ipmi.app38.rs_ipmi20_conn", FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL }}, |
1405 | 15 | { &hf_ipmi_app_38_rs_ipmi15_conn, |
1406 | 15 | { "IPMI v1.5", |
1407 | 15 | "ipmi.app38.rs_ipmi15_conn", FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }}, |
1408 | 15 | { &hf_ipmi_app_38_rs_oem_iana, |
1409 | 15 | { "OEM ID", |
1410 | 15 | "ipmi.app38.rs_oem_iana", FT_UINT24, BASE_DEC, NULL, 0, NULL, HFILL }}, |
1411 | 15 | { &hf_ipmi_app_38_rs_oem_aux, |
1412 | 15 | { "OEM Auxiliary data", |
1413 | 15 | "ipmi.app38.rs_oem_aux", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, |
1414 | | |
1415 | 15 | { &hf_ipmi_app_39_authtype, |
1416 | 15 | { "Authentication Type", |
1417 | 15 | "ipmi.app39.authtype", FT_UINT8, BASE_HEX, VALS(vals_XX_auth), 0x0f, NULL, HFILL }}, |
1418 | 15 | { &hf_ipmi_app_39_user, |
1419 | 15 | { "User Name", |
1420 | 15 | "ipmi.app39.user", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, |
1421 | 15 | { &hf_ipmi_app_39_temp_session, |
1422 | 15 | { "Temporary Session ID", |
1423 | 15 | "ipmi.app39.temp_session", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, |
1424 | 15 | { &hf_ipmi_app_39_challenge, |
1425 | 15 | { "Challenge", |
1426 | 15 | "ipmi.app39.challenge", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
1427 | | |
1428 | 15 | { &hf_ipmi_app_3a_authtype, |
1429 | 15 | { "Authentication Type", |
1430 | 15 | "ipmi.app3a.authtype", FT_UINT8, BASE_HEX, VALS(vals_XX_auth), 0x0f, NULL, HFILL }}, |
1431 | 15 | { &hf_ipmi_app_3a_privlevel, |
1432 | 15 | { "Requested Maximum Privilege Level", |
1433 | 15 | "ipmi.app3a.privlevel", FT_UINT8, BASE_HEX, VALS(vals_XX_priv), 0x0f, NULL, HFILL }}, |
1434 | 15 | { &hf_ipmi_app_3a_authcode, |
1435 | 15 | { "Challenge string/Auth Code", |
1436 | 15 | "ipmi.app3a.authcode", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |
1437 | 15 | { &hf_ipmi_app_3a_outbound_seq, |
1438 | 15 | { "Initial Outbound Sequence Number", |
1439 | 15 | "ipmi.app3a.outbound_seq", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, |
1440 | 15 | { &hf_ipmi_app_3a_authtype_session, |
1441 | 15 | { "Authentication Type for session", |
1442 | 15 | "ipmi.app3a.authtype_session", FT_UINT8, BASE_HEX, VALS(vals_XX_auth), 0x0f, NULL, HFILL }}, |
1443 | 15 | { &hf_ipmi_app_3a_session_id, |
1444 | 15 | { "Session ID", |
1445 | 15 | "ipmi.app3a.session_id", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, |
1446 | 15 | { &hf_ipmi_app_3a_inbound_seq, |
1447 | 15 | { "Initial Inbound Sequence Number", |
1448 | 15 | "ipmi.app3a.inbound_seq", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, |
1449 | 15 | { &hf_ipmi_app_3a_maxpriv_session, |
1450 | 15 | { "Maximum Privilege Level for session", |
1451 | 15 | "ipmi.app3a.maxpriv_session", FT_UINT8, BASE_HEX, VALS(vals_XX_priv), 0x0f, NULL, HFILL }}, |
1452 | | |
1453 | 15 | { &hf_ipmi_app_3b_req_priv, |
1454 | 15 | { "Requested Privilege Level", |
1455 | 15 | "ipmi.app3b.req_priv", FT_UINT8, BASE_HEX, VALS(vals_XX_priv), 0x0f, NULL, HFILL }}, |
1456 | 15 | { &hf_ipmi_app_3b_new_priv, |
1457 | 15 | { "New Privilege Level", |
1458 | 15 | "ipmi.app3b.new_priv", FT_UINT8, BASE_HEX, VALS(vals_XX_priv), 0x0f, NULL, HFILL }}, |
1459 | | |
1460 | 15 | { &hf_ipmi_app_3c_session_id, |
1461 | 15 | { "Session ID", |
1462 | 15 | "ipmi.app3c.session_id", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, |
1463 | 15 | { &hf_ipmi_app_3c_session_handle, |
1464 | 15 | { "Session handle", |
1465 | 15 | "ipmi.app3c.session_handle", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, |
1466 | 15 | }; |
1467 | 15 | static int *ett[] = { |
1468 | 15 | &ett_ipmi_app_01_byte2, |
1469 | 15 | &ett_ipmi_app_01_byte3, |
1470 | 15 | &ett_ipmi_app_01_byte6, |
1471 | 15 | &ett_ipmi_app_04_byte2, |
1472 | 15 | &ett_ipmi_app_06_syspwr, |
1473 | 15 | &ett_ipmi_app_06_devpwr, |
1474 | 15 | &ett_ipmi_app_07_syspwr, |
1475 | 15 | &ett_ipmi_app_07_devpwr, |
1476 | 15 | &ett_ipmi_app_24_timer_use, |
1477 | 15 | &ett_ipmi_app_24_timer_action, |
1478 | 15 | &ett_ipmi_app_24_expiration_flags, |
1479 | 15 | &ett_ipmi_app_25_timer_use, |
1480 | 15 | &ett_ipmi_app_25_timer_action, |
1481 | 15 | &ett_ipmi_app_25_expiration_flags, |
1482 | 15 | &ett_ipmi_app_2e_byte1, |
1483 | 15 | &ett_ipmi_app_2f_byte1, |
1484 | 15 | &ett_ipmi_app_30_byte1, |
1485 | 15 | &ett_ipmi_app_31_byte1, |
1486 | 15 | &ett_ipmi_app_32_rq_byte1, |
1487 | 15 | &ett_ipmi_app_32_rq_byte2, |
1488 | 15 | &ett_ipmi_app_32_rs_byte1, |
1489 | 15 | &ett_ipmi_app_32_rs_byte2, |
1490 | 15 | &ett_ipmi_app_33_rs_byte1, |
1491 | 15 | &ett_ipmi_app_33_msg, |
1492 | 15 | &ett_ipmi_app_34_byte1, |
1493 | 15 | &ett_ipmi_app_34_msg, |
1494 | 15 | &ett_ipmi_app_38_rq_byte1, |
1495 | 15 | &ett_ipmi_app_38_rq_byte2, |
1496 | 15 | &ett_ipmi_app_38_rs_byte1, |
1497 | 15 | &ett_ipmi_app_38_rs_byte2, |
1498 | 15 | &ett_ipmi_app_38_rs_byte3, |
1499 | 15 | &ett_ipmi_app_38_rs_byte4, |
1500 | 15 | &ett_ipmi_app_39_byte1, |
1501 | 15 | &ett_ipmi_app_3a_rq_byte1, |
1502 | 15 | &ett_ipmi_app_3a_rq_byte2, |
1503 | 15 | &ett_ipmi_app_3a_rs_byte1, |
1504 | 15 | &ett_ipmi_app_3a_rs_byte10, |
1505 | 15 | &ett_ipmi_app_3b_rq_byte1, |
1506 | 15 | &ett_ipmi_app_3b_rs_byte1, |
1507 | 15 | }; |
1508 | | |
1509 | 15 | proto_register_field_array(proto_ipmi, hf, array_length(hf)); |
1510 | 15 | proto_register_subtree_array(ett, array_length(ett)); |
1511 | 15 | ipmi_register_netfn_cmdtab(IPMI_APP_REQ, IPMI_OEM_NONE, NULL, 0, NULL, |
1512 | 15 | cmd_app, array_length(cmd_app)); |
1513 | 15 | } |
1514 | | |
1515 | | /* |
1516 | | * Editor modelines - https://www.wireshark.org/tools/modelines.html |
1517 | | * |
1518 | | * Local variables: |
1519 | | * c-basic-offset: 8 |
1520 | | * tab-width: 8 |
1521 | | * indent-tabs-mode: t |
1522 | | * End: |
1523 | | * |
1524 | | * vi: set shiftwidth=8 tabstop=8 noexpandtab: |
1525 | | * :indentSize=8:tabSize=8:noTabs=false: |
1526 | | */ |