[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.88.8.1 and 1.88.8.2

version 1.88.8.1, 2006/10/22 06:07:35 version 1.88.8.2, 2006/12/10 07:19:15
Line 189  ip6_init()
Line 189  ip6_init()
 }  }
   
 static void  static void
 ip6_init2(void *dummy __unused)  ip6_init2(void *dummy)
 {  {
   
         /* nd6_timer_init */          /* nd6_timer_init */
Line 458  ip6_input(m)
Line 458  ip6_input(m)
         else {          else {
                 struct sockaddr_in6 *dst6;                  struct sockaddr_in6 *dst6;
   
                 if (ip6_forward_rt.ro_rt) {                  if (ip6_forward_rt.ro_rt != NULL) {
                         /* route is down or destination is different */                          /* route is down or destination is different */
                         ip6stat.ip6s_forward_cachemiss++;                          ip6stat.ip6s_forward_cachemiss++;
                         RTFREE(ip6_forward_rt.ro_rt);                          rtflush((struct route *)&ip6_forward_rt);
                         ip6_forward_rt.ro_rt = 0;  
                 }                  }
   
                 bzero(&ip6_forward_rt.ro_dst, sizeof(struct sockaddr_in6));                  bzero(&ip6_forward_rt.ro_dst, sizeof(struct sockaddr_in6));
Line 485  ip6_input(m)
Line 484  ip6_input(m)
          * But we think it's even useful in some situations, e.g. when using           * But we think it's even useful in some situations, e.g. when using
          * a special daemon which wants to intercept the packet.           * a special daemon which wants to intercept the packet.
          */           */
         if (ip6_forward_rt.ro_rt &&          if (ip6_forward_rt.ro_rt != NULL &&
             (ip6_forward_rt.ro_rt->rt_flags &              (ip6_forward_rt.ro_rt->rt_flags &
              (RTF_HOST|RTF_GATEWAY)) == RTF_HOST &&               (RTF_HOST|RTF_GATEWAY)) == RTF_HOST &&
             !(ip6_forward_rt.ro_rt->rt_flags & RTF_CLONED) &&              !(ip6_forward_rt.ro_rt->rt_flags & RTF_CLONED) &&
Line 528  ip6_input(m)
Line 527  ip6_input(m)
          */           */
 #if defined(NFAITH) && 0 < NFAITH  #if defined(NFAITH) && 0 < NFAITH
         if (ip6_keepfaith) {          if (ip6_keepfaith) {
                 if (ip6_forward_rt.ro_rt && ip6_forward_rt.ro_rt->rt_ifp &&                  if (ip6_forward_rt.ro_rt != NULL &&
                       ip6_forward_rt.ro_rt->rt_ifp != NULL &&
                     ip6_forward_rt.ro_rt->rt_ifp->if_type == IFT_FAITH) {                      ip6_forward_rt.ro_rt->rt_ifp->if_type == IFT_FAITH) {
                         /* XXX do we need more sanity checks? */                          /* XXX do we need more sanity checks? */
                         ours = 1;                          ours = 1;
Line 546  ip6_input(m)
Line 546  ip6_input(m)
          * working right.           * working right.
          */           */
         struct ifaddr *ifa;          struct ifaddr *ifa;
         for (ifa = m->m_pkthdr.rcvif->if_addrlist.tqh_first;          TAILQ_FOREACH(ifa, &m->m_pkthdr.rcvif->if_addrlist, ifa_list) {
              ifa;  
              ifa = ifa->ifa_list.tqe_next) {  
                 if (ifa->ifa_addr == NULL)                  if (ifa->ifa_addr == NULL)
                         continue;       /* just for safety */                          continue;       /* just for safety */
                 if (ifa->ifa_addr->sa_family != AF_INET6)                  if (ifa->ifa_addr->sa_family != AF_INET6)

Legend:
Removed from v.1.88.8.1  
changed lines
  Added in v.1.88.8.2

CVSweb <webmaster@jp.NetBSD.org>