Lines Matching refs:gs

126 static sa_family_t geneve_get_sk_family(struct geneve_sock *gs)  in geneve_get_sk_family()  argument
128 return gs->sock->sk->sk_family; in geneve_get_sk_family()
131 static struct geneve_dev *geneve_lookup(struct geneve_sock *gs, in geneve_lookup() argument
140 vni_list_head = &gs->vni_list[hash]; in geneve_lookup()
150 static struct geneve_dev *geneve6_lookup(struct geneve_sock *gs, in geneve6_lookup() argument
159 vni_list_head = &gs->vni_list[hash]; in geneve6_lookup()
174 static struct geneve_dev *geneve_lookup_skb(struct geneve_sock *gs, in geneve_lookup_skb() argument
180 if (geneve_get_sk_family(gs) == AF_INET) { in geneve_lookup_skb()
186 if (gs->collect_md) { in geneve_lookup_skb()
194 return geneve_lookup(gs, addr, vni); in geneve_lookup_skb()
196 } else if (geneve_get_sk_family(gs) == AF_INET6) { in geneve_lookup_skb()
203 if (gs->collect_md) { in geneve_lookup_skb()
211 return geneve6_lookup(gs, addr6, vni); in geneve_lookup_skb()
218 static void geneve_rx(struct geneve_dev *geneve, struct geneve_sock *gs, in geneve_rx() argument
227 if (ip_tunnel_collect_metadata() || gs->collect_md) { in geneve_rx()
233 tun_dst = udp_tun_rx_dst(skb, geneve_get_sk_family(gs), flags, in geneve_rx()
278 if (geneve_get_sk_family(gs) == AF_INET) in geneve_rx()
287 if (geneve_get_sk_family(gs) == AF_INET) in geneve_rx()
355 struct geneve_sock *gs; in geneve_udp_encap_recv() local
375 gs = rcu_dereference_sk_user_data(sk); in geneve_udp_encap_recv()
376 if (!gs) in geneve_udp_encap_recv()
379 geneve = geneve_lookup_skb(gs, skb); in geneve_udp_encap_recv()
396 geneve_rx(geneve, gs, skb); in geneve_udp_encap_recv()
409 struct geneve_sock *gs; in geneve_udp_encap_err_lookup() local
423 gs = rcu_dereference_sk_user_data(sk); in geneve_udp_encap_err_lookup()
424 if (!gs) in geneve_udp_encap_err_lookup()
427 if (geneve_get_sk_family(gs) == AF_INET) { in geneve_udp_encap_err_lookup()
431 if (!gs->collect_md) { in geneve_udp_encap_err_lookup()
436 return geneve_lookup(gs, addr4, vni) ? 0 : -ENOENT; in geneve_udp_encap_err_lookup()
440 if (geneve_get_sk_family(gs) == AF_INET6) { in geneve_udp_encap_err_lookup()
446 if (!gs->collect_md) { in geneve_udp_encap_err_lookup()
451 return geneve6_lookup(gs, addr6, vni) ? 0 : -ENOENT; in geneve_udp_encap_err_lookup()
586 struct geneve_sock *gs; in geneve_socket_create() local
591 gs = kzalloc(sizeof(*gs), GFP_KERNEL); in geneve_socket_create()
592 if (!gs) in geneve_socket_create()
597 kfree(gs); in geneve_socket_create()
601 gs->sock = sock; in geneve_socket_create()
602 gs->refcnt = 1; in geneve_socket_create()
604 INIT_HLIST_HEAD(&gs->vni_list[h]); in geneve_socket_create()
607 udp_tunnel_notify_add_rx_port(gs->sock, UDP_TUNNEL_TYPE_GENEVE); in geneve_socket_create()
611 tunnel_cfg.sk_user_data = gs; in geneve_socket_create()
619 list_add(&gs->list, &gn->sock_list); in geneve_socket_create()
620 return gs; in geneve_socket_create()
623 static void __geneve_sock_release(struct geneve_sock *gs) in __geneve_sock_release() argument
625 if (!gs || --gs->refcnt) in __geneve_sock_release()
628 list_del(&gs->list); in __geneve_sock_release()
629 udp_tunnel_notify_del_rx_port(gs->sock, UDP_TUNNEL_TYPE_GENEVE); in __geneve_sock_release()
630 udp_tunnel_sock_release(gs->sock); in __geneve_sock_release()
631 kfree_rcu(gs, rcu); in __geneve_sock_release()
656 struct geneve_sock *gs; in geneve_find_sock() local
658 list_for_each_entry(gs, &gn->sock_list, list) { in geneve_find_sock()
659 if (inet_sk(gs->sock->sk)->inet_sport == dst_port && in geneve_find_sock()
660 geneve_get_sk_family(gs) == family) { in geneve_find_sock()
661 return gs; in geneve_find_sock()
672 struct geneve_sock *gs; in geneve_sock_add() local
676 gs = geneve_find_sock(gn, ipv6 ? AF_INET6 : AF_INET, geneve->cfg.info.key.tp_dst); in geneve_sock_add()
677 if (gs) { in geneve_sock_add()
678 gs->refcnt++; in geneve_sock_add()
682 gs = geneve_socket_create(net, geneve->cfg.info.key.tp_dst, ipv6, in geneve_sock_add()
684 if (IS_ERR(gs)) in geneve_sock_add()
685 return PTR_ERR(gs); in geneve_sock_add()
688 gs->collect_md = geneve->cfg.collect_md; in geneve_sock_add()
691 rcu_assign_pointer(geneve->sock6, gs); in geneve_sock_add()
696 rcu_assign_pointer(geneve->sock4, gs); in geneve_sock_add()
703 hlist_add_head_rcu(&node->hlist, &gs->vni_list[hash]); in geneve_sock_add()
1225 struct geneve_sock *gs; in geneve_offload_rx_ports() local
1228 list_for_each_entry_rcu(gs, &gn->sock_list, list) { in geneve_offload_rx_ports()
1230 udp_tunnel_push_rx_port(dev, gs->sock, in geneve_offload_rx_ports()
1233 udp_tunnel_drop_rx_port(dev, gs->sock, in geneve_offload_rx_ports()