ipfw(4) rule matching always happens in network epoch.

This commit is contained in:
Gleb Smirnoff 2019-10-14 16:37:00 +00:00
parent 3ee93b74c7
commit 961c033ef1
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=353494

View File

@ -408,17 +408,15 @@ iface_match(struct ifnet *ifp, ipfw_insn_if *cmd, struct ip_fw_chain *chain,
#if !defined(USERSPACE) && defined(__FreeBSD__) /* and OSX too ? */
struct ifaddr *ia;
if_addr_rlock(ifp);
NET_EPOCH_ASSERT();
CK_STAILQ_FOREACH(ia, &ifp->if_addrhead, ifa_link) {
if (ia->ifa_addr->sa_family != AF_INET)
continue;
if (cmd->p.ip.s_addr == ((struct sockaddr_in *)
(ia->ifa_addr))->sin_addr.s_addr) {
if_addr_runlock(ifp);
return(1); /* match */
}
(ia->ifa_addr))->sin_addr.s_addr)
return (1); /* match */
}
if_addr_runlock(ifp);
#endif /* __FreeBSD__ */
}
return(0); /* no match, fail ... */