Don’t have tun(4), but applied. As well as latest carp and bridge patches. So far no problems, except that I see following in dmesg :
arpresolve: unresolved and rt_expire == 0 but this is probably not related to new diffs. //mxb > On 28 maj 2015, at 11:28, Martin Pieuchot <[email protected]> wrote: > > Replace the last ether_input_mbuf() by if_input(). > > Index: net/if_tun.c > =================================================================== > RCS file: /cvs/src/sys/net/if_tun.c,v > retrieving revision 1.144 > diff -u -p -r1.144 if_tun.c > --- net/if_tun.c 26 May 2015 11:36:26 -0000 1.144 > +++ net/if_tun.c 28 May 2015 09:25:52 -0000 > @@ -871,32 +871,34 @@ tunwrite(dev_t dev, struct uio *uio, int > } > > top->m_pkthdr.len = tlen; > - top->m_pkthdr.rcvif = ifp; > - > -#if NBPFILTER > 0 > - if (ifp->if_bpf) { > - s = splnet(); > - bpf_mtap(ifp->if_bpf, top, BPF_DIRECTION_IN); > - splx(s); > - } > -#endif > > if (tp->tun_flags & TUN_LAYER2) { > + struct mbuf_list ml = MBUF_LIST_INITIALIZER(); > + > + ml_enqueue(&ml, top); > s = splnet(); > - ether_input_mbuf(ifp, top); > + if_input(ifp, &ml); > splx(s); > - > ifp->if_ipackets++; > > return (0); > } > > +#if NBPFILTER > 0 > + if (ifp->if_bpf) { > + s = splnet(); > + bpf_mtap(ifp->if_bpf, top, BPF_DIRECTION_IN); > + splx(s); > + } > +#endif > + > th = mtod(top, u_int32_t *); > /* strip the tunnel header */ > top->m_data += sizeof(*th); > top->m_len -= sizeof(*th); > top->m_pkthdr.len -= sizeof(*th); > top->m_pkthdr.ph_rtableid = ifp->if_rdomain; > + top->m_pkthdr.rcvif = ifp; > > switch (ntohl(*th)) { > case AF_INET: >
