socsvn commit: r271699 - soc2014/dpl/netmap-ipfwjit/sys/netpfil/ipfw
dpl at FreeBSD.org
dpl at FreeBSD.org
Fri Aug 1 18:09:55 UTC 2014
Author: dpl
Date: Fri Aug 1 18:09:54 2014
New Revision: 271699
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=271699
Log:
Move the compiling code to a more sensible place.
Modified:
soc2014/dpl/netmap-ipfwjit/sys/netpfil/ipfw/ip_fw2.c
Modified: soc2014/dpl/netmap-ipfwjit/sys/netpfil/ipfw/ip_fw2.c
==============================================================================
--- soc2014/dpl/netmap-ipfwjit/sys/netpfil/ipfw/ip_fw2.c Fri Aug 1 17:24:36 2014 (r271698)
+++ soc2014/dpl/netmap-ipfwjit/sys/netpfil/ipfw/ip_fw2.c Fri Aug 1 18:09:54 2014 (r271699)
@@ -264,17 +264,6 @@
int
ipfw_chk(struct ip_fw_args *args)
{
- if (compiledfuncptr == 0) {
- IPFW_PF_RLOCK(chain);
- if (! V_ipfw_vnet_ready) { /* shutting down, leave NOW. */
- IPFW_PF_RUNLOCK(chain);
- return (IP_FW_PASS); /* accept */
- }
- compiledfuncptr = compile_code(args);
- IPFW_PF_RUNLOCK(chain);
- } else
- return compiledfuncptr();
-
/*
* Local variables holding state while processing a packet:
*
@@ -404,6 +393,19 @@
proto = args->f_id.proto = 0; /* mark f_id invalid */
/* XXX 0 is a valid proto: IP/IPv6 Hop-by-Hop Option */
+ /* If we haven't, JIT-compile the actions to be executed per-rule */
+ if (compiledfuncptr == 0) {
+ IPFW_PF_RLOCK(chain);
+ if (! V_ipfw_vnet_ready) { /* shutting down, leave NOW. */
+ IPFW_PF_RUNLOCK(chain);
+ return (IP_FW_PASS); /* accept */
+ }
+ compiledfuncptr = compile_code(args, chain);
+ IPFW_PF_RUNLOCK(chain);
+ } else
+ return compiledfuncptr();
+
+
/*
* PULLUP_TO(len, p, T) makes sure that len + sizeof(T) is contiguous,
* then it sets p to point at the offset "len" in the mbuf. WARNING: the
More information about the svn-soc-all
mailing list