diff options
| author | Julian Elischer <julian@FreeBSD.org> | 2007-04-03 22:45:50 +0000 |
|---|---|---|
| committer | Julian Elischer <julian@FreeBSD.org> | 2007-04-03 22:45:50 +0000 |
| commit | 1bd69ee131584fb78c0d619282d4e48f451e6865 (patch) | |
| tree | 1cffc34815daa53e6e82d7f6a7cacaf90d0a18ae | |
| parent | 74e69f9e667590c361d803c788003d1730505c52 (diff) | |
Notes
| -rw-r--r-- | sys/netinet/ip_fw2.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/sys/netinet/ip_fw2.c b/sys/netinet/ip_fw2.c index ce6a06638439..cdf746b38adf 100644 --- a/sys/netinet/ip_fw2.c +++ b/sys/netinet/ip_fw2.c @@ -4328,7 +4328,9 @@ ipfw_getrules(struct ip_fw_chain *chain, void *buf, size_t space) char *ep = bp + space; struct ip_fw *rule; int i; + time_t boot_seconds; + boot_seconds = boottime.tv_sec; /* XXX this can take a long time and locking will block packet flow */ IPFW_RLOCK(chain); for (rule = chain->rules; rule ; rule = rule->next) { @@ -4341,8 +4343,15 @@ ipfw_getrules(struct ip_fw_chain *chain, void *buf, size_t space) i = RULESIZE(rule); if (bp + i <= ep) { bcopy(rule, bp, i); + /* + * XXX HACK. Store the disable mask in the "next" pointer + * in a wild attempt to keep the ABI the same. + * Why do we do this on EVERY rule? + */ bcopy(&set_disable, &(((struct ip_fw *)bp)->next_rule), sizeof(set_disable)); + if (((struct ip_fw *)bp)->timestamp) + ((struct ip_fw *)bp)->timestamp += boot_seconds; bp += i; } } |
