diff --git a/ipmitool-1.8.8.tar.gz b/ipmitool-1.8.8.tar.gz deleted file mode 100644 index c49b260..0000000 --- a/ipmitool-1.8.8.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5d0abd9131d066faf0119722159dc8e768ff373fa30cb1a49dc5c376c9e36909 -size 634899 diff --git a/ipmitool-1.8.9.tar.bz2 b/ipmitool-1.8.9.tar.bz2 new file mode 100644 index 0000000..80347b3 --- /dev/null +++ b/ipmitool-1.8.9.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:174e9ebacc9a63a0758a196532d1d1bc9ba8a3cb150fd66fbc50c5bc746a4845 +size 513004 diff --git a/ipmitool-CVS-2006-10-13.patch b/ipmitool-CVS-2006-10-13.patch deleted file mode 100644 index 4b640b3..0000000 --- a/ipmitool-CVS-2006-10-13.patch +++ /dev/null @@ -1,7201 +0,0 @@ -Index: ipmitool/Makefile.am -=================================================================== -RCS file: /cvsroot/ipmitool/ipmitool/Makefile.am,v -retrieving revision 1.14 -retrieving revision 1.15 -diff -u -p -r1.14 -r1.15 ---- ipmitool/Makefile.am 19 Mar 2006 17:59:38 -0000 1.14 -+++ ipmitool/Makefile.am 28 Jun 2006 22:04:30 -0000 1.15 -@@ -49,7 +49,7 @@ dist-hook: - - install-data-local: - mkdir -p $(DOCDIR) -- install -m 644 $(DOCLIST) $(DOCDIR) -+ $(INSTALL_DATA) -m 644 $(DOCLIST) $(DOCDIR) - - .PHONY: pkg - pkg: PKG := ipmitool-@VERSION@-@OS@-@ARCH@ -@@ -76,4 +76,3 @@ rpm: control/ipmitool.spec dist - .PHONY: clean-rpm - clean-rpm: - -rm -rf $(RPMDIR) -- -Index: ipmitool/configure.in -=================================================================== -RCS file: /cvsroot/ipmitool/ipmitool/configure.in,v -retrieving revision 1.62 -retrieving revision 1.64 -diff -u -p -r1.62 -r1.64 ---- ipmitool/configure.in 2 May 2006 16:26:13 -0000 1.62 -+++ ipmitool/configure.in 14 Sep 2006 16:20:58 -0000 1.64 -@@ -3,7 +3,7 @@ dnl autoconf for ipmitool - dnl - AC_INIT([src/ipmitool.c]) - AC_CANONICAL_SYSTEM --AM_INIT_AUTOMAKE([ipmitool], [1.8.8]) -+AM_INIT_AUTOMAKE([ipmitool], [1.8.9]) - AM_CONFIG_HEADER(config.h) - AC_CONFIG_SRCDIR([src/ipmitool.c]) - AC_PREREQ(2.50) -@@ -183,6 +183,8 @@ else - enable_intf_lanplus=no - fi - -+ORIG_CPPFLAGS=$CPPFLAGS -+ - dnl look for OpenIPMI header files - AC_ARG_WITH([kerneldir], - [AC_HELP_STRING([--with-kerneldir=DIR], -@@ -192,6 +194,8 @@ AC_ARG_WITH([kerneldir], - fi - CFLAGS="$CFLAGS -I ${with_kerneldir}/include" - AC_SUBST(CFLAGS) -+ CPPFLAGS="$CPPFLAGS -I ${with_kerneldir}/include" -+ AC_SUBST(CPPFLAGS) - if test -s ${with_kerneldir}/include/linux/version.h ; then - kernelver=`grep UTS_RELEASE ${with_kerneldir}/include/linux/version.h | \ - sed 's/^\#define UTS_RELEASE \"\(2\.[0-9]\)\..*/\1/'` -@@ -200,11 +204,23 @@ AC_ARG_WITH([kerneldir], - AC_SUBST(CPPFLAGS) - fi - fi]) -+ -+AH_TEMPLATE([HAVE_LINUX_COMPILER_H], []) -+AC_MSG_CHECKING([for linux/compiler.h]) -+AC_PREPROC_IFELSE([#include ], -+ [AC_DEFINE(HAVE_LINUX_COMPILER_H, [1], -+ [Define to 1 if you have the header file.]) -+ AC_MSG_RESULT([yes])], -+ [AC_MSG_RESULT([no])]) -+ -+CPPFLAGS=$ORIG_CPPFLAGS -+AC_SUBST(CPPFLAGS) -+ - AC_CHECK_HEADER([linux/ipmi.h], - [AC_DEFINE(HAVE_OPENIPMI_H, [1], - [Define to 1 if you have the header file.])], - [AC_CHECK_HEADER([sys/ipmi.h], -- [AC_DEFINE(HAVE_FREEBSD_IPMI_H, [1], -+ [AC_DEFINE(HAVE_OPENIPMI_H, [1], - [Define to 1 if you have the header file.])], - [echo "** Unable to find OpenIPMI header files. Using internal version."])]) - -Index: ipmitool/include/ipmitool/helper.h -=================================================================== -RCS file: /cvsroot/ipmitool/ipmitool/include/ipmitool/helper.h,v -retrieving revision 1.18 -retrieving revision 1.19 -diff -u -p -r1.18 -r1.19 ---- ipmitool/include/ipmitool/helper.h 19 Mar 2006 17:59:38 -0000 1.18 -+++ ipmitool/include/ipmitool/helper.h 11 Sep 2006 16:20:56 -0000 1.19 -@@ -38,6 +38,8 @@ - #include - #include - -+struct ipmi_intf; -+ - struct valstr { - uint16_t val; - const char * str; -@@ -54,7 +56,7 @@ const char * buf2str(uint8_t * buf, int - void printbuf(const uint8_t * buf, int len, const char * desc); - uint8_t ipmi_csum(uint8_t * d, int s); - FILE * ipmi_open_file(const char * file, int rw); --void ipmi_start_daemon(void); -+void ipmi_start_daemon(struct ipmi_intf *intf); - - #define ipmi_open_file_read(file) ipmi_open_file(file, 0) - #define ipmi_open_file_write(file) ipmi_open_file(file, 1) -Index: ipmitool/include/ipmitool/ipmi_constants.h -=================================================================== -RCS file: /cvsroot/ipmitool/ipmitool/include/ipmitool/ipmi_constants.h,v -retrieving revision 1.14 -retrieving revision 1.16 -diff -u -p -r1.14 -r1.16 ---- ipmitool/include/ipmitool/ipmi_constants.h 19 Mar 2006 17:59:38 -0000 1.14 -+++ ipmitool/include/ipmitool/ipmi_constants.h 23 Aug 2006 17:25:37 -0000 1.16 -@@ -51,6 +51,8 @@ - #define IPMI_SUSPEND_RESUME_PAYLOAD_ENCRYPTYION 0x55 - #define IPMI_GET_SEL_TIME 0x48 - #define IPMI_SET_SEL_TIME 0x49 -+#define IPMI_SET_USER_PAYLOAD_ACCESS 0x4c -+#define IPMI_GET_USER_PAYLOAD_ACCESS 0x4d - - #define IPMI_1_5_AUTH_TYPE_BIT_NONE 0x01 - #define IPMI_1_5_AUTH_TYPE_BIT_MD2 0x02 -@@ -103,6 +105,15 @@ - #define IPMI_CHASSIS_POLICY_PREVIOUS 0x1 - #define IPMI_CHASSIS_POLICY_ALWAYS_OFF 0x0 - -+#define IPMI_CHASSIS_BOOTPARAM_SET_IN_PROGRESS 0 -+#define IPMI_CHASSIS_BOOTPARAM_SVCPART_SELECT 1 -+#define IPMI_CHASSIS_BOOTPARAM_SVCPART_SCAN 2 -+#define IPMI_CHASSIS_BOOTPARAM_FLAG_VALID 3 -+#define IPMI_CHASSIS_BOOTPARAM_INFO_ACK 4 -+#define IPMI_CHASSIS_BOOTPARAM_BOOT_FLAGS 5 -+#define IPMI_CHASSIS_BOOTPARAM_INIT_INFO 6 -+#define IPMI_CHASSIS_BOOTPARAM_INIT_MBOX 7 -+ - /* From table 13-17 of the IPMI v2 specification */ - #define IPMI_AUTH_RAKP_NONE 0x00 - #define IPMI_AUTH_RAKP_HMAC_SHA1 0x01 -Index: ipmitool/include/ipmitool/ipmi_fru.h -=================================================================== -RCS file: /cvsroot/ipmitool/ipmitool/include/ipmitool/ipmi_fru.h,v -retrieving revision 1.13 -retrieving revision 1.14 -diff -u -p -r1.13 -r1.14 ---- ipmitool/include/ipmitool/ipmi_fru.h 19 Mar 2006 17:59:38 -0000 1.13 -+++ ipmitool/include/ipmitool/ipmi_fru.h 28 Jun 2006 20:58:07 -0000 1.14 -@@ -314,5 +314,7 @@ static const char *chassis_type_desc[] _ - - int ipmi_fru_main(struct ipmi_intf *intf, int argc, char **argv); - int ipmi_fru_print(struct ipmi_intf *intf, struct sdr_record_fru_locator *fru); -+int ipmi_spd_print(uint8_t *data, int len); -+int ipmi_spd_print_fru(struct ipmi_intf * intf, uint8_t id); - - #endif /* IPMI_FRU_H */ -Index: ipmitool/include/ipmitool/ipmi_intf.h -=================================================================== -RCS file: /cvsroot/ipmitool/ipmitool/include/ipmitool/ipmi_intf.h,v -retrieving revision 1.30 -retrieving revision 1.31 -diff -u -p -r1.30 -r1.31 ---- ipmitool/include/ipmitool/ipmi_intf.h 19 Mar 2006 17:59:38 -0000 1.30 -+++ ipmitool/include/ipmitool/ipmi_intf.h 12 Sep 2006 23:23:28 -0000 1.31 -@@ -106,6 +106,7 @@ struct ipmi_session { - uint8_t integrity_alg; - uint8_t crypt_alg; - uint8_t max_priv_level; -+ uint8_t lookupbit; - - uint32_t console_id; - uint32_t bmc_id; -@@ -190,6 +191,7 @@ void ipmi_intf_session_set_hostname(stru - void ipmi_intf_session_set_username(struct ipmi_intf * intf, char * username); - void ipmi_intf_session_set_password(struct ipmi_intf * intf, char * password); - void ipmi_intf_session_set_privlvl(struct ipmi_intf * intf, uint8_t privlvl); -+void ipmi_intf_session_set_lookupbit(struct ipmi_intf * intf, uint8_t lookupbit); - void ipmi_intf_session_set_cipher_suite_id(struct ipmi_intf * intf, uint8_t cipher_suite_id); - void ipmi_intf_session_set_sol_escape_char(struct ipmi_intf * intf, char sol_escape_char); - void ipmi_intf_session_set_kgkey(struct ipmi_intf * intf, char * kgkey); -Index: ipmitool/include/ipmitool/ipmi_raw.h -=================================================================== -RCS file: /cvsroot/ipmitool/ipmitool/include/ipmitool/ipmi_raw.h,v -retrieving revision 1.3 -retrieving revision 1.5 -diff -u -p -r1.3 -r1.5 ---- ipmitool/include/ipmitool/ipmi_raw.h 19 Mar 2006 17:59:39 -0000 1.3 -+++ ipmitool/include/ipmitool/ipmi_raw.h 28 Jun 2006 20:58:07 -0000 1.5 -@@ -36,7 +36,9 @@ - #include - - int ipmi_raw_main(struct ipmi_intf * intf, int argc, char ** argv); --struct ipmi_rs * ipmi_master_write_read(struct ipmi_intf * intf, uint8_t addr, uint8_t * wdata, uint8_t wsize, uint8_t rsize); -+struct ipmi_rs * ipmi_master_write_read(struct ipmi_intf * intf, uint8_t bus, uint8_t addr, -+ uint8_t * wdata, uint8_t wsize, uint8_t rsize); - int ipmi_rawi2c_main(struct ipmi_intf * intf, int argc, char ** argv); -+int ipmi_rawspd_main(struct ipmi_intf * intf, int argc, char ** argv); - - #endif /* IPMI_RAW_H */ -Index: ipmitool/include/ipmitool/ipmi_sdr.h -=================================================================== -RCS file: /cvsroot/ipmitool/ipmitool/include/ipmitool/ipmi_sdr.h,v -retrieving revision 1.34 -retrieving revision 1.36 -diff -u -p -r1.34 -r1.36 ---- ipmitool/include/ipmitool/ipmi_sdr.h 1 May 2006 23:57:01 -0000 1.34 -+++ ipmitool/include/ipmitool/ipmi_sdr.h 28 Jul 2006 20:43:50 -0000 1.36 -@@ -159,7 +159,7 @@ struct sdr_record_mask { - struct { - uint16_t assert_event; /* assertion event mask */ - uint16_t deassert_event; /* de-assertion event mask */ -- uint16_t read; /* discrete reaading mask */ -+ uint16_t read; /* discrete reading mask */ - } discrete; - struct { - #if WORDS_BIGENDIAN -@@ -232,44 +232,52 @@ struct sdr_record_mask { - uint16_t status_unr:1; - uint16_t reserved_2:1; - #endif -- struct { --#if WORDS_BIGENDIAN /* settable threshold mask */ -- uint8_t reserved:2; -- uint8_t unr:1; -- uint8_t ucr:1; -- uint8_t unc:1; -- uint8_t lnr:1; -- uint8_t lcr:1; -- uint8_t lnc:1; --#else -- uint8_t lnc:1; -- uint8_t lcr:1; -- uint8_t lnr:1; -- uint8_t unc:1; -- uint8_t ucr:1; -- uint8_t unr:1; -- uint8_t reserved:2; --#endif -- } set; -- struct { --#if WORDS_BIGENDIAN /* readable threshold mask */ -- uint8_t reserved:2; -- uint8_t unr:1; -- uint8_t ucr:1; -- uint8_t unc:1; -- uint8_t lnr:1; -- uint8_t lcr:1; -- uint8_t lnc:1; --#else -- uint8_t lnc:1; -- uint8_t lcr:1; -- uint8_t lnr:1; -- uint8_t unc:1; -- uint8_t ucr:1; -- uint8_t unr:1; -- uint8_t reserved:2; -+ union { -+ struct { -+#if WORDS_BIGENDIAN /* settable threshold mask */ -+ uint16_t reserved:2; -+ uint16_t unr:1; -+ uint16_t ucr:1; -+ uint16_t unc:1; -+ uint16_t lnr:1; -+ uint16_t lcr:1; -+ uint16_t lnc:1; -+ /* padding lower 8 bits */ -+ uint16_t readable:8; -+#else -+ uint16_t readable:8; -+ uint16_t lnc:1; -+ uint16_t lcr:1; -+ uint16_t lnr:1; -+ uint16_t unc:1; -+ uint16_t ucr:1; -+ uint16_t unr:1; -+ uint16_t reserved:2; -+#endif -+ } set; -+ struct { -+#if WORDS_BIGENDIAN /* readable threshold mask */ -+ /* padding upper 8 bits */ -+ uint16_t settable:8; -+ uint16_t reserved:2; -+ uint16_t unr:1; -+ uint16_t ucr:1; -+ uint16_t unc:1; -+ uint16_t lnr:1; -+ uint16_t lcr:1; -+ uint16_t lnc:1; -+#else -+ uint16_t lnc:1; -+ uint16_t lcr:1; -+ uint16_t lnr:1; -+ uint16_t unc:1; -+ uint16_t ucr:1; -+ uint16_t unr:1; -+ uint16_t reserved:2; -+ uint16_t settable:8; - #endif -- } read; -+ } read; -+ }; - } threshold; - } type; - } __attribute__ ((packed)); -Index: ipmitool/include/ipmitool/ipmi_sel.h -=================================================================== -RCS file: /cvsroot/ipmitool/ipmitool/include/ipmitool/ipmi_sel.h,v -retrieving revision 1.26 -retrieving revision 1.27 -diff -u -p -r1.26 -r1.27 ---- ipmitool/include/ipmitool/ipmi_sel.h 1 May 2006 23:57:01 -0000 1.26 -+++ ipmitool/include/ipmitool/ipmi_sel.h 28 Jul 2006 20:17:24 -0000 1.27 -@@ -530,6 +530,7 @@ typedef enum IPMI_OEM { - IPMI_OEM_TYAN = 6653, - IPMI_OEM_NEWISYS = 9237, - IPMI_OEM_SUPERMICRO = 10876, -+ IPMI_OEM_GOOGLE = 11129, - IPMI_OEM_KONTRON = 15000, - } IPMI_OEM; - -Index: ipmitool/lib/dimm_spd.c -=================================================================== -RCS file: /cvsroot/ipmitool/ipmitool/lib/dimm_spd.c,v -retrieving revision 1.10 -retrieving revision 1.11 -diff -u -p -r1.10 -r1.11 ---- ipmitool/lib/dimm_spd.c 19 Mar 2006 17:59:39 -0000 1.10 -+++ ipmitool/lib/dimm_spd.c 28 Jun 2006 20:58:07 -0000 1.11 -@@ -669,13 +669,74 @@ const struct valstr jedec_id5_vals[] = { - }; - - int --ipmi_spd_print(struct ipmi_intf * intf, uint8_t id) -+ipmi_spd_print(uint8_t *spd_data, int len) -+{ -+ int size; -+ -+ if (len < 92) -+ return -1; /* we need first 91 bytes to do our thing */ -+ -+ size = spd_data[5] * (spd_data[31] << 2); -+ printf(" Memory Size : %d MB\n", size); -+ printf(" Memory Type : %s\n", -+ val2str(spd_data[2], spd_memtype_vals)); -+ printf(" Voltage Intf : %s\n", -+ val2str(spd_data[8], spd_voltage_vals)); -+ printf(" Error Detect/Cor : %s\n", -+ val2str(spd_data[11], spd_config_vals)); -+ -+ /* handle jedec table bank continuation values */ -+ printf(" Manufacturer : "); -+ if (spd_data[64] != 0x7f) -+ printf("%s\n", -+ val2str(spd_data[64], jedec_id1_vals)); -+ else { -+ if (spd_data[65] != 0x7f) -+ printf("%s\n", -+ val2str(spd_data[65], jedec_id2_vals)); -+ else { -+ if (spd_data[66] != 0x7f) -+ printf("%s\n", -+ val2str(spd_data[66], jedec_id3_vals)); -+ else { -+ if (spd_data[67] != 0x7f) -+ printf("%s\n", -+ val2str(spd_data[67], -+ jedec_id4_vals)); -+ else -+ printf("%s\n", -+ val2str(spd_data[68], -+ jedec_id5_vals)); -+ } -+ } -+ } -+ -+ if (spd_data[73]) { -+ char part[19]; -+ memcpy(part, spd_data+73, 18); -+ part[18] = 0; -+ printf(" Part Number : %s\n", part); -+ } -+ -+ printf(" Serial Number : %02x%02x%02x%02x\n", -+ spd_data[95], spd_data[96], spd_data[97], spd_data[98]); -+ -+ if (verbose) { -+ printf("\n"); -+ printbuf(spd_data, len, "SPD DATA"); -+ } -+ -+ return 0; -+} -+ -+int -+ipmi_spd_print_fru(struct ipmi_intf * intf, uint8_t id) - { - struct ipmi_rs * rsp; - struct ipmi_rq req; - struct fru_info fru; - uint8_t spd_data[256], msg_data[4]; -- int len, offset, size; -+ int len, offset; - - msg_data[0] = id; - -@@ -742,53 +803,8 @@ ipmi_spd_print(struct ipmi_intf * intf, - offset += len; - } while (offset < fru.size); - -- if (verbose > 1) -- printbuf(spd_data, offset, "SPD DATA"); -- -- if (offset < 92) -- return -1; /* we need first 91 bytes to do our thing */ -- -- size = spd_data[5] * (spd_data[31] << 2); -- printf(" Memory Size : %d MB\n", size); -- printf(" Memory Type : %s\n", -- val2str(spd_data[2], spd_memtype_vals)); -- printf(" Voltage Intf : %s\n", -- val2str(spd_data[8], spd_voltage_vals)); -- printf(" Error Detect/Cor : %s\n", -- val2str(spd_data[11], spd_config_vals)); -- -- /* handle jedec table bank continuation values */ -- printf(" Manufacturer : "); -- if (spd_data[64] != 0x7f) -- printf("%s\n", -- val2str(spd_data[64], jedec_id1_vals)); -- else { -- if (spd_data[65] != 0x7f) -- printf("%s\n", -- val2str(spd_data[65], jedec_id2_vals)); -- else { -- if (spd_data[66] != 0x7f) -- printf("%s\n", -- val2str(spd_data[66], jedec_id3_vals)); -- else { -- if (spd_data[67] != 0x7f) -- printf("%s\n", -- val2str(spd_data[67], -- jedec_id4_vals)); -- else -- printf("%s\n", -- val2str(spd_data[68], -- jedec_id5_vals)); -- } -- } -- } -- -- if (spd_data[73]) { -- char part[19]; -- memcpy(part, spd_data+73, 18); -- part[18] = 0; -- printf(" Part Number : %s\n", part); -- } -+ /* now print spd info */ -+ ipmi_spd_print(spd_data, offset); - - return 0; - } -Index: ipmitool/lib/helper.c -=================================================================== -RCS file: /cvsroot/ipmitool/ipmitool/lib/helper.c,v -retrieving revision 1.26 -retrieving revision 1.31 -diff -u -p -r1.26 -r1.31 ---- ipmitool/lib/helper.c 28 Mar 2006 16:56:56 -0000 1.26 -+++ ipmitool/lib/helper.c 11 Sep 2006 16:20:54 -0000 1.31 -@@ -54,6 +54,8 @@ - # define _PATH_VARRUN "/var/run/" - #endif - -+#include -+#include - #include - #include - -@@ -97,13 +99,13 @@ void printbuf(const uint8_t * buf, int l - if (verbose < 1) - return; - -- fprintf(stderr, "%s (%d bytes)\n", desc, len); -+ fprintf(stderr, "%s (%d bytes)\r\n", desc, len); - for (i=0; i 0) -@@ -398,11 +400,12 @@ ipmi_start_daemon(void) - chdir("/"); - umask(0); - -- for (fd=0; fd<64; fd++) -- close(fd); -+ for (fd=0; fd<64; fd++) { -+ if (fd != intf->fd) -+ close(fd); -+ } - - open("/dev/null", O_RDWR); - dup(0); - dup(0); - } -- -Index: ipmitool/lib/ipmi_channel.c -=================================================================== -RCS file: /cvsroot/ipmitool/ipmitool/lib/ipmi_channel.c,v -retrieving revision 1.25 -retrieving revision 1.27 -diff -u -p -r1.25 -r1.27 ---- ipmitool/lib/ipmi_channel.c 19 Mar 2006 20:54:44 -0000 1.25 -+++ ipmitool/lib/ipmi_channel.c 6 Oct 2006 20:33:42 -0000 1.27 -@@ -140,9 +140,9 @@ ipmi_get_channel_auth_cap(struct ipmi_in - (auth_cap.kg_status) ? "non-zero" : "default (all zeroes)"); - - printf("Per message authentication : %sabled\n", -- (auth_cap.per_message_auth) ? "en" : "dis"); -+ (auth_cap.per_message_auth) ? "dis" : "en"); - printf("User level authentication : %sabled\n", -- (auth_cap.user_level_auth) ? "en" : "dis"); -+ (auth_cap.user_level_auth) ? "dis" : "en"); - - printf("Non-null user names exist : %s\n", - (auth_cap.non_null_usernames) ? "yes" : "no"); -@@ -593,12 +593,10 @@ ipmi_get_channel_cipher_suites(struct ip - if (rsp->data_len >= 1) - channel = rsp->data[0]; - -- -- while ((rsp->data_len > 1) && (list_index < 0x3F)) -+ while ((rsp->data_len > 1) && (rsp->data_len == 17) && (list_index < 0x3F)) - { -- // -+ // - // We got back cipher suite data -- store it. -- // - //printf("copying data to offset %d\n", offset); - //printbuf(rsp->data + 1, rsp->data_len - 1, "this is the data"); - memcpy(cipher_suite_data + offset, rsp->data + 1, rsp->data_len - 1); -@@ -622,6 +620,16 @@ ipmi_get_channel_cipher_suites(struct ip - } - } - -+ /* Copy last chunk */ -+ if(rsp->data_len > 1) -+ { -+ // -+ // We got back cipher suite data -- store it. -+ //printf("copying data to offset %d\n", offset); -+ //printbuf(rsp->data + 1, rsp->data_len - 1, "this is the data"); -+ memcpy(cipher_suite_data + offset, rsp->data + 1, rsp->data_len - 1); -+ offset += rsp->data_len - 1; -+ } - - // - // We can chomp on all our data now. -@@ -842,7 +850,7 @@ ipmi_channel_main(struct ipmi_intf * int - else - { - uint8_t ch = 0xe; -- if (argc == 4) -+ if (argc == 3) - ch = (uint8_t)strtol(argv[2], NULL, 0); - retval = ipmi_get_channel_cipher_suites(intf, - argv[1], // ipmi | sol -@@ -858,4 +866,3 @@ ipmi_channel_main(struct ipmi_intf * int - - return retval; - } -- -Index: ipmitool/lib/ipmi_chassis.c -=================================================================== -RCS file: /cvsroot/ipmitool/ipmitool/lib/ipmi_chassis.c,v -retrieving revision 1.28 -retrieving revision 1.30 -diff -u -p -r1.28 -r1.30 ---- ipmitool/lib/ipmi_chassis.c 19 Mar 2006 21:15:05 -0000 1.28 -+++ ipmitool/lib/ipmi_chassis.c 11 Sep 2006 17:07:00 -0000 1.30 -@@ -172,7 +172,7 @@ ipmi_chassis_identify(struct ipmi_intf * - printf("default (15 seconds)\n"); - } else { - if (identify_data.force_on != 0) { -- printf("indefinate\n"); -+ printf("indefinite\n"); - } else { - if (identify_data.interval == 0) - printf("off\n"); -@@ -448,8 +448,10 @@ ipmi_chassis_set_bootparam(struct ipmi_i - return -1; - } - if (rsp->ccode > 0) { -- lprintf(LOG_ERR, "Set Chassis Boot Parameter %d failed: %s", -- param, val2str(rsp->ccode, completion_code_vals)); -+ if (param != 0) { -+ lprintf(LOG_ERR, "Set Chassis Boot Parameter %d failed: %s", -+ param, val2str(rsp->ccode, completion_code_vals)); -+ } - return -1; - } - -@@ -502,19 +504,44 @@ ipmi_chassis_get_bootparam(struct ipmi_i - } - - static int --ipmi_chassis_set_bootdev(struct ipmi_intf * intf, char * arg, int clearcmos) -+ipmi_chassis_set_bootdev(struct ipmi_intf * intf, char * arg, uint8_t *iflags) - { - uint8_t flags[5]; - int rc = 0; -+ int use_progress = 1; -+ -+ if (use_progress) { -+ /* set set-in-progress flag */ -+ memset(flags, 0, 5); -+ flags[0] = 0x01; -+ rc = ipmi_chassis_set_bootparam(intf, -+ IPMI_CHASSIS_BOOTPARAM_SET_IN_PROGRESS, flags, 1); -+ if (rc < 0) -+ use_progress = 0; -+ } - - memset(flags, 0, 5); - flags[0] = 0x01; - flags[1] = 0x01; -- rc = ipmi_chassis_set_bootparam(intf, 4, flags, 2); -- if (rc < 0) -+ rc = ipmi_chassis_set_bootparam(intf, IPMI_CHASSIS_BOOTPARAM_INFO_ACK, -+ flags, 2); -+ -+ if (rc < 0) { -+ if (use_progress) { -+ /* set-in-progress = set-complete */ -+ memset(flags, 0, 5); -+ ipmi_chassis_set_bootparam(intf, -+ IPMI_CHASSIS_BOOTPARAM_SET_IN_PROGRESS, -+ flags, 1); -+ } - return -1; -+ } -+ -+ if (iflags == NULL) -+ memset(flags, 0, 5); -+ else -+ memcpy(flags, iflags, sizeof (flags)); - -- memset(flags, 0, 5); - if (arg == NULL) - flags[1] = 0x00; - else if (strncmp(arg, "none", 4) == 0) -@@ -542,17 +569,42 @@ ipmi_chassis_set_bootdev(struct ipmi_int - flags[1] = 0x18; - else { - lprintf(LOG_ERR, "Invalid argument: %s", arg); -+ if (use_progress) { -+ /* set-in-progress = set-complete */ -+ memset(flags, 0, 5); -+ ipmi_chassis_set_bootparam(intf, -+ IPMI_CHASSIS_BOOTPARAM_SET_IN_PROGRESS, -+ flags, 1); -+ } - return -1; - } - -- if (clearcmos) -- flags[1] |= 0x80; -- - /* set flag valid bit */ -- flags[0] = 0x80; -- rc = ipmi_chassis_set_bootparam(intf, 5, flags, 5); -- if (rc == 0) -+ flags[0] |= 0x80; -+ -+ rc = ipmi_chassis_set_bootparam(intf, IPMI_CHASSIS_BOOTPARAM_BOOT_FLAGS, -+ flags, 5); -+ if (rc == 0) { -+ if (use_progress) { -+ /* set-in-progress = commit-write */ -+ memset(flags, 0, 5); -+ flags[0] = 0x02; -+ ipmi_chassis_set_bootparam(intf, -+ IPMI_CHASSIS_BOOTPARAM_SET_IN_PROGRESS, -+ flags, 1); -+ } -+ - printf("Set Boot Device to %s\n", arg); -+ } -+ -+ if (use_progress) { -+ /* set-in-progress = set-complete */ -+ memset(flags, 0, 5); -+ ipmi_chassis_set_bootparam(intf, -+ IPMI_CHASSIS_BOOTPARAM_SET_IN_PROGRESS, -+ flags, 1); -+ } -+ - return rc; - } - -@@ -649,7 +701,7 @@ ipmi_chassis_main(struct ipmi_intf * int - int rc = 0; - - if ((argc == 0) || (strncmp(argv[0], "help", 4) == 0)) { -- lprintf(LOG_NOTICE, "Chassis Commands: status, power, identify, policy, restart_cause, poh, bootdev, selftest"); -+ lprintf(LOG_NOTICE, "Chassis Commands: status, power, identify, policy, restart_cause, poh, bootdev, bootparam, selftest"); - } - else if (strncmp(argv[0], "status", 6) == 0) { - rc = ipmi_chassis_status(intf); -@@ -750,7 +802,7 @@ ipmi_chassis_main(struct ipmi_intf * int - lprintf(LOG_NOTICE, "bootparam set