diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2017-05-14 01:17:07 +0200 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2017-05-17 18:07:42 +0200 |
commit | d468f555c69d16007333be92b6202b429e58aa57 (patch) | |
tree | 0cfe504b54129d0bb26b5aa841f6406fe393f06c /src/compat/udp_tunnel | |
parent | a41fa7b3add4a4505b827b3f61c60db8e6e89947 (diff) |
compat: remember to call iptunnel_xmit_stats
Upstream's 039f50629b7f860f36644ed1f34b27da9aa62f43 only came in 4.5
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'src/compat/udp_tunnel')
-rw-r--r-- | src/compat/udp_tunnel/udp_tunnel.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/compat/udp_tunnel/udp_tunnel.c b/src/compat/udp_tunnel/udp_tunnel.c index 94d7df8..4a74d63 100644 --- a/src/compat/udp_tunnel/udp_tunnel.c +++ b/src/compat/udp_tunnel/udp_tunnel.c @@ -179,6 +179,10 @@ void udp_tunnel_xmit_skb(struct rtable *rt, struct sock *sk, struct sk_buff *skb bool xnet, bool nocheck) { struct udphdr *uh; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 12, 0) + struct net_device *dev = skb->dev; + int ret; +#endif __skb_push(skb, sizeof(*uh)); skb_reset_transport_header(skb); @@ -196,12 +200,17 @@ void udp_tunnel_xmit_skb(struct rtable *rt, struct sock *sk, struct sk_buff *skb skb->sk = sk; if (!skb->destructor) skb->destructor = fake_destructor; - - iptunnel_xmit( +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 12, 0) + ret = +#endif + iptunnel_xmit( #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0) - sk, + sk, +#endif + rt, skb, src, dst, IPPROTO_UDP, tos, ttl, df, xnet); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 12, 0) + iptunnel_xmit_stats(ret, &dev->stats, dev->tstats); #endif - rt, skb, src, dst, IPPROTO_UDP, tos, ttl, df, xnet); } EXPORT_SYMBOL_GPL(udp_tunnel_xmit_skb); |