auto bridge
iface bridge
bridge-vlan-aware yes
bridge-ports swp2
auto bridge.2
iface bridge.2
address 10.254.1.2/24
address 2a03:25e0:254:1::2/64
address-virtual 00:00:5e:00:01:01 10.254.1.1/24 2a03:25e0:254:1::1/64 fe80::1/64
vrf blue
auto blue
iface blue
vrf-table auto
$ ifreload -a -v
...
info: executing /bin/ip route get 10.254.1.0/24 vrf blue
...
$
Reviewed-by: Roopa Prabhu <roopa@cumulusnetworks.com>
Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
route_prefix = '%s/%d' %(ip.network, ip.prefixlen)
- dev = self.ipcmd.ip_route_get_dev(route_prefix)
+ if ifaceobj.link_privflags & ifaceLinkPrivFlags.VRF_SLAVE:
+ vrf_master = self.ipcmd.link_get_master(ifaceobj.name)
+ else:
+ vrf_master = None
+
+ dev = self.ipcmd.ip_route_get_dev(route_prefix, vrf_master=vrf_master)
+
if dev and dev != ifaceobj.name:
self.logger.info('%s: preferred routing entry ' %ifaceobj.name +
'seems to be of the macvlan dev %s'
ret = False
return ret
- def ip_route_get_dev(self, prefix):
+ def ip_route_get_dev(self, prefix, vrf_master=None):
try:
- output = utils.exec_command('%s route get %s' %
- (utils.ip_cmd, prefix))
+ if vrf_master:
+ cmd = '%s route get %s vrf %s' % (utils.ip_cmd, prefix, vrf_master)
+ else:
+ cmd = '%s route get %s' % (utils.ip_cmd, prefix)
+
+ output = utils.exec_command(cmd)
if output:
rline = output.splitlines()[0]
if rline: