ioctl 细节
dlpi 驱动程序支持 ioctl 操作。
dlpi 驱动程序支持以下 ioctl 操作:
- DL_ROUTE
- DL_TUNE_有限责任公司
- DL_零统计
- DL_SET_REMADDR
这些命令及其关联的数据结构在 /usr/include/sys/dlpi_aix.h 头文件中进行了描述。
注: 需要参数长于一个长字的 ioctl 命令或指定用于读取或写入的指针的 ioctl 命令必须使用 I_STR 格式,如以下示例中所示:
int
istr(int fd, int cmd, char *data, int len) {
struct strioctl ic;
ic.cmd = cmd;
ic.timout = -1;
ic.dp = data;
ic.dp = data;
ic.len = len;
return ioctl(fd, I_STR, &ic);
}
| 项 | 描述 |
|---|---|
| DL_ROUTE | 禁用当前流上的源路由,查询 动态路由发现 以获取源路由,或者静态地将源路由分配给此流。 仅当流处于空闲状态 (DL_IDLE) 时才接受。
例如,可以使用以下代码来发现任意地址的源路由:
|
| DL_TUNE_有限责任公司 | 允许 DLS 用户更改缺省 LLC 可调参数。 自变量必须指向 llctune_t 数据结构。 检查标志字段以确定应该更改哪些参数 (如果有)。 标志字段中的每个位对应于 llctune_t中的一个类似命名的字段; 如果设置了该位,那么相应的参数将设置为 llctune_t中的值。 仅影响当前流,并且在关闭流时将废弃更改。 如果设置了 F_LLC_SET 标志,并且用户具有 root 用户权限,那么更改后的参数将保存为所有新流的新缺省参数。 此命令将当前可调参数的更新作为其参数返回。 例如,要将t1值,可以使用以下代码:
要查询可调参数,请发出标志字段设置为零的 DL_TUNE_LLC 。 这将不改变参数并返回当前可调参数值。 |
| DL_零统计 | 将统计信息计数器重置为零。 驱动程序维护两个独立的统计信息集,一个用于每个流 (本地) ,另一个是所有流 (全局) 的累积统计信息。 此命令接受简单布尔参数。 如果自变量为 True (非零) ,那么全局统计信息将为零。 否则,仅会将当前流的统计信息归零。 例如,要使当前流上的统计信息计数器为零,可以使用以下代码:
|
| DL_SET_REMADDR | 允许在仍处于 DL_IDLE 状态的面向连接的流上进行 XID/TEST 交换。 dlpi 驱动程序使用源 (远程) 地址和 dl_sap 来确定在何处路由面向连接的流的入局消息。 远程地址通常在 DL_CONNECT_REQ中指定。 如果 DLS 用户在连接到远程站之前需要交换 XID 或 TEST 消息,那么必须使用 DL_SET_REMADDR 。 注: 请注意,如果要仅在状态为 DL_DATAXFER时交换 XID 和 TEST 消息,那么 不 需要此命令。
此命令的自变量是远程 MAC 地址。 一个可能的代码片段可能是:
|