struct sk_buff *skb)
{
struct geneve_port *geneve_port = geneve_vport(vport);
+ struct net *net = ovs_dp_get_net(vport->dp);
struct udphdr *udph = udp_hdr(skb);
struct genevehdr *geneveh = (struct genevehdr *)(udph + 1);
const struct ovs_tunnel_info *tun_info = OVS_CB(skb)->egress_tun_info;
udph->dest = inet_sport(geneve_port->sock->sk);
- udph->source = vxlan_src_port(1, USHRT_MAX, skb);
+ udph->source = udp_flow_src_port(net, skb, 0, 0, true);
udph->check = 0;
udph->len = htons(skb->len - skb_transport_offset(skb));
df = tun_key->tun_flags & TUNNEL_DONT_FRAGMENT ? htons(IP_DF) : 0;
- sent_len = iptunnel_xmit(rt, skb,
+ sent_len = iptunnel_xmit(skb->sk, rt, skb,
saddr, tun_key->ipv4_dst,
IPPROTO_UDP, tun_key->ipv4_tos,
tun_key->ipv4_ttl,
struct ovs_tunnel_info *egress_tun_info)
{
struct geneve_port *geneve_port = geneve_vport(vport);
+ struct net *net = ovs_dp_get_net(vport->dp);
/*
* Get tp_src and tp_dst, refert to geneve_build_header().
ovs_dp_get_net(vport->dp),
OVS_CB(skb)->egress_tun_info,
IPPROTO_UDP, skb->mark,
- vxlan_src_port(1, USHRT_MAX, skb),
+ udp_flow_src_port(net, skb, 0, 0, true),
inet_sport(geneve_port->sock->sk));
}