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?

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 ----

Reply via email to