Lines Matching refs:sock

24 	struct ovpn_socket *sock = container_of(kref, struct ovpn_socket,  in ovpn_socket_release_kref()  local
27 if (sock->sk->sk_protocol == IPPROTO_UDP) in ovpn_socket_release_kref()
28 ovpn_udp_socket_detach(sock); in ovpn_socket_release_kref()
29 else if (sock->sk->sk_protocol == IPPROTO_TCP) in ovpn_socket_release_kref()
30 ovpn_tcp_socket_detach(sock); in ovpn_socket_release_kref()
43 static bool ovpn_socket_put(struct ovpn_peer *peer, struct ovpn_socket *sock) in ovpn_socket_put() argument
45 return kref_put(&sock->refcount, ovpn_socket_release_kref); in ovpn_socket_put()
68 struct ovpn_socket *sock; in ovpn_socket_release() local
73 sock = rcu_replace_pointer(peer->sock, NULL, true); in ovpn_socket_release()
75 if (!sock) in ovpn_socket_release()
85 lock_sock(sock->sk); in ovpn_socket_release()
86 released = ovpn_socket_put(peer, sock); in ovpn_socket_release()
87 release_sock(sock->sk); in ovpn_socket_release()
94 if (sock->sk->sk_protocol == IPPROTO_UDP) { in ovpn_socket_release()
95 netdev_put(sock->ovpn->dev, &sock->dev_tracker); in ovpn_socket_release()
96 } else if (sock->sk->sk_protocol == IPPROTO_TCP) { in ovpn_socket_release()
98 ovpn_tcp_socket_wait_finish(sock); in ovpn_socket_release()
99 ovpn_peer_put(sock->peer); in ovpn_socket_release()
102 sock_put(sock->sk); in ovpn_socket_release()
106 kfree(sock); in ovpn_socket_release()
110 static bool ovpn_socket_hold(struct ovpn_socket *sock) in ovpn_socket_hold() argument
112 return kref_get_unless_zero(&sock->refcount); in ovpn_socket_hold()
116 struct socket *sock, in ovpn_socket_attach() argument
119 if (sock->sk->sk_protocol == IPPROTO_UDP) in ovpn_socket_attach()
120 return ovpn_udp_socket_attach(ovpn_sock, sock, peer->ovpn); in ovpn_socket_attach()
121 else if (sock->sk->sk_protocol == IPPROTO_TCP) in ovpn_socket_attach()
134 struct ovpn_socket *ovpn_socket_new(struct socket *sock, struct ovpn_peer *peer) in ovpn_socket_new() argument
137 struct sock *sk = sock->sk; in ovpn_socket_new()
213 ret = ovpn_socket_attach(ovpn_sock, sock, peer); in ovpn_socket_new()