xref: /dflybsd-src/share/man/man9/ieee80211_node.9 (revision 44cb301e8903dd832ef88b01db3694023ab5e3a7)
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