>> If I understand correctly (and as Cong already said), information are >> leaking >> between netns during the input phase. On the tx side, skb_scrub_packet() is >> called, but not on the rx side. I think it's wrong. There should be an >> explicit >> boundary. > > That is not what I am complaining about. > > I dislike the trick of switching skb->dev pointer with skb->dev->l3_dev. > This is not how we switch netns, nor the way how netns works. > How it is different from what we are doing currently?
Current: Use skb->dev for L3 processing and derive netns from skb->dev Proposal: use skb->dev->l3_dev for L3 processing and derive netns from skb->dev->l3_dev > Look at veth pair or dev_change_net_namespace(), each time when we > switch netns, we need to do a full reregistration or a full reentrance, we > never just switch some pointers to switch netns. This is why I said it breaks > isolation. > > Also, it is ugly to hide such a ipvlan-specific pointer for half of the RX > code > path. I think I have already mentioned, I'm adding RX code now and later I'll add TX code to use l3_dev to make it symmetric. This way all L3 (Tx/Rx) will use this device reference always.