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 -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;
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.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);