On Wed, Jan 22, 2014 at 11:29:59AM +0100, Martin Pieuchot wrote: > Diff below kills the unused RTAX_NETMASK arguments and the global > variable associated of two requests where a route to host is added > or deleted. > > ok?
OK, setting RTF_HOST and passing a netmask is crazy talk so kill it. > Index: netinet6/in6.c > =================================================================== > RCS file: /home/ncvs/src/sys/netinet6/in6.c,v > retrieving revision 1.130 > diff -u -p -c -4 -r1.130 in6.c > *** netinet6/in6.c 21 Jan 2014 10:18:26 -0000 1.130 > --- netinet6/in6.c 22 Jan 2014 10:21:00 -0000 > *************** const struct sockaddr_in6 sa6_any = { > *** 135,151 **** > void > in6_ifloop_request(int cmd, struct ifaddr *ifa) > { > struct rt_addrinfo info; > - struct sockaddr_in6 all1_sa; > struct rtentry *nrt = NULL; > int e; > > - bzero(&all1_sa, sizeof(all1_sa)); > - all1_sa.sin6_family = AF_INET6; > - all1_sa.sin6_len = sizeof(struct sockaddr_in6); > - all1_sa.sin6_addr = in6mask128; > - > /* > * We specify the address itself as the gateway, and set the > * RTF_LLINFO flag, so that the corresponding host route would have > * the flag, and thus applications that assume traditional behavior > --- 135,145 ---- > *************** in6_ifloop_request(int cmd, struct ifadd > *** 158,166 **** > info.rti_flags = RTF_UP | RTF_HOST | RTF_LLINFO; > info.rti_info[RTAX_DST] = ifa->ifa_addr; > if (cmd != RTM_DELETE) > info.rti_info[RTAX_GATEWAY] = ifa->ifa_addr; > - info.rti_info[RTAX_NETMASK] = sin6tosa(&all1_sa); > e = rtrequest1(cmd, &info, RTP_CONNECTED, &nrt, > ifa->ifa_ifp->if_rdomain); > if (e != 0) { > char addr[INET6_ADDRSTRLEN]; > --- 152,159 ---- > Index: netinet6/nd6.c > =================================================================== > RCS file: /home/ncvs/src/sys/netinet6/nd6.c,v > retrieving revision 1.109 > diff -u -p -c -4 -r1.109 nd6.c > *** netinet6/nd6.c 13 Jan 2014 23:03:52 -0000 1.109 > --- netinet6/nd6.c 22 Jan 2014 10:21:00 -0000 > *************** struct llinfo_nd6 llinfo_nd6 = {&llinfo_ > *** 91,99 **** > struct nd_drhead nd_defrouter; > struct nd_prhead nd_prefix = { 0 }; > > int nd6_recalc_reachtm_interval = ND6_RECALC_REACHTM_INTERVAL; > - static struct sockaddr_in6 all1_sa; > > void nd6_setmtu0(struct ifnet *, struct nd_ifinfo *); > void nd6_slowtimo(void *); > struct llinfo_nd6 *nd6_free(struct rtentry *, int); > --- 91,98 ---- > *************** int fill_prlist(void *, size_t *, size_t > *** 119,138 **** > void > nd6_init(void) > { > static int nd6_init_done = 0; > - int i; > > if (nd6_init_done) { > log(LOG_NOTICE, "nd6_init called more than once(ignored)\n"); > return; > } > > - all1_sa.sin6_family = AF_INET6; > - all1_sa.sin6_len = sizeof(struct sockaddr_in6); > - for (i = 0; i < sizeof(all1_sa.sin6_addr); i++) > - all1_sa.sin6_addr.s6_addr[i] = 0xff; > - > /* initialization of the default router list */ > TAILQ_INIT(&nd_defrouter); > > nd6_init_done = 1; > --- 118,131 ---- > *************** nd6_lookup(struct in6_addr *addr6, int c > *** 688,696 **** > info.rti_flags = (ifa->ifa_flags | RTF_HOST | > RTF_LLINFO) & ~RTF_CLONING; > info.rti_info[RTAX_DST] = sin6tosa(&sin6); > info.rti_info[RTAX_GATEWAY] = ifa->ifa_addr; > - info.rti_info[RTAX_NETMASK] = sin6tosa(&all1_sa); > if ((e = rtrequest1(RTM_ADD, &info, RTP_CONNECTED, > &rt, rtableid)) != 0) { > #if 0 > char ip[INET6_ADDRSTRLEN]; > --- 681,688 ---- > -- :wq Claudio