[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