Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package ipmitool for openSUSE:Factory checked in at 2022-05-14 22:54:37 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ipmitool (Old) and /work/SRC/openSUSE:Factory/.ipmitool.new.1538 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ipmitool" Sat May 14 22:54:37 2022 rev:45 rq:976990 version:1.8.18.249.g4d25a93 Changes: -------- --- /work/SRC/openSUSE:Factory/ipmitool/ipmitool.changes 2021-08-16 10:13:31.946960445 +0200 +++ /work/SRC/openSUSE:Factory/.ipmitool.new.1538/ipmitool.changes 2022-05-14 22:54:39.987178698 +0200 @@ -1,0 +2,11 @@ +Tue May 10 08:12:53 UTC 2022 - moritz.kody...@suse.com + +- Update to version 1.8.18.249.g4d25a93: + * man: Update the text for -C option + * chassis restart_cause: Add new causes + * sel: Remove redundant "Reserve SEL" + * sdr: Fix modifier unit + * Refactor bridging level detection to dedicated function + * Fix double bridge detection in get_max_(req|rsp)_data_size() + +------------------------------------------------------------------- Old: ---- ipmitool-1.8.18.238.gb7adc1d.obscpio New: ---- ipmitool-1.8.18.249.g4d25a93.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ipmitool.spec ++++++ --- /var/tmp/diff_new_pack.pvlZjd/_old 2022-05-14 22:54:40.663179543 +0200 +++ /var/tmp/diff_new_pack.pvlZjd/_new 2022-05-14 22:54:40.667179547 +0200 @@ -17,7 +17,7 @@ Name: ipmitool -Version: 1.8.18.238.gb7adc1d +Version: 1.8.18.249.g4d25a93 Release: 0 Summary: Utility for IPMI Control License: BSD-3-Clause ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.pvlZjd/_old 2022-05-14 22:54:40.715179607 +0200 +++ /var/tmp/diff_new_pack.pvlZjd/_new 2022-05-14 22:54:40.719179613 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/ipmitool/ipmitool.git</param> - <param name="changesrevision">b7adc1dcafd1f2a3f97063d84176591047bb335e</param></service></servicedata> + <param name="changesrevision">4d25a93f4922885c3d557bf4f9a83968ad2edee9</param></service></servicedata> (No newline at EOF) ++++++ enterprise-numbers ++++++ ++++ 6182 lines (skipped) ++++ between /work/SRC/openSUSE:Factory/ipmitool/enterprise-numbers ++++ and /work/SRC/openSUSE:Factory/.ipmitool.new.1538/enterprise-numbers ++++++ ipmitool-1.8.18.238.gb7adc1d.obscpio -> ipmitool-1.8.18.249.g4d25a93.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipmitool-1.8.18.238.gb7adc1d/.github/workflows/ci.yml new/ipmitool-1.8.18.249.g4d25a93/.github/workflows/ci.yml --- old/ipmitool-1.8.18.238.gb7adc1d/.github/workflows/ci.yml 2021-07-14 14:27:00.000000000 +0200 +++ new/ipmitool-1.8.18.249.g4d25a93/.github/workflows/ci.yml 2022-03-31 15:20:54.000000000 +0200 @@ -11,7 +11,7 @@ linux: strategy: matrix: - os: [ ubuntu-16.04, ubuntu-18.04, ubuntu-20.04 ] + os: [ ubuntu-18.04, ubuntu-20.04 ] runs-on: ${{ matrix.os }} steps: - name: install dependencies @@ -54,7 +54,10 @@ run: make distcheck macos-catalina: - runs-on: macos-10.15 + strategy: + matrix: + os: [ macos-10.15, macos-11 ] + runs-on: ${{ matrix.os }} steps: - name: install dependencies diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipmitool-1.8.18.238.gb7adc1d/doc/ipmitool.1.in new/ipmitool-1.8.18.249.g4d25a93/doc/ipmitool.1.in --- old/ipmitool-1.8.18.238.gb7adc1d/doc/ipmitool.1.in 2021-07-14 14:27:00.000000000 +0200 +++ new/ipmitool-1.8.18.249.g4d25a93/doc/ipmitool.1.in 2022-03-31 15:20:54.000000000 +0200 @@ -97,9 +97,14 @@ .TP \fB\-C\fR <\fIciphersuite\fP> The remote server authentication, integrity, and encryption algorithms -to use for IPMIv2.0 \fIlanplus\fP connections. See table 22\-19 in the -IPMIv2.0 specification. The default is 3 which specifies RAKP\-HMAC\-SHA1 -authentication, HMAC\-SHA1\-96 integrity, and AES\-CBC\-128 encryption algorithms. +to use for IPMIv2.0 \fIlanplus\fP connections. See table 22\-20 in the +IPMI v2.0 specification. The default is 17 which specifies RAKP\-HMAC\-SHA256 +authentication, HMAC\-SHA256\-128 integrity, and AES\-CBC\-128 encryption algorithms. + +NOTE: In +.BR ipmitool +1.8.18 and earlier the default was 3, which was insecure and was not supported +by some more recent BMC implementations. .TP \fB\-d \fIN\fP\fR Use device number N to specify the /dev/ipmiN (or @@ -3742,7 +3747,7 @@ The \fB\-C\fR option allows you specify the authentication, integrity, and encryption algorithms to use for for \fIlanplus\fP session based on the cipher suite ID found in the IPMIv2.0 specification in table -22\-19. The default cipher suite is \fI17\fP which specifies +22\-20. The default cipher suite is \fI17\fP which specifies RAKP\-HMAC\-SHA256 authentication, HMAC\-SHA256\-128 integrity, and AES\-CBC\-128 encryption algorightms. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipmitool-1.8.18.238.gb7adc1d/include/ipmitool/ipmi_intf.h new/ipmitool-1.8.18.249.g4d25a93/include/ipmitool/ipmi_intf.h --- old/ipmitool-1.8.18.238.gb7adc1d/include/ipmitool/ipmi_intf.h 2021-07-14 14:27:00.000000000 +0200 +++ new/ipmitool-1.8.18.249.g4d25a93/include/ipmitool/ipmi_intf.h 2022-03-31 15:20:54.000000000 +0200 @@ -242,6 +242,7 @@ uint16_t ipmi_intf_get_max_request_data_size(struct ipmi_intf *intf); uint16_t ipmi_intf_get_max_response_data_size(struct ipmi_intf *intf); +uint8_t ipmi_intf_get_bridging_level(const struct ipmi_intf *intf); struct ipmi_intf * ipmi_intf_load(char * name); void ipmi_intf_print(struct ipmi_intf_support * intflist); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipmitool-1.8.18.238.gb7adc1d/include/ipmitool/ipmi_strings.h new/ipmitool-1.8.18.249.g4d25a93/include/ipmitool/ipmi_strings.h --- old/ipmitool-1.8.18.238.gb7adc1d/include/ipmitool/ipmi_strings.h 2021-07-14 14:27:00.000000000 +0200 +++ new/ipmitool-1.8.18.249.g4d25a93/include/ipmitool/ipmi_strings.h 2022-03-31 15:20:54.000000000 +0200 @@ -49,6 +49,7 @@ extern const struct valstr ipmi_channel_protocol_vals[]; extern const struct valstr ipmi_channel_medium_vals[]; extern const struct valstr ipmi_chassis_power_control_vals[]; +extern const struct valstr ipmi_chassis_restart_cause_vals[]; extern const struct valstr ipmi_auth_algorithms[]; extern const struct valstr ipmi_integrity_algorithms[]; extern const struct valstr ipmi_encryption_algorithms[]; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipmitool-1.8.18.238.gb7adc1d/lib/ipmi_chassis.c new/ipmitool-1.8.18.249.g4d25a93/lib/ipmi_chassis.c --- old/ipmitool-1.8.18.238.gb7adc1d/lib/ipmi_chassis.c 2021-07-14 14:27:00.000000000 +0200 +++ new/ipmitool-1.8.18.249.g4d25a93/lib/ipmi_chassis.c 2022-03-31 15:20:54.000000000 +0200 @@ -378,42 +378,8 @@ return -1; } - printf("System restart cause: "); - - switch (rsp->data[0] & 0xf) { - case 0: - printf("unknown\n"); - break; - case 1: - printf("chassis power control command\n"); - break; - case 2: - printf("reset via pushbutton\n"); - break; - case 3: - printf("power-up via pushbutton\n"); - break; - case 4: - printf("watchdog expired\n"); - break; - case 5: - printf("OEM\n"); - break; - case 6: - printf("power-up due to always-restore power policy\n"); - break; - case 7: - printf("power-up due to restore-previous power policy\n"); - break; - case 8: - printf("reset via PEF\n"); - break; - case 9: - printf("power-cycle via PEF\n"); - break; - default: - printf("invalid\n"); - } + printf("System restart cause: %s\n", + val2str(rsp->data[0] & 0xf, ipmi_chassis_restart_cause_vals)); return 0; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipmitool-1.8.18.238.gb7adc1d/lib/ipmi_sdr.c new/ipmitool-1.8.18.249.g4d25a93/lib/ipmi_sdr.c --- old/ipmitool-1.8.18.238.gb7adc1d/lib/ipmi_sdr.c 2021-07-14 14:27:00.000000000 +0200 +++ new/ipmitool-1.8.18.249.g4d25a93/lib/ipmi_sdr.c 2022-03-31 15:20:54.000000000 +0200 @@ -258,7 +258,7 @@ } if (modifier <= UNIT_TYPE_MAX) { - modstr = unit_desc[base]; + modstr = unit_desc[modifier]; } else { modstr = "invalid"; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipmitool-1.8.18.238.gb7adc1d/lib/ipmi_sel.c new/ipmitool-1.8.18.249.g4d25a93/lib/ipmi_sel.c --- old/ipmitool-1.8.18.238.gb7adc1d/lib/ipmi_sel.c 2021-07-14 14:27:00.000000000 +0200 +++ new/ipmitool-1.8.18.249.g4d25a93/lib/ipmi_sel.c 2022-03-31 15:20:54.000000000 +0200 @@ -2273,21 +2273,6 @@ return 0; } - memset(&req, 0, sizeof(req)); - req.msg.netfn = IPMI_NETFN_STORAGE; - req.msg.cmd = IPMI_CMD_RESERVE_SEL; - - rsp = intf->sendrecv(intf, &req); - if (!rsp) { - lprintf(LOG_ERR, "Reserve SEL command failed"); - return -1; - } - if (rsp->ccode) { - lprintf(LOG_ERR, "Reserve SEL command failed: %s", - val2str(rsp->ccode, completion_code_vals)); - return -1; - } - if (count < 0) { /** Show only the most recent 'count' records. */ int i; @@ -2923,11 +2908,6 @@ return (-1); } - if (ipmi_sel_reserve(intf) == 0) { - lprintf(LOG_ERR, "Unable to reserve SEL"); - return (-1); - } - for (i = 0; i < argc; i++) { if (str2ushort(argv[i], &id) != 0) { lprintf(LOG_ERR, "Given SEL ID '%s' is invalid.", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipmitool-1.8.18.238.gb7adc1d/lib/ipmi_strings.c new/ipmitool-1.8.18.249.g4d25a93/lib/ipmi_strings.c --- old/ipmitool-1.8.18.238.gb7adc1d/lib/ipmi_strings.c 2021-07-14 14:27:00.000000000 +0200 +++ new/ipmitool-1.8.18.249.g4d25a93/lib/ipmi_strings.c 2022-03-31 15:20:54.000000000 +0200 @@ -1265,6 +1265,25 @@ { 0x00, NULL }, }; +/* + * See Table 28-11, Get System Restart Cause Command + */ +const struct valstr ipmi_chassis_restart_cause_vals[] = { + { 0x0, "unknown" }, + { 0x1, "chassis power control command" }, + { 0x2, "reset via pushbutton" }, + { 0x3, "power-up via pushbutton" }, + { 0x4, "watchdog expired" }, + { 0x5, "OEM" }, + { 0x6, "power-up due to always-restore power policy" }, + { 0x7, "power-up due to restore-previous power policy" }, + { 0x8, "reset via PEF" }, + { 0x9, "power-cycle via PEF" }, + { 0xa, "soft reset" }, + { 0xb, "power-up via RTC wakeup" }, + { 0xFF, NULL }, +}; + const struct valstr ipmi_auth_algorithms[] = { { IPMI_AUTH_RAKP_NONE, "none" }, { IPMI_AUTH_RAKP_HMAC_SHA1, "hmac_sha1" }, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipmitool-1.8.18.238.gb7adc1d/src/ipmievd.c new/ipmitool-1.8.18.249.g4d25a93/src/ipmievd.c --- old/ipmitool-1.8.18.238.gb7adc1d/src/ipmievd.c 2021-07-14 14:27:00.000000000 +0200 +++ new/ipmitool-1.8.18.249.g4d25a93/src/ipmievd.c 2022-03-31 15:20:54.000000000 +0200 @@ -422,7 +422,7 @@ openipmi_read(struct ipmi_event_intf * eintf) { struct ipmi_addr addr; - struct ipmi_recv recv; + struct ipmi_recv recv = {}; uint8_t data[80]; int rv; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipmitool-1.8.18.238.gb7adc1d/src/plugins/ipmi_intf.c new/ipmitool-1.8.18.249.g4d25a93/src/plugins/ipmi_intf.c --- old/ipmitool-1.8.18.238.gb7adc1d/src/plugins/ipmi_intf.c 2021-07-14 14:27:00.000000000 +0200 +++ new/ipmitool-1.8.18.249.g4d25a93/src/plugins/ipmi_intf.c 2022-03-31 15:20:54.000000000 +0200 @@ -502,13 +502,14 @@ ipmi_intf_get_max_request_data_size(struct ipmi_intf * intf) { int16_t size; + uint8_t bridging_level = ipmi_intf_get_bridging_level(intf); size = intf->max_request_data_size; /* check if request size is not specified */ if (!size) { /* - * The IPMB standard overall message length for ?non -bridging? + * The IPMB standard overall message length for non-bridging * messages is specified as 32 bytes, maximum, including slave * address. This sets the upper limit for typical IPMI messages. * With the exception of messages used for bridging messages to @@ -521,14 +522,14 @@ size = IPMI_DEFAULT_PAYLOAD_SIZE; /* check if message is forwarded */ - if (intf->target_addr && intf->target_addr != intf->my_addr) { + if (bridging_level) { /* add Send Message request size */ size += 8; } } /* check if message is forwarded */ - if (intf->target_addr && intf->target_addr != intf->my_addr) { + if (bridging_level) { /* subtract send message request size */ size -= 8; @@ -541,7 +542,7 @@ } /* check for double bridging */ - if (intf->transit_addr && intf->transit_addr != intf->target_addr) { + if (bridging_level == 2) { /* subtract inner send message request size */ size -= 8; } @@ -559,13 +560,14 @@ ipmi_intf_get_max_response_data_size(struct ipmi_intf * intf) { int16_t size; + uint8_t bridging_level = ipmi_intf_get_bridging_level(intf); size = intf->max_response_data_size; /* check if response size is not specified */ if (!size) { /* - * The IPMB standard overall message length for ?non -bridging? + * The IPMB standard overall message length for non-bridging * messages is specified as 32 bytes, maximum, including slave * address. This sets the upper limit for typical IPMI messages. * With the exception of messages used for bridging messages to @@ -578,14 +580,14 @@ size = IPMI_DEFAULT_PAYLOAD_SIZE; /* response length with subtracted header and checksum byte */ /* check if message is forwarded */ - if (intf->target_addr && intf->target_addr != intf->my_addr) { + if (bridging_level) { /* add Send Message header size */ size += 7; } } /* check if message is forwarded */ - if (intf->target_addr && intf->target_addr != intf->my_addr) { + if (bridging_level) { /* * Some IPMI controllers like PICMG AMC Carriers embed responses * to the forwarded messages into the Send Message response. @@ -603,7 +605,7 @@ } /* check for double bridging */ - if (intf->transit_addr && intf->transit_addr != intf->target_addr) { + if (bridging_level == 2) { /* subtract inner send message header size */ size -= 8; } @@ -617,6 +619,25 @@ return size; } +uint8_t +ipmi_intf_get_bridging_level(const struct ipmi_intf *intf) +{ + uint8_t bridging_level; + + if (intf->target_addr && (intf->target_addr != intf->my_addr)) { + if (intf->transit_addr && + (intf->transit_addr != intf->target_addr || intf->transit_channel != intf->target_channel)) { + bridging_level = 2; + } else { + bridging_level = 1; + } + } else { + bridging_level = 0; + } + + return bridging_level; +} + void ipmi_intf_set_max_request_data_size(struct ipmi_intf * intf, uint16_t size) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipmitool-1.8.18.238.gb7adc1d/src/plugins/open/open.c new/ipmitool-1.8.18.249.g4d25a93/src/plugins/open/open.c --- old/ipmitool-1.8.18.238.gb7adc1d/src/plugins/open/open.c 2021-07-14 14:27:00.000000000 +0200 +++ new/ipmitool-1.8.18.249.g4d25a93/src/plugins/open/open.c 2022-03-31 15:20:54.000000000 +0200 @@ -170,7 +170,7 @@ struct ipmi_rs * ipmi_openipmi_send_cmd(struct ipmi_intf *intf, struct ipmi_rq *req) { - struct ipmi_recv recv; + struct ipmi_recv recv = {}; struct ipmi_addr addr; struct ipmi_system_interface_addr bmc_addr = { .addr_type = IPMI_SYSTEM_INTERFACE_ADDR_TYPE, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipmitool-1.8.18.238.gb7adc1d/src/plugins/serial/serial_basic.c new/ipmitool-1.8.18.249.g4d25a93/src/plugins/serial/serial_basic.c --- old/ipmitool-1.8.18.238.gb7adc1d/src/plugins/serial/serial_basic.c 2021-07-14 14:27:00.000000000 +0200 +++ new/ipmitool-1.8.18.249.g4d25a93/src/plugins/serial/serial_basic.c 2022-03-31 15:20:54.000000000 +0200 @@ -612,18 +612,7 @@ uint8_t * data = msg, seq; struct ipmb_msg_hdr * hdr = (struct ipmb_msg_hdr *) msg; struct ipmi_send_message_rq * inner_rq = NULL, * outer_rq = NULL; - int bridging_level; - - /* acquire bridging level */ - if (intf->target_addr && intf->target_addr != intf->my_addr) { - if (intf->transit_addr != 0) { - bridging_level = 2; - } else { - bridging_level = 1; - } - } else { - bridging_level = 0; - } + int bridging_level = ipmi_intf_get_bridging_level(intf); /* check overall packet length */ if(req->msg.data_len + 7 + bridging_level * 8 > max_len) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipmitool-1.8.18.238.gb7adc1d/src/plugins/serial/serial_terminal.c new/ipmitool-1.8.18.249.g4d25a93/src/plugins/serial/serial_terminal.c --- old/ipmitool-1.8.18.238.gb7adc1d/src/plugins/serial/serial_terminal.c 2021-07-14 14:27:00.000000000 +0200 +++ new/ipmitool-1.8.18.249.g4d25a93/src/plugins/serial/serial_terminal.c 2022-03-31 15:20:54.000000000 +0200 @@ -473,18 +473,7 @@ struct serial_term_hdr * term_hdr = (struct serial_term_hdr *) msg; struct ipmi_send_message_rq * outer_rq = NULL; struct ipmi_send_message_rq * inner_rq = NULL; - int bridging_level; - - /* acquire bridging level */ - if (intf->target_addr && intf->target_addr != intf->my_addr) { - if (intf->transit_addr != 0) { - bridging_level = 2; - } else { - bridging_level = 1; - } - } else { - bridging_level = 0; - } + int bridging_level = ipmi_intf_get_bridging_level(intf); /* check overall packet length */ if(req->msg.data_len + 3 + bridging_level * 8 > max_len) { @@ -635,7 +624,7 @@ /* body */ for (i = 0; i < msg_len; i++) { - buf += sprintf( buf, "%02x", msg[i]); + buf += sprintf((char*) buf, "%02x", msg[i]); } /* stop character */ ++++++ ipmitool.obsinfo ++++++ --- /var/tmp/diff_new_pack.pvlZjd/_old 2022-05-14 22:54:41.067180048 +0200 +++ /var/tmp/diff_new_pack.pvlZjd/_new 2022-05-14 22:54:41.067180048 +0200 @@ -1,6 +1,5 @@ name: ipmitool -version: 1.8.18.238.gb7adc1d -mtime: 1626265620 -commit: b7adc1dcafd1f2a3f97063d84176591047bb335e - +version: 1.8.18.249.g4d25a93 +mtime: 1648732854 +commit: 4d25a93f4922885c3d557bf4f9a83968ad2edee9