Avoid creating logical flows for Link-Local reserved multicast addresses if advertised in a MLD reports since this interferes with Slaac IPv6 address resolution implemented in OVN.
Reported-at: https://bugzilla.redhat.com/show_bug.cgi?id=2154930 Signed-off-by: Lorenzo Bianconi <[email protected]> --- lib/ovn-util.h | 13 +++++++++++++ northd/northd.c | 6 ++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/lib/ovn-util.h b/lib/ovn-util.h index cd19919cb..46f57ad47 100644 --- a/lib/ovn-util.h +++ b/lib/ovn-util.h @@ -70,6 +70,19 @@ struct lport_addresses { struct ipv6_netaddr *ipv6_addrs; }; +static inline bool ipv6_is_all_router(const struct in6_addr *addr) { + return ipv6_addr_equals(addr, &in6addr_all_routers); +}; + +static const struct in6_addr in6addr_all_site_routers = {{{ + 0xff,0x05,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02 +}}}; + +static inline bool ipv6_is_all_site_router(const struct in6_addr *addr) { + return ipv6_addr_equals(addr, &in6addr_all_site_routers); +}; + bool is_dynamic_lsp_address(const char *address); bool extract_addresses(const char *address, struct lport_addresses *, int *ofs); diff --git a/northd/northd.c b/northd/northd.c index 0944a7b56..50d74f932 100644 --- a/northd/northd.c +++ b/northd/northd.c @@ -9020,9 +9020,11 @@ build_lswitch_ip_mcast_igmp_mld(struct ovn_igmp_group *igmp_group, igmp_group->mcgroup.name); } else { /* RFC 4291, section 2.7.1: Skip groups that correspond to all - * hosts. + * hosts, all link-local routers and all site routers. */ - if (ipv6_is_all_hosts(&igmp_group->address)) { + if (ipv6_is_all_hosts(&igmp_group->address) || + ipv6_is_all_router(&igmp_group->address) || + ipv6_is_all_site_router(&igmp_group->address)) { return; } if (atomic_compare_exchange_strong( -- 2.39.1 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
