8e858018731b917bea3014de9f7415b958670cd1
[cascardo/ovs.git] / tests / ovn-nbctl.at
1 AT_BANNER([ovn-nbctl])
2
3 # OVN_NBCTL_TEST_START
4 m4_define([OVN_NBCTL_TEST_START],
5   [dnl Create ovn-nb database.
6    AT_KEYWORDS([ovn])
7    AT_CHECK([ovsdb-tool create ovn-nb.db $abs_top_srcdir/ovn/ovn-nb.ovsschema])
8
9    dnl Start ovsdb-server.
10    AT_CHECK([ovsdb-server --detach --no-chdir --pidfile --log-file --remote=punix:$OVS_RUNDIR/ovnnb_db.sock ovn-nb.db], [0], [], [stderr])
11    on_exit "kill `cat ovsdb-server.pid`"
12    AT_CHECK([[sed < stderr '
13 /vlog|INFO|opened log file/d
14 /ovsdb_server|INFO|ovsdb-server (Open vSwitch)/d']])
15    AT_CAPTURE_FILE([ovsdb-server.log])
16 ])
17
18 # OVN_NBCTL_TEST_STOP
19 m4_define([OVN_NBCTL_TEST_STOP],
20   [# removes all 'Broken pipe' warning logs from ovsdb-server.log.  this is in
21    # that *ctl command (e.g. ovn-nbctl) exits right after committing the change
22    # to database.  however, in reaction, some daemon (e.g. ovn-controller-vtep)
23    # may immediately update the database.  this later update may cause database
24    # sending update back to *ctl command if *ctl has not proceeded to exit yet.
25    # and if *ctl command exits before database calling send, the send from
26    # database will fail with 'Broken pipe' error. Also removes all "connection
27    # reset" warning logs by a similar rationale (either EPIPE or ECONNRESET can
28    # be returned on a send depending on whether the peer had unconsumed data when
29    # it closed the socket).
30    AT_CHECK([check_logs "$1
31 /reset by peer/d
32 /Broken pipe/d"])
33    OVS_APP_EXIT_AND_WAIT([ovsdb-server])])
34
35
36 AT_SETUP([ovn-nbctl - basic switch commands])
37 OVN_NBCTL_TEST_START
38
39 AT_CHECK([ovn-nbctl ls-add ls0])
40 AT_CHECK([ovn-nbctl ls-list | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl
41 <0> (ls0)
42 ])
43
44 AT_CHECK([ovn-nbctl ls-add ls1])
45 AT_CHECK([ovn-nbctl ls-list | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl
46 <0> (ls0)
47 <1> (ls1)
48 ])
49
50 AT_CHECK([ovn-nbctl ls-del ls0])
51 AT_CHECK([ovn-nbctl ls-list | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl
52 <0> (ls1)
53 ])
54
55 AT_CHECK([ovn-nbctl show ls0])
56 AT_CHECK([ovn-nbctl ls-add ls0])
57 AT_CHECK([ovn-nbctl show ls0 | ${PERL} $srcdir/uuidfilt.pl], [0],
58   [    switch <0> (ls0)
59 ])
60 AT_CHECK([ovn-nbctl ls-add ls0], [1], [],
61   [ovn-nbctl: ls0: a switch with this name already exists
62 ])
63 AT_CHECK([ovn-nbctl --may-exist ls-add ls0])
64 AT_CHECK([ovn-nbctl show ls0 | ${PERL} $srcdir/uuidfilt.pl], [0],
65   [    switch <0> (ls0)
66 ])
67 AT_CHECK([ovn-nbctl --add-duplicate ls-add ls0])
68 AT_CHECK([ovn-nbctl --may-exist --add-duplicate ls-add ls0], [1], [],
69   [ovn-nbctl: --may-exist and --add-duplicate may not be used together
70 ])
71 AT_CHECK([ovn-nbctl ls-del ls0], [1], [],
72   [ovn-nbctl: Multiple logical switches named 'ls0'.  Use a UUID.
73 ])
74
75 AT_CHECK([ovn-nbctl ls-del ls2], [1], [],
76   [ovn-nbctl: ls2: switch name not found
77 ])
78 AT_CHECK([ovn-nbctl --if-exists ls-del ls2])
79
80 AT_CHECK([ovn-nbctl ls-add])
81 AT_CHECK([ovn-nbctl ls-add])
82 AT_CHECK([ovn-nbctl --add-duplicate ls-add], [1], [],
83   [ovn-nbctl: --add-duplicate requires specifying a name
84 ])
85 AT_CHECK([ovn-nbctl --may-exist ls-add], [1], [],
86   [ovn-nbctl: --may-exist requires specifying a name
87 ])
88
89 OVN_NBCTL_TEST_STOP
90 AT_CLEANUP
91
92 dnl ---------------------------------------------------------------------
93
94 AT_SETUP([ovn-nbctl - basic logical switch port commands])
95 OVN_NBCTL_TEST_START
96
97 AT_CHECK([ovn-nbctl ls-add ls0])
98 AT_CHECK([ovn-nbctl lsp-add ls0 lp0])
99 AT_CHECK([ovn-nbctl lsp-add ls0 lp0], [1], [],
100   [ovn-nbctl: lp0: a port with this name already exists
101 ])
102 AT_CHECK([ovn-nbctl --may-exist lsp-add ls0 lp0])
103 AT_CHECK([ovn-nbctl lsp-list ls0 | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl
104 <0> (lp0)
105 ])
106
107 AT_CHECK([ovn-nbctl lsp-add ls0 lp1])
108 AT_CHECK([ovn-nbctl lsp-list ls0 | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl
109 <0> (lp0)
110 <1> (lp1)
111 ])
112
113 AT_CHECK([ovn-nbctl ls-add ls1])
114 AT_CHECK([ovn-nbctl lsp-add ls0 lp1], [1], [],
115   [ovn-nbctl: lp1: a port with this name already exists
116 ])
117 AT_CHECK([ovn-nbctl --may-exist lsp-add ls1 lp1], [1], [],
118   [ovn-nbctl: lp1: port already exists but in switch ls0
119 ])
120 AT_CHECK([ovn-nbctl --may-exist lsp-add ls0 lp1 lp0 5], [1], [],
121   [ovn-nbctl: lp1: port already exists but has no parent
122 ])
123
124 AT_CHECK([ovn-nbctl lsp-del lp1])
125 AT_CHECK([ovn-nbctl lsp-list ls0 | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl
126 <0> (lp0)
127 ])
128
129 AT_CHECK([ovn-nbctl lsp-add ls0 lp2 lp3 5])
130 AT_CHECK([ovn-nbctl --may-exist lsp-add ls0 lp2 lp4 5], [1], [],
131   [ovn-nbctl: lp2: port already exists with different parent lp3
132 ])
133 AT_CHECK([ovn-nbctl --may-exist lsp-add ls0 lp2 lp3 10], [1], [],
134   [ovn-nbctl: lp2: port already exists with different tag 5
135 ])
136 AT_CHECK([ovn-nbctl clear Logical_Switch_Port lp2 tag])
137 AT_CHECK([ovn-nbctl --may-exist lsp-add ls0 lp2 lp3 5], [1], [],
138   [ovn-nbctl: lp2: port already exists but has no tag
139 ])
140
141 OVN_NBCTL_TEST_STOP
142 AT_CLEANUP
143
144 dnl ---------------------------------------------------------------------
145
146 AT_SETUP([ovn-nbctl - lport addresses])
147 OVN_NBCTL_TEST_START
148
149 AT_CHECK([ovn-nbctl ls-add ls0])
150 AT_CHECK([ovn-nbctl lsp-add ls0 lp0])
151 AT_CHECK([ovn-nbctl lsp-get-addresses lp0], [0], [dnl
152 ])
153
154 AT_CHECK([ovn-nbctl lsp-set-addresses lp0 00:11:22:33:44:55 unknown])
155 AT_CHECK([ovn-nbctl lsp-get-addresses lp0], [0], [dnl
156 00:11:22:33:44:55
157 unknown
158 ])
159
160 AT_CHECK([ovn-nbctl lsp-set-addresses lp0])
161 AT_CHECK([ovn-nbctl lsp-get-addresses lp0], [0], [dnl
162 ])
163
164 OVN_NBCTL_TEST_STOP
165 AT_CLEANUP
166
167 dnl ---------------------------------------------------------------------
168
169 AT_SETUP([ovn-nbctl - port security])
170 OVN_NBCTL_TEST_START
171
172 AT_CHECK([ovn-nbctl ls-add ls0])
173 AT_CHECK([ovn-nbctl lsp-add ls0 lp0])
174 AT_CHECK([ovn-nbctl lsp-get-addresses lp0], [0], [dnl
175 ])
176
177 AT_CHECK([ovn-nbctl lsp-set-port-security lp0 aa:bb:cc:dd:ee:ff 00:11:22:33:44:55])
178 AT_CHECK([ovn-nbctl lsp-get-port-security lp0], [0], [dnl
179 00:11:22:33:44:55
180 aa:bb:cc:dd:ee:ff
181 ])
182
183 AT_CHECK([ovn-nbctl lsp-set-port-security lp0])
184 AT_CHECK([ovn-nbctl lsp-get-port-security lp0], [0], [dnl
185 ])
186
187 OVN_NBCTL_TEST_STOP
188 AT_CLEANUP
189
190 dnl ---------------------------------------------------------------------
191
192 AT_SETUP([ovn-nbctl - ACLs])
193 OVN_NBCTL_TEST_START
194
195 AT_CHECK([ovn-nbctl ls-add ls0])
196 AT_CHECK([ovn-nbctl --log acl-add ls0 from-lport 600 udp drop])
197 AT_CHECK([ovn-nbctl --log acl-add ls0 to-lport 500 udp drop])
198 AT_CHECK([ovn-nbctl acl-add ls0 from-lport 400 tcp drop])
199 AT_CHECK([ovn-nbctl acl-add ls0 to-lport 300 tcp drop])
200 AT_CHECK([ovn-nbctl acl-add ls0 from-lport 200 ip drop])
201 AT_CHECK([ovn-nbctl acl-add ls0 to-lport 100 ip drop])
202
203 AT_CHECK([ovn-nbctl acl-list ls0], [0], [dnl
204 from-lport   600 (udp) drop log
205 from-lport   400 (tcp) drop
206 from-lport   200 (ip) drop
207   to-lport   500 (udp) drop log
208   to-lport   300 (tcp) drop
209   to-lport   100 (ip) drop
210 ])
211
212 dnl Delete in one direction.
213 AT_CHECK([ovn-nbctl acl-del ls0 to-lport])
214 AT_CHECK([ovn-nbctl acl-list ls0], [0], [dnl
215 from-lport   600 (udp) drop log
216 from-lport   400 (tcp) drop
217 from-lport   200 (ip) drop
218 ])
219
220 dnl Delete all ACLs.
221 AT_CHECK([ovn-nbctl acl-del ls0])
222 AT_CHECK([ovn-nbctl acl-list ls0], [0], [dnl
223 ])
224
225 AT_CHECK([ovn-nbctl acl-add ls0 from-lport 600 udp drop])
226 AT_CHECK([ovn-nbctl acl-add ls0 from-lport 400 tcp drop])
227 AT_CHECK([ovn-nbctl acl-add ls0 from-lport 200 ip drop])
228
229 dnl Delete a single flow.
230 AT_CHECK([ovn-nbctl acl-del ls0 from-lport 400 tcp])
231 AT_CHECK([ovn-nbctl acl-list ls0], [0], [dnl
232 from-lport   600 (udp) drop
233 from-lport   200 (ip) drop
234 ])
235
236 OVN_NBCTL_TEST_STOP
237 AT_CLEANUP
238
239 dnl ---------------------------------------------------------------------
240
241 AT_SETUP([ovn-nbctl - basic logical router commands])
242 OVN_NBCTL_TEST_START
243
244 AT_CHECK([ovn-nbctl lr-add lr0])
245 AT_CHECK([ovn-nbctl lr-list | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl
246 <0> (lr0)
247 ])
248
249 AT_CHECK([ovn-nbctl lr-add lr1])
250 AT_CHECK([ovn-nbctl lr-list | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl
251 <0> (lr0)
252 <1> (lr1)
253 ])
254
255 AT_CHECK([ovn-nbctl lr-del lr0])
256 AT_CHECK([ovn-nbctl lr-list | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl
257 <0> (lr1)
258 ])
259
260 AT_CHECK([ovn-nbctl show lr0])
261 AT_CHECK([ovn-nbctl lr-add lr0])
262 AT_CHECK([ovn-nbctl show lr0 | ${PERL} $srcdir/uuidfilt.pl], [0],
263   [    router <0> (lr0)
264 ])
265 AT_CHECK([ovn-nbctl lr-add lr0], [1], [],
266   [ovn-nbctl: lr0: a router with this name already exists
267 ])
268 AT_CHECK([ovn-nbctl --may-exist lr-add lr0])
269 AT_CHECK([ovn-nbctl show lr0 | ${PERL} $srcdir/uuidfilt.pl], [0],
270   [    router <0> (lr0)
271 ])
272 AT_CHECK([ovn-nbctl --add-duplicate lr-add lr0])
273 AT_CHECK([ovn-nbctl --may-exist --add-duplicate lr-add lr0], [1], [],
274   [ovn-nbctl: --may-exist and --add-duplicate may not be used together
275 ])
276 AT_CHECK([ovn-nbctl lr-del lr0], [1], [],
277   [ovn-nbctl: Multiple logical routers named 'lr0'.  Use a UUID.
278 ])
279
280 AT_CHECK([ovn-nbctl lr-del lr2], [1], [],
281   [ovn-nbctl: lr2: router name not found
282 ])
283 AT_CHECK([ovn-nbctl --if-exists lr-del lr2])
284
285 AT_CHECK([ovn-nbctl lr-add])
286 AT_CHECK([ovn-nbctl lr-add])
287 AT_CHECK([ovn-nbctl --add-duplicate lr-add], [1], [],
288   [ovn-nbctl: --add-duplicate requires specifying a name
289 ])
290 AT_CHECK([ovn-nbctl --may-exist lr-add], [1], [],
291   [ovn-nbctl: --may-exist requires specifying a name
292 ])
293
294 OVN_NBCTL_TEST_STOP
295 AT_CLEANUP
296
297 dnl ---------------------------------------------------------------------
298
299 AT_SETUP([ovn-nbctl - basic logical router port commands])
300 OVN_NBCTL_TEST_START
301
302 AT_CHECK([ovn-nbctl lr-add lr0])
303 AT_CHECK([ovn-nbctl lrp-add lr0 lrp0 00:00:00:01:02:03 192.168.1.1/24])
304
305 AT_CHECK([ovn-nbctl show lr0 | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl
306     router <0> (lr0)
307         port lrp0
308             mac: "00:00:00:01:02:03"
309             networks: [["192.168.1.1/24"]]
310 ])
311
312 AT_CHECK([ovn-nbctl lrp-add lr0 lrp0 00:00:00:01:02:03 192.168.1.1/24], [1], [],
313   [ovn-nbctl: lrp0: a port with this name already exists
314 ])
315 AT_CHECK([ovn-nbctl --may-exist lrp-add lr0 lrp0 00:00:00:01:02:03 192.168.1.1/24])
316 AT_CHECK([ovn-nbctl lrp-list lr0 | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl
317 <0> (lrp0)
318 ])
319
320 AT_CHECK([ovn-nbctl lrp-add lr0 lrp1 00:00:00:01:02:03 192.168.1.1/24 peer=lrp1-peer])
321 AT_CHECK([ovn-nbctl lrp-list lr0 | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl
322 <0> (lrp0)
323 <1> (lrp1)
324 ])
325
326 AT_CHECK([ovn-nbctl lr-add lr1])
327 AT_CHECK([ovn-nbctl lrp-add lr0 lrp1 00:00:00:01:02:03 192.168.1.1/24], [1], [],
328   [ovn-nbctl: lrp1: a port with this name already exists
329 ])
330
331 AT_CHECK([ovn-nbctl --may-exist lrp-add lr1 lrp1 00:00:00:01:02:03 192.168.1.1/24], [1], [],
332   [ovn-nbctl: lrp1: port already exists but in router lr0
333 ])
334
335 AT_CHECK([ovn-nbctl --may-exist lrp-add lr0 lrp1 00:00:00:04:05:06 192.168.1.1/24], [1], [],
336   [ovn-nbctl: lrp1: port already exists with mac 00:00:00:01:02:03
337 ])
338
339 AT_CHECK([ovn-nbctl --may-exist lrp-add lr0 lrp1 00:00:00:01:02:03 192.168.1.1/24], [1], [],
340   [ovn-nbctl: lrp1: port already exists with mismatching peer
341 ])
342
343 AT_CHECK([ovn-nbctl --may-exist lrp-add lr0 lrp1 00:00:00:01:02:03 10.0.0.1/24 peer=lrp1-peer], [1], [],
344   [ovn-nbctl: lrp1: port already exists with different network
345 ])
346
347 AT_CHECK([ovn-nbctl --may-exist lrp-add lr0 lrp1 00:00:00:01:02:03 192.168.1.1/24 peer=lrp1-peer])
348
349 AT_CHECK([ovn-nbctl lrp-del lrp1])
350 AT_CHECK([ovn-nbctl lrp-list lr0 | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl
351 <0> (lrp0)
352 ])
353
354 AT_CHECK([ovn-nbctl --may-exist lrp-add lr0 lrp1 00:00:00:01:02:03 192.168.1.1/24 10.0.0.1/24 peer=lrp1-peer])
355
356 AT_CHECK([ovn-nbctl --may-exist lrp-add lr0 lrp1 00:00:00:01:02:03 192.168.1.1/24 172.16.0.1/24 peer=lrp1-peer], [1], [],
357   [ovn-nbctl: lrp1: port already exists with different network
358 ])
359
360 AT_CHECK([ovn-nbctl --may-exist lrp-add lr0 lrp1 00:00:00:01:02:03 10.0.0.1/24 192.168.1.1/24 peer=lrp1-peer])
361
362 OVN_NBCTL_TEST_STOP
363 AT_CLEANUP
364
365 dnl ---------------------------------------------------------------------
366
367 AT_SETUP([ovn-nbctl - logical router port enable and disable])
368 OVN_NBCTL_TEST_START
369
370 AT_CHECK([ovn-nbctl lr-add lr0])
371 AT_CHECK([ovn-nbctl lrp-add lr0 lrp0 00:00:00:01:02:03 192.168.1.1/24])
372 AT_CHECK([ovn-nbctl lrp-get-enabled lrp0], [0], [enabled
373 ])
374
375 AT_CHECK([ovn-nbctl lrp-set-enabled lrp0 disabled])
376 AT_CHECK([ovn-nbctl lrp-get-enabled lrp0], [0], [disabled
377 ])
378
379 AT_CHECK([ovn-nbctl lrp-set-enabled lrp0 enabled])
380 AT_CHECK([ovn-nbctl lrp-get-enabled lrp0], [0], [enabled
381 ])
382
383 AT_CHECK([ovn-nbctl lrp-set-enabled lrp0 xyzzy], [1], [],
384   [ovn-nbctl: xyzzy: state must be "enabled" or "disabled"
385 ])
386
387 OVN_NBCTL_TEST_STOP
388 AT_CLEANUP
389
390 dnl ---------------------------------------------------------------------
391
392 AT_SETUP([ovn-nbctl - routes])
393 OVN_NBCTL_TEST_START
394
395 AT_CHECK([ovn-nbctl lr-add lr0])
396
397 dnl Check IPv4 routes
398 AT_CHECK([ovn-nbctl lr-route-add lr0 0.0.0.0/0 192.168.0.1])
399 AT_CHECK([ovn-nbctl lr-route-add lr0 10.0.1.0/24 11.0.1.1 lp0])
400 AT_CHECK([ovn-nbctl lr-route-add lr0 10.0.0.1/24 11.0.0.2])
401
402 dnl Add overlapping route with 10.0.0.1/24
403 AT_CHECK([ovn-nbctl lr-route-add lr0 10.0.0.111/24 11.0.0.1], [1], [],
404   [ovn-nbctl: duplicate prefix: 10.0.0.0/24
405 ])
406 AT_CHECK([ovn-nbctl --may-exist lr-route-add lr0 10.0.0.111/24 11.0.0.1])
407
408 AT_CHECK([ovn-nbctl lr-route-list lr0], [0], [dnl
409 IPv4 Routes
410               10.0.0.0/24                  11.0.0.1
411               10.0.1.0/24                  11.0.1.1 lp0
412                 0.0.0.0/0               192.168.0.1
413 ])
414
415 AT_CHECK([ovn-nbctl --may-exist lr-route-add lr0 10.0.0.111/24 11.0.0.1 lp1])
416 AT_CHECK([ovn-nbctl lr-route-list lr0], [0], [dnl
417 IPv4 Routes
418               10.0.0.0/24                  11.0.0.1 lp1
419               10.0.1.0/24                  11.0.1.1 lp0
420                 0.0.0.0/0               192.168.0.1
421 ])
422
423 dnl Delete non-existent prefix
424 AT_CHECK([ovn-nbctl lr-route-del lr0 10.0.2.1/24], [1], [],
425   [ovn-nbctl: no matching prefix: 10.0.2.0/24
426 ])
427 AT_CHECK([ovn-nbctl --if-exists lr-route-del lr0 10.0.2.1/24])
428
429 AT_CHECK([ovn-nbctl lr-route-del lr0 10.0.1.1/24])
430
431 AT_CHECK([ovn-nbctl lr-route-list lr0], [0], [dnl
432 IPv4 Routes
433               10.0.0.0/24                  11.0.0.1 lp1
434                 0.0.0.0/0               192.168.0.1
435 ])
436
437 AT_CHECK([ovn-nbctl lr-route-del lr0])
438 AT_CHECK([ovn-nbctl lr-route-list lr0], [0], [dnl
439 ])
440
441 dnl Check IPv6 routes
442 AT_CHECK([ovn-nbctl lr-route-add lr0 0:0:0:0:0:0:0:0/0 2001:0db8:0:f101::1])
443 AT_CHECK([ovn-nbctl lr-route-add lr0 2001:0db8:0::/64 2001:0db8:0:f102::1 lp0])
444 AT_CHECK([ovn-nbctl lr-route-add lr0 2001:0db8:1::/64 2001:0db8:0:f103::1])
445
446 AT_CHECK([ovn-nbctl lr-route-list lr0], [0], [dnl
447 IPv6 Routes
448             2001:db8::/64        2001:db8:0:f102::1 lp0
449           2001:db8:1::/64        2001:db8:0:f103::1
450                      ::/0        2001:db8:0:f101::1
451 ])
452
453 AT_CHECK([ovn-nbctl lr-route-del lr0 2001:0db8:0::/64])
454
455 AT_CHECK([ovn-nbctl lr-route-list lr0], [0], [dnl
456 IPv6 Routes
457           2001:db8:1::/64        2001:db8:0:f103::1
458                      ::/0        2001:db8:0:f101::1
459 ])
460
461 AT_CHECK([ovn-nbctl lr-route-del lr0])
462 AT_CHECK([ovn-nbctl lr-route-list lr0], [0], [dnl
463 ])
464
465 dnl Check IPv4 and IPv6 routes
466 AT_CHECK([ovn-nbctl lr-route-add lr0 0.0.0.0/0 192.168.0.1])
467 AT_CHECK([ovn-nbctl lr-route-add lr0 10.0.1.1/24 11.0.1.1 lp0])
468 AT_CHECK([ovn-nbctl lr-route-add lr0 10.0.0.1/24 11.0.0.1])
469 AT_CHECK([ovn-nbctl lr-route-add lr0 0:0:0:0:0:0:0:0/0 2001:0db8:0:f101::1])
470 AT_CHECK([ovn-nbctl lr-route-add lr0 2001:0db8:0::/64 2001:0db8:0:f102::1 lp0])
471 AT_CHECK([ovn-nbctl lr-route-add lr0 2001:0db8:1::/64 2001:0db8:0:f103::1])
472
473 AT_CHECK([ovn-nbctl lr-route-list lr0], [0], [dnl
474 IPv4 Routes
475               10.0.0.0/24                  11.0.0.1
476               10.0.1.0/24                  11.0.1.1 lp0
477                 0.0.0.0/0               192.168.0.1
478
479 IPv6 Routes
480             2001:db8::/64        2001:db8:0:f102::1 lp0
481           2001:db8:1::/64        2001:db8:0:f103::1
482                      ::/0        2001:db8:0:f101::1
483 ])
484
485 OVN_NBCTL_TEST_STOP
486 AT_CLEANUP