* kame/sys/netinet6/mld6.c (mld_input): use a local sockaddr_in6 structure to match multicast addresses in order to handle multicast scope correctly. In response to a report from Kentarou.Oohara@jp.yokogawa.com.
with other fixes): use the local sockaddr_in6 structure to match multicast addresses in mld_input() in order to handle multicast scope correctly.
- fixed a indentation style when defining a block inside a function.
* kame/sys/netinet6/nd6.c (nd6_output): fixed overkilling about the "dst" argument to this function. The caller side were fixed accordingly. This change also contains a bug fix about incorrect arguments to rtalloc1().
* kame/sys/netinet6/ip6_output. (ip6_output): recovered some features related address scope lost for a while: - use scope6_check_id() for the first hop of a routing header in case the default scope zone is specified and the 1st hop is a scoped address. - recovered scope zone boundary check in ip6_output(). Without this, an application can originate a packet that breaks the scope boundary for the source or destination address.
some incorrect arguments to rtalloc1 were also fixed.
…ault scope zone is specified and the 1st hop is a socped address.
* kame/sys/netinet/icmp6.h (ICMP6_MEMBERSHIP_REDUCTION): defined an alias of MLD_LISTENER_DONE to be compliant to RFC3542.
MLD_LISTENER_DONE. (we should have caught this earlier, but it's too late...)
multicasted echo requests were not properly responded.
* kame/sys/netinet6/ip6_mroute.c (ip6_mdq): recovered scope zone check.
* kame/sys/netinet6/icmp6.c (icmp6_reflect): made sure to provide a valid sockaddr_in6 structure with regards to scope zone. With the previous the code a forwarding node could not return an ICMPv6 error if the source of the erroneous packet was link-local.
wrt scope zone.
* kame/sys/netinet6/ip6_forward.c (ip6_forward): recovered scope zone boundary check for the destination address.
mld doesn't need '6' suffix, since it's dedicated for IPv6.
…doesn't need '6' suffix, since it's dedicated for IPv6.
* kame/sys/netinet6/ip6_output.c (ip6_setmoptions): disallowed the use of the unspecified address for IPV6_JOIN_GROUP and IPV6_LEAVE_GROUP. The special case is not documented in the official API specification, and for whatever purpose, this should actually have not been working for a long time.
IPV6_LEAVE_GROUP. The special case was not documented in the official API specification, and for whatever purpose, this should actually have not been working for a long time.
reported by Brian Buesker <firstname.lastname@example.org>