summaryrefslogtreecommitdiff
path: root/ofproto/ofproto-dpif.c
diff options
context:
space:
mode:
authorBen Pfaff <blp@ovn.org>2020-02-28 09:15:32 -0800
committerBen Pfaff <blp@ovn.org>2020-02-29 11:01:57 -0800
commit7cc77b301f80a63cd4893198d82be0eef303f731 (patch)
tree87ddeaed6d9f20b3b0b4fcf48a53f63797f717ba /ofproto/ofproto-dpif.c
parentbae24b4ecf4a8d85aa09245fea283a04134165fc (diff)
downloadopenvswitch-7cc77b301f80a63cd4893198d82be0eef303f731.tar.gz
ofproto-dpif: Only delete tunnel backer ports along with the dpif.
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>
Diffstat (limited to 'ofproto/ofproto-dpif.c')
-rw-r--r--ofproto/ofproto-dpif.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c
index 0222ec82f..d56cece95 100644
--- a/ofproto/ofproto-dpif.c
+++ b/ofproto/ofproto-dpif.c
@@ -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);