Hi, On Wed, 4 Apr 2012 13:19:06 +0200 Claudio Jeker <cje...@diehard.n-r-g.com> wrote: > On Wed, Apr 04, 2012 at 02:34:46PM +0900, Yasuoka Masahiko wrote: >> On Tue, 31 Jan 2012 13:59:17 +0100 >> "Sebastian Reitenbach" <sebas...@l00-bugdead-prods.de> wrote: >> > However, I noted with tcpdump, listening on tun0: >> > >> > # tcpdump -n -i tun0 >> > tcpdump: listening on tun0, link-type LOOP >> > 13:51:15.354776 >> > tcpdump: WARNING: compensating for unaligned libpcap packets >> > 13:51:15.354795 10.66.66.1 > 10.66.66.129: icmp: echo reply (DF) >> > 13:51:16.334984 >> > 13:51:16.334997 10.66.66.1 > 10.66.66.129: icmp: echo reply (DF) >> > 13:51:17.355463 >> (snip) >> > The incoming packets look weird, and this is not only true for icmp, >> > with tcp/udp its the same. >> >> Attached diff will fix the problem. >> >> bpf requires to use different byte order for DLT_LOOP and DLT_NULL on >> address family header. pipex works with both pppx(DLT_NULL) and >> tun(DLT_LOOP), so it should switch the byte order. >> >> ok? or comment? > > Since pppx(4) is only used by npppd/pipex shouldn't we change the DLT there > so that we don't need any magic inside pipex?
Yes. Using same DLT of tun for pppx makes things simple. Let me update the diff. ok? Index: sys/net/if_pppx.c =================================================================== RCS file: /cvs/src/sys/net/if_pppx.c,v retrieving revision 1.13 diff -u -p -r1.13 if_pppx.c --- sys/net/if_pppx.c 25 Oct 2011 23:54:58 -0000 1.13 +++ sys/net/if_pppx.c 4 Apr 2012 15:10:23 -0000 @@ -877,7 +877,7 @@ pppx_add_session(struct pppx_dev *pxd, s if_alloc_sadl(ifp); #if NBPFILTER > 0 - bpfattach(&ifp->if_bpf, ifp, DLT_NULL, 0); + bpfattach(&ifp->if_bpf, ifp, DLT_LOOP, 0); #endif SET(ifp->if_flags, IFF_RUNNING); Index: sys/net/pipex.c =================================================================== RCS file: /cvs/src/sys/net/pipex.c,v retrieving revision 1.27 diff -u -p -r1.27 pipex.c --- sys/net/pipex.c 4 Apr 2012 04:31:38 -0000 1.27 +++ sys/net/pipex.c 4 Apr 2012 15:10:25 -0000 @@ -1163,7 +1163,7 @@ pipex_ip_input(struct mbuf *m0, struct p #if NBPFILTER > 0 if (ifp->if_bpf) - bpf_mtap_af(ifp->if_bpf, AF_INET, m0, BPF_DIRECTION_IN); + bpf_mtap_af(ifp->if_bpf, htonl(AF_INET), m0, BPF_DIRECTION_IN); #endif s = splnet(); @@ -1240,7 +1240,7 @@ pipex_ip6_input(struct mbuf *m0, struct #if NBPFILTER > 0 if (ifp->if_bpf) - bpf_mtap_af(ifp->if_bpf, AF_INET, m0, BPF_DIRECTION_IN); + bpf_mtap_af(ifp->if_bpf, htonl(AF_INET), m0, BPF_DIRECTION_IN); #endif s = splnet();