1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2024-09-13 07:54:38 +03:00
openwrt-xburst/target/linux/generic-2.6/patches-2.6.21/999-backport_ip_hdr_and_friends.patch
juhosg b27747291f [kernel] generic-2.6/2.6.21: refresh patches
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@14453 3c298f89-4303-0410-b956-a3cf2f4a3e73
2009-02-08 19:33:57 +00:00

53 lines
1.1 KiB
Diff

--- a/include/linux/ip.h
+++ b/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! */
--- a/include/linux/skbuff.h
+++ b/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
--- a/include/net/ip.h
+++ b/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;