• Home
  • Raw
  • Download

Lines Matching refs:vs

92 static inline bool vxlan_collect_metadata(struct vxlan_sock *vs)  in vxlan_collect_metadata()  argument
94 return vs->flags & VXLAN_F_COLLECT_METADATA || in vxlan_collect_metadata()
163 static inline struct hlist_head *vni_head(struct vxlan_sock *vs, __be32 vni) in vni_head() argument
165 return &vs->vni_list[hash_32((__force u32)vni, VNI_HASH_BITS)]; in vni_head()
200 struct vxlan_sock *vs; in vxlan_find_sock() local
204 hlist_for_each_entry_rcu(vs, vs_head(net, port), hlist) { in vxlan_find_sock()
205 if (inet_sk(vs->sock->sk)->inet_sport == port && in vxlan_find_sock()
206 vxlan_get_sk_family(vs) == family && in vxlan_find_sock()
207 vs->flags == flags && in vxlan_find_sock()
208 vs->sock->sk->sk_bound_dev_if == ifindex) in vxlan_find_sock()
209 return vs; in vxlan_find_sock()
214 static struct vxlan_dev *vxlan_vs_find_vni(struct vxlan_sock *vs, int ifindex, in vxlan_vs_find_vni() argument
220 if (vs->flags & VXLAN_F_COLLECT_METADATA) in vxlan_vs_find_vni()
223 hlist_for_each_entry_rcu(node, vni_head(vs, vni), hlist) { in vxlan_vs_find_vni()
246 struct vxlan_sock *vs; in vxlan_find_vni() local
248 vs = vxlan_find_sock(net, family, port, flags, ifindex); in vxlan_find_vni()
249 if (!vs) in vxlan_find_vni()
252 return vxlan_vs_find_vni(vs, ifindex, vni); in vxlan_find_vni()
767 struct vxlan_sock *vs = rcu_dereference_sk_user_data(sk); in vxlan_gro_receive() local
786 if ((flags & VXLAN_HF_RCO) && (vs->flags & VXLAN_F_REMCSUM_RX)) { in vxlan_gro_receive()
789 !!(vs->flags & in vxlan_gro_receive()
1570 static bool __vxlan_sock_release_prep(struct vxlan_sock *vs) in __vxlan_sock_release_prep() argument
1574 if (!vs) in __vxlan_sock_release_prep()
1576 if (!refcount_dec_and_test(&vs->refcnt)) in __vxlan_sock_release_prep()
1579 vn = net_generic(sock_net(vs->sock->sk), vxlan_net_id); in __vxlan_sock_release_prep()
1581 hlist_del_rcu(&vs->hlist); in __vxlan_sock_release_prep()
1582 udp_tunnel_notify_del_rx_port(vs->sock, in __vxlan_sock_release_prep()
1583 (vs->flags & VXLAN_F_GPE) ? in __vxlan_sock_release_prep()
1770 struct vxlan_sock *vs, in vxlan_set_mac() argument
1785 if (vxlan_get_sk_family(vs) == AF_INET) { in vxlan_set_mac()
1802 static bool vxlan_ecn_decapsulate(struct vxlan_sock *vs, void *oiph, in vxlan_ecn_decapsulate() argument
1807 if (vxlan_get_sk_family(vs) == AF_INET) in vxlan_ecn_decapsulate()
1815 if (vxlan_get_sk_family(vs) == AF_INET) in vxlan_ecn_decapsulate()
1830 struct vxlan_sock *vs; in vxlan_rcv() local
1855 vs = rcu_dereference_sk_user_data(sk); in vxlan_rcv()
1856 if (!vs) in vxlan_rcv()
1861 vxlan = vxlan_vs_find_vni(vs, skb->dev->ifindex, vni); in vxlan_rcv()
1868 if (vs->flags & VXLAN_F_GPE) { in vxlan_rcv()
1869 if (!vxlan_parse_gpe_hdr(&unparsed, &protocol, skb, vs->flags)) in vxlan_rcv()
1878 if (vs->flags & VXLAN_F_REMCSUM_RX) in vxlan_rcv()
1879 if (unlikely(!vxlan_remcsum(&unparsed, skb, vs->flags))) in vxlan_rcv()
1882 if (vxlan_collect_metadata(vs)) { in vxlan_rcv()
1885 tun_dst = udp_tun_rx_dst(skb, vxlan_get_sk_family(vs), TUNNEL_KEY, in vxlan_rcv()
1898 if (vs->flags & VXLAN_F_GBP) in vxlan_rcv()
1899 vxlan_parse_gbp_hdr(&unparsed, skb, vs->flags, md); in vxlan_rcv()
1917 if (!vxlan_set_mac(vxlan, vs, skb, vni)) in vxlan_rcv()
1928 if (!vxlan_ecn_decapsulate(vs, oiph, skb)) { in vxlan_rcv()
1959 struct vxlan_sock *vs; in vxlan_err_lookup() local
1971 vs = rcu_dereference_sk_user_data(sk); in vxlan_err_lookup()
1972 if (!vs) in vxlan_err_lookup()
1976 vxlan = vxlan_vs_find_vni(vs, skb->dev->ifindex, vni); in vxlan_err_lookup()
3027 static void vxlan_vs_add_dev(struct vxlan_sock *vs, struct vxlan_dev *vxlan, in vxlan_vs_add_dev() argument
3035 hlist_add_head_rcu(&node->hlist, vni_head(vs, vni)); in vxlan_vs_add_dev()
3260 struct vxlan_sock *vs; in vxlan_offload_rx_ports() local
3267 hlist_for_each_entry_rcu(vs, &vn->sock_list[i], hlist) { in vxlan_offload_rx_ports()
3270 if (vs->flags & VXLAN_F_GPE) in vxlan_offload_rx_ports()
3276 udp_tunnel_push_rx_port(dev, vs->sock, type); in vxlan_offload_rx_ports()
3278 udp_tunnel_drop_rx_port(dev, vs->sock, type); in vxlan_offload_rx_ports()
3506 struct vxlan_sock *vs; in vxlan_socket_create() local
3511 vs = kzalloc(sizeof(*vs), GFP_KERNEL); in vxlan_socket_create()
3512 if (!vs) in vxlan_socket_create()
3516 INIT_HLIST_HEAD(&vs->vni_list[h]); in vxlan_socket_create()
3520 kfree(vs); in vxlan_socket_create()
3524 vs->sock = sock; in vxlan_socket_create()
3525 refcount_set(&vs->refcnt, 1); in vxlan_socket_create()
3526 vs->flags = (flags & VXLAN_F_RCV_FLAGS); in vxlan_socket_create()
3529 hlist_add_head_rcu(&vs->hlist, vs_head(net, port)); in vxlan_socket_create()
3531 (vs->flags & VXLAN_F_GPE) ? in vxlan_socket_create()
3538 tunnel_cfg.sk_user_data = vs; in vxlan_socket_create()
3548 return vs; in vxlan_socket_create()
3554 struct vxlan_sock *vs = NULL; in __vxlan_sock_add() local
3564 vs = vxlan_find_sock(vxlan->net, ipv6 ? AF_INET6 : AF_INET, in __vxlan_sock_add()
3567 if (vs && !refcount_inc_not_zero(&vs->refcnt)) { in __vxlan_sock_add()
3573 if (!vs) in __vxlan_sock_add()
3574 vs = vxlan_socket_create(vxlan->net, ipv6, in __vxlan_sock_add()
3577 if (IS_ERR(vs)) in __vxlan_sock_add()
3578 return PTR_ERR(vs); in __vxlan_sock_add()
3581 rcu_assign_pointer(vxlan->vn6_sock, vs); in __vxlan_sock_add()
3586 rcu_assign_pointer(vxlan->vn4_sock, vs); in __vxlan_sock_add()
3589 vxlan_vs_add_dev(vs, vxlan, node); in __vxlan_sock_add()