【已评审】IPMI命令Get User Access在请求体通道号无效时返回码变更

ISSUE 链接

[缺陷]: 修改Get User Access命令在请求体channel无效时的报错-account-AtomGit | GitCode

背景

IPMI接口Get User Access命令执行前会对通道号进行校验,如果通道号请求无效会报错。
在openUBMC25.09版本支持了多网口下的IPMI通道查询功能 【已评审】新增资源树协作接口支持IPMI通道权限配置 - #4 ,对传入通道号异常时的错误码产生了变更:

  • openUBMC 25.09版本:
    0xD5(IPMICommandCannotExecute,无法执行IPMI命令)
  • openUBMC 25.06及更早的版本:
    0xCC(IPMIInvalidFieldRequest,请求中有无效字段)

为了保证单网口及历史版本兼容,申请将通道号请求无效时的错误码变更为0xCC

评审点

Get User Access命令请求参数通道校验异常时,将原有的错误码由IPMICommandCannotExecute(错误码:0xd5)修改为IPMIInvalidFieldRequest(错误码:0xCC)

触发场景:用户发送IPMI命令获取自身访问权限,正常情况下能够获取自身的权限。如果通道号校验失败,则会返回0xD5的错误码。

命令名称: Get User Access
命令说明: 获取BMC用户访问权限
命令权限: UserMgnt
是否锁定之后可以访问:
是否有敏感数据:
命令样式:

  • 请求:ipmitool raw 0x06 0x44 <channel_number> <user_id>
  • 响应:<Completion Code> <Maximum Number Of User IDs> <Enabled User IDs> <User IDs With Fixed Names> <Channel Access>

命令请求参数: (无变更)

字节顺序 域取值说明
NetFn 06h
Cmd 44h
1 [3:0]通道号,[7:4]保留
2 [5:0]用户ID,[7:6]保留

命令响应参数: (无变更)

字节顺序 域取值说明
1 Completion Code
CCh =【标准完成码】通道号校验失败
D5h =【标准完成码】用户无访问通道权限
2 最大用户ID数量。从1开始计数,计数包括用户1,值为1表示仅支持用户1。[5:0]该通道上的最大用户ID数量,[7:6]保留。
3 当前启用的用户ID数量。[5:0]当前启用的用户ID数量,[7:6]用户ID启用状态。
4 固定名称用户的数量。[5:0]该通道上具有固定名称的用户ID数量,[7:6]保留。
5 通道配置权限。[3:0]用户使用改通道需要的权限配置(0h=reserved 1h=Callback 2h=User 3h=Operator 4h=Administrator 5h=OEM Proprietary),[4]用户是否能够发送IPMI信息,[5]用户是否启用连接认证,[6]用户回复仅在回调连接可用,[7]保留。

命令示例:
样例1: 获取BMC用户访问权限

  • 请求:ipmitool raw 0x06 0x44 0x01 0x03
  • 响应:11 42 01 74

命令返回码使用清单:

命令执行场景 返回完成码
正常执行 0x00
用户ID异常 0xCC
通道号输入异常 0xCC
带内BT通道执行时,无权限 0x87

评审结论

同意请求体channel无效时将返回错误码调整为0xCC,需要在社区发布变更声明并增加到ReleaseNote

遗留问题