summaryrefslogtreecommitdiff
path: root/python/vyos
diff options
context:
space:
mode:
authorsarthurdev <965089+sarthurdev@users.noreply.github.com>2023-12-17 01:25:22 +0100
committersarthurdev <965089+sarthurdev@users.noreply.github.com>2023-12-17 01:39:26 +0100
commit8e0a54676ff2ac90b7c24e4f05b05bcebc584bd3 (patch)
treecded61e59bb7a936d299ab3a8518ca80577a77d8 /python/vyos
parent03202504d559417266e437bbf53eb26ade187c07 (diff)
downloadvyos-1x-8e0a54676ff2ac90b7c24e4f05b05bcebc584bd3.tar.gz
vyos-1x-8e0a54676ff2ac90b7c24e4f05b05bcebc584bd3.zip
dhcp: T3316: Kea DHCP and DHCPv6 fixes
* Move Kea socket permission change on-demand and speed up conf scripts * Fix issue with DHCP reservations when no `ip-address` value
Diffstat (limited to 'python/vyos')
-rw-r--r--python/vyos/kea.py17
-rw-r--r--python/vyos/utils/file.py4
2 files changed, 17 insertions, 4 deletions
diff --git a/python/vyos/kea.py b/python/vyos/kea.py
index cb341e0f2..4a517da5f 100644
--- a/python/vyos/kea.py
+++ b/python/vyos/kea.py
@@ -23,7 +23,9 @@ from vyos.template import is_ipv6
from vyos.template import isc_static_route
from vyos.template import netmask_from_cidr
from vyos.utils.dict import dict_search_args
+from vyos.utils.file import file_permissions
from vyos.utils.file import read_file
+from vyos.utils.process import cmd
kea4_options = {
'name_server': 'domain-name-servers',
@@ -119,10 +121,14 @@ def kea_parse_subnet(subnet, config):
if 'disable' in host_config:
continue
- reservations.append({
- 'hw-address': host_config['mac_address'],
- 'ip-address': host_config['ip_address']
- })
+ obj = {
+ 'hw-address': host_config['mac_address']
+ }
+
+ if 'ip_address' in host_config:
+ obj['ip-address'] = host_config['ip_address']
+
+ reservations.append(obj)
out['reservations'] = reservations
unifi_controller = dict_search_args(config, 'vendor_option', 'ubiquiti', 'unifi_controller')
@@ -275,6 +281,9 @@ def _ctrl_socket_command(path, command, args=None):
if not os.path.exists(path):
return None
+ if file_permissions(path) != '0775':
+ cmd(f'sudo chmod 775 {path}')
+
with socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) as sock:
sock.connect(path)
diff --git a/python/vyos/utils/file.py b/python/vyos/utils/file.py
index 2af87a0ca..70ac1753b 100644
--- a/python/vyos/utils/file.py
+++ b/python/vyos/utils/file.py
@@ -149,6 +149,10 @@ def chmod_775(path):
S_IROTH | S_IXOTH
chmod(path, bitmask)
+def file_permissions(path):
+ """ Return file permissions in string format, e.g '0755' """
+ return oct(os.stat(path).st_mode)[4:]
+
def makedir(path, user=None, group=None):
if os.path.exists(path):
return