Page MenuHomeFreeBSD

D30246.diff
No OneTemporary

D30246.diff

diff --git a/sys/netpfil/pf/pf_ioctl.c b/sys/netpfil/pf/pf_ioctl.c
--- a/sys/netpfil/pf/pf_ioctl.c
+++ b/sys/netpfil/pf/pf_ioctl.c
@@ -2828,10 +2828,14 @@
int idx, killed = 0;
unsigned int dir;
u_int16_t srcport, dstport;
+ struct pfi_kkif *kif;
relock_DIOCKILLSTATES:
PF_HASHROW_LOCK(ih);
LIST_FOREACH(s, &ih->states, entry) {
+ /* For floating states look at the original kif. */
+ kif = s->kif == V_pfi_all ? s->orig_kif : s->kif;
+
sk = s->key[PF_SK_WIRE];
if (s->direction == PF_OUT) {
srcaddr = &sk->addr[1];
@@ -2880,7 +2884,7 @@
continue;
if (psk->psk_ifname[0] && strcmp(psk->psk_ifname,
- s->kif->pfik_name))
+ kif->pfik_name))
continue;
if (psk->psk_kill_match) {
@@ -5662,6 +5666,7 @@
{
struct pf_state_key_cmp match_key;
struct pf_state *s;
+ struct pfi_kkif *kif;
int idx;
unsigned int killed = 0, dir;
@@ -5671,9 +5676,12 @@
relock_DIOCCLRSTATES:
PF_HASHROW_LOCK(ih);
LIST_FOREACH(s, &ih->states, entry) {
+ /* For floating states look at the original kif. */
+ kif = s->kif == V_pfi_all ? s->orig_kif : s->kif;
+
if (kill->psk_ifname[0] &&
strcmp(kill->psk_ifname,
- s->kif->pfik_name))
+ kif->pfik_name))
continue;
if (kill->psk_kill_match) {

File Metadata

Mime Type
text/plain
Expires
Sun, Jun 28, 12:14 PM (4 h, 24 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
34432346
Default Alt Text
D30246.diff (1 KB)

Event Timeline