tc: add BPF based action
authorJiri Pirko <jiri@resnulli.us>
Thu, 15 Jan 2015 08:52:39 +0000 (09:52 +0100)
committerDavid S. Miller <davem@davemloft.net>
Sun, 18 Jan 2015 04:51:10 +0000 (23:51 -0500)
This action provides a possibility to exec custom BPF code.

Signed-off-by: Jiri Pirko <jiri@resnulli.us>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/tc_act/tc_bpf.h [new file with mode: 0644]
include/uapi/linux/tc_act/Kbuild
include/uapi/linux/tc_act/tc_bpf.h [new file with mode: 0644]
net/sched/Kconfig
net/sched/Makefile
net/sched/act_bpf.c [new file with mode: 0644]

diff --git a/include/net/tc_act/tc_bpf.h b/include/net/tc_act/tc_bpf.h
new file mode 100644 (file)
index 0000000..86a070f
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2015 Jiri Pirko <jiri@resnulli.us>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ */
+
+#ifndef __NET_TC_BPF_H
+#define __NET_TC_BPF_H
+
+#include <linux/filter.h>
+#include <net/act_api.h>
+
+struct tcf_bpf {
+       struct tcf_common       common;
+       struct bpf_prog         *filter;
+       struct sock_filter      *bpf_ops;
+       u16                     bpf_num_ops;
+};
+#define to_bpf(a) \
+       container_of(a->priv, struct tcf_bpf, common)
+
+#endif /* __NET_TC_BPF_H */
index b057da2..19d5219 100644 (file)
@@ -8,3 +8,4 @@ header-y += tc_nat.h
 header-y += tc_pedit.h
 header-y += tc_skbedit.h
 header-y += tc_vlan.h
+header-y += tc_bpf.h
diff --git a/include/uapi/linux/tc_act/tc_bpf.h b/include/uapi/linux/tc_act/tc_bpf.h
new file mode 100644 (file)
index 0000000..5288bd7
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2015 Jiri Pirko <jiri@resnulli.us>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ */
+
+#ifndef __LINUX_TC_BPF_H
+#define __LINUX_TC_BPF_H
+
+#include <linux/pkt_cls.h>
+
+#define TCA_ACT_BPF 13
+
+struct tc_act_bpf {
+       tc_gen;
+};
+
+enum {
+       TCA_ACT_BPF_UNSPEC,
+       TCA_ACT_BPF_TM,
+       TCA_ACT_BPF_PARMS,
+       TCA_ACT_BPF_OPS_LEN,
+       TCA_ACT_BPF_OPS,
+       __TCA_ACT_BPF_MAX,
+};
+#define TCA_ACT_BPF_MAX (__TCA_ACT_BPF_MAX - 1)
+
+#endif
Simple merge
Simple merge
Simple merge