On Tue, Oct 04, 2016 at 01:07 +0200, Vincent Gross wrote: > On Sat, 24 Sep 2016 10:58:10 +0200 > Vincent Gross <vgr...@openbsd.org> wrote: > > > Hi, > > > [snip] > > > > Aside from the mbuf issue, is this Ok ? > > I will go back on the mbuff stuff later. > > Diff rebased, ok anyone ? > > Index: net/if_vxlan.c > =================================================================== > RCS file: /cvs/src/sys/net/if_vxlan.c,v > retrieving revision 1.48 > diff -u -p -r1.48 if_vxlan.c > --- net/if_vxlan.c 30 Sep 2016 10:22:05 -0000 1.48 > +++ net/if_vxlan.c 3 Oct 2016 23:12:42 -0000 > @@ -638,7 +749,9 @@ vxlan_lookup(struct mbuf *m, struct udph > if (m->m_pkthdr.len < skip + sizeof(struct ether_header)) > return (EINVAL); > > - m_adj(m, skip); > + m_adj(m, skip - ETHER_ALIGN); > + m = m_pullup(m, ETHER_HDR_LEN + ETHER_ALIGN); > + m_adj(m, ETHER_ALIGN); > ifp = &sc->sc_ac.ac_if; > > #if NBRIDGE > 0
I think this chunk is correct. First you ensure that m->m_data points to a contiguous and well-aligned ethernet header and then you trim the alignment so that mtod() points directly at it. Possibly add a comment to that effect to spare a eyebrow-raising moment for the next person.