aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorThomas Graf <tgraf@suug.ch>2005-06-23 21:00:58 -0700
committerDavid S. Miller <davem@davemloft.net>2005-06-23 21:00:58 -0700
commitd675c989ed2d4ba23dff615330b04371aea83534 (patch)
tree856df6f7dc1fba81b134e2363e42dbf6022fa671 /include
parent3fc7e8a6d842f72d16d2623b1022814a635ab961 (diff)
downloadkernel_goldelico_gta04-d675c989ed2d4ba23dff615330b04371aea83534.zip
kernel_goldelico_gta04-d675c989ed2d4ba23dff615330b04371aea83534.tar.gz
kernel_goldelico_gta04-d675c989ed2d4ba23dff615330b04371aea83534.tar.bz2
[PKT_SCHED]: Packet classification based on textsearch (ematch)
Signed-off-by: Thomas Graf <tgraf@suug.ch> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
-rw-r--r--include/linux/pkt_cls.h1
-rw-r--r--include/linux/rtnetlink.h7
-rw-r--r--include/linux/tc_ematch/tc_em_text.h19
3 files changed, 25 insertions, 2 deletions
diff --git a/include/linux/pkt_cls.h b/include/linux/pkt_cls.h
index d2aa214..25d2d67 100644
--- a/include/linux/pkt_cls.h
+++ b/include/linux/pkt_cls.h
@@ -408,6 +408,7 @@ enum
TCF_EM_NBYTE,
TCF_EM_U32,
TCF_EM_META,
+ TCF_EM_TEXT,
__TCF_EM_MAX
};
diff --git a/include/linux/rtnetlink.h b/include/linux/rtnetlink.h
index e68dbf0..d021888 100644
--- a/include/linux/rtnetlink.h
+++ b/include/linux/rtnetlink.h
@@ -892,10 +892,13 @@ extern void __rta_fill(struct sk_buff *skb, int attrtype, int attrlen, const voi
goto rtattr_failure; \
__rta_fill(skb, attrtype, attrlen, data); })
-#define RTA_PUT_NOHDR(skb, attrlen, data) \
+#define RTA_APPEND(skb, attrlen, data) \
({ if (unlikely(skb_tailroom(skb) < (int)(attrlen))) \
goto rtattr_failure; \
- memcpy(skb_put(skb, RTA_ALIGN(attrlen)), data, attrlen); })
+ memcpy(skb_put(skb, attrlen), data, attrlen); })
+
+#define RTA_PUT_NOHDR(skb, attrlen, data) \
+ RTA_APPEND(skb, RTA_ALIGN(attrlen), data)
#define RTA_PUT_U8(skb, attrtype, value) \
({ u8 _tmp = (value); \
diff --git a/include/linux/tc_ematch/tc_em_text.h b/include/linux/tc_ematch/tc_em_text.h
new file mode 100644
index 0000000..7cd43e9
--- /dev/null
+++ b/include/linux/tc_ematch/tc_em_text.h
@@ -0,0 +1,19 @@
+#ifndef __LINUX_TC_EM_TEXT_H
+#define __LINUX_TC_EM_TEXT_H
+
+#include <linux/pkt_cls.h>
+
+#define TC_EM_TEXT_ALGOSIZ 16
+
+struct tcf_em_text
+{
+ char algo[TC_EM_TEXT_ALGOSIZ];
+ __u16 from_offset;
+ __u16 to_offset;
+ __u16 pattern_len;
+ __u8 from_layer:4;
+ __u8 to_layer:4;
+ __u8 pad;
+};
+
+#endif