mirror of
https://github.com/CumulusNetworks/ifupdown2.git
synced 2024-05-06 15:54:50 +00:00
addons: dhcp: add vrf awareness
Ticket: CM-10292, CM-10282 Reviewed By: dsa, nikhil, julien Testing Done: Tested dhcp config on an vrf slave - Add support for policy module_globals variable "vrf-exec-cmd-prefix". It is read into per module self.vrf_exec_cmd_prefix variable - If self.vrf_exec_cmd_prefix is present and interface is a vrf slave, use ifupdown2 will call such command in vrf context using: "%s %s %s" %(<vrf-exec-cmd-prefix>, <vrfname>, <cmd>) - This also fixes calling of dhcp refresh when a dhcp slave is removed from a vrf Signed-off-by: Roopa Prabhu <roopa@cumulusnetworks.com>
This commit is contained in:
@@ -313,9 +313,13 @@ class vrf(moduleBase):
|
||||
self.ipcmd.link_set(ifacename, 'master', vrfname)
|
||||
return
|
||||
|
||||
def _down_dhcp_slave(self, ifaceobj):
|
||||
def _down_dhcp_slave(self, ifaceobj, vrfname):
|
||||
try:
|
||||
self.dhclientcmd.release(ifaceobj.name)
|
||||
dhclient_cmd_prefix = None
|
||||
if vrfname and self.vrf_exec_cmd_prefix:
|
||||
dhclient_cmd_prefix = '%s %s' %(self.vrf_exec_cmd_prefix,
|
||||
vrfname)
|
||||
self.dhclientcmd.release(ifaceobj.name, dhclient_cmd_prefix)
|
||||
except:
|
||||
# ignore any dhclient release errors
|
||||
pass
|
||||
@@ -327,7 +331,7 @@ class vrf(moduleBase):
|
||||
self.vrf_mgmt_devname == vrfname):
|
||||
self._kill_ssh_connections(ifaceobj.name)
|
||||
if self._is_dhcp_slave(ifaceobj):
|
||||
self._down_dhcp_slave(ifaceobj)
|
||||
self._down_dhcp_slave(ifaceobj, vrfname)
|
||||
|
||||
def _up_vrf_slave(self, ifacename, vrfname, ifaceobj=None,
|
||||
ifaceobj_getfunc=None, vrf_exists=False):
|
||||
@@ -681,6 +685,7 @@ class vrf(moduleBase):
|
||||
# check if we were a slave before
|
||||
master = self.ipcmd.link_get_master(ifaceobj.name)
|
||||
if master:
|
||||
self._iproute2_vrf_map_initialize()
|
||||
if self._is_vrf_dev(master):
|
||||
self._down_vrf_slave(ifaceobj.name, ifaceobj,
|
||||
master)
|
||||
@@ -701,7 +706,7 @@ class vrf(moduleBase):
|
||||
vrf_table = self._get_iproute2_vrf_table(ifaceobj.name)
|
||||
|
||||
try:
|
||||
self.exec_command('/usr/cumulus/bin/cl-vrf service disable %s' %ifaceobj.name)
|
||||
self.exec_command('/usr/bin/vrf service disable %s' %ifaceobj.name)
|
||||
except Exception, e:
|
||||
self.logger.info('%s: %s' %(ifaceobj.name, str(e)))
|
||||
pass
|
||||
|
Reference in New Issue
Block a user