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