[prev in list] [next in list] [prev in thread] [next in thread]
List: openbsd-tech
Subject: fix pf counters with match rules
From: Bret Lambert <blambert () openbsd ! org>
Date: 2013-06-21 15:32:30
Message-ID: 20130621153230.GA18292 () gmail ! com
[Download RAW message or body]
When using match vice pass/block rules when wanting counters, e.g.,
match in from <mahtable> counters
counters were not being updated. reyk@ and I tracked this down to
a failure to check the matched rules for the need to increment stats.
the following diff fixes that here
- Bert
Index: pf.c
===================================================================
RCS file: /cvs/src/sys/net/pf.c,v
retrieving revision 1.835
diff -u -p -r1.835 pf.c
--- pf.c 17 Jun 2013 19:50:06 -0000 1.835
+++ pf.c 21 Jun 2013 15:16:25 -0000
@@ -6526,6 +6526,23 @@ pf_counters_inc(int action, struct pf_pd
SLIST_FOREACH(ri, &s->match_rules, entry) {
ri->r->packets[dirndx]++;
ri->r->bytes[dirndx] += pd->tot_len;
+
+ if (ri->r->src.addr.type == PF_ADDR_TABLE)
+ pfr_update_stats(ri->r->src.addr.p.tbl,
+ &s->key[(s->direction == PF_IN)]->
+ addr[(s->direction == PF_OUT)],
+ pd->af, pd->tot_len,
+ pd->dir == PF_OUT,
+ ri->r->action == PF_PASS,
+ ri->r->src.neg);
+ if (ri->r->dst.addr.type == PF_ADDR_TABLE)
+ pfr_update_stats(ri->r->dst.addr.p.tbl,
+ &s->key[(s->direction == PF_IN)]->
+ addr[(s->direction == PF_IN)],
+ pd->af, pd->tot_len,
+ pd->dir == PF_OUT,
+ ri->r->action == PF_PASS,
+ ri->r->dst.neg);
}
}
if (r->src.addr.type == PF_ADDR_TABLE)
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic