[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.42 and 1.46

version 1.42, 2001/08/06 10:25:01 version 1.46, 2001/10/29 07:02:35
Line 82 
Line 82 
 #include <sys/kernel.h>  #include <sys/kernel.h>
 #include <sys/syslog.h>  #include <sys/syslog.h>
 #include <sys/proc.h>  #include <sys/proc.h>
   #include <sys/sysctl.h>
   
 #include <net/if.h>  #include <net/if.h>
 #include <net/if_types.h>  #include <net/if_types.h>
Line 97 
Line 98 
 #ifdef INET  #ifdef INET
 #include <netinet/ip.h>  #include <netinet/ip.h>
 #include <netinet/ip_icmp.h>  #include <netinet/ip_icmp.h>
 #endif /*INET*/  #endif /* INET */
 #include <netinet/ip6.h>  #include <netinet/ip6.h>
 #include <netinet6/in6_var.h>  #include <netinet6/in6_var.h>
 #include <netinet6/ip6_var.h>  #include <netinet6/ip6_var.h>
Line 116 
Line 117 
 /* we need it for NLOOP. */  /* we need it for NLOOP. */
 #include "loop.h"  #include "loop.h"
 #include "faith.h"  #include "faith.h"
   
 #include "gif.h"  #include "gif.h"
 #include "bpfilter.h"  #include "bpfilter.h"
   
Line 250  ip6_input(m)
Line 250  ip6_input(m)
 #endif  #endif
   
         /*          /*
          * mbuf statistics by kazu           * mbuf statistics
          */           */
         if (m->m_flags & M_EXT) {          if (m->m_flags & M_EXT) {
                 if (m->m_next)                  if (m->m_next)
Line 261  ip6_input(m)
Line 261  ip6_input(m)
 #define M2MMAX  (sizeof(ip6stat.ip6s_m2m)/sizeof(ip6stat.ip6s_m2m[0]))  #define M2MMAX  (sizeof(ip6stat.ip6s_m2m)/sizeof(ip6stat.ip6s_m2m[0]))
                 if (m->m_next) {                  if (m->m_next) {
                         if (m->m_flags & M_LOOP) {                          if (m->m_flags & M_LOOP) {
                                 ip6stat.ip6s_m2m[loif[0].if_index]++;   /*XXX*/                                  ip6stat.ip6s_m2m[loif[0].if_index]++; /* XXX */
                         } else if (m->m_pkthdr.rcvif->if_index < M2MMAX)                          } else if (m->m_pkthdr.rcvif->if_index < M2MMAX)
                                 ip6stat.ip6s_m2m[m->m_pkthdr.rcvif->if_index]++;                                  ip6stat.ip6s_m2m[m->m_pkthdr.rcvif->if_index]++;
                         else                          else
Line 324  ip6_input(m)
Line 324  ip6_input(m)
         }          }
 #endif /* PFIL_HOOKS */  #endif /* PFIL_HOOKS */
   
   
         ip6stat.ip6s_nxthist[ip6->ip6_nxt]++;          ip6stat.ip6s_nxthist[ip6->ip6_nxt]++;
   
 #ifdef ALTQ  #ifdef ALTQ
         /* XXX Temporary until ALTQ is changed to use a pfil hook */  
         if (altq_input != NULL && (*altq_input)(m, AF_INET6) == 0) {          if (altq_input != NULL && (*altq_input)(m, AF_INET6) == 0) {
                 /* packet is dropped by traffic conditioner */                  /* packet is dropped by traffic conditioner */
                 return;                  return;
Line 336  ip6_input(m)
Line 334  ip6_input(m)
 #endif  #endif
   
         /*          /*
          * Scope check           * Check against address spoofing/corruption.
          */           */
         if (IN6_IS_ADDR_MULTICAST(&ip6->ip6_src) ||          if (IN6_IS_ADDR_MULTICAST(&ip6->ip6_src) ||
             IN6_IS_ADDR_UNSPECIFIED(&ip6->ip6_dst)) {              IN6_IS_ADDR_UNSPECIFIED(&ip6->ip6_dst)) {
Line 345  ip6_input(m)
Line 343  ip6_input(m)
                 goto bad;                  goto bad;
         }          }
         /*          /*
          * The following check is not documented in the spec.  Malicious party           * The following check is not documented in specs.  A malicious
          * may be able to use IPv4 mapped addr to confuse tcp/udp stack and           * party may be able to use IPv4 mapped addr to confuse tcp/udp stack
          * bypass security checks (act as if it was from 127.0.0.1 by using           * and bypass security checks (act as if it was from 127.0.0.1 by using
          * IPv6 src ::ffff:127.0.0.1).  Be cautious.           * IPv6 src ::ffff:127.0.0.1).  Be cautious.
          *           *
          * This check chokes if we are in SIIT cloud.  As none of BSDs support           * This check chokes if we are in an SIIT cloud.  As none of BSDs
          * IPv4-less kernel compilation, we cannot support SIIT environment           * support IPv4-less kernel compilation, we cannot support SIIT
          * at all.  So, it makes more sense for us to reject any malicious           * environment at all.  So, it makes more sense for us to reject any
          * packets for non-SIIT environment, than try to do a partical support           * malicious packets for non-SIIT environment, than try to do a
          * for SIIT environment.           * partical support for SIIT environment.
          */           */
         if (IN6_IS_ADDR_V4MAPPED(&ip6->ip6_src) ||          if (IN6_IS_ADDR_V4MAPPED(&ip6->ip6_src) ||
             IN6_IS_ADDR_V4MAPPED(&ip6->ip6_dst)) {              IN6_IS_ADDR_V4MAPPED(&ip6->ip6_dst)) {
Line 543  ip6_input(m)
Line 541  ip6_input(m)
                  && 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;
                         deliverifp = ip6_forward_rt.ro_rt->rt_ifp; /*faith*/                          deliverifp = ip6_forward_rt.ro_rt->rt_ifp; /* faith */
                         goto hbhcheck;                          goto hbhcheck;
                 }                  }
         }          }
Line 1393  u_char inet6ctlerrmap[PRC_NCMDS] = {
Line 1391  u_char inet6ctlerrmap[PRC_NCMDS] = {
         ENOPROTOOPT          ENOPROTOOPT
 };  };
   
 #include <uvm/uvm_extern.h>  
 #include <sys/sysctl.h>  
   
 int  int
 ip6_sysctl(name, namelen, oldp, oldlenp, newp, newlen)  ip6_sysctl(name, namelen, oldp, oldlenp, newp, newlen)
         int *name;          int *name;
Line 1453  ip6_sysctl(name, namelen, oldp, oldlenp,
Line 1448  ip6_sysctl(name, namelen, oldp, oldlenp,
                                 &ip6_use_deprecated);                                  &ip6_use_deprecated);
         case IPV6CTL_RR_PRUNE:          case IPV6CTL_RR_PRUNE:
                 return sysctl_int(oldp, oldlenp, newp, newlen, &ip6_rr_prune);                  return sysctl_int(oldp, oldlenp, newp, newlen, &ip6_rr_prune);
 #ifndef INET6_BINDV6ONLY          case IPV6CTL_V6ONLY:
         case IPV6CTL_BINDV6ONLY:  #ifdef INET6_BINDV6ONLY
                 return sysctl_int(oldp, oldlenp, newp, newlen,                  return sysctl_rdint(oldp, oldlenp, newp, ip6_v6only);
                                 &ip6_bindv6only);  #else
                   return sysctl_int(oldp, oldlenp, newp, newlen, &ip6_v6only);
 #endif  #endif
         case IPV6CTL_ANONPORTMIN:          case IPV6CTL_ANONPORTMIN:
                 old = ip6_anonportmin;                  old = ip6_anonportmin;

Legend:
Removed from v.1.42  
changed lines
  Added in v.1.46

CVSweb <webmaster@jp.NetBSD.org>