]> git.proxmox.com Git - mirror_ovs.git/commitdiff
route-table: flush addresses list when route table is reset
authorThadeu Lima de Souza Cascardo <cascardo@redhat.com>
Thu, 28 Jul 2016 16:14:58 +0000 (13:14 -0300)
committerBen Pfaff <blp@ovn.org>
Thu, 28 Jul 2016 16:41:06 +0000 (09:41 -0700)
When the route table is reset, the addresses list may be out of date, as we race
for the many netlink socket notifications.

A quick fix for this is flushing the addresses list, before dumping the routes
and gathering source addresses for them.

That way, instead of using invalid source addresses or preventing an entry to be
added because of missing source addresses, repeated tests showed the correct
entry is always added.

As route-table.c is only built for Linux, we don't need to be concerned that
Windows does not have netdev_get_addrs_list_flush, since it uses
route-table-stub.c instead.

Fixes: a8704b502785 ("tunneling: Handle multiple ip address for given device.")
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@redhat.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
lib/route-table.c

index 58e7f62c1c970218fe9e018f2c3006fba2dcfe94..0457de3270a1590f7ed6a26e96d1b69963433b30 100644 (file)
@@ -25,6 +25,7 @@
 #include <net/if.h>
 
 #include "hash.h"
+#include "netdev.h"
 #include "netlink.h"
 #include "netlink-notifier.h"
 #include "netlink-socket.h"
@@ -151,6 +152,7 @@ route_table_reset(void)
     struct ofpbuf request, reply, buf;
 
     route_map_clear();
+    netdev_get_addrs_list_flush();
     route_table_valid = true;
     rt_change_seq++;