This section describes the standard interface to configuration
and status information on IEEE 802.11 devices.
Most devices support options not configurable by this interface.
They must be set by their respective, specific control program.
The interface is via one
of the following
ioctl(2)
calls on a socket:
SIOCG80211
Get configuration or status information.
SIOCS80211
Set configuration information.
These requests are made via a modified
Vt ifreq
structure.
This structure is defined as follows:
struct ieee80211req {
char i_name[IFNAMSIZ]; /* if_name, e.g. "wi0" */
u_int16_t i_type; /* req type */
int16_t i_val; /* Index or simple value */
int16_t i_len; /* Index or simple value */
void *i_data; /* Extra data */
};
For
SIOCG80211
the following values of
i_type
are valid:
IEEE80211_IOC_SSID
Returns the requested SSID by copying it into the buffer pointed to by
i_data
and setting
i_len
to the length.
If
i_val
is > 0 then the request refers to the configured value for that slot.
Generally, 0 is the only valid value, but some interfaces support more
SSIDs.
If
i_val
is -1 then the request refers to the currently active value.
IEEE80211_IOC_NUMSSIDS
Returns the number of SSIDs this card supports.
In most cases, this is
1, but some devices such as
an(4)
support more.
IEEE80211_IOC_WEP
Returns the current WEP status in
i_val
Valid values are
IEEE80211_WEP_NOSUP , IEEE80211_WEP_ON , IEEE80211_WEP_OFF
and
IEEE80211_WEP_MIXED
Respectively, these values mean unsupported, mandatory for all devices,
off, and on, but not required for all devices.
IEEE80211_IOC_WEPKEY
Returns the requested WEP key via
i_data
and its length via
i_len
If the device does not support returning the WEP key or the user is not
root then the key may be returned as all zeros.
Technically this is a
valid key, but it is the kind of key an idiot would put on his luggage so
we use it as a special value.
Generally, only four WEP keys are allowed, but some devices support more.
If so, the first four (0-3) are
the standard keys stored in volatile storage and the others are device
specific.
IEEE80211_IOC_NUMWEPKEYS
Returns the number of WEP keys supported by this device, generally 4.
A device that does not support WEP may either report 0 or simply return
Er EINVAL .
IEEE80211_IOC_WEPTXKEY
Returns the WEP key used for transmission.
IEEE80211_IOC_AUTHMODE
Returns the current authentication mode in
i_val
Valid values are
IEEE80211_AUTH_NONE , IEEE80211_AUTH_OPEN
and
IEEE80211_AUTH_SHARED
IEEE80211_IOC_STATIONNAME
Returns the station name via
i_data
and its length via
i_len
While all known devices seem to support this in some way or another,
they all do it differently and it appears to not have anything to do
with the actual IEEE 802.11 standard so making up an answer may be
necessary for future devices.
IEEE80211_IOC_CHANNEL
Returns the current direct sequence spread spectrum channel in use.
IEEE80211_IOC_POWERSAVE
Returns the current powersaving mode.
Valid values are
IEEE80211_POWERSAVE_NOSUP , IEEE80211_POWERSAVE_OFFIEEE80211_POWERSAVE_ON , IEEE80211_POWERSAVE_CAMIEEE80211_POWERSAVE_PSP
and
IEEE80211_POWERSAVE_PSP_CAM
Currently,
IEEE80211_POWERSAVE_ON
is defined to be equal to
IEEE80211_POWERSAVE_CAM
but this may be incorrect.
IEEE80211_IOC_POWERSAVESLEEP
Returns the powersave sleep time in msec in
i_val
For
SIOCS80211
the following values of
i_type
are valid:
IEEE80211_IOC_SSID
Set the desired SSID for infrastructure and ad-hoc modes to value given
by
i_data
and
i_len
The length should be no longer than 32 characters.
IEEE80211_IOC_WEP
Set the current WEP mode to the value given in
i_val
Valid values are the same as those for this value above.
Devices which
do not support all modes may choose to either return
Er EINVAL
or choose a reasonable alternate (supported) setting.
IEEE80211_IOC_WEPKEY
Set the WEP key indicated by
i_val
to the value given by
i_data
and
i_len
Generally, valid values of
i_len
are 0, 5, and 13 though not all devices with WEP support have support
for 13-byte keys.
IEEE80211_IOC_WEPTXKEY
Set the WEP key used for transmission to the value in
i_val
Not all values which are valid for setting keys may be valid for setting
transmit keys due to strange device interfaces.
IEEE80211_IOC_AUTHMODE
Set the current authorization mode to the value given in
i_val
Valid values are given above.
Not all devices support this.
IEEE80211_IOC_STATIONNAME
Set the station name to the value given by
i_data
and
i_len
The standard does not appear to deal with this feature so the range of
valid values may vary from device to device.
IEEE80211_IOC_CHANNEL
Set the desired ad-hoc channel to the value given by
i_val
On some devices this has an impact on infrastructure mode as well.
Valid values are 1-14, but 0 should be allowed and should return the
device to the default value.
May devices support this directly by
converting any invalid value to the default value.
IEEE80211_IOC_POWERSAVE
Set the current powersaving mode to the value given in
i_val
Valid values are the same as those for this value above.
Devices which
do not support all modes may choose to either return
Er EINVAL
or choose a reasonable alternate (supported) setting.
Most devices only
support CAM mode.
IEEE80211_IOC_POWERSAVESLEEP
Set the powersave sleep time in msec to the value in
i_val