sched: introduce vlan action
authorJiri Pirko <jiri@resnulli.us>
Wed, 19 Nov 2014 13:05:03 +0000 (14:05 +0100)
committerDavid S. Miller <davem@davemloft.net>
Fri, 21 Nov 2014 19:20:18 +0000 (14:20 -0500)
This tc action allows to work with vlan tagged skbs. Two supported
sub-actions are header pop and header push.

Signed-off-by: Jiri Pirko <jiri@resnulli.us>
Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/tc_act/tc_vlan.h [new file with mode: 0644]
include/uapi/linux/tc_act/tc_vlan.h [new file with mode: 0644]
net/sched/Kconfig
net/sched/Makefile
net/sched/act_vlan.c [new file with mode: 0644]

diff --git a/include/net/tc_act/tc_vlan.h b/include/net/tc_act/tc_vlan.h
new file mode 100644 (file)
index 0000000..c809c1d
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2014 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_VLAN_H
+#define __NET_TC_VLAN_H
+
+#include <net/act_api.h>
+
+#define VLAN_F_POP             0x1
+#define VLAN_F_PUSH            0x2
+
+struct tcf_vlan {
+       struct tcf_common       common;
+       int                     tcfv_action;
+       __be16                  tcfv_push_vid;
+       __be16                  tcfv_push_proto;
+};
+#define to_vlan(a) \
+       container_of(a->priv, struct tcf_vlan, common)
+
+#endif /* __NET_TC_VLAN_H */
diff --git a/include/uapi/linux/tc_act/tc_vlan.h b/include/uapi/linux/tc_act/tc_vlan.h
new file mode 100644 (file)
index 0000000..f7b8d44
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2014 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_VLAN_H
+#define __LINUX_TC_VLAN_H
+
+#include <linux/pkt_cls.h>
+
+#define TCA_ACT_VLAN 12
+
+#define TCA_VLAN_ACT_POP       1
+#define TCA_VLAN_ACT_PUSH      2
+
+struct tc_vlan {
+       tc_gen;
+       int v_action;
+};
+
+enum {
+       TCA_VLAN_UNSPEC,
+       TCA_VLAN_TM,
+       TCA_VLAN_PARMS,
+       TCA_VLAN_PUSH_VLAN_ID,
+       TCA_VLAN_PUSH_VLAN_PROTOCOL,
+       __TCA_VLAN_MAX,
+};
+#define TCA_VLAN_MAX (__TCA_VLAN_MAX - 1)
+
+#endif
Simple merge
Simple merge
Simple merge