> For the complete documentation index, see [llms.txt](https://man.bsdcn.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://man.bsdcn.org/man4/net80211.4.md).

# net80211(4)

`net80211` — IEEE 802.11 设备的标准接口

## 名称

`net80211`

## 概要

`#include <sys/types.h>`

`#include <sys/socket.h>`

`#include <net/if.h>`

`#include <net/ethernet.h>`

`#include <net80211/ieee80211_ioctl.h>`

## 描述

本节描述了配置和检索依赖 [wlan(4)](/man4/wlan.4.md) 模块运行的 IEEE 802.11 设备的状态信息的标准编程接口。该接口通过套接字上的以下 ioctl(2) 调用之一进行：

**`SIOCG80211`** 获取配置或状态信息。

**`SIOCS80211`** 设置配置信息。

这些请求通过修改后的 `ifreq` 结构进行。该结构定义如下：

```sh
struct ieee80211req {
	char		i_name[IFNAMSIZ];	/* if_name，例如 "wi0" */
	uint16_t	i_type;			/* 请求类型 */
	int16_t		i_val;			/* 索引或简单值 */
	int16_t		i_len;			/* 索引或简单值 */
	void		*i_data;		/* 额外数据 */
};
```

底层设备不支持的那些请求会返回 -1，并将全局变量 errno 设置为 Er EOPNOTSUPP。`SIOCG80211` 请求将数据返回给应用程序时，会将较小的值放在 `i_val` 中或放在 `i_data` 所指向的用户指定缓冲区中。使用间接缓冲区时，`i_len` 指定间接缓冲区的大小，返回时由系统设置为返回的实际数据量。`SIOCS80211` 请求使用类似方案，传递给系统的数据取自 `i_val` 或 `i_data` 所指向的间接缓冲区。

对于 `SIOCG80211`，以下 `i_type` 值有效：

**`IEEE80211_IOC_AMPDU`** 在 `i_val` 中返回是否启用 AMPDU。AMPDU 是 802.11n 规范的一部分聚合方案，仅在 HT 信道上操作时使用。返回值为以下之一：0（禁用 AMPDU）、1（启用 AMPDU 用于发送）、2（启用 AMPDU 用于接收）和 3（启用 AMPDU 用于发送和接收）。802.11n 规范规定合规站点必须接收 AMPDU，但可能不支持发送 AMPDU 帧。禁用 AMPDU 接收主要用于测试和解决 bug。

**`IEEE80211_IOC_AMPDU_DENSITY`** 在 `i_val` 中返回突发 AMPDU 帧的最小密度。返回值为以下之一：0（无时间限制）、1（1/4 微秒）、2（1/2 微秒）、3（1 微秒）、4（2 微秒）、5（4 微秒）、6（8 微秒）和 7（16 微秒）。

**`IEEE80211_IOC_AMPDU_LIMIT`** 在 `i_val` 中返回 AMPDU 帧的大小限制。返回值为以下之一：0（8 千字节）、1（16 千字节）、2（32 千字节）和 3（64 千字节）。

**`IEEE80211_IOC_AMSDU`** 在 `i_val` 中返回是否启用 AMSDU。AMSDU 是 802.11n 规范的一部分聚合方案，仅在 HT 信道上操作时使用。返回值为以下之一：0（禁用 AMSDU）、1（启用 AMSDU 用于发送）、2（启用 AMSDU 用于接收）和 3（启用 AMSDU 用于发送和接收）。802.11n 规范规定合规站点必须接收 AMSDU，但可能不支持发送 AMSDU 帧。禁用 AMSDU 接收主要用于测试和解决 bug。

**`IEEE80211_IOC_AMSDU_LIMIT`** 在 `i_val` 中返回 AMSDU 帧的大小限制。返回值为以下之一：3839（字节）和 7935（字节）。注意这些值由 802.11n 指定；不允许任意值。

**`IEEE80211_IOC_APBRIDGE`** 在 `i_val` 中返回是否启用 AP 桥接。通常，发送到与同一接入点关联的站点之间的数据包无需经过执行数据包过滤的系统层即可交付；禁用 AP 桥接时，数据包会向上传递到系统以使用某些其他机制转发。启用 AP 桥接时此值非零，否则为零。

**`IEEE80211_IOC_APPIE`** 通过 `i_data` 返回应用程序信息元素。许多 802.11 帧都维护应用程序 IE；请求必须在 `i_val` 中标识要返回 IE 的帧。例如，要检索每个 Beacon 帧中发送的 IE，`i_val` 将设置为 `IEEE80211_FC0_SUBTYPE_BEACON | IEEE80211_FC0_TYPE_MGT`。如果未安装信息元素，则返回 Er EINVAL。如果返回数据的数据缓冲区太小而无法容纳信息元素，则该值被截断；这允许通过请求返回零字节数据来查询数据的存在。

**`IEEE80211_IOC_AUTHMODE`** 在 `i_val` 中返回当前认证模式。有效值为 `IEEE80211_AUTH_NONE`（无认证）、`IEEE80211_AUTH_OPEN`（开放认证）、`IEEE80211_AUTH_SHARED`（共享密钥认证）、`IEEE80211_AUTH_8021X`（仅 802.1x 认证）和 `IEEE80211_AUTH_WPA`（WPA/802.11i/802.1x 认证）。

**`IEEE80211_IOC_BEACON_INTERVAL`** 在 `i_val` 中返回 Beacon 帧之间的时间（以 TU 为单位）。

**`IEEE80211_IOC_BGSCAN`** 在 `i_val` 中返回是否启用后台扫描。当此值非零且以 station 模式操作时，站点会定期离开当前信道并扫描相邻站点。另请参见 `IEEE80211_IOC_BGSCAN_IDLE` 和 `IEEE80211_IOC_BGSCAN_INTERVAL`。

**`IEEE80211_IOC_BGSCAN_IDLE`** 在 `i_val` 中返回站点在执行后台扫描之前必须空闲（即不发送或接收帧）的最小时间（毫秒）。另请参见 `IEEE80211_IOC_BGSCAN_INTERVAL`。

**`IEEE80211_IOC_BGSCAN_INTERVAL`** 在 `i_val` 中返回后台扫描操作之间的最小时间（秒）。另请参见 `IEEE80211_IOC_BGSCAN_IDLE`。

**`IEEE80211_IOC_BMISSTHRESHOLD`** 在 `i_val` 中返回系统尝试漫游到不同/更好的接入点之前连续丢失的 Beacon 帧数。

**`IEEE80211_IOC_BSSID`** 通过 `i_data` 返回当前 BSS 标识符的 MAC 地址。当接口运行时，bssid 要么是本地配置的值（例如对于由本地站点启动的 IBSS 网络），要么是加入现有网络时采用的值。对于 WDS 接口，此值是远程站点的地址。当接口未运行时，返回的 bssid 是已配置的所需 bssid（如果有）。

**`IEEE80211_IOC_BURST`** 在 `i_val` 中返回是否启用数据包突发。如果此值非零，系统将尝试紧密排列发送数据包以提高吞吐量。

**`IEEE80211_IOC_CHANINFO`** 通过 `i_data` 返回可用信道集合。注意，用户应用程序应使用此数据在信道规范（频率和属性）与 IEEE 信道号之间进行映射，因为用户应用程序可能没有直接执行此操作所需的必要信息（例如对于 900MHz 无线电、在公共安全频段中操作）。

**`IEEE80211_IOC_CHANLIST`** 通过 `i_data` 返回当前可用信道列表。信道列表以位向量形式返回，如果 IEEE 信道号 N 可用，则位 N 设置为 1。

**`IEEE80211_IOC_CHANNEL`** 在 `i_val` 中返回当前信道的 IEEE 信道号。注意此请求已弃用；请改用 `IEEE80211_IOC_CURCHAN`。

**`IEEE80211_IOC_COUNTERMEASURES`** 在 `i_val` 中返回是否启用 TKIP 对抗措施。启用对抗措施时此值非零，否则为零。

**`IEEE80211_IOC_CURCHAN`** 通过 `i_data` 返回当前信道的信息。此信息包括 IEEE 信道号、频率和描述操作约束的属性（例如被动扫描、DFS、使用限制）。

**`IEEE80211_IOC_DEVCAPS`** 在 `i_data` 指向的数据缓冲区中返回设备能力。缓冲区必须足够大以返回可用信道数，但可以设置得较小以限制返回多少信息。

**`IEEE80211_IOC_DFS`** 在 `i_val` 中返回是否启用动态频率选择（DFS）。DFS 包含多项功能，包括检测重叠雷达信号、动态发送功率控制和根据最少拥塞标准进行信道选择。在某些地区的某些 5GHz 频率上强制要求支持 DFS（例如 ETSI）。默认情况下，根据监管定义和当前国家代码、监管域和信道启用 DFS。

**`IEEE80211_IOC_DOTD`** 在 `i_val` 中返回是否启用 802.11d 支持。当在 station 模式下启用 802.11d 时，通告与当前配置的国家代码不同的国家代码的 Beacon 帧将导致向用户应用程序分派事件。站点可以使用此事件采用该国家代码并根据相关的监管约束进行操作。当作为接入点操作并启用 802.11d 时，传输的 Beacon 和 ProbeResponse 帧将通告当前监管域设置。

**`IEEE80211_IOC_DOTH`** 在 `i_val` 中返回是否启用 802.11h 支持。启用 802.11h 时，Beacon 和 ProbeResponse 帧的功能字段中将设置 SpectrumMgt 位，并且将存在国家和功率约束信息元素。802.11h 支持还包括处理信道切换通告（CSA），这是一种由接入点协调信道更改的机制。如果设备 capable，默认启用 802.11h。

**`IEEE80211_IOC_DROPUNENCRYPTED`** 在 `i_val` 中返回是否应丢弃发送/接收的未加密数据包。如果接受未加密数据包，此值为零，如果要丢弃则为非零。

**`IEEE80211_IOC_DTIM_PERIOD`** 在 `i_val` 中返回 DTIM 事件之间的周期（以 beacon 间隔为单位）。

**`IEEE80211_IOC_DWDS`** 在 `i_val` 中返回是否启用动态 WDS 支持。动态 WDS 是一种机制，通过该机制可以使用 4 地址（WDS）帧通过正常的基础设施 BSS 关联隧道传输数据包。

**`IEEE80211_IOC_FF`** 在 `i_val` 中返回是否启用 Atheros fast-frames 支持。Fast-frames 是一种非标准协议扩展，聚合多个帧以提高吞吐量。注意，启用 fast-frames 支持并不保证使用；客户端和接入点必须协商其使用。

**`IEEE80211_IOC_FRAGTHRESHOLD`** 在 `i_val` 中返回启用分片帧的阈值（以字节为单位）。大于此值的数据包将自动拆分为多个分片帧，依次发送。

**`IEEE80211_IOC_GREENFIELD`** 在 `i_val` 中返回是否启用 Greenfield 前导码使用。此设置仅在 HT 信道上使用 802.11n 操作时有意义。

**`IEEE80211_IOC_HIDESSID`** 在 `i_val` 中返回是否启用 SSID 隐藏/伪装。SSID 隐藏仅在作为接入点操作时有意义。启用此项时，Beacon 帧不包括 SSID，并且除非 ProbeRequest 帧包含 AP 的 SSID，否则不回答这些帧。启用 SSID 隐藏时此值非零，否则为零。

**`IEEE80211_IOC_HTCOMPAT`** 在 `i_val` 中返回是否启用 802.11n 兼容性支持。802.11n 协议规范经历了几个不兼容的迭代。某些供应商按旧规范实现的 11n 支持无法与纯 11n 兼容站点互操作。特别是，旧设备管理帧中包含的信息元素不同。启用兼容性支持时，将提供和/或接受标准和兼容数据。

**`IEEE80211_IOC_HTCONF`** 在 `i_val` 中返回 HT 信道自动提升的设置。当系统必须选择信道并且可以在传统、HT20 和 HT40 操作之间选择时（例如扫描时），会发生提升。有效值为：0（不提升，使用传统）、1（提升到 HT20）和 2（提升到 HT40）。

**`IEEE80211_IOC_HTPROTMODE`** 在 `i_val` 中返回在混合 802.11n 网络中用于保护 HT 帧的技术。有效值为：`IEEE80211_PROTMODE_OFF`（未启用保护）和 `IEEE80211_PROTMODE_RTSCTS`（发送 RTS 并等待 CTS）。

**`IEEE80211_IOC_HWMP_MAXHOPS`** 在 `i_val` 中返回 HWMP 路径中可接受的最大跳数。

**`IEEE80211_IOC_HWMP_ROOTMODE`** 在 `i_val` 中返回 Mesh 根模式操作的设置。有效值为：`IEEE80211_HWMP_ROOTMODE_DISABLED`（禁用根模式）、`IEEE80211_HWMP_ROOTMODE_NORMAL`（发送广播路径请求帧）、`IEEE80211_HWMP_ROOTMODE_PROACTIVE`（发送广播路径请求帧并强制回复）和 `IEEE80211_HWMP_ROOTMODE_RANN`（发送广播根通告（RANN）帧）。

**`IEEE80211_IOC_IC_NAME`** 在 `i_data` 指向的缓冲区中返回底层硬件 [device(9)](/man9/device.9.md) 名称，并在 `i_len` 中返回包含终止 NUL 字符的名称长度。如果缓冲区长度太小而无法容纳完整名称，将返回 Er EINVAL。

**`IEEE80211_IOC_INACTIVITY`** 在 `i_val` 中返回系统是否处理不活动处理。启用不活动处理时，系统会跟踪未发送帧的站点并定期探测它们以检查它们是否仍然存在。不活动且不响应探测的站点将被丢弃。

**`IEEE80211_IOC_MACCMD`** 返回有关 MAC 地址访问控制列表（ACL）系统状态的信息。支持两个请求：`IEEE80211_MACCMD_POLICY`（在 `i_val` 中检索当前策略）和 `IEEE80211_MACCMD_LIST`（通过 `i_data` 检索已安装/活动 ACL 列表）。必须安装并启用 [wlan\_acl(4)](/man4/wlan_acl.4.md) 模块，否则将返回 Er EINVAL。

**`IEEE80211_IOC_MESH_AP`** 在 `i_val` 中返回是否启用 Mesh AP 支持。

**`IEEE80211_IOC_MESH_ID`** 在 `i_data` 指向的缓冲区中返回 Mesh ID。

**`IEEE80211_IOC_MESH_FWRD`** 在 `i_val` 中返回是否启用数据包转发支持。

**`IEEE80211_IOC_MESH_PP_METRIC`** 在 `i_data` 指向的缓冲区中返回链路度量协议。

**`IEEE80211_IOC_MESH_PP_PATH`** 在 `i_data` 指向的缓冲区中返回路径选择协议。

**`IEEE80211_IOC_MESH_RTCMD`** 返回有关 Mesh 路由表状态的信息。支持一个请求：`IEEE80211_MESH_RTCMD_LIST`，用于在 `i_data` 指向的缓冲区中检索路由表的内容。

**`IEEE80211_IOC_MESH_TTL`** 在 `i_val` 中返回此 mesh 节点发送的数据包中安装的 Mesh 生存时间（TTL）设置。

**`IEEE80211_IOC_NUMSSIDS`** 在 `i_val` 中返回支持的 SSID 数量。

**`IEEE80211_IOC_NUMWEPKEYS`** 在 `i_val` 中返回支持的 WEP 密钥数。

**`IEEE80211_IOC_POWERSAVE`** 在 `i_val` 中返回当前省电模式。有效值为 `IEEE80211_POWERSAVE_OFF`（禁用省电操作）和 `IEEE80211_POWERSAVE_ON`（启用省电操作）。

**`IEEE80211_IOC_POWERSAVESLEEP`** 在 `i_val` 中返回以 TU 为单位的省电睡眠时间。此值也称为侦听间隔，表示站点在唤醒以检索接入点缓冲的数据包之前将睡眠的最长时间。

**`IEEE80211_IOC_PRIVACY`** 在 `i_val` 中返回当前的 MLME PRIVACY 设置。启用 PRIVACY 时，所有数据包必须加密。禁用 PRIVACY 时此值为零，启用 PRIVACY 时为非零。

**`IEEE80211_IOC_PROTMODE`** 在 `i_val` 中返回当前的 802.11g 保护模式。保护是用于保护在 802.11g 网络上操作的 802.11b 站点的机制。有效值为 `IEEE80211_PROTMODE_OFF`（未启用保护）、`IEEE80211_PROTMODE_CTS`（向你自己发送 CTS）和 `IEEE80211_PROTMODE_RTSCTS`（发送 RTS 并等待 CTS）。

**`IEEE80211_IOC_PUREG`** 在 `i_val` 中返回是否启用“pure 11g”模式。此设置仅对接入点操作有意义；非零时不允许 802.11b 站点关联。

**`IEEE80211_IOC_PUREN`** 在 `i_val` 中返回是否启用“pure 11n”模式。此设置仅对接入点操作有意义；非零时不允许传统（非 11n capable）站点关联。

**`IEEE80211_IOC_REGDOMAIN`** 在 `i_data` 指向的缓冲区中返回监管状态。

**`IEEE80211_IOC_RIFS`** 在 `i_val` 中返回是否启用精简帧间间隔（RIFS）。此设置仅在 HT 信道上使用 802.11n 操作时有意义。

**`IEEE80211_IOC_ROAM`** 在 `i_data` 指向的缓冲区中返回站点漫游参数。

**`IEEE80211_IOC_ROAMING`** 在 `i_val` 中返回当前漫游模式。漫游模式指定作为基础设施 BSS 中的站点操作时由哪个实体控制 MLME 状态机的操作。有效值为：`IEEE80211_ROAMING_DEVICE`（驱动/固件控制）、`IEEE80211_ROAMING_AUTO`（主机 802.11 层控制）和 `IEEE80211_ROAMING_MANUAL`（应用程序控制）。

**`IEEE80211_IOC_RTSTHRESHOLD`** 在 `i_val` 中返回启用 RTS 帧传输的阈值（以字节为单位）。大于此值的数据包将自动在前面发送一个 RTS 帧以减少数据包丢失的可能性。

**`IEEE80211_IOC_SCAN_RESULTS`** 在 `i_data` 指向的数据区域中返回扫描缓存的当前内容。

**`IEEE80211_IOC_SCANVALID`** 在 `i_val` 中返回扫描操作结果被视为有效的时间（以秒为单位）。当扫描结果不再有效且需要它们时（例如漫游），系统将启动扫描操作以补充扫描缓存。

**`IEEE80211_IOC_SHORTGI`** 在 `i_val` 中返回是否启用短保护间隔（SGI）。注意 SGI 仅在 HT 信道上使用 802.11n 操作时使用。

**`IEEE80211_IOC_SMPS`** 在 `i_val` 中返回空间复用省电（SMPS）设置。此设置仅在 HT 信道上使用 802.11n 操作时有意义。有效值为：`IEEE80211_HTCAP_SMPS_DYNAMIC`（启用动态 SMPS）、`IEEE80211_HTCAP_SMPS_ENA`（启用静态 SMPS）和 `IEEE80211_HTCAP_SMPS_OFF`（禁用 SMPS）。

**`IEEE80211_IOC_SSID`** 在 `i_data` 指向的缓冲区中返回请求的 SSID。如果 `i_val` ≥ 0，则请求引用该槽位的配置值。通常，0 是唯一有效的值，但某些接口支持更多 SSID。

**`IEEE80211_IOC_STA_INFO`** 通过 `i_data` 返回有关指定站点当前状态的信息。可以传入单个站点的 MAC 地址，或者如果提供广播地址，则将返回所有站点的信息。如果请求单个站点且 MAC 地址未知，则返回 Er ENOENT。

**`IEEE80211_IOC_STA_STATS`** 通过 `i_data` 返回指定站点的收集统计信息。传入所需站点的 MAC 地址；如果未知则返回 Er ENOENT。

**`IEEE80211_IOC_STA_VLAN`** 通过 `i_data` 返回分配给站点的任何 VLAN 标记。

**`IEEE80211_IOC_TDMA_SLOT`** 在 `i_val` 中返回站点的槽位号。槽位号零是 TDMA 网络中的主站点。

**`IEEE80211_IOC_TDMA_SLOTCNT`** 在 `i_val` 中返回 TDMA 网络中的槽位数。

**`IEEE80211_IOC_TDMA_SLOTLEN`** 在 `i_val` 中返回网络中分配给每个站点的 TDMA 槽位长度（以微秒为单位）。

**`IEEE80211_IOC_TDMA_BINTERVAL`** 在 `i_val` 中返回 Beacon 帧之间的超帧数。具有 N 个槽位且槽位长度为 T 的 TDMA 网络具有 NxT 的超帧。

**`IEEE80211_IOC_TSN`** 在 `i_val` 中返回是否启用过渡安全网络（TSN）。

**`IEEE80211_IOC_TURBOP`** 在 `i_val` 中返回是否启用 Atheros 动态 Turbo 模式。动态 Turbo 模式是一种非标准协议扩展，仅在 Atheros 设备上可用，其中信道宽度在 20MHz 和 40MHz 之间动态更改。注意，启用动态 Turbo 模式支持并不保证使用；客户端和接入点都必须使用 Atheros 设备，并且双方都必须启用支持。

**`IEEE80211_IOC_TXPARAMS`** 在 `i_data` 指向的缓冲区中返回发送参数。

**`IEEE80211_IOC_TXPOWER`** 在 `i_val` 中返回以 0.5 dBm 为单位的发送功率限制。此值表示有效最大值，并根据当地法规允许的最大功率、任何用户指定的功率限制和设备 capable 的最大功率计算得出。

**`IEEE80211_IOC_TXPOWMAX`** 在 `i_val` 中返回以 0.5 dBm 为单位的用户指定的最大发送功率。在任何监管上限之后应用最大设置。

**`IEEE80211_IOC_WEP`** 在 `i_val` 中返回当前 WEP 状态。有效值为：`IEEE80211_WEP_ON`（对所有发送和接收的数据包启用）、`IEEE80211_WEP_OFF`（禁用）和 `IEEE80211_WEP_MIXED`（启用发送和接收但也愿意接收未加密帧）。此请求已弃用；请改用 `IEEE80211_IOC_PRIVACY` 和 `IEEE80211_IOC_UNENCRYPTED`。

**`IEEE80211_IOC_WEPKEY`** 通过 `i_data` 返回请求的 WEP 密钥。密钥号在 `i_val` 中指定，可以为 0-3。如果设备不支持返回 WEP 密钥或用户不是 root，则密钥可能全为零返回。此请求已弃用，推荐使用 `IEEE80211_IOC_WPAKEY`。

**`IEEE80211_IOC_WEPTXKEY`** 在 `i_val` 中返回用于传输的 WEP 密钥号。

**`IEEE80211_IOC_WME`** 在 `i_val` 中返回是否启用 802.11e/WME/WMM 支持。启用支持时此值非零，否则为零。

**`IEEE80211_IOC_WME_CWMIN`** 在 `i_val` 中返回指定访问类别（AC）的 WME CWmin 设置（log2）。AC 通过 `i_len` 传入，同时可选地传入 IEEE80211\_WMEPARAM\_BSS 标志以指示是 BSS 还是信道的所需参数。如果不支持 WME，将返回 Er EINVAL。

**`IEEE80211_IOC_WME_CWMAX`** 在 `i_val` 中返回指定访问类别（AC）的 WME CWmax 设置（log2）。更多详情请参见上文的 `IEEE80211_IOC_WME_CWMIN`。

**`IEEE80211_IOC_WME_AIFS`** 在 `i_val` 中返回指定访问类别（AC）的 WME AIFS 设置。更多详情请参见上文的 `IEEE80211_IOC_WME_CWMIN`。

**`IEEE80211_IOC_WME_TXOPLIMIT`** 在 `i_val` 中返回指定访问类别（AC）的 WME TxOpLimit（毫秒）。更多详情请参见上文的 `IEEE80211_IOC_WME_CWMIN`。

**`IEEE80211_IOC_WME_ACM`** 在 `i_val` 中返回指定访问类别（AC）的 WME 准入控制机制（ACM）设置。此值仅对 BSS（非信道）有意义。更多详情请参见上文的 `IEEE80211_IOC_WME_CWMIN`。

**`IEEE80211_IOC_WME_ACKPOLICY`** 在 `i_val` 中返回指定访问类别（AC）的 WME ACK 策略设置。当此值为零时，将发送帧而不等待确认。此值仅对信道（非 BSS）有意义。更多详情请参见上文的 `IEEE80211_IOC_WME_CWMIN`。

**`IEEE80211_IOC_WPA`** 在 `i_val` 中返回 WPA 配置。有效值为 0（未启用 WPA）、1（启用 WPA1）、2（启用 WPA2/802.11i）和 3（同时启用 WPA1 和 WPA2/802.11i）。

**`IEEE80211_IOC_WPAIE`** 通过 `i_data` 返回关联站点的任何 WPA 信息元素。通过 `i_data` 传入的请求标识所需站点的 MAC 地址。如果存在 RSN（802.11i）元素则返回；否则返回任何 WPA 元素。注意此请求已弃用；请改用 `IEEE80211_IOC_WPAIE2`。

**`IEEE80211_IOC_WPAIE2`** 通过 `i_data` 返回关联站点的任何 WPA 信息元素。通过 `i_data` 传入的请求标识所需站点的 MAC 地址。可以返回 RSN（802.11i）和 WPA 元素中的一个或两个。

**`IEEE80211_IOC_WPAKEY`** 在 `i_data` 指向的缓冲区中返回请求的加密密钥。密钥号在 `i_val` 中指定，可以为 0-3。密钥号零用于在启用 WPA 操作时检索站点的单播密码密钥。如果用户不是 root，则返回的密钥数据全为零。

**`IEEE80211_IOC_WPS`** 在 `i_val` 中返回是否启用 Wi-Fi 保护设置（WPS）。

对于 `SIOCS80211`，以下 `i_type` 值有效。注意，在运行的接口上更改值可能会导致接口被“重置”。如果参数不影响 MLME 状态（例如 RTS 阈值），可以处理重置而不更改状态，但在某些情况下，接口可能需要扫描新网络或清除状态（包括任何关联的站点）；在这种情况下，接口被“重启”（相当于将接口标记为关闭然后再打开）。以下信息标识了更改值是否影响运行接口的状态。

**`IEEE80211_IOC_ADDMAC`** 使用 `i_data` 指向的值将条目添加到 MAC 地址访问控制列表（ACL）数据库。必须安装并启用 [wlan\_acl(4)](/man4/wlan_acl.4.md) 模块，否则将返回 Er EINVAL。

**`IEEE80211_IOC_AMPDU`** 使用 `i_val` 中的值设置是否启用 AMPDU 用于发送和/或接收。此请求会导致在 HT 信道上操作的运行接口被重置。更多详情请参见上文的 `IEEE80211_IOC_AMPDU`。

**`IEEE80211_IOC_AMPDU_DENSITY`** 将突发 AMPDU 帧的最小密度设置为 `i_val` 中的值。此请求会导致运行接口被重置。更多详情请参见上文的 `IEEE80211_IOC_AMPDU_DENSITY`。

**`IEEE80211_IOC_AMPDU_LIMIT`** 将 AMPDU 帧的大小限制设置为 `i_val` 中的值。此请求会导致运行接口被重置。更多详情请参见上文的 `IEEE80211_IOC_AMPDU_LIMIT`。

**`IEEE80211_IOC_AMSDU`** 使用 `i_val` 中的值设置是否启用 AMSDU 用于发送和/或接收。此请求会导致在 HT 信道上操作的运行接口被重置。更多详情请参见上文的 `IEEE80211_IOC_AMSDU`。

**`IEEE80211_IOC_AMSDU_LIMIT`** 将 AMSDU 帧的大小限制设置为 `i_val` 中的值。此请求会导致运行接口被重置。更多详情请参见上文的 `IEEE80211_IOC_AMSDU_LIMIT`。

**`IEEE80211_IOC_APBRIDGE`** 使用 `i_val` 中的值设置是否启用 AP 桥接。更多详情请参见上文的 `IEEE80211_IOC_APBRIDGE`。

**`IEEE80211_IOC_APPIE`** 使用 `i_data` 指向的数据设置应用程序信息元素。如果更改 WPA 信息元素，此请求会导致运行接口被重启。更多详情请参见上文的 `IEEE80211_IOC_APPIE`。

**`IEEE80211_IOC_AUTHMODE`** 使用 `i_val` 中的值设置当前认证模式。此请求会导致运行接口被重启。更多详情请参见上文的 `IEEE80211_IOC_AUTHMODE`。此请求会导致运行接口被重启。

**`IEEE80211_IOC_BEACON_INTERVAL`** 将 Beacon 帧之间的时间（以 TU 为单位）设置为 `i_val` 中的值。此请求会导致运行接口被重启。

**`IEEE80211_IOC_BGSCAN`** 使用 `i_val` 中的值设置是否启用后台扫描。

**`IEEE80211_IOC_BGSCAN_IDLE`** 将站点执行后台扫描之前必须空闲的最小时间（以毫秒为单位）设置为 `i_val` 中的值。

**`IEEE80211_IOC_BGSCAN_INTERVAL`** 将后台扫描操作之间的最小时间（秒）设置为 `i_val` 中的值。

**`IEEE80211_IOC_BMISSTHRESHOLD`** 将系统尝试漫游之前连续丢失的 Beacon 帧数设置为 `i_val` 中的值。此请求会导致运行接口被重置。

**`IEEE80211_IOC_BSSID`** 根据 `i_data` 设置所需 BSS 标识符的 802.11 MAC 地址。此请求会导致运行接口被重启。

**`IEEE80211_IOC_BURST`** 使用 `i_val` 中的值设置是否启用数据包突发。此请求会导致运行接口被重置。

**`IEEE80211_IOC_CHANNEL`** 将所需/当前信道设置为 `i_val` 给定的值。此请求会导致运行接口尽可能立即更改到指定信道；否则接口将被重启。注意此请求已弃用；请改用 `IEEE80211_IOC_CURCHAN`。

**`IEEE80211_IOC_CHANLIST`** 使用 `i_data` 指向的信道列表设置可用信道列表。信道列表是位向量，如果 IEEE 信道号 N 可用，则位 N 设置为 1。指定的信道列表会与支持的信道集合进行核对，任何不支持的信道都会被静默忽略。如果信道列表与支持信道的交集为空，则返回 Er EINVAL。注意安装新信道列表后，当前信道可能被标记为无效。此请求会导致运行接口被重启。

**`IEEE80211_IOC_COUNTERMEASURES`** 使用 `i_val` 中的值设置是否启用 TKIP 对抗措施。此请求只能在认证模式设置为 WPA 时使用；否则将返回 Er EOPNOTSUPP。

**`IEEE80211_IOC_CURCHAN`** 使用 `i_data` 引用的信息设置当前信道。此请求会导致运行接口尽可能立即更改到指定信道；否则接口将被重启。

**`IEEE80211_IOC_DELKEY`** 删除由 `i_data` 引用的信息指定的密钥。

**`IEEE80211_IOC_DELMAC`** 使用 `i_data` 指向的值删除 MAC 地址访问控制列表（ACL）数据库中的条目。必须安装并启用 [wlan\_acl(4)](/man4/wlan_acl.4.md) 模块，否则将返回 Er EINVAL。

**`IEEE80211_IOC_DFS`** 使用 `i_val` 中的值设置是否启用动态频率选择（DFS）。如果未启用 802.11h 支持，此请求将失败并返回 Er EINVAL。更多详情请参见上文的 `IEEE80211_IOC_DFS`。

**`IEEE80211_IOC_DOTD`** 使用 `i_val` 中的值设置是否启用 802.11d 支持。此请求会导致运行接口被重启。更多详情请参见上文的 `IEEE80211_IOC_DOTD`。

**`IEEE80211_IOC_DOTH`** 使用 `i_val` 中的值返回是否启用 802.11h 支持。更多详情请参见上文的 `IEEE80211_IOC_DOTH`。

**`IEEE80211_IOC_DROPUNENCRYPTED`** 使用 `i_val` 中的值设置是否应丢弃发送/接收的未加密数据包。

**`IEEE80211_IOC_DTIM_PERIOD`** 将 DTIM 事件之间的周期（以 beacon 间隔为单位）设置为 `i_val` 中的值。此请求会导致运行接口被重启。

**`IEEE80211_IOC_DWDS`** 使用 `i_val` 中的值设置是否启用动态 WDS 支持。更多详情请参见上文的 `IEEE80211_IOC_DWDS`。

**`IEEE80211_IOC_FF`** 使用 `i_val` 中的值设置是否启用 Atheros fast-frames 支持。此请求会导致运行接口被重启。更多详情请参见上文的 `IEEE80211_IOC_FF`。

**`IEEE80211_IOC_FRAGTHRESHOLD`** 使用 `i_val` 中的值设置启用分片帧的阈值（以字节为单位）。此请求会导致运行接口被重置。更多详情请参见上文的 `IEEE80211_IOC_FRAGTHRESHOLD`。

**`IEEE80211_IOC_GREENFIELD`** 使用 `i_val` 中的值设置是否启用 Greenfield 前导码使用。此请求会导致运行接口被重置。更多详情请参见上文的 `IEEE80211_IOC_GREENFIELD`。

**`IEEE80211_IOC_HIDESSID`** 使用 `i_val` 中的值设置是否启用 SSID 隐藏/伪装。此请求会导致运行接口被重置。更多详情请参见上文的 `IEEE80211_IOC_HIDESSID`。

**`IEEE80211_IOC_HTCOMPAT`** 使用 `i_val` 中的值设置是否启用 802.11n 兼容性支持。此请求会导致在 HT 信道上操作的运行接口被重置。更多详情请参见上文的 `IEEE80211_IOC_HTCOMPAT`。

**`IEEE80211_IOC_HTCONF`** 使用 `i_val` 中的值设置 HT 信道的自动提升。此请求会导致运行接口被重启。更多详情请参见上文的 `IEEE80211_IOC_HTCONF`。

**`IEEE80211_IOC_HTPROTMODE`** 使用 `i_val` 中的值设置在混合 802.11n 网络中用于保护 HT 帧的技术。此请求会导致运行接口被重置。更多详情请参见上文的 `IEEE80211_IOC_HTPROTMODE`。

**`IEEE80211_IOC_HWMP_MAXHOPS`** 根据 `i_val` 设置 HWMP 路径中可接受的最大跳数。值必须在 \[0-255] 范围内。

**`IEEE80211_IOC_HWMP_ROOTMODE`** 根据 `i_val` 设置 Mesh 根模式操作。有效值为 `IEEE80211_HWMP_ROOTMODE_DISABLED`（禁用根模式）、`IEEE80211_HWMP_ROOTMODE_NORMAL`（发送广播路径请求帧）、`IEEE80211_HWMP_ROOTMODE_PROACTIVE`（发送广播路径请求帧并强制回复）和 `IEEE80211_HWMP_ROOTMODE_RANN`（发送广播根通告（RANN）帧）。

**`IEEE80211_IOC_INACTIVITY`** 使用 `i_val` 中的值设置系统是否处理不活动处理。启用不活动处理时，系统会跟踪未发送帧的站点并定期探测它们以检查它们是否仍然存在。不活动且不响应探测的站点将被丢弃。

**`IEEE80211_IOC_MACCMD`** 更改 MAC 地址访问控制列表（ACL）系统的状态。支持多个请求：`IEEE80211_MACCMD_POLICY_OPEN`（将当前策略设置为禁用 ACL 使用）、`IEEE80211_MACCMD_POLICY_ALLOW`（将当前策略设置为仅允许数据库中列出的地址）、`IEEE80211_MACCMD_POLICY_DENY`（将当前策略设置为拒绝数据库中列出的地址）、`IEEE80211_MACCMD_POLICY_RADUS`（将当前策略设置为启用 RADIUS 后端使用）、`IEEE80211_MACCMD_FLUSH`（从数据库中刷新所有地址）和 `IEEE80211_MACCMD_DETACH`（分离 ACL 子系统，禁用它）。必须安装 [wlan\_acl(4)](/man4/wlan_acl.4.md) 模块，否则将返回 Er EINVAL。

**`IEEE80211_IOC_MESH_AP`** 使用 `i_val` 设置是否启用 Mesh AP 支持。

**`IEEE80211_IOC_MESH_FWRD`** 使用 `i_val` 设置是否启用数据包转发支持。

**`IEEE80211_IOC_MESH_ID`** 使用 `i_data` 指向的值设置 Mesh ID。Mesh ID 最长可达 `IEEE80211_MESHID_LEN` 字节。

**`IEEE80211_IOC_MESH_PP_METRIC`** 使用 `i_data` 指向的值设置链路度量协议。

**`IEEE80211_IOC_MESH_PP_PATH`** 使用 `i_data` 指向的值设置路径选择协议。

**`IEEE80211_IOC_MESH_RTCMD`** 操作 Mesh 路由表的状态。支持多个请求：`IEEE80211_MESH_RTCMD_FLUSH`（刷新路由表内容）、`IEEE80211_MESH_RTCMD_ADD`（为 `i_data` 中指定的 MAC 地址添加条目并启动对等发现过程）和 `IEEE80211_MESH_RTCMD_DELETE`（删除对应于 `i_data` 中指定的 MAC 地址的条目）。

**`IEEE80211_IOC_MESH_TTL`** 使用 `i_val` 设置此 mesh 节点发送的数据包中安装的 Mesh 生存时间（TTL）设置。

**`IEEE80211_IOC_MLME`** 使用 `i_data` 指向的 MLME 请求显式控制站点的 MLME 状态机。支持多个 MLME 操作：`IEEE80211_MLME_ASSOC`（请求关联到接入点）、`IEEE80211_MLME_DIASSOC`（取消关联指定站点）、`IEEE80211_MLME_DEAUTH`（取消认证指定站点）、`IEEE80211_MLME_AUHORIZE`（标记指定站点被授权传递数据帧）、`IEEE80211_MLME_UNAUTHORIZE`（撤销指定站点传递数据帧的能力）和 `IEEE80211_MLME_AUTH`（请求认证到接入点）。注意，当此功能用于以基础设施模式操作的站点时，漫游模式应设置为手动。

**`IEEE80211_IOC_POWERSAVE`** 将当前省电模式设置为 `i_val` 中的值。有效值请参见上文的 `IEEE80211_IOC_POWERSAVE`。此请求会导致运行接口被重置。

**`IEEE80211_IOC_POWERSAVESLEEP`** 将以 TU 为单位的省电睡眠时间设置为 `i_val` 中的值。此请求会导致运行接口被重置。

**`IEEE80211_IOC_PRIVACY`** 使用 `i_val` 中的值设置当前的 MLME PRIVACY 设置。更多详情请参见上文的 `IEEE80211_IOC_PRIVACY`。

**`IEEE80211_IOC_PROTMODE`** 将当前 802.11g 保护模式设置为 `i_val` 中的值。此请求会导致运行接口被重置。更多详情请参见上文的 `IEEE80211_IOC_PROTMODE`。此请求会导致运行接口被重置。

**`IEEE80211_IOC_PUREG`** 使用 `i_val` 中的值设置是否启用“pure 11g”模式。此请求会导致运行接口被重启。更多详情请参见上文的 `IEEE80211_IOC_PUREG`。

**`IEEE80211_IOC_PUREN`** 使用 `i_val` 中的值设置是否启用“pure 11n”模式。此请求会导致运行接口被重启。更多详情请参见上文的 `IEEE80211_IOC_PUREN`。

**`IEEE80211_IOC_REGDOMAIN`** 使用 `i_data` 引用的数据设置监管状态。此请求只能在从底层物理设备克隆的所有接口都标记为关闭时发出；否则返回 Er EBUSY。注意新的监管数据可能使任何所需信道无效。

**`IEEE80211_IOC_RIFS`** 使用 `i_val` 中的值设置是否启用精简帧间间隔（RIFS）。此设置仅在 HT 信道上使用 802.11n 操作时有意义。此请求会导致运行接口被重置。

**`IEEE80211_IOC_ROAM`** 使用 `i_data` 指向的数据设置站点漫游参数。

**`IEEE80211_IOC_ROAMING`** 将当前漫游模式设置为 `i_val` 中的值。更多详情请参见上文的 `IEEE80211_IOC_ROAMING`。

**`IEEE80211_IOC_RTSTHRESHOLD`** 将启用 RTS 帧传输的阈值（以字节为单位）设置为 `i_val` 中的值。此请求会导致运行接口被重置。更多详情请参见上文的 `IEEE80211_IOC_RTSTHRESHOLD`。

**`IEEE80211_IOC_SCANVALID`** 设置扫描操作结果被视为有效的期限（以秒为单位）。当扫描结果不再有效且需要它们时（例如漫游），系统将启动扫描操作以补充扫描缓存。

**`IEEE80211_IOC_SCAN_REQ`** 使用 `i_val` 指向的参数请求扫描操作。底层设备必须正在运行，否则将返回 Er ENXIO。对于 `sr_duration`、`sr_mindwell` 和 `sr_maxdwell`，短于 1 个时钟滴答的值将向上取整为一个滴答。如果提供的 SSID 多于系统能够处理的数量，多余的 SSID 将被静默忽略。如果扫描操作已在进行中，请求将被（静默地）忽略。

**`IEEE80211_IOC_SCAN_CANCEL`** 取消任何待处理/活动的扫描操作。

**`IEEE80211_IOC_SHORTGI`** 使用 `i_val` 中的值设置是否启用短保护间隔（SGI）。注意 SGI 仅在 HT（802.11n）信道上操作时使用。此请求会导致运行接口被重置。

**`IEEE80211_IOC_SMPS`** 将空间复用省电（SMPS）设置设置为 `i_val` 中的值。此请求会导致运行接口被重置。更多详情请参见上文的 `IEEE80211_IOC_SMPS`。

**`IEEE80211_IOC_SSID`** 使用 `i_data` 指向的值设置所需 SSID。字符串最多可有 IEEE80211\_NWID\_LEN 字节。此请求会导致运行接口被重启。

**`IEEE80211_IOC_STA_STATS`** 清除指定站点的累积统计信息。

**`IEEE80211_IOC_STA_VLAN`** 使用 `i_data` 指向的信息为指定站点设置 VLAN 标记。

**`IEEE80211_IOC_TDMA_BINTERVAL`** 将 Beacon 帧之间的间隔设置为 `i_val` 中的值。值必须为正。此请求会导致运行接口被重置。

**`IEEE80211_IOC_TDMA_SLOT`** 将当前 TDMA 槽位设置为 `i_val` 中的值。值必须在 \[0-slotcnt] 范围内。槽位 0 标识 TDMA 网络中的主站；如果它正在运行，将立即开始发送 Beacon 帧。

**`IEEE80211_IOC_TDMA_SLOTCNT`** 将 TDMA 网络中的槽位数设置为 `i_val` 中的值。此请求会导致运行接口被重置。

**`IEEE80211_IOC_TDMA_SLOTLEN`** 将网络中分配给每个站点的 TDMA 槽位长度设置为 `i_val` 中的值。槽位长度必须在 200 微秒到 1024 毫秒范围内（尽管 1-200ms 范围之外的值不太可能很好地工作）。此请求会导致运行接口被重置。

**`IEEE80211_IOC_TSN`** 使用 `i_val` 中的值设置是否启用过渡安全网络（TSN）。

**`IEEE80211_IOC_TURBOP`** 使用 `i_val` 中的值设置是否启用 Atheros 动态 Turbo 模式。此请求会导致运行接口被重启。

**`IEEE80211_IOC_TXPARAMS`** 使用 `i_data` 指向的数据设置发送参数。此请求会导致运行接口被重启。

**`IEEE80211_IOC_TXPOWER`** 将以 0.5 dBm 为单位的最大发送功率限制设置为 `i_val` 中的值。此请求会导致运行接口被重置。

**`IEEE80211_IOC_WEP`** 将当前 WEP 模式设置为 `i_val` 中的值。有效值请参见上文的 `IEEE80211_IOC_WEP`。此请求会导致运行接口被重启。注意此请求已弃用；请改用 `IEEE80211_IOC_PRIVACY` 和 `IEEE80211_IOC_DROPUNENCRYPTED`。

**`IEEE80211_IOC_WEPKEY`** 使用 `i_data` 指向的数据设置由 `i_val` 指示的 WEP 密钥。注意此请求已弃用；请改用 `IEEE80211_IOC_WPAKEY`。

**`IEEE80211_IOC_WEPTXKEY`** 将用于传输的默认发送密钥设置为 `i_val` 中的值。

**`IEEE80211_IOC_WME`** 使用 `i_val` 中的值设置是否启用 WME/WMM 支持。此请求会导致运行接口被重置。

**`IEEE80211_IOC_WME_ACKPOLICY`** 使用 `i_val` 中的值为 `i_len` 中指定的访问类别（AC）设置 WME ACK 策略。

**`IEEE80211_IOC_WME_ACM`** 使用 `i_val` 中的值为 `i_len` 中指定的访问类别（AC）设置 WME 准入控制机制。

**`IEEE80211_IOC_WME_AIFS`** 使用 `i_val` 中的值为 `i_len` 中指定的访问类别（AC）设置 WME AIFS 参数。

**`IEEE80211_IOC_WME_CWMAX`** 使用 `i_val` 中的值为 `i_len` 中指定的访问类别（AC）设置 WME CWmax 参数。

**`IEEE80211_IOC_WME_CWMIN`** 使用 `i_val` 中的值为 `i_len` 中指定的访问类别（AC）设置 WME CWmin 参数。

**`IEEE80211_IOC_WME_TXOPLIMIT`** 使用 `i_val` 中的值为 `i_len` 中指定的访问类别（AC）设置 WME TxOpLimit 参数。

**`IEEE80211_IOC_WPA`** 使用 `i_val` 中的值设置 WPA 配置。此请求会导致运行接口被重置。更多详情请参见上文的 `IEEE80211_IOC_WPA`。

**`IEEE80211_IOC_WPAKEY`** 使用 `i_data` 指向的缓冲区中的数据设置请求的加密密钥。更多详情请参见 `IEEE80211_IOC_WPAKEY`。

**`IEEE80211_IOC_WPS`** 使用 `i_val` 中的值设置是否启用 Wi-Fi 保护设置（WPS）。

## 参见

ioctl(2), [wlan(4)](/man4/wlan.4.md), [wlan\_acl(4)](/man4/wlan_acl.4.md), [wlan\_xauth(4)](/man4/wlan_xauth.4.md), hostapd(8), [ifconfig(8)](/man8/ifconfig.8.md), wpa\_supplicant(8)
