1*c18ec02fSPetter Reinholdtsen /* 2*c18ec02fSPetter Reinholdtsen * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved. 3*c18ec02fSPetter Reinholdtsen * Use is subject to license terms. 4*c18ec02fSPetter Reinholdtsen */ 5*c18ec02fSPetter Reinholdtsen 6*c18ec02fSPetter Reinholdtsen /* 7*c18ec02fSPetter Reinholdtsen * Redistribution and use in source and binary forms, with or without 8*c18ec02fSPetter Reinholdtsen * modification, are permitted provided that the following conditions 9*c18ec02fSPetter Reinholdtsen * are met: 10*c18ec02fSPetter Reinholdtsen * 11*c18ec02fSPetter Reinholdtsen * Redistribution of source code must retain the above copyright 12*c18ec02fSPetter Reinholdtsen * notice, this list of conditions and the following disclaimer. 13*c18ec02fSPetter Reinholdtsen * 14*c18ec02fSPetter Reinholdtsen * Redistribution in binary form must reproduce the above copyright 15*c18ec02fSPetter Reinholdtsen * notice, this list of conditions and the following disclaimer in the 16*c18ec02fSPetter Reinholdtsen * documentation and/or other materials provided with the distribution. 17*c18ec02fSPetter Reinholdtsen * 18*c18ec02fSPetter Reinholdtsen * Neither the name of Sun Microsystems, Inc. or the names of 19*c18ec02fSPetter Reinholdtsen * contributors may be used to endorse or promote products derived 20*c18ec02fSPetter Reinholdtsen * from this software without specific prior written permission. 21*c18ec02fSPetter Reinholdtsen * 22*c18ec02fSPetter Reinholdtsen * This software is provided "AS IS," without a warranty of any kind. 23*c18ec02fSPetter Reinholdtsen * ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, 24*c18ec02fSPetter Reinholdtsen * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A 25*c18ec02fSPetter Reinholdtsen * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. 26*c18ec02fSPetter Reinholdtsen * SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE 27*c18ec02fSPetter Reinholdtsen * FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING 28*c18ec02fSPetter Reinholdtsen * OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL 29*c18ec02fSPetter Reinholdtsen * SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, 30*c18ec02fSPetter Reinholdtsen * OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR 31*c18ec02fSPetter Reinholdtsen * PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF 32*c18ec02fSPetter Reinholdtsen * LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, 33*c18ec02fSPetter Reinholdtsen * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 34*c18ec02fSPetter Reinholdtsen */ 35*c18ec02fSPetter Reinholdtsen 36*c18ec02fSPetter Reinholdtsen #include <ipmitool/ipmi.h> 37*c18ec02fSPetter Reinholdtsen #include <ipmitool/ipmi_intf.h> 38*c18ec02fSPetter Reinholdtsen #include <ipmitool/ipmi_main.h> 39*c18ec02fSPetter Reinholdtsen 40*c18ec02fSPetter Reinholdtsen #include <ipmitool/ipmi_sdr.h> 41*c18ec02fSPetter Reinholdtsen #include <ipmitool/ipmi_gendev.h> 42*c18ec02fSPetter Reinholdtsen #include <ipmitool/ipmi_sel.h> 43*c18ec02fSPetter Reinholdtsen #include <ipmitool/ipmi_fru.h> 44*c18ec02fSPetter Reinholdtsen #include <ipmitool/ipmi_sol.h> 45*c18ec02fSPetter Reinholdtsen #include <ipmitool/ipmi_isol.h> 46*c18ec02fSPetter Reinholdtsen #include <ipmitool/ipmi_tsol.h> 47*c18ec02fSPetter Reinholdtsen #include <ipmitool/ipmi_lanp.h> 48*c18ec02fSPetter Reinholdtsen #include <ipmitool/ipmi_chassis.h> 49*c18ec02fSPetter Reinholdtsen #include <ipmitool/ipmi_mc.h> 50*c18ec02fSPetter Reinholdtsen #include <ipmitool/ipmi_sensor.h> 51*c18ec02fSPetter Reinholdtsen #include <ipmitool/ipmi_channel.h> 52*c18ec02fSPetter Reinholdtsen #include <ipmitool/ipmi_session.h> 53*c18ec02fSPetter Reinholdtsen #include <ipmitool/ipmi_event.h> 54*c18ec02fSPetter Reinholdtsen #include <ipmitool/ipmi_user.h> 55*c18ec02fSPetter Reinholdtsen #include <ipmitool/ipmi_raw.h> 56*c18ec02fSPetter Reinholdtsen #include <ipmitool/ipmi_pef.h> 57*c18ec02fSPetter Reinholdtsen #include <ipmitool/ipmi_oem.h> 58*c18ec02fSPetter Reinholdtsen #include <ipmitool/ipmi_sunoem.h> 59*c18ec02fSPetter Reinholdtsen #include <ipmitool/ipmi_fwum.h> 60*c18ec02fSPetter Reinholdtsen #include <ipmitool/ipmi_picmg.h> 61*c18ec02fSPetter Reinholdtsen #include <ipmitool/ipmi_kontronoem.h> 62*c18ec02fSPetter Reinholdtsen #include <ipmitool/ipmi_firewall.h> 63*c18ec02fSPetter Reinholdtsen #include <ipmitool/ipmi_hpmfwupg.h> 64*c18ec02fSPetter Reinholdtsen #include <ipmitool/ipmi_delloem.h> 65*c18ec02fSPetter Reinholdtsen #include <ipmitool/ipmi_ekanalyzer.h> 66*c18ec02fSPetter Reinholdtsen #include <ipmitool/ipmi_ime.h> 67*c18ec02fSPetter Reinholdtsen #include <ipmitool/ipmi_dcmi.h> 68*c18ec02fSPetter Reinholdtsen 69*c18ec02fSPetter Reinholdtsen #ifdef HAVE_CONFIG_H 70*c18ec02fSPetter Reinholdtsen # include <config.h> 71*c18ec02fSPetter Reinholdtsen #endif 72*c18ec02fSPetter Reinholdtsen 73*c18ec02fSPetter Reinholdtsen #ifdef HAVE_READLINE 74*c18ec02fSPetter Reinholdtsen extern int ipmi_shell_main(struct ipmi_intf * intf, int argc, char ** argv); 75*c18ec02fSPetter Reinholdtsen #endif 76*c18ec02fSPetter Reinholdtsen extern int ipmi_echo_main(struct ipmi_intf * intf, int argc, char ** argv); 77*c18ec02fSPetter Reinholdtsen extern int ipmi_set_main(struct ipmi_intf * intf, int argc, char ** argv); 78*c18ec02fSPetter Reinholdtsen extern int ipmi_exec_main(struct ipmi_intf * intf, int argc, char ** argv); 79*c18ec02fSPetter Reinholdtsen 80*c18ec02fSPetter Reinholdtsen 81*c18ec02fSPetter Reinholdtsen int csv_output = 0; 82*c18ec02fSPetter Reinholdtsen int verbose = 0; 83*c18ec02fSPetter Reinholdtsen 84*c18ec02fSPetter Reinholdtsen struct ipmi_cmd ipmitool_cmd_list[] = { 85*c18ec02fSPetter Reinholdtsen { ipmi_raw_main, "raw", "Send a RAW IPMI request and print response" }, 86*c18ec02fSPetter Reinholdtsen { ipmi_rawi2c_main, "i2c", "Send an I2C Master Write-Read command and print response" }, 87*c18ec02fSPetter Reinholdtsen { ipmi_rawspd_main, "spd", "Print SPD info from remote I2C device" }, 88*c18ec02fSPetter Reinholdtsen { ipmi_lanp_main, "lan", "Configure LAN Channels" }, 89*c18ec02fSPetter Reinholdtsen { ipmi_chassis_main, "chassis", "Get chassis status and set power state" }, 90*c18ec02fSPetter Reinholdtsen { ipmi_power_main, "power", "Shortcut to chassis power commands" }, 91*c18ec02fSPetter Reinholdtsen { ipmi_event_main, "event", "Send pre-defined events to MC" }, 92*c18ec02fSPetter Reinholdtsen { ipmi_mc_main, "mc", "Management Controller status and global enables" }, 93*c18ec02fSPetter Reinholdtsen { ipmi_mc_main, "bmc", NULL }, /* for backwards compatibility */ 94*c18ec02fSPetter Reinholdtsen { ipmi_sdr_main, "sdr", "Print Sensor Data Repository entries and readings" }, 95*c18ec02fSPetter Reinholdtsen { ipmi_sensor_main, "sensor", "Print detailed sensor information" }, 96*c18ec02fSPetter Reinholdtsen { ipmi_fru_main, "fru", "Print built-in FRU and scan SDR for FRU locators" }, 97*c18ec02fSPetter Reinholdtsen { ipmi_gendev_main, "gendev", "Read/Write Device associated with Generic Device locators sdr" }, 98*c18ec02fSPetter Reinholdtsen { ipmi_sel_main, "sel", "Print System Event Log (SEL)" }, 99*c18ec02fSPetter Reinholdtsen { ipmi_pef_main, "pef", "Configure Platform Event Filtering (PEF)" }, 100*c18ec02fSPetter Reinholdtsen { ipmi_sol_main, "sol", "Configure and connect IPMIv2.0 Serial-over-LAN" }, 101*c18ec02fSPetter Reinholdtsen { ipmi_tsol_main, "tsol", "Configure and connect with Tyan IPMIv1.5 Serial-over-LAN" }, 102*c18ec02fSPetter Reinholdtsen { ipmi_isol_main, "isol", "Configure IPMIv1.5 Serial-over-LAN" }, 103*c18ec02fSPetter Reinholdtsen { ipmi_user_main, "user", "Configure Management Controller users" }, 104*c18ec02fSPetter Reinholdtsen { ipmi_channel_main, "channel", "Configure Management Controller channels" }, 105*c18ec02fSPetter Reinholdtsen { ipmi_session_main, "session", "Print session information" }, 106*c18ec02fSPetter Reinholdtsen { ipmi_dcmi_main, "dcmi", "Data Center Management Interface"}, 107*c18ec02fSPetter Reinholdtsen { ipmi_sunoem_main, "sunoem", "OEM Commands for Sun servers" }, 108*c18ec02fSPetter Reinholdtsen { ipmi_kontronoem_main, "kontronoem", "OEM Commands for Kontron devices"}, 109*c18ec02fSPetter Reinholdtsen { ipmi_picmg_main, "picmg", "Run a PICMG/ATCA extended cmd"}, 110*c18ec02fSPetter Reinholdtsen { ipmi_fwum_main, "fwum", "Update IPMC using Kontron OEM Firmware Update Manager" }, 111*c18ec02fSPetter Reinholdtsen { ipmi_firewall_main,"firewall","Configure Firmware Firewall" }, 112*c18ec02fSPetter Reinholdtsen { ipmi_delloem_main, "delloem", "OEM Commands for Dell systems" }, 113*c18ec02fSPetter Reinholdtsen #ifdef HAVE_READLINE 114*c18ec02fSPetter Reinholdtsen { ipmi_shell_main, "shell", "Launch interactive IPMI shell" }, 115*c18ec02fSPetter Reinholdtsen #endif 116*c18ec02fSPetter Reinholdtsen { ipmi_exec_main, "exec", "Run list of commands from file" }, 117*c18ec02fSPetter Reinholdtsen { ipmi_set_main, "set", "Set runtime variable for shell and exec" }, 118*c18ec02fSPetter Reinholdtsen { ipmi_echo_main, "echo", NULL }, /* for echoing lines to stdout in scripts */ 119*c18ec02fSPetter Reinholdtsen { ipmi_hpmfwupg_main,"hpm", "Update HPM components using PICMG HPM.1 file"}, 120*c18ec02fSPetter Reinholdtsen { ipmi_ekanalyzer_main,"ekanalyzer", "run FRU-Ekeying analyzer using FRU files"}, 121*c18ec02fSPetter Reinholdtsen { ipmi_ime_main, "ime", "Update Intel Manageability Engine Firmware"}, 122*c18ec02fSPetter Reinholdtsen { NULL }, 123*c18ec02fSPetter Reinholdtsen }; 124*c18ec02fSPetter Reinholdtsen 125*c18ec02fSPetter Reinholdtsen int 126*c18ec02fSPetter Reinholdtsen main(int argc, char ** argv) 127*c18ec02fSPetter Reinholdtsen { 128*c18ec02fSPetter Reinholdtsen int rc; 129*c18ec02fSPetter Reinholdtsen 130*c18ec02fSPetter Reinholdtsen rc = ipmi_main(argc, argv, ipmitool_cmd_list, NULL); 131*c18ec02fSPetter Reinholdtsen 132*c18ec02fSPetter Reinholdtsen if (rc < 0) 133*c18ec02fSPetter Reinholdtsen exit(EXIT_FAILURE); 134*c18ec02fSPetter Reinholdtsen else 135*c18ec02fSPetter Reinholdtsen exit(EXIT_SUCCESS); 136*c18ec02fSPetter Reinholdtsen } 137