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

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

Diff for /src/sys/netinet/ip_input.c between version 1.238 and 1.239

version 1.238, 2006/12/06 00:39:56 version 1.239, 2006/12/09 05:33:04
Line 1679  ip_rtaddr(struct in_addr dst)
Line 1679  ip_rtaddr(struct in_addr dst)
   
         sin = satosin(&ipforward_rt.ro_dst);          sin = satosin(&ipforward_rt.ro_dst);
   
         if (ipforward_rt.ro_rt == 0 || !in_hosteq(dst, sin->sin_addr)) {          if (ipforward_rt.ro_rt == NULL || !in_hosteq(dst, sin->sin_addr)) {
                 if (ipforward_rt.ro_rt) {                  if (ipforward_rt.ro_rt != NULL)
                         RTFREE(ipforward_rt.ro_rt);                          rtflush(&ipforward_rt);
                         ipforward_rt.ro_rt = 0;  
                 }  
                 sin->sin_family = AF_INET;                  sin->sin_family = AF_INET;
                 sin->sin_len = sizeof(*sin);                  sin->sin_len = sizeof(*sin);
                 sin->sin_addr = dst;                  sin->sin_addr = dst;
   
                 rtalloc(&ipforward_rt);                  rtalloc(&ipforward_rt);
         }          }
         if (ipforward_rt.ro_rt == 0)          if (ipforward_rt.ro_rt == NULL)
                 return ((struct in_ifaddr *)0);                  return NULL;
         return (ifatoia(ipforward_rt.ro_rt->rt_ifa));          return ifatoia(ipforward_rt.ro_rt->rt_ifa);
 }  }
   
 /*  /*
Line 1873  ip_forward(struct mbuf *m, int srcrt)
Line 1871  ip_forward(struct mbuf *m, int srcrt)
         }          }
   
         sin = satosin(&ipforward_rt.ro_dst);          sin = satosin(&ipforward_rt.ro_dst);
         if ((rt = ipforward_rt.ro_rt) == 0 ||          if ((rt = ipforward_rt.ro_rt) == NULL ||
             !in_hosteq(ip->ip_dst, sin->sin_addr)) {              !in_hosteq(ip->ip_dst, sin->sin_addr)) {
                 if (ipforward_rt.ro_rt) {                  if (ipforward_rt.ro_rt != NULL)
                         RTFREE(ipforward_rt.ro_rt);                          rtflush(&ipforward_rt);
                         ipforward_rt.ro_rt = 0;  
                 }  
                 sin->sin_family = AF_INET;                  sin->sin_family = AF_INET;
                 sin->sin_len = sizeof(struct sockaddr_in);                  sin->sin_len = sizeof(struct sockaddr_in);
                 sin->sin_addr = ip->ip_dst;                  sin->sin_addr = ip->ip_dst;
   
                 rtalloc(&ipforward_rt);                  rtalloc(&ipforward_rt);
                 if (ipforward_rt.ro_rt == 0) {                  if (ipforward_rt.ro_rt == NULL) {
                         icmp_error(m, ICMP_UNREACH, ICMP_UNREACH_NET, dest, 0);                          icmp_error(m, ICMP_UNREACH, ICMP_UNREACH_NET, dest, 0);
                         return;                          return;
                 }                  }

Legend:
Removed from v.1.238  
changed lines
  Added in v.1.239

CVSweb <webmaster@jp.NetBSD.org>