]> git.proxmox.com Git - mirror_ifupdown2.git/blame - ifupdownaddons/dhclient.py
addons: tunnel: Fix (re)creation of tunnelsof any kind.
[mirror_ifupdown2.git] / ifupdownaddons / dhclient.py
CommitLineData
15ef32ea
RP
1#!/usr/bin/python
2#
3# Copyright 2014 Cumulus Networks, Inc. All rights reserved.
4# Author: Roopa Prabhu, roopa@cumulusnetworks.com
5#
6
a193d8d1 7from ifupdown.utils import utils
15ef32ea 8from utilsbase import *
15ef32ea
RP
9import os
10
15ef32ea
RP
11
12class dhclient(utilsBase):
13 """ This class contains helper methods to interact with the dhclient
14 utility """
15
16 def _pid_exists(self, pidfilename):
17 if os.path.exists(pidfilename):
18 pid = self.read_file_oneline(pidfilename)
19 if not os.path.exists('/proc/%s' %pid):
20 return False
21 else:
22 return False
23 return True
24
25 def is_running(self, ifacename):
26 return self._pid_exists('/run/dhclient.%s.pid' %ifacename)
27
28 def is_running6(self, ifacename):
29 return self._pid_exists('/run/dhclient6.%s.pid' %ifacename)
30
717cee31
RP
31 def _run_dhclient_cmd(self, cmd, cmd_prefix=None):
32 if not cmd_prefix:
33 cmd_aslist = []
34 else:
35 cmd_aslist = cmd_prefix.split()
36 if cmd_aslist:
37 cmd_aslist.extend(cmd)
38 else:
39 cmd_aslist = cmd
a193d8d1 40 utils.exec_commandl(cmd_aslist, stdout=None, stderr=None)
717cee31
RP
41
42 def stop(self, ifacename, cmd_prefix=None):
15ef32ea
RP
43 if os.path.exists('/sbin/dhclient3'):
44 cmd = ['/sbin/dhclient3', '-x', '-pf',
45 '/run/dhclient.%s.pid' %ifacename, '-lf',
46 '/var/lib/dhcp3/dhclient.%s.leases' %ifacename,
47 '%s' %ifacename]
48 else:
49 cmd = ['/sbin/dhclient', '-x', '-pf',
50 '/run/dhclient.%s.pid' %ifacename,
51 '-lf', '/var/lib/dhcp/dhclient.%s.leases' %ifacename,
52 '%s' %ifacename]
717cee31 53 self._run_dhclient_cmd(cmd, cmd_prefix)
15ef32ea 54
717cee31 55 def start(self, ifacename, wait=True, cmd_prefix=None):
15ef32ea
RP
56 if os.path.exists('/sbin/dhclient3'):
57 cmd = ['/sbin/dhclient3', '-pf',
58 '/run/dhclient.%s.pid' %ifacename,
59 '-lf', '/var/lib/dhcp3/dhclient.%s.leases' %ifacename,
60 '%s' %ifacename]
61 else:
717cee31
RP
62 cmd = ['/sbin/dhclient', '-pf',
63 '/run/dhclient.%s.pid' %ifacename, '-lf',
64 '/var/lib/dhcp/dhclient.%s.leases' %ifacename,
15ef32ea 65 '%s' %ifacename]
a0a8d7e0 66 if not wait:
6d359159 67 cmd.append('-nw')
717cee31 68 self._run_dhclient_cmd(cmd, cmd_prefix)
15ef32ea 69
717cee31 70 def release(self, ifacename, cmd_prefix=None):
15ef32ea
RP
71 if os.path.exists('/sbin/dhclient3'):
72 cmd = ['/sbin/dhclient3', '-r', '-pf',
73 '/run/dhclient.%s.pid' %ifacename, '-lf',
74 '/var/lib/dhcp3/dhclient.%s.leases' %ifacename,
75 '%s' %ifacename]
76 else:
77 cmd = ['/sbin/dhclient', '-r', '-pf',
78 '/run/dhclient.%s.pid' %ifacename,
79 '-lf', '/var/lib/dhcp/dhclient.%s.leases' %ifacename,
80 '%s' %ifacename]
717cee31 81 self._run_dhclient_cmd(cmd, cmd_prefix)
15ef32ea 82
717cee31
RP
83 def start6(self, ifacename, wait=True, cmd_prefix=None):
84 cmd = ['/sbin/dhclient', '-6', '-pf',
15ef32ea 85 '/run/dhclient6.%s.pid' %ifacename, '-lf',
004d1e65 86 '/var/lib/dhcp/dhclient6.%s.leases' % ifacename,
6d359159 87 '%s' %ifacename]
a0a8d7e0 88 if not wait:
6d359159 89 cmd.append('-nw')
717cee31 90 self._run_dhclient_cmd(cmd, cmd_prefix)
15ef32ea 91
717cee31
RP
92 def stop6(self, ifacename, cmd_prefix=None):
93 cmd = ['/sbin/dhclient', '-6', '-x', '-pf',
004d1e65
JF
94 '/run/dhclient6.%s.pid' % ifacename, '-lf',
95 '/var/lib/dhcp/dhclient6.%s.leases' % ifacename,
717cee31
RP
96 '%s' %ifacename]
97 self._run_dhclient_cmd(cmd, cmd_prefix)
15ef32ea 98
717cee31
RP
99 def release6(self, ifacename, cmd_prefix=None):
100 cmd = ['/sbin/dhclient', '-6', '-r', '-pf',
20fd3a06 101 '/run/dhclient6.%s.pid' %ifacename,
de4104b0 102 '-lf', '/var/lib/dhcp/dhclient6.%s.leases' % ifacename,
717cee31
RP
103 '%s' %ifacename]
104 self._run_dhclient_cmd(cmd, cmd_prefix)