diff options
| author | Christian Breunig <christian@breunig.cc> | 2025-04-22 16:31:09 +0200 |
|---|---|---|
| committer | Christian Breunig <christian@breunig.cc> | 2025-04-28 22:10:08 +0200 |
| commit | cbb6c944fea616547cec43f7f1ed6ea3cc4beb54 (patch) | |
| tree | 45f62ef4cd67255bc3529363a7b27193d758cbcc /src/conf_mode | |
| parent | 5490006e7ad81908540c8bf0fef80798f95fe77d (diff) | |
| download | vyos-1x-cbb6c944fea616547cec43f7f1ed6ea3cc4beb54.tar.gz vyos-1x-cbb6c944fea616547cec43f7f1ed6ea3cc4beb54.zip | |
vyos.utils: T7122: fix IPv6 support in check_port_availability()
Commit 4523e9c897b3 ("wireguard: T3763: Added check for listening port
availability") added a function to check if a port is free to use or already
occupied by a different running service. This has been done by trying to bind a
socket to said given port.
Unfortunately there is no support for IPv6 address-fdamily in both
socketserver.TCPServer or socketserver.UDPServer. This must be done manually by
deriving TCPServer and setting self.address_family for IPv6.
The new implementation gets rid of both TCPServer and UDPServer and replaces it
with a simple socket binding to a given IPv4/IPv6 address or any interface/
address if unspecified.
In addition build time tests are added for the function to check for proper
behavior during build time of vyos-1x.
Diffstat (limited to 'src/conf_mode')
| -rwxr-xr-x | src/conf_mode/interfaces_wireguard.py | 2 | ||||
| -rw-r--r-- | src/conf_mode/load-balancing_haproxy.py | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/src/conf_mode/interfaces_wireguard.py b/src/conf_mode/interfaces_wireguard.py index 192937dba..3ca6ecdca 100755 --- a/src/conf_mode/interfaces_wireguard.py +++ b/src/conf_mode/interfaces_wireguard.py @@ -97,7 +97,7 @@ def verify(wireguard): if 'port' in wireguard and 'port_changed' in wireguard: listen_port = int(wireguard['port']) - if check_port_availability('0.0.0.0', listen_port, 'udp') is not True: + if check_port_availability(None, listen_port, protocol='udp') is not True: raise ConfigError(f'UDP port {listen_port} is busy or unavailable and ' 'cannot be used for the interface!') diff --git a/src/conf_mode/load-balancing_haproxy.py b/src/conf_mode/load-balancing_haproxy.py index 5fd1beec9..16c9300c2 100644 --- a/src/conf_mode/load-balancing_haproxy.py +++ b/src/conf_mode/load-balancing_haproxy.py @@ -72,7 +72,7 @@ def verify(lb): raise ConfigError(f'"{front} service port" must be configured!') # Check if bind address:port are used by another service - tmp_address = front_config.get('address', '0.0.0.0') + tmp_address = front_config.get('address', None) tmp_port = front_config['port'] if check_port_availability(tmp_address, int(tmp_port), 'tcp') is not True and \ not is_listen_port_bind_service(int(tmp_port), 'haproxy'): |
