summaryrefslogtreecommitdiffstats
path: root/sys/netpfil
diff options
context:
space:
mode:
authorRenato Botelho <renato@netgate.com>2015-08-17 13:52:56 -0300
committerRenato Botelho <renato@netgate.com>2015-08-17 13:52:56 -0300
commit49045005c714cd18a0f844d1a70047abaab7523a (patch)
tree347521eb4bdd79a5fa33a3ac50de85a4a5ca961d /sys/netpfil
parentc5ca33bf4aac2c254239898ff762733397c0f04d (diff)
downloadFreeBSD-src-49045005c714cd18a0f844d1a70047abaab7523a.zip
FreeBSD-src-49045005c714cd18a0f844d1a70047abaab7523a.tar.gz
Importing pfSense patch schedule_label.RELENG_10.diff
Diffstat (limited to 'sys/netpfil')
-rw-r--r--sys/netpfil/pf/pf_ioctl.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/sys/netpfil/pf/pf_ioctl.c b/sys/netpfil/pf/pf_ioctl.c
index 96abf2c..23b9efc 100644
--- a/sys/netpfil/pf/pf_ioctl.c
+++ b/sys/netpfil/pf/pf_ioctl.c
@@ -1709,6 +1709,30 @@ relock_DIOCKILLSTATES:
break;
}
+ case DIOCKILLSCHEDULE: {
+ struct pf_state *state;
+ struct pfioc_schedule_kill *psk = (struct pfioc_schedule_kill *)addr;
+ int killed = 0;
+ u_int i;
+
+ for (i = 0; i <= pf_hashmask; i++) {
+ struct pf_idhash *ih = &V_pf_idhash[i];
+
+relock_DIOCKILLSCHEDULE:
+ PF_HASHROW_LOCK(ih);
+ LIST_FOREACH(state, &ih->states, entry) {
+ if (!strcmp(psk->schedule, state->rule.ptr->schedule)) {
+ pf_unlink_state(state, PF_ENTER_LOCKED);
+ killed++;
+ goto relock_DIOCKILLSCHEDULE;
+ }
+ }
+ PF_HASHROW_UNLOCK(ih);
+ }
+ psk->numberkilled = killed;
+ break;
+ }
+
case DIOCADDSTATE: {
struct pfioc_state *ps = (struct pfioc_state *)addr;
struct pfsync_state *sp = &ps->state;
OpenPOWER on IntegriCloud