Add advertise from static discard routes via ovn-ic
for work similar to BGP null route.

Signed-off-by: Lucas Vargas Dias <[email protected]>
---
 ic/ovn-ic.c     |  3 ++-
 tests/ovn-ic.at | 56 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 58 insertions(+), 1 deletion(-)

diff --git a/ic/ovn-ic.c b/ic/ovn-ic.c
index 13e5534e7..c5ee6707f 100644
--- a/ic/ovn-ic.c
+++ b/ic/ovn-ic.c
@@ -1018,7 +1018,8 @@ parse_route(const char *s_prefix, const char *s_nexthop,
     }
 
     unsigned int nlen;
-    if (!ip46_parse_cidr(s_nexthop, nexthop, &nlen)) {
+    if (strcmp(s_nexthop, "discard") != 0 &&
+        !ip46_parse_cidr(s_nexthop, nexthop, &nlen)) {
         return false;
     }
 
diff --git a/tests/ovn-ic.at b/tests/ovn-ic.at
index 2d92f3adf..c461c368e 100644
--- a/tests/ovn-ic.at
+++ b/tests/ovn-ic.at
@@ -4251,3 +4251,59 @@ ovn_as az1 check ovn-nbctl remove logical_router_port 
lrp-lr11-ts1 options ic-ro
 OVN_CLEANUP_IC([az1], [az2])
 AT_CLEANUP
 ])
+
+OVN_FOR_EACH_NORTHD([
+AT_SETUP([ovn-ic -- Advertise discard static routes])
+
+ovn_init_ic_db
+
+for i in 1 2; do
+    ovn_start az$i
+    ovn_as az$i
+
+    # Enable route learning at AZ level
+    check ovn-nbctl set nb_global . options:ic-route-learn=true
+    # Enable route advertising at AZ level
+    check ovn-nbctl set nb_global . options:ic-route-adv=true
+done
+
+# Create new transit switches and LRs. Test topology is next:
+#
+#                       / transit switch (ts11) \
+# logical router (lr11) -                       - logical router (lr12)
+#                       \ transit switch (ts12) /
+#
+
+# Create lr11, lr12 and ts11 and connect them
+for i in 1 2; do
+    ovn_as az$i
+
+    lr=lr1$i
+    check ovn-nbctl lr-add $lr
+
+    for j in 1; do
+        ts=ts1$j
+        check ovn-ic-nbctl --wait=sb --may-exist ts-add $ts
+
+        lrp=lrp-$lr-$ts
+        lsp=lsp-$ts-$lr
+        # Create LRP and connect to TS
+        check ovn-nbctl lrp-add $lr $lrp aa:aa:aa:aa:a$j:0$i 169.254.10$j.$i/24
+        check ovn-nbctl lsp-add $ts $lsp \
+                -- lsp-set-addresses $lsp router \
+                -- lsp-set-type $lsp router \
+                -- lsp-set-options $lsp router-port=$lrp
+    done
+done
+
+# Create directly-connected route in lr11
+check ovn_as az2 ovn-nbctl lr-route-add lr12 192.168.0.0/24 discard
+OVS_WAIT_FOR_OUTPUT([ovn_as az1 ovn-nbctl lr-route-list lr11 | grep 192.168 |
+             grep learned | awk '{print $1, $2}' | sort ], [0], [dnl
+192.168.0.0/24 169.254.101.2
+])
+
+OVN_CLEANUP_IC([az1], [az2])
+
+AT_CLEANUP
+])
-- 
2.43.0


-- 




_'Esta mensagem é direcionada apenas para os endereços constantes no 
cabeçalho inicial. Se você não está listado nos endereços constantes no 
cabeçalho, pedimos-lhe que desconsidere completamente o conteúdo dessa 
mensagem e cuja cópia, encaminhamento e/ou execução das ações citadas estão 
imediatamente anuladas e proibidas'._


* **'Apesar do Magazine Luiza tomar 
todas as precauções razoáveis para assegurar que nenhum vírus esteja 
presente nesse e-mail, a empresa não poderá aceitar a responsabilidade por 
quaisquer perdas ou danos causados por esse e-mail ou por seus anexos'.*



_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to