From: Brenden Blanco <[email protected]> Date: Tue, 20 Oct 2015 16:47:33 -0700
> In the ipv4 outbound path of an ipvlan device in l3 mode, the ifindex is > being grabbed from dev_get_iflink. This works for the physical device > case, since as the documentation of that function notes: "Physical > interfaces have the same 'ifindex' and 'iflink' values.". However, if > the master device is a veth, and the pairs are in separate net > namespaces, the route lookup will fail with -ENODEV due to outer veth > pair being in a separate namespace from the ipvlan master/routing > namespace. > > ns0 | ns1 | ns2 > veth0a--|--veth0b--|--ipvl0 > > In ipvlan_process_v4_outbound(), a packet sent from ipvl0 in the above > configuration will pass fl.flowi4_oif == veth0a to > ip_route_output_flow(), but *net == ns1. > > Notice also that ipv6 processing is not using iflink. Since there is a > discrepancy in usage, fixup both v4 and v6 case to use local dev > variable. > > Tested this with l3 ipvlan on top of veth, as well as with single > physical interface in the top namespace. > > Signed-off-by: Brenden Blanco <[email protected]> Applied, thanks Brenden. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
