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

AltStyle によって変換されたページ (->オリジナル) /