aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@redhat.com>2007-04-20 22:47:35 -0700
committerDavid S. Miller <davem@sunset.davemloft.net>2007-04-25 22:25:10 -0700
commiteddc9ec53be2ecdbf4efe0efd4a83052594f0ac0 (patch)
tree4a38ab4dbd9d61fdf5a5ea6ed61463e0b9e33ba7 /include
parent[IPMR]: Fix bug introduced when converting to skb_network_reset_header (diff)
downloadlinux-dev-eddc9ec53be2ecdbf4efe0efd4a83052594f0ac0.tar.xz
linux-dev-eddc9ec53be2ecdbf4efe0efd4a83052594f0ac0.zip
[SK_BUFF]: Introduce ip_hdr(), remove skb->nh.iph
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
-rw-r--r--include/linux/ip.h9
-rw-r--r--include/linux/skbuff.h1
-rw-r--r--include/net/inet_ecn.h2
-rw-r--r--include/net/ip.h2
-rw-r--r--include/net/pkt_cls.h4
5 files changed, 13 insertions, 5 deletions
diff --git a/include/linux/ip.h b/include/linux/ip.h
index 1d36b971a8b5..f2f26db16f57 100644
--- a/include/linux/ip.h
+++ b/include/linux/ip.h
@@ -104,6 +104,15 @@ 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! */
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index 870438fba93f..62f841b5b700 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -247,7 +247,6 @@ struct sk_buff {
} h;
union {
- struct iphdr *iph;
struct ipv6hdr *ipv6h;
struct arphdr *arph;
unsigned char *raw;
diff --git a/include/net/inet_ecn.h b/include/net/inet_ecn.h
index b9ed3898e368..6fd4452c15d9 100644
--- a/include/net/inet_ecn.h
+++ b/include/net/inet_ecn.h
@@ -116,7 +116,7 @@ static inline int INET_ECN_set_ce(struct sk_buff *skb)
case __constant_htons(ETH_P_IP):
if (skb_network_header(skb) + sizeof(struct iphdr) <=
skb->tail)
- return IP_ECN_set_ce(skb->nh.iph);
+ return IP_ECN_set_ce(ip_hdr(skb));
break;
case __constant_htons(ETH_P_IPV6):
diff --git a/include/net/ip.h b/include/net/ip.h
index 6f7ba32b199d..75f226d26e0d 100644
--- a/include/net/ip.h
+++ b/include/net/ip.h
@@ -46,7 +46,7 @@ struct inet_skb_parm
static inline unsigned int ip_hdrlen(const struct sk_buff *skb)
{
- return skb->nh.iph->ihl * 4;
+ return ip_hdr(skb)->ihl * 4;
}
struct ipcm_cookie
diff --git a/include/net/pkt_cls.h b/include/net/pkt_cls.h
index 8a6b0e7bded5..880eb7b54164 100644
--- a/include/net/pkt_cls.h
+++ b/include/net/pkt_cls.h
@@ -334,8 +334,8 @@ static inline unsigned char * tcf_get_base_ptr(struct sk_buff *skb, int layer)
return NULL;
}
-static inline int tcf_valid_offset(struct sk_buff *skb, unsigned char *ptr,
- int len)
+static inline int tcf_valid_offset(const struct sk_buff *skb,
+ const unsigned char *ptr, const int len)
{
return unlikely((ptr + len) < skb->tail && ptr > skb->head);
}