diff options
Diffstat (limited to 'sys')
| -rw-r--r-- | sys/netpfil/pf/pf_if.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/sys/netpfil/pf/pf_if.c b/sys/netpfil/pf/pf_if.c index 3c5bcc95f7cf..a5f26b5624bd 100644 --- a/sys/netpfil/pf/pf_if.c +++ b/sys/netpfil/pf/pf_if.c @@ -608,12 +608,19 @@ pfi_kkif_update(struct pfi_kkif *kif) } /* again for all groups kif is member of */ - if (kif->pfik_ifp != NULL) { - CK_STAILQ_FOREACH(ifgl, &kif->pfik_ifp->if_groups, ifgl_next) - if (ifgl->ifgl_group->ifg_pf_kif) { - pfi_kkif_update((struct pfi_kkif *) - ifgl->ifgl_group->ifg_pf_kif); - } + if (kif->pfik_ifp == NULL) + return; + + CK_STAILQ_FOREACH(ifgl, &kif->pfik_ifp->if_groups, ifgl_next) { + if (strcmp(ifgl->ifgl_group->ifg_group, kif->pfik_name) == 0) { + printf("pf: WARNING conflicting group / interface name %s\n", + kif->pfik_name); + continue; + } + if (ifgl->ifgl_group->ifg_pf_kif) { + pfi_kkif_update((struct pfi_kkif *) + ifgl->ifgl_group->ifg_pf_kif); + } } } |
