diff options
author | Alexander Amelkin <alexander@amelkin.msk.ru> | 2020-10-20 17:15:59 +0300 |
---|---|---|
committer | Alexander Amelkin <mocbuhtig@amelkin.msk.ru> | 2023-01-12 13:47:25 +0300 |
commit | 4b791f8bf67ef9134699039b2758ed4023409621 (patch) | |
tree | 6e91674d8a057f3931ac339cf44d5d11a05e12ab | |
parent | 93287486722c3a2a81d886d32b7d297d18523a0a (diff) | |
download | ipmitool-4b791f8bf67ef9134699039b2758ed4023409621.tar.gz |
lan: channel: Fix set alert on/off
From IPMI Spec, Chapter 22.22 Set Channel Access Command
Table 22, Set Channel Access Command
Byte#2, Bit#5 is "PEF Alerting Enable/Disable"
And the bit value:
0b = enable PEF Alerting
1b = disable PEF Alerting on this channel
In current code, alert "on" set Bit#5 to 1 and alert "off" set Bit#5 to
0, it's straightforward but just opposite of IPMI spec bit definition.
Resolves ipmitool/ipmitool#247
Reported-by: Ryan Fang <Ryan.Fang@quantatw.com>
Signed-off-by: Alexander Amelkin <alexander@amelkin.msk.ru>
-rw-r--r-- | include/ipmitool/ipmi_channel.h | 10 | ||||
-rw-r--r-- | lib/ipmi_lanp.c | 6 |
2 files changed, 11 insertions, 5 deletions
diff --git a/include/ipmitool/ipmi_channel.h b/include/ipmitool/ipmi_channel.h index d9be57e..41f1b88 100644 --- a/include/ipmitool/ipmi_channel.h +++ b/include/ipmitool/ipmi_channel.h @@ -89,10 +89,16 @@ struct channel_info_t { uint8_t aux_info[2]; }; -/* (22.23) Get Channel Access */ + +/* (22.22 / 22.23) Set/Get Channel Access */ +typedef enum { + ALERTING_ENABLED = 0, + ALERTING_DISABLED = (1 << 5) /* See Table 22 */ +} alerting_t; + struct channel_access_t { uint8_t access_mode; - uint8_t alerting; + alerting_t alerting; uint8_t channel; uint8_t per_message_auth; uint8_t privilege_limit; diff --git a/lib/ipmi_lanp.c b/lib/ipmi_lanp.c index 16c0d9a..fe0046f 100644 --- a/lib/ipmi_lanp.c +++ b/lib/ipmi_lanp.c @@ -1026,10 +1026,10 @@ ipmi_set_alert_enable(struct ipmi_intf *intf, uint8_t channel, uint8_t enable) channel); return (-1); } - if (enable != 0) { - channel_access.alerting = 1; + if (enable) { + channel_access.alerting = ALERTING_ENABLED; } else { - channel_access.alerting = 0; + channel_access.alerting = ALERTING_DISABLED; } /* non-volatile */ ccode = _ipmi_set_channel_access(intf, channel_access, 1, 0); |