Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 18 Sep 2014 14:45:09 GMT
From:      dpl@FreeBSD.org
To:        svn-soc-all@FreeBSD.org
Subject:   socsvn commit: r274311 - soc2014/dpl/netmap-ipfwjit/sys/netpfil/ipfw
Message-ID:  <201409181445.s8IEj96W027950@socsvn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dpl
Date: Thu Sep 18 14:45:08 2014
New Revision: 274311
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=274311

Log:
  Added the rule_macaddr2, rule_mac_type, rule_diverted, and rule_proto calls.

Modified:
  soc2014/dpl/netmap-ipfwjit/sys/netpfil/ipfw/jit.cc

Modified: soc2014/dpl/netmap-ipfwjit/sys/netpfil/ipfw/jit.cc
==============================================================================
--- soc2014/dpl/netmap-ipfwjit/sys/netpfil/ipfw/jit.cc	Thu Sep 18 14:32:05 2014	(r274310)
+++ soc2014/dpl/netmap-ipfwjit/sys/netpfil/ipfw/jit.cc	Thu Sep 18 14:45:08 2014	(r274311)
@@ -1341,7 +1341,6 @@
 		Value *OpcodeL = Irb.CreateLoad(Opcode);
 		// Opcode is u_int8
 		Value *OpcodeL32 = Irb.CreateZExt(OpcodeL, Int32Ty);
-		RuleForwardMac->dump();
 		Irb.CreateCall(RuleForwardMac, {OpcodeL32});
 	}
 
@@ -1422,11 +1421,19 @@
 	void
 	emit_macaddr2()
 	{
+		// rule_macaddr2(&match, args, cmd);
+		Value *CmdL = Irb.CreateLoad(Cmd);
+		Irb.CreateCall(RuleMacaddr2, {Match, Args, CmdL});
 	}
 
 	void
 	emit_mac_type()
 	{
+		// rule_mac_type(&match, args, cmd, cmdlen, etype);
+		Value *CmdL = Irb.CreateLoad(Cmd);
+		Value *CmdlenL = Irb.CreateLoad(Cmdlen);
+		Value *EtypeL = Irb.CreateLoad(Etype);
+		Irb.CreateCall(RuleMacType, {Match, Args, CmdL, CmdlenL, EtypeL});
 	}
 
 	// XXX Exec not tested.
@@ -1457,11 +1464,18 @@
 	void
 	emit_diverted()
 	{
+		// rule_diverted(&match, args, cmd);
+		Value *CmdL = Irb.CreateLoad(Cmd);
+		Irb.CreateCall(RuleDiverted, {Match, Args, CmdL});
 	}
 
 	void
 	emit_proto()
 	{
+		// rule_proto(&match, proto, cmd);
+		Value *CmdL = Irb.CreateLoad(Cmd);
+		Value *ProtoL = Irb.CreateLoad(Proto);
+		Irb.CreateCall(RuleProto, {Match, ProtoL, CmdL});
 	}
 
 	// XXX Exec not tested.
@@ -1873,7 +1887,7 @@
 	compiler.emit_inner_for_prologue();
 	// Rule to test
 	printf("Testing rule compilation\n");
-	compiler.emit_forward_mac();
+	compiler.emit_proto();
 	printf("emit_inner_for_epilogue()\n");
 	compiler.emit_inner_for_epilogue();
 	printf("emit_outer_for_epilogue()\n");



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201409181445.s8IEj96W027950>