]> git.proxmox.com Git - ovs.git/commitdiff
ofproto-dpif: Only delete tunnel backer ports along with the dpif.
authorBen Pfaff <blp@ovn.org>
Fri, 28 Feb 2020 17:15:32 +0000 (09:15 -0800)
committerBen Pfaff <blp@ovn.org>
Sat, 29 Feb 2020 19:01:57 +0000 (11:01 -0800)
The admin can choose whether or not to delete flows from datapaths when
they stop ovs-vswitchd.  The goal of not deleting flows it to allow
existing traffic to continue being forwarded until ovs-vswitchd is
restarted.  Until now, regardless of this choice, ovs-vswitchd has
always deleted tunnel ports from the datapath.  When flows are not
deleted, this nevertheless prevents tunnel traffic from being forwarded.

With this patch, ovs-vswitchd no longer deletes tunnel ports in the
case where it does not delete flows, allowing tunnel traffic to continue
being forwarded.

Reported-by: Antonin Bas <abas@vmware.com>
Tested-by: Antonin Bas <abas@vmware.com>
Tested-by: txfh2007 <txfh2007@aliyun.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
ofproto/ofproto-dpif.c

index 0222ec82f00a037cde099939b39d786b472d3848..d56cece95e909423932fe43cd38e5b4c3c5dcfd0 100644 (file)
@@ -698,8 +698,10 @@ close_dpif_backer(struct dpif_backer *backer, bool del)
 
     udpif_destroy(backer->udpif);
 
-    SIMAP_FOR_EACH (node, &backer->tnl_backers) {
-        dpif_port_del(backer->dpif, u32_to_odp(node->data), false);
+    if (del) {
+        SIMAP_FOR_EACH (node, &backer->tnl_backers) {
+            dpif_port_del(backer->dpif, u32_to_odp(node->data), false);
+        }
     }
     simap_destroy(&backer->tnl_backers);
     ovs_rwlock_destroy(&backer->odp_to_ofport_lock);