|
@@ -63,7 +63,6 @@ static int xfrm6_mode_tunnel_output(struct xfrm_state *x, struct sk_buff *skb)
|
|
|
static int xfrm6_mode_tunnel_input(struct xfrm_state *x, struct sk_buff *skb)
|
|
|
{
|
|
|
int err = -EINVAL;
|
|
|
- const unsigned char *old_mac;
|
|
|
|
|
|
if (XFRM_MODE_SKB_CB(skb)->protocol != IPPROTO_IPV6)
|
|
|
goto out;
|
|
@@ -80,10 +79,9 @@ static int xfrm6_mode_tunnel_input(struct xfrm_state *x, struct sk_buff *skb)
|
|
|
if (!(x->props.flags & XFRM_STATE_NOECN))
|
|
|
ipip6_ecn_decapsulate(skb);
|
|
|
|
|
|
- old_mac = skb_mac_header(skb);
|
|
|
- skb_set_mac_header(skb, -skb->mac_len);
|
|
|
- memmove(skb_mac_header(skb), old_mac, skb->mac_len);
|
|
|
skb_reset_network_header(skb);
|
|
|
+ skb_mac_header_rebuild(skb);
|
|
|
+
|
|
|
err = 0;
|
|
|
|
|
|
out:
|