]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
test-network: add simple test case for DHCP relay on bridge interface
authorYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 15 Jan 2024 05:19:03 +0000 (14:19 +0900)
committerLuca Boccassi <luca.boccassi@gmail.com>
Mon, 15 Jan 2024 10:53:07 +0000 (10:53 +0000)
For issue #30763.

test/test-network/conf/25-agent-bridge-port.network [new file with mode: 0644]
test/test-network/conf/25-agent-bridge.netdev [new file with mode: 0644]
test/test-network/conf/25-agent-bridge.network [new file with mode: 0644]
test/test-network/systemd-networkd-tests.py

diff --git a/test/test-network/conf/25-agent-bridge-port.network b/test/test-network/conf/25-agent-bridge-port.network
new file mode 100644 (file)
index 0000000..709a783
--- /dev/null
@@ -0,0 +1,7 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+[Match]
+Name=client-peer
+
+[Network]
+Bridge=bridge-relay
+IPv6AcceptRA=no
diff --git a/test/test-network/conf/25-agent-bridge.netdev b/test/test-network/conf/25-agent-bridge.netdev
new file mode 100644 (file)
index 0000000..a611337
--- /dev/null
@@ -0,0 +1,4 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+[NetDev]
+Name=bridge-relay
+Kind=bridge
diff --git a/test/test-network/conf/25-agent-bridge.network b/test/test-network/conf/25-agent-bridge.network
new file mode 100644 (file)
index 0000000..8383790
--- /dev/null
@@ -0,0 +1,12 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+[Match]
+Name=bridge-relay
+
+[Network]
+Address=192.168.2.1/24
+DHCPServer=yes
+IPv6AcceptRA=no
+
+[DHCPServer]
+RelayTarget=192.168.1.1
+RelayAgentRemoteId=string:aabbccdd
index 44970193677f1c7e6215e767b04d8c5caf54f2fc..edf09b81204f390125f92d5726e064855c16846d 100755 (executable)
@@ -5380,6 +5380,24 @@ class NetworkdDHCPServerRelayAgentTests(unittest.TestCase, Utilities):
         print(output)
         self.assertRegex(output, r'Address: 192.168.5.150 \(DHCP4 via 192.168.5.1\)')
 
+    def test_replay_agent_on_bridge(self):
+        copy_network_unit('25-agent-bridge.netdev',
+                          '25-agent-veth-client.netdev',
+                          '25-agent-bridge.network',
+                          '25-agent-bridge-port.network',
+                          '25-agent-client.network')
+        start_networkd()
+        self.wait_online(['bridge-relay:routable', 'client-peer:enslaved'])
+
+        # For issue #30763.
+        expect = 'bridge-relay: DHCPv4 server: STARTED'
+        for _ in range(20):
+            if expect in read_networkd_log():
+                break
+            time.sleep(0.5)
+        else:
+            self.fail()
+
 class NetworkdDHCPClientTests(unittest.TestCase, Utilities):
 
     def setUp(self):