[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.169.2.5 and 1.198

version 1.169.2.5, 2005/02/04 11:47:48 version 1.198, 2004/04/01 22:47:55
Line 200  int ipprintfs = 0;
Line 200  int ipprintfs = 0;
 #endif  #endif
   
 int     ip_do_randomid = 0;  int     ip_do_randomid = 0;
 int     ip_do_loopback_cksum = 0;  
   
 /*  /*
  * XXX - Setting ip_checkinterface mostly implements the receive side of   * XXX - Setting ip_checkinterface mostly implements the receive side of
Line 220  int ip_checkinterface = 0;
Line 219  int ip_checkinterface = 0;
   
 struct rttimer_queue *ip_mtudisc_timeout_q = NULL;  struct rttimer_queue *ip_mtudisc_timeout_q = NULL;
   
   extern  struct domain inetdomain;
 int     ipqmaxlen = IFQ_MAXLEN;  int     ipqmaxlen = IFQ_MAXLEN;
 u_long  in_ifaddrhash;                          /* size of hash table - 1 */  u_long  in_ifaddrhash;                          /* size of hash table - 1 */
 int     in_ifaddrentries;                       /* total number of addrs */  int     in_ifaddrentries;                       /* total number of addrs */
Line 241  struct pfil_head inet_pfil_hook;
Line 241  struct pfil_head inet_pfil_hook;
  * recalculate IP parameters derived from nmbclusters.   * recalculate IP parameters derived from nmbclusters.
  */   */
 static int      ip_nmbclusters;                 /* copy of nmbclusters */  static int      ip_nmbclusters;                 /* copy of nmbclusters */
 static void     ip_nmbclusters_changed(void);   /* recalc limits */  static void     ip_nmbclusters_changed __P((void));     /* recalc limits */
   
 #define CHECK_NMBCLUSTER_PARAMS()                               \  #define CHECK_NMBCLUSTER_PARAMS()                               \
 do {                                                            \  do {                                                            \
Line 275  int ip_maxfrags;          /* limit on fr
Line 275  int ip_maxfrags;          /* limit on fr
  * repeatedly deleting single packets under heavy fragmentation load   * repeatedly deleting single packets under heavy fragmentation load
  * (e.g., from lossy NFS peers).   * (e.g., from lossy NFS peers).
  */   */
 static u_int    ip_reass_ttl_decr(u_int ticks);  static u_int    ip_reass_ttl_decr __P((u_int ticks));
 static void     ip_reass_drophalf(void);  static void     ip_reass_drophalf __P((void));
   
   
 static __inline int ipq_lock_try(void);  static __inline int ipq_lock_try __P((void));
 static __inline void ipq_unlock(void);  static __inline void ipq_unlock __P((void));
   
 static __inline int  static __inline int
 ipq_lock_try(void)  ipq_lock_try()
 {  {
         int s;          int s;
   
Line 302  ipq_lock_try(void)
Line 302  ipq_lock_try(void)
 }  }
   
 static __inline void  static __inline void
 ipq_unlock(void)  ipq_unlock()
 {  {
         int s;          int s;
   
Line 333  do {         \
Line 333  do {         \
   
 #define IPQ_UNLOCK()            ipq_unlock()  #define IPQ_UNLOCK()            ipq_unlock()
   
 POOL_INIT(inmulti_pool, sizeof(struct in_multi), 0, 0, 0, "inmltpl", NULL);  struct pool inmulti_pool;
 POOL_INIT(ipqent_pool, sizeof(struct ipqent), 0, 0, 0, "ipqepl", NULL);  struct pool ipqent_pool;
   
 #ifdef INET_CSUM_COUNTERS  #ifdef INET_CSUM_COUNTERS
 #include <sys/device.h>  #include <sys/device.h>
Line 348  struct evcnt ip_swcsum = EVCNT_INITIALIZ
Line 348  struct evcnt ip_swcsum = EVCNT_INITIALIZ
   
 #define INET_CSUM_COUNTER_INCR(ev)      (ev)->ev_count++  #define INET_CSUM_COUNTER_INCR(ev)      (ev)->ev_count++
   
 EVCNT_ATTACH_STATIC(ip_hwcsum_bad);  
 EVCNT_ATTACH_STATIC(ip_hwcsum_ok);  
 EVCNT_ATTACH_STATIC(ip_swcsum);  
   
 #else  #else
   
 #define INET_CSUM_COUNTER_INCR(ev)      /* nothing */  #define INET_CSUM_COUNTER_INCR(ev)      /* nothing */
Line 373  static struct ip_srcrt {
Line 369  static struct ip_srcrt {
         struct  in_addr route[MAX_IPOPTLEN/sizeof(struct in_addr)];          struct  in_addr route[MAX_IPOPTLEN/sizeof(struct in_addr)];
 } ip_srcrt;  } ip_srcrt;
   
 static void save_rte(u_char *, struct in_addr);  static void save_rte __P((u_char *, struct in_addr));
   
 #ifdef MBUFTRACE  #ifdef MBUFTRACE
 struct mowner ip_rx_mowner = { "internet", "rx" };  struct mowner ip_rx_mowner = { "internet", "rx" };
Line 395  ip_nmbclusters_changed(void)
Line 391  ip_nmbclusters_changed(void)
  * All protocols not implemented in kernel go to raw IP protocol handler.   * All protocols not implemented in kernel go to raw IP protocol handler.
  */   */
 void  void
 ip_init(void)  ip_init()
 {  {
         const struct protosw *pr;          struct protosw *pr;
         int i;          int i;
   
           pool_init(&inmulti_pool, sizeof(struct in_multi), 0, 0, 0, "inmltpl",
               NULL);
           pool_init(&ipqent_pool, sizeof(struct ipqent), 0, 0, 0, "ipqepl",
               NULL);
   
         pr = pffindproto(PF_INET, IPPROTO_RAW, SOCK_RAW);          pr = pffindproto(PF_INET, IPPROTO_RAW, SOCK_RAW);
         if (pr == 0)          if (pr == 0)
                 panic("ip_init");                  panic("ip_init");
Line 439  ip_init(void)
Line 440  ip_init(void)
                     "error %d\n", i);                      "error %d\n", i);
 #endif /* PFIL_HOOKS */  #endif /* PFIL_HOOKS */
   
   #ifdef INET_CSUM_COUNTERS
           evcnt_attach_static(&ip_hwcsum_bad);
           evcnt_attach_static(&ip_hwcsum_ok);
           evcnt_attach_static(&ip_swcsum);
   #endif /* INET_CSUM_COUNTERS */
   
 #ifdef MBUFTRACE  #ifdef MBUFTRACE
         MOWNER_ATTACH(&ip_tx_mowner);          MOWNER_ATTACH(&ip_tx_mowner);
         MOWNER_ATTACH(&ip_rx_mowner);          MOWNER_ATTACH(&ip_rx_mowner);
Line 452  struct route ipforward_rt;
Line 459  struct route ipforward_rt;
  * IP software interrupt routine   * IP software interrupt routine
  */   */
 void  void
 ipintr(void)  ipintr()
 {  {
         int s;          int s;
         struct mbuf *m;          struct mbuf *m;
Line 573  ip_input(struct mbuf *m)
Line 580  ip_input(struct mbuf *m)
                 break;                  break;
   
         default:          default:
                 /*                  /* Must compute it ourselves. */
                  * Must compute it ourselves.  Maybe skip checksum on                  INET_CSUM_COUNTER_INCR(&ip_swcsum);
                  * loopback interfaces.                  if (in_cksum(m, hlen) != 0)
                  */                          goto bad;
                 if (__predict_true(!(m->m_pkthdr.rcvif->if_flags &  
                                      IFF_LOOPBACK) || ip_do_loopback_cksum)) {  
                         INET_CSUM_COUNTER_INCR(&ip_swcsum);  
                         if (in_cksum(m, hlen) != 0)  
                                 goto badcsum;  
                 }  
                 break;                  break;
         }          }
   
Line 656  ip_input(struct mbuf *m)
Line 657  ip_input(struct mbuf *m)
                         return;                          return;
                 ip = mtod(m, struct ip *);                  ip = mtod(m, struct ip *);
                 hlen = ip->ip_hl << 2;                  hlen = ip->ip_hl << 2;
                 /*  
                  * XXX The setting of "srcrt" here is to prevent ip_forward()  
                  * from generating ICMP redirects for packets that have  
                  * been redirected by a hook back out on to the same LAN that  
                  * they came from and is not an indication that the packet  
                  * is being inffluenced by source routing options.  This  
                  * allows things like  
                  * "rdr tlp0 0/0 port 80 -> 1.1.1.200 3128 tcp"  
                  * where tlp0 is both on the 1.1.1.0/24 network and is the  
                  * default route for hosts on 1.1.1.0/24.  Of course this  
                  * also requires a "map tlp0 ..." to complete the story.  
                  * One might argue whether or not this kind of network config.  
                  * should be supported in this manner...  
                  */  
                 srcrt = (odst.s_addr != ip->ip_dst.s_addr);                  srcrt = (odst.s_addr != ip->ip_dst.s_addr);
         }          }
 #endif /* PFIL_HOOKS */  #endif /* PFIL_HOOKS */
Line 733  ip_input(struct mbuf *m)
Line 720  ip_input(struct mbuf *m)
         if (ia != NULL)          if (ia != NULL)
                 goto ours;                  goto ours;
         if (m->m_pkthdr.rcvif->if_flags & IFF_BROADCAST) {          if (m->m_pkthdr.rcvif->if_flags & IFF_BROADCAST) {
                 IFADDR_FOREACH(ifa, m->m_pkthdr.rcvif) {                  TAILQ_FOREACH(ifa, &m->m_pkthdr.rcvif->if_addrlist, ifa_list) {
                         if (ifa->ifa_addr->sa_family != AF_INET)                          if (ifa->ifa_addr->sa_family != AF_INET)
                                 continue;                                  continue;
                         ia = ifatoia(ifa);                          ia = ifatoia(ifa);
Line 759  ip_input(struct mbuf *m)
Line 746  ip_input(struct mbuf *m)
 #ifdef MROUTING  #ifdef MROUTING
                 extern struct socket *ip_mrouter;                  extern struct socket *ip_mrouter;
   
                   if (M_READONLY(m)) {
                           if ((m = m_pullup(m, hlen)) == 0) {
                                   ipstat.ips_toosmall++;
                                   return;
                           }
                           ip = mtod(m, struct ip *);
                   }
   
                 if (ip_mrouter) {                  if (ip_mrouter) {
                         /*                          /*
                          * If we are acting as a multicast router, all                           * If we are acting as a multicast router, all
Line 890  ours:
Line 885  ours:
          * but it's not worth the time; just let them time out.)           * but it's not worth the time; just let them time out.)
          */           */
         if (ip->ip_off & ~htons(IP_DF|IP_RF)) {          if (ip->ip_off & ~htons(IP_DF|IP_RF)) {
                   if (M_READONLY(m)) {
                           if ((m = m_pullup(m, hlen)) == NULL) {
                                   ipstat.ips_toosmall++;
                                   goto bad;
                           }
                           ip = mtod(m, struct ip *);
                   }
   
                 /*                  /*
                  * Look for queue of fragments                   * Look for queue of fragments
Line 1044  badcsum:
Line 1046  badcsum:
  * is given as fp; otherwise have to make a chain.   * is given as fp; otherwise have to make a chain.
  */   */
 struct mbuf *  struct mbuf *
 ip_reass(struct ipqent *ipqe, struct ipq *fp, struct ipqhead *ipqhead)  ip_reass(ipqe, fp, ipqhead)
           struct ipqent *ipqe;
           struct ipq *fp;
           struct ipqhead *ipqhead;
 {  {
         struct mbuf *m = ipqe->ipqe_m;          struct mbuf *m = ipqe->ipqe_m;
         struct ipqent *nq, *p, *q;          struct ipqent *nq, *p, *q;
Line 1244  dropfrag:
Line 1249  dropfrag:
  * associated datagrams.   * associated datagrams.
  */   */
 void  void
 ip_freef(struct ipq *fp)  ip_freef(fp)
           struct ipq *fp;
 {  {
         struct ipqent *q, *p;          struct ipqent *q, *p;
         u_int nfrags = 0;          u_int nfrags = 0;
Line 1341  ip_reass_drophalf(void)
Line 1347  ip_reass_drophalf(void)
  * queue, discard it.   * queue, discard it.
  */   */
 void  void
 ip_slowtimo(void)  ip_slowtimo()
 {  {
         static u_int dropscanidx = 0;          static u_int dropscanidx = 0;
         u_int i;          u_int i;
Line 1398  ip_slowtimo(void)
Line 1404  ip_slowtimo(void)
  * Drain off all datagram fragments.   * Drain off all datagram fragments.
  */   */
 void  void
 ip_drain(void)  ip_drain()
 {  {
   
         /*          /*
Line 1425  ip_drain(void)
Line 1431  ip_drain(void)
  * 0 if the packet should be processed further.   * 0 if the packet should be processed further.
  */   */
 int  int
 ip_dooptions(struct mbuf *m)  ip_dooptions(m)
           struct mbuf *m;
 {  {
         struct ip *ip = mtod(m, struct ip *);          struct ip *ip = mtod(m, struct ip *);
         u_char *cp, *cp0;          u_char *cp, *cp0;
Line 1654  bad:
Line 1661  bad:
  * return internet address info of interface to be used to get there.   * return internet address info of interface to be used to get there.
  */   */
 struct in_ifaddr *  struct in_ifaddr *
 ip_rtaddr(struct in_addr dst)  ip_rtaddr(dst)
            struct in_addr dst;
 {  {
         struct sockaddr_in *sin;          struct sockaddr_in *sin;
   
Line 1681  ip_rtaddr(struct in_addr dst)
Line 1689  ip_rtaddr(struct in_addr dst)
  * to be picked up later by ip_srcroute if the receiver is interested.   * to be picked up later by ip_srcroute if the receiver is interested.
  */   */
 void  void
 save_rte(u_char *option, struct in_addr dst)  save_rte(option, dst)
           u_char *option;
           struct in_addr dst;
 {  {
         unsigned olen;          unsigned olen;
   
Line 1703  save_rte(u_char *option, struct in_addr 
Line 1713  save_rte(u_char *option, struct in_addr 
  * The first hop is placed before the options, will be removed later.   * The first hop is placed before the options, will be removed later.
  */   */
 struct mbuf *  struct mbuf *
 ip_srcroute(void)  ip_srcroute()
 {  {
         struct in_addr *p, *q;          struct in_addr *p, *q;
         struct mbuf *m;          struct mbuf *m;
Line 1775  ip_srcroute(void)
Line 1785  ip_srcroute(void)
  * XXX should be deleted; last arg currently ignored.   * XXX should be deleted; last arg currently ignored.
  */   */
 void  void
 ip_stripoptions(struct mbuf *m, struct mbuf *mopt)  ip_stripoptions(m, mopt)
           struct mbuf *m;
           struct mbuf *mopt;
 {  {
         int i;          int i;
         struct ip *ip = mtod(m, struct ip *);          struct ip *ip = mtod(m, struct ip *);
Line 1817  const int inetctlerrmap[PRC_NCMDS] = {
Line 1829  const int inetctlerrmap[PRC_NCMDS] = {
  * via a source route.   * via a source route.
  */   */
 void  void
 ip_forward(struct mbuf *m, int srcrt)  ip_forward(m, srcrt)
           struct mbuf *m;
           int srcrt;
 {  {
         struct ip *ip = mtod(m, struct ip *);          struct ip *ip = mtod(m, struct ip *);
         struct sockaddr_in *sin;          struct sockaddr_in *sin;
Line 2045  ip_forward(struct mbuf *m, int srcrt)
Line 2059  ip_forward(struct mbuf *m, int srcrt)
 }  }
   
 void  void
 ip_savecontrol(struct inpcb *inp, struct mbuf **mp, struct ip *ip,  ip_savecontrol(inp, mp, ip, m)
     struct mbuf *m)          struct inpcb *inp;
           struct mbuf **mp;
           struct ip *ip;
           struct mbuf *m;
 {  {
   
         if (inp->inp_socket->so_options & SO_TIMESTAMP) {          if (inp->inp_socket->so_options & SO_TIMESTAMP) {
Line 2160  SYSCTL_SETUP(sysctl_net_inet_ip_setup, "
Line 2177  SYSCTL_SETUP(sysctl_net_inet_ip_setup, "
                        CTL_NET, CTL_EOL);                         CTL_NET, CTL_EOL);
         sysctl_createv(clog, 0, NULL, NULL,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLFLAG_PERMANENT,                         CTLFLAG_PERMANENT,
                        CTLTYPE_NODE, "inet",                         CTLTYPE_NODE, "inet", NULL,
                        SYSCTL_DESCR("PF_INET related settings"),  
                        NULL, 0, NULL, 0,                         NULL, 0, NULL, 0,
                        CTL_NET, PF_INET, CTL_EOL);                         CTL_NET, PF_INET, CTL_EOL);
         sysctl_createv(clog, 0, NULL, NULL,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLFLAG_PERMANENT,                         CTLFLAG_PERMANENT,
                        CTLTYPE_NODE, "ip",                         CTLTYPE_NODE, "ip", NULL,
                        SYSCTL_DESCR("IPv4 related settings"),  
                        NULL, 0, NULL, 0,                         NULL, 0, NULL, 0,
                        CTL_NET, PF_INET, IPPROTO_IP, CTL_EOL);                         CTL_NET, PF_INET, IPPROTO_IP, CTL_EOL);
   
         sysctl_createv(clog, 0, NULL, NULL,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLFLAG_PERMANENT|CTLFLAG_READWRITE,                         CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                        CTLTYPE_INT, "forwarding",                         CTLTYPE_INT, "forwarding", NULL,
                        SYSCTL_DESCR("Enable forwarding of INET datagrams"),  
                        NULL, 0, &ipforwarding, 0,                         NULL, 0, &ipforwarding, 0,
                        CTL_NET, PF_INET, IPPROTO_IP,                         CTL_NET, PF_INET, IPPROTO_IP,
                        IPCTL_FORWARDING, CTL_EOL);                         IPCTL_FORWARDING, CTL_EOL);
         sysctl_createv(clog, 0, NULL, NULL,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLFLAG_PERMANENT|CTLFLAG_READWRITE,                         CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                        CTLTYPE_INT, "redirect",                         CTLTYPE_INT, "redirect", NULL,
                        SYSCTL_DESCR("Enable sending of ICMP redirect messages"),  
                        NULL, 0, &ipsendredirects, 0,                         NULL, 0, &ipsendredirects, 0,
                        CTL_NET, PF_INET, IPPROTO_IP,                         CTL_NET, PF_INET, IPPROTO_IP,
                        IPCTL_SENDREDIRECTS, CTL_EOL);                         IPCTL_SENDREDIRECTS, CTL_EOL);
         sysctl_createv(clog, 0, NULL, NULL,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLFLAG_PERMANENT|CTLFLAG_READWRITE,                         CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                        CTLTYPE_INT, "ttl",                         CTLTYPE_INT, "ttl", NULL,
                        SYSCTL_DESCR("Default TTL for an INET datagram"),  
                        NULL, 0, &ip_defttl, 0,                         NULL, 0, &ip_defttl, 0,
                        CTL_NET, PF_INET, IPPROTO_IP,                         CTL_NET, PF_INET, IPPROTO_IP,
                        IPCTL_DEFTTL, CTL_EOL);                         IPCTL_DEFTTL, CTL_EOL);
 #ifdef IPCTL_DEFMTU  #ifdef IPCTL_DEFMTU
         sysctl_createv(clog, 0, NULL, NULL,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLFLAG_PERMANENT /* |CTLFLAG_READWRITE? */,                         CTLFLAG_PERMANENT /* |CTLFLAG_READWRITE? */,
                        CTLTYPE_INT, "mtu",                         CTLTYPE_INT, "mtu", NULL,
                        SYSCTL_DESCR("Default MTA for an INET route"),  
                        NULL, 0, &ip_mtu, 0,                         NULL, 0, &ip_mtu, 0,
                        CTL_NET, PF_INET, IPPROTO_IP,                         CTL_NET, PF_INET, IPPROTO_IP,
                        IPCTL_DEFMTU, CTL_EOL);                         IPCTL_DEFMTU, CTL_EOL);
 #endif /* IPCTL_DEFMTU */  #endif /* IPCTL_DEFMTU */
         sysctl_createv(clog, 0, NULL, NULL,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLFLAG_PERMANENT|CTLFLAG_READONLY1,                         CTLFLAG_PERMANENT|CTLFLAG_READONLY1,
                        CTLTYPE_INT, "forwsrcrt",                         CTLTYPE_INT, "forwsrcrt", NULL,
                        SYSCTL_DESCR("Enable forwarding of source-routed "  
                                     "datagrams"),  
                        NULL, 0, &ip_forwsrcrt, 0,                         NULL, 0, &ip_forwsrcrt, 0,
                        CTL_NET, PF_INET, IPPROTO_IP,                         CTL_NET, PF_INET, IPPROTO_IP,
                        IPCTL_FORWSRCRT, CTL_EOL);                         IPCTL_FORWSRCRT, CTL_EOL);
         sysctl_createv(clog, 0, NULL, NULL,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLFLAG_PERMANENT|CTLFLAG_READWRITE,                         CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                        CTLTYPE_INT, "directed-broadcast",                         CTLTYPE_INT, "directed-broadcast", NULL,
                        SYSCTL_DESCR("Enable forwarding of broadcast datagrams"),  
                        NULL, 0, &ip_directedbcast, 0,                         NULL, 0, &ip_directedbcast, 0,
                        CTL_NET, PF_INET, IPPROTO_IP,                         CTL_NET, PF_INET, IPPROTO_IP,
                        IPCTL_DIRECTEDBCAST, CTL_EOL);                         IPCTL_DIRECTEDBCAST, CTL_EOL);
         sysctl_createv(clog, 0, NULL, NULL,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLFLAG_PERMANENT|CTLFLAG_READWRITE,                         CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                        CTLTYPE_INT, "allowsrcrt",                         CTLTYPE_INT, "allowsrcrt", NULL,
                        SYSCTL_DESCR("Accept source-routed datagrams"),  
                        NULL, 0, &ip_allowsrcrt, 0,                         NULL, 0, &ip_allowsrcrt, 0,
                        CTL_NET, PF_INET, IPPROTO_IP,                         CTL_NET, PF_INET, IPPROTO_IP,
                        IPCTL_ALLOWSRCRT, CTL_EOL);                         IPCTL_ALLOWSRCRT, CTL_EOL);
         sysctl_createv(clog, 0, NULL, NULL,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLFLAG_PERMANENT|CTLFLAG_READWRITE,                         CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                        CTLTYPE_INT, "subnetsarelocal",                         CTLTYPE_INT, "subnetsarelocal", NULL,
                        SYSCTL_DESCR("Whether logical subnets are considered "  
                                     "local"),  
                        NULL, 0, &subnetsarelocal, 0,                         NULL, 0, &subnetsarelocal, 0,
                        CTL_NET, PF_INET, IPPROTO_IP,                         CTL_NET, PF_INET, IPPROTO_IP,
                        IPCTL_SUBNETSARELOCAL, CTL_EOL);                         IPCTL_SUBNETSARELOCAL, CTL_EOL);
         sysctl_createv(clog, 0, NULL, NULL,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLFLAG_PERMANENT|CTLFLAG_READWRITE,                         CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                        CTLTYPE_INT, "mtudisc",                         CTLTYPE_INT, "mtudisc", NULL,
                        SYSCTL_DESCR("Use RFC1191 Path MTU Discovery"),  
                        NULL, 0, &ip_mtudisc, 0,                         NULL, 0, &ip_mtudisc, 0,
                        CTL_NET, PF_INET, IPPROTO_IP,                         CTL_NET, PF_INET, IPPROTO_IP,
                        IPCTL_MTUDISC, CTL_EOL);                         IPCTL_MTUDISC, CTL_EOL);
         sysctl_createv(clog, 0, NULL, NULL,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLFLAG_PERMANENT|CTLFLAG_READWRITE,                         CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                        CTLTYPE_INT, "anonportmin",                         CTLTYPE_INT, "anonportmin", NULL,
                        SYSCTL_DESCR("Lowest ephemeral port number to assign"),  
                        sysctl_net_inet_ip_ports, 0, &anonportmin, 0,                         sysctl_net_inet_ip_ports, 0, &anonportmin, 0,
                        CTL_NET, PF_INET, IPPROTO_IP,                         CTL_NET, PF_INET, IPPROTO_IP,
                        IPCTL_ANONPORTMIN, CTL_EOL);                         IPCTL_ANONPORTMIN, CTL_EOL);
         sysctl_createv(clog, 0, NULL, NULL,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLFLAG_PERMANENT|CTLFLAG_READWRITE,                         CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                        CTLTYPE_INT, "anonportmax",                         CTLTYPE_INT, "anonportmax", NULL,
                        SYSCTL_DESCR("Highest ephemeral port number to assign"),  
                        sysctl_net_inet_ip_ports, 0, &anonportmax, 0,                         sysctl_net_inet_ip_ports, 0, &anonportmax, 0,
                        CTL_NET, PF_INET, IPPROTO_IP,                         CTL_NET, PF_INET, IPPROTO_IP,
                        IPCTL_ANONPORTMAX, CTL_EOL);                         IPCTL_ANONPORTMAX, CTL_EOL);
         sysctl_createv(clog, 0, NULL, NULL,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLFLAG_PERMANENT|CTLFLAG_READWRITE,                         CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                        CTLTYPE_INT, "mtudisctimeout",                         CTLTYPE_INT, "mtudisctimeout", NULL,
                        SYSCTL_DESCR("Lifetime of a Path MTU Discovered route"),  
                        sysctl_net_inet_ip_pmtudto, 0, &ip_mtudisc_timeout, 0,                         sysctl_net_inet_ip_pmtudto, 0, &ip_mtudisc_timeout, 0,
                        CTL_NET, PF_INET, IPPROTO_IP,                         CTL_NET, PF_INET, IPPROTO_IP,
                        IPCTL_MTUDISCTIMEOUT, CTL_EOL);                         IPCTL_MTUDISCTIMEOUT, CTL_EOL);
 #ifdef GATEWAY  #ifdef GATEWAY
         sysctl_createv(clog, 0, NULL, NULL,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLFLAG_PERMANENT|CTLFLAG_READWRITE,                         CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                        CTLTYPE_INT, "maxflows",                         CTLTYPE_INT, "maxflows", NULL,
                        SYSCTL_DESCR("Number of flows for fast forwarding"),  
                        sysctl_net_inet_ip_maxflows, 0, &ip_maxflows, 0,                         sysctl_net_inet_ip_maxflows, 0, &ip_maxflows, 0,
                        CTL_NET, PF_INET, IPPROTO_IP,                         CTL_NET, PF_INET, IPPROTO_IP,
                        IPCTL_MAXFLOWS, CTL_EOL);                         IPCTL_MAXFLOWS, CTL_EOL);
 #endif /* GATEWAY */  #endif /* GATEWAY */
         sysctl_createv(clog, 0, NULL, NULL,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLFLAG_PERMANENT|CTLFLAG_READWRITE,                         CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                        CTLTYPE_INT, "hostzerobroadcast",                         CTLTYPE_INT, "hostzerobroadcast", NULL,
                        SYSCTL_DESCR("All zeroes address is broadcast address"),  
                        NULL, 0, &hostzeroisbroadcast, 0,                         NULL, 0, &hostzeroisbroadcast, 0,
                        CTL_NET, PF_INET, IPPROTO_IP,                         CTL_NET, PF_INET, IPPROTO_IP,
                        IPCTL_HOSTZEROBROADCAST, CTL_EOL);                         IPCTL_HOSTZEROBROADCAST, CTL_EOL);
 #if NGIF > 0  #if NGIF > 0
         sysctl_createv(clog, 0, NULL, NULL,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLFLAG_PERMANENT|CTLFLAG_READWRITE,                         CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                        CTLTYPE_INT, "gifttl",                         CTLTYPE_INT, "gifttl", NULL,
                        SYSCTL_DESCR("Default TTL for a gif tunnel datagram"),  
                        NULL, 0, &ip_gif_ttl, 0,                         NULL, 0, &ip_gif_ttl, 0,
                        CTL_NET, PF_INET, IPPROTO_IP,                         CTL_NET, PF_INET, IPPROTO_IP,
                        IPCTL_GIF_TTL, CTL_EOL);                         IPCTL_GIF_TTL, CTL_EOL);
Line 2287  SYSCTL_SETUP(sysctl_net_inet_ip_setup, "
Line 2285  SYSCTL_SETUP(sysctl_net_inet_ip_setup, "
 #ifndef IPNOPRIVPORTS  #ifndef IPNOPRIVPORTS
         sysctl_createv(clog, 0, NULL, NULL,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLFLAG_PERMANENT|CTLFLAG_READWRITE,                         CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                        CTLTYPE_INT, "lowportmin",                         CTLTYPE_INT, "lowportmin", NULL,
                        SYSCTL_DESCR("Lowest privileged ephemeral port number "  
                                     "to assign"),  
                        sysctl_net_inet_ip_ports, 0, &lowportmin, 0,                         sysctl_net_inet_ip_ports, 0, &lowportmin, 0,
                        CTL_NET, PF_INET, IPPROTO_IP,                         CTL_NET, PF_INET, IPPROTO_IP,
                        IPCTL_LOWPORTMIN, CTL_EOL);                         IPCTL_LOWPORTMIN, CTL_EOL);
         sysctl_createv(clog, 0, NULL, NULL,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLFLAG_PERMANENT|CTLFLAG_READWRITE,                         CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                        CTLTYPE_INT, "lowportmax",                         CTLTYPE_INT, "lowportmax", NULL,
                        SYSCTL_DESCR("Highest privileged ephemeral port number "  
                                     "to assign"),  
                        sysctl_net_inet_ip_ports, 0, &lowportmax, 0,                         sysctl_net_inet_ip_ports, 0, &lowportmax, 0,
                        CTL_NET, PF_INET, IPPROTO_IP,                         CTL_NET, PF_INET, IPPROTO_IP,
                        IPCTL_LOWPORTMAX, CTL_EOL);                         IPCTL_LOWPORTMAX, CTL_EOL);
 #endif /* IPNOPRIVPORTS */  #endif /* IPNOPRIVPORTS */
         sysctl_createv(clog, 0, NULL, NULL,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLFLAG_PERMANENT|CTLFLAG_READWRITE,                         CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                        CTLTYPE_INT, "maxfragpackets",                         CTLTYPE_INT, "maxfragpackets", NULL,
                        SYSCTL_DESCR("Maximum number of fragments to retain for "  
                                     "possible reassembly"),  
                        NULL, 0, &ip_maxfragpackets, 0,                         NULL, 0, &ip_maxfragpackets, 0,
                        CTL_NET, PF_INET, IPPROTO_IP,                         CTL_NET, PF_INET, IPPROTO_IP,
                        IPCTL_MAXFRAGPACKETS, CTL_EOL);                         IPCTL_MAXFRAGPACKETS, CTL_EOL);
 #if NGRE > 0  #if NGRE > 0
         sysctl_createv(clog, 0, NULL, NULL,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLFLAG_PERMANENT|CTLFLAG_READWRITE,                         CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                        CTLTYPE_INT, "grettl",                         CTLTYPE_INT, "grettl", NULL,
                        SYSCTL_DESCR("Default TTL for a gre tunnel datagram"),  
                        NULL, 0, &ip_gre_ttl, 0,                         NULL, 0, &ip_gre_ttl, 0,
                        CTL_NET, PF_INET, IPPROTO_IP,                         CTL_NET, PF_INET, IPPROTO_IP,
                        IPCTL_GRE_TTL, CTL_EOL);                         IPCTL_GRE_TTL, CTL_EOL);
 #endif /* NGRE */  #endif /* NGRE */
         sysctl_createv(clog, 0, NULL, NULL,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLFLAG_PERMANENT|CTLFLAG_READWRITE,                         CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                        CTLTYPE_INT, "checkinterface",                         CTLTYPE_INT, "checkinterface", NULL,
                        SYSCTL_DESCR("Enable receive side of Strong ES model "  
                                     "from RFC1122"),  
                        NULL, 0, &ip_checkinterface, 0,                         NULL, 0, &ip_checkinterface, 0,
                        CTL_NET, PF_INET, IPPROTO_IP,                         CTL_NET, PF_INET, IPPROTO_IP,
                        IPCTL_CHECKINTERFACE, CTL_EOL);                         IPCTL_CHECKINTERFACE, CTL_EOL);
         sysctl_createv(clog, 0, NULL, NULL,          sysctl_createv(clog, 0, NULL, NULL,
                        CTLFLAG_PERMANENT|CTLFLAG_READWRITE,                         CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
                        CTLTYPE_INT, "random_id",                         CTLTYPE_INT, "random_id", NULL,
                        SYSCTL_DESCR("Assign random ip_id values"),  
                        NULL, 0, &ip_do_randomid, 0,                         NULL, 0, &ip_do_randomid, 0,
                        CTL_NET, PF_INET, IPPROTO_IP,                         CTL_NET, PF_INET, IPPROTO_IP,
                        IPCTL_RANDOMID, CTL_EOL);                         IPCTL_RANDOMID, CTL_EOL);
         sysctl_createv(clog, 0, NULL, NULL,  
                        CTLFLAG_PERMANENT|CTLFLAG_READWRITE,  
                        CTLTYPE_INT, "do_loopback_cksum",  
                        SYSCTL_DESCR("Perform IP checksum on loopback"),  
                        NULL, 0, &ip_do_loopback_cksum, 0,  
                        CTL_NET, PF_INET, IPPROTO_IP,  
                        IPCTL_LOOPBACKCKSUM, CTL_EOL);  
 }  }

Legend:
Removed from v.1.169.2.5  
changed lines
  Added in v.1.198

CVSweb <webmaster@jp.NetBSD.org>