[BACK]Return to ip6_input.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / netinet6

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/sys/netinet6/ip6_input.c between version 1.92 and 1.93

version 1.92, 2006/12/09 05:33:08 version 1.93, 2006/12/15 21:18:55
Line 450  ip6_input(m)
Line 450  ip6_input(m)
         /*          /*
          *  Unicast check           *  Unicast check
          */           */
         if (ip6_forward_rt.ro_rt != NULL &&          if (!IN6_ARE_ADDR_EQUAL(&ip6->ip6_dst,
             (ip6_forward_rt.ro_rt->rt_flags & RTF_UP) != 0 &&  
             IN6_ARE_ADDR_EQUAL(&ip6->ip6_dst,  
             &((struct sockaddr_in6 *)(&ip6_forward_rt.ro_dst))->sin6_addr))              &((struct sockaddr_in6 *)(&ip6_forward_rt.ro_dst))->sin6_addr))
                   rtcache_free((struct route *)&ip6_forward_rt);
           else
                   rtcache_check((struct route *)&ip6_forward_rt);
           if (ip6_forward_rt.ro_rt != NULL) {
                   /* XXX Revalidated route is accounted wrongly. */
                 ip6stat.ip6s_forward_cachehit++;                  ip6stat.ip6s_forward_cachehit++;
         else {          } else {
                 struct sockaddr_in6 *dst6;                  struct sockaddr_in6 *dst6;
   
                 if (ip6_forward_rt.ro_rt != NULL) {                  ip6stat.ip6s_forward_cachemiss++;
                         /* route is down or destination is different */  
                         ip6stat.ip6s_forward_cachemiss++;  
                         rtflush((struct route *)&ip6_forward_rt);  
                 }  
   
                 bzero(&ip6_forward_rt.ro_dst, sizeof(struct sockaddr_in6));                  bzero(&ip6_forward_rt.ro_dst, sizeof(struct sockaddr_in6));
                 dst6 = (struct sockaddr_in6 *)&ip6_forward_rt.ro_dst;                  dst6 = (struct sockaddr_in6 *)&ip6_forward_rt.ro_dst;
Line 470  ip6_input(m)
Line 469  ip6_input(m)
                 dst6->sin6_family = AF_INET6;                  dst6->sin6_family = AF_INET6;
                 dst6->sin6_addr = ip6->ip6_dst;                  dst6->sin6_addr = ip6->ip6_dst;
   
                 rtalloc((struct route *)&ip6_forward_rt);                  rtcache_init((struct route *)&ip6_forward_rt);
         }          }
   
 #define rt6_key(r) ((struct sockaddr_in6 *)((r)->rt_nodes->rn_key))  #define rt6_key(r) ((struct sockaddr_in6 *)((r)->rt_nodes->rn_key))

Legend:
Removed from v.1.92  
changed lines
  Added in v.1.93

CVSweb <webmaster@jp.NetBSD.org>