diff options
Diffstat (limited to 'net/ipv6/esp6.c')
-rw-r--r-- | net/ipv6/esp6.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/net/ipv6/esp6.c b/net/ipv6/esp6.c index 9eb928598351..b0715432e454 100644 --- a/net/ipv6/esp6.c +++ b/net/ipv6/esp6.c | |||
@@ -354,8 +354,15 @@ static int esp6_init_state(struct xfrm_state *x) | |||
354 | (x->ealg->alg_key_len + 7) / 8)) | 354 | (x->ealg->alg_key_len + 7) / 8)) |
355 | goto error; | 355 | goto error; |
356 | x->props.header_len = sizeof(struct ip_esp_hdr) + esp->conf.ivlen; | 356 | x->props.header_len = sizeof(struct ip_esp_hdr) + esp->conf.ivlen; |
357 | if (x->props.mode == XFRM_MODE_TUNNEL) | 357 | switch (x->props.mode) { |
358 | case XFRM_MODE_BEET: | ||
359 | case XFRM_MODE_TRANSPORT: | ||
360 | break; | ||
361 | case XFRM_MODE_TUNNEL: | ||
358 | x->props.header_len += sizeof(struct ipv6hdr); | 362 | x->props.header_len += sizeof(struct ipv6hdr); |
363 | default: | ||
364 | goto error; | ||
365 | } | ||
359 | x->data = esp; | 366 | x->data = esp; |
360 | return 0; | 367 | return 0; |
361 | 368 | ||