Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/net/npf NPF: convert to bpf_jit_generate()/bpf_jit_freec...
details: https://anonhg.NetBSD.org/src/rev/ec75464d6fa8
branches: trunk
changeset: 791393:ec75464d6fa8
user: rmind <rmind%NetBSD.org@localhost>
date: Sat Nov 16 01:18:58 2013 +0000
description:
NPF: convert to bpf_jit_generate()/bpf_jit_freecode().
diffstat:
sys/net/npf/npf_bpf.c | 11 +++++++++--
sys/net/npf/npf_impl.h | 3 ++-
sys/net/npf/npf_ruleset.c | 22 +++++++++-------------
3 files changed, 20 insertions(+), 16 deletions(-)
diffs (106 lines):
diff -r e1c24d302d45 -r ec75464d6fa8 sys/net/npf/npf_bpf.c
--- a/sys/net/npf/npf_bpf.c Sat Nov 16 01:13:52 2013 +0000
+++ b/sys/net/npf/npf_bpf.c Sat Nov 16 01:18:58 2013 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: npf_bpf.c,v 1.3 2013/11/15 00:12:44 rmind Exp $ */
+/* $NetBSD: npf_bpf.c,v 1.4 2013/11/16 01:18:58 rmind Exp $ */
/*-
* Copyright (c) 2009-2013 The NetBSD Foundation, Inc.
@@ -34,12 +34,13 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: npf_bpf.c,v 1.3 2013/11/15 00:12:44 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: npf_bpf.c,v 1.4 2013/11/16 01:18:58 rmind Exp $");
#include <sys/types.h>
#include <sys/param.h>
#include <sys/mbuf.h>
+#include <net/bpf.h>
#define NPF_BPFCOP
#include "npf_impl.h"
@@ -96,6 +97,12 @@
return bpf_filter_ext(npf_bpfctx, code, &args);
}
+void *
+npf_bpf_compile(void *code, size_t size)
+{
+ return bpf_jit_generate(npf_bpfctx, code, size);
+}
+
bool
npf_bpf_validate(const void *code, size_t len)
{
diff -r e1c24d302d45 -r ec75464d6fa8 sys/net/npf/npf_impl.h
--- a/sys/net/npf/npf_impl.h Sat Nov 16 01:13:52 2013 +0000
+++ b/sys/net/npf/npf_impl.h Sat Nov 16 01:18:58 2013 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: npf_impl.h,v 1.39 2013/11/15 00:12:45 rmind Exp $ */
+/* $NetBSD: npf_impl.h,v 1.40 2013/11/16 01:18:58 rmind Exp $ */
/*-
* Copyright (c) 2009-2013 The NetBSD Foundation, Inc.
@@ -209,6 +209,7 @@
void npf_bpf_sysfini(void);
int npf_bpf_filter(npf_cache_t *, nbuf_t *,
const void *, bpfjit_func_t);
+void * npf_bpf_compile(void *, size_t);
bool npf_bpf_validate(const void *, size_t);
/* Tableset interface. */
diff -r e1c24d302d45 -r ec75464d6fa8 sys/net/npf/npf_ruleset.c
--- a/sys/net/npf/npf_ruleset.c Sat Nov 16 01:13:52 2013 +0000
+++ b/sys/net/npf/npf_ruleset.c Sat Nov 16 01:18:58 2013 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: npf_ruleset.c,v 1.27 2013/11/15 00:12:45 rmind Exp $ */
+/* $NetBSD: npf_ruleset.c,v 1.28 2013/11/16 01:18:58 rmind Exp $ */
/*-
* Copyright (c) 2009-2013 The NetBSD Foundation, Inc.
@@ -34,7 +34,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: npf_ruleset.c,v 1.27 2013/11/15 00:12:45 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: npf_ruleset.c,v 1.28 2013/11/16 01:18:58 rmind Exp $");
#include <sys/param.h>
#include <sys/types.h>
@@ -563,17 +563,14 @@
npf_rule_setcode(npf_rule_t *rl, const int type, void *code, size_t size)
{
KASSERT(type == NPF_CODE_BPF);
- rl->r_type = type;
- rl->r_code = code;
- rl->r_clen = size;
-#if 0
- /* Perform BPF JIT if possible. */
- if (membar_consumer(), bpfjit_module_ops.bj_generate_code != NULL) {
- KASSERT(rl->r_jcode == NULL);
- rl->r_jcode = bpfjit_module_ops.bj_generate_code(code, size);
+
+ if ((rl->r_jcode = npf_bpf_compile(code, size)) == NULL) {
+ rl->r_code = code;
+ rl->r_clen = size;
+ } else {
rl->r_code = NULL;
}
-#endif
+ rl->r_type = type;
}
/*
@@ -609,8 +606,7 @@
}
if (rl->r_jcode) {
/* Free JIT code. */
- KASSERT(bpfjit_module_ops.bj_free_code != NULL);
- bpfjit_module_ops.bj_free_code(rl->r_jcode);
+ bpf_jit_freecode(rl->r_jcode);
}
if (rl->r_dict) {
/* Destroy the dictionary. */
Home |
Main Index |
Thread Index |
Old Index