1ff66a890SHiten Pandya.\" 2ff66a890SHiten Pandya.\" Copyright (c) 2004 Bruce M. Simpson <bms@spc.org> 3ff66a890SHiten Pandya.\" Copyright (c) 2004 Darron Broad <darron@kewl.org> 4ff66a890SHiten Pandya.\" All rights reserved. 5ff66a890SHiten Pandya.\" 6ff66a890SHiten Pandya.\" Redistribution and use in source and binary forms, with or without 7ff66a890SHiten Pandya.\" modification, are permitted provided that the following conditions 8ff66a890SHiten Pandya.\" are met: 9ff66a890SHiten Pandya.\" 1. Redistributions of source code must retain the above copyright 10ff66a890SHiten Pandya.\" notice, this list of conditions and the following disclaimer. 11ff66a890SHiten Pandya.\" 2. Redistributions in binary form must reproduce the above copyright 12ff66a890SHiten Pandya.\" notice, this list of conditions and the following disclaimer in the 13ff66a890SHiten Pandya.\" documentation and/or other materials provided with the distribution. 14ff66a890SHiten Pandya.\" 15ff66a890SHiten Pandya.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16ff66a890SHiten Pandya.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17ff66a890SHiten Pandya.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18ff66a890SHiten Pandya.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19ff66a890SHiten Pandya.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20ff66a890SHiten Pandya.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21ff66a890SHiten Pandya.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22ff66a890SHiten Pandya.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23ff66a890SHiten Pandya.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24ff66a890SHiten Pandya.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25ff66a890SHiten Pandya.\" SUCH DAMAGE. 26ff66a890SHiten Pandya.\" 27ff66a890SHiten Pandya.\" $FreeBSD$ 28*44cb301eSSascha Wildner.\" $DragonFly: src/share/man/man9/ieee80211_node.9,v 1.2 2006/05/26 19:39:40 swildner Exp $ 29ff66a890SHiten Pandya.\" $Id: ieee80211_node.9,v 1.3 2004/07/07 12:59:39 ru Exp $ 30ff66a890SHiten Pandya.\" 31ff66a890SHiten Pandya.Dd July 4, 2004 32ff66a890SHiten Pandya.Dt IEEE80211_NODE 9 33ff66a890SHiten Pandya.Os 34ff66a890SHiten Pandya.Sh NAME 35ff66a890SHiten Pandya.Nm ieee80211_node_attach , 36ff66a890SHiten Pandya.Nm ieee80211_node_lateattach , 37ff66a890SHiten Pandya.Nm ieee80211_node_detach , 38ff66a890SHiten Pandya.Nm ieee80211_begin_scan , 39ff66a890SHiten Pandya.Nm ieee80211_next_scan , 40ff66a890SHiten Pandya.Nm ieee80211_create_ibss , 41ff66a890SHiten Pandya.Nm ieee80211_end_scan , 42ff66a890SHiten Pandya.Nm ieee80211_alloc_node , 43ff66a890SHiten Pandya.Nm ieee80211_dup_bss , 44ff66a890SHiten Pandya.Nm ieee80211_find_node , 45ff66a890SHiten Pandya.Nm ieee80211_lookup_node , 46ff66a890SHiten Pandya.Nm ieee80211_free_node , 47ff66a890SHiten Pandya.Nm ieee80211_free_allnodes , 48ff66a890SHiten Pandya.Nm ieee80211_timeout_nodes , 49ff66a890SHiten Pandya.Nm ieee80211_iterate_nodes 50ff66a890SHiten Pandya.Nd software 802.11 stack node management functions 51ff66a890SHiten Pandya.Sh SYNOPSIS 52*44cb301eSSascha Wildner.In netproto/802_11/ieee80211_var.h 53*44cb301eSSascha Wildner.In netproto/802_11/ieee80211_proto.h 54*44cb301eSSascha Wildner.In netproto/802_11/ieee80211_node.h 55ff66a890SHiten Pandya.Ft void 56ff66a890SHiten Pandya.Fn ieee80211_node_attach "struct ifnet *ifp" 57ff66a890SHiten Pandya.Ft void 58ff66a890SHiten Pandya.Fn ieee80211_node_lateattach "struct ifnet *ifp" 59ff66a890SHiten Pandya.Ft void 60ff66a890SHiten Pandya.Fn ieee80211_node_detach "struct ifnet *ifp" 61ff66a890SHiten Pandya.Ft void 62ff66a890SHiten Pandya.Fn ieee80211_begin_scan "struct ifnet *ifp" 63ff66a890SHiten Pandya.Ft void 64ff66a890SHiten Pandya.Fn ieee80211_next_scan "struct ifnet *ifp" 65ff66a890SHiten Pandya.Ft void 66ff66a890SHiten Pandya.Fo ieee80211_create_ibss 67ff66a890SHiten Pandya.Fa "struct ieee80211com *ic" "struct ieee80211_channel *chan" 68ff66a890SHiten Pandya.Fc 69ff66a890SHiten Pandya.Ft void 70ff66a890SHiten Pandya.Fn ieee80211_end_scan "struct ifnet *ifp" 71ff66a890SHiten Pandya.Ft struct ieee80211_node * 72ff66a890SHiten Pandya.Fn ieee80211_alloc_node "struct ieee80211com *ic" "u_int8_t *macaddr" 73ff66a890SHiten Pandya.Ft struct ieee80211_node * 74ff66a890SHiten Pandya.Fn ieee80211_dup_bss "struct ieee80211com *ic" "u_int8_t *macaddr" 75ff66a890SHiten Pandya.Ft struct ieee80211_node * 76ff66a890SHiten Pandya.Fn ieee80211_find_node "struct ieee80211com *ic" "u_int8_t *macaddr" 77ff66a890SHiten Pandya.Ft struct ieee80211_node * 78ff66a890SHiten Pandya.Fo ieee80211_lookup_node 79ff66a890SHiten Pandya.Fa "struct ieee80211com *ic" "u_int8_t *macaddr" 80ff66a890SHiten Pandya.Fa "struct ieee80211_channel *chan" 81ff66a890SHiten Pandya.Fc 82ff66a890SHiten Pandya.Ft void 83ff66a890SHiten Pandya.Fn ieee80211_free_node "struct ieee80211com *ic" "struct ieee80211_node *ni" 84ff66a890SHiten Pandya.Ft void 85ff66a890SHiten Pandya.Fn ieee80211_free_allnodes "struct ieee80211com *ic" 86ff66a890SHiten Pandya.Ft void 87ff66a890SHiten Pandya.Fn ieee80211_timeout_nodes "struct ieee80211com *ic" 88ff66a890SHiten Pandya.Ft void 89ff66a890SHiten Pandya.Fo ieee80211_iterate_nodes 90ff66a890SHiten Pandya.Fa "struct ieee80211com *ic" "ieee80211_iter_func *f" "void *arg" 91ff66a890SHiten Pandya.Fc 92ff66a890SHiten Pandya.Sh DESCRIPTION 93ff66a890SHiten PandyaThese functions are used to manage node lists within the software 94ff66a890SHiten Pandya802.11 stack. 95ff66a890SHiten PandyaThese lists are typically used for implementing host-mode AP functionality, 96ff66a890SHiten Pandyaor providing signal quality information about neighbouring nodes. 97ff66a890SHiten Pandya.Pp 98ff66a890SHiten Pandya.\" 99ff66a890SHiten PandyaThe 100ff66a890SHiten Pandya.Fn ieee80211_node_attach 101ff66a890SHiten Pandyafunction is called from 102ff66a890SHiten Pandya.Xr ieee80211_ifattach 9 103ff66a890SHiten Pandyato initialize node database management callbacks for the interface 104ff66a890SHiten Pandya.Fa ifp 105ff66a890SHiten Pandya(specifically for memory allocation, node copying and node 106ff66a890SHiten Pandyasignal inspection). 107ff66a890SHiten PandyaThese functions may be overridden in special circumstances, 108ff66a890SHiten Pandyaas long as this is done after calling 109ff66a890SHiten Pandya.Xr ieee80211_ifattach 9 110ff66a890SHiten Pandyaand prior to any other call which may allocate a node. 111ff66a890SHiten Pandya.Pp 112ff66a890SHiten Pandya.\" 113ff66a890SHiten PandyaThe 114ff66a890SHiten Pandya.Fn ieee80211_node_lateattach 115ff66a890SHiten Pandyafunction initialises the 116ff66a890SHiten Pandya.Va ic_bss 117ff66a890SHiten Pandyanode element of the interface 118ff66a890SHiten Pandya.Fa ifp 119ff66a890SHiten Pandyaduring 120ff66a890SHiten Pandya.Xr ieee80211_media_init 9 . 121ff66a890SHiten PandyaThis late attachment is to account for certain special cases described under 122ff66a890SHiten Pandya.Fn ieee80211_node_attach . 123ff66a890SHiten Pandya.Pp 124ff66a890SHiten Pandya.\" 125ff66a890SHiten PandyaThe 126ff66a890SHiten Pandya.Fn ieee80211_node_detach 127ff66a890SHiten Pandyafunction destroys all node database state associated with the interface 128ff66a890SHiten Pandya.Fa ifp , 129ff66a890SHiten Pandyaand is usually called during device detach. 130ff66a890SHiten Pandya.Pp 131ff66a890SHiten Pandya.\" 132ff66a890SHiten PandyaThe 133ff66a890SHiten Pandya.Fn ieee80211_begin_scan 134ff66a890SHiten Pandyafunction initialises the node database in preparation of an active 135ff66a890SHiten Pandyascan for an access point on the interface 136ff66a890SHiten Pandya.Fa ifp . 137ff66a890SHiten PandyaThe scan begins on the next radio channel by calling 138ff66a890SHiten Pandya.Fn ieee80211_next_scan 139ff66a890SHiten Pandyainternally. 140ff66a890SHiten PandyaThe actual scanning for an access point is not automated; 141ff66a890SHiten Pandyathe device driver itself only handles setting the radio frequency 142ff66a890SHiten Pandyaof the card and stepping through the channels. 143ff66a890SHiten Pandya.Pp 144ff66a890SHiten Pandya.\" 145ff66a890SHiten PandyaThe 146ff66a890SHiten Pandya.Fn ieee80211_next_scan 147ff66a890SHiten Pandyafunction is used to inform the 148ff66a890SHiten Pandya.Xr ieee80211 9 149ff66a890SHiten Pandyalayer that the interface 150ff66a890SHiten Pandya.Fa ifp 151ff66a890SHiten Pandyais now scanning for an access point on the next radio channel. 152ff66a890SHiten PandyaA device driver is expected to first call 153ff66a890SHiten Pandya.Fn ieee80211_begin_scan , 154ff66a890SHiten Pandyato initialize the node database, 155ff66a890SHiten Pandyathen set the radio channel on the device; 156ff66a890SHiten Pandyathen, after a certain time has elapsed (200ms for example), call 157ff66a890SHiten Pandya.Fn ieee80211_next_scan 158ff66a890SHiten Pandyato move to the next channel. 159ff66a890SHiten PandyaTypically, a callout is used to automate this process; see 160ff66a890SHiten Pandya.Xr callout_init 9 161ff66a890SHiten Pandyafor more information on how to use callouts. 162ff66a890SHiten Pandya.Pp 163ff66a890SHiten Pandya.\" 164ff66a890SHiten PandyaThe 165ff66a890SHiten Pandya.Fn ieee80211_create_ibss 166ff66a890SHiten Pandyafunction sets up the net80211-specific portion of an interface's softc, 167ff66a890SHiten Pandya.Fa ic , 168ff66a890SHiten Pandyafor use in IBSS mode. 169ff66a890SHiten Pandya.Pp 170ff66a890SHiten Pandya.\" 171ff66a890SHiten PandyaThe 172ff66a890SHiten Pandya.Fn ieee80211_end_scan 173ff66a890SHiten Pandyafunction is called by 174ff66a890SHiten Pandya.Fn ieee80211_next_scan 175ff66a890SHiten Pandyawhen the state machine has peformed a full cycle of scanning on 176ff66a890SHiten Pandyaall available radio channels. 177ff66a890SHiten PandyaInternally, 178ff66a890SHiten Pandya.Fn ieee80211_end_scan 179ff66a890SHiten Pandyawill inspect the node cache associated with the interface 180ff66a890SHiten Pandya.Fa ifp 181ff66a890SHiten Pandyafor suitable access points found during scanning, and associate with one, 182ff66a890SHiten Pandyashould the parameters of the node match those of the configuration 183ff66a890SHiten Pandyarequested from userland. 184ff66a890SHiten Pandya.Pp 185ff66a890SHiten Pandya.\" 186ff66a890SHiten PandyaThe 187ff66a890SHiten Pandya.Fn ieee80211_alloc_node 188ff66a890SHiten Pandyafunction allocates an instance of 189ff66a890SHiten Pandya.Vt "struct ieee80211_node" 190ff66a890SHiten Pandyafor a node having the MAC address 191ff66a890SHiten Pandya.Fa macaddr , 192ff66a890SHiten Pandyaand associates it with the interface 193ff66a890SHiten Pandya.Fa ic . 194ff66a890SHiten PandyaIf the allocation is successful, the node structure is initialised by 195ff66a890SHiten Pandya.Fn ieee80211_setup_node ; 196ff66a890SHiten Pandyaotherwise, 197ff66a890SHiten Pandya.Dv NULL 198ff66a890SHiten Pandyais returned. 199ff66a890SHiten Pandya.Pp 200ff66a890SHiten Pandya.\" 201ff66a890SHiten PandyaThe 202ff66a890SHiten Pandya.Fn ieee80211_dup_bss 203ff66a890SHiten Pandyafunction is similar to 204ff66a890SHiten Pandya.Fn ieee80211_alloc_node , 205ff66a890SHiten Pandyabut is instead used to create a node database entry for the BSSID 206ff66a890SHiten Pandya.Fa macaddr 207ff66a890SHiten Pandyaassociated with the interface 208ff66a890SHiten Pandya.Fa ic . 209ff66a890SHiten PandyaIf the allocation is successful, the node structure is initialised by 210ff66a890SHiten Pandya.Fn ieee80211_setup_node ; 211ff66a890SHiten Pandyaotherwise, 212ff66a890SHiten Pandya.Dv NULL 213ff66a890SHiten Pandyais returned. 214ff66a890SHiten Pandya.Pp 215ff66a890SHiten Pandya.\" 216ff66a890SHiten PandyaThe 217ff66a890SHiten Pandya.Fn ieee80211_find_node 218ff66a890SHiten Pandyafunction will iterate through the node list associated with the interface 219ff66a890SHiten Pandya.Fa ic , 220ff66a890SHiten Pandyasearching for a node entry which matches 221ff66a890SHiten Pandya.Fa macaddr . 222ff66a890SHiten PandyaIf the entry is found, its reference count is incremented, and 223ff66a890SHiten Pandyaa pointer to the node is returned; otherwise, 224ff66a890SHiten Pandya.Dv NULL 225ff66a890SHiten Pandyawill be returned. 226ff66a890SHiten Pandya.Pp 227ff66a890SHiten Pandya.\" 228ff66a890SHiten PandyaThe 229ff66a890SHiten Pandya.Fn ieee80211_lookup_node 230ff66a890SHiten Pandyafunction is similar to 231ff66a890SHiten Pandya.Fn ieee80211_find_node , 232ff66a890SHiten Pandyawith an additional argument 233ff66a890SHiten Pandya.Fa chan 234ff66a890SHiten Pandyawhich is used to specify a channel for the match. 235ff66a890SHiten PandyaIf the entry is found, its reference count is incremented, and 236ff66a890SHiten Pandyaa pointer to the node is returned; otherwise, 237ff66a890SHiten Pandya.Dv NULL 238ff66a890SHiten Pandyawill be returned. 239ff66a890SHiten Pandya.Pp 240ff66a890SHiten Pandya.\" 241ff66a890SHiten PandyaThe 242ff66a890SHiten Pandya.Fn ieee80211_free_node 243ff66a890SHiten Pandyafunction will remove the node 244ff66a890SHiten Pandya.Fa ni 245ff66a890SHiten Pandyafrom the node database entries associated with the interface 246ff66a890SHiten Pandya.Fa ic , 247ff66a890SHiten Pandyaand free any memory associated with the node. 248ff66a890SHiten PandyaThis private method can be overridden in 249ff66a890SHiten Pandya.Fn ieee80211_node_attach . 250ff66a890SHiten Pandya.\" 251ff66a890SHiten Pandya.Pp 252ff66a890SHiten PandyaThe 253ff66a890SHiten Pandya.Fn ieee80211_free_allnodes 254ff66a890SHiten Pandyafunction will iterate through the node list calling 255ff66a890SHiten Pandya.Fn ieee80211_free_node 256ff66a890SHiten Pandyafor all nodes associated with the interface 257ff66a890SHiten Pandya.Fa ic . 258ff66a890SHiten Pandya.Pp 259ff66a890SHiten Pandya.\" 260ff66a890SHiten PandyaThe 261ff66a890SHiten Pandya.Fn ieee80211_timeout_nodes 262ff66a890SHiten Pandyachecks if the inactivity timer of each node associated with the interface 263ff66a890SHiten Pandya.Fa ic 264ff66a890SHiten Pandyahas exceeded the pre-defined constant 265ff66a890SHiten Pandya.Dv IEEE80211_INACT_MAX . 266ff66a890SHiten PandyaIf so, then the node is freed, after sending a deauthentication message. 267ff66a890SHiten Pandya.Pp 268ff66a890SHiten Pandya.\" 269ff66a890SHiten PandyaThe 270ff66a890SHiten Pandya.Fn ieee80211_iterate_nodes 271ff66a890SHiten Pandyafunction will call the user-defined callback function 272ff66a890SHiten Pandya.Fa f 273ff66a890SHiten Pandyafor all nodes in the node database associated with the interface 274ff66a890SHiten Pandya.Fa ic . 275ff66a890SHiten PandyaThe callback is invoked with the with the user-supplied value 276ff66a890SHiten Pandya.Fa arg 277ff66a890SHiten Pandyaand a pointer to the current node. 278ff66a890SHiten Pandya.\" 279ff66a890SHiten Pandya.Sh SEE ALSO 280ff66a890SHiten Pandya.Xr ieee80211 9 , 281ff66a890SHiten Pandya.Xr ifnet 9 282ff66a890SHiten Pandya.Sh HISTORY 283ff66a890SHiten PandyaThe 284ff66a890SHiten Pandya.Nm ieee80211 285ff66a890SHiten Pandyaseries of functions first appeared in 286ff66a890SHiten Pandya.Nx 1.5 , 287ff66a890SHiten Pandyaand were later ported to 288ff66a890SHiten Pandya.Fx 4.6 . 289ff66a890SHiten Pandya.Sh AUTHORS 290ff66a890SHiten Pandya.An -nosplit 291ff66a890SHiten PandyaThis man page was written by 292ff66a890SHiten Pandya.An Bruce M. Simpson Aq bms@FreeBSD.org 293ff66a890SHiten Pandyaand 294ff66a890SHiten Pandya.An Darron Broad Aq darron@kewl.org . 295