I have two Linux namespaces
with a bridge between them, and two pairs of veth
pipes connecting namespaces with the bridge:
ns1 ----- Bridge ----- ns2
I didn't add any VLAN sub-interfaces over veth.
An application I run on ns1 open a raw AF_PACKET
socket and constructs a vlan tagged ARP probe packet, then does recvfrom()
in thread. So far so good, tcpdump shows it correctly, vlan tag is stripped off when it leaves the bridge towards ns2, and the tag is added (PVID) when a frame is leaving the bridge towards ns1.
However what recvfrom
reads is an ARP reply, which means something on ns1 side has stripped the VLAN tag. The reason I need to read the tag is to know which ID was the packet tagged with by the bridge.
Then I did on ns1:
% ethtool -K veth0 rxvlan off
it didn't help though. What else could be removing the tag? What am I missing?