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 -0000 1.93 +++ in6.c 9 Oct 2011 22:34:56 -0000 @@ -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; - 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.c 6 Apr 2010 14:12:10 -0000 1.51 +++ in6_ifattach.c 9 Oct 2011 22:34:56 -0000 @@ -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 -0000 1.87 +++ nd6.c 9 Oct 2011 22:34:56 -0000 @@ -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);