--- net/ipv4/netfilter/ipt_hashlimit.c.orig 2005-01-22 19:48:05.000000000 -0500 +++ net/ipv4/netfilter/ipt_hashlimit.c 2005-01-22 19:50:44.000000000 -0500 @@ -605,11 +605,12 @@ static void dl_seq_stop(struct seq_file static inline int dl_seq_real_show(struct dsthash_ent *ent, struct seq_file *s) { + unsigned int now = jiffies; /* recalculate to show accurate numbers */ - rateinfo_recalc(ent, jiffies); + rateinfo_recalc(ent, now); - return seq_printf(s, "%ld %u.%u.%u.%u:%u->%u.%u.%u.%u:%u %u %u %u\n", - (ent->expires - jiffies)/HZ, + return seq_printf(s, "%lu %u.%u.%u.%u:%u->%u.%u.%u.%u:%u %u %u %u\n", + (ent->expires > now) ? (ent->expires - now)/HZ : 0, NIPQUAD(ent->dst.src_ip), ntohs(ent->dst.src_port), NIPQUAD(ent->dst.dst_ip), ntohs(ent->dst.dst_port), ent->rateinfo.credit, ent->rateinfo.credit_cap,