2 * Sub-dissectors for IPMI messages (netFn=Application)
3 * Copyright 2007-2008, Alexey Neyman, Pigeon Point Systems <avn@pigeonpoint.com>
7 * Wireshark - Network traffic analyzer
8 * By Gerald Combs <gerald@wireshark.org>
9 * Copyright 1998 Gerald Combs
11 * This program is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU General Public License
13 * as published by the Free Software Foundation; either version 2
14 * of the License, or (at your option) any later version.
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
21 * You should have received a copy of the GNU General Public License
22 * along with this program; if not, write to the Free Software
23 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
30 #include <epan/packet.h>
32 #include "packet-ipmi.h"
34 static gint ett_ipmi_app_01_byte2
= -1;
35 static gint ett_ipmi_app_01_byte3
= -1;
36 static gint ett_ipmi_app_01_byte6
= -1;
38 static gint ett_ipmi_app_04_byte2
= -1;
40 static gint ett_ipmi_app_06_syspwr
= -1;
41 static gint ett_ipmi_app_06_devpwr
= -1;
43 static gint ett_ipmi_app_07_syspwr
= -1;
44 static gint ett_ipmi_app_07_devpwr
= -1;
46 static gint ett_ipmi_app_24_timer_use
= -1;
47 static gint ett_ipmi_app_24_timer_action
= -1;
48 static gint ett_ipmi_app_24_expiration_flags
= -1;
50 static gint ett_ipmi_app_25_timer_use
= -1;
51 static gint ett_ipmi_app_25_timer_action
= -1;
52 static gint ett_ipmi_app_25_expiration_flags
= -1;
54 static gint ett_ipmi_app_2e_byte1
= -1;
55 static gint ett_ipmi_app_2f_byte1
= -1;
56 static gint ett_ipmi_app_30_byte1
= -1;
57 static gint ett_ipmi_app_31_byte1
= -1;
58 static gint ett_ipmi_app_32_rq_byte1
= -1;
59 static gint ett_ipmi_app_32_rq_byte2
= -1;
60 static gint ett_ipmi_app_32_rs_byte1
= -1;
61 static gint ett_ipmi_app_32_rs_byte2
= -1;
62 static gint ett_ipmi_app_34_byte1
= -1;
63 static gint ett_ipmi_app_34_msg
= -1;
65 static gint ett_ipmi_app_38_rq_byte1
= -1;
66 static gint ett_ipmi_app_38_rq_byte2
= -1;
67 static gint ett_ipmi_app_38_rs_byte1
= -1;
68 static gint ett_ipmi_app_38_rs_byte2
= -1;
69 static gint ett_ipmi_app_38_rs_byte3
= -1;
70 static gint ett_ipmi_app_38_rs_byte4
= -1;
72 static gint ett_ipmi_app_39_byte1
= -1;
74 static gint ett_ipmi_app_3a_rq_byte1
= -1;
75 static gint ett_ipmi_app_3a_rq_byte2
= -1;
76 static gint ett_ipmi_app_3a_rs_byte1
= -1;
77 static gint ett_ipmi_app_3a_rs_byte10
= -1;
79 static gint ett_ipmi_app_3b_rq_byte1
= -1;
80 static gint ett_ipmi_app_3b_rs_byte1
= -1;
82 static gint hf_ipmi_app_01_dev_id
= -1;
83 static gint hf_ipmi_app_01_dev_prov_sdr
= -1;
84 static gint hf_ipmi_app_01_dev_rev
= -1;
85 static gint hf_ipmi_app_01_dev_avail
= -1;
86 static gint hf_ipmi_app_01_fw_rev_maj
= -1;
87 static gint hf_ipmi_app_01_fw_rev_min
= -1;
88 static gint hf_ipmi_app_01_ipmi_version
= -1;
89 static gint hf_ipmi_app_01_ipmi_ads_chassis
= -1;
90 static gint hf_ipmi_app_01_ipmi_ads_bridge
= -1;
91 static gint hf_ipmi_app_01_ipmi_ads_ipmb_ev_gen
= -1;
92 static gint hf_ipmi_app_01_ipmi_ads_ipmb_ev_recv
= -1;
93 static gint hf_ipmi_app_01_ipmi_ads_fru
= -1;
94 static gint hf_ipmi_app_01_ipmi_ads_sel
= -1;
95 static gint hf_ipmi_app_01_ipmi_ads_sdr
= -1;
96 static gint hf_ipmi_app_01_ipmi_ads_sensor
= -1;
97 static gint hf_ipmi_app_01_manufacturer
= -1;
98 static gint hf_ipmi_app_01_product
= -1;
99 static gint hf_ipmi_app_01_fw_aux
= -1;
101 static gint hf_ipmi_app_04_result
= -1;
102 static gint hf_ipmi_app_04_fail
= -1;
103 static gint hf_ipmi_app_04_fail_sel
= -1;
104 static gint hf_ipmi_app_04_fail_sdr
= -1;
105 static gint hf_ipmi_app_04_fail_bmc_fru
= -1;
106 static gint hf_ipmi_app_04_fail_ipmb_sig
= -1;
107 static gint hf_ipmi_app_04_fail_sdr_empty
= -1;
108 static gint hf_ipmi_app_04_fail_iua
= -1;
109 static gint hf_ipmi_app_04_fail_bb_fw
= -1;
110 static gint hf_ipmi_app_04_fail_oper_fw
= -1;
112 static gint hf_ipmi_app_05_devspec
= -1;
114 static gint hf_ipmi_app_06_syspwr_set
= -1;
115 static gint hf_ipmi_app_06_syspwr_enum
= -1;
116 static gint hf_ipmi_app_06_devpwr_set
= -1;
117 static gint hf_ipmi_app_06_devpwr_enum
= -1;
119 static gint hf_ipmi_app_07_syspwr_enum
= -1;
120 static gint hf_ipmi_app_07_devpwr_enum
= -1;
122 static gint hf_ipmi_app_08_guid
= -1;
124 static gint hf_ipmi_app_24_timer_use_dont_log
= -1;
125 static gint hf_ipmi_app_24_timer_use_dont_stop
= -1;
126 static gint hf_ipmi_app_24_timer_use_timer_use
= -1;
127 static gint hf_ipmi_app_24_timer_action_interrupt
= -1;
128 static gint hf_ipmi_app_24_timer_action_timeout_action
= -1;
129 static gint hf_ipmi_app_24_pretimeout
= -1;
130 static gint hf_ipmi_app_24_expiration_flags_oem
= -1;
131 static gint hf_ipmi_app_24_expiration_flags_smsos
= -1;
132 static gint hf_ipmi_app_24_expiration_flags_osload
= -1;
133 static gint hf_ipmi_app_24_expiration_flags_biospost
= -1;
134 static gint hf_ipmi_app_24_expiration_flags_biosfrb2
= -1;
135 static gint hf_ipmi_app_24_initial_countdown
= -1;
137 static gint hf_ipmi_app_25_timer_use_dont_log
= -1;
138 static gint hf_ipmi_app_25_timer_use_started
= -1;
139 static gint hf_ipmi_app_25_timer_use_timer_use
= -1;
140 static gint hf_ipmi_app_25_timer_action_interrupt
= -1;
141 static gint hf_ipmi_app_25_timer_action_timeout_action
= -1;
142 static gint hf_ipmi_app_25_pretimeout
= -1;
143 static gint hf_ipmi_app_25_expiration_flags_oem
= -1;
144 static gint hf_ipmi_app_25_expiration_flags_smsos
= -1;
145 static gint hf_ipmi_app_25_expiration_flags_osload
= -1;
146 static gint hf_ipmi_app_25_expiration_flags_biospost
= -1;
147 static gint hf_ipmi_app_25_expiration_flags_biosfrb2
= -1;
148 static gint hf_ipmi_app_25_initial_countdown
= -1;
149 static gint hf_ipmi_app_25_present_countdown
= -1;
151 static gint hf_ipmi_app_2e_byte1_oem2
= -1;
152 static gint hf_ipmi_app_2e_byte1_oem1
= -1;
153 static gint hf_ipmi_app_2e_byte1_oem0
= -1;
154 static gint hf_ipmi_app_2e_byte1_sel
= -1;
155 static gint hf_ipmi_app_2e_byte1_emb
= -1;
156 static gint hf_ipmi_app_2e_byte1_emb_full_intr
= -1;
157 static gint hf_ipmi_app_2e_byte1_rmq_intr
= -1;
159 static gint hf_ipmi_app_2f_byte1_oem2
= -1;
160 static gint hf_ipmi_app_2f_byte1_oem1
= -1;
161 static gint hf_ipmi_app_2f_byte1_oem0
= -1;
162 static gint hf_ipmi_app_2f_byte1_sel
= -1;
163 static gint hf_ipmi_app_2f_byte1_emb
= -1;
164 static gint hf_ipmi_app_2f_byte1_emb_full_intr
= -1;
165 static gint hf_ipmi_app_2f_byte1_rmq_intr
= -1;
167 static gint hf_ipmi_app_30_byte1_oem2
= -1;
168 static gint hf_ipmi_app_30_byte1_oem1
= -1;
169 static gint hf_ipmi_app_30_byte1_oem0
= -1;
170 static gint hf_ipmi_app_30_byte1_wd_pretimeout
= -1;
171 static gint hf_ipmi_app_30_byte1_emb
= -1;
172 static gint hf_ipmi_app_30_byte1_rmq
= -1;
174 static gint hf_ipmi_app_31_byte1_oem2
= -1;
175 static gint hf_ipmi_app_31_byte1_oem1
= -1;
176 static gint hf_ipmi_app_31_byte1_oem0
= -1;
177 static gint hf_ipmi_app_31_byte1_wd_pretimeout
= -1;
178 static gint hf_ipmi_app_31_byte1_emb
= -1;
179 static gint hf_ipmi_app_31_byte1_rmq
= -1;
181 static gint hf_ipmi_app_32_rq_chno
= -1;
182 static gint hf_ipmi_app_32_rq_state
= -1;
183 static gint hf_ipmi_app_32_rs_chno
= -1;
184 static gint hf_ipmi_app_32_rs_state
= -1;
186 static gint hf_ipmi_app_34_track
= -1;
187 static gint hf_ipmi_app_34_encrypt
= -1;
188 static gint hf_ipmi_app_34_auth
= -1;
189 static gint hf_ipmi_app_34_chan
= -1;
191 static gint hf_ipmi_app_38_rq_ipmi20
= -1;
192 static gint hf_ipmi_app_38_rq_chan
= -1;
193 static gint hf_ipmi_app_38_rq_priv
= -1;
194 static gint hf_ipmi_app_38_rs_chan
= -1;
195 static gint hf_ipmi_app_38_rs_ipmi20
= -1;
196 static gint hf_ipmi_app_38_rs_auth_oem
= -1;
197 static gint hf_ipmi_app_38_rs_auth_straight
= -1;
198 static gint hf_ipmi_app_38_rs_auth_md5
= -1;
199 static gint hf_ipmi_app_38_rs_auth_md2
= -1;
200 static gint hf_ipmi_app_38_rs_auth_none
= -1;
201 static gint hf_ipmi_app_38_rs_kg
= -1;
202 static gint hf_ipmi_app_38_rs_permsg
= -1;
203 static gint hf_ipmi_app_38_rs_userauth
= -1;
204 static gint hf_ipmi_app_38_rs_user_nonnull
= -1;
205 static gint hf_ipmi_app_38_rs_user_null
= -1;
206 static gint hf_ipmi_app_38_rs_user_anon
= -1;
207 static gint hf_ipmi_app_38_rs_ipmi20_conn
= -1;
208 static gint hf_ipmi_app_38_rs_ipmi15_conn
= -1;
209 static gint hf_ipmi_app_38_rs_oem_iana
= -1;
210 static gint hf_ipmi_app_38_rs_oem_aux
= -1;
212 static gint hf_ipmi_app_39_authtype
= -1;
213 static gint hf_ipmi_app_39_user
= -1;
214 static gint hf_ipmi_app_39_temp_session
= -1;
215 static gint hf_ipmi_app_39_challenge
= -1;
217 static gint hf_ipmi_app_3a_authtype
= -1;
218 static gint hf_ipmi_app_3a_privlevel
= -1;
219 static gint hf_ipmi_app_3a_authcode
= -1;
220 static gint hf_ipmi_app_3a_outbound_seq
= -1;
221 static gint hf_ipmi_app_3a_authtype_session
= -1;
222 static gint hf_ipmi_app_3a_session_id
= -1;
223 static gint hf_ipmi_app_3a_inbound_seq
= -1;
224 static gint hf_ipmi_app_3a_maxpriv_session
= -1;
226 static gint hf_ipmi_app_3b_req_priv
= -1;
227 static gint hf_ipmi_app_3b_new_priv
= -1;
229 static gint hf_ipmi_app_3c_session_id
= -1;
230 static gint hf_ipmi_app_3c_session_handle
= -1;
232 static const struct true_false_string tfs_01_dev_avail
= {
233 "Device firmware, SDR Repository update or self-initialization in progress",
237 static const value_string vals_04_result
[] = {
238 { 0x55, "No error. All Self Tests Passed" },
239 { 0x56, "Self Test function not implemented in this controller" },
240 { 0x57, "Corrupted or inaccessible data or devices" },
241 { 0x58, "Fatal hardware error" },
242 { 0xff, "Reserved" },
246 static const struct true_false_string tfs_04_fail_unknown
= {
251 static const struct true_false_string tfs_06_pwr
= {
256 static const value_string vals_06_syspwr
[] = {
257 { 0x00, "Set S0 / G0" },
262 { 0x05, "Set S5 / G2" },
263 { 0x06, "Set S4/S5" },
265 { 0x08, "Sleeping" },
266 { 0x09, "G1 sleeping" },
267 { 0x0a, "Set override" },
268 { 0x20, "Set Legacy On" },
269 { 0x21, "Set Legacy Off" },
270 { 0x2a, "Set unknown" },
271 { 0x7f, "No change" },
275 static const value_string vals_06_devpwr
[] = {
280 { 0x2a, "Set unknown" },
281 { 0x7f, "No change" },
285 static const value_string vals_07_syspwr
[] = {
294 { 0x08, "Sleeping" },
295 { 0x09, "G1 sleeping" },
296 { 0x0a, "Override" },
297 { 0x20, "Legacy On" },
298 { 0x21, "Legacy Off" },
303 static const value_string vals_07_devpwr
[] = {
312 static const value_string vals_24_timer_use
[] = {
313 { 0x00, "reserved" },
314 { 0x01, "BIOS FRB2" },
315 { 0x02, "BIOS/POST" },
319 { 0x06, "reserved" },
320 { 0x07, "reserved" },
325 static const value_string vals_24_timer_action_interrupt
[] = {
328 { 0x02, "NMI / Diagnostic interrupt" },
329 { 0x03, "Messaging interrupt" },
330 { 0x04, "reserved" },
331 { 0x05, "reserved" },
332 { 0x06, "reserved" },
333 { 0x07, "reserved" },
338 static const value_string vals_24_timer_action_timeout
[] = {
339 { 0x00, "no action" },
340 { 0x01, "Hard Reset" },
341 { 0x02, "Power Down" },
342 { 0x03, "Power Cycle" },
343 { 0x04, "reserved" },
344 { 0x05, "reserved" },
345 { 0x06, "reserved" },
346 { 0x07, "reserved" },
351 static const struct true_false_string tfs_24_exp_flags
= {
352 "clear timer use expiration bit",
356 static const struct true_false_string tfs_2e_enable
= { "Enable", "Disable" };
357 static const struct true_false_string tfs_2f_enabled
= { "Enabled", "Disabled" };
359 static const struct true_false_string tfs_30_clear
= {
364 static const value_string vals_32_state
[] = {
365 { 0x00, "Disable channel" },
366 { 0x01, "Enable channel" },
367 { 0x02, "Get channel enable/disable state" },
368 { 0x03, "Reserved" },
373 static const struct true_false_string tfs_32_state
= {
378 static const value_string vals_34_track
[] = {
379 { 0x00, "No tracking" },
380 { 0x01, "Track Request" },
381 { 0x02, "Send Raw" },
385 static const value_string vals_38_ipmi20
[] = {
386 { 0x00, "Backward compatible with IPMI 1.5" },
387 { 0x01, "IPMI v2.0+ extended data" },
391 static const value_string vals_XX_priv
[] = {
392 { 0x00, "None / No change" },
393 { 0x01, "Callback" },
395 { 0x03, "Operator" },
396 { 0x04, "Administrator" },
397 { 0x05, "OEM Proprietary" },
401 static const struct true_false_string tfs_38_supp
= { "Supported", "Not supported" };
402 static const struct true_false_string tfs_38_kg
= { "Set to non-zero", "Set to default (0)" };
404 static const value_string vals_XX_auth
[] = {
408 { 0x04, "straight password" },
417 rs01(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
)
419 static const gint
*byte2
[] = { &hf_ipmi_app_01_dev_prov_sdr
, &hf_ipmi_app_01_dev_rev
, NULL
};
420 static const gint
*byte3
[] = { &hf_ipmi_app_01_dev_avail
, &hf_ipmi_app_01_fw_rev_maj
, NULL
};
421 static const gint
*byte6
[] = { &hf_ipmi_app_01_ipmi_ads_chassis
, &hf_ipmi_app_01_ipmi_ads_bridge
,
422 &hf_ipmi_app_01_ipmi_ads_ipmb_ev_gen
, &hf_ipmi_app_01_ipmi_ads_ipmb_ev_recv
,
423 &hf_ipmi_app_01_ipmi_ads_fru
, &hf_ipmi_app_01_ipmi_ads_sel
, &hf_ipmi_app_01_ipmi_ads_sdr
,
424 &hf_ipmi_app_01_ipmi_ads_sensor
, NULL
};
427 len
= tvb_length(tvb
);
429 proto_tree_add_item(tree
, hf_ipmi_app_01_dev_id
, tvb
, 0, 1, ENC_LITTLE_ENDIAN
);
430 proto_tree_add_bitmask_text(tree
, tvb
, 1, 1, NULL
, NULL
, ett_ipmi_app_01_byte2
, byte2
, ENC_LITTLE_ENDIAN
, 0);
431 proto_tree_add_bitmask_text(tree
, tvb
, 2, 1, NULL
, NULL
, ett_ipmi_app_01_byte3
, byte3
, ENC_LITTLE_ENDIAN
, 0);
432 proto_tree_add_item(tree
, hf_ipmi_app_01_fw_rev_min
, tvb
, 3, 1, ENC_LITTLE_ENDIAN
);
434 proto_tree_add_item(tree
, hf_ipmi_app_01_ipmi_version
, tvb
, 4, 1, ENC_LITTLE_ENDIAN
);
436 proto_tree_add_bitmask_text(tree
, tvb
, 5, 1, "Additional device support: ", "None",
437 ett_ipmi_app_01_byte6
, byte6
, ENC_LITTLE_ENDIAN
, 0);
438 proto_tree_add_item(tree
, hf_ipmi_app_01_manufacturer
, tvb
, 6, 3, ENC_LITTLE_ENDIAN
);
439 proto_tree_add_item(tree
, hf_ipmi_app_01_product
, tvb
, 9, 2, ENC_LITTLE_ENDIAN
);
441 /* IPMI states that Aux Revision should be displayed in MSB order */
442 proto_tree_add_item(tree
, hf_ipmi_app_01_fw_aux
, tvb
, 11, 4, ENC_NA
);
446 /* Get Self Test Results.
449 rs04(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
)
451 static const gint
*byte2
[] = { &hf_ipmi_app_04_fail_sel
, &hf_ipmi_app_04_fail_sdr
,
452 &hf_ipmi_app_04_fail_bmc_fru
, &hf_ipmi_app_04_fail_ipmb_sig
, &hf_ipmi_app_04_fail_sdr_empty
,
453 &hf_ipmi_app_04_fail_iua
, &hf_ipmi_app_04_fail_bb_fw
, &hf_ipmi_app_04_fail_oper_fw
, NULL
};
456 res
= tvb_get_guint8(tvb
, 0);
457 fail
= tvb_get_guint8(tvb
, 1);
459 proto_tree_add_uint_format_value(tree
, hf_ipmi_app_04_result
, tvb
, 0, 1,
461 val_to_str_const(res
, vals_04_result
, "Device-specific internal failure"),
464 if (res
== 0x55 || res
== 0x56 || res
== 0xff) {
465 proto_tree_add_uint_format_value(tree
, hf_ipmi_app_04_fail
, tvb
, 1, 1,
466 fail
, "0x%02x (must be 0x00)",
472 proto_tree_add_uint_format_value(tree
, hf_ipmi_app_04_fail
, tvb
, 1, 1,
473 fail
, "0x%02x (device-specific)",
478 proto_tree_add_bitmask(tree
, tvb
, 1, hf_ipmi_app_04_fail
, ett_ipmi_app_04_byte2
, byte2
, ENC_LITTLE_ENDIAN
);
481 /* Manufacturing Test On.
484 rq05(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
)
486 proto_tree_add_item(tree
, hf_ipmi_app_05_devspec
, tvb
, 0, tvb_length(tvb
), ENC_NA
);
489 /* Set ACPI Power State.
492 rq06(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
)
494 static const gint
*byte1
[] = { &hf_ipmi_app_06_syspwr_set
, &hf_ipmi_app_06_syspwr_enum
, NULL
};
495 static const gint
*byte2
[] = { &hf_ipmi_app_06_devpwr_set
, &hf_ipmi_app_06_devpwr_enum
, NULL
};
497 proto_tree_add_bitmask_text(tree
, tvb
, 0, 1, "ACPI System Power State: ", NULL
,
498 ett_ipmi_app_06_syspwr
, byte1
, ENC_LITTLE_ENDIAN
, 0);
499 proto_tree_add_bitmask_text(tree
, tvb
, 1, 1, "ACPI Device Power State: ", NULL
,
500 ett_ipmi_app_06_devpwr
, byte2
, ENC_LITTLE_ENDIAN
, 0);
503 /* Get ACPI Power State.
506 rs07(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
)
508 static const gint
*byte1
[] = { &hf_ipmi_app_07_syspwr_enum
, NULL
};
509 static const gint
*byte2
[] = { &hf_ipmi_app_07_devpwr_enum
, NULL
};
511 proto_tree_add_bitmask_text(tree
, tvb
, 0, 1, "ACPI System Power State: ", NULL
,
512 ett_ipmi_app_07_syspwr
, byte1
, ENC_LITTLE_ENDIAN
, 0);
513 proto_tree_add_bitmask_text(tree
, tvb
, 1, 1, "ACPI Device Power State: ", NULL
,
514 ett_ipmi_app_07_devpwr
, byte2
, ENC_LITTLE_ENDIAN
, 0);
520 rs08(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
)
522 ipmi_add_guid(tree
, hf_ipmi_app_08_guid
, tvb
, 0);
525 /* Reset Watchdog Timer.
527 static const value_string cc22
[] = {
528 { 0x80, "Attempt to start un-initialized watchdog" },
532 /* Set Watchdog Timer.
535 rq24(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
)
537 static const gint
*byte1
[] = { &hf_ipmi_app_24_timer_use_dont_log
,
538 &hf_ipmi_app_24_timer_use_dont_stop
, &hf_ipmi_app_24_timer_use_timer_use
, NULL
};
539 static const gint
*byte2
[] = { &hf_ipmi_app_24_timer_action_interrupt
,
540 &hf_ipmi_app_24_timer_action_timeout_action
, NULL
};
541 static const gint
*byte4
[] = { &hf_ipmi_app_24_expiration_flags_oem
,
542 &hf_ipmi_app_24_expiration_flags_smsos
, &hf_ipmi_app_24_expiration_flags_osload
,
543 &hf_ipmi_app_24_expiration_flags_biospost
, &hf_ipmi_app_24_expiration_flags_biosfrb2
, NULL
};
545 proto_tree_add_bitmask_text(tree
, tvb
, 0, 1, "Timer Use: ", NULL
, ett_ipmi_app_24_timer_use
,
546 byte1
, ENC_LITTLE_ENDIAN
, 0);
547 proto_tree_add_bitmask_text(tree
, tvb
, 1, 1, NULL
, NULL
, ett_ipmi_app_24_timer_action
,
548 byte2
, ENC_LITTLE_ENDIAN
, 0);
549 proto_tree_add_item(tree
, hf_ipmi_app_24_pretimeout
, tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
550 proto_tree_add_bitmask_text(tree
, tvb
, 3, 1, "Timer Use Expiration flags clear: ", "None",
551 ett_ipmi_app_24_expiration_flags
, byte4
, ENC_LITTLE_ENDIAN
, BMT_NO_TFS
);
552 proto_tree_add_item(tree
, hf_ipmi_app_24_initial_countdown
, tvb
, 4, 2, ENC_LITTLE_ENDIAN
);
555 /* Get Watchdog Timer.
558 rs25(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
)
560 static const gint
*byte1
[] = { &hf_ipmi_app_25_timer_use_dont_log
,
561 &hf_ipmi_app_25_timer_use_started
, &hf_ipmi_app_25_timer_use_timer_use
, NULL
};
562 static const gint
*byte2
[] = { &hf_ipmi_app_25_timer_action_interrupt
,
563 &hf_ipmi_app_25_timer_action_timeout_action
, NULL
};
564 static const gint
*byte4
[] = { &hf_ipmi_app_25_expiration_flags_oem
, &hf_ipmi_app_25_expiration_flags_smsos
,
565 &hf_ipmi_app_25_expiration_flags_osload
, &hf_ipmi_app_25_expiration_flags_biospost
,
566 &hf_ipmi_app_25_expiration_flags_biosfrb2
, NULL
};
568 proto_tree_add_bitmask_text(tree
, tvb
, 0, 1, "Timer Use: ", NULL
, ett_ipmi_app_25_timer_use
,
569 byte1
, ENC_LITTLE_ENDIAN
, 0);
570 proto_tree_add_bitmask_text(tree
, tvb
, 1, 1, NULL
, NULL
, ett_ipmi_app_25_timer_action
,
571 byte2
, ENC_LITTLE_ENDIAN
, 0);
572 proto_tree_add_item(tree
, hf_ipmi_app_25_pretimeout
, tvb
, 2, 1, ENC_LITTLE_ENDIAN
);
573 proto_tree_add_bitmask_text(tree
, tvb
, 3, 1, "Timer Use Expiration flags: ", "None",
574 ett_ipmi_app_25_expiration_flags
, byte4
, ENC_LITTLE_ENDIAN
, BMT_NO_TFS
);
575 proto_tree_add_item(tree
, hf_ipmi_app_25_initial_countdown
, tvb
, 4, 2, ENC_LITTLE_ENDIAN
);
576 proto_tree_add_item(tree
, hf_ipmi_app_25_present_countdown
, tvb
, 6, 2, ENC_LITTLE_ENDIAN
);
579 /* Set BMC Global Enables.
582 rq2e(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
)
584 static const gint
*byte1
[] = { &hf_ipmi_app_2e_byte1_oem2
, &hf_ipmi_app_2e_byte1_oem1
,
585 &hf_ipmi_app_2e_byte1_oem0
, &hf_ipmi_app_2e_byte1_sel
, &hf_ipmi_app_2e_byte1_emb
,
586 &hf_ipmi_app_2e_byte1_emb_full_intr
, &hf_ipmi_app_2e_byte1_rmq_intr
, NULL
};
588 proto_tree_add_bitmask_text(tree
, tvb
, 0, 1, "Enables: ", "None", ett_ipmi_app_2e_byte1
,
589 byte1
, ENC_LITTLE_ENDIAN
, BMT_NO_TFS
);
592 /* Get BMC Global Enables.
595 rs2f(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
)
597 static const gint
*byte1
[] = { &hf_ipmi_app_2f_byte1_oem2
, &hf_ipmi_app_2f_byte1_oem1
,
598 &hf_ipmi_app_2f_byte1_oem0
, &hf_ipmi_app_2f_byte1_sel
, &hf_ipmi_app_2f_byte1_emb
,
599 &hf_ipmi_app_2f_byte1_emb_full_intr
, &hf_ipmi_app_2f_byte1_rmq_intr
, NULL
};
601 proto_tree_add_bitmask_text(tree
, tvb
, 0, 1, "Enables: ", "None", ett_ipmi_app_2f_byte1
,
602 byte1
, ENC_LITTLE_ENDIAN
, BMT_NO_TFS
);
605 /* Clear Message Flags.
608 rq30(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
)
610 static const gint
*byte1
[] = { &hf_ipmi_app_30_byte1_oem2
, &hf_ipmi_app_30_byte1_oem1
,
611 &hf_ipmi_app_30_byte1_oem0
, &hf_ipmi_app_30_byte1_wd_pretimeout
,
612 &hf_ipmi_app_30_byte1_emb
, &hf_ipmi_app_30_byte1_rmq
, NULL
};
614 proto_tree_add_bitmask_text(tree
, tvb
, 0, 1, "Clear Message Flags: ", "None",
615 ett_ipmi_app_30_byte1
, byte1
, ENC_LITTLE_ENDIAN
, BMT_NO_TFS
);
618 /* Get Message Flags.
621 rs31(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
)
623 static const gint
*byte1
[] = { &hf_ipmi_app_31_byte1_oem2
, &hf_ipmi_app_31_byte1_oem1
,
624 &hf_ipmi_app_31_byte1_oem0
, &hf_ipmi_app_31_byte1_wd_pretimeout
,
625 &hf_ipmi_app_31_byte1_emb
, &hf_ipmi_app_31_byte1_rmq
, NULL
};
627 proto_tree_add_bitmask_text(tree
, tvb
, 0, 1, "Flags: ", "None",
628 ett_ipmi_app_31_byte1
, byte1
, ENC_LITTLE_ENDIAN
, BMT_NO_TFS
);
631 /* Enable Message Channel Receive.
634 rq32(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
)
636 static const gint
*byte1
[] = { &hf_ipmi_app_32_rq_chno
, NULL
};
637 static const gint
*byte2
[] = { &hf_ipmi_app_32_rq_state
, NULL
};
639 proto_tree_add_bitmask_text(tree
, tvb
, 0, 1, NULL
, NULL
, ett_ipmi_app_32_rq_byte1
,
640 byte1
, ENC_LITTLE_ENDIAN
, 0);
641 proto_tree_add_bitmask_text(tree
, tvb
, 1, 1, NULL
, NULL
, ett_ipmi_app_32_rq_byte2
,
642 byte2
, ENC_LITTLE_ENDIAN
, 0);
646 rs32(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
)
648 static const gint
*byte1
[] = { &hf_ipmi_app_32_rs_chno
, NULL
};
649 static const gint
*byte2
[] = { &hf_ipmi_app_32_rs_state
, NULL
};
651 proto_tree_add_bitmask_text(tree
, tvb
, 0, 1, NULL
, NULL
, ett_ipmi_app_32_rs_byte1
,
652 byte1
, ENC_LITTLE_ENDIAN
, 0);
653 proto_tree_add_bitmask_text(tree
, tvb
, 1, 1, NULL
, NULL
, ett_ipmi_app_32_rs_byte2
,
654 byte2
, ENC_LITTLE_ENDIAN
, 0);
659 static const value_string cc33
[] = {
660 { 0x80, "Data not available (queue/buffer empty)" },
667 rq34(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
)
669 static const gint
*byte1
[] = { &hf_ipmi_app_34_track
, &hf_ipmi_app_34_encrypt
,
670 &hf_ipmi_app_34_auth
, &hf_ipmi_app_34_chan
, NULL
};
671 ipmi_dissect_format_t dfmt
;
676 proto_tree_add_bitmask_text(tree
, tvb
, 0, 1, NULL
, NULL
,
677 ett_ipmi_app_34_byte1
, byte1
, ENC_LITTLE_ENDIAN
, 0);
679 next
= tvb_new_subset(tvb
, 1, tvb_length(tvb
) - 1, tvb_length(tvb
) - 1);
680 ti
= proto_tree_add_text(tree
, next
, 0, tvb_length(next
), "Message");
681 s_tree
= proto_item_add_subtree(ti
, ett_ipmi_app_34_msg
);
683 memset(&dfmt
, 0, sizeof(dfmt
));
684 dfmt
.flags
= ipmi_guess_dissect_flags(next
);
685 dfmt
.arg
= ipmi_current_hdr
;
686 dfmt
.getmoreheaders
= ipmi_sendmsg_getheaders
;
687 dfmt
.whichresponse
= ipmi_sendmsg_whichresponse
;
688 dfmt
.otheridx
= ipmi_sendmsg_otheridx
;
689 ipmi_do_dissect(next
, pinfo
, s_tree
, &dfmt
);
690 proto_item_set_text(ti
, "%s", dfmt
.info
);
694 rs34(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
)
696 ipmi_dissect_format_t dfmt
;
700 ti
= proto_tree_add_text(tree
, tvb
, 0, tvb_length(tvb
), "Message");
701 s_tree
= proto_item_add_subtree(ti
, ett_ipmi_app_34_msg
);
703 if (tvb_length(tvb
)) {
704 memset(&dfmt
, 0, sizeof(dfmt
));
705 dfmt
.flags
= ipmi_guess_dissect_flags(tvb
);
706 ipmi_do_dissect(tvb
, pinfo
, s_tree
, &dfmt
);
707 proto_item_set_text(ti
, "%s", dfmt
.info
);
711 static const value_string cc34
[] = {
712 { 0x80, "Invalid Session Handle" },
713 { 0x81, "Lost Arbitration" },
714 { 0x82, "Bus Error" },
715 { 0x83, "NAK on Write" },
719 /* Read Event Message Buffer
721 static const value_string cc35
[] = {
722 { 0x80, "Data not available (queue/buffer empty)" },
726 /* Get Channel Authentication Capabilities
729 rq38(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
)
731 static const gint
*byte1
[] = { &hf_ipmi_app_38_rq_ipmi20
, &hf_ipmi_app_38_rq_chan
, NULL
};
732 static const gint
*byte2
[] = { &hf_ipmi_app_38_rq_priv
, NULL
};
734 proto_tree_add_bitmask_text(tree
, tvb
, 0, 1, NULL
, NULL
, ett_ipmi_app_38_rq_byte1
, byte1
, ENC_LITTLE_ENDIAN
, 0);
735 proto_tree_add_bitmask_text(tree
, tvb
, 1, 1, NULL
, NULL
, ett_ipmi_app_38_rq_byte2
, byte2
, ENC_LITTLE_ENDIAN
, 0);
739 rs38(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
)
741 static const gint
*byte1
[] = { &hf_ipmi_app_38_rs_chan
, NULL
};
742 static const gint
*byte2
[] = { &hf_ipmi_app_38_rs_ipmi20
, &hf_ipmi_app_38_rs_auth_oem
,
743 &hf_ipmi_app_38_rs_auth_straight
, &hf_ipmi_app_38_rs_auth_md5
, &hf_ipmi_app_38_rs_auth_md2
,
744 &hf_ipmi_app_38_rs_auth_none
, NULL
};
745 static const gint
*byte3
[] = { &hf_ipmi_app_38_rs_kg
, &hf_ipmi_app_38_rs_permsg
, &hf_ipmi_app_38_rs_userauth
,
746 &hf_ipmi_app_38_rs_user_nonnull
, &hf_ipmi_app_38_rs_user_null
, &hf_ipmi_app_38_rs_user_anon
, NULL
};
747 static const gint
*byte4
[] = { &hf_ipmi_app_38_rs_ipmi20_conn
, &hf_ipmi_app_38_rs_ipmi15_conn
, NULL
};
749 proto_tree_add_bitmask_text(tree
, tvb
, 0, 1, NULL
, NULL
, ett_ipmi_app_38_rs_byte1
, byte1
, ENC_LITTLE_ENDIAN
, 0);
750 proto_tree_add_bitmask_text(tree
, tvb
, 1, 1, NULL
, NULL
, ett_ipmi_app_38_rs_byte2
, byte2
, ENC_LITTLE_ENDIAN
, BMT_NO_FALSE
);
751 proto_tree_add_bitmask_text(tree
, tvb
, 2, 1, NULL
, NULL
, ett_ipmi_app_38_rs_byte3
, byte3
, ENC_LITTLE_ENDIAN
, BMT_NO_FALSE
);
752 proto_tree_add_bitmask_text(tree
, tvb
, 3, 1, "Supported connections: ", "None",
753 ett_ipmi_app_38_rs_byte4
, byte4
, ENC_LITTLE_ENDIAN
, 0);
754 proto_tree_add_item(tree
, hf_ipmi_app_38_rs_oem_iana
, tvb
, 4, 3, ENC_LITTLE_ENDIAN
);
755 proto_tree_add_item(tree
, hf_ipmi_app_38_rs_oem_aux
, tvb
, 7, 1, ENC_LITTLE_ENDIAN
);
758 /* Get Session Challenge
761 rq39(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
)
763 static const gint
*byte1
[] = { &hf_ipmi_app_39_authtype
, NULL
};
765 proto_tree_add_bitmask_text(tree
, tvb
, 0, 1, NULL
, NULL
,
766 ett_ipmi_app_39_byte1
, byte1
, ENC_LITTLE_ENDIAN
, 0);
767 proto_tree_add_item(tree
, hf_ipmi_app_39_user
, tvb
, 1, 16, ENC_ASCII
|ENC_NA
);
771 rs39(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
)
773 proto_tree_add_item(tree
, hf_ipmi_app_39_temp_session
, tvb
, 0, 4, ENC_LITTLE_ENDIAN
);
774 proto_tree_add_item(tree
, hf_ipmi_app_39_challenge
, tvb
, 4, 16, ENC_NA
);
777 static const value_string cc39
[] = {
778 { 0x81, "Invalid user name" },
779 { 0x82, "Null user name (User 1) not enabled" },
786 rq3a(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
)
788 static const gint
*byte1
[] = { &hf_ipmi_app_3a_authtype
, NULL
};
789 static const gint
*byte2
[] = { &hf_ipmi_app_3a_privlevel
, NULL
};
791 proto_tree_add_bitmask_text(tree
, tvb
, 0, 1, NULL
, NULL
,
792 ett_ipmi_app_3a_rq_byte1
, byte1
, ENC_LITTLE_ENDIAN
, 0);
793 proto_tree_add_bitmask_text(tree
, tvb
, 1, 1, NULL
, NULL
,
794 ett_ipmi_app_3a_rq_byte2
, byte2
, ENC_LITTLE_ENDIAN
, 0);
795 proto_tree_add_item(tree
, hf_ipmi_app_3a_authcode
, tvb
, 2, 16, ENC_NA
);
796 proto_tree_add_item(tree
, hf_ipmi_app_3a_outbound_seq
, tvb
, 18, 4, ENC_LITTLE_ENDIAN
);
800 rs3a(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
)
802 static const gint
*byte1
[] = { &hf_ipmi_app_3a_authtype_session
, NULL
};
803 static const gint
*byte10
[] = { &hf_ipmi_app_3a_maxpriv_session
, NULL
};
805 proto_tree_add_bitmask_text(tree
, tvb
, 0, 1, NULL
, NULL
,
806 ett_ipmi_app_3a_rs_byte1
, byte1
, ENC_LITTLE_ENDIAN
, 0);
807 proto_tree_add_item(tree
, hf_ipmi_app_3a_session_id
, tvb
, 1, 4, ENC_LITTLE_ENDIAN
);
808 proto_tree_add_item(tree
, hf_ipmi_app_3a_inbound_seq
, tvb
, 5, 4, ENC_LITTLE_ENDIAN
);
809 proto_tree_add_bitmask_text(tree
, tvb
, 9, 1, NULL
, NULL
,
810 ett_ipmi_app_3a_rs_byte10
, byte10
, ENC_LITTLE_ENDIAN
, 0);
813 static const value_string cc3a
[] = {
814 { 0x81, "No session slot available" },
815 { 0x82, "No slot available for given user" },
816 { 0x83, "No slot available to support user due to maximum privilege capability" },
817 { 0x84, "Session sequence number out-of-range" },
818 { 0x85, "Invalid session ID in request" },
819 { 0x86, "Requested maximum privilege level exceeds user and/or channel privilege limit" },
823 /* Set Session Privilege Level
826 rq3b(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
)
828 static const gint
*byte1
[] = { &hf_ipmi_app_3b_req_priv
, NULL
};
830 proto_tree_add_bitmask_text(tree
, tvb
, 0, 1, NULL
, NULL
,
831 ett_ipmi_app_3b_rq_byte1
, byte1
, ENC_LITTLE_ENDIAN
, 0);
835 rs3b(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
)
837 static const gint
*byte1
[] = { &hf_ipmi_app_3b_new_priv
, NULL
};
839 proto_tree_add_bitmask_text(tree
, tvb
, 0, 1, NULL
, NULL
,
840 ett_ipmi_app_3b_rs_byte1
, byte1
, ENC_LITTLE_ENDIAN
, 0);
843 static const value_string cc3b
[] = {
844 { 0x80, "Requested level not available for this user" },
845 { 0x81, "Requested level exceeds Channel and/or User Privilege Limit" },
846 { 0x82, "Cannot disable User Level authentication" },
853 rq3c(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
)
855 proto_tree_add_item(tree
, hf_ipmi_app_3c_session_id
, tvb
, 0, 4, ENC_LITTLE_ENDIAN
);
856 if (tvb_length(tvb
) > 4) {
857 proto_tree_add_item(tree
, hf_ipmi_app_3c_session_handle
, tvb
, 4, 1, ENC_LITTLE_ENDIAN
);
861 static const value_string cc3c
[] = {
862 { 0x87, "Invalid Session ID in request" },
863 { 0x88, "Invalid Session Handle in request" },
867 static const value_string cc40
[] = {
868 { 0x82, "Set not supported on selected channel" },
869 { 0x83, "Access mode not supported" },
873 static const value_string cc41
[] = {
874 { 0x82, "Command not supported for selected channel" },
878 static const value_string cc47
[] = {
879 { 0x80, "Password test failed: password data does not match stored value" },
880 { 0x81, "Password test failed: wrong password size was used" },
884 static const value_string cc48
[] = {
885 { 0x80, "Payload already active on another session" },
886 { 0x81, "Payload type is disabled" },
887 { 0x82, "Payload activation limit reached" },
888 { 0x83, "Cannot activate payload with encryption" },
889 { 0x84, "Cannot activate payload without encryption" },
893 static const value_string cc49
[] = {
894 { 0x80, "Payload already deactivated" },
895 { 0x81, "Payload type is disabled" },
899 static const value_string cc4f
[] = {
900 { 0x80, "Payload type not available on given channel" },
904 static const value_string cc50
[] = {
905 { 0x80, "OEM Payload IANA and/or Payload ID not supported" },
909 static const value_string cc52
[] = {
910 { 0x81, "Lost Arbitration" },
911 { 0x82, "Bus Error" },
912 { 0x83, "NAK on Write" },
913 { 0x84, "Truncated Read" },
917 static const value_string cc55
[] = {
918 { 0x80, "Operation not supported for given payload type" },
919 { 0x81, "Operation not allowed under present configuration" },
920 { 0x82, "Encryption not available for session that payload type is active under" },
921 { 0x83, "Payload instance is not presently active" },
925 static const value_string cc56
[] = {
926 { 0x80, "Cannot perform set/confirm, key is locked" },
927 { 0x81, "Insufficient key bytes" },
928 { 0x82, "Too many key bytes" },
929 { 0x83, "Key value does not meet criteria for specified type" },
930 { 0x84, "KR is not used" },
934 static const value_string cc58
[] = {
935 { 0x80, "Parameter not supported" },
936 { 0x81, "Attempt to set the set-in-progress when not in set-complete state" },
937 { 0x82, "Attempt to write read-only parameter" },
941 static const value_string cc59
[] = {
942 { 0x80, "Parameter not supported" },
946 static const value_string cc60
[] = {
947 { 0x80, "Attempt to enable unsupported/unconfigurable command" },
951 static const value_string cc62
[] = {
952 { 0x80, "Attempt to enable unsupported/unconfigurable sub-function" },
956 static ipmi_cmd_t cmd_app
[] = {
957 /* IPM Device Global Commands */
958 { 0x01, NULL
, rs01
, NULL
, NULL
, "Get Device ID", CMD_MAYBROADCAST
},
959 { 0x02, NULL
, NULL
, NULL
, NULL
, "Cold Reset", 0 },
960 { 0x03, NULL
, NULL
, NULL
, NULL
, "Warm Reset", 0 },
961 { 0x04, NULL
, rs04
, NULL
, NULL
, "Get Self Test Results", 0 },
962 { 0x05, rq05
, NULL
, NULL
, NULL
, "Manufacturing Test On", 0 },
963 { 0x06, rq06
, NULL
, NULL
, NULL
, "Set ACPI Power State", 0 },
964 { 0x07, NULL
, rs07
, NULL
, NULL
, "Get ACPI Power State", 0 },
965 { 0x08, NULL
, rs08
, NULL
, NULL
, "Get Device GUID", 0 },
966 { 0x09, IPMI_TBD
, NULL
, NULL
, "Get NetFn Support", 0 },
967 { 0x0a, IPMI_TBD
, NULL
, NULL
, "Get Command Support", 0 },
968 { 0x0b, IPMI_TBD
, NULL
, NULL
, "Get Command Sub-function Support", 0 },
969 { 0x0c, IPMI_TBD
, NULL
, NULL
, "Get Configurable Commands", 0 },
970 { 0x0d, IPMI_TBD
, NULL
, NULL
, "Get Configurable Command Sub-functions", 0 },
972 /* BMC Watchdog Timer Commands */
973 { 0x22, NULL
, NULL
, cc22
, NULL
, "Reset Watchdog Timer", 0 },
974 { 0x24, rq24
, NULL
, NULL
, NULL
, "Set Watchdog Timer", 0 },
975 { 0x25, NULL
, rs25
, NULL
, NULL
, "Get Watchdog Timer", 0 },
977 /* BMC Device and Messaging Commands */
978 { 0x2e, rq2e
, NULL
, NULL
, NULL
, "Set BMC Global Enables", 0 },
979 { 0x2f, NULL
, rs2f
, NULL
, NULL
, "Get BMC Global Enables", 0 },
980 { 0x30, rq30
, NULL
, NULL
, NULL
, "Clear Message Flags", 0 },
981 { 0x31, NULL
, rs31
, NULL
, NULL
, "Get Message Flags", 0 },
982 { 0x32, rq32
, rs32
, NULL
, NULL
, "Enable Message Channel Receive", 0 },
983 { 0x33, IPMI_TBD
, cc33
, NULL
, "Get Message", 0 },
984 { 0x34, rq34
, rs34
, cc34
, NULL
, "Send Message", CMD_CALLRQ
},
985 { 0x35, IPMI_TBD
, cc35
, NULL
, "Read Event Message Buffer", 0 },
986 { 0x36, IPMI_TBD
, NULL
, NULL
, "Get BT Interface Capabilities", 0 },
987 { 0x37, IPMI_TBD
, NULL
, NULL
, "Get System GUID", 0 },
988 { 0x38, rq38
, rs38
, NULL
, NULL
, "Get Channel Authentication Capabilities", 0 },
989 { 0x39, rq39
, rs39
, cc39
, NULL
, "Get Session Challenge", 0 },
990 { 0x3a, rq3a
, rs3a
, cc3a
, NULL
, "Activate Session", 0 },
991 { 0x3b, rq3b
, rs3b
, cc3b
, NULL
, "Set Session Privilege Level", 0 },
992 { 0x3c, rq3c
, NULL
, cc3c
, NULL
, "Close Session", 0 },
993 { 0x3d, IPMI_TBD
, NULL
, NULL
, "Get Session Info", 0 },
994 { 0x3f, IPMI_TBD
, NULL
, NULL
, "Get AuthCode", 0 },
995 { 0x40, IPMI_TBD
, cc40
, NULL
, "Set Channel Access", 0 },
996 { 0x41, IPMI_TBD
, cc41
, NULL
, "Get Channel Access", 0 },
997 { 0x42, IPMI_TBD
, NULL
, NULL
, "Get Channel Info", 0 },
998 { 0x43, IPMI_TBD
, NULL
, NULL
, "Set User Access", 0 },
999 { 0x44, IPMI_TBD
, NULL
, NULL
, "Get User Access", 0 },
1000 { 0x45, IPMI_TBD
, NULL
, NULL
, "Set User Name", 0 },
1001 { 0x46, IPMI_TBD
, NULL
, NULL
, "Get User Name", 0 },
1002 { 0x47, IPMI_TBD
, cc47
, NULL
, "Set User Password", 0 },
1003 { 0x48, IPMI_TBD
, cc48
, NULL
, "Activate Payload", 0 },
1004 { 0x49, IPMI_TBD
, cc49
, NULL
, "Deactivate Payload", 0 },
1005 { 0x4a, IPMI_TBD
, NULL
, NULL
, "Get Payload Activation Status", 0 },
1006 { 0x4b, IPMI_TBD
, NULL
, NULL
, "Get Payload Instance Info", 0 },
1007 { 0x4c, IPMI_TBD
, NULL
, NULL
, "Set User Payload Access", 0 },
1008 { 0x4d, IPMI_TBD
, NULL
, NULL
, "Get User Payload Access", 0 },
1009 { 0x4e, IPMI_TBD
, NULL
, NULL
, "Get Channel Payload Support", 0 },
1010 { 0x4f, IPMI_TBD
, cc4f
, NULL
, "Get Channel Payload Version", 0 },
1011 { 0x50, IPMI_TBD
, cc50
, NULL
, "Get Channel OEM Payload Info", 0 },
1012 { 0x52, IPMI_TBD
, cc52
, NULL
, "Master Write-Read", 0 },
1013 { 0x54, IPMI_TBD
, NULL
, NULL
, "Get Channel Cipher Suites", 0 },
1014 { 0x55, IPMI_TBD
, cc55
, NULL
, "Suspend/Resume Payload Encryption", 0 },
1015 { 0x56, IPMI_TBD
, cc56
, NULL
, "Set Channel Security Keys", 0 },
1016 { 0x57, IPMI_TBD
, NULL
, NULL
, "Get System Interface Capabilities", 0 },
1017 { 0x58, IPMI_TBD
, cc58
, NULL
, "Set System Info Parameters", 0 },
1018 { 0x59, IPMI_TBD
, cc59
, NULL
, "Get System Info Parameters", 0 },
1020 /* Device "Global" commands, continued */
1021 { 0x60, IPMI_TBD
, cc60
, NULL
, "Set Command Enables", 0 },
1022 { 0x61, IPMI_TBD
, NULL
, NULL
, "Get Command Enables", 0 },
1023 { 0x62, IPMI_TBD
, cc62
, NULL
, "Set Command Sub-function Enables", 0 },
1024 { 0x63, IPMI_TBD
, NULL
, NULL
, "Get Command Sub-function Enables", 0 },
1025 { 0x64, IPMI_TBD
, NULL
, NULL
, "Get OEM NetFn IANA Support", 0 },
1029 ipmi_register_app(gint proto_ipmi
)
1031 static hf_register_info hf
[] = {
1032 { &hf_ipmi_app_01_dev_id
,
1034 "ipmi.app00.dev.id", FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
1035 { &hf_ipmi_app_01_dev_prov_sdr
,
1036 { "Device provides Device SDRs",
1037 "ipmi.app00.dev.provides_dev_sdr", FT_BOOLEAN
, 8, NULL
, 0x80, NULL
, HFILL
}},
1038 { &hf_ipmi_app_01_dev_rev
,
1039 { "Device Revision (binary encoded)",
1040 "ipmi.app00.dev.rev", FT_UINT8
, BASE_HEX
, NULL
, 0x0f, NULL
, HFILL
}},
1041 { &hf_ipmi_app_01_dev_avail
,
1042 { "Device availability",
1043 "ipmi.app01.dev.avail", FT_BOOLEAN
, 8, TFS(&tfs_01_dev_avail
), 0x80, NULL
, HFILL
}},
1044 { &hf_ipmi_app_01_fw_rev_maj
,
1045 { "Major Firmware Revision (binary encoded)",
1046 "ipmi.app01.fw.major", FT_UINT8
, BASE_HEX
, NULL
, 0x7f, NULL
, HFILL
}},
1047 { &hf_ipmi_app_01_fw_rev_min
,
1048 { "Minor Firmware Revision (BCD encoded)",
1049 "ipmi.app01.fw.minor", FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
1050 { &hf_ipmi_app_01_ipmi_version
,
1052 "ipmi.app01.ipmi.version", FT_UINT8
, BASE_CUSTOM
, ipmi_fmt_version
, 0, NULL
, HFILL
}},
1053 { &hf_ipmi_app_01_ipmi_ads_chassis
,
1055 "ipmi.app01.ads.chassis", FT_BOOLEAN
, 8, NULL
, 0x80, NULL
, HFILL
}},
1056 { &hf_ipmi_app_01_ipmi_ads_bridge
,
1058 "ipmi.app01.ads.bridge", FT_BOOLEAN
, 8, NULL
, 0x40, NULL
, HFILL
}},
1059 { &hf_ipmi_app_01_ipmi_ads_ipmb_ev_gen
,
1060 { "Event Generator",
1061 "ipmi.app01.ads.ipmb_ev_gen", FT_BOOLEAN
, 8, NULL
, 0x20, NULL
, HFILL
}},
1062 { &hf_ipmi_app_01_ipmi_ads_ipmb_ev_recv
,
1064 "ipmi.app01.ads.ipmb_ev_recv", FT_BOOLEAN
, 8, NULL
, 0x10, NULL
, HFILL
}},
1065 { &hf_ipmi_app_01_ipmi_ads_fru
,
1067 "ipmi.app01.ads.fru", FT_BOOLEAN
, 8, NULL
, 0x08, NULL
, HFILL
}},
1068 { &hf_ipmi_app_01_ipmi_ads_sel
,
1070 "ipmi.app01.ads.sel", FT_BOOLEAN
, 8, NULL
, 0x04, NULL
, HFILL
}},
1071 { &hf_ipmi_app_01_ipmi_ads_sdr
,
1073 "ipmi.app01.ads.sdr", FT_BOOLEAN
, 8, NULL
, 0x02, NULL
, HFILL
}},
1074 { &hf_ipmi_app_01_ipmi_ads_sensor
,
1076 "ipmi.app01.ads.sensor", FT_BOOLEAN
, 8, NULL
, 0x01, NULL
, HFILL
}},
1077 { &hf_ipmi_app_01_manufacturer
,
1078 { "Manufacturer ID",
1079 "ipmi.app01.manufacturer", FT_UINT24
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
1080 { &hf_ipmi_app_01_product
,
1082 "ipmi.app01.product", FT_UINT16
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
1083 { &hf_ipmi_app_01_fw_aux
,
1084 { "Auxiliary Firmware Revision Information",
1085 "ipmi.app01.fw.aux", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1087 { &hf_ipmi_app_04_result
,
1088 { "Self test result",
1089 "ipmi.app04.self_test_result", FT_UINT8
, BASE_HEX
, vals_04_result
, 0, NULL
, HFILL
}},
1090 { &hf_ipmi_app_04_fail
,
1091 { "Self-test error bitfield",
1092 "ipmi.app04.fail", FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
1093 { &hf_ipmi_app_04_fail_sel
,
1094 { "Cannot access SEL device",
1095 "ipmi.app04.fail.sel", FT_BOOLEAN
, 8, TFS(&tfs_04_fail_unknown
), 0x80, NULL
, HFILL
}},
1096 { &hf_ipmi_app_04_fail_sdr
,
1097 { "Cannot access SDR Repository",
1098 "ipmi.app04.fail.sdr", FT_BOOLEAN
, 8, TFS(&tfs_04_fail_unknown
), 0x40, NULL
, HFILL
}},
1099 { &hf_ipmi_app_04_fail_bmc_fru
,
1100 { "Cannot access BMC FRU device",
1101 "ipmi.app04.fail.bmc_fru", FT_BOOLEAN
, 8, TFS(&tfs_04_fail_unknown
), 0x20, NULL
, HFILL
}},
1102 { &hf_ipmi_app_04_fail_ipmb_sig
,
1103 { "IPMB signal lines do not respond",
1104 "ipmi.app04.fail.ipmb_sig", FT_BOOLEAN
, 8, TFS(&tfs_04_fail_unknown
), 0x10, NULL
, HFILL
}},
1105 { &hf_ipmi_app_04_fail_sdr_empty
,
1106 { "SDR Repository is empty",
1107 "ipmi.app04.fail.sdr_empty", FT_BOOLEAN
, 8, TFS(&tfs_04_fail_unknown
), 0x08, NULL
, HFILL
}},
1108 { &hf_ipmi_app_04_fail_iua
,
1109 { "Internal Use Area of BMC FRU corrupted",
1110 "ipmi.app04.fail.iua", FT_BOOLEAN
, 8, TFS(&tfs_04_fail_unknown
), 0x04, NULL
, HFILL
}},
1111 { &hf_ipmi_app_04_fail_bb_fw
,
1112 { "Controller update boot block firmware corrupted",
1113 "ipmi.app04.fail.bb_fw", FT_BOOLEAN
, 8, TFS(&tfs_04_fail_unknown
), 0x02, NULL
, HFILL
}},
1114 { &hf_ipmi_app_04_fail_oper_fw
,
1115 { "Controller operational firmware corrupted",
1116 "ipmi.app04.fail.oper_fw", FT_BOOLEAN
, 8, TFS(&tfs_04_fail_unknown
), 0x01, NULL
, HFILL
}},
1118 { &hf_ipmi_app_05_devspec
,
1119 { "Device-specific parameters",
1120 "ipmi.app05.devspec", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1122 { &hf_ipmi_app_06_syspwr_set
,
1123 { "System Power State",
1124 "ipmi.app06.syspwr.set", FT_BOOLEAN
, 8, TFS(&tfs_06_pwr
), 0x80, NULL
, HFILL
}},
1125 { &hf_ipmi_app_06_syspwr_enum
,
1126 { "System Power State enumeration",
1127 "ipmi.app06.syspwr.enum", FT_UINT8
, BASE_HEX
, vals_06_syspwr
, 0x7f, NULL
, HFILL
}},
1128 { &hf_ipmi_app_06_devpwr_set
,
1129 { "Device Power State",
1130 "ipmi.app06.devpwr.set", FT_BOOLEAN
, 8, TFS(&tfs_06_pwr
), 0x80, NULL
, HFILL
}},
1131 { &hf_ipmi_app_06_devpwr_enum
,
1132 { "Device Power State enumeration",
1133 "ipmi.app06.devpwr.enum", FT_UINT8
, BASE_HEX
, vals_06_devpwr
, 0x7f, NULL
, HFILL
}},
1135 { &hf_ipmi_app_07_syspwr_enum
,
1136 { "ACPI System Power State",
1137 "ipmi.app07.syspwr", FT_UINT8
, BASE_HEX
, vals_07_syspwr
, 0x7f, NULL
, HFILL
}},
1138 { &hf_ipmi_app_07_devpwr_enum
,
1139 { "ACPI Device Power State",
1140 "ipmi.app07.devpwr", FT_UINT8
, BASE_HEX
, vals_07_devpwr
, 0x7f, NULL
, HFILL
}},
1142 { &hf_ipmi_app_08_guid
,
1144 "ipmi.app08.guid", FT_GUID
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1146 { &hf_ipmi_app_24_timer_use_dont_log
,
1148 "ipmi.app24.timer_use.dont_log", FT_BOOLEAN
, 8, NULL
, 0x80, NULL
, HFILL
}},
1149 { &hf_ipmi_app_24_timer_use_dont_stop
,
1150 { "Don't stop timer on Set Watchdog command",
1151 "ipmi.app24.timer_use.dont_stop", FT_BOOLEAN
, 8, NULL
, 0x40, NULL
, HFILL
}},
1152 { &hf_ipmi_app_24_timer_use_timer_use
,
1154 "ipmi.app24.timer_use.timer_use", FT_UINT8
, BASE_HEX
, vals_24_timer_use
, 0x07, NULL
, HFILL
}},
1155 { &hf_ipmi_app_24_timer_action_interrupt
,
1156 { "Pre-timeout interrupt",
1157 "ipmi.app24.timer_action.interrupt", FT_UINT8
, BASE_HEX
, vals_24_timer_action_interrupt
, 0x70, NULL
, HFILL
}},
1158 { &hf_ipmi_app_24_timer_action_timeout_action
,
1160 "ipmi.app24.timer_action.timeout", FT_UINT8
, BASE_HEX
, vals_24_timer_action_timeout
, 0x07, NULL
, HFILL
}},
1161 { &hf_ipmi_app_24_pretimeout
,
1162 { "Pre-timeout interval",
1163 "ipmi.app24.pretimeout", FT_UINT8
, BASE_CUSTOM
, ipmi_fmt_1s_1based
, 0, NULL
, HFILL
}},
1164 { &hf_ipmi_app_24_expiration_flags_oem
,
1166 "ipmi.app24.exp_flags.oem", FT_BOOLEAN
, 8, TFS(&tfs_24_exp_flags
), 0x20, NULL
, HFILL
}},
1167 { &hf_ipmi_app_24_expiration_flags_smsos
,
1169 "ipmi.app24.exp_flags.sms_os", FT_BOOLEAN
, 8, TFS(&tfs_24_exp_flags
), 0x10, NULL
, HFILL
}},
1170 { &hf_ipmi_app_24_expiration_flags_osload
,
1172 "ipmi.app24.exp_flags.osload", FT_BOOLEAN
, 8, TFS(&tfs_24_exp_flags
), 0x08, NULL
, HFILL
}},
1173 { &hf_ipmi_app_24_expiration_flags_biospost
,
1175 "ipmi.app24.exp_flags.biospost", FT_BOOLEAN
, 8, TFS(&tfs_24_exp_flags
), 0x04, NULL
, HFILL
}},
1176 { &hf_ipmi_app_24_expiration_flags_biosfrb2
,
1178 "ipmi.app24.exp_flags.biosfrb2", FT_BOOLEAN
, 8, TFS(&tfs_24_exp_flags
), 0x02, NULL
, HFILL
}},
1179 { &hf_ipmi_app_24_initial_countdown
,
1180 { "Initial countdown value (100ms/count)",
1181 "ipmi.app24.initial_countdown", FT_UINT16
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
1183 { &hf_ipmi_app_25_timer_use_dont_log
,
1185 "ipmi.app25.timer_use.dont_log", FT_BOOLEAN
, 8, NULL
, 0x80, NULL
, HFILL
}},
1186 { &hf_ipmi_app_25_timer_use_started
,
1188 "ipmi.app25.timer_use.started", FT_BOOLEAN
, 8, NULL
, 0x40, NULL
, HFILL
}},
1189 { &hf_ipmi_app_25_timer_use_timer_use
,
1191 "ipmi.app25.timer_use.timer_use", FT_UINT8
, BASE_HEX
, vals_24_timer_use
, 0x07, NULL
, HFILL
}},
1192 { &hf_ipmi_app_25_timer_action_interrupt
,
1193 { "Pre-timeout interrupt",
1194 "ipmi.app25.timer_action.interrupt", FT_UINT8
, BASE_HEX
, vals_24_timer_action_interrupt
, 0x70, NULL
, HFILL
}},
1195 { &hf_ipmi_app_25_timer_action_timeout_action
,
1197 "ipmi.app25.timer_action.timeout", FT_UINT8
, BASE_HEX
, vals_24_timer_action_timeout
, 0x07, NULL
, HFILL
}},
1198 { &hf_ipmi_app_25_pretimeout
,
1199 { "Pre-timeout interval",
1200 "ipmi.app25.pretimeout", FT_UINT8
, BASE_CUSTOM
, ipmi_fmt_1s_1based
, 0, NULL
, HFILL
}},
1201 { &hf_ipmi_app_25_expiration_flags_oem
,
1203 "ipmi.app25.exp_flags.oem", FT_BOOLEAN
, 8, TFS(&tfs_24_exp_flags
), 0x20, NULL
, HFILL
}},
1204 { &hf_ipmi_app_25_expiration_flags_smsos
,
1206 "ipmi.app25.exp_flags.sms_os", FT_BOOLEAN
, 8, TFS(&tfs_24_exp_flags
), 0x10, NULL
, HFILL
}},
1207 { &hf_ipmi_app_25_expiration_flags_osload
,
1209 "ipmi.app25.exp_flags.osload", FT_BOOLEAN
, 8, TFS(&tfs_24_exp_flags
), 0x08, NULL
, HFILL
}},
1210 { &hf_ipmi_app_25_expiration_flags_biospost
,
1212 "ipmi.app25.exp_flags.biospost", FT_BOOLEAN
, 8, TFS(&tfs_24_exp_flags
), 0x04, NULL
, HFILL
}},
1213 { &hf_ipmi_app_25_expiration_flags_biosfrb2
,
1215 "ipmi.app25.exp_flags.biosfrb2", FT_BOOLEAN
, 8, TFS(&tfs_24_exp_flags
), 0x02, NULL
, HFILL
}},
1216 { &hf_ipmi_app_25_initial_countdown
,
1217 { "Initial countdown value (100ms/count)",
1218 "ipmi.app25.initial_countdown", FT_UINT16
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
1219 { &hf_ipmi_app_25_present_countdown
,
1220 { "Present countdown value (100ms/count)",
1221 "ipmi.app25.initial_countdown", FT_UINT16
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
1223 { &hf_ipmi_app_2e_byte1_oem2
,
1225 "ipmi.app2e.bmc_global_enables.oem2", FT_BOOLEAN
, 8, TFS(&tfs_2e_enable
), 0x80, NULL
, HFILL
}},
1226 { &hf_ipmi_app_2e_byte1_oem1
,
1228 "ipmi.app2e.bmc_global_enables.oem1", FT_BOOLEAN
, 8, TFS(&tfs_2e_enable
), 0x40, NULL
, HFILL
}},
1229 { &hf_ipmi_app_2e_byte1_oem0
,
1231 "ipmi.app2e.bmc_global_enables.oem0", FT_BOOLEAN
, 8, TFS(&tfs_2e_enable
), 0x20, NULL
, HFILL
}},
1232 { &hf_ipmi_app_2e_byte1_sel
,
1233 { "System Event Logging",
1234 "ipmi.app2e.bmc_global_enables.sel", FT_BOOLEAN
, 8, TFS(&tfs_2e_enable
), 0x08, NULL
, HFILL
}},
1235 { &hf_ipmi_app_2e_byte1_emb
,
1236 { "Event Message Buffer",
1237 "ipmi.app2e.bmc_global_enables.emb", FT_BOOLEAN
, 8, TFS(&tfs_2e_enable
), 0x04, NULL
, HFILL
}},
1238 { &hf_ipmi_app_2e_byte1_emb_full_intr
,
1239 { "Event Message Buffer Full Interrupt",
1240 "ipmi.app2e.bmc_global_enables.emb_full_intr", FT_BOOLEAN
, 8, TFS(&tfs_2e_enable
), 0x02, NULL
, HFILL
}},
1241 { &hf_ipmi_app_2e_byte1_rmq_intr
,
1242 { "Receive Message Queue Interrupt",
1243 "ipmi.app2e.bmc_global_enables.rmq_intr", FT_BOOLEAN
, 8, TFS(&tfs_2e_enable
), 0x01, NULL
, HFILL
}},
1245 { &hf_ipmi_app_2f_byte1_oem2
,
1247 "ipmi.app2f.bmc_global_enables.oem2", FT_BOOLEAN
, 8, TFS(&tfs_2f_enabled
), 0x80, NULL
, HFILL
}},
1248 { &hf_ipmi_app_2f_byte1_oem1
,
1250 "ipmi.app2f.bmc_global_enables.oem1", FT_BOOLEAN
, 8, TFS(&tfs_2f_enabled
), 0x40, NULL
, HFILL
}},
1251 { &hf_ipmi_app_2f_byte1_oem0
,
1253 "ipmi.app2f.bmc_global_enables.oem0", FT_BOOLEAN
, 8, TFS(&tfs_2f_enabled
), 0x20, NULL
, HFILL
}},
1254 { &hf_ipmi_app_2f_byte1_sel
,
1255 { "System Event Logging",
1256 "ipmi.app2f.bmc_global_enables.sel", FT_BOOLEAN
, 8, TFS(&tfs_2f_enabled
), 0x08, NULL
, HFILL
}},
1257 { &hf_ipmi_app_2f_byte1_emb
,
1258 { "Event Message Buffer",
1259 "ipmi.app2f.bmc_global_enables.emb", FT_BOOLEAN
, 8, TFS(&tfs_2f_enabled
), 0x04, NULL
, HFILL
}},
1260 { &hf_ipmi_app_2f_byte1_emb_full_intr
,
1261 { "Event Message Buffer Full Interrupt",
1262 "ipmi.app2f.bmc_global_enables.emb_full_intr", FT_BOOLEAN
, 8, TFS(&tfs_2f_enabled
), 0x02, NULL
, HFILL
}},
1263 { &hf_ipmi_app_2f_byte1_rmq_intr
,
1264 { "Receive Message Queue Interrupt",
1265 "ipmi.app2f.bmc_global_enables.rmq_intr", FT_BOOLEAN
, 8, TFS(&tfs_2f_enabled
), 0x01, NULL
, HFILL
}},
1267 { &hf_ipmi_app_30_byte1_oem2
,
1269 "ipmi.app30.byte1.oem2", FT_BOOLEAN
, 8, TFS(&tfs_30_clear
), 0x80, NULL
, HFILL
}},
1270 { &hf_ipmi_app_30_byte1_oem1
,
1272 "ipmi.app30.byte1.oem1", FT_BOOLEAN
, 8, TFS(&tfs_30_clear
), 0x40, NULL
, HFILL
}},
1273 { &hf_ipmi_app_30_byte1_oem0
,
1275 "ipmi.app30.byte1.oem0", FT_BOOLEAN
, 8, TFS(&tfs_30_clear
), 0x20, NULL
, HFILL
}},
1276 { &hf_ipmi_app_30_byte1_wd_pretimeout
,
1277 { "Watchdog pre-timeout interrupt flag",
1278 "ipmi.app30.byte1.wd_pretimeout", FT_BOOLEAN
, 8, TFS(&tfs_30_clear
), 0x08, NULL
, HFILL
}},
1279 { &hf_ipmi_app_30_byte1_emb
,
1280 { "Event Message Buffer",
1281 "ipmi.app30.byte1.emb", FT_BOOLEAN
, 8, TFS(&tfs_30_clear
), 0x02, NULL
, HFILL
}},
1282 { &hf_ipmi_app_30_byte1_rmq
,
1283 { "Receive Message Queue",
1284 "ipmi.app30.byte1.rmq", FT_BOOLEAN
, 8, TFS(&tfs_30_clear
), 0x01, NULL
, HFILL
}},
1286 { &hf_ipmi_app_31_byte1_oem2
,
1287 { "OEM 2 data available",
1288 "ipmi.app31.byte1.oem2", FT_BOOLEAN
, 8, NULL
, 0x80, NULL
, HFILL
}},
1289 { &hf_ipmi_app_31_byte1_oem1
,
1290 { "OEM 1 data available",
1291 "ipmi.app31.byte1.oem1", FT_BOOLEAN
, 8, NULL
, 0x40, NULL
, HFILL
}},
1292 { &hf_ipmi_app_31_byte1_oem0
,
1293 { "OEM 0 data available",
1294 "ipmi.app31.byte1.oem0", FT_BOOLEAN
, 8, NULL
, 0x20, NULL
, HFILL
}},
1295 { &hf_ipmi_app_31_byte1_wd_pretimeout
,
1296 { "Watchdog pre-timeout interrupt occurred",
1297 "ipmi.app31.byte1.wd_pretimeout", FT_BOOLEAN
, 8, NULL
, 0x08, NULL
, HFILL
}},
1298 { &hf_ipmi_app_31_byte1_emb
,
1299 { "Event Message Buffer Full",
1300 "ipmi.app31.byte1.emb", FT_BOOLEAN
, 8, NULL
, 0x02, NULL
, HFILL
}},
1301 { &hf_ipmi_app_31_byte1_rmq
,
1302 { "Receive Message Available",
1303 "ipmi.app31.byte1.rmq", FT_BOOLEAN
, 8, NULL
, 0x01, NULL
, HFILL
}},
1305 { &hf_ipmi_app_32_rq_chno
,
1307 "ipmi.app32.rq_chno", FT_UINT8
, BASE_CUSTOM
, ipmi_fmt_channel
, 0x0f, NULL
, HFILL
}},
1308 { &hf_ipmi_app_32_rq_state
,
1310 "ipmi.app32.rq_state", FT_UINT8
, BASE_HEX
, vals_32_state
, 0x03, NULL
, HFILL
}},
1311 { &hf_ipmi_app_32_rs_chno
,
1313 "ipmi.app32.rs_chno", FT_UINT8
, BASE_CUSTOM
, ipmi_fmt_channel
, 0x0f, NULL
, HFILL
}},
1314 { &hf_ipmi_app_32_rs_state
,
1316 "ipmi.app32.rs_state", FT_BOOLEAN
, 8, TFS(&tfs_32_state
), 0x01, NULL
, HFILL
}},
1318 { &hf_ipmi_app_34_track
,
1320 "ipmi.app34.track", FT_UINT8
, BASE_HEX
, vals_34_track
, 0xc0, NULL
, HFILL
}},
1321 { &hf_ipmi_app_34_encrypt
,
1322 { "Encryption required",
1323 "ipmi.app34.encrypt", FT_BOOLEAN
, 8, NULL
, 0x20, NULL
, HFILL
}},
1324 { &hf_ipmi_app_34_auth
,
1325 { "Authentication required",
1326 "ipmi.app34.auth", FT_BOOLEAN
, 8, NULL
, 0x10, NULL
, HFILL
}},
1327 { &hf_ipmi_app_34_chan
,
1329 "ipmi.app34.chan", FT_UINT8
, BASE_CUSTOM
, ipmi_fmt_channel
, 0x0f, NULL
, HFILL
}},
1331 { &hf_ipmi_app_38_rq_ipmi20
,
1332 { "Version compatibility",
1333 "ipmi.app38.rq_ipmi20", FT_UINT8
, BASE_DEC
, &vals_38_ipmi20
, 0x80, NULL
, HFILL
}},
1334 { &hf_ipmi_app_38_rq_chan
,
1336 "ipmi.app38.rq_chan", FT_UINT8
, BASE_CUSTOM
, ipmi_fmt_channel
, 0x0f, NULL
, HFILL
}},
1337 { &hf_ipmi_app_38_rq_priv
,
1338 { "Requested privilege level",
1339 "ipmi.app38.rq_priv", FT_UINT8
, BASE_HEX
, vals_XX_priv
, 0x0f, NULL
, HFILL
}},
1340 { &hf_ipmi_app_38_rs_chan
,
1342 "ipmi.app38.rs_chan", FT_UINT8
, BASE_CUSTOM
, ipmi_fmt_channel
, 0x0f, NULL
, HFILL
}},
1343 { &hf_ipmi_app_38_rs_ipmi20
,
1344 { "Version compatibility",
1345 "ipmi.app38.rs_ipmi20", FT_UINT8
, BASE_DEC
, vals_38_ipmi20
, 0x80, NULL
, HFILL
}},
1346 { &hf_ipmi_app_38_rs_auth_oem
,
1347 { "OEM Proprietary authentication",
1348 "ipmi.app38.rs_auth_oem", FT_BOOLEAN
, 8, TFS(&tfs_38_supp
), 0x20, NULL
, HFILL
}},
1349 { &hf_ipmi_app_38_rs_auth_straight
,
1350 { "Straight password/key",
1351 "ipmi.app38.rs_auth_straight", FT_BOOLEAN
, 8, TFS(&tfs_38_supp
), 0x10, NULL
, HFILL
}},
1352 { &hf_ipmi_app_38_rs_auth_md5
,
1354 "ipmi.app38.rs_auth_md5", FT_BOOLEAN
, 8, TFS(&tfs_38_supp
), 0x04, NULL
, HFILL
}},
1355 { &hf_ipmi_app_38_rs_auth_md2
,
1357 "ipmi.app38.rs_auth_md2", FT_BOOLEAN
, 8, TFS(&tfs_38_supp
), 0x02, NULL
, HFILL
}},
1358 { &hf_ipmi_app_38_rs_auth_none
,
1360 "ipmi.app38.rs_auth_none", FT_BOOLEAN
, 8, TFS(&tfs_38_supp
), 0x01, NULL
, HFILL
}},
1361 { &hf_ipmi_app_38_rs_kg
,
1363 "ipmi.app38.rs_kg_status", FT_BOOLEAN
, 8, TFS(&tfs_38_kg
), 0x20, NULL
, HFILL
}},
1364 { &hf_ipmi_app_38_rs_permsg
,
1365 { "Per-message Authentication disabled",
1366 "ipmi.app38.rs_permsg", FT_BOOLEAN
, 8, NULL
, 0x10, NULL
, HFILL
}},
1367 { &hf_ipmi_app_38_rs_userauth
,
1368 { "User-level Authentication disabled",
1369 "ipmi.app38.rs_userauth", FT_BOOLEAN
, 8, NULL
, 0x08, NULL
, HFILL
}},
1370 { &hf_ipmi_app_38_rs_user_nonnull
,
1371 { "Non-null usernames enabled",
1372 "ipmi.app38.rs_user_nonnull", FT_BOOLEAN
, 8, NULL
, 0x04, NULL
, HFILL
}},
1373 { &hf_ipmi_app_38_rs_user_null
,
1374 { "Null usernames enabled",
1375 "ipmi.app38.rs_user_null", FT_BOOLEAN
, 8, NULL
, 0x02, NULL
, HFILL
}},
1376 { &hf_ipmi_app_38_rs_user_anon
,
1377 { "Anonymous login enabled",
1378 "ipmi.app38.rs_user_anon", FT_BOOLEAN
, 8, NULL
, 0x01, NULL
, HFILL
}},
1379 { &hf_ipmi_app_38_rs_ipmi20_conn
,
1381 "ipmi.app38.rs_ipmi20_conn", FT_BOOLEAN
, 8, NULL
, 0x02, NULL
, HFILL
}},
1382 { &hf_ipmi_app_38_rs_ipmi15_conn
,
1384 "ipmi.app38.rs_ipmi15_conn", FT_BOOLEAN
, 8, NULL
, 0x01, NULL
, HFILL
}},
1385 { &hf_ipmi_app_38_rs_oem_iana
,
1387 "ipmi.app38.rs_oem_iana", FT_UINT24
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
1388 { &hf_ipmi_app_38_rs_oem_aux
,
1389 { "OEM Auxiliary data",
1390 "ipmi.app38.rs_oem_aux", FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
1392 { &hf_ipmi_app_39_authtype
,
1393 { "Authentication Type",
1394 "ipmi.app39.authtype", FT_UINT8
, BASE_HEX
, vals_XX_auth
, 0x0f, NULL
, HFILL
}},
1395 { &hf_ipmi_app_39_user
,
1397 "ipmi.app39.user", FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1398 { &hf_ipmi_app_39_temp_session
,
1399 { "Temporary Session ID",
1400 "ipmi.app39.temp_session", FT_UINT32
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
1401 { &hf_ipmi_app_39_challenge
,
1403 "ipmi.app39.challenge", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1405 { &hf_ipmi_app_3a_authtype
,
1406 { "Authentication Type",
1407 "ipmi.app3a.authtype", FT_UINT8
, BASE_HEX
, vals_XX_auth
, 0x0f, NULL
, HFILL
}},
1408 { &hf_ipmi_app_3a_privlevel
,
1409 { "Requested Maximum Privilege Level",
1410 "ipmi.app3a.privlevel", FT_UINT8
, BASE_HEX
, vals_XX_priv
, 0x0f, NULL
, HFILL
}},
1411 { &hf_ipmi_app_3a_authcode
,
1412 { "Challenge string/Auth Code",
1413 "ipmi.app3a.authcode", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1414 { &hf_ipmi_app_3a_outbound_seq
,
1415 { "Initial Outbound Sequence Number",
1416 "ipmi.app3a.outbound_seq", FT_UINT32
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
1417 { &hf_ipmi_app_3a_authtype_session
,
1418 { "Authentication Type for session",
1419 "ipmi.app3a.authtype_session", FT_UINT8
, BASE_HEX
, vals_XX_auth
, 0x0f, NULL
, HFILL
}},
1420 { &hf_ipmi_app_3a_session_id
,
1422 "ipmi.app3a.session_id", FT_UINT32
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
1423 { &hf_ipmi_app_3a_inbound_seq
,
1424 { "Initial Inbound Sequence Number",
1425 "ipmi.app3a.inbound_seq", FT_UINT32
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
1426 { &hf_ipmi_app_3a_maxpriv_session
,
1427 { "Maximum Privilege Level for session",
1428 "ipmi.app3a.maxpriv_session", FT_UINT8
, BASE_HEX
, vals_XX_priv
, 0x0f, NULL
, HFILL
}},
1430 { &hf_ipmi_app_3b_req_priv
,
1431 { "Requested Privilege Level",
1432 "ipmi.app3b.req_priv", FT_UINT8
, BASE_HEX
, vals_XX_priv
, 0x0f, NULL
, HFILL
}},
1433 { &hf_ipmi_app_3b_new_priv
,
1434 { "New Privilege Level",
1435 "ipmi.app3b.new_priv", FT_UINT8
, BASE_HEX
, vals_XX_priv
, 0x0f, NULL
, HFILL
}},
1437 { &hf_ipmi_app_3c_session_id
,
1439 "ipmi.app3c.session_id", FT_UINT32
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
1440 { &hf_ipmi_app_3c_session_handle
,
1442 "ipmi.app3c.session_handle", FT_UINT8
, BASE_HEX
, NULL
, 0, NULL
, HFILL
}},
1444 static gint
*ett
[] = {
1445 &ett_ipmi_app_01_byte2
,
1446 &ett_ipmi_app_01_byte3
,
1447 &ett_ipmi_app_01_byte6
,
1448 &ett_ipmi_app_04_byte2
,
1449 &ett_ipmi_app_06_syspwr
,
1450 &ett_ipmi_app_06_devpwr
,
1451 &ett_ipmi_app_07_syspwr
,
1452 &ett_ipmi_app_07_devpwr
,
1453 &ett_ipmi_app_24_timer_use
,
1454 &ett_ipmi_app_24_timer_action
,
1455 &ett_ipmi_app_24_expiration_flags
,
1456 &ett_ipmi_app_25_timer_use
,
1457 &ett_ipmi_app_25_timer_action
,
1458 &ett_ipmi_app_25_expiration_flags
,
1459 &ett_ipmi_app_2e_byte1
,
1460 &ett_ipmi_app_2f_byte1
,
1461 &ett_ipmi_app_30_byte1
,
1462 &ett_ipmi_app_31_byte1
,
1463 &ett_ipmi_app_32_rq_byte1
,
1464 &ett_ipmi_app_32_rq_byte2
,
1465 &ett_ipmi_app_32_rs_byte1
,
1466 &ett_ipmi_app_32_rs_byte2
,
1467 &ett_ipmi_app_34_byte1
,
1468 &ett_ipmi_app_34_msg
,
1469 &ett_ipmi_app_38_rq_byte1
,
1470 &ett_ipmi_app_38_rq_byte2
,
1471 &ett_ipmi_app_38_rs_byte1
,
1472 &ett_ipmi_app_38_rs_byte2
,
1473 &ett_ipmi_app_38_rs_byte3
,
1474 &ett_ipmi_app_38_rs_byte4
,
1475 &ett_ipmi_app_39_byte1
,
1476 &ett_ipmi_app_3a_rq_byte1
,
1477 &ett_ipmi_app_3a_rq_byte2
,
1478 &ett_ipmi_app_3a_rs_byte1
,
1479 &ett_ipmi_app_3a_rs_byte10
,
1480 &ett_ipmi_app_3b_rq_byte1
,
1481 &ett_ipmi_app_3b_rs_byte1
,
1484 proto_register_field_array(proto_ipmi
, hf
, array_length(hf
));
1485 proto_register_subtree_array(ett
, array_length(ett
));
1486 ipmi_register_netfn_cmdtab(IPMI_APP_REQ
, IPMI_OEM_NONE
, NULL
, 0, NULL
,
1487 cmd_app
, array_length(cmd_app
));