diff options
Diffstat (limited to 'sys/net/if_stf.c')
-rw-r--r-- | sys/net/if_stf.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/net/if_stf.c b/sys/net/if_stf.c index d463ff6..12ce174 100644 --- a/sys/net/if_stf.c +++ b/sys/net/if_stf.c @@ -620,15 +620,19 @@ stf_checkaddr4(sc, in, inifp) /* * reject packets with broadcast */ + IN_IFADDR_RLOCK(); for (ia4 = TAILQ_FIRST(&V_in_ifaddrhead); ia4; ia4 = TAILQ_NEXT(ia4, ia_link)) { if ((ia4->ia_ifa.ifa_ifp->if_flags & IFF_BROADCAST) == 0) continue; - if (in->s_addr == ia4->ia_broadaddr.sin_addr.s_addr) + if (in->s_addr == ia4->ia_broadaddr.sin_addr.s_addr) { + IN_IFADDR_RUNLOCK(); return -1; + } } + IN_IFADDR_RUNLOCK(); /* * perform ingress filter |