Port-xen archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

xennet input processing and mac filtering



Brian reported an odd problem on netbsd-users.  My take on the root
cause is that a packet for domU A arrives on domU B's xennet, because
dom0 P's bridge0 doesn't know where A's mac is yet.  That's normal and
what would happen if these were physical computers with wires to a real
switch.

Looking at (current, netbsd-10 same):

  src/sys/arch/xen/xen/if_xennet_xenbus.c

I can tell that it was written long ago and has had a bunch of
structural changes applied over time.

I see that packets that arrive from the "ethernet chip" are injected
directly:

  if_percpuq_enqueue(ifp->if_percpuq, m); # line 1056

I would expect this to lead to ether_input checking that the dst mac in
the packet is our interface's mac, and dropping it if not.  I'd sort of
expect this in the driver, not ether_input.  Looking at if_wm.c, I'm not
seeing such a check.

So:

  Am I looking at the right xen driver?

  Where is the "dst mac is our mac" check?

  Is it missing for xennet?

  What else am I missing?
  


Home | Main Index | Thread Index | Old Index