relay role implementation

This commit is contained in:
Yegor Alexeyev
2021-04-20 15:11:53 +02:00
committed by Zbigniew Jędrzejewski-Szmek
parent d5bfddf037
commit c95df5879e
17 changed files with 222 additions and 21 deletions
@@ -0,0 +1,9 @@
[Match]
Name=client-peer
[Network]
Address=192.168.6.2/24
DHCPServer=yes
IPForward=ipv4
[DHCPServer]
RelayTarget=192.168.5.1
BindToInterface=no
@@ -0,0 +1,5 @@
[Match]
Name=client
[Network]
DHCP=yes
IPForward=ipv4
@@ -0,0 +1,5 @@
[Match]
Name=server-peer
[Network]
Address=192.168.5.2/24
IPForward=ipv4
@@ -0,0 +1,10 @@
[Match]
Name=server
[Network]
Address=192.168.5.1/24
IPForward=ipv4
DHCPServer=yes
[DHCPServer]
BindToInterface=no
PoolOffset=150
PoolSize=1
@@ -0,0 +1,8 @@
[NetDev]
Name=client
Kind=veth
MACAddress=12:34:56:78:9a:bc
[Peer]
Name=client-peer
MACAddress=12:34:56:78:9a:bd
@@ -0,0 +1,8 @@
[NetDev]
Name=server
Kind=veth
MACAddress=12:34:56:78:9b:bc
[Peer]
Name=server-peer
MACAddress=12:34:56:78:9b:bd
@@ -3689,6 +3689,43 @@ class NetworkdDHCPServerTests(unittest.TestCase, Utilities):
self.assertRegex(output, '192.168.5.*')
self.assertRegex(output, 'Europe/Berlin')
class NetworkdDHCPServerRelayAgentTests(unittest.TestCase, Utilities):
links = [
'client',
'server',
'client-peer',
'server-peer',
]
units = [
'agent-veth-client.netdev',
'agent-veth-server.netdev',
'agent-client.network',
'agent-server.network',
'agent-client-peer.network',
'agent-server-peer.network',
]
def setUp(self):
remove_links(self.links)
stop_networkd(show_logs=False)
def tearDown(self):
remove_links(self.links)
remove_unit_from_networkd_path(self.units)
stop_networkd(show_logs=True)
def test_relay_agent(self):
copy_unit_to_networkd_unit_path(*self.units)
start_networkd()
#Test is disabled until BindToInterface DHCP server configuration option is supported
self.wait_online(['client:routable'])
output = check_output(*networkctl_cmd, '-n', '0', 'status', 'client', env=env)
print(output)
self.assertRegex(output, 'Address: 192.168.5.150 \(DHCP4 via 192.168.5.1\)')
class NetworkdDHCPClientTests(unittest.TestCase, Utilities):
links = [
'veth99',