diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2007-04-10 23:50:43 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-04-26 01:24:59 -0400 |
commit | d56f90a7c96da5187f0cdf07ee7434fe6aa78bbc (patch) | |
tree | 3b9073cecfbb3b6a1e25ab2b5dd2a22a43aef238 /net/ipv4/ah4.c | |
parent | bbe735e4247dba32568a305553b010081c8dea99 (diff) |
[SK_BUFF]: Introduce skb_network_header()
For the places where we need a pointer to the network header, it is still legal
to touch skb->nh.raw directly if just adding to, subtracting from or setting it
to another layer header.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/ah4.c')
-rw-r--r-- | net/ipv4/ah4.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/net/ipv4/ah4.c b/net/ipv4/ah4.c index 7194eb40b6d0..95ddbbd1552a 100644 --- a/net/ipv4/ah4.c +++ b/net/ipv4/ah4.c | |||
@@ -154,7 +154,7 @@ static int ah_input(struct xfrm_state *x, struct sk_buff *skb) | |||
154 | ah = (struct ip_auth_hdr*)skb->data; | 154 | ah = (struct ip_auth_hdr*)skb->data; |
155 | iph = skb->nh.iph; | 155 | iph = skb->nh.iph; |
156 | 156 | ||
157 | ihl = skb->data - skb->nh.raw; | 157 | ihl = skb->data - skb_network_header(skb); |
158 | memcpy(work_buf, iph, ihl); | 158 | memcpy(work_buf, iph, ihl); |
159 | 159 | ||
160 | iph->ttl = 0; | 160 | iph->ttl = 0; |
@@ -181,7 +181,8 @@ static int ah_input(struct xfrm_state *x, struct sk_buff *skb) | |||
181 | } | 181 | } |
182 | } | 182 | } |
183 | ((struct iphdr*)work_buf)->protocol = ah->nexthdr; | 183 | ((struct iphdr*)work_buf)->protocol = ah->nexthdr; |
184 | skb->h.raw = memcpy(skb->nh.raw += ah_hlen, work_buf, ihl); | 184 | skb->nh.raw += ah_hlen; |
185 | skb->h.raw = memcpy(skb_network_header(skb), work_buf, ihl); | ||
185 | __skb_pull(skb, ah_hlen + ihl); | 186 | __skb_pull(skb, ah_hlen + ihl); |
186 | 187 | ||
187 | return 0; | 188 | return 0; |