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