ieee80211_node(9)
NAME
- ieee80211_node_attach, ieee80211_node_lateattach,
- ieee80211_node_detach,
ieee80211_begin_scan, ieee80211_next_scan,
- ieee80211_create_ibss,
ieee80211_end_scan, ieee80211_alloc_node, ieee80211_dup_bss,
ieee80211_find_node, ieee80211_lookup_node,
- ieee80211_free_node,
ieee80211_free_allnodes, ieee80211_timeout_nodes,
- ieee80211_iterate_nodes
- software 802.11 stack node management functions
SYNOPSIS
#include <net80211/ieee80211_var.h>
#include <net80211/ieee80211_proto.h>
#include <net80211/ieee80211_node.h>
void
ieee80211_node_attach(struct ifnet *ifp);
void
ieee80211_node_lateattach(struct ifnet *ifp);
void
ieee80211_node_detach(struct ifnet *ifp);
void
ieee80211_begin_scan(struct ifnet *ifp);
void
ieee80211_next_scan(struct ifnet *ifp);
void
ieee80211_create_ibss(struct ieee80211com *ic,
struct ieee80211_channel *chan);
void
ieee80211_end_scan(struct ifnet *ifp);
struct ieee80211_node *
ieee80211_alloc_node(struct ieee80211com *ic, u_int8_t
*macaddr);
struct ieee80211_node *
ieee80211_dup_bss(struct ieee80211com *ic, u_int8_t
*macaddr);
struct ieee80211_node *
ieee80211_find_node(struct ieee80211com *ic, u_int8_t
*macaddr);
struct ieee80211_node *
ieee80211_lookup_node(struct ieee80211com *ic, u_int8_t
*macaddr,
struct ieee80211_channel *chan);
void
ieee80211_free_node(struct ieee80211com *ic, struct
ieee80211_node *ni);
void
ieee80211_free_allnodes(struct ieee80211com *ic);
void
ieee80211_timeout_nodes(struct ieee80211com *ic);
void
ieee80211_iterate_nodes(struct ieee80211com *ic,
ieee80211_iter_func *f,
void *arg);
DESCRIPTION
- These functions are used to manage node lists within the
- software 802.11
stack. These lists are typically used for implementing
- host-mode AP
functionality, or providing signal quality information about
- neighbouring
nodes.
- The ieee80211_node_attach() function is called from
- ieee80211_ifattach(9)
to initialize node database management callbacks for the in
- terface ifp
(specifically for memory allocation, node copying and node
- signal inspection). These functions may be overridden in special circum
- stances, as
long as this is done after calling ieee80211_ifattach(9) and
- prior to any
other call which may allocate a node.
- The ieee80211_node_lateattach() function initialises the
- ic_bss node element of the interface ifp during ieee80211_media_init(9).
- This late
attachment is to account for certain special cases described
- under
ieee80211_node_attach().
- The ieee80211_node_detach() function destroys all node
- database state
associated with the interface ifp, and is usually called
- during device
detach.
- The ieee80211_begin_scan() function initialises the node
- database in
preparation of an active scan for an access point on the in
- terface ifp.
The scan begins on the next radio channel by calling
ieee80211_next_scan() internally. The actual scanning for
- an access
point is not automated; the device driver itself only han
- dles setting the
radio frequency of the card and stepping through the chan
- nels.
- The ieee80211_next_scan() function is used to inform the
- ieee80211(9)
layer that the interface ifp is now scanning for an access
- point on the
next radio channel. A device driver is expected to first
- call
ieee80211_begin_scan(), to initialize the node database,
- then set the
radio channel on the device; then, after a certain time has
- elapsed
(200ms for example), call ieee80211_next_scan() to move to
- the next channel. Typically, a callout is used to automate this process;
- see
callout_init(9) for more information on how to use callouts.
- The ieee80211_create_ibss() function sets up the
- net80211-specific portion of an interface's softc, ic, for use in IBSS mode.
- The ieee80211_end_scan() function is called by
- ieee80211_next_scan() when
the state machine has peformed a full cycle of scanning on
- all available
radio channels. Internally, ieee80211_end_scan() will in
- spect the node
cache associated with the interface ifp for suitable access
- points found
during scanning, and associate with one, should the parame
- ters of the
node match those of the configuration requested from user
- land.
- The ieee80211_alloc_node() function allocates an instance of
- struct
ieee80211_node for a node having the MAC address macaddr,
- and associates
it with the interface ic. If the allocation is successful,
- the node
structure is initialised by ieee80211_setup_node(); other
- wise, NULL is
returned.
- The ieee80211_dup_bss() function is similar to
- ieee80211_alloc_node(),
but is instead used to create a node database entry for the
- BSSID macaddr
associated with the interface ic. If the allocation is suc
- cessful, the
node structure is initialised by ieee80211_setup_node();
- otherwise, NULL
is returned.
- The ieee80211_find_node() function will iterate through the
- node list
associated with the interface ic, searching for a node entry
- which
matches macaddr. If the entry is found, its reference count
- is incremented, and a pointer to the node is returned; otherwise,
- NULL will be
returned.
- The ieee80211_lookup_node() function is similar to
- ieee80211_find_node(),
with an additional argument chan which is used to specify a
- channel for
the match. If the entry is found, its reference count is
- incremented,
and a pointer to the node is returned; otherwise, NULL will
- be returned.
- The ieee80211_free_node() function will remove the node ni
- from the node
database entries associated with the interface ic, and free
- any memory
associated with the node. This private method can be over
- ridden in
ieee80211_node_attach().
- The ieee80211_free_allnodes() function will iterate through
- the node list
calling ieee80211_free_node() for all nodes associated with
- the interface
ic.
- The ieee80211_timeout_nodes() checks if the inactivity timer
- of each node
associated with the interface ic has exceeded the pre-de
- fined constant
IEEE80211_INACT_MAX. If so, then the node is freed, after
- sending a
deauthentication message.
- The ieee80211_iterate_nodes() function will call the user
- defined callback function f for all nodes in the node database associat
- ed with the
interface ic. The callback is invoked with the with the us
- er-supplied
value arg and a pointer to the current node.
SEE ALSO
ieee80211(9), ifnet(9)
HISTORY
- The ieee80211 series of functions first appeared in NetBSD
- 1.5, and were
later ported to FreeBSD 4.6.
AUTHORS
- This manual page was written by Bruce M. Simpson <bms@FreeB
- SD.org> and
Darron Broad <darron@kewl.org>.
- BSD July 4, 2004