Attach another DLTs for bpf: DLT_IEEE802_11 to capture raw 802.11 frame.
This commit is contained in:
parent
44fbd073c4
commit
fd9daca7ea
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: awi.c,v 1.43 2002/08/05 06:55:07 onoe Exp $ */
|
/* $NetBSD: awi.c,v 1.44 2002/08/28 09:38:10 onoe Exp $ */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1999,2000,2001 The NetBSD Foundation, Inc.
|
* Copyright (c) 1999,2000,2001 The NetBSD Foundation, Inc.
|
||||||
|
@ -85,7 +85,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
__KERNEL_RCSID(0, "$NetBSD: awi.c,v 1.43 2002/08/05 06:55:07 onoe Exp $");
|
__KERNEL_RCSID(0, "$NetBSD: awi.c,v 1.44 2002/08/28 09:38:10 onoe Exp $");
|
||||||
|
|
||||||
#include "opt_inet.h"
|
#include "opt_inet.h"
|
||||||
#include "bpfilter.h"
|
#include "bpfilter.h"
|
||||||
|
@ -653,6 +653,10 @@ awi_start(struct ifnet *ifp)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#if NBPFILTER > 0
|
||||||
|
if (ic->ic_rawbpf)
|
||||||
|
bpf_mtap(ic->ic_rawbpf, m0);
|
||||||
|
#endif
|
||||||
if (dowep) {
|
if (dowep) {
|
||||||
if ((m0 = ieee80211_wep_crypt(ifp, m0, 1)) == NULL) {
|
if ((m0 = ieee80211_wep_crypt(ifp, m0, 1)) == NULL) {
|
||||||
ifp->if_oerrors++;
|
ifp->if_oerrors++;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: if_ieee80211.h,v 1.14 2002/08/11 03:39:21 thorpej Exp $ */
|
/* $NetBSD: if_ieee80211.h,v 1.15 2002/08/28 09:38:08 onoe Exp $ */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 2000, 2001 The NetBSD Foundation, Inc.
|
* Copyright (c) 2000, 2001 The NetBSD Foundation, Inc.
|
||||||
|
@ -412,6 +412,7 @@ struct ieee80211com {
|
||||||
struct ifqueue ic_mgtq;
|
struct ifqueue ic_mgtq;
|
||||||
int ic_flags;
|
int ic_flags;
|
||||||
enum ieee80211_state ic_state;
|
enum ieee80211_state ic_state;
|
||||||
|
caddr_t ic_rawbpf; /* packet filter structure */
|
||||||
struct ieee80211_bss ic_bss; /* information for this node */
|
struct ieee80211_bss ic_bss; /* information for this node */
|
||||||
int ic_bss_privlen; /* size for bs_private */
|
int ic_bss_privlen; /* size for bs_private */
|
||||||
u_int8_t ic_ibss_chan;
|
u_int8_t ic_ibss_chan;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: if_ieee80211subr.c,v 1.9 2002/08/11 12:08:55 drochner Exp $ */
|
/* $NetBSD: if_ieee80211subr.c,v 1.10 2002/08/28 09:38:08 onoe Exp $ */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 2001 The NetBSD Foundation, Inc.
|
* Copyright (c) 2001 The NetBSD Foundation, Inc.
|
||||||
|
@ -41,7 +41,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
__KERNEL_RCSID(0, "$NetBSD: if_ieee80211subr.c,v 1.9 2002/08/11 12:08:55 drochner Exp $");
|
__KERNEL_RCSID(0, "$NetBSD: if_ieee80211subr.c,v 1.10 2002/08/28 09:38:08 onoe Exp $");
|
||||||
|
|
||||||
#include "opt_inet.h"
|
#include "opt_inet.h"
|
||||||
#include "bpfilter.h"
|
#include "bpfilter.h"
|
||||||
|
@ -129,6 +129,10 @@ ieee80211_ifattach(struct ifnet *ifp)
|
||||||
int i, rate;
|
int i, rate;
|
||||||
|
|
||||||
ether_ifattach(ifp, ic->ic_myaddr);
|
ether_ifattach(ifp, ic->ic_myaddr);
|
||||||
|
#if NBPFILTER > 0
|
||||||
|
bpfattach2(ifp, DLT_IEEE802_11,
|
||||||
|
sizeof(struct ieee80211_frame_addr4), &ic->ic_rawbpf);
|
||||||
|
#endif
|
||||||
ieee80211_crc_init();
|
ieee80211_crc_init();
|
||||||
memcpy(ic->ic_chan_active, ic->ic_chan_avail,
|
memcpy(ic->ic_chan_active, ic->ic_chan_avail,
|
||||||
sizeof(ic->ic_chan_active));
|
sizeof(ic->ic_chan_active));
|
||||||
|
@ -236,6 +240,11 @@ ieee80211_input(struct ifnet *ifp, struct mbuf *m, int rssi, u_int32_t rstamp)
|
||||||
goto err;
|
goto err;
|
||||||
wh = mtod(m, struct ieee80211_frame *);
|
wh = mtod(m, struct ieee80211_frame *);
|
||||||
}
|
}
|
||||||
|
#if NBPFILTER > 0
|
||||||
|
/* copy to listener after decrypt */
|
||||||
|
if (ic->ic_rawbpf)
|
||||||
|
bpf_mtap(ic->ic_rawbpf, m);
|
||||||
|
#endif
|
||||||
|
|
||||||
dir = wh->i_fc[1] & IEEE80211_FC1_DIR_MASK;
|
dir = wh->i_fc[1] & IEEE80211_FC1_DIR_MASK;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue