[ovs-dev] [PATCH] OVN: add selected mac address to MACAM in update_dynamic_addresses
Mark Michelson
mmichels at redhat.com
Fri Nov 16 20:39:45 UTC 2018
Acked-by: Mark Michelson <mmichels at redhat.com>
On 11/16/2018 06:31 AM, Lorenzo Bianconi wrote:
> Add selected dynamic mac address to MACAM in update_dynamic_addresses
> and not just in in ipam_add_port_addresses/ipam_insert_lsp_addresses
> since the second approach can produce a duplicated L2 address in a
> IPv6-only network if ipv6_prefix is provided after logical port creation.
> The issue can be triggered with the following reproducer:
>
> $ovn-nbctl ls-add sw0
> $ovn-nbctl lsp-add sw0 sw0-port1
> $ovn-nbctl lsp-set-addresses sw0-port1 "dynamic"
> $ovn-nbctl lsp-add sw0 sw0-port2
> $ovn-nbctl lsp-set-addresses sw0-port2 "dynamic"
> $ovs-vsctl add-port br-int p1 -- \
> set Interface p1 external_ids:iface-id=sw0-port1
> $ovs-vsctl add-port br-int p2 -- \
> set Interface p2 external_ids:iface-id=sw0-port2
> [..]
> $ovn-nbctl --wait=sb set Logical-switch sw0 \
> other_config:ipv6_prefix="aef0::"
>
> $ovn-nbctl list logical_switch_port
> _uuid : 1e0e2ed8-20c6-48dc-bfa8-d823e48c9f45
> addresses : [dynamic]
> dhcpv4_options : []
> dhcpv6_options : []
> dynamic_addresses : "0a:00:00:00:00:01 aef0::800:ff:fe00:1"
> enabled : []
> external_ids : {}
> name : "sw0-port1"
> options : {}
> parent_name : []
> port_security : []
> tag : []
> tag_request : []
> type : ""
> up : true
>
> _uuid : cfeab7fb-e20b-41f1-974c-f99e0b5293d7
> addresses : [dynamic]
> dhcpv4_options : []
> dhcpv6_options : []
> dynamic_addresses : "0a:00:00:00:00:01 aef0::800:ff:fe00:1"
> enabled : []
> external_ids : {}
> name : "sw0-port2"
> options : {}
> parent_name : []
> port_security : []
> tag : []
> tag_request : []
> type : ""
> up : true
>
> Fixes: c814545b43ac ("OVN: configure L2 address according to the used IP
> address")
>
> Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi at redhat.com>
> ---
> ovn/northd/ovn-northd.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/ovn/northd/ovn-northd.c b/ovn/northd/ovn-northd.c
> index 58bef7de5..4580cd705 100644
> --- a/ovn/northd/ovn-northd.c
> +++ b/ovn/northd/ovn-northd.c
> @@ -1341,6 +1341,8 @@ update_dynamic_addresses(struct dynamic_address_update *update)
>
> struct ds new_addr = DS_EMPTY_INITIALIZER;
> ds_put_format(&new_addr, ETH_ADDR_FMT, ETH_ADDR_ARGS(mac));
> + ipam_insert_mac(&mac, true);
> +
> if (ip4) {
> ipam_insert_ip(update->od, ntohl(ip4));
> ds_put_format(&new_addr, " "IP_FMT, IP_ARGS(ip4));
>
More information about the dev
mailing list