Project

General

Profile

Submit #2849 ยป bpf.patch

shamaz, 10/29/2015 08:59 PM

View differences:

sys/net/bpf.c
#include <sys/kernel.h>
#include <sys/sysctl.h>
#include <netproto/802_11/ieee80211_dragonfly.h>
#include <sys/devfs.h>
struct netmsg_bpf_output {
......
bpf_movein(struct uio *uio, int linktype, struct mbuf **mp,
struct sockaddr *sockp, int *datlen, struct bpf_insn *wfilter)
{
const struct ieee80211_bpf_params *p;
struct mbuf *m;
int error;
int len;
......
sockp->sa_family = AF_UNSPEC;
hlen = 4; /* This should match PPP_HDRLEN */
break;
case DLT_IEEE802_11:
sockp->sa_family = AF_IEEE80211;
hlen = 0;
break;
case DLT_IEEE802_11_RADIO:
sockp->sa_family = AF_IEEE80211;
sockp->sa_len = 12;
hlen = sizeof(struct ieee80211_bpf_params);
break;
default:
return(EIO);
......
* Make room for link header, and copy it to sockaddr.
*/
if (hlen != 0) {
if (sockp->sa_family == AF_IEEE80211) {
p = mtod(m, const struct ieee80211_bpf_params *);
hlen = p->ibp_len;
if (hlen > sizeof(sockp->sa_data)) {
error = EINVAL;
goto bad;
}
}
bcopy(m->m_data, sockp->sa_data, hlen);
m->m_pkthdr.len -= hlen;
m->m_len -= hlen;
    (1-1/1)