udp_tunnel: Pass UDP socket down through udp_tunnel{, 6}_xmit_skb().
That was we can make sure the output path of ipv4/ipv6 operate on the UDP socket rather than whatever random thing happens to be in skb->sk. Based upon a patch by Jiri Pirko. Signed-off-by: David S. Miller <davem@davemloft.net> Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
This commit is contained in:

committed by
David S. Miller

parent
7026b1ddb6
commit
79b16aadea
@@ -222,7 +222,8 @@ static int vxlan_tnl_send(struct vport *vport, struct sk_buff *skb)
|
||||
{
|
||||
struct net *net = ovs_dp_get_net(vport->dp);
|
||||
struct vxlan_port *vxlan_port = vxlan_vport(vport);
|
||||
__be16 dst_port = inet_sk(vxlan_port->vs->sock->sk)->inet_sport;
|
||||
struct sock *sk = vxlan_port->vs->sock->sk;
|
||||
__be16 dst_port = inet_sk(sk)->inet_sport;
|
||||
const struct ovs_key_ipv4_tunnel *tun_key;
|
||||
struct vxlan_metadata md = {0};
|
||||
struct rtable *rt;
|
||||
@@ -255,7 +256,7 @@ static int vxlan_tnl_send(struct vport *vport, struct sk_buff *skb)
|
||||
vxflags = vxlan_port->exts |
|
||||
(tun_key->tun_flags & TUNNEL_CSUM ? VXLAN_F_UDP_CSUM : 0);
|
||||
|
||||
err = vxlan_xmit_skb(rt, skb, fl.saddr, tun_key->ipv4_dst,
|
||||
err = vxlan_xmit_skb(rt, sk, skb, fl.saddr, tun_key->ipv4_dst,
|
||||
tun_key->ipv4_tos, tun_key->ipv4_ttl, df,
|
||||
src_port, dst_port,
|
||||
&md, false, vxflags);
|
||||
|
Reference in New Issue
Block a user