[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.37.2.6 and 1.42

version 1.37.2.6, 2001/10/22 20:42:02 version 1.42, 2001/08/06 10:25:01
Line 81 
Line 81 
 #include <sys/time.h>  #include <sys/time.h>
 #include <sys/kernel.h>  #include <sys/kernel.h>
 #include <sys/syslog.h>  #include <sys/syslog.h>
 #include <sys/lwp.h>  
 #include <sys/proc.h>  #include <sys/proc.h>
   
 #include <net/if.h>  #include <net/if.h>
Line 251  ip6_input(m)
Line 250  ip6_input(m)
 #endif  #endif
   
         /*          /*
          * mbuf statistics           * mbuf statistics by kazu
          */           */
         if (m->m_flags & M_EXT) {          if (m->m_flags & M_EXT) {
                 if (m->m_next)                  if (m->m_next)
Line 262  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 325  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 335  ip6_input(m)
Line 336  ip6_input(m)
 #endif  #endif
   
         /*          /*
          * Check against address spoofing/corruption.           * Scope check
          */           */
         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 344  ip6_input(m)
Line 345  ip6_input(m)
                 goto bad;                  goto bad;
         }          }
         /*          /*
          * The following check is not documented in specs.  A malicious           * The following check is not documented in the spec.  Malicious party
          * party may be able to use IPv4 mapped addr to confuse tcp/udp stack           * may be able to use IPv4 mapped addr to confuse tcp/udp stack and
          * and bypass security checks (act as if it was from 127.0.0.1 by using           * 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 an SIIT cloud.  As none of BSDs           * This check chokes if we are in SIIT cloud.  As none of BSDs support
          * support IPv4-less kernel compilation, we cannot support SIIT           * IPv4-less kernel compilation, we cannot support SIIT environment
          * environment at all.  So, it makes more sense for us to reject any           * at all.  So, it makes more sense for us to reject any malicious
          * malicious packets for non-SIIT environment, than try to do a           * packets for non-SIIT environment, than try to do a partical support
          * partical support for SIIT environment.           * 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 1007  ip6_savecontrol(in6p, mp, ip6, m)
Line 1008  ip6_savecontrol(in6p, mp, ip6, m)
         struct ip6_hdr *ip6;          struct ip6_hdr *ip6;
         struct mbuf *m;          struct mbuf *m;
 {  {
         struct proc *p = (curproc ? curproc->l_proc : 0);       /* XXX */          struct proc *p = curproc;       /* XXX */
         int privileged;          int privileged;
   
         privileged = 0;          privileged = 0;
Line 1452  ip6_sysctl(name, namelen, oldp, oldlenp,
Line 1453  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);
         case IPV6CTL_V6ONLY:  #ifndef INET6_BINDV6ONLY
 #ifdef INET6_BINDV6ONLY          case IPV6CTL_BINDV6ONLY:
                 return sysctl_rdint(oldp, oldlenp, newp, ip6_v6only);                  return sysctl_int(oldp, oldlenp, newp, newlen,
 #else                                  &ip6_bindv6only);
                 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.37.2.6  
changed lines
  Added in v.1.42

CVSweb <webmaster@jp.NetBSD.org>