summaryrefslogtreecommitdiff
path: root/src/tests/test_utils_network.py
diff options
context:
space:
mode:
authorChristian Breunig <christian@breunig.cc>2025-04-22 16:31:09 +0200
committerChristian Breunig <christian@breunig.cc>2025-04-28 22:10:08 +0200
commitcbb6c944fea616547cec43f7f1ed6ea3cc4beb54 (patch)
tree45f62ef4cd67255bc3529363a7b27193d758cbcc /src/tests/test_utils_network.py
parent5490006e7ad81908540c8bf0fef80798f95fe77d (diff)
downloadvyos-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/tests/test_utils_network.py')
-rw-r--r--src/tests/test_utils_network.py11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/tests/test_utils_network.py b/src/tests/test_utils_network.py
index d68dec16f..92fde447d 100644
--- a/src/tests/test_utils_network.py
+++ b/src/tests/test_utils_network.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2020-2024 VyOS maintainers and contributors
+# Copyright (C) 2020-2025 VyOS maintainers and contributors
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 or later as
@@ -43,3 +43,12 @@ class TestVyOSUtilsNetwork(TestCase):
self.assertFalse(vyos.utils.network.is_loopback_addr('::2'))
self.assertFalse(vyos.utils.network.is_loopback_addr('192.0.2.1'))
+
+ def test_check_port_availability(self):
+ self.assertTrue(vyos.utils.network.check_port_availability('::1', 8080))
+ self.assertTrue(vyos.utils.network.check_port_availability('127.0.0.1', 8080))
+ self.assertTrue(vyos.utils.network.check_port_availability(None, 8080, protocol='udp'))
+ # We do not have 192.0.2.1 configured on this system
+ self.assertFalse(vyos.utils.network.check_port_availability('192.0.2.1', 443))
+ # We do not have 2001:db8::1 configured on this system
+ self.assertFalse(vyos.utils.network.check_port_availability('2001:db8::1', 80, protocol='udp'))