Date: Fri, 29 Aug 2014 12:16:14 GMT From: dpl@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r273321 - soc2014/dpl/netmap-ipfwjit/sys/netpfil/ipfw Message-ID: <201408291216.s7TCGEio074982@socsvn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: dpl Date: Fri Aug 29 12:16:14 2014 New Revision: 273321 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=273321 Log: Delete unneeded calls in userspace, and codegen rule_xmit. 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 Fri Aug 29 12:13:49 2014 (r273320) +++ soc2014/dpl/netmap-ipfwjit/sys/netpfil/ipfw/jit.cc Fri Aug 29 12:16:14 2014 (r273321) @@ -135,14 +135,12 @@ Function *send_reject6; #endif /* INET6 */ Function *send_reject; - Function *check_uidgid; Function *set_match; Function *jump_fast; // Not pkg-filtering related funcs. Function *printfFunc; Function *ipfw_find_rule; - Function *crfree; // Used structs. StructType *ifnetTy; @@ -270,16 +268,12 @@ #endif /* INET6 */ send_reject = mod->getFunction("send_reject"); - check_uidgid = mod->getFunction("check_uidgid"); set_match = mod->getFunction("set_match"); jump_fast = mod->getFunction("jump_fast"); // Functions declared at bitcode. printfFunc = mod->getFunction("printf"); ipfw_find_rule = mod->getFunction("ipfw_find_rule"); -#ifdef __FreeBSD__ - crfree = mod->getFunction("crfree"); -#endif } // Allocate and initialize LLVM vars. @@ -310,7 +304,7 @@ // m = args->m (idx: 0) m = irb.CreateAlloca(mbufPtrTy); - irb.CreateStore(irb.CreateStructGEP(args, 0), m); + irb.CreateStore(irb.CreateLoad(irb.CreateStructGEP(args, 0)), m); // ip = (struct ip *)((m)->m_data) (idx: 2) ip = irb.CreateAlloca(ipPtrTy); @@ -725,8 +719,6 @@ irb.CreateCondBr(irb.CreateICmpNE(ucred_cache, ConstantPointerNull::get(ucredPtrTy)), cache_nnull, ret); irb.SetInsertPoint(cache_nnull); - // crfree(ucred_cache); - irb.CreateCall(crfree, ucred_cache); irb.CreateBr(ret); } #endif @@ -750,7 +742,6 @@ i = BasicBlock::Create(con, "rule", func); } - // Create static BasicBlocks. // The entry basic block contains all the initialization // and allocation of resources, and a basic check done @@ -891,6 +882,7 @@ printf("Compilation continues.\n"); } + // check_uidgid() returns 0 on userspace. void emit_jail() { @@ -900,18 +892,10 @@ // * packet with the ports info. // */ // if (offset != 0) - // return; + // return; // if (proto == IPPROTO_TCP || // proto == IPPROTO_UDP) - // *match = check_uidgid( - // (ipfw_insn_u32 *)cmd, - // args, &ucred_lookup, - // #ifdef __FreeBSD__ - // //(struct bsd_ucred **)&ucred_cache); - // (struct ucred **)&ucred_cache); - // #else - // (void *)&ucred_cache); - // #endif + // *match = 0; } @@ -928,8 +912,10 @@ void emit_xmit() { - // XXX Check correctness. //*match = iface_match(oif, (ipfw_insn_if *)cmd, chain, tablearg); + + Value *cmdc = irb.CreateBitCast(cmd, ipfw_insn_ifPtrTy); + irb.CreateStore(irb.CreateCall4(iface_match, oif, cmdc, chain, tablearg), match); } };
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201408291216.s7TCGEio074982>