]> CyberLeo.Net >> Repos - FreeBSD/releng/9.2.git/blob - usr.sbin/bsnmpd/modules/snmp_wlan/wlan_snmp.h
- Copy stable/9 to releng/9.2 as part of the 9.2-RELEASE cycle.
[FreeBSD/releng/9.2.git] / usr.sbin / bsnmpd / modules / snmp_wlan / wlan_snmp.h
1 /*-
2  * Copyright (c) 2010 The FreeBSD Foundation
3  * All rights reserved.
4  *
5  * This software was developed by Shteryana Sotirova Shopova under
6  * sponsorship from the FreeBSD Foundation.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  * 1. Redistributions of source code must retain the above copyright
12  *    notice, this list of conditions and the following disclaimer.
13  * 2. Redistributions in binary form must reproduce the above copyright
14  *    notice, this list of conditions and the following disclaimer in the
15  *    documentation and/or other materials provided with the distribution.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
21  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27  * SUCH DAMAGE.
28  *
29  * $FreeBSD$
30  */
31
32 #define WLAN_IFMODE_MAX                         WlanIfaceOperatingModeType_tdma
33 #define WLAN_COUNTRY_CODE_SIZE                  3
34 #define WLAN_BGSCAN_IDLE_MIN                    100 /* XXX */
35 #define WLAN_SCAN_VALID_MIN                     10 /* XXX */
36 #define WLAN_TDMA_MAXSLOTS                      2 /* XXX */
37
38 struct wlan_iface;
39
40 struct wlan_peer {
41         uint8_t                         pmac[IEEE80211_ADDR_LEN]; /* key */
42         uint16_t                        associd;
43         uint16_t                        vlan;
44         uint16_t                        frequency;
45         uint32_t                        fflags;
46         uint8_t                         txrate;
47         int8_t                          rssi;
48         uint16_t                        idle;
49         uint16_t                        txseqs;
50         uint16_t                        rxseqs;
51         uint16_t                        txpower;
52         uint8_t                         capinfo;
53         uint32_t                        state;
54         uint16_t                        local_id;
55         uint16_t                        peer_id;
56         SLIST_ENTRY(wlan_peer)          wp;
57 };
58
59 SLIST_HEAD(wlan_peerlist, wlan_peer);
60
61 struct wlan_scan_result {
62         uint8_t                         ssid[IEEE80211_NWID_LEN + 1];
63         uint8_t                         bssid[IEEE80211_ADDR_LEN];
64         uint8_t                         opchannel;
65         int8_t                          rssi;
66         uint16_t                        frequency;
67         int8_t                          noise;
68         uint16_t                        bintval;
69         uint8_t                         capinfo;
70         struct wlan_iface               *pwif;
71         SLIST_ENTRY(wlan_scan_result)   wsr;
72 };
73
74 SLIST_HEAD(wlan_scanlist, wlan_scan_result);
75
76 struct wlan_mac_mac {
77         uint8_t                         mac[IEEE80211_ADDR_LEN];
78         enum RowStatus                  mac_status;
79         SLIST_ENTRY(wlan_mac_mac)       wm;
80 };
81
82 SLIST_HEAD(wlan_maclist, wlan_mac_mac);
83
84 struct wlan_mesh_route {
85         struct ieee80211req_mesh_route  imroute;
86         enum RowStatus                  mroute_status;
87         SLIST_ENTRY(wlan_mesh_route)    wr;
88 };
89
90 SLIST_HEAD(wlan_mesh_routes, wlan_mesh_route);
91
92 struct wlan_iface {
93         char                            wname[IFNAMSIZ];
94         uint32_t                        index;
95         char                            pname[IFNAMSIZ];
96         enum WlanIfaceOperatingModeType mode;
97         uint32_t                        flags;
98         uint8_t                         dbssid[IEEE80211_ADDR_LEN];
99         uint8_t                         dlmac[IEEE80211_ADDR_LEN];
100         enum RowStatus                  status;
101         enum wlanIfaceState             state;
102         uint8_t                         internal;
103
104         uint32_t                        drivercaps;
105         uint32_t                        cryptocaps;
106         uint32_t                        htcaps;
107
108         uint32_t                        packet_burst;
109         uint8_t                         country_code[WLAN_COUNTRY_CODE_SIZE];
110         enum WlanRegDomainCode          reg_domain;
111         uint8_t                         desired_ssid[IEEE80211_NWID_LEN + 1];
112         uint32_t                        desired_channel;
113         enum TruthValue                 dyn_frequency;
114         enum TruthValue                 fast_frames;
115         enum TruthValue                 dturbo;
116         int32_t                         tx_power;
117         int32_t                         frag_threshold;
118         int32_t                         rts_threshold;
119         enum TruthValue                 priv_subscribe;
120         enum TruthValue                 bg_scan;
121         int32_t                         bg_scan_idle;
122         int32_t                         bg_scan_interval;
123         int32_t                         beacons_missed;
124         uint8_t                         desired_bssid[IEEE80211_ADDR_LEN];
125         enum wlanIfaceRoamingMode       roam_mode;
126         enum TruthValue                 dot11d;
127         enum TruthValue                 dot11h;
128         enum TruthValue                 dynamic_wds;
129         enum TruthValue                 power_save;
130         enum TruthValue                 ap_bridge;
131         int32_t                         beacon_interval;
132         int32_t                         dtim_period;
133         enum TruthValue                 hide_ssid;
134         enum TruthValue                 inact_process;
135         enum wlanIfaceDot11gProtMode    do11g_protect;
136         enum TruthValue                 dot11g_pure;
137         enum TruthValue                 dot11n_pure;
138         enum WlanIfaceDot11nPduType     ampdu;
139         int32_t                         ampdu_density;
140         int32_t                         ampdu_limit;
141         enum WlanIfaceDot11nPduType     amsdu;
142         int32_t                         amsdu_limit;
143         enum TruthValue                 ht_enabled;
144         enum TruthValue                 ht_compatible;
145         enum wlanIfaceDot11nHTProtMode  ht_prot_mode;
146         enum TruthValue                 rifs;
147         enum TruthValue                 short_gi;
148         enum wlanIfaceDot11nSMPSMode    smps_mode;
149         int32_t                         tdma_slot;
150         int32_t                         tdma_slot_count;
151         int32_t                         tdma_slot_length;
152         int32_t                         tdma_binterval;
153
154         struct wlan_peerlist            peerlist;
155         struct ieee80211_stats          stats;
156         uint32_t                        nchannels;
157         struct ieee80211_channel        *chanlist;
158         struct ieee80211_roamparams_req roamparams;
159         struct ieee80211_txparams_req   txparams;
160
161         uint32_t                        scan_flags;
162         uint32_t                        scan_duration;
163         uint32_t                        scan_mindwell;
164         uint32_t                        scan_maxdwell;
165         enum wlanScanConfigStatus       scan_status;
166         struct wlan_scanlist            scanlist;
167
168         uint8_t                         wepsupported;
169         enum wlanWepMode                wepmode;
170         int32_t                         weptxkey;
171
172         uint8_t                         macsupported;
173         enum wlanMACAccessControlPolicy mac_policy;
174         uint32_t                        mac_nacls;
175         struct wlan_maclist             mac_maclist;
176
177         uint32_t                        mesh_ttl;
178         enum wlanMeshPeeringEnabled     mesh_peering;
179         enum wlanMeshForwardingEnabled  mesh_forwarding;
180         enum wlanMeshMetric             mesh_metric;
181         enum wlanMeshPath               mesh_path;
182         enum wlanHWMPRootMode           hwmp_root_mode;
183         uint32_t                        hwmp_max_hops;
184         struct wlan_mesh_routes         mesh_routelist;
185                 
186         SLIST_ENTRY(wlan_iface)         w_if;
187 };
188
189 enum wlan_syscl {
190         WLAN_MESH_RETRY_TO = 0,
191         WLAN_MESH_HOLDING_TO,
192         WLAN_MESH_CONFIRM_TO,
193         WLAN_MESH_MAX_RETRIES,
194         WLAN_HWMP_TARGET_ONLY,
195         WLAN_HWMP_REPLY_FORWARD,
196         WLAN_HWMP_PATH_LIFETIME,
197         WLAN_HWMP_ROOT_TO,
198         WLAN_HWMP_ROOT_INT,
199         WLAN_HWMP_RANN_INT,
200         WLAN_HWMP_INACTIVITY_TO,
201         WLAN_SYSCTL_MAX
202 };
203
204 struct wlan_config {
205         int32_t                         mesh_retryto;
206         int32_t                         mesh_holdingto;
207         int32_t                         mesh_confirmto;
208         int32_t                         mesh_maxretries;
209         int32_t                         hwmp_targetonly;
210         int32_t                         hwmp_replyforward;
211         int32_t                         hwmp_pathlifetime;
212         int32_t                         hwmp_roottimeout;
213         int32_t                         hwmp_rootint;
214         int32_t                         hwmp_rannint;
215         int32_t                         hwmp_inact;
216 };
217
218 int wlan_ioctl_init(void);
219 int wlan_kmodules_load(void);
220 int wlan_check_media(char *);
221 int wlan_config_state(struct wlan_iface *, uint8_t);
222 int wlan_get_opmode(struct wlan_iface *wif);
223 int wlan_get_local_addr(struct wlan_iface *wif);
224 int wlan_get_parent(struct wlan_iface *wif);
225 int wlan_get_driver_caps(struct wlan_iface *wif);
226 uint8_t wlan_channel_state_to_snmp(uint8_t cstate);
227 uint32_t wlan_channel_flags_to_snmp(uint32_t cflags);
228 int wlan_get_channel_list(struct wlan_iface *wif);
229 int wlan_get_roam_params(struct wlan_iface *wif);
230 int wlan_get_tx_params(struct wlan_iface *wif);
231 int wlan_set_tx_params(struct wlan_iface *wif, int32_t pmode);
232 int wlan_clone_create(struct wlan_iface *);
233 int wlan_clone_destroy(struct wlan_iface *wif);
234 int wlan_config_get_dssid(struct wlan_iface *wif);
235 int wlan_config_set_dssid(struct wlan_iface *wif, char *ssid, int slen);
236 int wlan_config_get_ioctl(struct wlan_iface *wif, int which);
237 int wlan_config_set_ioctl(struct wlan_iface *wif, int which, int val,
238     char *strval, int len);
239 int wlan_set_scan_config(struct wlan_iface *wif);
240 int wlan_get_scan_results(struct wlan_iface *wif);
241 int wlan_get_stats(struct wlan_iface *wif);
242 int wlan_get_wepmode(struct wlan_iface *wif);
243 int wlan_set_wepmode(struct wlan_iface *wif);
244 int wlan_get_weptxkey(struct wlan_iface *wif);
245 int wlan_set_weptxkey(struct wlan_iface *wif);
246 int wlan_get_wepkeys(struct wlan_iface *wif);
247 int wlan_set_wepkeys(struct wlan_iface *wif);
248 int wlan_get_mac_policy(struct wlan_iface *wif);
249 int wlan_set_mac_policy(struct wlan_iface *wif);
250 int wlan_flush_mac_mac(struct wlan_iface *wif);
251 int wlan_get_mac_acl_macs(struct wlan_iface *wif);
252 int wlan_add_mac_acl_mac(struct wlan_iface *wif, struct wlan_mac_mac *mmac);
253 int wlan_del_mac_acl_mac(struct wlan_iface *wif, struct wlan_mac_mac *mmac);
254
255 int32_t wlan_do_sysctl(struct wlan_config *cfg, enum wlan_syscl which, int set);
256 int wlan_mesh_config_get(struct wlan_iface *wif, int which);
257 int wlan_mesh_config_set(struct wlan_iface *wif, int which);
258 int wlan_mesh_flush_routes(struct wlan_iface *wif);
259 int wlan_mesh_add_route(struct wlan_iface *wif, struct wlan_mesh_route *wmr);
260 int wlan_mesh_del_route(struct wlan_iface *wif, struct wlan_mesh_route *wmr);
261 int wlan_mesh_get_routelist(struct wlan_iface *wif);
262 int wlan_hwmp_config_get(struct wlan_iface *wif, int which);
263 int wlan_hwmp_config_set(struct wlan_iface *wif, int which);
264
265 /* XXX: static */
266
267 int wlan_peer_set_vlan(struct wlan_iface *wif, struct wlan_peer *wip, int vlan);
268 int wlan_get_peerinfo(struct wlan_iface *wif);
269
270 /* XXX*/
271 struct wlan_peer *wlan_new_peer(const uint8_t *pmac);
272 void wlan_free_peer(struct wlan_peer *wip);
273 int wlan_add_peer(struct wlan_iface *wif, struct wlan_peer *wip);
274
275 struct wlan_scan_result * wlan_scan_new_result(const uint8_t *ssid,
276     const uint8_t *bssid);
277 void wlan_scan_free_result(struct wlan_scan_result *sr);
278 int wlan_scan_add_result(struct wlan_iface *wif, struct wlan_scan_result *sr);
279
280 struct wlan_mac_mac *wlan_mac_new_mac(const uint8_t *mac);
281 void wlan_mac_free_mac(struct wlan_mac_mac *wmm);
282 int wlan_mac_add_mac(struct wlan_iface *wif, struct wlan_mac_mac *wmm);
283
284 struct wlan_mesh_route *wlan_mesh_new_route(const uint8_t *dstmac);
285 int wlan_mesh_add_rtentry(struct wlan_iface *wif, struct wlan_mesh_route *wmr);
286 void wlan_mesh_free_route(struct wlan_mesh_route *wmr);