ieee80211 -- standard interface to IEEE 802.11 devices
#include <sys/types.h>
#include <sys/socket.h>
#include <net/if.h>
#include <net/ethernet.h>
#include <net/if_ieee80211.h>
This section describes the interface 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 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's 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 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_OFF,
IEEE80211_POWERSAVE_ON,
IEEE80211_POWERSAVE_CAM,
IEEE80211_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 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 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.
ioctl(2), an(4), ray(4), wi(4), ancontrol(8), ifconfig(8), raycontrol(8),
wicontrol(8)
The ieee80211 manual appeared in FreeBSD 4.3.
FreeBSD 5.2.1 February 23, 2001 FreeBSD 5.2.1 [ Back ] |