void ipmi_register_pps(gint proto_ipmi _U_) { static guint8 sig_pps[3] = { 0x0a, 0x40, 0x00 }; static guint8 sig_pps_rev[3] = { 0x00, 0x40, 0x0a }; ipmi_register_netfn_cmdtab(IPMI_OEM_REQ, IPMI_OEM_NONE, sig_pps, 3, "Pigeon Point Systems", cmd_pps, array_length(cmd_pps)); ipmi_register_netfn_cmdtab(IPMI_OEM_REQ, IPMI_OEM_NONE, sig_pps_rev, 3, "Pigeon Point Systems (reversed)", cmd_pps, array_length(cmd_pps)); }
void ipmi_register_update(gint proto_ipmi _U_) { ipmi_register_netfn_cmdtab(IPMI_UPDATE_REQ, IPMI_OEM_PPS, NULL, 0, NULL, cmd_update, array_length(cmd_update)); }
void ipmi_register_bridge(gint proto_ipmi _U_) { ipmi_register_netfn_cmdtab(IPMI_BRIDGE_REQ, IPMI_OEM_NONE, NULL, 0, NULL, cmd_bridge, array_length(cmd_bridge)); }
void ipmi_register_chassis(gint proto_ipmi) { static hf_register_info hf[] = { { &hf_ipmi_chs_bo00_sip, { "Set In Progress", "ipmi.bootopt00.sip", FT_UINT8, BASE_HEX, bo00_sip_vals, 0x03, NULL, HFILL }}, { &hf_ipmi_chs_bo01_spsel, { "Service Partition Selector", "ipmi.bootopt01.spsel", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_ipmi_chs_bo02_request, { "Request BIOS to scan for specified service partition", "ipmi.bootopt02.spscan.request", FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL }}, { &hf_ipmi_chs_bo02_discovered, { "Service Partition discovered", "ipmi.bootopt02.spscan.discovered", FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }}, { &hf_ipmi_chs_bo03_pef, { "Reset/power cycle caused by PEF", "ipmi.bootopt03.bmcboot.pef", FT_BOOLEAN, 8, TFS(&bo03_dontclear_tfs), 0x10, NULL, HFILL }}, { &hf_ipmi_chs_bo03_cctrl_timeout, { "Chassis Control command not received within 60s timeout", "ipmi.bootopt03.bmcboot.cctrl_timeout", FT_BOOLEAN, 8, TFS(&bo03_dontclear_tfs), 0x08, NULL, HFILL }}, { &hf_ipmi_chs_bo03_wd_timeout, { "Reset/power cycle caused by watchdog timeout", "ipmi.bootopt03.bmcboot.wd_timeout", FT_BOOLEAN, 8, TFS(&bo03_dontclear_tfs), 0x04, NULL, HFILL }}, { &hf_ipmi_chs_bo03_softreset, { "Pushbutton reset / soft reset", "ipmi.bootopt03.bmcboot.softreset", FT_BOOLEAN, 8, TFS(&bo03_dontclear_tfs), 0x02, NULL, HFILL }}, { &hf_ipmi_chs_bo03_powerup, { "Power up via pushbutton or wake event", "ipmi.bootopt03.bmcboot.powerup", FT_BOOLEAN, 8, TFS(&bo03_dontclear_tfs), 0x01, NULL, HFILL }}, { &hf_ipmi_chs_bo04_write_mask, { "Write mask", "ipmi.bootopt04.write_mask", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_ipmi_chs_bo04_bootinit_ack_oem, { "OEM", "ipmi.bootopt04.bootinit_ack.oem", FT_BOOLEAN, 8, TFS(&bo04_bootinit_ack_tfs), 0x10, NULL, HFILL }}, { &hf_ipmi_chs_bo04_bootinit_ack_sms, { "SMS", "ipmi.bootopt04.bootinit_ack.sms", FT_BOOLEAN, 8, TFS(&bo04_bootinit_ack_tfs), 0x08, NULL, HFILL }}, { &hf_ipmi_chs_bo04_bootinit_ack_os, { "OS / Service Partition", "ipmi.bootopt04.bootinit_ack.os", FT_BOOLEAN, 8, TFS(&bo04_bootinit_ack_tfs), 0x04, NULL, HFILL }}, { &hf_ipmi_chs_bo04_bootinit_ack_osloader, { "OS Loader", "ipmi.bootopt04.bootinit_ack.osloader", FT_BOOLEAN, 8, TFS(&bo04_bootinit_ack_tfs), 0x02, NULL, HFILL }}, { &hf_ipmi_chs_bo04_bootinit_ack_bios, { "BIOS/POST", "ipmi.bootopt04.bootinit_ack.bios", FT_BOOLEAN, 8, TFS(&bo04_bootinit_ack_tfs), 0x01, NULL, HFILL }}, { &hf_ipmi_chs_bo05_bootflags_valid, { "Boot flags valid", "ipmi.bootopt05.boot_flags_valid", FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }}, { &hf_ipmi_chs_bo05_permanent, { "Permanency", "ipmi.bootopt05.permanent", FT_BOOLEAN, 8, TFS(&bo05_permanent_tfs), 0x40, NULL, HFILL }}, { &hf_ipmi_chs_bo05_boottype, { "Boot type", "ipmi.bootopt05.boottype", FT_BOOLEAN, 8, TFS(&bo05_boottype_tfs), 0x20, NULL, HFILL }}, { &hf_ipmi_chs_bo05_cmos_clear, { "CMOS Clear", "ipmi.bootopt05.cmos_clear", FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }}, { &hf_ipmi_chs_bo05_lock_kbd, { "Lock Keyboard", "ipmi.bootopt05.lock_kbd", FT_BOOLEAN, 8, NULL, 0x40, NULL, HFILL }}, { &hf_ipmi_chs_bo05_bootdev, { "Boot Device Selector", "ipmi.bootopt05.bootdev", FT_UINT8, BASE_HEX, bo05_bootdev_vals, 0x3c, NULL, HFILL }}, { &hf_ipmi_chs_bo05_screen_blank, { "Screen Blank", "ipmi.bootopt05.screen_blank", FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL }}, { &hf_ipmi_chs_bo05_lockout_reset, { "Lock out Reset buttons", "ipmi.bootopt05.lockout_reset", FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }}, { &hf_ipmi_chs_bo05_lockout_poweroff, { "Lock out (power off / sleep request) via Power Button", "ipmi.bootopt05.lockout_poweroff", FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }}, { &hf_ipmi_chs_bo05_bios_verbosity, { "BIOS verbosity", "ipmi.bootopt05.bios_verbosity", FT_UINT8, BASE_HEX, bo05_bios_verbosity_vals, 0x60, NULL, HFILL }}, { &hf_ipmi_chs_bo05_progress_traps, { "Force Progress Event Traps", "ipmi.bootopt05.progress_traps", FT_BOOLEAN, 8, NULL, 0x10, NULL, HFILL }}, { &hf_ipmi_chs_bo05_pwd_bypass, { "User password bypass", "ipmi.bootopt05.pwd_bypass", FT_BOOLEAN, 8, NULL, 0x08, NULL, HFILL }}, { &hf_ipmi_chs_bo05_lock_sleep, { "Lock Out Sleep Button", "ipmi.bootopt05.lock_sleep", FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL }}, { &hf_ipmi_chs_bo05_console_redirection, { "Console redirection", "ipmi.bootopt05.console_redirection", FT_UINT8, BASE_HEX, bo05_console_redir_vals, 0x03, NULL, HFILL }}, { &hf_ipmi_chs_bo05_bios_shared_override, { "BIOS Shared Mode Override", "ipmi.bootopt05.bios_shared_override", FT_BOOLEAN, 8, TFS(&bo05_bios_shared_tfs), 0x08, NULL, HFILL }}, { &hf_ipmi_chs_bo05_bios_muxctl_override, { "BIOS Mux Control Override", "ipmi.bootopt05.bios_muxctl_override", FT_UINT8, BASE_HEX, bo05_bios_muxctl_vals, 0x07, NULL, HFILL }}, { &hf_ipmi_chs_bo05_byte5, { "Data 5 (reserved)", "ipmi.bootopt05.byte5", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_ipmi_chs_bo06_chan_num, { "Channel", "ipmi.bootopt06.chan_num", FT_UINT8, BASE_CUSTOM, ipmi_fmt_channel, 0x0f, NULL, HFILL }}, { &hf_ipmi_chs_bo06_session_id, { "Session ID", "ipmi.bootopt06.session_id", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_ipmi_chs_bo06_bootinfo_timestamp, { "Boot Info Timestamp", "impi.bootopt06.bootinfo_timestamp", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_ipmi_chs_bo07_block_selector, { "Block selector", "ipmi.bootopt07.block_selector", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_ipmi_chs_bo07_block_data, { "Block data", "ipmi.bootopt07.block_data", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_ipmi_chs_00_capflags_ppi, { "Power interlock", "ipmi.ch00.cap.power_interlock", FT_BOOLEAN, 8, TFS(&tfs_00_provided), 0x08, NULL, HFILL }}, { &hf_ipmi_chs_00_capflags_di, { "Diagnostic Interrupt", "ipmi.ch00.cap.diag_int", FT_BOOLEAN, 8, TFS(&tfs_00_provided), 0x04, NULL, HFILL }}, { &hf_ipmi_chs_00_capflags_fpl, { "Front Panel Lockout", "ipmi.ch00.cap.fpl", FT_BOOLEAN, 8, TFS(&tfs_00_provided), 0x02, NULL, HFILL }}, { &hf_ipmi_chs_00_capflags_is, { "Intrusion sensor", "ipmi.ch00.cap.intrusion", FT_BOOLEAN, 8, TFS(&tfs_00_provided), 0x01, NULL, HFILL }}, { &hf_ipmi_chs_00_fru_dev_addr, { "Chassis FRU Info Device Address", "ipmi.ch00.fru_info", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_ipmi_chs_00_sdr_dev_addr, { "Chassis SDR Device Address", "ipmi.ch00.sdr", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_ipmi_chs_00_sel_dev_addr, { "Chassis SEL Device Address", "ipmi.ch00.sel", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_ipmi_chs_00_sm_dev_addr, { "Chassis System Management Device Address", "ipmi.ch00.sm", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_ipmi_chs_00_bridge_dev_addr, { "Chassis Bridge Device Address", "ipmi.ch00.bridge", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_ipmi_chs_01_pwr_state_policy, { "Power Restore Policy", "ipmi.ch01.cur_pwr.policy", FT_UINT8, BASE_HEX, vals_01_pwr_policy, 0x60, NULL, HFILL }}, { &hf_ipmi_chs_01_pwr_state_ctl_fault, { "Power Control Fault", "ipmi.ch01.cur_pwr.ctl_fault", FT_BOOLEAN, 8, NULL, 0x10, NULL, HFILL }}, { &hf_ipmi_chs_01_pwr_state_fault, { "Power Fault", "ipmi.ch01.cur_pwr.fault", FT_BOOLEAN, 8, NULL, 0x08, NULL, HFILL }}, { &hf_ipmi_chs_01_pwr_state_ilock, { "Interlock", "ipmi.ch01.cur_pwr.interlock", FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL }}, { &hf_ipmi_chs_01_pwr_state_overload, { "Overload", "ipmi.ch01.cur_pwr.overload", FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL }}, { &hf_ipmi_chs_01_pwr_state_powered, { "Power is on", "ipmi.ch01.cur_pwr.powered", FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }}, { &hf_ipmi_chs_01_last_event_via_ipmi, { "Last `Power is on' state was entered via IPMI command", "ipmi.ch01.last.on_via_ipmi", FT_BOOLEAN, 8, NULL, 0x10, NULL, HFILL }}, { &hf_ipmi_chs_01_last_event_down_by_fault, { "Last power down caused by power fault", "ipmi.ch01.last.down_by_fault", FT_BOOLEAN, 8, NULL, 0x08, NULL, HFILL }}, { &hf_ipmi_chs_01_last_event_interlock, { "Last power down caused by a power interlock being activated", "ipmi.ch01.last.interlock", FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL }}, { &hf_ipmi_chs_01_last_event_overload, { "Last power down caused by a power overload", "ipmi.ch01.last.overload", FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL }}, { &hf_ipmi_chs_01_last_event_ac_failed, { "AC failed", "ipmi.ch01.last.ac_failed", FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }}, { &hf_ipmi_chs_01_misc_identsupp, { "Chassis Identify command and state info supported", "ipmi.ch01.identsupp", FT_BOOLEAN, 8, NULL, 0x40, NULL, HFILL }}, { &hf_ipmi_chs_01_misc_identstate, { "Chassis Identify state (if supported)", "ipmi.ch01.identstate", FT_UINT8, BASE_HEX, vals_01_identstate, 0x30, NULL, HFILL }}, { &hf_ipmi_chs_01_misc_fan, { "Cooling/fan fault detected", "ipmi.ch01.misc.fan", FT_BOOLEAN, 8, NULL, 0x08, NULL, HFILL }}, { &hf_ipmi_chs_01_misc_drive, { "Drive Fault", "ipmi.ch01.misc.drive", FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL }}, { &hf_ipmi_chs_01_misc_fpl_active, { "Front Panel Lockout active", "ipmi.ch01.misc.fpl_active", FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL }}, { &hf_ipmi_chs_01_misc_intrusion, { "Chassis intrusion active", "ipmi.ch01.misc.intrusion", FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }}, { &hf_ipmi_chs_01_fpb_standby_allowed, { "Standby disable allowed", "ipmi.ch01.fpb.standby_allowed", FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }}, { &hf_ipmi_chs_01_fpb_diagintr_allowed, { "Diagnostic interrupt disable allowed", "ipmi.ch01.fpb.diagintr_allowed", FT_BOOLEAN, 8, NULL, 0x40, NULL, HFILL }}, { &hf_ipmi_chs_01_fpb_reset_allowed, { "Reset disable allowed", "ipmi.ch01.fpb.reset_allowed", FT_BOOLEAN, 8, NULL, 0x20, NULL, HFILL }}, { &hf_ipmi_chs_01_fpb_poweroff_allowed, { "Poweroff disable allowed", "ipmi.ch01.fpb.poweroff_allowed", FT_BOOLEAN, 8, NULL, 0x10, NULL, HFILL }}, { &hf_ipmi_chs_01_fpb_standby_disabled, { "Standby disabled", "ipmi.ch01.fpb.standby_disabled", FT_BOOLEAN, 8, NULL, 0x08, NULL, HFILL }}, { &hf_ipmi_chs_01_fpb_diagintr_disabled, { "Diagnostic interrupt disabled", "ipmi.ch01.fpb.diagintr_disabled", FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL }}, { &hf_ipmi_chs_01_fpb_reset_disabled, { "Reset disabled", "ipmi.ch01.fpb.reset_disabled", FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL }}, { &hf_ipmi_chs_01_fpb_poweroff_disabled, { "Poweroff disabled", "ipmi.ch01.fpb.poweroff_disabled", FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }}, { &hf_ipmi_chs_02_cctrl, { "Chassis Control", "ipmi.ch02.chassis_control", FT_UINT8, BASE_HEX, vals_02_cctrl, 0x0f, NULL, HFILL }}, { &hf_ipmi_chs_04_ival, { "Identify Interval in seconds", "ipmi.ch04.interval", FT_UINT8, BASE_CUSTOM, ipmi_fmt_1s_1based, 0, NULL, HFILL }}, { &hf_ipmi_chs_04_perm_on, { "Turn on Identify indefinitely", "ipmi.ch04.perm_on", FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }}, { &hf_ipmi_chs_05_flags_fpl, { "Provides Front Panel Lockout", "ipmi.ch05.flags.fpl", FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL }}, { &hf_ipmi_chs_05_flags_intrusion, { "Provides intrusion sensor", "ipmi.ch05.flags.intrusion", FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }}, { &hf_ipmi_chs_05_fru_dev_addr, { "Chassis FRU Info Device Address", "ipmi.ch05.fru_info", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_ipmi_chs_05_sdr_dev_addr, { "Chassis SDR Device Address", "ipmi.ch05.sdr", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_ipmi_chs_05_sel_dev_addr, { "Chassis SEL Device Address", "ipmi.ch05.sel", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_ipmi_chs_05_sm_dev_addr, { "Chassis System Management Device Address", "ipmi.ch05.sm", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_ipmi_chs_05_bridge_dev_addr, { "Chassis Bridge Device Address", "ipmi.ch05.bridge", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_ipmi_chs_06_rq_policy, { "Power Restore Policy", "ipmi.ch06.rq_policy", FT_UINT8, BASE_HEX, vals_06_policy, 0x07, NULL, HFILL }}, { &hf_ipmi_chs_06_rs_policy_support_powerup, { "Always powering up", "ipmi.ch06.rs_support.powerup", FT_BOOLEAN, 8, TFS(&tfs_06_supported), 0x04, NULL, HFILL }}, { &hf_ipmi_chs_06_rs_policy_support_restore, { "Restoring previous state", "ipmi.ch06.rs_support.restore", FT_BOOLEAN, 8, TFS(&tfs_06_supported), 0x02, NULL, HFILL }}, { &hf_ipmi_chs_06_rs_policy_support_poweroff, { "Staying powered off", "ipmi.ch06.rs_support.poweroff", FT_BOOLEAN, 8, TFS(&tfs_06_supported), 0x01, NULL, HFILL }}, { &hf_ipmi_chs_07_cause, { "Restart Cause", "ipmi.ch07.cause", FT_UINT8, BASE_HEX, vals_07_cause, 0x0f, NULL, HFILL }}, { &hf_ipmi_chs_07_chan, { "Channel", "ipmi.ch07.chan", FT_UINT8, BASE_CUSTOM, ipmi_fmt_channel, 0, NULL, HFILL }}, { &hf_ipmi_chs_08_valid, { "Validity", "ipmi.ch08.valid", FT_BOOLEAN, 8, TFS(&tfs_08_valid), 0x80, NULL, HFILL }}, { &hf_ipmi_chs_08_selector, { "Boot option parameter selector", "ipmi.ch08.selector", FT_UINT8, BASE_HEX, NULL, 0x7f, NULL, HFILL }}, { &hf_ipmi_chs_08_data, { "Boot option parameter data", "ipmi.ch08.data", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_ipmi_chs_09_rq_param_select, { "Parameter selector", "ipmi.ch09.rq_param_select", FT_UINT8, BASE_HEX, NULL, 0x7f, NULL, HFILL }}, { &hf_ipmi_chs_09_rq_set_select, { "Set Selector", "ipmi.ch09.rq_set_select", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_ipmi_chs_09_rq_block_select, { "Block Selector", "ipmi.ch09.rq_block_select", FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_ipmi_chs_09_rs_param_version, { "Parameter Version", "ipmi.ch09.rs_param_version", FT_UINT8, BASE_HEX, NULL, 0x0f, NULL, HFILL }}, { &hf_ipmi_chs_09_rs_valid, { "Parameter Valid", "ipmi.ch09.rs_valid", FT_BOOLEAN, 8, TFS(&tfs_09_valid), 0x80, NULL, HFILL }}, { &hf_ipmi_chs_09_rs_param_select, { "Parameter Selector", "ipmi.ch09.rs_param_select", FT_UINT8, BASE_HEX, NULL, 0x7f, NULL, HFILL }}, { &hf_ipmi_chs_09_rs_param_data, { "Configuration parameter data", "ipmi.ch09.rs_param_data", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_ipmi_chs_0f_minpercnt, { "Minutes per count", "ipmi.ch0f.minpercnt", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_ipmi_chs_0f_counter, { "Counter reading", "ipmi.ch0f.counter", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, }; static gint *ett[] = { &ett_ipmi_chs_bo00_byte1, &ett_ipmi_chs_bo02_byte1, &ett_ipmi_chs_bo03_byte1, &ett_ipmi_chs_bo04_byte2, &ett_ipmi_chs_bo05_byte1, &ett_ipmi_chs_bo05_byte2, &ett_ipmi_chs_bo05_byte3, &ett_ipmi_chs_bo05_byte4, &ett_ipmi_chs_bo06_byte1, &ett_ipmi_chs_00_capflags, &ett_ipmi_chs_01_pwr_state, &ett_ipmi_chs_01_last_event, &ett_ipmi_chs_01_misc, &ett_ipmi_chs_01_fpb, &ett_ipmi_chs_02_byte1, &ett_ipmi_chs_04_byte2, &ett_ipmi_chs_05_flags, &ett_ipmi_chs_06_byte1, &ett_ipmi_chs_06_policy_support, &ett_ipmi_chs_07_byte1, &ett_ipmi_chs_08_byte1, &ett_ipmi_chs_09_rq_byte1, &ett_ipmi_chs_09_rs_byte1, &ett_ipmi_chs_09_rs_byte2, }; proto_register_field_array(proto_ipmi, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); ipmi_register_netfn_cmdtab(IPMI_CHASSIS_REQ, IPMI_OEM_NONE, NULL, 0, NULL, cmd_chassis, array_length(cmd_chassis)); }
void ipmi_register_storage(gint proto_ipmi) { static hf_register_info hf[] = { { &hf_ipmi_stor_10_fruid, { "FRU ID", "ipmi.st10.fruid", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_10_size, { "FRU Inventory area size", "ipmi.st10.size", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_10_access, { "Device is accessed", "ipmi.st10.access", FT_BOOLEAN, 8, TFS(&tfs_10_access), 0x01, NULL, HFILL } }, { &hf_ipmi_stor_11_fruid, { "FRU ID", "ipmi.st11.fruid", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_11_offset, { "Offset to read", "ipmi.st11.offset", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_11_count, { "Count to read", "ipmi.st11.count", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_11_ret_count, { "Returned count", "ipmi.st11.ret_count", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_11_data, { "Requested data", "ipmi.st11.data", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_12_fruid, { "FRU ID", "ipmi.st12.fruid", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_12_offset, { "Offset to read", "ipmi.st12.offset", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_12_data, { "Requested data", "ipmi.st12.data", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_12_ret_count, { "Returned count", "ipmi.st12.ret_count", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_20_sdr_version, { "SDR Version", "ipmi.st20.sdr_version", FT_UINT8, BASE_CUSTOM, ipmi_fmt_version, 0, NULL, HFILL } }, { &hf_ipmi_stor_20_rec_count, { "Record Count", "ipmi.st20.rec_count", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_20_free_space, { "Free Space", "ipmi.st20.free_space", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_20_ts_add, { "Most recent addition timestamp", "ipmi.st20.ts_add", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_20_ts_erase, { "Most recent erase timestamp", "ipmi.st20.ts_erase", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_20_op_overflow, { "Overflow", "ipmi.st20.op_overflow", FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL } }, { &hf_ipmi_stor_20_op_update, { "SDR Repository Update", "ipmi.st20.op_update", FT_UINT8, BASE_HEX, vals_20_update, 0x60, NULL, HFILL } }, { &hf_ipmi_stor_20_op_delete, { "Delete SDR", "ipmi.st20.op_delete", FT_BOOLEAN, 8, NULL, 0x08, NULL, HFILL } }, { &hf_ipmi_stor_20_op_partial_add, { "Partial Add SDR", "ipmi.st20.op_partial_add", FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL } }, { &hf_ipmi_stor_20_op_reserve, { "Reserve SDR Repository", "ipmi.st20.op_reserve", FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL } }, { &hf_ipmi_stor_20_op_allocinfo, { "Get SDR Repository Allocation Info", "ipmi.st20.op_allocinfo", FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL } }, { &hf_ipmi_stor_21_units, { "Number of allocation units", "ipmi.st21.units", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_21_size, { "Allocation unit size", "ipmi.st21.size", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_21_free, { "Number of free units", "ipmi.st21.free", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_21_largest, { "Largest free block (in units)", "ipmi.st21.largest", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_21_maxrec, { "Maximum record size (in units)", "ipmi.st21.maxrec", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_22_rsrv_id, { "Reservation ID", "ipmi.st22.rsrv_id", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_23_rsrv_id, { "Reservation ID", "ipmi.st23.rsrv_id", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_23_rec_id, { "Record ID", "ipmi.st23.rec_id", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_23_offset, { "Offset into record", "ipmi.st23.offset", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_23_count, { "Bytes to read", "ipmi.st23.count", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_23_next, { "Next Record ID", "ipmi.st23.next", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_23_data, { "Record Data", "ipmi.st23.data", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_24_data, { "SDR Data", "ipmi.st24.data", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_24_added_rec_id, { "Record ID for added record", "ipmi.st23.added_rec_id", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_25_rsrv_id, { "Reservation ID", "ipmi.st25.rsrv_id", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_25_rec_id, { "Record ID", "ipmi.st25.rec_id", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_25_offset, { "Offset into record", "ipmi.st25.offset", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_25_inprogress, { "In progress", "ipmi.st25.inprogress", FT_UINT8, BASE_HEX, vals_25_inprogress, 0x0f, NULL, HFILL } }, { &hf_ipmi_stor_25_data, { "SDR Data", "ipmi.st25.data", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_25_added_rec_id, { "Record ID for added record", "ipmi.st25.added_rec_id", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_26_rsrv_id, { "Reservation ID", "ipmi.st26.rsrv_id", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_26_rec_id, { "Record ID", "ipmi.st26.rec_id", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_26_del_rec_id, { "Deleted Record ID", "ipmi.st26.del_rec_id", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_27_rsrv_id, { "Reservation ID", "ipmi.st27.rsrv_id", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_27_clr, { "Confirmation (should be CLR)", "ipmi.st27.clr", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_27_action, { "Action", "ipmi.st27.action", FT_UINT8, BASE_HEX, vals_27_action, 0, NULL, HFILL } }, { &hf_ipmi_stor_27_status, { "Erasure Status", "ipmi.st27.status", FT_UINT8, BASE_HEX, vals_27_status, 0x0f, NULL, HFILL } }, { &hf_ipmi_stor_28_time, { "Time", "ipmi.st28.time", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_29_time, { "Time", "ipmi.st29.time", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_2c_init_agent, { "Initialization agent", "ipmi.st2c.init_agent", FT_BOOLEAN, 8, TFS(&tfs_2c_init_agent), 0x01, NULL, HFILL } }, { &hf_ipmi_stor_2c_init_state, { "Initialization", "ipmi.st2c.init_state", FT_BOOLEAN, 8, TFS(&tfs_2c_init_state), 0x01, NULL, HFILL } }, { &hf_ipmi_stor_40_sel_version, { "SEL Version", "ipmi.st40.sel_version", FT_UINT8, BASE_CUSTOM, ipmi_fmt_version, 0, NULL, HFILL } }, { &hf_ipmi_stor_40_entries, { "Entries", "ipmi.st40.rec_count", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_40_free_space, { "Free Space", "ipmi.st40.free_space", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_40_ts_add, { "Most recent addition timestamp", "ipmi.st40.ts_add", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_40_ts_erase, { "Most recent erase timestamp", "ipmi.st40.ts_erase", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_40_op_overflow, { "Overflow", "ipmi.st40.op_overflow", FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL } }, { &hf_ipmi_stor_40_op_delete, { "Delete SEL", "ipmi.st40.op_delete", FT_BOOLEAN, 8, NULL, 0x08, NULL, HFILL } }, { &hf_ipmi_stor_40_op_partial_add, { "Partial Add SEL Entry", "ipmi.st40.op_partial_add", FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL } }, { &hf_ipmi_stor_40_op_reserve, { "Reserve SEL", "ipmi.st40.op_reserve", FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL } }, { &hf_ipmi_stor_40_op_allocinfo, { "Get SEL Allocation Info", "ipmi.st40.op_allocinfo", FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL } }, { &hf_ipmi_stor_41_units, { "Number of allocation units", "ipmi.st41.units", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_41_size, { "Allocation unit size", "ipmi.st41.size", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_41_free, { "Number of free units", "ipmi.st41.free", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_41_largest, { "Largest free block (in units)", "ipmi.st41.largest", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_41_maxrec, { "Maximum record size (in units)", "ipmi.st41.maxrec", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_42_rsrv_id, { "Reservation ID", "ipmi.st42.rsrv_id", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_43_rsrv_id, { "Reservation ID", "ipmi.st43.rsrv_id", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_43_rec_id, { "Record ID", "ipmi.st43.rec_id", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_43_offset, { "Offset into record", "ipmi.st43.offset", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_43_count, { "Bytes to read", "ipmi.st43.count", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_43_next, { "Next Record ID", "ipmi.st43.next", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_43_data, { "Record Data", "ipmi.st43.data", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_44_data, { "SDR Data", "ipmi.st44.data", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_44_added_rec_id, { "Record ID for added record", "ipmi.st43.added_rec_id", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_45_rsrv_id, { "Reservation ID", "ipmi.st45.rsrv_id", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_45_rec_id, { "Record ID", "ipmi.st45.rec_id", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_45_offset, { "Offset into record", "ipmi.st45.offset", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_45_inprogress, { "In progress", "ipmi.st45.inprogress", FT_UINT8, BASE_HEX, vals_45_inprogress, 0x0f, NULL, HFILL } }, { &hf_ipmi_stor_45_data, { "Record Data", "ipmi.st45.data", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_45_added_rec_id, { "Record ID for added record", "ipmi.st45.added_rec_id", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_46_rsrv_id, { "Reservation ID", "ipmi.st46.rsrv_id", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_46_rec_id, { "Record ID", "ipmi.st46.rec_id", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_46_del_rec_id, { "Deleted Record ID", "ipmi.st46.del_rec_id", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_47_rsrv_id, { "Reservation ID", "ipmi.st47.rsrv_id", FT_UINT16, BASE_HEX, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_47_clr, { "Confirmation (should be CLR)", "ipmi.st47.clr", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_47_action, { "Action", "ipmi.st47.action", FT_UINT8, BASE_HEX, vals_47_action, 0, NULL, HFILL } }, { &hf_ipmi_stor_47_status, { "Erasure Status", "ipmi.st47.status", FT_UINT8, BASE_HEX, vals_47_status, 0x0f, NULL, HFILL } }, { &hf_ipmi_stor_48_time, { "Time", "ipmi.st48.time", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_49_time, { "Time", "ipmi.st49.time", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_5a_log_type, { "Log type", "ipmi.st5a.log_type", FT_UINT8, BASE_HEX, log_type_vals, 0x0f, NULL, HFILL } }, { &hf_ipmi_stor_5a_ts_add, { "Last addition timestamp", "ipmi.st5a.ts_add", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_5a_num_entries, { "Number of entries in MCA Log", "ipmi.st5a.num_entries", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_5a_iana, { "OEM IANA", "ipmi.st5a.iana", FT_UINT24, BASE_HEX, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_5a_bytes, { "Log status bytes", "ipmi.st5a.bytes", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_5a_unknown, { "Unknown log format (cannot parse data)", "ipmi.st5a.unknown", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_5b_log_type, { "Log type", "ipmi.st5b.log_type", FT_UINT8, BASE_HEX, log_type_vals, 0x0f, NULL, HFILL } }, { &hf_ipmi_stor_5b_ts_add, { "Last addition timestamp", "ipmi.st5b.ts_add", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_5b_num_entries, { "Number of entries in MCA Log", "ipmi.st5b.num_entries", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_5b_iana, { "OEM IANA", "ipmi.st5b.iana", FT_UINT24, BASE_HEX, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_5b_bytes, { "Log status bytes", "ipmi.st5b.bytes", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL } }, { &hf_ipmi_stor_5b_unknown, { "Unknown log format (cannot parse data)", "ipmi.st5b.unknown", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL } }, }; static gint *ett[] = { &ett_ipmi_stor_10_flags, &ett_ipmi_stor_20_ops, &ett_ipmi_stor_25_byte6, &ett_ipmi_stor_27_status, &ett_ipmi_stor_2c_rq_byte1, &ett_ipmi_stor_2c_rs_byte1, &ett_ipmi_stor_40_ops, &ett_ipmi_stor_45_byte6, &ett_ipmi_stor_47_status, &ett_ipmi_stor_5a_byte1, &ett_ipmi_stor_5b_byte1, }; proto_register_field_array(proto_ipmi, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); ipmi_register_netfn_cmdtab(IPMI_STORAGE_REQ, IPMI_OEM_NONE, NULL, 0, NULL, cmd_storage, array_length(cmd_storage)); }