ovs_router_rules_flush(false) removes all non-user rules, including
the standard routing rules (local, main, default). These standard
rules are needed for proper route lookup even when system routing
is disabled.

Re-add the standard rules after a non-full flush by calling
init_standard_rules() within ovs_router_rules_flush().

Fixes: dc14e92bcc25 ("route-table: Introduce multi-table route lookup.")
Signed-off-by: Matteo Perin <[email protected]>
---
 lib/ovs-router.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/lib/ovs-router.c b/lib/ovs-router.c
index 9542da6c2..d0cf0f6a9 100644
--- a/lib/ovs-router.c
+++ b/lib/ovs-router.c
@@ -1263,6 +1263,9 @@ ovs_router_rules_flush(bool flush_all)
 {
     ovs_mutex_lock(&mutex);
     ovs_router_rules_flush_protected(flush_all);
+    if (!flush_all) {
+        init_standard_rules();
+    }
     ovs_mutex_unlock(&mutex);
 }
 
-- 
2.43.0

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

Reply via email to