diff --git a/addons/address.py b/addons/address.py index b35206e..8f01167 100644 --- a/addons/address.py +++ b/addons/address.py @@ -313,7 +313,8 @@ class address(moduleBase): if addr_method != "dhcp": self.ipcmd.route_add_gateway(ifaceobj.name, - ifaceobj.get_attr_value_first('gateway')) + ifaceobj.get_attr_value_first('gateway'), + ifaceobj.get_attr_value_first('vrf')) def _down(self, ifaceobj, ifaceobj_getfunc=None): try: @@ -323,6 +324,7 @@ class address(moduleBase): if addr_method != "dhcp": self.ipcmd.route_del_gateway(ifaceobj.name, ifaceobj.get_attr_value_first('gateway'), + ifaceobj.get_attr_value_first('vrf'), ifaceobj.get_attr_value_first('metric')) if ifaceobj.get_attr_value_first('address-purge')=='no': addrlist = ifaceobj.get_attr_value('address') diff --git a/ifupdownaddons/iproute2.py b/ifupdownaddons/iproute2.py index 7b1466c..281f7da 100644 --- a/ifupdownaddons/iproute2.py +++ b/ifupdownaddons/iproute2.py @@ -437,21 +437,27 @@ class iproute2(utilsBase): def link_get_status(self, ifacename): return self._cache_get('link', [ifacename, 'ifflag'], refresh=True) - def route_add_gateway(self, ifacename, gateway, metric=None): + def route_add_gateway(self, ifacename, gateway, vrf=None, metric=None): if not gateway: return - cmd = 'ip route add default via %s' %gateway + if not vrf: + cmd = 'ip route add default via %s' %gateway + else: + cmd = 'ip route add table %s default via %s' %(vrf, gateway) # Add metric if metric: cmd += 'metric %s' %metric cmd += ' dev %s' %ifacename self.exec_command(cmd) - def route_del_gateway(self, ifacename, gateway, metric=None): + def route_del_gateway(self, ifacename, gateway, vrf=None, metric=None): # delete default gw if not gateway: return - cmd = 'ip route del default via %s' %gateway + if not vrf: + cmd = 'ip route del default via %s' %gateway + else: + cmd = 'ip route del table %s default via %s' %(vrf, gateway) if metric: cmd += ' metric %s' %metric cmd += ' dev %s' %ifacename