** Description changed:

  [ Impact ]
  
  ipmitool is incorrectly parsing the timestamp of event fields, showing
  two dates instead of a date and a time. It's important to get the
  correct timestamp of events, and the current situation limits this
  information to purely a day, instead of a proper timestamp.
  
- 
  [ Test Plan ]
  
  The test plan involves getting an event and checking if the timestamp
  contains a date and a time, instead of just a date shown twice. There
  are several ways to do this, but they all need a working BMC listening
  to IPMI commands.
  
  For the test plan, we will deploy 24.04 on a bare metal machine which
  has a BMC that ipmitool can query via localhost, without credentials.
  And then for the testing, use a LXD container for each ubuntu release
  under test, and run ipmitool inside that LXC.
  
  Here are the steps.
  
  # Deploy ubuntu 24.04 on a bare metal machine with a working BMC
  
  # setup LXD
  sudo lxd init --auto
  
  # For each ubuntu release under test, run the following commands. Here
  we will show it for noble, but iterate using oracular and plucky:
  
  lxc launch ubuntu-daily:$release $release-test
  
  # this will passthrough the IPMI device from the host to the container
- lxc config set device add $release-test ipmi unix-char path=/dev/ipmi0
+ lxc config device add $release-test ipmi unix-char path=/dev/ipmi0
  
  # enter the container to run the ipmitool command that will show the bug
  lxc exec $release-test -- bash -c "apt update; apt install ipmitool -y"
  lxc exec $release-test -- ipmitool sel get 1
  
  # With the bug, the output of the ipmitool command above will show a
  timestamp like:
  
-  Timestamp             : 02/25/12 02/25/12
+  Timestamp             : 02/25/12 02/25/12
  
  # With the fix, that timestamp will include a time:
  
-  Timestamp             : 02/25/12 00:41:13 UTC
- 
+  Timestamp             : 02/25/12 00:41:13 UTC
  
  [ Where problems could occur ]
  
   * Think about what the upload changes in the software. Imagine the
     change is wrong or breaks something else: how would this show up?
  
   * It is assumed that any SRU candidate patch is well-tested before
     upload and has a low overall risk of regression, but it's important
     to make the effort to think about what ''could'' happen in the event
     of a regression.
  
   * This must never be "None" or "Low", or entirely an argument as to why
     your upload is low risk.
  
   * This both shows the SRU team that the risks have been considered,
     and provides guidance to testers in regression-testing the SRU.
  
  [ Other Info ]
  
   * Anything else you think is useful to include
  
   * Make sure to explain any deviation from the norm, to save the SRU
     reviewer from having to infer your reasoning, possibly incorrectly.
     This should also help reduce review iterations, particularly when the
     reason for the deviation is not obvious.
  
   * Anticipate questions from users, SRU, +1 maintenance, security teams
     and the Technical Board and address these questions in advance
  
  [ Original Description ]
  
  Hello,
  
  when running impitool sel get <event id>,
  the timestamp information is showing twice the date, but not the hour
  
  fr3d@safact:~/gbtipmitool/run$ ipmitool -I lanplus -U admin -P <password> -H 
10.197.177.97 sel get 0x28a
  SEL Record ID          : 028a
   Record Type           : 02
   Timestamp             : 04/16/2025 04/16/2025
   Generator ID          : 0020
   EvM Revision          : 04
   Sensor Type           : Unknown
   Sensor Number         : 00
   Event Type            : Sensor-specific Discrete
   Event Direction       : Assertion Event
   Event Data            : 030000
   Description           :
  
  Using ipmi-sel / free-ipmi, the hour is reported in the nice way
  
  fr3d@safact:~/gbtipmitool/run$ ipmi-sel  -h 10.197.177.97 -u admin -p 
<password>  --display=650
  ID  | Date        | Time     | Name             | Type                     | 
Event
  650 | Apr-16-2025 | 23:58:03 | Sensor #0        | OEM Reserved             | 
Event Offset = 03h
  
  (note: this is the same event 0x28a = 650)
  
  Still using free-ipmi, in debug mode we can see the 32b timetsamp:
  
  10.197.177.97: [              19h] = checksum2[ 8b]
  10.197.177.97: =====================================================
  10.197.177.97: SEL Event Record
  10.197.177.97: =====================================================
  10.197.177.97: [             28Ah] = record_id[16b]
  10.197.177.97: [               2h] = record_type[ 8b]
  10.197.177.97: [        6800440Bh] = timestamp[32b]
  10.197.177.97: [               0h] = generator_id.id_type[ 1b]
  10.197.177.97: [              10h] = generator_id.id[ 7b]
  10.197.177.97: [               0h] = ipmb_device_lun[ 2b]
  10.197.177.97: [               0h] = reserved[ 2b]
  10.197.177.97: [               0h] = channel_number[ 4b]
  10.197.177.97: [               4h] = event_message_format_version[ 8b]
  10.197.177.97: [              C3h] = sensor_type[ 8b]
  10.197.177.97: [               0h] = sensor_number[ 8b]
  10.197.177.97: [              6Fh] = event_type_code[ 7b]
  10.197.177.97: [               0h] = event_dir[ 1b]
  10.197.177.97: [               3h] = offset_from_event_reading_type_code[ 4b]
  10.197.177.97: [               0h] = event_data3_flag[ 2b]
  10.197.177.97: [               0h] = event_data2_flag[ 2b]
  10.197.177.97: [               0h] = event_data2[ 8b]
  10.197.177.97: [               0h] = event_data3[ 8b]
  10.197.177.97: =====================================================
  10.197.177.97: IPMI 1.5 Reserve SEL Request
  10.197.177.97: =====================================================
  10.197.177.97: RMCP Header:
  
  Then, using ipmitool with -vvv flag, we can see the righttime stamp has
  been reported by the BMC
  
  Looking up SEL entry 0x28a
  
  >> Sending IPMI command payload
  >>    netfn   : 0x0a
  >>    command : 0x43
  >>    data    : 0x00 0x00 0x8a 0x02 0x00 0xff
  
  BUILDING A v2 COMMAND
  Local RqAddr 0x20 transit 0:0 target 0x20:0 bridgePossible 1
  >> Initialization vector (16 bytes)
   9a 01 24 2a 62 43 84 3b ae 2d 64 04 34 71 32 74
  authcode input (48 bytes)
   06 c0 80 0e 5e 9d 0c 00 00 00 20 00 9a 01 24 2a
   62 43 84 3b ae 2d 64 04 34 71 32 74 5c ee 34 ac
   0e f8 83 ca 27 56 99 07 72 21 83 f1 ff ff 02 07
  authcode output (16 bytes)
   2a b7 99 68 b5 d5 e4 31 c0 3b a0 87 a1 10 48 b4
  << IPMI Response Session Header
  <<   Authtype                : RMCP+
  <<   Payload type            : IPMI (0)
  <<   Session ID              : 0xa0a2a3a4
  <<   Sequence                : 0x00000006
  <<   IPMI Msg/Payload Length : 48
  << IPMI Response Message Header
  <<   Rq Addr    : 81
  <<   NetFn      : 0b
  <<   Rq LUN     : 0
  <<   Rs Addr    : 20
  <<   Rq Seq     : 0a
  <<   Rs Lun     : 0
  <<   Command    : 43
  <<   Compl Code : 0x00
  SEL Entry: 8a02020b440068200004c3006f030000
  
  => in the SEL Entry, the timestamp is "0b440068" (=> 0x6800440b as it is
  a 32b integer)
  
  So the issue is not related to IPMI data (both free-ipmi and ipmitool got the 
right timestamp)
  but it seems to be a display issue in ipmitool
  
  Note: in an old stackoverflow thread, we can see ipmitool output with Hour in 
the event timestamp
  
https://stackoverflow.com/questions/9265148/ipmitool-sel-command-on-per610-does-not-provide-detailed-information
  machine:/ # ipmitool sel get 0x2c
  SEL Record ID          : 002c
   Record Type           : 02
   Timestamp             : 02/13/2012 17:49:21
   Generator ID          : 0021
   EvM Revision          : 04
   Sensor Type           : Voltage
   Sensor Number         : 60
   Event Type            : Threshold
   Event Direction       : Assertion Event
   Event Data            : 02ffff
   Description           : Lower Critical going low
  
  Thanks
  --
  Fred
  
  ProblemType: Bug
  DistroRelease: Ubuntu 24.04
  Package: ipmitool 1.8.19-7ubuntu0.24.04.1
  ProcVersionSignature: Ubuntu 6.8.0-57.59-generic 6.8.12
  Uname: Linux 6.8.0-57-generic x86_64
  ApportVersion: 2.28.1-0ubuntu3.5
  Architecture: amd64
  CasperMD5CheckResult: pass
  CloudArchitecture: x86_64
  CloudID: none
  CloudName: none
  CloudPlatform: none
  CloudSubPlatform: config
  Date: Thu Apr 17 09:36:35 2025
  InstallationDate: Installed on 2022-04-26 (1087 days ago)
  InstallationMedia: Ubuntu-Server 22.04 LTS "Jammy Jellyfish" - Release amd64 
(20220421)
  ProcEnviron:
   LANG=en_US.UTF-8
   PATH=(custom, no user)
   SHELL=/bin/bash
   TERM=xterm
   XDG_RUNTIME_DIR=<set>
  SourcePackage: ipmitool
  UpgradeStatus: Upgraded to noble on 2024-10-23 (176 days ago)

** Description changed:

  [ Impact ]
  
  ipmitool is incorrectly parsing the timestamp of event fields, showing
  two dates instead of a date and a time. It's important to get the
  correct timestamp of events, and the current situation limits this
  information to purely a day, instead of a proper timestamp.
  
  [ Test Plan ]
  
  The test plan involves getting an event and checking if the timestamp
  contains a date and a time, instead of just a date shown twice. There
  are several ways to do this, but they all need a working BMC listening
  to IPMI commands.
  
  For the test plan, we will deploy 24.04 on a bare metal machine which
  has a BMC that ipmitool can query via localhost, without credentials.
  And then for the testing, use a LXD container for each ubuntu release
  under test, and run ipmitool inside that LXC.
  
  Here are the steps.
  
  # Deploy ubuntu 24.04 on a bare metal machine with a working BMC
  
  # setup LXD
  sudo lxd init --auto
  
  # For each ubuntu release under test, run the following commands. Here
  we will show it for noble, but iterate using oracular and plucky:
  
  lxc launch ubuntu-daily:$release $release-test
  
  # this will passthrough the IPMI device from the host to the container
  lxc config device add $release-test ipmi unix-char path=/dev/ipmi0
  
  # enter the container to run the ipmitool command that will show the bug
  lxc exec $release-test -- bash -c "apt update; apt install ipmitool -y"
  lxc exec $release-test -- ipmitool sel get 1
  
  # With the bug, the output of the ipmitool command above will show a
- timestamp like:
+ timestamp with two dates, instead of one date and one time:
  
   Timestamp             : 02/25/12 02/25/12
  
- # With the fix, that timestamp will include a time:
+ # With the fix, that timestamp will show a date and a time:
  
   Timestamp             : 02/25/12 00:41:13 UTC
  
  [ Where problems could occur ]
  
   * Think about what the upload changes in the software. Imagine the
     change is wrong or breaks something else: how would this show up?
  
   * It is assumed that any SRU candidate patch is well-tested before
     upload and has a low overall risk of regression, but it's important
     to make the effort to think about what ''could'' happen in the event
     of a regression.
  
   * This must never be "None" or "Low", or entirely an argument as to why
     your upload is low risk.
  
   * This both shows the SRU team that the risks have been considered,
     and provides guidance to testers in regression-testing the SRU.
  
  [ Other Info ]
  
   * Anything else you think is useful to include
  
   * Make sure to explain any deviation from the norm, to save the SRU
     reviewer from having to infer your reasoning, possibly incorrectly.
     This should also help reduce review iterations, particularly when the
     reason for the deviation is not obvious.
  
   * Anticipate questions from users, SRU, +1 maintenance, security teams
     and the Technical Board and address these questions in advance
  
  [ Original Description ]
  
  Hello,
  
  when running impitool sel get <event id>,
  the timestamp information is showing twice the date, but not the hour
  
  fr3d@safact:~/gbtipmitool/run$ ipmitool -I lanplus -U admin -P <password> -H 
10.197.177.97 sel get 0x28a
  SEL Record ID          : 028a
   Record Type           : 02
   Timestamp             : 04/16/2025 04/16/2025
   Generator ID          : 0020
   EvM Revision          : 04
   Sensor Type           : Unknown
   Sensor Number         : 00
   Event Type            : Sensor-specific Discrete
   Event Direction       : Assertion Event
   Event Data            : 030000
   Description           :
  
  Using ipmi-sel / free-ipmi, the hour is reported in the nice way
  
  fr3d@safact:~/gbtipmitool/run$ ipmi-sel  -h 10.197.177.97 -u admin -p 
<password>  --display=650
  ID  | Date        | Time     | Name             | Type                     | 
Event
  650 | Apr-16-2025 | 23:58:03 | Sensor #0        | OEM Reserved             | 
Event Offset = 03h
  
  (note: this is the same event 0x28a = 650)
  
  Still using free-ipmi, in debug mode we can see the 32b timetsamp:
  
  10.197.177.97: [              19h] = checksum2[ 8b]
  10.197.177.97: =====================================================
  10.197.177.97: SEL Event Record
  10.197.177.97: =====================================================
  10.197.177.97: [             28Ah] = record_id[16b]
  10.197.177.97: [               2h] = record_type[ 8b]
  10.197.177.97: [        6800440Bh] = timestamp[32b]
  10.197.177.97: [               0h] = generator_id.id_type[ 1b]
  10.197.177.97: [              10h] = generator_id.id[ 7b]
  10.197.177.97: [               0h] = ipmb_device_lun[ 2b]
  10.197.177.97: [               0h] = reserved[ 2b]
  10.197.177.97: [               0h] = channel_number[ 4b]
  10.197.177.97: [               4h] = event_message_format_version[ 8b]
  10.197.177.97: [              C3h] = sensor_type[ 8b]
  10.197.177.97: [               0h] = sensor_number[ 8b]
  10.197.177.97: [              6Fh] = event_type_code[ 7b]
  10.197.177.97: [               0h] = event_dir[ 1b]
  10.197.177.97: [               3h] = offset_from_event_reading_type_code[ 4b]
  10.197.177.97: [               0h] = event_data3_flag[ 2b]
  10.197.177.97: [               0h] = event_data2_flag[ 2b]
  10.197.177.97: [               0h] = event_data2[ 8b]
  10.197.177.97: [               0h] = event_data3[ 8b]
  10.197.177.97: =====================================================
  10.197.177.97: IPMI 1.5 Reserve SEL Request
  10.197.177.97: =====================================================
  10.197.177.97: RMCP Header:
  
  Then, using ipmitool with -vvv flag, we can see the righttime stamp has
  been reported by the BMC
  
  Looking up SEL entry 0x28a
  
  >> Sending IPMI command payload
  >>    netfn   : 0x0a
  >>    command : 0x43
  >>    data    : 0x00 0x00 0x8a 0x02 0x00 0xff
  
  BUILDING A v2 COMMAND
  Local RqAddr 0x20 transit 0:0 target 0x20:0 bridgePossible 1
  >> Initialization vector (16 bytes)
   9a 01 24 2a 62 43 84 3b ae 2d 64 04 34 71 32 74
  authcode input (48 bytes)
   06 c0 80 0e 5e 9d 0c 00 00 00 20 00 9a 01 24 2a
   62 43 84 3b ae 2d 64 04 34 71 32 74 5c ee 34 ac
   0e f8 83 ca 27 56 99 07 72 21 83 f1 ff ff 02 07
  authcode output (16 bytes)
   2a b7 99 68 b5 d5 e4 31 c0 3b a0 87 a1 10 48 b4
  << IPMI Response Session Header
  <<   Authtype                : RMCP+
  <<   Payload type            : IPMI (0)
  <<   Session ID              : 0xa0a2a3a4
  <<   Sequence                : 0x00000006
  <<   IPMI Msg/Payload Length : 48
  << IPMI Response Message Header
  <<   Rq Addr    : 81
  <<   NetFn      : 0b
  <<   Rq LUN     : 0
  <<   Rs Addr    : 20
  <<   Rq Seq     : 0a
  <<   Rs Lun     : 0
  <<   Command    : 43
  <<   Compl Code : 0x00
  SEL Entry: 8a02020b440068200004c3006f030000
  
  => in the SEL Entry, the timestamp is "0b440068" (=> 0x6800440b as it is
  a 32b integer)
  
  So the issue is not related to IPMI data (both free-ipmi and ipmitool got the 
right timestamp)
  but it seems to be a display issue in ipmitool
  
  Note: in an old stackoverflow thread, we can see ipmitool output with Hour in 
the event timestamp
  
https://stackoverflow.com/questions/9265148/ipmitool-sel-command-on-per610-does-not-provide-detailed-information
  machine:/ # ipmitool sel get 0x2c
  SEL Record ID          : 002c
   Record Type           : 02
   Timestamp             : 02/13/2012 17:49:21
   Generator ID          : 0021
   EvM Revision          : 04
   Sensor Type           : Voltage
   Sensor Number         : 60
   Event Type            : Threshold
   Event Direction       : Assertion Event
   Event Data            : 02ffff
   Description           : Lower Critical going low
  
  Thanks
  --
  Fred
  
  ProblemType: Bug
  DistroRelease: Ubuntu 24.04
  Package: ipmitool 1.8.19-7ubuntu0.24.04.1
  ProcVersionSignature: Ubuntu 6.8.0-57.59-generic 6.8.12
  Uname: Linux 6.8.0-57-generic x86_64
  ApportVersion: 2.28.1-0ubuntu3.5
  Architecture: amd64
  CasperMD5CheckResult: pass
  CloudArchitecture: x86_64
  CloudID: none
  CloudName: none
  CloudPlatform: none
  CloudSubPlatform: config
  Date: Thu Apr 17 09:36:35 2025
  InstallationDate: Installed on 2022-04-26 (1087 days ago)
  InstallationMedia: Ubuntu-Server 22.04 LTS "Jammy Jellyfish" - Release amd64 
(20220421)
  ProcEnviron:
   LANG=en_US.UTF-8
   PATH=(custom, no user)
   SHELL=/bin/bash
   TERM=xterm
   XDG_RUNTIME_DIR=<set>
  SourcePackage: ipmitool
  UpgradeStatus: Upgraded to noble on 2024-10-23 (176 days ago)

** Description changed:

  [ Impact ]
  
  ipmitool is incorrectly parsing the timestamp of event fields, showing
  two dates instead of a date and a time. It's important to get the
  correct timestamp of events, and the current situation limits this
  information to purely a day, instead of a proper timestamp.
  
  [ Test Plan ]
  
  The test plan involves getting an event and checking if the timestamp
  contains a date and a time, instead of just a date shown twice. There
  are several ways to do this, but they all need a working BMC listening
  to IPMI commands.
  
  For the test plan, we will deploy 24.04 on a bare metal machine which
  has a BMC that ipmitool can query via localhost, without credentials.
  And then for the testing, use a LXD container for each ubuntu release
  under test, and run ipmitool inside that LXC.
  
  Here are the steps.
  
  # Deploy ubuntu 24.04 on a bare metal machine with a working BMC
  
  # setup LXD
  sudo lxd init --auto
  
  # For each ubuntu release under test, run the following commands. Here
  we will show it for noble, but iterate using oracular and plucky:
  
  lxc launch ubuntu-daily:$release $release-test
  
  # this will passthrough the IPMI device from the host to the container
  lxc config device add $release-test ipmi unix-char path=/dev/ipmi0
  
  # enter the container to run the ipmitool command that will show the bug
  lxc exec $release-test -- bash -c "apt update; apt install ipmitool -y"
  lxc exec $release-test -- ipmitool sel get 1
  
  # With the bug, the output of the ipmitool command above will show a
  timestamp with two dates, instead of one date and one time:
  
   Timestamp             : 02/25/12 02/25/12
  
  # With the fix, that timestamp will show a date and a time:
  
   Timestamp             : 02/25/12 00:41:13 UTC
  
  [ Where problems could occur ]
  
-  * Think about what the upload changes in the software. Imagine the
-    change is wrong or breaks something else: how would this show up?
- 
-  * It is assumed that any SRU candidate patch is well-tested before
-    upload and has a low overall risk of regression, but it's important
-    to make the effort to think about what ''could'' happen in the event
-    of a regression.
- 
-  * This must never be "None" or "Low", or entirely an argument as to why
-    your upload is low risk.
- 
-  * This both shows the SRU team that the risks have been considered,
-    and provides guidance to testers in regression-testing the SRU.
+ There might exist scripts and tools out there that parse the Timestamp
+ field, and are by now relying on the bug. In other words, they are
+ expecting both tokens from the Timestamp field to be dates.
+ Unfortunately that output is incorrect, and this SRU is fixing that,
+ thus changing the behavior to be correct. If other tools rely on the
+ bug, they will have to be changed.
+ 
+ If there are other places with timestamps that use the same code that is
+ now fixed, they will also change.
+ 
+ The fix could also expose bugs that were not there before, since now a
+ data value is being properly printed as time.
  
  [ Other Info ]
  
-  * Anything else you think is useful to include
- 
-  * Make sure to explain any deviation from the norm, to save the SRU
-    reviewer from having to infer your reasoning, possibly incorrectly.
-    This should also help reduce review iterations, particularly when the
-    reason for the deviation is not obvious.
- 
-  * Anticipate questions from users, SRU, +1 maintenance, security teams
-    and the Technical Board and address these questions in advance
+ Not at this time.
  
  [ Original Description ]
  
  Hello,
  
  when running impitool sel get <event id>,
  the timestamp information is showing twice the date, but not the hour
  
  fr3d@safact:~/gbtipmitool/run$ ipmitool -I lanplus -U admin -P <password> -H 
10.197.177.97 sel get 0x28a
  SEL Record ID          : 028a
   Record Type           : 02
   Timestamp             : 04/16/2025 04/16/2025
   Generator ID          : 0020
   EvM Revision          : 04
   Sensor Type           : Unknown
   Sensor Number         : 00
   Event Type            : Sensor-specific Discrete
   Event Direction       : Assertion Event
   Event Data            : 030000
   Description           :
  
  Using ipmi-sel / free-ipmi, the hour is reported in the nice way
  
  fr3d@safact:~/gbtipmitool/run$ ipmi-sel  -h 10.197.177.97 -u admin -p 
<password>  --display=650
  ID  | Date        | Time     | Name             | Type                     | 
Event
  650 | Apr-16-2025 | 23:58:03 | Sensor #0        | OEM Reserved             | 
Event Offset = 03h
  
  (note: this is the same event 0x28a = 650)
  
  Still using free-ipmi, in debug mode we can see the 32b timetsamp:
  
  10.197.177.97: [              19h] = checksum2[ 8b]
  10.197.177.97: =====================================================
  10.197.177.97: SEL Event Record
  10.197.177.97: =====================================================
  10.197.177.97: [             28Ah] = record_id[16b]
  10.197.177.97: [               2h] = record_type[ 8b]
  10.197.177.97: [        6800440Bh] = timestamp[32b]
  10.197.177.97: [               0h] = generator_id.id_type[ 1b]
  10.197.177.97: [              10h] = generator_id.id[ 7b]
  10.197.177.97: [               0h] = ipmb_device_lun[ 2b]
  10.197.177.97: [               0h] = reserved[ 2b]
  10.197.177.97: [               0h] = channel_number[ 4b]
  10.197.177.97: [               4h] = event_message_format_version[ 8b]
  10.197.177.97: [              C3h] = sensor_type[ 8b]
  10.197.177.97: [               0h] = sensor_number[ 8b]
  10.197.177.97: [              6Fh] = event_type_code[ 7b]
  10.197.177.97: [               0h] = event_dir[ 1b]
  10.197.177.97: [               3h] = offset_from_event_reading_type_code[ 4b]
  10.197.177.97: [               0h] = event_data3_flag[ 2b]
  10.197.177.97: [               0h] = event_data2_flag[ 2b]
  10.197.177.97: [               0h] = event_data2[ 8b]
  10.197.177.97: [               0h] = event_data3[ 8b]
  10.197.177.97: =====================================================
  10.197.177.97: IPMI 1.5 Reserve SEL Request
  10.197.177.97: =====================================================
  10.197.177.97: RMCP Header:
  
  Then, using ipmitool with -vvv flag, we can see the righttime stamp has
  been reported by the BMC
  
  Looking up SEL entry 0x28a
  
  >> Sending IPMI command payload
  >>    netfn   : 0x0a
  >>    command : 0x43
  >>    data    : 0x00 0x00 0x8a 0x02 0x00 0xff
  
  BUILDING A v2 COMMAND
  Local RqAddr 0x20 transit 0:0 target 0x20:0 bridgePossible 1
  >> Initialization vector (16 bytes)
   9a 01 24 2a 62 43 84 3b ae 2d 64 04 34 71 32 74
  authcode input (48 bytes)
   06 c0 80 0e 5e 9d 0c 00 00 00 20 00 9a 01 24 2a
   62 43 84 3b ae 2d 64 04 34 71 32 74 5c ee 34 ac
   0e f8 83 ca 27 56 99 07 72 21 83 f1 ff ff 02 07
  authcode output (16 bytes)
   2a b7 99 68 b5 d5 e4 31 c0 3b a0 87 a1 10 48 b4
  << IPMI Response Session Header
  <<   Authtype                : RMCP+
  <<   Payload type            : IPMI (0)
  <<   Session ID              : 0xa0a2a3a4
  <<   Sequence                : 0x00000006
  <<   IPMI Msg/Payload Length : 48
  << IPMI Response Message Header
  <<   Rq Addr    : 81
  <<   NetFn      : 0b
  <<   Rq LUN     : 0
  <<   Rs Addr    : 20
  <<   Rq Seq     : 0a
  <<   Rs Lun     : 0
  <<   Command    : 43
  <<   Compl Code : 0x00
  SEL Entry: 8a02020b440068200004c3006f030000
  
  => in the SEL Entry, the timestamp is "0b440068" (=> 0x6800440b as it is
  a 32b integer)
  
  So the issue is not related to IPMI data (both free-ipmi and ipmitool got the 
right timestamp)
  but it seems to be a display issue in ipmitool
  
  Note: in an old stackoverflow thread, we can see ipmitool output with Hour in 
the event timestamp
  
https://stackoverflow.com/questions/9265148/ipmitool-sel-command-on-per610-does-not-provide-detailed-information
  machine:/ # ipmitool sel get 0x2c
  SEL Record ID          : 002c
   Record Type           : 02
   Timestamp             : 02/13/2012 17:49:21
   Generator ID          : 0021
   EvM Revision          : 04
   Sensor Type           : Voltage
   Sensor Number         : 60
   Event Type            : Threshold
   Event Direction       : Assertion Event
   Event Data            : 02ffff
   Description           : Lower Critical going low
  
  Thanks
  --
  Fred
  
  ProblemType: Bug
  DistroRelease: Ubuntu 24.04
  Package: ipmitool 1.8.19-7ubuntu0.24.04.1
  ProcVersionSignature: Ubuntu 6.8.0-57.59-generic 6.8.12
  Uname: Linux 6.8.0-57-generic x86_64
  ApportVersion: 2.28.1-0ubuntu3.5
  Architecture: amd64
  CasperMD5CheckResult: pass
  CloudArchitecture: x86_64
  CloudID: none
  CloudName: none
  CloudPlatform: none
  CloudSubPlatform: config
  Date: Thu Apr 17 09:36:35 2025
  InstallationDate: Installed on 2022-04-26 (1087 days ago)
  InstallationMedia: Ubuntu-Server 22.04 LTS "Jammy Jellyfish" - Release amd64 
(20220421)
  ProcEnviron:
   LANG=en_US.UTF-8
   PATH=(custom, no user)
   SHELL=/bin/bash
   TERM=xterm
   XDG_RUNTIME_DIR=<set>
  SourcePackage: ipmitool
  UpgradeStatus: Upgraded to noble on 2024-10-23 (176 days ago)

** Description changed:

  [ Impact ]
  
  ipmitool is incorrectly parsing the timestamp of event fields, showing
  two dates instead of a date and a time. It's important to get the
  correct timestamp of events, and the current situation limits this
  information to purely a day, instead of a proper timestamp.
  
  [ Test Plan ]
  
  The test plan involves getting an event and checking if the timestamp
  contains a date and a time, instead of just a date shown twice. There
  are several ways to do this, but they all need a working BMC listening
  to IPMI commands.
  
  For the test plan, we will deploy 24.04 on a bare metal machine which
  has a BMC that ipmitool can query via localhost, without credentials.
  And then for the testing, use a LXD container for each ubuntu release
  under test, and run ipmitool inside that LXC.
  
  Here are the steps.
  
  # Deploy ubuntu 24.04 on a bare metal machine with a working BMC
  
  # setup LXD
  sudo lxd init --auto
  
  # For each ubuntu release under test, run the following commands. Here
  we will show it for noble, but iterate using oracular and plucky:
  
  lxc launch ubuntu-daily:$release $release-test
  
  # this will passthrough the IPMI device from the host to the container
  lxc config device add $release-test ipmi unix-char path=/dev/ipmi0
  
  # enter the container to run the ipmitool command that will show the bug
  lxc exec $release-test -- bash -c "apt update; apt install ipmitool -y"
  lxc exec $release-test -- ipmitool sel get 1
  
  # With the bug, the output of the ipmitool command above will show a
  timestamp with two dates, instead of one date and one time:
  
   Timestamp             : 02/25/12 02/25/12
  
  # With the fix, that timestamp will show a date and a time:
  
   Timestamp             : 02/25/12 00:41:13 UTC
  
  [ Where problems could occur ]
  
  There might exist scripts and tools out there that parse the Timestamp
  field, and are by now relying on the bug. In other words, they are
  expecting both tokens from the Timestamp field to be dates.
  Unfortunately that output is incorrect, and this SRU is fixing that,
  thus changing the behavior to be correct. If other tools rely on the
  bug, they will have to be changed.
  
  If there are other places with timestamps that use the same code that is
  now fixed, they will also change.
  
  The fix could also expose bugs that were not there before, since now a
- data value is being properly printed as time.
+ data value is being parsed and printed as time.
  
  [ Other Info ]
  
  Not at this time.
  
  [ Original Description ]
  
  Hello,
  
  when running impitool sel get <event id>,
  the timestamp information is showing twice the date, but not the hour
  
  fr3d@safact:~/gbtipmitool/run$ ipmitool -I lanplus -U admin -P <password> -H 
10.197.177.97 sel get 0x28a
  SEL Record ID          : 028a
   Record Type           : 02
   Timestamp             : 04/16/2025 04/16/2025
   Generator ID          : 0020
   EvM Revision          : 04
   Sensor Type           : Unknown
   Sensor Number         : 00
   Event Type            : Sensor-specific Discrete
   Event Direction       : Assertion Event
   Event Data            : 030000
   Description           :
  
  Using ipmi-sel / free-ipmi, the hour is reported in the nice way
  
  fr3d@safact:~/gbtipmitool/run$ ipmi-sel  -h 10.197.177.97 -u admin -p 
<password>  --display=650
  ID  | Date        | Time     | Name             | Type                     | 
Event
  650 | Apr-16-2025 | 23:58:03 | Sensor #0        | OEM Reserved             | 
Event Offset = 03h
  
  (note: this is the same event 0x28a = 650)
  
  Still using free-ipmi, in debug mode we can see the 32b timetsamp:
  
  10.197.177.97: [              19h] = checksum2[ 8b]
  10.197.177.97: =====================================================
  10.197.177.97: SEL Event Record
  10.197.177.97: =====================================================
  10.197.177.97: [             28Ah] = record_id[16b]
  10.197.177.97: [               2h] = record_type[ 8b]
  10.197.177.97: [        6800440Bh] = timestamp[32b]
  10.197.177.97: [               0h] = generator_id.id_type[ 1b]
  10.197.177.97: [              10h] = generator_id.id[ 7b]
  10.197.177.97: [               0h] = ipmb_device_lun[ 2b]
  10.197.177.97: [               0h] = reserved[ 2b]
  10.197.177.97: [               0h] = channel_number[ 4b]
  10.197.177.97: [               4h] = event_message_format_version[ 8b]
  10.197.177.97: [              C3h] = sensor_type[ 8b]
  10.197.177.97: [               0h] = sensor_number[ 8b]
  10.197.177.97: [              6Fh] = event_type_code[ 7b]
  10.197.177.97: [               0h] = event_dir[ 1b]
  10.197.177.97: [               3h] = offset_from_event_reading_type_code[ 4b]
  10.197.177.97: [               0h] = event_data3_flag[ 2b]
  10.197.177.97: [               0h] = event_data2_flag[ 2b]
  10.197.177.97: [               0h] = event_data2[ 8b]
  10.197.177.97: [               0h] = event_data3[ 8b]
  10.197.177.97: =====================================================
  10.197.177.97: IPMI 1.5 Reserve SEL Request
  10.197.177.97: =====================================================
  10.197.177.97: RMCP Header:
  
  Then, using ipmitool with -vvv flag, we can see the righttime stamp has
  been reported by the BMC
  
  Looking up SEL entry 0x28a
  
  >> Sending IPMI command payload
  >>    netfn   : 0x0a
  >>    command : 0x43
  >>    data    : 0x00 0x00 0x8a 0x02 0x00 0xff
  
  BUILDING A v2 COMMAND
  Local RqAddr 0x20 transit 0:0 target 0x20:0 bridgePossible 1
  >> Initialization vector (16 bytes)
   9a 01 24 2a 62 43 84 3b ae 2d 64 04 34 71 32 74
  authcode input (48 bytes)
   06 c0 80 0e 5e 9d 0c 00 00 00 20 00 9a 01 24 2a
   62 43 84 3b ae 2d 64 04 34 71 32 74 5c ee 34 ac
   0e f8 83 ca 27 56 99 07 72 21 83 f1 ff ff 02 07
  authcode output (16 bytes)
   2a b7 99 68 b5 d5 e4 31 c0 3b a0 87 a1 10 48 b4
  << IPMI Response Session Header
  <<   Authtype                : RMCP+
  <<   Payload type            : IPMI (0)
  <<   Session ID              : 0xa0a2a3a4
  <<   Sequence                : 0x00000006
  <<   IPMI Msg/Payload Length : 48
  << IPMI Response Message Header
  <<   Rq Addr    : 81
  <<   NetFn      : 0b
  <<   Rq LUN     : 0
  <<   Rs Addr    : 20
  <<   Rq Seq     : 0a
  <<   Rs Lun     : 0
  <<   Command    : 43
  <<   Compl Code : 0x00
  SEL Entry: 8a02020b440068200004c3006f030000
  
  => in the SEL Entry, the timestamp is "0b440068" (=> 0x6800440b as it is
  a 32b integer)
  
  So the issue is not related to IPMI data (both free-ipmi and ipmitool got the 
right timestamp)
  but it seems to be a display issue in ipmitool
  
  Note: in an old stackoverflow thread, we can see ipmitool output with Hour in 
the event timestamp
  
https://stackoverflow.com/questions/9265148/ipmitool-sel-command-on-per610-does-not-provide-detailed-information
  machine:/ # ipmitool sel get 0x2c
  SEL Record ID          : 002c
   Record Type           : 02
   Timestamp             : 02/13/2012 17:49:21
   Generator ID          : 0021
   EvM Revision          : 04
   Sensor Type           : Voltage
   Sensor Number         : 60
   Event Type            : Threshold
   Event Direction       : Assertion Event
   Event Data            : 02ffff
   Description           : Lower Critical going low
  
  Thanks
  --
  Fred
  
  ProblemType: Bug
  DistroRelease: Ubuntu 24.04
  Package: ipmitool 1.8.19-7ubuntu0.24.04.1
  ProcVersionSignature: Ubuntu 6.8.0-57.59-generic 6.8.12
  Uname: Linux 6.8.0-57-generic x86_64
  ApportVersion: 2.28.1-0ubuntu3.5
  Architecture: amd64
  CasperMD5CheckResult: pass
  CloudArchitecture: x86_64
  CloudID: none
  CloudName: none
  CloudPlatform: none
  CloudSubPlatform: config
  Date: Thu Apr 17 09:36:35 2025
  InstallationDate: Installed on 2022-04-26 (1087 days ago)
  InstallationMedia: Ubuntu-Server 22.04 LTS "Jammy Jellyfish" - Release amd64 
(20220421)
  ProcEnviron:
   LANG=en_US.UTF-8
   PATH=(custom, no user)
   SHELL=/bin/bash
   TERM=xterm
   XDG_RUNTIME_DIR=<set>
  SourcePackage: ipmitool
  UpgradeStatus: Upgraded to noble on 2024-10-23 (176 days ago)

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2107550

Title:
  ipmitool sel get is not showing hour in the timestamp details

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/ipmitool/+bug/2107550/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to