]> git.proxmox.com Git - mirror_ovs.git/commit
OVN: Add port addresses to IPAM after all ports are joined.
authorMark Michelson <mmichels@redhat.com>
Wed, 6 Mar 2019 14:33:04 +0000 (09:33 -0500)
committerBen Pfaff <blp@ovn.org>
Wed, 6 Mar 2019 22:28:05 +0000 (14:28 -0800)
commitaddc7953c9a1d486667e3b71c6648c0de77550b4
treefcf5a39368ca37c79f7986e2995d2c4cc81ea189
parentc225ce2202d983be54e13b764d475b37cd129aa9
OVN: Add port addresses to IPAM after all ports are joined.

Joining ports involves setting the peer field on ovn_ports. If a switch
port is visited, and it is connected to a router port, then the switch
port's peer is set to the router port and the router port's peer is set
to the switch port.

A router port's addresses are added to IPAM if it is peered with a
switch that has dynamic addressing enabled.

When visiting ports, if a router port is visited before its connected
switch port, then the router port's peer is not set yet. Therefore the
router's port addresses cannot be added to IPAM. The result is that
duplicate addresses can be assigned by a logical switch.

The fix for this is to wait until all ports have been joined and then
add port addresses to IPAM. This way, we guarantee that all peer
assignments have been set, and no duplicate IP addresses may be assigned
by a switch.

Reported-by: James Page <james.page@canonical.com>
Signed-off-by: Mark Michelson <mmichels@redhat.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
ovn/northd/ovn-northd.c