diff options
author | David Miller <davem@davemloft.net> | 2015-04-05 22:19:09 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-04-07 15:29:08 -0400 |
commit | 79b16aadea32cce077acbe9e229fcb58a7801687 (patch) | |
tree | 8cfacda45a2b3d12a3831511199a13d33f245890 /net/openvswitch/vport-vxlan.c | |
parent | 7026b1ddb6b8d4e6ee33dc2bd06c0ca8746fa7ab (diff) |
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>
Diffstat (limited to 'net/openvswitch/vport-vxlan.c')
-rw-r--r-- | net/openvswitch/vport-vxlan.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/net/openvswitch/vport-vxlan.c b/net/openvswitch/vport-vxlan.c index 3277a7520e31..6d39766e7828 100644 --- a/net/openvswitch/vport-vxlan.c +++ b/net/openvswitch/vport-vxlan.c | |||
@@ -222,7 +222,8 @@ static int vxlan_tnl_send(struct vport *vport, struct sk_buff *skb) | |||
222 | { | 222 | { |
223 | struct net *net = ovs_dp_get_net(vport->dp); | 223 | struct net *net = ovs_dp_get_net(vport->dp); |
224 | struct vxlan_port *vxlan_port = vxlan_vport(vport); | 224 | struct vxlan_port *vxlan_port = vxlan_vport(vport); |
225 | __be16 dst_port = inet_sk(vxlan_port->vs->sock->sk)->inet_sport; | 225 | struct sock *sk = vxlan_port->vs->sock->sk; |
226 | __be16 dst_port = inet_sk(sk)->inet_sport; | ||
226 | const struct ovs_key_ipv4_tunnel *tun_key; | 227 | const struct ovs_key_ipv4_tunnel *tun_key; |
227 | struct vxlan_metadata md = {0}; | 228 | struct vxlan_metadata md = {0}; |
228 | struct rtable *rt; | 229 | struct rtable *rt; |
@@ -255,7 +256,7 @@ static int vxlan_tnl_send(struct vport *vport, struct sk_buff *skb) | |||
255 | vxflags = vxlan_port->exts | | 256 | vxflags = vxlan_port->exts | |
256 | (tun_key->tun_flags & TUNNEL_CSUM ? VXLAN_F_UDP_CSUM : 0); | 257 | (tun_key->tun_flags & TUNNEL_CSUM ? VXLAN_F_UDP_CSUM : 0); |
257 | 258 | ||
258 | err = vxlan_xmit_skb(rt, skb, fl.saddr, tun_key->ipv4_dst, | 259 | err = vxlan_xmit_skb(rt, sk, skb, fl.saddr, tun_key->ipv4_dst, |
259 | tun_key->ipv4_tos, tun_key->ipv4_ttl, df, | 260 | tun_key->ipv4_tos, tun_key->ipv4_ttl, df, |
260 | src_port, dst_port, | 261 | src_port, dst_port, |
261 | &md, false, vxflags); | 262 | &md, false, vxflags); |