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