diff options
-rw-r--r-- | include/net/xfrm.h | 2 | ||||
-rw-r--r-- | net/ipv4/ah4.c | 2 | ||||
-rw-r--r-- | net/ipv4/esp4.c | 5 | ||||
-rw-r--r-- | net/ipv4/ipcomp.c | 3 | ||||
-rw-r--r-- | net/ipv4/xfrm4_input.c | 5 | ||||
-rw-r--r-- | net/ipv4/xfrm4_tunnel.c | 2 | ||||
-rw-r--r-- | net/ipv6/ah6.c | 2 | ||||
-rw-r--r-- | net/ipv6/esp6.c | 2 | ||||
-rw-r--r-- | net/ipv6/ipcomp6.c | 2 | ||||
-rw-r--r-- | net/ipv6/xfrm6_input.c | 2 | ||||
-rw-r--r-- | net/ipv6/xfrm6_tunnel.c | 2 |
11 files changed, 14 insertions, 15 deletions
diff --git a/include/net/xfrm.h b/include/net/xfrm.h index e100291e43f4..c7612f4443ed 100644 --- a/include/net/xfrm.h +++ b/include/net/xfrm.h | |||
@@ -251,7 +251,7 @@ struct xfrm_type | |||
251 | 251 | ||
252 | int (*init_state)(struct xfrm_state *x); | 252 | int (*init_state)(struct xfrm_state *x); |
253 | void (*destructor)(struct xfrm_state *); | 253 | void (*destructor)(struct xfrm_state *); |
254 | int (*input)(struct xfrm_state *, struct xfrm_decap_state *, struct sk_buff *skb); | 254 | int (*input)(struct xfrm_state *, struct sk_buff *skb); |
255 | int (*output)(struct xfrm_state *, struct sk_buff *pskb); | 255 | int (*output)(struct xfrm_state *, struct sk_buff *pskb); |
256 | /* Estimate maximal size of result of transformation of a dgram */ | 256 | /* Estimate maximal size of result of transformation of a dgram */ |
257 | u32 (*get_max_size)(struct xfrm_state *, int size); | 257 | u32 (*get_max_size)(struct xfrm_state *, int size); |
diff --git a/net/ipv4/ah4.c b/net/ipv4/ah4.c index e16d8b42b953..e2e4771fa4c6 100644 --- a/net/ipv4/ah4.c +++ b/net/ipv4/ah4.c | |||
@@ -116,7 +116,7 @@ error: | |||
116 | return err; | 116 | return err; |
117 | } | 117 | } |
118 | 118 | ||
119 | static int ah_input(struct xfrm_state *x, struct xfrm_decap_state *decap, struct sk_buff *skb) | 119 | static int ah_input(struct xfrm_state *x, struct sk_buff *skb) |
120 | { | 120 | { |
121 | int ah_hlen; | 121 | int ah_hlen; |
122 | struct iphdr *iph; | 122 | struct iphdr *iph; |
diff --git a/net/ipv4/esp4.c b/net/ipv4/esp4.c index bf88c620a954..9d1881c07a32 100644 --- a/net/ipv4/esp4.c +++ b/net/ipv4/esp4.c | |||
@@ -133,7 +133,7 @@ error: | |||
133 | * expensive, so we only support truncated data, which is the recommended | 133 | * expensive, so we only support truncated data, which is the recommended |
134 | * and common case. | 134 | * and common case. |
135 | */ | 135 | */ |
136 | static int esp_input(struct xfrm_state *x, struct xfrm_decap_state *decap, struct sk_buff *skb) | 136 | static int esp_input(struct xfrm_state *x, struct sk_buff *skb) |
137 | { | 137 | { |
138 | struct iphdr *iph; | 138 | struct iphdr *iph; |
139 | struct ip_esp_hdr *esph; | 139 | struct ip_esp_hdr *esph; |
@@ -208,9 +208,6 @@ static int esp_input(struct xfrm_state *x, struct xfrm_decap_state *decap, struc | |||
208 | struct xfrm_encap_tmpl *encap = x->encap; | 208 | struct xfrm_encap_tmpl *encap = x->encap; |
209 | struct udphdr *uh; | 209 | struct udphdr *uh; |
210 | 210 | ||
211 | if (encap->encap_type != decap->decap_type) | ||
212 | goto out; | ||
213 | |||
214 | uh = (struct udphdr *)(iph + 1); | 211 | uh = (struct udphdr *)(iph + 1); |
215 | encap_len = (void*)esph - (void*)uh; | 212 | encap_len = (void*)esph - (void*)uh; |
216 | 213 | ||
diff --git a/net/ipv4/ipcomp.c b/net/ipv4/ipcomp.c index c95020f7c81e..0a1d86a0f632 100644 --- a/net/ipv4/ipcomp.c +++ b/net/ipv4/ipcomp.c | |||
@@ -81,8 +81,7 @@ out: | |||
81 | return err; | 81 | return err; |
82 | } | 82 | } |
83 | 83 | ||
84 | static int ipcomp_input(struct xfrm_state *x, | 84 | static int ipcomp_input(struct xfrm_state *x, struct sk_buff *skb) |
85 | struct xfrm_decap_state *decap, struct sk_buff *skb) | ||
86 | { | 85 | { |
87 | u8 nexthdr; | 86 | u8 nexthdr; |
88 | int err = 0; | 87 | int err = 0; |
diff --git a/net/ipv4/xfrm4_input.c b/net/ipv4/xfrm4_input.c index 850d919591d1..04ceb6e13b9d 100644 --- a/net/ipv4/xfrm4_input.c +++ b/net/ipv4/xfrm4_input.c | |||
@@ -90,6 +90,9 @@ int xfrm4_rcv_encap(struct sk_buff *skb, __u16 encap_type) | |||
90 | if (unlikely(x->km.state != XFRM_STATE_VALID)) | 90 | if (unlikely(x->km.state != XFRM_STATE_VALID)) |
91 | goto drop_unlock; | 91 | goto drop_unlock; |
92 | 92 | ||
93 | if (x->encap->encap_type != encap_type) | ||
94 | goto drop_unlock; | ||
95 | |||
93 | if (x->props.replay_window && xfrm_replay_check(x, seq)) | 96 | if (x->props.replay_window && xfrm_replay_check(x, seq)) |
94 | goto drop_unlock; | 97 | goto drop_unlock; |
95 | 98 | ||
@@ -97,7 +100,7 @@ int xfrm4_rcv_encap(struct sk_buff *skb, __u16 encap_type) | |||
97 | goto drop_unlock; | 100 | goto drop_unlock; |
98 | 101 | ||
99 | xfrm_vec[xfrm_nr].decap.decap_type = encap_type; | 102 | xfrm_vec[xfrm_nr].decap.decap_type = encap_type; |
100 | if (x->type->input(x, &(xfrm_vec[xfrm_nr].decap), skb)) | 103 | if (x->type->input(x, skb)) |
101 | goto drop_unlock; | 104 | goto drop_unlock; |
102 | 105 | ||
103 | /* only the first xfrm gets the encap type */ | 106 | /* only the first xfrm gets the encap type */ |
diff --git a/net/ipv4/xfrm4_tunnel.c b/net/ipv4/xfrm4_tunnel.c index 2d670935c2b5..f8ceaa127c83 100644 --- a/net/ipv4/xfrm4_tunnel.c +++ b/net/ipv4/xfrm4_tunnel.c | |||
@@ -21,7 +21,7 @@ static int ipip_output(struct xfrm_state *x, struct sk_buff *skb) | |||
21 | return 0; | 21 | return 0; |
22 | } | 22 | } |
23 | 23 | ||
24 | static int ipip_xfrm_rcv(struct xfrm_state *x, struct xfrm_decap_state *decap, struct sk_buff *skb) | 24 | static int ipip_xfrm_rcv(struct xfrm_state *x, struct sk_buff *skb) |
25 | { | 25 | { |
26 | return 0; | 26 | return 0; |
27 | } | 27 | } |
diff --git a/net/ipv6/ah6.c b/net/ipv6/ah6.c index cf58251df4b3..6778173a3dda 100644 --- a/net/ipv6/ah6.c +++ b/net/ipv6/ah6.c | |||
@@ -229,7 +229,7 @@ error: | |||
229 | return err; | 229 | return err; |
230 | } | 230 | } |
231 | 231 | ||
232 | static int ah6_input(struct xfrm_state *x, struct xfrm_decap_state *decap, struct sk_buff *skb) | 232 | static int ah6_input(struct xfrm_state *x, struct sk_buff *skb) |
233 | { | 233 | { |
234 | /* | 234 | /* |
235 | * Before process AH | 235 | * Before process AH |
diff --git a/net/ipv6/esp6.c b/net/ipv6/esp6.c index 3dcaac7a0972..22f046079037 100644 --- a/net/ipv6/esp6.c +++ b/net/ipv6/esp6.c | |||
@@ -130,7 +130,7 @@ error: | |||
130 | return err; | 130 | return err; |
131 | } | 131 | } |
132 | 132 | ||
133 | static int esp6_input(struct xfrm_state *x, struct xfrm_decap_state *decap, struct sk_buff *skb) | 133 | static int esp6_input(struct xfrm_state *x, struct sk_buff *skb) |
134 | { | 134 | { |
135 | struct ipv6hdr *iph; | 135 | struct ipv6hdr *iph; |
136 | struct ipv6_esp_hdr *esph; | 136 | struct ipv6_esp_hdr *esph; |
diff --git a/net/ipv6/ipcomp6.c b/net/ipv6/ipcomp6.c index d4cfec3f414e..00f3fadfcca7 100644 --- a/net/ipv6/ipcomp6.c +++ b/net/ipv6/ipcomp6.c | |||
@@ -63,7 +63,7 @@ static void **ipcomp6_scratches; | |||
63 | static int ipcomp6_scratch_users; | 63 | static int ipcomp6_scratch_users; |
64 | static LIST_HEAD(ipcomp6_tfms_list); | 64 | static LIST_HEAD(ipcomp6_tfms_list); |
65 | 65 | ||
66 | static int ipcomp6_input(struct xfrm_state *x, struct xfrm_decap_state *decap, struct sk_buff *skb) | 66 | static int ipcomp6_input(struct xfrm_state *x, struct sk_buff *skb) |
67 | { | 67 | { |
68 | int err = 0; | 68 | int err = 0; |
69 | u8 nexthdr = 0; | 69 | u8 nexthdr = 0; |
diff --git a/net/ipv6/xfrm6_input.c b/net/ipv6/xfrm6_input.c index cccf8b76f046..ec7a96e9fa64 100644 --- a/net/ipv6/xfrm6_input.c +++ b/net/ipv6/xfrm6_input.c | |||
@@ -65,7 +65,7 @@ int xfrm6_rcv_spi(struct sk_buff *skb, u32 spi) | |||
65 | if (xfrm_state_check_expire(x)) | 65 | if (xfrm_state_check_expire(x)) |
66 | goto drop_unlock; | 66 | goto drop_unlock; |
67 | 67 | ||
68 | nexthdr = x->type->input(x, &(xfrm_vec[xfrm_nr].decap), skb); | 68 | nexthdr = x->type->input(x, skb); |
69 | if (nexthdr <= 0) | 69 | if (nexthdr <= 0) |
70 | goto drop_unlock; | 70 | goto drop_unlock; |
71 | 71 | ||
diff --git a/net/ipv6/xfrm6_tunnel.c b/net/ipv6/xfrm6_tunnel.c index a8f6776c518d..d37768e5064f 100644 --- a/net/ipv6/xfrm6_tunnel.c +++ b/net/ipv6/xfrm6_tunnel.c | |||
@@ -351,7 +351,7 @@ static int xfrm6_tunnel_output(struct xfrm_state *x, struct sk_buff *skb) | |||
351 | return 0; | 351 | return 0; |
352 | } | 352 | } |
353 | 353 | ||
354 | static int xfrm6_tunnel_input(struct xfrm_state *x, struct xfrm_decap_state *decap, struct sk_buff *skb) | 354 | static int xfrm6_tunnel_input(struct xfrm_state *x, struct sk_buff *skb) |
355 | { | 355 | { |
356 | return 0; | 356 | return 0; |
357 | } | 357 | } |