Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. =================================================================== RCS file: /ftp/cvs/cvsroot/src/sys/netinet/ip_input.c,v rcsdiff: /ftp/cvs/cvsroot/src/sys/netinet/ip_input.c,v: warning: Unknown phrases like `commitid ...;' are present. retrieving revision 1.293 retrieving revision 1.293.2.1 diff -u -p -r1.293 -r1.293.2.1 --- src/sys/netinet/ip_input.c 2010/12/13 14:18:50 1.293 +++ src/sys/netinet/ip_input.c 2011/06/06 09:09:55 1.293.2.1 @@ -1,4 +1,4 @@ -/* $NetBSD: ip_input.c,v 1.293 2010/12/13 14:18:50 matt Exp $ */ +/* $NetBSD: ip_input.c,v 1.293.2.1 2011/06/06 09:09:55 jruoho Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -91,7 +91,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ip_input.c,v 1.293 2010/12/13 14:18:50 matt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ip_input.c,v 1.293.2.1 2011/06/06 09:09:55 jruoho Exp $"); #include "opt_inet.h" #include "opt_compat_netbsd.h" @@ -221,7 +221,6 @@ int ip_checkinterface = 0; struct rttimer_queue *ip_mtudisc_timeout_q = NULL; -int ipqmaxlen = IFQ_MAXLEN; u_long in_ifaddrhash; /* size of hash table - 1 */ int in_ifaddrentries; /* total number of addrs */ struct in_ifaddrhead in_ifaddrhead; @@ -279,6 +278,8 @@ static struct ip_srcrt { struct in_addr route[MAX_IPOPTLEN/sizeof(struct in_addr)]; } ip_srcrt; +static int ip_drainwanted; + static void save_rte(u_char *, struct in_addr); #ifdef MBUFTRACE @@ -319,7 +320,7 @@ ip_init(void) ip_ids = ip_id_init(); ip_id = time_second & 0xfffff; - ipintrq.ifq_maxlen = ipqmaxlen; + ipintrq.ifq_maxlen = IFQ_MAXLEN; TAILQ_INIT(&in_ifaddrhead); in_ifaddrhashtbl = hashinit(IN_IFADDR_HASH_SIZE, HASH_LIST, true, @@ -366,7 +367,6 @@ ipintr(void) struct ifqueue lcl_intrq; memset(&lcl_intrq, 0, sizeof(lcl_intrq)); - ipintrq.ifq_maxlen = ipqmaxlen; mutex_enter(softnet_lock); KERNEL_LOCK(1, NULL); @@ -1284,6 +1284,21 @@ const int inetctlerrmap[PRC_NCMDS] = { [PRC_PARAMPROB] = ENOPROTOOPT, }; +void +ip_fasttimo(void) +{ + if (ip_drainwanted) { + ip_drain(); + ip_drainwanted = 0; + } +} + +void +ip_drainstub(void) +{ + ip_drainwanted = 1; +} + /* * Forward a packet. If some error occurs return the sender * an icmp packet. Note we can't always generate a meaningful