]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
Merge remote-tracking branch 'ipsec/master'
authorStephen Rothwell <sfr@canb.auug.org.au>
Thu, 15 May 2014 23:49:18 +0000 (09:49 +1000)
committerStephen Rothwell <sfr@canb.auug.org.au>
Thu, 15 May 2014 23:49:18 +0000 (09:49 +1000)
Conflicts:
net/ipv4/ip_vti.c

1  2 
net/ipv4/ip_vti.c
net/ipv4/xfrm4_output.c
net/ipv6/xfrm6_output.c

index afcee51b90ede30a846bbd7a5c16b6996d955889,d3f64d7f355e93ca423656e76084b8c2c9f73298..f285b54ae7c7d26d5ea95b3e75795e6906068c26
@@@ -349,7 -351,7 +352,6 @@@ static int vti_tunnel_init(struct net_d
        memcpy(dev->dev_addr, &iph->saddr, 4);
        memcpy(dev->broadcast, &iph->daddr, 4);
  
-       dev->hard_header_len    = LL_MAX_HEADER + sizeof(struct iphdr);
 -      dev->type               = ARPHRD_TUNNEL;
        dev->mtu                = ETH_DATA_LEN;
        dev->flags              = IFF_NOARP;
        dev->iflink             = 0;
index 40e701f2e1e0324af6f0af781ac6715866ad88d3,f3800bf79d86cb4ac856d435b334f126dc2fe6f6..186a8ecf92fa84bda9d0f6b050131da603c7694a
@@@ -78,22 -89,15 +89,15 @@@ static int __xfrm4_output(struct sk_buf
                IPCB(skb)->flags |= IPSKB_REROUTED;
                return dst_output(skb);
        }
-       IPCB(skb)->flags |= IPSKB_XFRM_TRANSFORMED;
  #endif
  
-       skb->protocol = htons(ETH_P_IP);
-       return xfrm_output(skb);
+       return x->outer_mode->afinfo->output_finish(skb);
  }
  
 -int xfrm4_output(struct sk_buff *skb)
 +int xfrm4_output(struct sock *sk, struct sk_buff *skb)
  {
-       struct dst_entry *dst = skb_dst(skb);
-       struct xfrm_state *x = dst->xfrm;
        return NF_HOOK_COND(NFPROTO_IPV4, NF_INET_POST_ROUTING, skb,
-                           NULL, dst->dev,
-                           x->outer_mode->afinfo->output_finish,
+                           NULL, skb_dst(skb)->dev, __xfrm4_output,
                            !(IPCB(skb)->flags & IPSKB_REROUTED));
  }
  
index 19ef329bdbf8e7418fa1d352bb6c90218935831e,ba624331451c5cf2fababb86a424a4ddef5bfd27..b930d080c66f231f338c7ea860c8c1d798d91fea
@@@ -163,8 -166,9 +166,9 @@@ static int __xfrm6_output(struct sk_buf
        return x->outer_mode->afinfo->output_finish(skb);
  }
  
 -int xfrm6_output(struct sk_buff *skb)
 +int xfrm6_output(struct sock *sk, struct sk_buff *skb)
  {
-       return NF_HOOK(NFPROTO_IPV6, NF_INET_POST_ROUTING, skb, NULL,
-                      skb_dst(skb)->dev, __xfrm6_output);
+       return NF_HOOK_COND(NFPROTO_IPV6, NF_INET_POST_ROUTING, skb,
+                           NULL, skb_dst(skb)->dev, __xfrm6_output,
+                           !(IP6CB(skb)->flags & IP6SKB_REROUTED));
  }