]> git.proxmox.com Git - pve-common.git/blame - test/etc_network_interfaces/t.create_network.pl
get_ip_from_hostname: check all address we get from getaddrinfo_all for non-local IP
[pve-common.git] / test / etc_network_interfaces / t.create_network.pl
CommitLineData
c7c4208a
WB
1save('proc_net_dev', <<'/proc/net/dev');
2eth0:
3eth1:
ec0f5151
WB
4eth2:
5eth3:
c7c4208a
WB
6/proc/net/dev
7
8r(load('brbase'));
9
ec0f5151
WB
10#
11# Variables used for the various interfaces:
12#
13
c7c4208a
WB
14my $ip = '192.168.0.2';
15my $nm = '255.255.255.0';
16my $gw = '192.168.0.1';
95aa8788
AD
17my $svcnodeip = '239.192.105.237';
18my $physdev = 'eth0';
19my $remoteip1 = '192.168.0.3';
20my $remoteip2 = '192.168.0.4';
21
ec0f5151
WB
22#
23# Hunk for the default bridge of the 'brbase' configuration
24#
25
26my $vmbr0_part = <<"PART";
27auto vmbr0
28iface vmbr0 inet static
29 address 10.0.0.2
30 netmask 255.255.255.0
31 gateway 10.0.0.1
32 bridge-ports eth0
33 bridge-stp off
34 bridge-fd 0
35PART
36chomp $vmbr0_part;
37
38#
39# Configure eth1 statically, store its expected interfaces hunk in $eth1_part
40# and test!
41#
c7c4208a
WB
42
43$config->{ifaces}->{eth1} = {
44 type => 'eth',
45 method => 'static',
46 address => $ip,
47 netmask => $nm,
48 gateway => $gw,
49 families => ['inet'],
50 autostart => 1
51};
52
ec0f5151
WB
53my $eth1_part = <<"PART";
54auto eth1
55iface eth1 inet static
56 address $ip
57 netmask $nm
58 gateway $gw
59PART
60chomp $eth1_part;
61
62expect load('loopback') . <<"CHECK";
63source-directory interfaces.d
64
65iface eth0 inet manual
66
67$eth1_part
68
69iface eth2 inet manual
70
71iface eth3 inet manual
72
73$vmbr0_part
74
75CHECK
76
77#
78# Add a bond for eth2 & 3 and check the new output
79#
80
81$config->{ifaces}->{bond0} = {
82 type => 'bond',
83 mtu => 1400,
84 slaves => 'eth2 eth3',
85 bond_mode => '802.3ad',
86 bond_xmit_hash_policy => 'layer3+4',
87 bond_miimon => 100,
0115696f
AD
88 method => 'manual',
89 families => ['inet'],
90 autostart => 1
91};
ec0f5151
WB
92my $bond0_part = <<"PART";
93auto bond0
94iface bond0 inet manual
95 bond-slaves eth2 eth3
96 bond-miimon 100
97 bond-mode 802.3ad
98 bond-xmit-hash-policy layer3+4
99 mtu 1400
100PART
101chomp $bond0_part;
0115696f 102
ec0f5151
WB
103expect load('loopback') . <<"CHECK";
104source-directory interfaces.d
105
106iface eth0 inet manual
107
108$eth1_part
109
110iface eth2 inet manual
111
112iface eth3 inet manual
113
114$bond0_part
115
116$vmbr0_part
117
118CHECK
119
120#
121# Add vxlan1 and 2
122#
123
124$config->{ifaces}->{vxlan1} = {
125 type => 'vxlan',
0115696f
AD
126 method => 'manual',
127 families => ['inet'],
ec0f5151
WB
128 'vxlan-id' => 1,
129 'vxlan-svcnodeip' => $svcnodeip,
130 'vxlan-physdev' => $physdev,
0115696f
AD
131 autostart => 1
132};
133
ec0f5151
WB
134$config->{ifaces}->{vxlan2} = {
135 type => 'vxlan',
0115696f
AD
136 method => 'manual',
137 families => ['inet'],
ec0f5151
WB
138 'vxlan-id' => 2,
139 'vxlan-local-tunnelip' => $ip,
0115696f
AD
140 autostart => 1
141};
142
ec0f5151
WB
143my $vxlan12_part = <<"PART";
144auto vxlan1
145iface vxlan1 inet manual
146 vxlan-id 1
147 vxlan-svcnodeip $svcnodeip
148 vxlan-physdev $physdev
149
150auto vxlan2
151iface vxlan2 inet manual
152 vxlan-id 2
153 vxlan-local-tunnelip $ip
154PART
155chomp $vxlan12_part;
156
157expect load('loopback') . <<"CHECK";
158source-directory interfaces.d
159
160iface eth0 inet manual
161
162$eth1_part
163
164iface eth2 inet manual
165
166iface eth3 inet manual
167
168$bond0_part
169
170$vmbr0_part
171
172$vxlan12_part
173
174CHECK
175
176#
177# Add vxlan3 and 3 bridges using vxlan1..3
178#
179
9a052564 180$config->{ifaces}->{vmbr1} = {
9b053d70 181 mtu => 1400,
9a052564
AD
182 type => 'bridge',
183 method => 'manual',
184 families => ['inet'],
ec0f5151 185 bridge_stp => 'off',
9a052564 186 bridge_fd => 0,
ec0f5151
WB
187 bridge_ports => 'vxlan1',
188 bridge_vlan_aware => 'yes',
9a052564
AD
189 autostart => 1
190};
191
9a052564
AD
192$config->{ifaces}->{vmbr2} = {
193 type => 'bridge',
194 method => 'manual',
195 families => ['inet'],
ec0f5151 196 bridge_stp => 'off',
9a052564 197 bridge_fd => 0,
ec0f5151 198 bridge_ports => 'vxlan2',
9a052564
AD
199 autostart => 1
200};
201
202$config->{ifaces}->{vmbr3} = {
203 type => 'bridge',
204 method => 'manual',
205 families => ['inet'],
ec0f5151 206 bridge_stp => 'off',
9a052564 207 bridge_fd => 0,
a70e9925 208 bridge_ports => 'vxlan3',
ec0f5151 209 bridge_vlan_aware => 'yes',
9a052564
AD
210 bridge_vids => '2-10',
211 autostart => 1
212};
213
ec0f5151
WB
214my $vmbr123_part = <<"PART";
215auto vmbr1
216iface vmbr1 inet manual
217 bridge-ports vxlan1
218 bridge-stp off
219 bridge-fd 0
220 bridge-vlan-aware yes
221 bridge-vids 2-4094
222 mtu 1400
95aa8788 223
ec0f5151
WB
224auto vmbr2
225iface vmbr2 inet manual
226 bridge-ports vxlan2
227 bridge-stp off
228 bridge-fd 0
229
230auto vmbr3
231iface vmbr3 inet manual
a70e9925 232 bridge-ports vxlan3
ec0f5151
WB
233 bridge-stp off
234 bridge-fd 0
235 bridge-vlan-aware yes
236 bridge-vids 2-10
237PART
238chomp $vmbr123_part;
95aa8788
AD
239
240$config->{ifaces}->{vxlan3} = {
241 type => 'vxlan',
242 method => 'manual',
243 families => ['inet'],
244 'vxlan-id' => 3,
245 'vxlan-remoteip' => [$remoteip1, $remoteip2],
9a052564 246 'bridge-access' => 3,
95aa8788
AD
247 autostart => 1
248};
249
ec0f5151
WB
250my $vx = $config->{ifaces}->{vxlan2};
251$vx->{'bridge-learning'} = 'off';
252$vx->{'bridge-arp-nd-suppress'} = 'on';
253$vx->{'bridge-unicast-flood'} = 'off';
254$vx->{'bridge-multicast-flood'} = 'off';
255my $vxlan123_part = $vxlan12_part ."\n" . <<"PART";
256 bridge-arp-nd-suppress on
257 bridge-learning off
258 bridge-multicast-flood off
259 bridge-unicast-flood off
260
261auto vxlan3
262iface vxlan3 inet manual
263 vxlan-id 3
264 vxlan-remoteip $remoteip1
265 vxlan-remoteip $remoteip2
266 bridge-access 3
267PART
268chomp $vxlan123_part;
269
270expect load('loopback') . <<"CHECK";
271source-directory interfaces.d
272
273iface eth0 inet manual
274
275$eth1_part
276
277iface eth2 inet manual
278
279iface eth3 inet manual
280
281$bond0_part
282
283$vmbr0_part
284
285$vmbr123_part
286
287$vxlan123_part
288
289CHECK
290
291#
292# Now add vlans on all types of interfaces: vmbr1, bond0 and eth1
293#
294
c4e56470
AD
295$config->{ifaces}->{'vmbr1.100'} = {
296 type => 'vlan',
9b053d70 297 mtu => 1300,
c4e56470
AD
298 method => 'manual',
299 families => ['inet'],
300 autostart => 1
301};
302
303$config->{ifaces}->{'bond0.100'} = {
8f5d56bf
AD
304 type => 'vlan',
305 mtu => 1300,
306 method => 'manual',
307 families => ['inet'],
308 'vlan-protocol' => '802.1ad',
309 autostart => 1
310};
311
312$config->{ifaces}->{'bond0.100.10'} = {
c4e56470 313 type => 'vlan',
9b053d70 314 mtu => 1300,
c4e56470
AD
315 method => 'manual',
316 families => ['inet'],
317 autostart => 1
318};
319
320$config->{ifaces}->{'eth1.100'} = {
321 type => 'vlan',
9b053d70 322 mtu => 1400,
c4e56470
AD
323 method => 'manual',
324 families => ['inet'],
325 autostart => 1
326};
95aa8788 327
968c90f1
AD
328$config->{ifaces}->{'vmbr4'} = {
329 mtu => 1200,
330 type => 'bridge',
331 method => 'manual',
332 families => ['inet'],
333 bridge_stp => 'off',
334 bridge_fd => 0,
335 bridge_ports => 'bond0.100',
336 autostart => 1
337};
338
a70e9925
AD
339$config->{ifaces}->{'vmbr5'} = {
340 mtu => 1100,
341 type => 'bridge',
342 method => 'manual',
343 families => ['inet'],
344 bridge_stp => 'off',
345 bridge_fd => 0,
346 bridge_ports => 'vmbr4.99',
347 autostart => 1
348};
349
c7c4208a
WB
350expect load('loopback') . <<"CHECK";
351source-directory interfaces.d
352
353iface eth0 inet manual
354
ec0f5151 355$eth1_part
c7c4208a 356
0115696f
AD
357iface eth2 inet manual
358
0115696f
AD
359iface eth3 inet manual
360
c4e56470
AD
361auto eth1.100
362iface eth1.100 inet manual
9b053d70 363 mtu 1400
c4e56470 364
ec0f5151 365$bond0_part
0115696f 366
c4e56470
AD
367auto bond0.100
368iface bond0.100 inet manual
9b053d70 369 mtu 1300
8f5d56bf
AD
370 vlan-protocol 802.1ad
371
372auto bond0.100.10
373iface bond0.100.10 inet manual
374 mtu 1300
c4e56470 375
ec0f5151 376$vmbr0_part
9a052564 377
ec0f5151 378$vmbr123_part
9a052564 379
968c90f1
AD
380auto vmbr4
381iface vmbr4 inet manual
382 bridge-ports bond0.100
383 bridge-stp off
384 bridge-fd 0
385 mtu 1200
386
a70e9925
AD
387auto vmbr5
388iface vmbr5 inet manual
389 bridge-ports vmbr4.99
390 bridge-stp off
391 bridge-fd 0
392 mtu 1100
393
c4e56470
AD
394auto vmbr1.100
395iface vmbr1.100 inet manual
9b053d70 396 mtu 1300
c4e56470 397
ec0f5151 398$vxlan123_part
95aa8788 399
c7c4208a
WB
400CHECK
401
ec0f5151
WB
402#
403# Now check the new config for idempotency:
404#
405
c7c4208a
WB
406save('if', w());
407r(load('if'));
408expect load('if');
409
ec0f5151
WB
410#
411# Check a brbase with an ipv6 address on eth1
412#
413
c7c4208a
WB
414r(load('brbase'));
415
416my $ip = 'fc05::2';
417my $nm = '112';
418my $gw = 'fc05::1';
419
420$config->{ifaces}->{eth1} = {
421 type => 'eth',
422 method6 => 'static',
423 address6 => $ip,
424 netmask6 => $nm,
425 gateway6 => $gw,
426 families => ['inet6'],
427 autostart => 1
428};
429
c7c4208a
WB
430expect load('loopback') . <<"CHECK";
431source-directory interfaces.d
432
433iface eth0 inet manual
434
435auto eth1
436iface eth1 inet6 static
437 address $ip
438 netmask $nm
439 gateway $gw
440
ec0f5151
WB
441iface eth2 inet manual
442
443iface eth3 inet manual
444
c7c4208a
WB
445auto vmbr0
446iface vmbr0 inet static
447 address 10.0.0.2
448 netmask 255.255.255.0
449 gateway 10.0.0.1
1accc6da
AD
450 bridge-ports eth0
451 bridge-stp off
452 bridge-fd 0
c7c4208a
WB
453
454CHECK
455
456save('if', w());
457r(load('if'));
458expect load('if');
459
4601;