Separate the locking macros that are used in the packet flow path
from others. This helps easy switch to use pfil(4) lock.
This commit is contained in:
parent
5474386bd3
commit
93bb4f9ed5
@ -1203,9 +1203,9 @@ do { \
|
||||
args->f_id.dst_port = dst_port = ntohs(dst_port);
|
||||
}
|
||||
|
||||
IPFW_RLOCK(chain);
|
||||
IPFW_PF_RLOCK(chain);
|
||||
if (! V_ipfw_vnet_ready) { /* shutting down, leave NOW. */
|
||||
IPFW_RUNLOCK(chain);
|
||||
IPFW_PF_RUNLOCK(chain);
|
||||
return (IP_FW_PASS); /* accept */
|
||||
}
|
||||
if (args->rule.slot) {
|
||||
@ -2459,7 +2459,7 @@ do { \
|
||||
retval = IP_FW_DENY;
|
||||
printf("ipfw: ouch!, skip past end of rules, denying packet\n");
|
||||
}
|
||||
IPFW_RUNLOCK(chain);
|
||||
IPFW_PF_RUNLOCK(chain);
|
||||
#ifdef __FreeBSD__
|
||||
if (ucred_cache != NULL)
|
||||
crfree(ucred_cache);
|
||||
|
@ -278,10 +278,12 @@ struct sockopt; /* used by tcp_var.h */
|
||||
#define IPFW_RLOCK_ASSERT(_chain) rw_assert(&(_chain)->rwmtx, RA_RLOCKED)
|
||||
#define IPFW_WLOCK_ASSERT(_chain) rw_assert(&(_chain)->rwmtx, RA_WLOCKED)
|
||||
|
||||
#define IPFW_RLOCK(p) rw_rlock(&(p)->rwmtx)
|
||||
#define IPFW_RUNLOCK(p) rw_runlock(&(p)->rwmtx)
|
||||
#define IPFW_WLOCK(p) rw_wlock(&(p)->rwmtx)
|
||||
#define IPFW_WUNLOCK(p) rw_wunlock(&(p)->rwmtx)
|
||||
#define IPFW_RLOCK(p) rw_rlock(&(p)->rwmtx)
|
||||
#define IPFW_RUNLOCK(p) rw_runlock(&(p)->rwmtx)
|
||||
#define IPFW_WLOCK(p) rw_wlock(&(p)->rwmtx)
|
||||
#define IPFW_WUNLOCK(p) rw_wunlock(&(p)->rwmtx)
|
||||
#define IPFW_PF_RLOCK(p) IPFW_RLOCK(p)
|
||||
#define IPFW_PF_RUNLOCK(p) IPFW_RUNLOCK(p)
|
||||
|
||||
#define IPFW_UH_RLOCK_ASSERT(_chain) rw_assert(&(_chain)->uh_lock, RA_RLOCKED)
|
||||
#define IPFW_UH_WLOCK_ASSERT(_chain) rw_assert(&(_chain)->uh_lock, RA_WLOCKED)
|
||||
|
Loading…
x
Reference in New Issue
Block a user