diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2007-04-21 01:47:35 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-04-26 01:25:10 -0400 |
commit | eddc9ec53be2ecdbf4efe0efd4a83052594f0ac0 (patch) | |
tree | 4a38ab4dbd9d61fdf5a5ea6ed61463e0b9e33ba7 /net/ipv4/xfrm4_input.c | |
parent | e023dd643798c4f06c16466af90b4d250e4b8bd7 (diff) |
[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 'net/ipv4/xfrm4_input.c')
-rw-r--r-- | net/ipv4/xfrm4_input.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/net/ipv4/xfrm4_input.c b/net/ipv4/xfrm4_input.c index d89969c502dd..5ceca951d73f 100644 --- a/net/ipv4/xfrm4_input.c +++ b/net/ipv4/xfrm4_input.c | |||
@@ -28,7 +28,7 @@ static int xfrm4_parse_spi(struct sk_buff *skb, u8 nexthdr, __be32 *spi, __be32 | |||
28 | switch (nexthdr) { | 28 | switch (nexthdr) { |
29 | case IPPROTO_IPIP: | 29 | case IPPROTO_IPIP: |
30 | case IPPROTO_IPV6: | 30 | case IPPROTO_IPV6: |
31 | *spi = skb->nh.iph->saddr; | 31 | *spi = ip_hdr(skb)->saddr; |
32 | *seq = 0; | 32 | *seq = 0; |
33 | return 0; | 33 | return 0; |
34 | } | 34 | } |
@@ -39,9 +39,9 @@ static int xfrm4_parse_spi(struct sk_buff *skb, u8 nexthdr, __be32 *spi, __be32 | |||
39 | #ifdef CONFIG_NETFILTER | 39 | #ifdef CONFIG_NETFILTER |
40 | static inline int xfrm4_rcv_encap_finish(struct sk_buff *skb) | 40 | static inline int xfrm4_rcv_encap_finish(struct sk_buff *skb) |
41 | { | 41 | { |
42 | struct iphdr *iph = skb->nh.iph; | ||
43 | |||
44 | if (skb->dst == NULL) { | 42 | if (skb->dst == NULL) { |
43 | const struct iphdr *iph = ip_hdr(skb); | ||
44 | |||
45 | if (ip_route_input(skb, iph->daddr, iph->saddr, iph->tos, | 45 | if (ip_route_input(skb, iph->daddr, iph->saddr, iph->tos, |
46 | skb->dev)) | 46 | skb->dev)) |
47 | goto drop; | 47 | goto drop; |
@@ -55,18 +55,18 @@ drop: | |||
55 | 55 | ||
56 | int xfrm4_rcv_encap(struct sk_buff *skb, __u16 encap_type) | 56 | int xfrm4_rcv_encap(struct sk_buff *skb, __u16 encap_type) |
57 | { | 57 | { |
58 | int err; | ||
59 | __be32 spi, seq; | 58 | __be32 spi, seq; |
60 | struct xfrm_state *xfrm_vec[XFRM_MAX_DEPTH]; | 59 | struct xfrm_state *xfrm_vec[XFRM_MAX_DEPTH]; |
61 | struct xfrm_state *x; | 60 | struct xfrm_state *x; |
62 | int xfrm_nr = 0; | 61 | int xfrm_nr = 0; |
63 | int decaps = 0; | 62 | int decaps = 0; |
63 | int err = xfrm4_parse_spi(skb, ip_hdr(skb)->protocol, &spi, &seq); | ||
64 | 64 | ||
65 | if ((err = xfrm4_parse_spi(skb, skb->nh.iph->protocol, &spi, &seq)) != 0) | 65 | if (err != 0) |
66 | goto drop; | 66 | goto drop; |
67 | 67 | ||
68 | do { | 68 | do { |
69 | struct iphdr *iph = skb->nh.iph; | 69 | const struct iphdr *iph = ip_hdr(skb); |
70 | 70 | ||
71 | if (xfrm_nr == XFRM_MAX_DEPTH) | 71 | if (xfrm_nr == XFRM_MAX_DEPTH) |
72 | goto drop; | 72 | goto drop; |
@@ -113,7 +113,8 @@ int xfrm4_rcv_encap(struct sk_buff *skb, __u16 encap_type) | |||
113 | break; | 113 | break; |
114 | } | 114 | } |
115 | 115 | ||
116 | if ((err = xfrm_parse_spi(skb, skb->nh.iph->protocol, &spi, &seq)) < 0) | 116 | err = xfrm_parse_spi(skb, ip_hdr(skb)->protocol, &spi, &seq); |
117 | if (err < 0) | ||
117 | goto drop; | 118 | goto drop; |
118 | } while (!err); | 119 | } while (!err); |
119 | 120 | ||
@@ -147,14 +148,14 @@ int xfrm4_rcv_encap(struct sk_buff *skb, __u16 encap_type) | |||
147 | } else { | 148 | } else { |
148 | #ifdef CONFIG_NETFILTER | 149 | #ifdef CONFIG_NETFILTER |
149 | __skb_push(skb, skb->data - skb_network_header(skb)); | 150 | __skb_push(skb, skb->data - skb_network_header(skb)); |
150 | skb->nh.iph->tot_len = htons(skb->len); | 151 | ip_hdr(skb)->tot_len = htons(skb->len); |
151 | ip_send_check(skb->nh.iph); | 152 | ip_send_check(ip_hdr(skb)); |
152 | 153 | ||
153 | NF_HOOK(PF_INET, NF_IP_PRE_ROUTING, skb, skb->dev, NULL, | 154 | NF_HOOK(PF_INET, NF_IP_PRE_ROUTING, skb, skb->dev, NULL, |
154 | xfrm4_rcv_encap_finish); | 155 | xfrm4_rcv_encap_finish); |
155 | return 0; | 156 | return 0; |
156 | #else | 157 | #else |
157 | return -skb->nh.iph->protocol; | 158 | return -ip_hdr(skb)->protocol; |
158 | #endif | 159 | #endif |
159 | } | 160 | } |
160 | 161 | ||