On Mon, Oct 10, 2011 at 01:11:51AM +0200, Martin Pelikan wrote:
> Hi,
>
> motivated by many devs over the weekend I looked at some of the inet6
> code again. Easy stuff goes first:
>
> --
> Martin Pelikan
>
>
> Index: in6.c
> ===
> RCS file: /cvs/src/sys/netinet6/in6.c,v
> retrieving revision 1.93
> diff -u -p -r1.93 in6.c
> --- in6.c 8 Aug 2011 13:04:35 - 1.93
> +++ in6.c 9 Oct 2011 22:34:56 -
> @@ -1046,10 +1046,9 @@ in6_update_ifa(struct ifnet *ifp, struct
> bzero(&llsol, sizeof(llsol));
> llsol.sin6_family = AF_INET6;
> llsol.sin6_len = sizeof(llsol);
> - llsol.sin6_addr.s6_addr16[0] = htons(0xff02);
> + llsol.sin6_addr.s6_addr16[0] = IPV6_ADDR_INT16_MLL;
> llsol.sin6_addr.s6_addr16[1] = htons(ifp->if_index);
> - llsol.sin6_addr.s6_addr32[1] = 0;
I know nothing of IPv6 stuff, but is this line removal
a typo or an intended change?
--patrick
> - llsol.sin6_addr.s6_addr32[2] = htonl(1);
> + llsol.sin6_addr.s6_addr32[2] = IPV6_ADDR_INT32_ONE;
> llsol.sin6_addr.s6_addr32[3] =
> ifra->ifra_addr.sin6_addr.s6_addr32[3];
> llsol.sin6_addr.s6_addr8[12] = 0xff;
> Index: in6_ifattach.c
> ===
> RCS file: /cvs/src/sys/netinet6/in6_ifattach.c,v
> retrieving revision 1.51
> diff -u -p -r1.51 in6_ifattach.c
> --- in6_ifattach.c6 Apr 2010 14:12:10 - 1.51
> +++ in6_ifattach.c9 Oct 2011 22:34:56 -
> @@ -343,12 +343,12 @@ in6_ifattach_linklocal(struct ifnet *ifp
>
> ifra.ifra_addr.sin6_family = AF_INET6;
> ifra.ifra_addr.sin6_len = sizeof(struct sockaddr_in6);
> - ifra.ifra_addr.sin6_addr.s6_addr16[0] = htons(0xfe80);
> + ifra.ifra_addr.sin6_addr.s6_addr16[0] = IPV6_ADDR_INT16_ULL;
> ifra.ifra_addr.sin6_addr.s6_addr16[1] = htons(ifp->if_index);
> ifra.ifra_addr.sin6_addr.s6_addr32[1] = 0;
> if ((ifp->if_flags & IFF_LOOPBACK) != 0) {
> ifra.ifra_addr.sin6_addr.s6_addr32[2] = 0;
> - ifra.ifra_addr.sin6_addr.s6_addr32[3] = htonl(1);
> + ifra.ifra_addr.sin6_addr.s6_addr32[3] = IPV6_ADDR_INT32_ONE;
> } else {
> if (get_ifid(ifp, altifp, &ifra.ifra_addr.sin6_addr) != 0) {
> nd6log((LOG_ERR,
> @@ -553,9 +553,9 @@ in6_nigroup(struct ifnet *ifp, const cha
> bzero(sa6, sizeof(*sa6));
> sa6->sin6_family = AF_INET6;
> sa6->sin6_len = sizeof(*sa6);
> - sa6->sin6_addr.s6_addr16[0] = htons(0xff02);
> + sa6->sin6_addr.s6_addr16[0] = IPV6_ADDR_INT16_MLL;
> sa6->sin6_addr.s6_addr16[1] = htons(ifp->if_index);
> - sa6->sin6_addr.s6_addr8[11] = 2;
> + sa6->sin6_addr.s6_addr32[2] = IPV6_ADDR_INT32_TWO;
> bcopy(digest, &sa6->sin6_addr.s6_addr32[3],
> sizeof(sa6->sin6_addr.s6_addr32[3]));
>
> Index: nd6.c
> ===
> RCS file: /cvs/src/sys/netinet6/nd6.c,v
> retrieving revision 1.87
> diff -u -p -r1.87 nd6.c
> --- nd6.c 17 Jun 2011 07:06:47 - 1.87
> +++ nd6.c 9 Oct 2011 22:34:56 -
> @@ -1222,10 +1222,10 @@ nd6_rtrequest(int req, struct rtentry *r
> int error;
>
> llsol = SIN6(rt_key(rt))->sin6_addr;
> - llsol.s6_addr16[0] = htons(0xff02);
> + llsol.s6_addr16[0] = IPV6_ADDR_INT16_MLL;
> llsol.s6_addr16[1] = htons(ifp->if_index);
> llsol.s6_addr32[1] = 0;
> - llsol.s6_addr32[2] = htonl(1);
> + llsol.s6_addr32[2] = IPV6_ADDR_INT32_ONE;
> llsol.s6_addr8[12] = 0xff;
>
> if (in6_addmulti(&llsol, ifp, &error)) {
> @@ -1247,10 +1247,10 @@ nd6_rtrequest(int req, struct rtentry *r
> struct in6_multi *in6m;
>
> llsol = SIN6(rt_key(rt))->sin6_addr;
> - llsol.s6_addr16[0] = htons(0xff02);
> + llsol.s6_addr16[0] = IPV6_ADDR_INT16_MLL;
> llsol.s6_addr16[1] = htons(ifp->if_index);
> llsol.s6_addr32[1] = 0;
> - llsol.s6_addr32[2] = htonl(1);
> + llsol.s6_addr32[2] = IPV6_ADDR_INT32_ONE;
> llsol.s6_addr8[12] = 0xff;
>
> IN6_LOOKUP_MULTI(llsol, ifp, in6m);