diff options
author | Thomas Winter <Thomas.Winter@alliedtelesis.co.nz> | 2018-01-23 06:46:24 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-01-25 00:30:23 +0300 |
commit | 5c38bd1b82e1f76f9fa96c1e61c9897cabf1ce45 (patch) | |
tree | 658d548a8aeda525c5c76c556ecd788135ec4ce5 | |
parent | d8f8b9542a4d8d560c0292a492f4edd922dd4ece (diff) | |
download | linux-5c38bd1b82e1f76f9fa96c1e61c9897cabf1ce45.tar.xz |
ip_tunnel: Use mark in skb by default
This allows marks set by connmark in iptables
to be used for route lookups.
Signed-off-by: Thomas Winter <thomas.winter@alliedtelesis.co.nz>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>
Cc: Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | net/ipv4/ip_tunnel.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/net/ipv4/ip_tunnel.c b/net/ipv4/ip_tunnel.c index 5ddb1cb52bd4..141f5e865731 100644 --- a/net/ipv4/ip_tunnel.c +++ b/net/ipv4/ip_tunnel.c @@ -711,9 +711,16 @@ void ip_tunnel_xmit(struct sk_buff *skb, struct net_device *dev, } } - init_tunnel_flow(&fl4, protocol, dst, tnl_params->saddr, - tunnel->parms.o_key, RT_TOS(tos), tunnel->parms.link, - tunnel->fwmark); + if (tunnel->fwmark) { + init_tunnel_flow(&fl4, protocol, dst, tnl_params->saddr, + tunnel->parms.o_key, RT_TOS(tos), tunnel->parms.link, + tunnel->fwmark); + } + else { + init_tunnel_flow(&fl4, protocol, dst, tnl_params->saddr, + tunnel->parms.o_key, RT_TOS(tos), tunnel->parms.link, + skb->mark); + } if (ip_tunnel_encap(skb, tunnel, &protocol, &fl4) < 0) goto tx_error; |