summaryrefslogtreecommitdiffstats
path: root/sys/net/if_loop.c
diff options
context:
space:
mode:
authorume <ume@FreeBSD.org>2001-06-11 12:39:29 +0000
committerume <ume@FreeBSD.org>2001-06-11 12:39:29 +0000
commit832f8d224926758a9ae0b23a6b45353e44fbc87a (patch)
treea79fc7ad2b97862c4a404f352f0211ad93a7b5f1 /sys/net/if_loop.c
parent2693854b01a52b0395a91322aa3edf926bddff38 (diff)
downloadFreeBSD-src-832f8d224926758a9ae0b23a6b45353e44fbc87a.zip
FreeBSD-src-832f8d224926758a9ae0b23a6b45353e44fbc87a.tar.gz
Sync with recent KAME.
This work was based on kame-20010528-freebsd43-snap.tgz and some critical problem after the snap was out were fixed. There are many many changes since last KAME merge. TODO: - The definitions of SADB_* in sys/net/pfkeyv2.h are still different from RFC2407/IANA assignment because of binary compatibility issue. It should be fixed under 5-CURRENT. - ip6po_m member of struct ip6_pktopts is no longer used. But, it is still there because of binary compatibility issue. It should be removed under 5-CURRENT. Reviewed by: itojun Obtained from: KAME MFC after: 3 weeks
Diffstat (limited to 'sys/net/if_loop.c')
-rw-r--r--sys/net/if_loop.c29
1 files changed, 17 insertions, 12 deletions
diff --git a/sys/net/if_loop.c b/sys/net/if_loop.c
index 0e9ac65..f8e11f7 100644
--- a/sys/net/if_loop.c
+++ b/sys/net/if_loop.c
@@ -58,6 +58,7 @@
#include <net/netisr.h>
#include <net/route.h>
#include <net/bpf.h>
+#include <net/bpfdesc.h>
#ifdef INET
#include <netinet/in.h>
@@ -236,6 +237,8 @@ looutput(ifp, m, dst, rt)
m_copydata(m, 0, m->m_pkthdr.len, mtod(n, caddr_t));
n->m_pkthdr = m->m_pkthdr;
n->m_len = m->m_pkthdr.len;
+ n->m_pkthdr.aux = m->m_pkthdr.aux;
+ m->m_pkthdr.aux = (struct mbuf *)NULL;
m_freem(m);
m = n;
}
@@ -277,7 +280,7 @@ contiguousfail:
int
if_simloop(ifp, m, af, hlen)
struct ifnet *ifp;
- register struct mbuf *m;
+ struct mbuf *m;
int af;
int hlen;
{
@@ -300,17 +303,19 @@ if_simloop(ifp, m, af, hlen)
if (ifp->if_bpf) {
struct mbuf m0, *n = m;
- /*
- * We need to prepend the address family as
- * a four byte field. Cons up a dummy header
- * to pacify bpf. This is safe because bpf
- * will only read from the mbuf (i.e., it won't
- * try to free it or keep a pointer a to it).
- */
- m0.m_next = m;
- m0.m_len = 4;
- m0.m_data = (char *)&af;
- n = &m0;
+ if (ifp->if_bpf->bif_dlt == DLT_NULL) {
+ /*
+ * We need to prepend the address family as
+ * a four byte field. Cons up a dummy header
+ * to pacify bpf. This is safe because bpf
+ * will only read from the mbuf (i.e., it won't
+ * try to free it or keep a pointer a to it).
+ */
+ m0.m_next = m;
+ m0.m_len = 4;
+ m0.m_data = (char *)&af;
+ n = &m0;
+ }
bpf_mtap(ifp, n);
}
OpenPOWER on IntegriCloud