···
1
-
import ./make-test.nix ({ pkgs, networkd, test, ... }:
3
-
router = { config, pkgs, ... }:
6
-
vlanIfs = range 1 (length config.virtualisation.vlans);
8
-
virtualisation.vlans = [ 1 2 3 ];
1
+
{ system ? builtins.currentSystem, networkd }:
3
+
with import ../lib/testing.nix { inherit system; };
7
+
router = { config, pkgs, ... }:
10
+
vlanIfs = range 1 (length config.virtualisation.vlans);
12
+
virtualisation.vlans = [ 1 2 3 ];
15
+
useNetworkd = networkd;
16
+
firewall.allowPing = true;
17
+
interfaces = mkOverride 0 (listToAttrs (flip map vlanIfs (n:
18
+
nameValuePair "eth${toString n}" {
19
+
ipAddress = "192.168.${toString n}.1";
25
+
interfaces = map (n: "eth${toString n}") vlanIfs;
27
+
option subnet-mask 255.255.255.0;
28
+
'' + flip concatMapStrings vlanIfs (n: ''
29
+
subnet 192.168.${toString n}.0 netmask 255.255.255.0 {
30
+
option broadcast-address 192.168.${toString n}.255;
31
+
option routers 192.168.${toString n}.1;
32
+
range 192.168.${toString n}.2 192.168.${toString n}.254;
41
+
machine.networking.useNetworkd = networkd;
44
+
$machine->waitForUnit("network-interfaces.target");
45
+
$machine->waitForUnit("network.target");
46
+
$machine->succeed("ip addr show lo | grep -q 'inet 127.0.0.1/8 '");
47
+
$machine->succeed("ip addr show lo | grep -q 'inet6 ::1/128 '");
52
+
nodes.router = router;
53
+
nodes.client = { config, pkgs, ... }: with pkgs.lib; {
54
+
virtualisation.vlans = [ 1 2 ];
firewall.allowPing = true;
13
-
interfaces = mkOverride 0 (listToAttrs (flip map vlanIfs (n:
14
-
nameValuePair "eth${toString n}" {
15
-
ipAddress = "192.168.${toString n}.1";
21
-
interfaces = map (n: "eth${toString n}") vlanIfs;
23
-
option subnet-mask 255.255.255.0;
24
-
'' + flip concatMapStrings vlanIfs (n: ''
25
-
subnet 192.168.${toString n}.0 netmask 255.255.255.0 {
26
-
option broadcast-address 192.168.${toString n}.255;
27
-
option routers 192.168.${toString n}.1;
28
-
range 192.168.${toString n}.2 192.168.${toString n}.254;
59
+
defaultGateway = "192.168.1.1";
60
+
interfaces.eth1.ip4 = mkOverride 0 [
61
+
{ address = "192.168.1.2"; prefixLength = 24; }
62
+
{ address = "192.168.1.3"; prefixLength = 32; }
63
+
{ address = "192.168.1.10"; prefixLength = 32; }
65
+
interfaces.eth2.ip4 = mkOverride 0 [
66
+
{ address = "192.168.2.2"; prefixLength = 24; }
36
-
machine.networking.useNetworkd = networkd;
70
+
testScript = { nodes, ... }:
39
-
$machine->waitForUnit("network-interfaces.target");
40
-
$machine->waitForUnit("network.target");
41
-
$machine->succeed("ip addr show lo | grep -q 'inet 127.0.0.1/8 '");
42
-
$machine->succeed("ip addr show lo | grep -q 'inet6 ::1/128 '");
47
-
nodes.router = router;
48
-
nodes.client = { config, pkgs, ... }: with pkgs.lib; {
49
-
virtualisation.vlans = [ 1 2 ];
51
-
useNetworkd = networkd;
52
-
firewall.allowPing = true;
54
-
defaultGateway = "192.168.1.1";
55
-
interfaces.eth1.ip4 = mkOverride 0 [
56
-
{ address = "192.168.1.2"; prefixLength = 24; }
57
-
{ address = "192.168.1.3"; prefixLength = 32; }
58
-
{ address = "192.168.1.10"; prefixLength = 32; }
60
-
interfaces.eth2.ip4 = mkOverride 0 [
61
-
{ address = "192.168.2.2"; prefixLength = 24; }
65
-
testScript = { nodes, ... }:
69
-
$client->waitForUnit("network-interfaces.target");
70
-
$client->waitForUnit("network.target");
71
-
$router->waitForUnit("network-interfaces.target");
72
-
$router->waitForUnit("network.target");
74
+
$client->waitForUnit("network-interfaces.target");
75
+
$client->waitForUnit("network.target");
76
+
$router->waitForUnit("network-interfaces.target");
77
+
$router->waitForUnit("network.target");
74
-
# Make sure dhcpcd is not started
75
-
$client->fail("systemctl status dhcpcd.service");
79
+
# Make sure dhcpcd is not started
80
+
$client->fail("systemctl status dhcpcd.service");
78
-
$client->waitUntilSucceeds("ping -c 1 192.168.1.1");
79
-
$client->waitUntilSucceeds("ping -c 1 192.168.1.2");
80
-
$client->waitUntilSucceeds("ping -c 1 192.168.1.3");
81
-
$client->waitUntilSucceeds("ping -c 1 192.168.1.10");
83
+
$client->waitUntilSucceeds("ping -c 1 192.168.1.1");
84
+
$client->waitUntilSucceeds("ping -c 1 192.168.1.2");
85
+
$client->waitUntilSucceeds("ping -c 1 192.168.1.3");
86
+
$client->waitUntilSucceeds("ping -c 1 192.168.1.10");
83
-
$router->waitUntilSucceeds("ping -c 1 192.168.1.1");
84
-
$router->waitUntilSucceeds("ping -c 1 192.168.1.2");
85
-
$router->waitUntilSucceeds("ping -c 1 192.168.1.3");
86
-
$router->waitUntilSucceeds("ping -c 1 192.168.1.10");
88
+
$router->waitUntilSucceeds("ping -c 1 192.168.1.1");
89
+
$router->waitUntilSucceeds("ping -c 1 192.168.1.2");
90
+
$router->waitUntilSucceeds("ping -c 1 192.168.1.3");
91
+
$router->waitUntilSucceeds("ping -c 1 192.168.1.10");
89
-
$client->waitUntilSucceeds("ping -c 1 192.168.2.1");
90
-
$client->waitUntilSucceeds("ping -c 1 192.168.2.2");
94
+
$client->waitUntilSucceeds("ping -c 1 192.168.2.1");
95
+
$client->waitUntilSucceeds("ping -c 1 192.168.2.2");
92
-
$router->waitUntilSucceeds("ping -c 1 192.168.2.1");
93
-
$router->waitUntilSucceeds("ping -c 1 192.168.2.2");
97
+
$router->waitUntilSucceeds("ping -c 1 192.168.2.1");
98
+
$router->waitUntilSucceeds("ping -c 1 192.168.2.2");
95
-
# Test default gateway
96
-
$router->waitUntilSucceeds("ping -c 1 192.168.3.1");
97
-
$client->waitUntilSucceeds("ping -c 1 192.168.3.1");
101
-
name = "SimpleDHCP";
102
-
nodes.router = router;
103
-
nodes.client = { config, pkgs, ... }: with pkgs.lib; {
104
-
virtualisation.vlans = [ 1 2 ];
106
-
useNetworkd = networkd;
107
-
firewall.allowPing = true;
109
-
interfaces.eth1.ip4 = mkOverride 0 [ ];
110
-
interfaces.eth2.ip4 = mkOverride 0 [ ];
100
+
# Test default gateway
101
+
$router->waitUntilSucceeds("ping -c 1 192.168.3.1");
102
+
$client->waitUntilSucceeds("ping -c 1 192.168.3.1");
106
+
name = "SimpleDHCP";
107
+
nodes.router = router;
108
+
nodes.client = { config, pkgs, ... }: with pkgs.lib; {
109
+
virtualisation.vlans = [ 1 2 ];
111
+
useNetworkd = networkd;
112
+
firewall.allowPing = true;
114
+
interfaces.eth1.ip4 = mkOverride 0 [ ];
115
+
interfaces.eth2.ip4 = mkOverride 0 [ ];
113
-
testScript = { nodes, ... }:
118
+
testScript = { nodes, ... }:
117
-
$client->waitForUnit("network-interfaces.target");
118
-
$client->waitForUnit("network.target");
119
-
$router->waitForUnit("network-interfaces.target");
120
-
$router->waitForUnit("network.target");
122
+
$client->waitForUnit("network-interfaces.target");
123
+
$client->waitForUnit("network.target");
124
+
$router->waitForUnit("network-interfaces.target");
125
+
$router->waitForUnit("network.target");
122
-
# Wait until we have an ip address on each interface
123
-
$client->waitUntilSucceeds("ip addr show dev eth1 | grep -q '192.168.1'");
124
-
$client->waitUntilSucceeds("ip addr show dev eth2 | grep -q '192.168.2'");
127
+
# Wait until we have an ip address on each interface
128
+
$client->waitUntilSucceeds("ip addr show dev eth1 | grep -q '192.168.1'");
129
+
$client->waitUntilSucceeds("ip addr show dev eth2 | grep -q '192.168.2'");
127
-
$client->waitUntilSucceeds("ping -c 1 192.168.1.1");
128
-
$client->waitUntilSucceeds("ping -c 1 192.168.1.2");
132
+
$client->waitUntilSucceeds("ping -c 1 192.168.1.1");
133
+
$client->waitUntilSucceeds("ping -c 1 192.168.1.2");
130
-
$router->waitUntilSucceeds("ping -c 1 192.168.1.1");
131
-
$router->waitUntilSucceeds("ping -c 1 192.168.1.2");
135
+
$router->waitUntilSucceeds("ping -c 1 192.168.1.1");
136
+
$router->waitUntilSucceeds("ping -c 1 192.168.1.2");
134
-
$client->waitUntilSucceeds("ping -c 1 192.168.2.1");
135
-
$client->waitUntilSucceeds("ping -c 1 192.168.2.2");
139
+
$client->waitUntilSucceeds("ping -c 1 192.168.2.1");
140
+
$client->waitUntilSucceeds("ping -c 1 192.168.2.2");
137
-
$router->waitUntilSucceeds("ping -c 1 192.168.2.1");
138
-
$router->waitUntilSucceeds("ping -c 1 192.168.2.2");
142
-
name = "OneInterfaceDHCP";
143
-
nodes.router = router;
144
-
nodes.client = { config, pkgs, ... }: with pkgs.lib; {
145
-
virtualisation.vlans = [ 1 2 ];
147
-
useNetworkd = networkd;
148
-
firewall.allowPing = true;
150
-
interfaces.eth1 = {
151
-
ip4 = mkOverride 0 [ ];
154
-
interfaces.eth2.ip4 = mkOverride 0 [ ];
142
+
$router->waitUntilSucceeds("ping -c 1 192.168.2.1");
143
+
$router->waitUntilSucceeds("ping -c 1 192.168.2.2");
147
+
name = "OneInterfaceDHCP";
148
+
nodes.router = router;
149
+
nodes.client = { config, pkgs, ... }: with pkgs.lib; {
150
+
virtualisation.vlans = [ 1 2 ];
152
+
useNetworkd = networkd;
153
+
firewall.allowPing = true;
155
+
interfaces.eth1 = {
156
+
ip4 = mkOverride 0 [ ];
159
+
interfaces.eth2.ip4 = mkOverride 0 [ ];
157
-
testScript = { nodes, ... }:
162
+
testScript = { nodes, ... }:
161
-
# Wait for networking to come up
162
-
$client->waitForUnit("network-interfaces.target");
163
-
$client->waitForUnit("network.target");
164
-
$router->waitForUnit("network-interfaces.target");
165
-
$router->waitForUnit("network.target");
166
+
# Wait for networking to come up
167
+
$client->waitForUnit("network-interfaces.target");
168
+
$client->waitForUnit("network.target");
169
+
$router->waitForUnit("network-interfaces.target");
170
+
$router->waitForUnit("network.target");
167
-
# Wait until we have an ip address on each interface
168
-
$client->waitUntilSucceeds("ip addr show dev eth1 | grep -q '192.168.1'");
172
+
# Wait until we have an ip address on each interface
173
+
$client->waitUntilSucceeds("ip addr show dev eth1 | grep -q '192.168.1'");
171
-
$client->waitUntilSucceeds("ping -c 1 192.168.1.1");
172
-
$client->waitUntilSucceeds("ping -c 1 192.168.1.2");
176
+
$client->waitUntilSucceeds("ping -c 1 192.168.1.1");
177
+
$client->waitUntilSucceeds("ping -c 1 192.168.1.2");
174
-
$router->waitUntilSucceeds("ping -c 1 192.168.1.1");
175
-
$router->waitUntilSucceeds("ping -c 1 192.168.1.2");
179
+
$router->waitUntilSucceeds("ping -c 1 192.168.1.1");
180
+
$router->waitUntilSucceeds("ping -c 1 192.168.1.2");
178
-
$client->waitUntilSucceeds("ping -c 1 192.168.2.1");
179
-
$client->fail("ping -c 1 192.168.2.2");
183
+
$client->waitUntilSucceeds("ping -c 1 192.168.2.1");
184
+
$client->fail("ping -c 1 192.168.2.2");
181
-
$router->waitUntilSucceeds("ping -c 1 192.168.2.1");
182
-
$router->fail("ping -c 1 192.168.2.2");
186
-
node = address: { config, pkgs, ... }: with pkgs.lib; {
187
-
virtualisation.vlans = [ 1 2 ];
189
-
useNetworkd = networkd;
190
-
firewall.allowPing = true;
193
-
mode = "balance-rr";
194
-
interfaces = [ "eth1" "eth2" ];
196
-
interfaces.eth1.ip4 = mkOverride 0 [ ];
197
-
interfaces.eth2.ip4 = mkOverride 0 [ ];
198
-
interfaces.bond.ip4 = mkOverride 0
199
-
[ { inherit address; prefixLength = 30; } ];
186
+
$router->waitUntilSucceeds("ping -c 1 192.168.2.1");
187
+
$router->fail("ping -c 1 192.168.2.2");
191
+
node = address: { config, pkgs, ... }: with pkgs.lib; {
192
+
virtualisation.vlans = [ 1 2 ];
194
+
useNetworkd = networkd;
195
+
firewall.allowPing = true;
198
+
mode = "balance-rr";
199
+
interfaces = [ "eth1" "eth2" ];
201
+
interfaces.eth1.ip4 = mkOverride 0 [ ];
202
+
interfaces.eth2.ip4 = mkOverride 0 [ ];
203
+
interfaces.bond.ip4 = mkOverride 0
204
+
[ { inherit address; prefixLength = 30; } ];
204
-
nodes.client1 = node "192.168.1.1";
205
-
nodes.client2 = node "192.168.1.2";
206
-
testScript = { nodes, ... }:
209
+
nodes.client1 = node "192.168.1.1";
210
+
nodes.client2 = node "192.168.1.2";
211
+
testScript = { nodes, ... }:
210
-
# Wait for networking to come up
211
-
$client1->waitForUnit("network-interfaces.target");
212
-
$client1->waitForUnit("network.target");
213
-
$client2->waitForUnit("network-interfaces.target");
214
-
$client2->waitForUnit("network.target");
215
+
# Wait for networking to come up
216
+
$client1->waitForUnit("network-interfaces.target");
217
+
$client1->waitForUnit("network.target");
218
+
$client2->waitForUnit("network-interfaces.target");
219
+
$client2->waitForUnit("network.target");
217
-
$client1->waitUntilSucceeds("ping -c 2 192.168.1.1");
218
-
$client1->waitUntilSucceeds("ping -c 2 192.168.1.2");
222
+
$client1->waitUntilSucceeds("ping -c 2 192.168.1.1");
223
+
$client1->waitUntilSucceeds("ping -c 2 192.168.1.2");
220
-
$client2->waitUntilSucceeds("ping -c 2 192.168.1.1");
221
-
$client2->waitUntilSucceeds("ping -c 2 192.168.1.2");
225
-
node = { address, vlan }: { config, pkgs, ... }: with pkgs.lib; {
226
-
virtualisation.vlans = [ vlan ];
228
-
useNetworkd = networkd;
229
-
firewall.allowPing = true;
231
-
interfaces.eth1.ip4 = mkOverride 0
232
-
[ { inherit address; prefixLength = 24; } ];
225
+
$client2->waitUntilSucceeds("ping -c 2 192.168.1.1");
226
+
$client2->waitUntilSucceeds("ping -c 2 192.168.1.2");
230
+
node = { address, vlan }: { config, pkgs, ... }: with pkgs.lib; {
231
+
virtualisation.vlans = [ vlan ];
233
+
useNetworkd = networkd;
234
+
firewall.allowPing = true;
236
+
interfaces.eth1.ip4 = mkOverride 0
237
+
[ { inherit address; prefixLength = 24; } ];
237
-
nodes.client1 = node { address = "192.168.1.2"; vlan = 1; };
238
-
nodes.client2 = node { address = "192.168.1.3"; vlan = 2; };
239
-
nodes.router = { config, pkgs, ... }: with pkgs.lib; {
240
-
virtualisation.vlans = [ 1 2 ];
242
-
useNetworkd = networkd;
243
-
firewall.allowPing = true;
245
-
bridges.bridge.interfaces = [ "eth1" "eth2" ];
246
-
interfaces.eth1.ip4 = mkOverride 0 [ ];
247
-
interfaces.eth2.ip4 = mkOverride 0 [ ];
248
-
interfaces.bridge.ip4 = mkOverride 0
249
-
[ { address = "192.168.1.1"; prefixLength = 24; } ];
242
+
nodes.client1 = node { address = "192.168.1.2"; vlan = 1; };
243
+
nodes.client2 = node { address = "192.168.1.3"; vlan = 2; };
244
+
nodes.router = { config, pkgs, ... }: with pkgs.lib; {
245
+
virtualisation.vlans = [ 1 2 ];
247
+
useNetworkd = networkd;
248
+
firewall.allowPing = true;
250
+
bridges.bridge.interfaces = [ "eth1" "eth2" ];
251
+
interfaces.eth1.ip4 = mkOverride 0 [ ];
252
+
interfaces.eth2.ip4 = mkOverride 0 [ ];
253
+
interfaces.bridge.ip4 = mkOverride 0
254
+
[ { address = "192.168.1.1"; prefixLength = 24; } ];
252
-
testScript = { nodes, ... }:
257
+
testScript = { nodes, ... }:
256
-
# Wait for networking to come up
257
-
$client1->waitForUnit("network-interfaces.target");
258
-
$client1->waitForUnit("network.target");
259
-
$client2->waitForUnit("network-interfaces.target");
260
-
$client2->waitForUnit("network.target");
261
-
$router->waitForUnit("network-interfaces.target");
262
-
$router->waitForUnit("network.target");
261
+
# Wait for networking to come up
262
+
$client1->waitForUnit("network-interfaces.target");
263
+
$client1->waitForUnit("network.target");
264
+
$client2->waitForUnit("network-interfaces.target");
265
+
$client2->waitForUnit("network.target");
266
+
$router->waitForUnit("network-interfaces.target");
267
+
$router->waitForUnit("network.target");
265
-
$client1->waitUntilSucceeds("ping -c 1 192.168.1.1");
266
-
$client1->waitUntilSucceeds("ping -c 1 192.168.1.2");
267
-
$client1->waitUntilSucceeds("ping -c 1 192.168.1.3");
270
+
$client1->waitUntilSucceeds("ping -c 1 192.168.1.1");
271
+
$client1->waitUntilSucceeds("ping -c 1 192.168.1.2");
272
+
$client1->waitUntilSucceeds("ping -c 1 192.168.1.3");
269
-
$client2->waitUntilSucceeds("ping -c 1 192.168.1.1");
270
-
$client2->waitUntilSucceeds("ping -c 1 192.168.1.2");
271
-
$client2->waitUntilSucceeds("ping -c 1 192.168.1.3");
274
+
$client2->waitUntilSucceeds("ping -c 1 192.168.1.1");
275
+
$client2->waitUntilSucceeds("ping -c 1 192.168.1.2");
276
+
$client2->waitUntilSucceeds("ping -c 1 192.168.1.3");
273
-
$router->waitUntilSucceeds("ping -c 1 192.168.1.1");
274
-
$router->waitUntilSucceeds("ping -c 1 192.168.1.2");
275
-
$router->waitUntilSucceeds("ping -c 1 192.168.1.3");
280
-
nodes.router = router;
281
-
nodes.client = { config, pkgs, ... }: with pkgs.lib; {
282
-
virtualisation.vlans = [ 1 ];
284
-
useNetworkd = networkd;
285
-
firewall.allowPing = true;
287
-
macvlans.macvlan.interface = "eth1";
288
-
interfaces.eth1.ip4 = mkOverride 0 [ ];
278
+
$router->waitUntilSucceeds("ping -c 1 192.168.1.1");
279
+
$router->waitUntilSucceeds("ping -c 1 192.168.1.2");
280
+
$router->waitUntilSucceeds("ping -c 1 192.168.1.3");
285
+
nodes.router = router;
286
+
nodes.client = { config, pkgs, ... }: with pkgs.lib; {
287
+
virtualisation.vlans = [ 1 ];
289
+
useNetworkd = networkd;
290
+
firewall.allowPing = true;
292
+
macvlans.macvlan.interface = "eth1";
293
+
interfaces.eth1.ip4 = mkOverride 0 [ ];
291
-
testScript = { nodes, ... }:
296
+
testScript = { nodes, ... }:
295
-
# Wait for networking to come up
296
-
$client->waitForUnit("network-interfaces.target");
297
-
$client->waitForUnit("network.target");
298
-
$router->waitForUnit("network-interfaces.target");
299
-
$router->waitForUnit("network.target");
300
+
# Wait for networking to come up
301
+
$client->waitForUnit("network-interfaces.target");
302
+
$client->waitForUnit("network.target");
303
+
$router->waitForUnit("network-interfaces.target");
304
+
$router->waitForUnit("network.target");
301
-
# Wait until we have an ip address on each interface
302
-
$client->waitUntilSucceeds("ip addr show dev eth1 | grep -q '192.168.1'");
303
-
$client->waitUntilSucceeds("ip addr show dev macvlan | grep -q '192.168.1'");
306
+
# Wait until we have an ip address on each interface
307
+
$client->waitUntilSucceeds("ip addr show dev eth1 | grep -q '192.168.1'");
308
+
$client->waitUntilSucceeds("ip addr show dev macvlan | grep -q '192.168.1'");
305
-
# Print diagnosting information
306
-
$router->succeed("ip addr >&2");
307
-
$client->succeed("ip addr >&2");
310
+
# Print diagnosting information
311
+
$router->succeed("ip addr >&2");
312
+
$client->succeed("ip addr >&2");
309
-
# Test macvlan creates routable ips
310
-
$client->waitUntilSucceeds("ping -c 1 192.168.1.1");
311
-
$client->waitUntilSucceeds("ping -c 1 192.168.1.2");
312
-
$client->waitUntilSucceeds("ping -c 1 192.168.1.3");
314
+
# Test macvlan creates routable ips
315
+
$client->waitUntilSucceeds("ping -c 1 192.168.1.1");
316
+
$client->waitUntilSucceeds("ping -c 1 192.168.1.2");
317
+
$client->waitUntilSucceeds("ping -c 1 192.168.1.3");
314
-
$router->waitUntilSucceeds("ping -c 1 192.168.1.1");
315
-
$router->waitUntilSucceeds("ping -c 1 192.168.1.2");
316
-
$router->waitUntilSucceeds("ping -c 1 192.168.1.3");
320
-
node = { address4, remote, address6 }: { config, pkgs, ... }: with pkgs.lib; {
321
-
virtualisation.vlans = [ 1 ];
323
-
useNetworkd = networkd;
324
-
firewall.enable = false;
331
-
interfaces.eth1.ip4 = mkOverride 0
332
-
[ { address = address4; prefixLength = 24; } ];
333
-
interfaces.sit.ip6 = mkOverride 0
334
-
[ { address = address6; prefixLength = 64; } ];
319
+
$router->waitUntilSucceeds("ping -c 1 192.168.1.1");
320
+
$router->waitUntilSucceeds("ping -c 1 192.168.1.2");
321
+
$router->waitUntilSucceeds("ping -c 1 192.168.1.3");
325
+
node = { address4, remote, address6 }: { config, pkgs, ... }: with pkgs.lib; {
326
+
virtualisation.vlans = [ 1 ];
328
+
useNetworkd = networkd;
329
+
firewall.enable = false;
336
+
interfaces.eth1.ip4 = mkOverride 0
337
+
[ { address = address4; prefixLength = 24; } ];
338
+
interfaces.sit.ip6 = mkOverride 0
339
+
[ { address = address6; prefixLength = 64; } ];
339
-
nodes.client1 = node { address4 = "192.168.1.1"; remote = "192.168.1.2"; address6 = "fc00::1"; };
340
-
nodes.client2 = node { address4 = "192.168.1.2"; remote = "192.168.1.1"; address6 = "fc00::2"; };
341
-
testScript = { nodes, ... }:
344
+
nodes.client1 = node { address4 = "192.168.1.1"; remote = "192.168.1.2"; address6 = "fc00::1"; };
345
+
nodes.client2 = node { address4 = "192.168.1.2"; remote = "192.168.1.1"; address6 = "fc00::2"; };
346
+
testScript = { nodes, ... }:
345
-
# Wait for networking to be configured
346
-
$client1->waitForUnit("network-interfaces.target");
347
-
$client1->waitForUnit("network.target");
348
-
$client2->waitForUnit("network-interfaces.target");
349
-
$client2->waitForUnit("network.target");
350
+
# Wait for networking to be configured
351
+
$client1->waitForUnit("network-interfaces.target");
352
+
$client1->waitForUnit("network.target");
353
+
$client2->waitForUnit("network-interfaces.target");
354
+
$client2->waitForUnit("network.target");
351
-
# Print diagnostic information
352
-
$client1->succeed("ip addr >&2");
353
-
$client2->succeed("ip addr >&2");
356
+
# Print diagnostic information
357
+
$client1->succeed("ip addr >&2");
358
+
$client2->succeed("ip addr >&2");
356
-
$client1->waitUntilSucceeds("ping6 -c 1 fc00::1");
357
-
$client1->waitUntilSucceeds("ping6 -c 1 fc00::2");
361
+
$client1->waitUntilSucceeds("ping6 -c 1 fc00::1");
362
+
$client1->waitUntilSucceeds("ping6 -c 1 fc00::2");
359
-
$client2->waitUntilSucceeds("ping6 -c 1 fc00::1");
360
-
$client2->waitUntilSucceeds("ping6 -c 1 fc00::2");
364
-
node = address: { config, pkgs, ... }: with pkgs.lib; {
365
-
#virtualisation.vlans = [ 1 ];
367
-
useNetworkd = networkd;
368
-
firewall.allowPing = true;
372
-
interface = "eth0";
374
-
interfaces.eth0.ip4 = mkOverride 0 [ ];
375
-
interfaces.eth1.ip4 = mkOverride 0 [ ];
376
-
interfaces.vlan.ip4 = mkOverride 0
377
-
[ { inherit address; prefixLength = 24; } ];
364
+
$client2->waitUntilSucceeds("ping6 -c 1 fc00::1");
365
+
$client2->waitUntilSucceeds("ping6 -c 1 fc00::2");
369
+
node = address: { config, pkgs, ... }: with pkgs.lib; {
370
+
#virtualisation.vlans = [ 1 ];
372
+
useNetworkd = networkd;
373
+
firewall.allowPing = true;
377
+
interface = "eth0";
379
+
interfaces.eth0.ip4 = mkOverride 0 [ ];
380
+
interfaces.eth1.ip4 = mkOverride 0 [ ];
381
+
interfaces.vlan.ip4 = mkOverride 0
382
+
[ { inherit address; prefixLength = 24; } ];
382
-
nodes.client1 = node "192.168.1.1";
383
-
nodes.client2 = node "192.168.1.2";
384
-
testScript = { nodes, ... }:
387
+
nodes.client1 = node "192.168.1.1";
388
+
nodes.client2 = node "192.168.1.2";
389
+
testScript = { nodes, ... }:
388
-
# Wait for networking to be configured
389
-
$client1->waitForUnit("network-interfaces.target");
390
-
$client1->waitForUnit("network.target");
391
-
$client2->waitForUnit("network-interfaces.target");
392
-
$client2->waitForUnit("network.target");
393
+
# Wait for networking to be configured
394
+
$client1->waitForUnit("network-interfaces.target");
395
+
$client1->waitForUnit("network.target");
396
+
$client2->waitForUnit("network-interfaces.target");
397
+
$client2->waitForUnit("network.target");
394
-
# Test vlan is setup
395
-
$client1->succeed("ip addr show dev vlan >&2");
396
-
$client2->succeed("ip addr show dev vlan >&2");
400
-
case = testCases.${test};
402
-
name = "${case.name}-Networking-${if networkd then "Networkd" else "Scripted"}";
403
-
meta = with pkgs.stdenv.lib.maintainers; {
404
-
maintainers = [ wkennington ];
399
+
# Test vlan is setup
400
+
$client1->succeed("ip addr show dev vlan >&2");
401
+
$client2->succeed("ip addr show dev vlan >&2");
406
+
in mapAttrs (const (attrs: makeTest (attrs // {
407
+
name = "${attrs.name}-Networking-${if networkd then "Networkd" else "Scripted"}";
408
+
meta = with pkgs.stdenv.lib.maintainers; {
409
+
maintainers = [ wkennington ];