1 /* $NetBSD: ieee80211_proto.h,v 1.5 2004/07/28 08:12:49 dyoung Exp $ */ 2 /*- 3 * Copyright (c) 2001 Atsushi Onoe 4 * Copyright (c) 2002, 2003 Sam Leffler, Errno Consulting 5 * 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. The name of the author may not be used to endorse or promote products 16 * derived from this software without specific prior written permission. 17 * 18 * Alternatively, this software may be distributed under the terms of the 19 * GNU General Public License ("GPL") version 2 as published by the Free 20 * Software Foundation. 21 * 22 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 23 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 24 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 25 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 26 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 27 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 28 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 29 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 30 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 31 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 * 33 * $FreeBSD: src/sys/net80211/ieee80211_proto.h,v 1.4 2003/08/19 22:17:03 sam Exp $ 34 */ 35 #ifndef _NET80211_IEEE80211_PROTO_H_ 36 #define _NET80211_IEEE80211_PROTO_H_ 37 38 /* 39 * 802.11 protocol implementation definitions. 40 */ 41 42 enum ieee80211_state { 43 IEEE80211_S_INIT = 0, /* default state */ 44 IEEE80211_S_SCAN = 1, /* scanning */ 45 IEEE80211_S_AUTH = 2, /* try to authenticate */ 46 IEEE80211_S_ASSOC = 3, /* try to assoc */ 47 IEEE80211_S_RUN = 4, /* associated */ 48 }; 49 #define IEEE80211_S_MAX (IEEE80211_S_RUN+1) 50 51 #define IEEE80211_SEND_MGMT(_ic,_ni,_type,_arg) \ 52 ((*(_ic)->ic_send_mgmt)(_ic, _ni, _type, _arg)) 53 54 extern const char *ieee80211_mgt_subtype_name[]; 55 56 extern void ieee80211_proto_attach(struct ifnet *); 57 extern void ieee80211_proto_detach(struct ifnet *); 58 59 struct ieee80211_node; 60 extern void ieee80211_input(struct ifnet *, struct mbuf *, 61 struct ieee80211_node *, int, u_int32_t); 62 extern void ieee80211_recv_mgmt(struct ieee80211com *, struct mbuf *, 63 struct ieee80211_node *, int, int, u_int32_t); 64 extern int ieee80211_send_mgmt(struct ieee80211com *, struct ieee80211_node *, 65 int, int); 66 extern struct mbuf *ieee80211_encap(struct ifnet *, struct mbuf *, 67 struct ieee80211_node **); 68 extern void ieee80211_pwrsave(struct ieee80211com *, struct ieee80211_node *, 69 struct mbuf *); 70 extern struct mbuf *ieee80211_decap(struct ifnet *, struct mbuf *); 71 extern u_int8_t *ieee80211_add_rates(u_int8_t *frm, 72 const struct ieee80211_rateset *); 73 #define ieee80211_new_state(_ic, _nstate, _arg) \ 74 (((_ic)->ic_newstate)((_ic), (_nstate), (_arg))) 75 extern u_int8_t *ieee80211_add_xrates(u_int8_t *frm, 76 const struct ieee80211_rateset *); 77 extern void ieee80211_print_essid(u_int8_t *, int); 78 extern void ieee80211_dump_pkt(u_int8_t *, int, int, int); 79 extern int ieee80211_ibss_merge(struct ieee80211com *, 80 struct ieee80211_node *, u_int64_t); 81 82 extern const char *ieee80211_state_name[IEEE80211_S_MAX]; 83 #endif /* _NET80211_IEEE80211_PROTO_H_ */ 84