I'm still looking for OKs on this.
On Mon, Apr 02, 2012 at 14:28 +0200, Mike Belopuhov wrote:
> RFC 4861 says:
>
> Target link-layer address
> The link-layer address for the target, i.e., the
> sender of the advertisement. This option MUST be
> included on link layers that have addresses when
> responding to multicast solicitations. When
> responding to a unicast Neighbor Solicitation this
> option SHOULD be included.
>
> The option MUST be included for multicast
> solicitations in order to avoid infinite Neighbor
> Solicitation "recursion" when the peer node does
> not have a cache entry to return a Neighbor
> Advertisements message.
>
> diff --git sys/netinet6/nd6_nbr.c sys/netinet6/nd6_nbr.c
> index 90e7d19..c6cd139 100644
> --- sys/netinet6/nd6_nbr.c
> +++ sys/netinet6/nd6_nbr.c
> @@ -605,6 +605,13 @@ nd6_na_input(struct mbuf *m, int off, int icmp6len)
> goto freeit;
> }
>
> + if (IN6_IS_ADDR_MULTICAST(&daddr6) && !ndopts.nd_opts_tgt_lladdr) {
> + nd6log((LOG_INFO,
> + "nd6_na_input: multicast adv without TLLA\n"));
> + /* nd6_options have incremented stats */
> + goto freeit;
> + }
> +
> if (ndopts.nd_opts_tgt_lladdr) {
> lladdr = (char *)(ndopts.nd_opts_tgt_lladdr + 1);
> lladdrlen = ndopts.nd_opts_tgt_lladdr->nd_opt_len << 3;