dpif-linux: Close channel Netlink sockets when a port number gets recycled.
authorBen Pfaff <blp@nicira.com>
Thu, 2 May 2013 00:08:20 +0000 (17:08 -0700)
committerBen Pfaff <blp@nicira.com>
Thu, 2 May 2013 17:13:09 +0000 (10:13 -0700)
commit8ac6e0e15dafd1b41001fdc52ea00cc42906d5a9
tree7c4e88857ab022eeb94da18b94624a0c56f24aa7
parentd4c5b6423aa063eaf296ec8cf7d1a50197863cec
dpif-linux: Close channel Netlink sockets when a port number gets recycled.

When ovs-vswitchd deletes a port with dpif_linux_port_del(), that function
uses del_channel() to delete the corresponding channel, including closing
its Netlink socket fd.  However, if the vport gets removed by some other
process (e.g. "ip link delete" for veths) then this function never gets
called and thus the channel never gets deleted.

This commit partially fixes the problem.  Now, if a port number gets
reused, add_channel() closes the old Netlink socket assigned to that port
before it installs the new one.

Bug #16784.
Reported-by: Paul Ingram <paul@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
lib/dpif-linux.c