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
遗留问题
无