Commit 9074c07a authored by Konrad Derda's avatar Konrad Derda Committed by Carles Cufi
Browse files

net: ipv6: mld: use proper MLDv2 modes

According to the RFC, MODE_IS_INCLUDE/MODE_IS_EXCLUDE codes should be
used while sendling Multicast Listener Reports in response to a query.
When performing a transition between states (e.g., when joining or
leaving a multicast group) CHANGE_TO_INCLUDE_MODE/CHANGE_TO_EXCLUDE_MODE
have to be used.

Signed-off-by: default avatarKonrad Derda <konrad.derda@nordicsemi.no>
parent 7f5a481e
Loading
Loading
Loading
Loading
+2 −2
Changes for subsys/net/ip/ipv6_mld.c: 2 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -234,7 +234,7 @@ int net_ipv6_mld_join(struct net_if *iface, const struct in6_addr *addr)
		return -ENETDOWN;
	}

	ret = net_ipv6_mld_send_single(iface, addr, NET_IPV6_MLDv2_MODE_IS_EXCLUDE);
	ret = net_ipv6_mld_send_single(iface, addr, NET_IPV6_MLDv2_CHANGE_TO_EXCLUDE_MODE);
	if (ret < 0) {
		return ret;
	}
@@ -268,7 +268,7 @@ int net_ipv6_mld_leave(struct net_if *iface, const struct in6_addr *addr)
		return 0;
	}

	ret = net_ipv6_mld_send_single(iface, addr, NET_IPV6_MLDv2_MODE_IS_INCLUDE);
	ret = net_ipv6_mld_send_single(iface, addr, NET_IPV6_MLDv2_CHANGE_TO_INCLUDE_MODE);
	if (ret < 0) {
		return ret;
	}
+2 −2
Changes for subsys/net/ip/route.c: 2 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -805,8 +805,8 @@ static void propagate_mld_event(struct net_route_entry_mcast *route, bool route_
	/* Apply only for complete addresses */
	if (route->prefix_len == 128) {
		mld_event.addr = &route->group;
		mld_event.mode = route_added ? NET_IPV6_MLDv2_MODE_IS_EXCLUDE :
					       NET_IPV6_MLDv2_MODE_IS_INCLUDE;
		mld_event.mode = route_added ? NET_IPV6_MLDv2_CHANGE_TO_EXCLUDE_MODE :
					       NET_IPV6_MLDv2_CHANGE_TO_INCLUDE_MODE;

		net_if_foreach(send_mld_event, &mld_event);
	}