summaryrefslogtreecommitdiff
path: root/tests/ovn-nbctl.at
blob: 8e858018731b917bea3014de9f7415b958670cd1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
AT_BANNER([ovn-nbctl])

# OVN_NBCTL_TEST_START
m4_define([OVN_NBCTL_TEST_START],
  [dnl Create ovn-nb database.
   AT_KEYWORDS([ovn])
   AT_CHECK([ovsdb-tool create ovn-nb.db $abs_top_srcdir/ovn/ovn-nb.ovsschema])

   dnl Start ovsdb-server.
   AT_CHECK([ovsdb-server --detach --no-chdir --pidfile --log-file --remote=punix:$OVS_RUNDIR/ovnnb_db.sock ovn-nb.db], [0], [], [stderr])
   on_exit "kill `cat ovsdb-server.pid`"
   AT_CHECK([[sed < stderr '
/vlog|INFO|opened log file/d
/ovsdb_server|INFO|ovsdb-server (Open vSwitch)/d']])
   AT_CAPTURE_FILE([ovsdb-server.log])
])

# OVN_NBCTL_TEST_STOP
m4_define([OVN_NBCTL_TEST_STOP],
  [# removes all 'Broken pipe' warning logs from ovsdb-server.log.  this is in
   # that *ctl command (e.g. ovn-nbctl) exits right after committing the change
   # to database.  however, in reaction, some daemon (e.g. ovn-controller-vtep)
   # may immediately update the database.  this later update may cause database
   # sending update back to *ctl command if *ctl has not proceeded to exit yet.
   # and if *ctl command exits before database calling send, the send from
   # database will fail with 'Broken pipe' error. Also removes all "connection
   # reset" warning logs by a similar rationale (either EPIPE or ECONNRESET can
   # be returned on a send depending on whether the peer had unconsumed data when
   # it closed the socket).
   AT_CHECK([check_logs "$1
/reset by peer/d
/Broken pipe/d"])
   OVS_APP_EXIT_AND_WAIT([ovsdb-server])])


AT_SETUP([ovn-nbctl - basic switch commands])
OVN_NBCTL_TEST_START

AT_CHECK([ovn-nbctl ls-add ls0])
AT_CHECK([ovn-nbctl ls-list | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl
<0> (ls0)
])

AT_CHECK([ovn-nbctl ls-add ls1])
AT_CHECK([ovn-nbctl ls-list | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl
<0> (ls0)
<1> (ls1)
])

AT_CHECK([ovn-nbctl ls-del ls0])
AT_CHECK([ovn-nbctl ls-list | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl
<0> (ls1)
])

AT_CHECK([ovn-nbctl show ls0])
AT_CHECK([ovn-nbctl ls-add ls0])
AT_CHECK([ovn-nbctl show ls0 | ${PERL} $srcdir/uuidfilt.pl], [0],
  [    switch <0> (ls0)
])
AT_CHECK([ovn-nbctl ls-add ls0], [1], [],
  [ovn-nbctl: ls0: a switch with this name already exists
])
AT_CHECK([ovn-nbctl --may-exist ls-add ls0])
AT_CHECK([ovn-nbctl show ls0 | ${PERL} $srcdir/uuidfilt.pl], [0],
  [    switch <0> (ls0)
])
AT_CHECK([ovn-nbctl --add-duplicate ls-add ls0])
AT_CHECK([ovn-nbctl --may-exist --add-duplicate ls-add ls0], [1], [],
  [ovn-nbctl: --may-exist and --add-duplicate may not be used together
])
AT_CHECK([ovn-nbctl ls-del ls0], [1], [],
  [ovn-nbctl: Multiple logical switches named 'ls0'.  Use a UUID.
])

AT_CHECK([ovn-nbctl ls-del ls2], [1], [],
  [ovn-nbctl: ls2: switch name not found
])
AT_CHECK([ovn-nbctl --if-exists ls-del ls2])

AT_CHECK([ovn-nbctl ls-add])
AT_CHECK([ovn-nbctl ls-add])
AT_CHECK([ovn-nbctl --add-duplicate ls-add], [1], [],
  [ovn-nbctl: --add-duplicate requires specifying a name
])
AT_CHECK([ovn-nbctl --may-exist ls-add], [1], [],
  [ovn-nbctl: --may-exist requires specifying a name
])

OVN_NBCTL_TEST_STOP
AT_CLEANUP

dnl ---------------------------------------------------------------------

AT_SETUP([ovn-nbctl - basic logical switch port commands])
OVN_NBCTL_TEST_START

AT_CHECK([ovn-nbctl ls-add ls0])
AT_CHECK([ovn-nbctl lsp-add ls0 lp0])
AT_CHECK([ovn-nbctl lsp-add ls0 lp0], [1], [],
  [ovn-nbctl: lp0: a port with this name already exists
])
AT_CHECK([ovn-nbctl --may-exist lsp-add ls0 lp0])
AT_CHECK([ovn-nbctl lsp-list ls0 | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl
<0> (lp0)
])

AT_CHECK([ovn-nbctl lsp-add ls0 lp1])
AT_CHECK([ovn-nbctl lsp-list ls0 | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl
<0> (lp0)
<1> (lp1)
])

AT_CHECK([ovn-nbctl ls-add ls1])
AT_CHECK([ovn-nbctl lsp-add ls0 lp1], [1], [],
  [ovn-nbctl: lp1: a port with this name already exists
])
AT_CHECK([ovn-nbctl --may-exist lsp-add ls1 lp1], [1], [],
  [ovn-nbctl: lp1: port already exists but in switch ls0
])
AT_CHECK([ovn-nbctl --may-exist lsp-add ls0 lp1 lp0 5], [1], [],
  [ovn-nbctl: lp1: port already exists but has no parent
])

AT_CHECK([ovn-nbctl lsp-del lp1])
AT_CHECK([ovn-nbctl lsp-list ls0 | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl
<0> (lp0)
])

AT_CHECK([ovn-nbctl lsp-add ls0 lp2 lp3 5])
AT_CHECK([ovn-nbctl --may-exist lsp-add ls0 lp2 lp4 5], [1], [],
  [ovn-nbctl: lp2: port already exists with different parent lp3
])
AT_CHECK([ovn-nbctl --may-exist lsp-add ls0 lp2 lp3 10], [1], [],
  [ovn-nbctl: lp2: port already exists with different tag 5
])
AT_CHECK([ovn-nbctl clear Logical_Switch_Port lp2 tag])
AT_CHECK([ovn-nbctl --may-exist lsp-add ls0 lp2 lp3 5], [1], [],
  [ovn-nbctl: lp2: port already exists but has no tag
])

OVN_NBCTL_TEST_STOP
AT_CLEANUP

dnl ---------------------------------------------------------------------

AT_SETUP([ovn-nbctl - lport addresses])
OVN_NBCTL_TEST_START

AT_CHECK([ovn-nbctl ls-add ls0])
AT_CHECK([ovn-nbctl lsp-add ls0 lp0])
AT_CHECK([ovn-nbctl lsp-get-addresses lp0], [0], [dnl
])

AT_CHECK([ovn-nbctl lsp-set-addresses lp0 00:11:22:33:44:55 unknown])
AT_CHECK([ovn-nbctl lsp-get-addresses lp0], [0], [dnl
00:11:22:33:44:55
unknown
])

AT_CHECK([ovn-nbctl lsp-set-addresses lp0])
AT_CHECK([ovn-nbctl lsp-get-addresses lp0], [0], [dnl
])

OVN_NBCTL_TEST_STOP
AT_CLEANUP

dnl ---------------------------------------------------------------------

AT_SETUP([ovn-nbctl - port security])
OVN_NBCTL_TEST_START

AT_CHECK([ovn-nbctl ls-add ls0])
AT_CHECK([ovn-nbctl lsp-add ls0 lp0])
AT_CHECK([ovn-nbctl lsp-get-addresses lp0], [0], [dnl
])

AT_CHECK([ovn-nbctl lsp-set-port-security lp0 aa:bb:cc:dd:ee:ff 00:11:22:33:44:55])
AT_CHECK([ovn-nbctl lsp-get-port-security lp0], [0], [dnl
00:11:22:33:44:55
aa:bb:cc:dd:ee:ff
])

AT_CHECK([ovn-nbctl lsp-set-port-security lp0])
AT_CHECK([ovn-nbctl lsp-get-port-security lp0], [0], [dnl
])

OVN_NBCTL_TEST_STOP
AT_CLEANUP

dnl ---------------------------------------------------------------------

AT_SETUP([ovn-nbctl - ACLs])
OVN_NBCTL_TEST_START

AT_CHECK([ovn-nbctl ls-add ls0])
AT_CHECK([ovn-nbctl --log acl-add ls0 from-lport 600 udp drop])
AT_CHECK([ovn-nbctl --log acl-add ls0 to-lport 500 udp drop])
AT_CHECK([ovn-nbctl acl-add ls0 from-lport 400 tcp drop])
AT_CHECK([ovn-nbctl acl-add ls0 to-lport 300 tcp drop])
AT_CHECK([ovn-nbctl acl-add ls0 from-lport 200 ip drop])
AT_CHECK([ovn-nbctl acl-add ls0 to-lport 100 ip drop])

AT_CHECK([ovn-nbctl acl-list ls0], [0], [dnl
from-lport   600 (udp) drop log
from-lport   400 (tcp) drop
from-lport   200 (ip) drop
  to-lport   500 (udp) drop log
  to-lport   300 (tcp) drop
  to-lport   100 (ip) drop
])

dnl Delete in one direction.
AT_CHECK([ovn-nbctl acl-del ls0 to-lport])
AT_CHECK([ovn-nbctl acl-list ls0], [0], [dnl
from-lport   600 (udp) drop log
from-lport   400 (tcp) drop
from-lport   200 (ip) drop
])

dnl Delete all ACLs.
AT_CHECK([ovn-nbctl acl-del ls0])
AT_CHECK([ovn-nbctl acl-list ls0], [0], [dnl
])

AT_CHECK([ovn-nbctl acl-add ls0 from-lport 600 udp drop])
AT_CHECK([ovn-nbctl acl-add ls0 from-lport 400 tcp drop])
AT_CHECK([ovn-nbctl acl-add ls0 from-lport 200 ip drop])

dnl Delete a single flow.
AT_CHECK([ovn-nbctl acl-del ls0 from-lport 400 tcp])
AT_CHECK([ovn-nbctl acl-list ls0], [0], [dnl
from-lport   600 (udp) drop
from-lport   200 (ip) drop
])

OVN_NBCTL_TEST_STOP
AT_CLEANUP

dnl ---------------------------------------------------------------------

AT_SETUP([ovn-nbctl - basic logical router commands])
OVN_NBCTL_TEST_START

AT_CHECK([ovn-nbctl lr-add lr0])
AT_CHECK([ovn-nbctl lr-list | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl
<0> (lr0)
])

AT_CHECK([ovn-nbctl lr-add lr1])
AT_CHECK([ovn-nbctl lr-list | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl
<0> (lr0)
<1> (lr1)
])

AT_CHECK([ovn-nbctl lr-del lr0])
AT_CHECK([ovn-nbctl lr-list | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl
<0> (lr1)
])

AT_CHECK([ovn-nbctl show lr0])
AT_CHECK([ovn-nbctl lr-add lr0])
AT_CHECK([ovn-nbctl show lr0 | ${PERL} $srcdir/uuidfilt.pl], [0],
  [    router <0> (lr0)
])
AT_CHECK([ovn-nbctl lr-add lr0], [1], [],
  [ovn-nbctl: lr0: a router with this name already exists
])
AT_CHECK([ovn-nbctl --may-exist lr-add lr0])
AT_CHECK([ovn-nbctl show lr0 | ${PERL} $srcdir/uuidfilt.pl], [0],
  [    router <0> (lr0)
])
AT_CHECK([ovn-nbctl --add-duplicate lr-add lr0])
AT_CHECK([ovn-nbctl --may-exist --add-duplicate lr-add lr0], [1], [],
  [ovn-nbctl: --may-exist and --add-duplicate may not be used together
])
AT_CHECK([ovn-nbctl lr-del lr0], [1], [],
  [ovn-nbctl: Multiple logical routers named 'lr0'.  Use a UUID.
])

AT_CHECK([ovn-nbctl lr-del lr2], [1], [],
  [ovn-nbctl: lr2: router name not found
])
AT_CHECK([ovn-nbctl --if-exists lr-del lr2])

AT_CHECK([ovn-nbctl lr-add])
AT_CHECK([ovn-nbctl lr-add])
AT_CHECK([ovn-nbctl --add-duplicate lr-add], [1], [],
  [ovn-nbctl: --add-duplicate requires specifying a name
])
AT_CHECK([ovn-nbctl --may-exist lr-add], [1], [],
  [ovn-nbctl: --may-exist requires specifying a name
])

OVN_NBCTL_TEST_STOP
AT_CLEANUP

dnl ---------------------------------------------------------------------

AT_SETUP([ovn-nbctl - basic logical router port commands])
OVN_NBCTL_TEST_START

AT_CHECK([ovn-nbctl lr-add lr0])
AT_CHECK([ovn-nbctl lrp-add lr0 lrp0 00:00:00:01:02:03 192.168.1.1/24])

AT_CHECK([ovn-nbctl show lr0 | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl
    router <0> (lr0)
        port lrp0
            mac: "00:00:00:01:02:03"
            networks: [["192.168.1.1/24"]]
])

AT_CHECK([ovn-nbctl lrp-add lr0 lrp0 00:00:00:01:02:03 192.168.1.1/24], [1], [],
  [ovn-nbctl: lrp0: a port with this name already exists
])
AT_CHECK([ovn-nbctl --may-exist lrp-add lr0 lrp0 00:00:00:01:02:03 192.168.1.1/24])
AT_CHECK([ovn-nbctl lrp-list lr0 | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl
<0> (lrp0)
])

AT_CHECK([ovn-nbctl lrp-add lr0 lrp1 00:00:00:01:02:03 192.168.1.1/24 peer=lrp1-peer])
AT_CHECK([ovn-nbctl lrp-list lr0 | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl
<0> (lrp0)
<1> (lrp1)
])

AT_CHECK([ovn-nbctl lr-add lr1])
AT_CHECK([ovn-nbctl lrp-add lr0 lrp1 00:00:00:01:02:03 192.168.1.1/24], [1], [],
  [ovn-nbctl: lrp1: a port with this name already exists
])

AT_CHECK([ovn-nbctl --may-exist lrp-add lr1 lrp1 00:00:00:01:02:03 192.168.1.1/24], [1], [],
  [ovn-nbctl: lrp1: port already exists but in router lr0
])

AT_CHECK([ovn-nbctl --may-exist lrp-add lr0 lrp1 00:00:00:04:05:06 192.168.1.1/24], [1], [],
  [ovn-nbctl: lrp1: port already exists with mac 00:00:00:01:02:03
])

AT_CHECK([ovn-nbctl --may-exist lrp-add lr0 lrp1 00:00:00:01:02:03 192.168.1.1/24], [1], [],
  [ovn-nbctl: lrp1: port already exists with mismatching peer
])

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], [],
  [ovn-nbctl: lrp1: port already exists with different network
])

AT_CHECK([ovn-nbctl --may-exist lrp-add lr0 lrp1 00:00:00:01:02:03 192.168.1.1/24 peer=lrp1-peer])

AT_CHECK([ovn-nbctl lrp-del lrp1])
AT_CHECK([ovn-nbctl lrp-list lr0 | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl
<0> (lrp0)
])

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])

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], [],
  [ovn-nbctl: lrp1: port already exists with different network
])

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])

OVN_NBCTL_TEST_STOP
AT_CLEANUP

dnl ---------------------------------------------------------------------

AT_SETUP([ovn-nbctl - logical router port enable and disable])
OVN_NBCTL_TEST_START

AT_CHECK([ovn-nbctl lr-add lr0])
AT_CHECK([ovn-nbctl lrp-add lr0 lrp0 00:00:00:01:02:03 192.168.1.1/24])
AT_CHECK([ovn-nbctl lrp-get-enabled lrp0], [0], [enabled
])

AT_CHECK([ovn-nbctl lrp-set-enabled lrp0 disabled])
AT_CHECK([ovn-nbctl lrp-get-enabled lrp0], [0], [disabled
])

AT_CHECK([ovn-nbctl lrp-set-enabled lrp0 enabled])
AT_CHECK([ovn-nbctl lrp-get-enabled lrp0], [0], [enabled
])

AT_CHECK([ovn-nbctl lrp-set-enabled lrp0 xyzzy], [1], [],
  [ovn-nbctl: xyzzy: state must be "enabled" or "disabled"
])

OVN_NBCTL_TEST_STOP
AT_CLEANUP

dnl ---------------------------------------------------------------------

AT_SETUP([ovn-nbctl - routes])
OVN_NBCTL_TEST_START

AT_CHECK([ovn-nbctl lr-add lr0])

dnl Check IPv4 routes
AT_CHECK([ovn-nbctl lr-route-add lr0 0.0.0.0/0 192.168.0.1])
AT_CHECK([ovn-nbctl lr-route-add lr0 10.0.1.0/24 11.0.1.1 lp0])
AT_CHECK([ovn-nbctl lr-route-add lr0 10.0.0.1/24 11.0.0.2])

dnl Add overlapping route with 10.0.0.1/24
AT_CHECK([ovn-nbctl lr-route-add lr0 10.0.0.111/24 11.0.0.1], [1], [],
  [ovn-nbctl: duplicate prefix: 10.0.0.0/24
])
AT_CHECK([ovn-nbctl --may-exist lr-route-add lr0 10.0.0.111/24 11.0.0.1])

AT_CHECK([ovn-nbctl lr-route-list lr0], [0], [dnl
IPv4 Routes
              10.0.0.0/24                  11.0.0.1
              10.0.1.0/24                  11.0.1.1 lp0
                0.0.0.0/0               192.168.0.1
])

AT_CHECK([ovn-nbctl --may-exist lr-route-add lr0 10.0.0.111/24 11.0.0.1 lp1])
AT_CHECK([ovn-nbctl lr-route-list lr0], [0], [dnl
IPv4 Routes
              10.0.0.0/24                  11.0.0.1 lp1
              10.0.1.0/24                  11.0.1.1 lp0
                0.0.0.0/0               192.168.0.1
])

dnl Delete non-existent prefix
AT_CHECK([ovn-nbctl lr-route-del lr0 10.0.2.1/24], [1], [],
  [ovn-nbctl: no matching prefix: 10.0.2.0/24
])
AT_CHECK([ovn-nbctl --if-exists lr-route-del lr0 10.0.2.1/24])

AT_CHECK([ovn-nbctl lr-route-del lr0 10.0.1.1/24])

AT_CHECK([ovn-nbctl lr-route-list lr0], [0], [dnl
IPv4 Routes
              10.0.0.0/24                  11.0.0.1 lp1
                0.0.0.0/0               192.168.0.1
])

AT_CHECK([ovn-nbctl lr-route-del lr0])
AT_CHECK([ovn-nbctl lr-route-list lr0], [0], [dnl
])

dnl Check IPv6 routes
AT_CHECK([ovn-nbctl lr-route-add lr0 0:0:0:0:0:0:0:0/0 2001:0db8:0:f101::1])
AT_CHECK([ovn-nbctl lr-route-add lr0 2001:0db8:0::/64 2001:0db8:0:f102::1 lp0])
AT_CHECK([ovn-nbctl lr-route-add lr0 2001:0db8:1::/64 2001:0db8:0:f103::1])

AT_CHECK([ovn-nbctl lr-route-list lr0], [0], [dnl
IPv6 Routes
            2001:db8::/64        2001:db8:0:f102::1 lp0
          2001:db8:1::/64        2001:db8:0:f103::1
                     ::/0        2001:db8:0:f101::1
])

AT_CHECK([ovn-nbctl lr-route-del lr0 2001:0db8:0::/64])

AT_CHECK([ovn-nbctl lr-route-list lr0], [0], [dnl
IPv6 Routes
          2001:db8:1::/64        2001:db8:0:f103::1
                     ::/0        2001:db8:0:f101::1
])

AT_CHECK([ovn-nbctl lr-route-del lr0])
AT_CHECK([ovn-nbctl lr-route-list lr0], [0], [dnl
])

dnl Check IPv4 and IPv6 routes
AT_CHECK([ovn-nbctl lr-route-add lr0 0.0.0.0/0 192.168.0.1])
AT_CHECK([ovn-nbctl lr-route-add lr0 10.0.1.1/24 11.0.1.1 lp0])
AT_CHECK([ovn-nbctl lr-route-add lr0 10.0.0.1/24 11.0.0.1])
AT_CHECK([ovn-nbctl lr-route-add lr0 0:0:0:0:0:0:0:0/0 2001:0db8:0:f101::1])
AT_CHECK([ovn-nbctl lr-route-add lr0 2001:0db8:0::/64 2001:0db8:0:f102::1 lp0])
AT_CHECK([ovn-nbctl lr-route-add lr0 2001:0db8:1::/64 2001:0db8:0:f103::1])

AT_CHECK([ovn-nbctl lr-route-list lr0], [0], [dnl
IPv4 Routes
              10.0.0.0/24                  11.0.0.1
              10.0.1.0/24                  11.0.1.1 lp0
                0.0.0.0/0               192.168.0.1

IPv6 Routes
            2001:db8::/64        2001:db8:0:f102::1 lp0
          2001:db8:1::/64        2001:db8:0:f103::1
                     ::/0        2001:db8:0:f101::1
])

OVN_NBCTL_TEST_STOP
AT_CLEANUP