1 /* $OpenBSD: if_wi_hostap.h,v 1.10 2014/08/24 18:01:27 zhuk Exp $ */
2
3 /*
4 * Copyright (c) 2002
5 * Thomas Skibo <skibo@pacbell.net>. All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 * 3. All advertising materials mentioning features or use of this software
16 * must display the following acknowledgement:
17 * This product includes software developed by Thomas Skibo.
18 * 4. Neither the name of the author nor the names of any co-contributors
19 * may be used to endorse or promote products derived from this software
20 * without specific prior written permission.
21 *
22 * THIS SOFTWARE IS PROVIDED BY Thomas Skibo AND CONTRIBUTORS ``AS IS'' AND
23 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25 * ARE DISCLAIMED. IN NO EVENT SHALL Thomas Skibo OR HIS DRINKING PALS
26 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
27 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
28 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
29 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
30 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
31 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
32 * THE POSSIBILITY OF SUCH DAMAGE.
33 *
34 * $FreeBSD: $
35 */
36
37 #ifndef __WI_HOSTAP_H__
38 #define __WI_HOSTAP_H__
39
40 #define WIHAP_MAX_STATIONS 1800
41
42 struct hostap_sta {
43 u_int8_t addr[6];
44 u_int16_t asid;
45 u_int16_t flags;
46 u_int16_t sig_info; /* 15:8 signal, 7:0 noise */
47 u_int16_t capinfo;
48 u_int8_t rates;
49 };
50
51 #define HOSTAP_FLAGS_AUTHEN 0x0001
52 #define HOSTAP_FLAGS_ASSOC 0x0002
53 #define HOSTAP_FLAGS_PERM 0x0004
54 #define HOSTAP_FLAGS_BITS "\2\01AUTH\02ASSOC\03PERM"
55
56 #define SIOCHOSTAP_GET _IOWR('i', 200, struct ifreq)
57 #define SIOCHOSTAP_ADD _IOWR('i', 201, struct ifreq)
58 #define SIOCHOSTAP_DEL _IOWR('i', 202, struct ifreq)
59 #define SIOCHOSTAP_GETALL _IOWR('i', 203, struct ifreq)
60 #define SIOCHOSTAP_GFLAGS _IOWR('i', 204, struct ifreq)
61 #define SIOCHOSTAP_SFLAGS _IOWR('i', 205, struct ifreq)
62
63 /* Flags for SIOCHOSTAP_GFLAGS/SFLAGS */
64 #define WIHAPFL_ACTIVE 0x0001
65 #define WIHAPFL_MAC_FILT 0x0002
66
67 /* Flags set internally only: */
68 #define WIHAPFL_CANTCHANGE (WIHAPFL_ACTIVE)
69
70 struct hostap_getall {
71 int nstations;
72 struct hostap_sta *addr;
73 int size;
74 };
75
76
77
78 #ifdef _KERNEL
79 struct wihap_sta_info {
80 TAILQ_ENTRY(wihap_sta_info) list;
81 LIST_ENTRY(wihap_sta_info) hash;
82
83 struct wi_softc *sc;
84 u_int8_t addr[6];
85 u_short flags;
86 struct timeout tmo;
87
88 u_int16_t asid;
89 u_int16_t capinfo;
90 u_int16_t sig_info; /* 15:8 signal, 7:0 noise */
91 u_int8_t rates;
92 u_int8_t tx_curr_rate;
93 u_int8_t tx_max_rate;
94 u_int32_t *challenge;
95 };
96
97 #define WI_SIFLAGS_ASSOC HOSTAP_FLAGS_ASSOC
98 #define WI_SIFLAGS_AUTHEN HOSTAP_FLAGS_AUTHEN
99 #define WI_SIFLAGS_PERM HOSTAP_FLAGS_PERM
100 #define WI_SIFLAGS_DEAD 0x1000
101
102 #define WI_STA_HASH_SIZE 113
103
104 #if WI_STA_HASH_SIZE*16 >= 2007 /* will generate ASID's too large. */
105 #error "WI_STA_HASH_SIZE too big"
106 #endif
107 #if WI_STA_HASH_SIZE*16 < WIHAP_MAX_STATIONS
108 #error "WI_STA_HASH_SIZE too small"
109 #endif
110
111 struct wihap_info {
112 TAILQ_HEAD(sta_list, wihap_sta_info) sta_list;
113 LIST_HEAD(sta_hash, wihap_sta_info) sta_hash[WI_STA_HASH_SIZE];
114
115 u_int16_t apflags;
116
117 int n_stations;
118 u_int16_t asid_inuse_mask[WI_STA_HASH_SIZE];
119
120 int inactivity_time;
121 struct timeout tmo;
122 };
123
124 #define WIHAP_DFLT_INACTIVITY_TIME (120) /* 2 minutes */
125
126 struct wi_softc;
127 struct wi_frame;
128
129 int wihap_check_tx(struct wihap_info *, u_int8_t [], u_int8_t *);
130 int wihap_data_input(struct wi_softc *, struct wi_frame *, struct mbuf *);
131 int wihap_ioctl(struct wi_softc *, u_long, caddr_t);
132 void wihap_init(struct wi_softc *);
133 void wihap_mgmt_input(struct wi_softc *, struct wi_frame *, struct mbuf *);
134 void wihap_shutdown(struct wi_softc *);
135
136 #endif /* _KERNEL */
137 #endif /* __WI_HOSTAP_H__ */
Cache object: f1e5d32613dbd277e2d7f8207fe8ee6a
|