Update the work on ipfw tables, reduce diffs.
[ipfw.git] / dummynet / ip_dummynet.c
index 473a761..5b36ecc 100644 (file)
@@ -56,6 +56,8 @@ __FBSDID("$FreeBSD: src/sys/netinet/ip_dummynet.c,v 1.110.2.4 2008/10/31 12:58:1
  * include files marked with XXX are probably not needed
  */
 
+#include "missing.h"
+
 #include <sys/limits.h>
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -64,9 +66,9 @@ __FBSDID("$FreeBSD: src/sys/netinet/ip_dummynet.c,v 1.110.2.4 2008/10/31 12:58:1
 #include <sys/kernel.h>
 #include <sys/lock.h>
 #include <sys/module.h>
-#include <sys/mutex.h>
 #include <sys/priv.h>
 #include <sys/proc.h>
+#include <sys/rwlock.h>
 #include <sys/socket.h>
 #include <sys/socketvar.h>
 #include <sys/time.h>
@@ -85,8 +87,6 @@ __FBSDID("$FreeBSD: src/sys/netinet/ip_dummynet.c,v 1.110.2.4 2008/10/31 12:58:1
 #include <netinet/ip6.h>       /* for ip6_input, ip6_output prototypes */
 #include <netinet6/ip6_var.h>
 
-#include "missing.h"
-
 /*
  * We keep a private variable for the simulation time, but we could
  * probably use an existing one ("softticks" in sys/kern/kern_timeout.c)
@@ -248,8 +248,8 @@ static void dummynet(void *);
 static void    dummynet_flush(void);
 static void    dummynet_send(struct mbuf *);
 void           dummynet_drain(void);
-static ip_dn_io_t dummynet_io;
 static void    dn_rule_delete(void *);
+static int     dummynet_io(struct mbuf **, int , struct ip_fw_args *);
 
 /*
  * Heap management functions.
@@ -1244,7 +1244,7 @@ red_drops(struct dn_flow_set *fs, struct dn_flow_queue *q, int len)
                        u_int t = div64(curr_time - q->q_time,
                            fs->lookup_step);
 
-                       q->avg = (t >= 0 && t < fs->lookup_depth) ?
+                       q->avg = (t < fs->lookup_depth) ?
                            SCALE_MUL(q->avg, fs->w_q_lookup[t]) : 0;
                }
        }