diff options
author | Renato Botelho <renato@netgate.com> | 2015-08-17 13:52:56 -0300 |
---|---|---|
committer | Renato Botelho <renato@netgate.com> | 2015-08-17 13:52:56 -0300 |
commit | 49045005c714cd18a0f844d1a70047abaab7523a (patch) | |
tree | 347521eb4bdd79a5fa33a3ac50de85a4a5ca961d /sys/netpfil | |
parent | c5ca33bf4aac2c254239898ff762733397c0f04d (diff) | |
download | FreeBSD-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.c | 24 |
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; |