[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.18 and 1.19

version 1.18, 1995/06/01 21:36:27 version 1.19, 1995/06/04 05:07:03
Line 239  next:
Line 239  next:
          * Check our list of addresses, to see if the packet is for us.           * Check our list of addresses, to see if the packet is for us.
          */           */
         for (ia = in_ifaddr; ia; ia = ia->ia_next) {          for (ia = in_ifaddr; ia; ia = ia->ia_next) {
 #define satosin(sa)     ((struct sockaddr_in *)(sa))  
   
                 if (IA_SIN(ia)->sin_addr.s_addr == ip->ip_dst.s_addr)                  if (IA_SIN(ia)->sin_addr.s_addr == ip->ip_dst.s_addr)
                         goto ours;                          goto ours;
                 if (                  if (
Line 318  next:
Line 316  next:
                 }                  }
                 goto ours;                  goto ours;
         }          }
         if (ip->ip_dst.s_addr == INADDR_BROADCAST)          if (ip->ip_dst.s_addr == INADDR_BROADCAST ||
                 goto ours;              ip->ip_dst.s_addr == INADDR_ANY)
         if (ip->ip_dst.s_addr == INADDR_ANY)  
                 goto ours;                  goto ours;
   
         /*          /*
Line 696  ip_dooptions(m)
Line 693  ip_dooptions(m)
                                 goto bad;                                  goto bad;
                         }                          }
                         ipaddr.sin_addr = ip->ip_dst;                          ipaddr.sin_addr = ip->ip_dst;
                         ia = (struct in_ifaddr *)                          ia = ifatoia(ifa_ifwithaddr(sintosa(&ipaddr)));
                                 ifa_ifwithaddr((struct sockaddr *)&ipaddr);  
                         if (ia == 0) {                          if (ia == 0) {
                                 if (opt == IPOPT_SSRR) {                                  if (opt == IPOPT_SSRR) {
                                         type = ICMP_UNREACH;                                          type = ICMP_UNREACH;
Line 845  ip_rtaddr(dst)
Line 841  ip_rtaddr(dst)
 {  {
         register struct sockaddr_in *sin;          register struct sockaddr_in *sin;
   
         sin = (struct sockaddr_in *) &ipforward_rt.ro_dst;          sin = satosin(&ipforward_rt.ro_dst);
   
         if (ipforward_rt.ro_rt == 0 || dst.s_addr != sin->sin_addr.s_addr) {          if (ipforward_rt.ro_rt == 0 || dst.s_addr != sin->sin_addr.s_addr) {
                 if (ipforward_rt.ro_rt) {                  if (ipforward_rt.ro_rt) {
Line 860  ip_rtaddr(dst)
Line 856  ip_rtaddr(dst)
         }          }
         if (ipforward_rt.ro_rt == 0)          if (ipforward_rt.ro_rt == 0)
                 return ((struct in_ifaddr *)0);                  return ((struct in_ifaddr *)0);
         return ((struct in_ifaddr *) ipforward_rt.ro_rt->rt_ifa);          return (ifatoia(ipforward_rt.ro_rt->rt_ifa));
 }  }
   
 /*  /*
Line 1036  ip_forward(m, srcrt)
Line 1032  ip_forward(m, srcrt)
         }          }
         ip->ip_ttl -= IPTTLDEC;          ip->ip_ttl -= IPTTLDEC;
   
         sin = (struct sockaddr_in *)&ipforward_rt.ro_dst;          sin = satosin(&ipforward_rt.ro_dst);
         if ((rt = ipforward_rt.ro_rt) == 0 ||          if ((rt = ipforward_rt.ro_rt) == 0 ||
             ip->ip_dst.s_addr != sin->sin_addr.s_addr) {              ip->ip_dst.s_addr != sin->sin_addr.s_addr) {
                 if (ipforward_rt.ro_rt) {                  if (ipforward_rt.ro_rt) {
Line 1073  ip_forward(m, srcrt)
Line 1069  ip_forward(m, srcrt)
          * Also, don't send redirect if forwarding using a default route           * Also, don't send redirect if forwarding using a default route
          * or a route modified by a redirect.           * or a route modified by a redirect.
          */           */
 #define satosin(sa)     ((struct sockaddr_in *)(sa))  
         if (rt->rt_ifp == m->m_pkthdr.rcvif &&          if (rt->rt_ifp == m->m_pkthdr.rcvif &&
             (rt->rt_flags & (RTF_DYNAMIC|RTF_MODIFIED)) == 0 &&              (rt->rt_flags & (RTF_DYNAMIC|RTF_MODIFIED)) == 0 &&
             satosin(rt_key(rt))->sin_addr.s_addr != 0 &&              satosin(rt_key(rt))->sin_addr.s_addr != 0 &&
             ipsendredirects && !srcrt) {              ipsendredirects && !srcrt) {
 #define RTA(rt) ((struct in_ifaddr *)(rt->rt_ifa))                  if (rt->rt_ifa &&
                 if (RTA(rt) &&                      (ip->ip_src.s_addr & ifatoia(rt->rt_ifa)->ia_subnetmask) ==
                     (ip->ip_src.s_addr & RTA(rt)->ia_subnetmask) ==                      ifatoia(rt->rt_ifa)->ia_subnet) {
                     RTA(rt)->ia_subnet) {  
                     if (rt->rt_flags & RTF_GATEWAY)                      if (rt->rt_flags & RTF_GATEWAY)
                         dest = satosin(rt->rt_gateway)->sin_addr.s_addr;                          dest = satosin(rt->rt_gateway)->sin_addr.s_addr;
                     else                      else

Legend:
Removed from v.1.18  
changed lines
  Added in v.1.19

CVSweb <webmaster@jp.NetBSD.org>