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();

Reply via email to