commit e3799b2bbdcbd49b0a1fbebbbbdbe74d70833ccfc5459bd9a72e816295199b10 Author: OBS User unknown Date: Mon Jan 15 23:17:42 2007 +0000 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/ipmitool?expand=0&rev=1 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/ipmitool-1.8.8.tar.gz b/ipmitool-1.8.8.tar.gz new file mode 100644 index 0000000..c49b260 --- /dev/null +++ b/ipmitool-1.8.8.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d0abd9131d066faf0119722159dc8e768ff373fa30cb1a49dc5c376c9e36909 +size 634899 diff --git a/ipmitool-CVS-2006-10-13.patch b/ipmitool-CVS-2006-10-13.patch new file mode 100644 index 0000000..4b640b3 --- /dev/null +++ b/ipmitool-CVS-2006-10-13.patch @@ -0,0 +1,7201 @@ +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