flags &= VXLAN_F_RCV_FLAGS;
hlist_for_each_entry_rcu(vs, vs_head(net, port), hlist) {
- if (inet_sk(vs->sock->sk)->inet_sport == port &&
+ if (inet_sk(vs->sk)->inet_sport == port &&
vxlan_get_sk_family(vs) == family &&
vs->flags == flags &&
- vs->sock->sk->sk_bound_dev_if == ifindex)
+ vs->sk->sk_bound_dev_if == ifindex)
return vs;
}
return NULL;
return false;
hlist_del_rcu(&vs->hlist);
- udp_tunnel_notify_del_rx_port(vs->sock->sk,
+ udp_tunnel_notify_del_rx_port(vs->sk,
(vs->flags & VXLAN_F_GPE) ?
UDP_TUNNEL_TYPE_VXLAN_GPE :
UDP_TUNNEL_TYPE_VXLAN);
vxlan_vs_del_dev(vxlan);
if (__vxlan_sock_release_prep(sock4)) {
- udp_tunnel_sock_release(sock4->sock->sk);
+ udp_tunnel_sock_release(sock4->sk);
kfree(sock4);
}
#if IS_ENABLED(CONFIG_IPV6)
if (__vxlan_sock_release_prep(sock6)) {
- udp_tunnel_sock_release(sock6->sock->sk);
+ udp_tunnel_sock_release(sock6->sk);
kfree(sock6);
}
#endif
}
if (!ifindex)
- ifindex = sock4->sock->sk->sk_bound_dev_if;
+ ifindex = sock4->sk->sk_bound_dev_if;
rt = udp_tunnel_dst_lookup(skb, dev, vxlan->net, ifindex,
&saddr, pkey, src_port, dst_port,
goto tx_error;
}
- udp_tunnel_xmit_skb(rt, sock4->sock->sk, skb, saddr,
+ udp_tunnel_xmit_skb(rt, sock4->sk, skb, saddr,
pkey->u.ipv4.dst, tos, ttl, df,
src_port, dst_port, xnet, !udp_sum,
ipcb_flags);
}
if (!ifindex)
- ifindex = sock6->sock->sk->sk_bound_dev_if;
+ ifindex = sock6->sk->sk_bound_dev_if;
- ndst = udp_tunnel6_dst_lookup(skb, dev, vxlan->net, sock6->sock->sk,
+ ndst = udp_tunnel6_dst_lookup(skb, dev, vxlan->net, sock6->sk,
ifindex, &saddr, pkey,
src_port, dst_port, tos,
use_cache ? dst_cache : NULL);
goto tx_error;
}
- udp_tunnel6_xmit_skb(ndst, sock6->sock->sk, skb, dev,
+ udp_tunnel6_xmit_skb(ndst, sock6->sk, skb, dev,
&saddr, &pkey->u.ipv6.dst, tos, ttl,
pkey->label, src_port, dst_port, !udp_sum,
ip6cb_flags);
if (!sock6)
return -EIO;
- ndst = udp_tunnel6_dst_lookup(skb, dev, vxlan->net, sock6->sock->sk,
+ ndst = udp_tunnel6_dst_lookup(skb, dev, vxlan->net, sock6->sk,
0, &info->key.u.ipv6.src,
&info->key,
sport, dport, info->key.tos,
type = UDP_TUNNEL_TYPE_VXLAN;
if (push)
- udp_tunnel_push_rx_port(dev, vs->sock->sk, type);
+ udp_tunnel_push_rx_port(dev, vs->sk, type);
else
- udp_tunnel_drop_rx_port(dev, vs->sock->sk, type);
+ udp_tunnel_drop_rx_port(dev, vs->sk, type);
}
}
}
.get_link_ksettings = vxlan_get_link_ksettings,
};
-static struct socket *vxlan_create_sock(struct net *net, bool ipv6,
- __be16 port, u32 flags, int ifindex)
+static struct sock *vxlan_create_sock(struct net *net, bool ipv6,
+ __be16 port, u32 flags, int ifindex)
{
struct socket *sock;
struct udp_port_cfg udp_conf;
return ERR_PTR(err);
udp_allow_gso(sock->sk);
- return sock;
+ return sock->sk;
}
/* Create new listen socket if needed */
__be16 port, u32 flags,
int ifindex)
{
+ struct udp_tunnel_sock_cfg tunnel_cfg;
struct vxlan_sock *vs;
- struct socket *sock;
+ struct sock *sk;
unsigned int h;
- struct udp_tunnel_sock_cfg tunnel_cfg;
ASSERT_RTNL();
for (h = 0; h < VNI_HASH_SIZE; ++h)
INIT_HLIST_HEAD(&vs->vni_list[h]);
- sock = vxlan_create_sock(net, ipv6, port, flags, ifindex);
- if (IS_ERR(sock)) {
+ sk = vxlan_create_sock(net, ipv6, port, flags, ifindex);
+ if (IS_ERR(sk)) {
kfree(vs);
- return ERR_CAST(sock);
+ return ERR_CAST(sk);
}
- vs->sock = sock;
+ vs->sk = sk;
refcount_set(&vs->refcnt, 1);
vs->flags = (flags & VXLAN_F_RCV_FLAGS);
hlist_add_head_rcu(&vs->hlist, vs_head(net, port));
- udp_tunnel_notify_add_rx_port(sock->sk,
+ udp_tunnel_notify_add_rx_port(sk,
(vs->flags & VXLAN_F_GPE) ?
UDP_TUNNEL_TYPE_VXLAN_GPE :
UDP_TUNNEL_TYPE_VXLAN);
tunnel_cfg.gro_complete = vxlan_gro_complete;
}
- setup_udp_tunnel_sock(net, sock->sk, &tunnel_cfg);
+ setup_udp_tunnel_sock(net, sk, &tunnel_cfg);
return vs;
}