[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.71 and 1.77.10.1

version 1.71, 2004/02/11 10:47:28 version 1.77.10.1, 2006/05/24 02:22:48
Line 112  __KERNEL_RCSID(0, "$NetBSD$");
Line 112  __KERNEL_RCSID(0, "$NetBSD$");
   
 #include <netinet6/ip6protosw.h>  #include <netinet6/ip6protosw.h>
   
 /* we need it for NLOOP. */  
 #include "loop.h"  
 #include "faith.h"  #include "faith.h"
 #include "gif.h"  #include "gif.h"
 #include "bpfilter.h"  
   
 #if NGIF > 0  #if NGIF > 0
 #include <netinet6/in6_gif.h>  #include <netinet6/in6_gif.h>
Line 131  static int ip6qmaxlen = IFQ_MAXLEN;
Line 128  static int ip6qmaxlen = IFQ_MAXLEN;
 struct in6_ifaddr *in6_ifaddr;  struct in6_ifaddr *in6_ifaddr;
 struct ifqueue ip6intrq;  struct ifqueue ip6intrq;
   
 extern struct ifnet loif[NLOOP];  
 int ip6_forward_srcrt;                  /* XXX */  int ip6_forward_srcrt;                  /* XXX */
 int ip6_sourcecheck;                    /* XXX */  int ip6_sourcecheck;                    /* XXX */
 int ip6_sourcecheck_interval;           /* XXX */  int ip6_sourcecheck_interval;           /* XXX */
Line 248  ip6_input(m)
Line 244  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[lo0ifp->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 466  ip6_input(m)
Line 462  ip6_input(m)
         if (ip6_forward_rt.ro_rt != NULL &&          if (ip6_forward_rt.ro_rt != NULL &&
             (ip6_forward_rt.ro_rt->rt_flags & RTF_UP) != 0 &&              (ip6_forward_rt.ro_rt->rt_flags & RTF_UP) != 0 &&
             IN6_ARE_ADDR_EQUAL(&ip6->ip6_dst,              IN6_ARE_ADDR_EQUAL(&ip6->ip6_dst,
                                &((struct sockaddr_in6 *)(&ip6_forward_rt.ro_dst))->sin6_addr))              &((struct sockaddr_in6 *)(&ip6_forward_rt.ro_dst))->sin6_addr))
                 ip6stat.ip6s_forward_cachehit++;                  ip6stat.ip6s_forward_cachehit++;
         else {          else {
                 struct sockaddr_in6 *dst6;                  struct sockaddr_in6 *dst6;
Line 997  ip6_savecontrol(in6p, mp, ip6, m)
Line 993  ip6_savecontrol(in6p, mp, ip6, m)
         struct ip6_hdr *ip6;          struct ip6_hdr *ip6;
         struct mbuf *m;          struct mbuf *m;
 {  {
         struct proc *p = curproc;       /* XXX */  
         int privileged;  
   
         privileged = 0;  
         if (p && !suser(p->p_ucred, &p->p_acflag))  
                 privileged++;  
   
 #ifdef SO_TIMESTAMP  #ifdef SO_TIMESTAMP
         if (in6p->in6p_socket->so_options & SO_TIMESTAMP) {          if (in6p->in6p_socket->so_options & SO_TIMESTAMP) {
Line 1015  ip6_savecontrol(in6p, mp, ip6, m)
Line 1005  ip6_savecontrol(in6p, mp, ip6, m)
                         mp = &(*mp)->m_next;                          mp = &(*mp)->m_next;
         }          }
 #endif  #endif
   
           /* some OSes call this logic with IPv4 packet, for SO_TIMESTAMP */
           if ((ip6->ip6_vfc & IPV6_VERSION_MASK) != IPV6_VERSION)
                   return;
   
         if (in6p->in6p_flags & IN6P_RECVDSTADDR) {          if (in6p->in6p_flags & IN6P_RECVDSTADDR) {
                 *mp = sbcreatecontrol((caddr_t) &ip6->ip6_dst,                  *mp = sbcreatecontrol((caddr_t) &ip6->ip6_dst,
                     sizeof(struct in6_addr), IPV6_RECVDSTADDR, IPPROTO_IPV6);                      sizeof(struct in6_addr), IPV6_RECVDSTADDR, IPPROTO_IPV6);
Line 1055  ip6_savecontrol(in6p, mp, ip6, m)
Line 1050  ip6_savecontrol(in6p, mp, ip6, m)
         /* IN6P_NEXTHOP - for outgoing packet only */          /* IN6P_NEXTHOP - for outgoing packet only */
   
         /*          /*
          * IPV6_HOPOPTS socket option. We require super-user privilege           * IPV6_HOPOPTS socket option.  Recall that we required super-user
          * for the option, but it might be too strict, since there might           * privilege for the option (see ip6_ctloutput), but it might be too
          * be some hop-by-hop options which can be returned to normal user.           * strict, since there might be some hop-by-hop options which can be
          * See RFC 2292 section 6.           * returned to normal user.
            * See also RFC 2292 section 6.
          */           */
         if ((in6p->in6p_flags & IN6P_HOPOPTS) != 0 && privileged) {          if ((in6p->in6p_flags & IN6P_HOPOPTS) != 0) {
                 /*                  /*
                  * Check if a hop-by-hop options header is contatined in the                   * Check if a hop-by-hop options header is contatined in the
                  * received packet, and if so, store the options as ancillary                   * received packet, and if so, store the options as ancillary
Line 1155  ip6_savecontrol(in6p, mp, ip6, m)
Line 1151  ip6_savecontrol(in6p, mp, ip6, m)
                                 if (!in6p->in6p_flags & IN6P_DSTOPTS)                                  if (!in6p->in6p_flags & IN6P_DSTOPTS)
                                         break;                                          break;
   
                                 /*  
                                  * We also require super-user privilege for  
                                  * the option.  
                                  * See the comments on IN6_HOPOPTS.  
                                  */  
                                 if (!privileged)  
                                         break;  
   
                                 *mp = sbcreatecontrol((caddr_t)ip6e, elen,                                  *mp = sbcreatecontrol((caddr_t)ip6e, elen,
                                     IPV6_DSTOPTS, IPPROTO_IPV6);                                      IPV6_DSTOPTS, IPPROTO_IPV6);
                                 if (*mp)                                  if (*mp)
Line 1438  u_char inet6ctlerrmap[PRC_NCMDS] = {
Line 1426  u_char inet6ctlerrmap[PRC_NCMDS] = {
 SYSCTL_SETUP(sysctl_net_inet6_ip6_setup, "sysctl net.inet6.ip6 subtree setup")  SYSCTL_SETUP(sysctl_net_inet6_ip6_setup, "sysctl net.inet6.ip6 subtree setup")
 {  {
   
         sysctl_createv(SYSCTL_PERMANENT,          sysctl_createv(clog, 0, NULL, NULL,
                          CTLFLAG_PERMANENT,
                        CTLTYPE_NODE, "net", NULL,                         CTLTYPE_NODE, "net", NULL,
                        NULL, 0, NULL, 0,                         NULL, 0, NULL, 0,
                        CTL_NET, CTL_EOL);                         CTL_NET, CTL_EOL);
         sysctl_createv(SYSCTL_PERMANENT,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLTYPE_NODE, "inet6", NULL,                         CTLFLAG_PERMANENT,
                          CTLTYPE_NODE, "inet6",
                          SYSCTL_DESCR("PF_INET6 related settings"),
                        NULL, 0, NULL, 0,                         NULL, 0, NULL, 0,
                        CTL_NET, PF_INET6, CTL_EOL);                         CTL_NET, PF_INET6, CTL_EOL);
         sysctl_createv(SYSCTL_PERMANENT,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLTYPE_NODE, "ip6", NULL,                         CTLFLAG_PERMANENT,
                          CTLTYPE_NODE, "ip6",
                          SYSCTL_DESCR("IPv6 related settings"),
                        NULL, 0, NULL, 0,                         NULL, 0, NULL, 0,
                        CTL_NET, PF_INET6, IPPROTO_IPV6, CTL_EOL);                         CTL_NET, PF_INET6, IPPROTO_IPV6, CTL_EOL);
   
         sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLTYPE_INT, "forwarding", NULL,                         CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                          CTLTYPE_INT, "forwarding",
                          SYSCTL_DESCR("Enable forwarding of INET6 datagrams"),
                        NULL, 0, &ip6_forwarding, 0,                         NULL, 0, &ip6_forwarding, 0,
                        CTL_NET, PF_INET6, IPPROTO_IPV6,                         CTL_NET, PF_INET6, IPPROTO_IPV6,
                        IPV6CTL_FORWARDING, CTL_EOL);                         IPV6CTL_FORWARDING, CTL_EOL);
         sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLTYPE_INT, "redirect", NULL,                         CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                          CTLTYPE_INT, "redirect",
                          SYSCTL_DESCR("Enable sending of ICMPv6 redirect messages"),
                        NULL, 0, &ip6_sendredirects, 0,                         NULL, 0, &ip6_sendredirects, 0,
                        CTL_NET, PF_INET6, IPPROTO_IPV6,                         CTL_NET, PF_INET6, IPPROTO_IPV6,
                        IPV6CTL_SENDREDIRECTS, CTL_EOL);                         IPV6CTL_SENDREDIRECTS, CTL_EOL);
         sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLTYPE_INT, "hlim", NULL,                         CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                          CTLTYPE_INT, "hlim",
                          SYSCTL_DESCR("Hop limit for an INET6 datagram"),
                        NULL, 0, &ip6_defhlim, 0,                         NULL, 0, &ip6_defhlim, 0,
                        CTL_NET, PF_INET6, IPPROTO_IPV6,                         CTL_NET, PF_INET6, IPPROTO_IPV6,
                        IPV6CTL_DEFHLIM, CTL_EOL);                         IPV6CTL_DEFHLIM, CTL_EOL);
 #ifdef notyet  #ifdef notyet
         sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE,          sysctl_createv(clog, 0, NULL, NULL,
                          CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                        CTLTYPE_INT, "mtu", NULL,                         CTLTYPE_INT, "mtu", NULL,
                        NULL, 0, &, 0,                         NULL, 0, &, 0,
                        CTL_NET, PF_INET6, IPPROTO_IPV6,                         CTL_NET, PF_INET6, IPPROTO_IPV6,
                        IPV6CTL_DEFMTU, CTL_EOL);                         IPV6CTL_DEFMTU, CTL_EOL);
 #endif  #endif
 #ifdef __no_idea__  #ifdef __no_idea__
         sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE,          sysctl_createv(clog, 0, NULL, NULL,
                          CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                        CTLTYPE_INT, "forwsrcrt", NULL,                         CTLTYPE_INT, "forwsrcrt", NULL,
                        NULL, 0, &?, 0,                         NULL, 0, &?, 0,
                        CTL_NET, PF_INET6, IPPROTO_IPV6,                         CTL_NET, PF_INET6, IPPROTO_IPV6,
                        IPV6CTL_FORWSRCRT, CTL_EOL);                         IPV6CTL_FORWSRCRT, CTL_EOL);
         sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE,          sysctl_createv(clog, 0, NULL, NULL,
                          CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                        CTLTYPE_STRUCT, "stats", NULL,                         CTLTYPE_STRUCT, "stats", NULL,
                        NULL, 0, &?, sizeof(?),                         NULL, 0, &?, sizeof(?),
                        CTL_NET, PF_INET6, IPPROTO_IPV6,                         CTL_NET, PF_INET6, IPPROTO_IPV6,
                        IPV6CTL_STATS, CTL_EOL);                         IPV6CTL_STATS, CTL_EOL);
         sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE,          sysctl_createv(clog, 0, NULL, NULL,
                          CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                        CTLTYPE_STRUCT, "mrtstats", NULL,                         CTLTYPE_STRUCT, "mrtstats", NULL,
                        NULL, 0, &?, sizeof(?),                         NULL, 0, &?, sizeof(?),
                        CTL_NET, PF_INET6, IPPROTO_IPV6,                         CTL_NET, PF_INET6, IPPROTO_IPV6,
                        IPV6CTL_MRTSTATS, CTL_EOL);                         IPV6CTL_MRTSTATS, CTL_EOL);
         sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE,          sysctl_createv(clog, 0, NULL, NULL,
                          CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                        CTLTYPE_?, "mrtproto", NULL,                         CTLTYPE_?, "mrtproto", NULL,
                        NULL, 0, &?, sizeof(?),                         NULL, 0, &?, sizeof(?),
                        CTL_NET, PF_INET6, IPPROTO_IPV6,                         CTL_NET, PF_INET6, IPPROTO_IPV6,
                        IPV6CTL_MRTPROTO, CTL_EOL);                         IPV6CTL_MRTPROTO, CTL_EOL);
 #endif  #endif
         sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLTYPE_INT, "maxfragpackets", NULL,                         CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                          CTLTYPE_INT, "maxfragpackets",
                          SYSCTL_DESCR("Maximum number of fragments to buffer "
                                       "for reassembly"),
                        NULL, 0, &ip6_maxfragpackets, 0,                         NULL, 0, &ip6_maxfragpackets, 0,
                        CTL_NET, PF_INET6, IPPROTO_IPV6,                         CTL_NET, PF_INET6, IPPROTO_IPV6,
                        IPV6CTL_MAXFRAGPACKETS, CTL_EOL);                         IPV6CTL_MAXFRAGPACKETS, CTL_EOL);
 #ifdef __no_idea__  #ifdef __no_idea__
         sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE,          sysctl_createv(clog, 0, NULL, NULL,
                          CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                        CTLTYPE_INT, "sourcecheck", NULL,                         CTLTYPE_INT, "sourcecheck", NULL,
                        NULL, 0, &?, 0,                         NULL, 0, &?, 0,
                        CTL_NET, PF_INET6, IPPROTO_IPV6,                         CTL_NET, PF_INET6, IPPROTO_IPV6,
                        IPV6CTL_SOURCECHECK, CTL_EOL);                         IPV6CTL_SOURCECHECK, CTL_EOL);
         sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE,          sysctl_createv(clog, 0, NULL, NULL,
                          CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                        CTLTYPE_INT, "sourcecheck_logint", NULL,                         CTLTYPE_INT, "sourcecheck_logint", NULL,
                        NULL, 0, &?, 0,                         NULL, 0, &?, 0,
                        CTL_NET, PF_INET6, IPPROTO_IPV6,                         CTL_NET, PF_INET6, IPPROTO_IPV6,
                        IPV6CTL_SOURCECHECK_LOGINT, CTL_EOL);                         IPV6CTL_SOURCECHECK_LOGINT, CTL_EOL);
 #endif  #endif
         sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLTYPE_INT, "accept_rtadv", NULL,                         CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                          CTLTYPE_INT, "accept_rtadv",
                          SYSCTL_DESCR("Accept router advertisements"),
                        NULL, 0, &ip6_accept_rtadv, 0,                         NULL, 0, &ip6_accept_rtadv, 0,
                        CTL_NET, PF_INET6, IPPROTO_IPV6,                         CTL_NET, PF_INET6, IPPROTO_IPV6,
                        IPV6CTL_ACCEPT_RTADV, CTL_EOL);                         IPV6CTL_ACCEPT_RTADV, CTL_EOL);
         sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLTYPE_INT, "keepfaith", NULL,                         CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                          CTLTYPE_INT, "keepfaith",
                          SYSCTL_DESCR("Activate faith interface"),
                        NULL, 0, &ip6_keepfaith, 0,                         NULL, 0, &ip6_keepfaith, 0,
                        CTL_NET, PF_INET6, IPPROTO_IPV6,                         CTL_NET, PF_INET6, IPPROTO_IPV6,
                        IPV6CTL_KEEPFAITH, CTL_EOL);                         IPV6CTL_KEEPFAITH, CTL_EOL);
         sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLTYPE_INT, "log_interval", NULL,                         CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                          CTLTYPE_INT, "log_interval",
                          SYSCTL_DESCR("Minumum interval between logging "
                                       "unroutable packets"),
                        NULL, 0, &ip6_log_interval, 0,                         NULL, 0, &ip6_log_interval, 0,
                        CTL_NET, PF_INET6, IPPROTO_IPV6,                         CTL_NET, PF_INET6, IPPROTO_IPV6,
                        IPV6CTL_LOG_INTERVAL, CTL_EOL);                         IPV6CTL_LOG_INTERVAL, CTL_EOL);
         sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLTYPE_INT, "hdrnestlimit", NULL,                         CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                          CTLTYPE_INT, "hdrnestlimit",
                          SYSCTL_DESCR("Maximum number of nested IPv6 headers"),
                        NULL, 0, &ip6_hdrnestlimit, 0,                         NULL, 0, &ip6_hdrnestlimit, 0,
                        CTL_NET, PF_INET6, IPPROTO_IPV6,                         CTL_NET, PF_INET6, IPPROTO_IPV6,
                        IPV6CTL_HDRNESTLIMIT, CTL_EOL);                         IPV6CTL_HDRNESTLIMIT, CTL_EOL);
         sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLTYPE_INT, "dad_count", NULL,                         CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                          CTLTYPE_INT, "dad_count",
                          SYSCTL_DESCR("Number of Duplicate Address Detection "
                                       "probes to send"),
                        NULL, 0, &ip6_dad_count, 0,                         NULL, 0, &ip6_dad_count, 0,
                        CTL_NET, PF_INET6, IPPROTO_IPV6,                         CTL_NET, PF_INET6, IPPROTO_IPV6,
                        IPV6CTL_DAD_COUNT, CTL_EOL);                         IPV6CTL_DAD_COUNT, CTL_EOL);
         sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLTYPE_INT, "auto_flowlabel", NULL,                         CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                          CTLTYPE_INT, "auto_flowlabel",
                          SYSCTL_DESCR("Assign random IPv6 flow labels"),
                        NULL, 0, &ip6_auto_flowlabel, 0,                         NULL, 0, &ip6_auto_flowlabel, 0,
                        CTL_NET, PF_INET6, IPPROTO_IPV6,                         CTL_NET, PF_INET6, IPPROTO_IPV6,
                        IPV6CTL_AUTO_FLOWLABEL, CTL_EOL);                         IPV6CTL_AUTO_FLOWLABEL, CTL_EOL);
         sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLTYPE_INT, "defmcasthlim", NULL,                         CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                          CTLTYPE_INT, "defmcasthlim",
                          SYSCTL_DESCR("Default multicast hop limit"),
                        NULL, 0, &ip6_defmcasthlim, 0,                         NULL, 0, &ip6_defmcasthlim, 0,
                        CTL_NET, PF_INET6, IPPROTO_IPV6,                         CTL_NET, PF_INET6, IPPROTO_IPV6,
                        IPV6CTL_DEFMCASTHLIM, CTL_EOL);                         IPV6CTL_DEFMCASTHLIM, CTL_EOL);
 #if NGIF > 0  #if NGIF > 0
         sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLTYPE_INT, "gifhlim", NULL,                         CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                          CTLTYPE_INT, "gifhlim",
                          SYSCTL_DESCR("Default hop limit for a gif tunnel datagram"),
                        NULL, 0, &ip6_gif_hlim, 0,                         NULL, 0, &ip6_gif_hlim, 0,
                        CTL_NET, PF_INET6, IPPROTO_IPV6,                         CTL_NET, PF_INET6, IPPROTO_IPV6,
                        IPV6CTL_GIF_HLIM, CTL_EOL);                         IPV6CTL_GIF_HLIM, CTL_EOL);
 #endif /* NGIF */  #endif /* NGIF */
         sysctl_createv(SYSCTL_PERMANENT,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLTYPE_STRING, "kame_version", NULL,                         CTLFLAG_PERMANENT,
                          CTLTYPE_STRING, "kame_version",
                          SYSCTL_DESCR("KAME Version"),
                        NULL, 0, __KAME_VERSION, 0,                         NULL, 0, __KAME_VERSION, 0,
                        CTL_NET, PF_INET6, IPPROTO_IPV6,                         CTL_NET, PF_INET6, IPPROTO_IPV6,
                        IPV6CTL_KAME_VERSION, CTL_EOL);                         IPV6CTL_KAME_VERSION, CTL_EOL);
         sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLTYPE_INT, "use_deprecated", NULL,                         CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                          CTLTYPE_INT, "use_deprecated",
                          SYSCTL_DESCR("Allow use of deprecated addresses as "
                                       "source addresses"),
                        NULL, 0, &ip6_use_deprecated, 0,                         NULL, 0, &ip6_use_deprecated, 0,
                        CTL_NET, PF_INET6, IPPROTO_IPV6,                         CTL_NET, PF_INET6, IPPROTO_IPV6,
                        IPV6CTL_USE_DEPRECATED, CTL_EOL);                         IPV6CTL_USE_DEPRECATED, CTL_EOL);
         sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE,          sysctl_createv(clog, 0, NULL, NULL,
                          CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                        CTLTYPE_INT, "rr_prune", NULL,                         CTLTYPE_INT, "rr_prune", NULL,
                        NULL, 0, &ip6_rr_prune, 0,                         NULL, 0, &ip6_rr_prune, 0,
                        CTL_NET, PF_INET6, IPPROTO_IPV6,                         CTL_NET, PF_INET6, IPPROTO_IPV6,
                        IPV6CTL_RR_PRUNE, CTL_EOL);                         IPV6CTL_RR_PRUNE, CTL_EOL);
         sysctl_createv(SYSCTL_PERMANENT          sysctl_createv(clog, 0, NULL, NULL,
                          CTLFLAG_PERMANENT
 #ifndef INET6_BINDV6ONLY  #ifndef INET6_BINDV6ONLY
                        |SYSCTL_READWRITE,                         |CTLFLAG_READWRITE,
 #endif  #endif
                        CTLTYPE_INT, "v6only", NULL,                         CTLTYPE_INT, "v6only",
                          SYSCTL_DESCR("Disallow PF_INET6 sockets from connecting "
                                       "to PF_INET sockets"),
                        NULL, 0, &ip6_v6only, 0,                         NULL, 0, &ip6_v6only, 0,
                        CTL_NET, PF_INET6, IPPROTO_IPV6,                         CTL_NET, PF_INET6, IPPROTO_IPV6,
                        IPV6CTL_V6ONLY, CTL_EOL);                         IPV6CTL_V6ONLY, CTL_EOL);
         sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLTYPE_INT, "anonportmin", NULL,                         CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                          CTLTYPE_INT, "anonportmin",
                          SYSCTL_DESCR("Lowest ephemeral port number to assign"),
                        sysctl_net_inet_ip_ports, 0, &ip6_anonportmin, 0,                         sysctl_net_inet_ip_ports, 0, &ip6_anonportmin, 0,
                        CTL_NET, PF_INET6, IPPROTO_IPV6,                         CTL_NET, PF_INET6, IPPROTO_IPV6,
                        IPV6CTL_ANONPORTMIN, CTL_EOL);                         IPV6CTL_ANONPORTMIN, CTL_EOL);
         sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLTYPE_INT, "anonportmax", NULL,                         CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                          CTLTYPE_INT, "anonportmax",
                          SYSCTL_DESCR("Highest ephemeral port number to assign"),
                        sysctl_net_inet_ip_ports, 0, &ip6_anonportmax, 0,                         sysctl_net_inet_ip_ports, 0, &ip6_anonportmax, 0,
                        CTL_NET, PF_INET6, IPPROTO_IPV6,                         CTL_NET, PF_INET6, IPPROTO_IPV6,
                        IPV6CTL_ANONPORTMAX, CTL_EOL);                         IPV6CTL_ANONPORTMAX, CTL_EOL);
 #ifndef IPNOPRIVPORTS  #ifndef IPNOPRIVPORTS
         sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLTYPE_INT, "lowportmin", NULL,                         CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                          CTLTYPE_INT, "lowportmin",
                          SYSCTL_DESCR("Lowest privileged ephemeral port number "
                                       "to assign"),
                        sysctl_net_inet_ip_ports, 0, &ip6_lowportmin, 0,                         sysctl_net_inet_ip_ports, 0, &ip6_lowportmin, 0,
                        CTL_NET, PF_INET6, IPPROTO_IPV6,                         CTL_NET, PF_INET6, IPPROTO_IPV6,
                        IPV6CTL_LOWPORTMIN, CTL_EOL);                         IPV6CTL_LOWPORTMIN, CTL_EOL);
         sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLTYPE_INT, "lowportmax", NULL,                         CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                          CTLTYPE_INT, "lowportmax",
                          SYSCTL_DESCR("Highest privileged ephemeral port number "
                                       "to assign"),
                        sysctl_net_inet_ip_ports, 0, &ip6_lowportmax, 0,                         sysctl_net_inet_ip_ports, 0, &ip6_lowportmax, 0,
                        CTL_NET, PF_INET6, IPPROTO_IPV6,                         CTL_NET, PF_INET6, IPPROTO_IPV6,
                        IPV6CTL_LOWPORTMAX, CTL_EOL);                         IPV6CTL_LOWPORTMAX, CTL_EOL);
 #endif /* IPNOPRIVPORTS */  #endif /* IPNOPRIVPORTS */
         sysctl_createv(SYSCTL_PERMANENT|SYSCTL_READWRITE,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLTYPE_INT, "maxfrags", NULL,                         CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                          CTLTYPE_INT, "maxfrags",
                          SYSCTL_DESCR("Maximum fragments in reassembly queue"),
                        NULL, 0, &ip6_maxfrags, 0,                         NULL, 0, &ip6_maxfrags, 0,
                        CTL_NET, PF_INET6, IPPROTO_IPV6,                         CTL_NET, PF_INET6, IPPROTO_IPV6,
                        IPV6CTL_MAXFRAGS, CTL_EOL);                         IPV6CTL_MAXFRAGS, CTL_EOL);

Legend:
Removed from v.1.71  
changed lines
  Added in v.1.77.10.1

CVSweb <webmaster@jp.NetBSD.org>