1 /* $NetBSD: ieee80211_sysctl.h,v 1.8 2007/12/25 18:33:46 perry Exp $ */
3 * Copyright (c) 2005 David Young. All rights reserved.
5 * Redistribution and use in source and binary forms, with or
6 * without modification, are permitted provided that the following
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above
11 * copyright notice, this list of conditions and the following
12 * disclaimer in the documentation and/or other materials provided
13 * with the distribution.
15 * THIS SOFTWARE IS PROVIDED BY David Young ``AS IS'' AND ANY
16 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
17 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
18 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL David
19 * Young BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
20 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
21 * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
28 #ifndef _NET80211_IEEE80211_SYSCTL_H_
29 #define _NET80211_IEEE80211_SYSCTL_H_
31 #include <net80211/_ieee80211.h>
33 /* sysctl(9) interface to net80211 client/peer records */
35 /* Name index, offset from net.link.ieee80211.node. */
37 #define IEEE80211_SYSCTL_NODENAME_IF 0
38 #define IEEE80211_SYSCTL_NODENAME_OP 1
39 #define IEEE80211_SYSCTL_NODENAME_ARG 2
40 #define IEEE80211_SYSCTL_NODENAME_TYPE 3
41 #define IEEE80211_SYSCTL_NODENAME_ELTSIZE 4
42 #define IEEE80211_SYSCTL_NODENAME_ELTCOUNT 5
43 #define IEEE80211_SYSCTL_NODENAMELEN 6
45 /* Record type numbers. */
46 #define IEEE80211_SYSCTL_T_NODE 0 /* client/peer record */
47 #define IEEE80211_SYSCTL_T_RSSADAPT 1 /* rssadapt(9) record
50 #define IEEE80211_SYSCTL_T_DRVSPEC 2 /* driver-specific record
54 #define IEEE80211_SYSCTL_OP_ALL 0
56 /* Every record begins with this information. */
57 struct ieee80211_node_sysctlhdr
{
58 /*00*/ u_int16_t sh_ifindex
;
59 /*02*/ u_int8_t sh_macaddr
[IEEE80211_ADDR_LEN
];
60 /*08*/ u_int8_t sh_bssid
[IEEE80211_ADDR_LEN
];
63 /* Exportable node. */
64 struct ieee80211_node_sysctl
{
65 /*00*/ u_int16_t ns_ifindex
;
66 /*02*/ u_int8_t ns_macaddr
[IEEE80211_ADDR_LEN
];
67 /*08*/ u_int8_t ns_bssid
[IEEE80211_ADDR_LEN
];
68 /*0e*/ u_int16_t ns_capinfo
; /* capabilities */
69 /*10*/ u_int32_t ns_flags
; /* properties of this node,
70 * IEEE80211_NODE_SYSCTL_F_*
72 /*14*/ u_int16_t ns_freq
;
73 /*16*/ u_int16_t ns_chanflags
;
74 /*18*/ u_int16_t ns_chanidx
;
75 /*1a*/ u_int8_t ns_rssi
; /* recv ssi */
76 /*1b*/ u_int8_t ns_esslen
;
77 /*1c*/ u_int8_t ns_essid
[IEEE80211_NWID_LEN
];
78 /*3c*/ u_int8_t ns_rsvd0
; /* reserved */
79 /*3d*/ u_int8_t ns_erp
; /* 11g only */
80 /*3e*/ u_int16_t ns_associd
; /* assoc response */
81 /*40*/ u_int32_t ns_inact
; /* inactivity mark count */
82 /*44*/ u_int32_t ns_rstamp
; /* recv timestamp */
83 /*48*/ struct ieee80211_rateset ns_rates
; /* negotiated rate set */
84 /*58*/ u_int16_t ns_txrate
; /* index to ns_rates[] */
85 /*5a*/ u_int16_t ns_intval
; /* beacon interval */
86 /*5c*/ u_int8_t ns_tstamp
[8]; /* from last rcv'd beacon */
87 /*64*/ u_int16_t ns_txseq
; /* seq to be transmitted */
88 /*66*/ u_int16_t ns_rxseq
; /* seq previous received */
89 /*68*/ u_int16_t ns_fhdwell
; /* FH only */
90 /*6a*/ u_int8_t ns_fhindex
; /* FH only */
91 /*6b*/ u_int8_t ns_fails
; /* failure count to associate */
94 /* DTIM and contention free period (CFP) */
95 u_int8_t ns_dtimperiod
;
96 u_int8_t ns_cfpperiod
; /* # of DTIMs between CFPs */
97 u_int16_t ns_cfpduremain
; /* remaining cfp duration */
98 u_int16_t ns_cfpmaxduration
;/* max CFP duration in TU */
99 u_int16_t ns_nextdtim
; /* time to next DTIM */
100 u_int16_t ns_timoffset
;
105 enum ieee80211_node_walk_state
{
106 IEEE80211_WALK_BSS
= 0,
111 struct ieee80211_node_walk
{
112 struct ieee80211com
*nw_ic
;
113 struct ieee80211_node_table
*nw_nt
;
114 struct ieee80211_node
*nw_ni
;
117 #endif /* __NetBSD__ */
119 #define IEEE80211_NODE_SYSCTL_F_BSS 0x00000001 /* this node is the
122 #define IEEE80211_NODE_SYSCTL_F_STA 0x00000002 /* this node is in
126 #define IEEE80211_NODE_SYSCTL_F_SCAN 0x00000004 /* this node is in
129 #endif /* !_NET80211_IEEE80211_SYSCTL_H_ */