summaryrefslogtreecommitdiff
path: root/target/linux/generic-2.6/patches-2.6.21/999-backport_ip_hdr_and_friends.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/generic-2.6/patches-2.6.21/999-backport_ip_hdr_and_friends.patch')
-rw-r--r--target/linux/generic-2.6/patches-2.6.21/999-backport_ip_hdr_and_friends.patch58
1 files changed, 58 insertions, 0 deletions
diff --git a/target/linux/generic-2.6/patches-2.6.21/999-backport_ip_hdr_and_friends.patch b/target/linux/generic-2.6/patches-2.6.21/999-backport_ip_hdr_and_friends.patch
new file mode 100644
index 0000000..bb8f4f3
--- /dev/null
+++ b/target/linux/generic-2.6/patches-2.6.21/999-backport_ip_hdr_and_friends.patch
@@ -0,0 +1,58 @@
+Index: linux-2.6.21.7/include/linux/ip.h
+===================================================================
+--- linux-2.6.21.7.orig/include/linux/ip.h
++++ linux-2.6.21.7/include/linux/ip.h
+@@ -104,6 +104,16 @@ struct iphdr {
+ /*The options start here. */
+ };
+
++#ifdef __KERNEL__
++#include <linux/skbuff.h>
++
++static inline struct iphdr *ip_hdr(const struct sk_buff *skb)
++{
++ return (struct iphdr *)skb_network_header(skb);
++}
++
++#endif
++
+ struct ip_auth_hdr {
+ __u8 nexthdr;
+ __u8 hdrlen; /* This one is measured in 32 bit units! */
+Index: linux-2.6.21.7/include/linux/skbuff.h
+===================================================================
+--- linux-2.6.21.7.orig/include/linux/skbuff.h
++++ linux-2.6.21.7/include/linux/skbuff.h
+@@ -966,6 +966,16 @@ static inline void skb_reserve(struct sk
+ skb->tail += len;
+ }
+
++static inline unsigned char *skb_network_header(const struct sk_buff *skb)
++{
++ return skb->nh.raw;
++}
++
++static inline unsigned char *skb_tail_pointer(const struct sk_buff *skb)
++{
++ return skb->tail;
++}
++
+ /*
+ * CPUs often take a performance hit when accessing unaligned memory
+ * locations. The actual performance hit varies, it can be small if the
+Index: linux-2.6.21.7/include/net/ip.h
+===================================================================
+--- linux-2.6.21.7.orig/include/net/ip.h
++++ linux-2.6.21.7/include/net/ip.h
+@@ -43,6 +43,11 @@ struct inet_skb_parm
+ #define IPSKB_REROUTED 16
+ };
+
++static inline unsigned int ip_hdrlen(const struct sk_buff *skb)
++{
++ return ip_hdr(skb)->ihl * 4;
++}
++
+ struct ipcm_cookie
+ {
+ __be32 addr;