Lines Matching refs:vsk

169 #define vsock_connected_sockets_vsk(vsk)				\  argument
170 vsock_connected_sockets(&(vsk)->remote_addr, &(vsk)->local_addr)
180 static int vsock_auto_bind(struct vsock_sock *vsk) in vsock_auto_bind() argument
182 struct sock *sk = sk_vsock(vsk); in vsock_auto_bind()
185 if (vsock_addr_bound(&vsk->local_addr)) in vsock_auto_bind()
204 struct vsock_sock *vsk) in __vsock_insert_bound() argument
206 sock_hold(&vsk->sk); in __vsock_insert_bound()
207 list_add(&vsk->bound_table, list); in __vsock_insert_bound()
211 struct vsock_sock *vsk) in __vsock_insert_connected() argument
213 sock_hold(&vsk->sk); in __vsock_insert_connected()
214 list_add(&vsk->connected_table, list); in __vsock_insert_connected()
217 static void __vsock_remove_bound(struct vsock_sock *vsk) in __vsock_remove_bound() argument
219 list_del_init(&vsk->bound_table); in __vsock_remove_bound()
220 sock_put(&vsk->sk); in __vsock_remove_bound()
223 static void __vsock_remove_connected(struct vsock_sock *vsk) in __vsock_remove_connected() argument
225 list_del_init(&vsk->connected_table); in __vsock_remove_connected()
226 sock_put(&vsk->sk); in __vsock_remove_connected()
231 struct vsock_sock *vsk; in __vsock_find_bound_socket() local
233 list_for_each_entry(vsk, vsock_bound_sockets(addr), bound_table) in __vsock_find_bound_socket()
234 if (addr->svm_port == vsk->local_addr.svm_port) in __vsock_find_bound_socket()
235 return sk_vsock(vsk); in __vsock_find_bound_socket()
243 struct vsock_sock *vsk; in __vsock_find_connected_socket() local
245 list_for_each_entry(vsk, vsock_connected_sockets(src, dst), in __vsock_find_connected_socket()
247 if (vsock_addr_equals_addr(src, &vsk->remote_addr) && in __vsock_find_connected_socket()
248 dst->svm_port == vsk->local_addr.svm_port) { in __vsock_find_connected_socket()
249 return sk_vsock(vsk); in __vsock_find_connected_socket()
256 static void vsock_insert_unbound(struct vsock_sock *vsk) in vsock_insert_unbound() argument
259 __vsock_insert_bound(vsock_unbound_sockets, vsk); in vsock_insert_unbound()
263 void vsock_insert_connected(struct vsock_sock *vsk) in vsock_insert_connected() argument
266 &vsk->remote_addr, &vsk->local_addr); in vsock_insert_connected()
269 __vsock_insert_connected(list, vsk); in vsock_insert_connected()
274 void vsock_remove_bound(struct vsock_sock *vsk) in vsock_remove_bound() argument
277 if (__vsock_in_bound_table(vsk)) in vsock_remove_bound()
278 __vsock_remove_bound(vsk); in vsock_remove_bound()
283 void vsock_remove_connected(struct vsock_sock *vsk) in vsock_remove_connected() argument
286 if (__vsock_in_connected_table(vsk)) in vsock_remove_connected()
287 __vsock_remove_connected(vsk); in vsock_remove_connected()
323 void vsock_remove_sock(struct vsock_sock *vsk) in vsock_remove_sock() argument
325 vsock_remove_bound(vsk); in vsock_remove_sock()
326 vsock_remove_connected(vsk); in vsock_remove_sock()
337 struct vsock_sock *vsk; in vsock_for_each_connected_socket() local
338 list_for_each_entry(vsk, &vsock_connected_table[i], in vsock_for_each_connected_socket()
340 fn(sk_vsock(vsk)); in vsock_for_each_connected_socket()
409 struct vsock_sock *vsk = vsock_sk(sk); in vsock_is_accept_queue_empty() local
410 return list_empty(&vsk->accept_queue); in vsock_is_accept_queue_empty()
415 struct vsock_sock *vsk = vsock_sk(sk); in vsock_is_pending() local
416 return !list_empty(&vsk->pending_links); in vsock_is_pending()
428 struct vsock_sock *vsk; in vsock_pending_work() local
431 vsk = container_of(work, struct vsock_sock, pending_work.work); in vsock_pending_work()
432 sk = sk_vsock(vsk); in vsock_pending_work()
433 listener = vsk->listener; in vsock_pending_work()
443 } else if (!vsk->rejected) { in vsock_pending_work()
457 vsock_remove_connected(vsk); in vsock_pending_work()
473 static int __vsock_bind_stream(struct vsock_sock *vsk, in __vsock_bind_stream() argument
516 vsock_addr_init(&vsk->local_addr, new_addr.svm_cid, new_addr.svm_port); in __vsock_bind_stream()
522 __vsock_remove_bound(vsk); in __vsock_bind_stream()
523 __vsock_insert_bound(vsock_bound_sockets(&vsk->local_addr), vsk); in __vsock_bind_stream()
528 static int __vsock_bind_dgram(struct vsock_sock *vsk, in __vsock_bind_dgram() argument
531 return transport->dgram_bind(vsk, addr); in __vsock_bind_dgram()
536 struct vsock_sock *vsk = vsock_sk(sk); in __vsock_bind() local
541 if (vsock_addr_bound(&vsk->local_addr)) in __vsock_bind()
556 retval = __vsock_bind_stream(vsk, addr); in __vsock_bind()
561 retval = __vsock_bind_dgram(vsk, addr); in __vsock_bind()
583 struct vsock_sock *vsk; in __vsock_create() local
598 vsk = vsock_sk(sk); in __vsock_create()
599 vsock_addr_init(&vsk->local_addr, VMADDR_CID_ANY, VMADDR_PORT_ANY); in __vsock_create()
600 vsock_addr_init(&vsk->remote_addr, VMADDR_CID_ANY, VMADDR_PORT_ANY); in __vsock_create()
606 INIT_LIST_HEAD(&vsk->bound_table); in __vsock_create()
607 INIT_LIST_HEAD(&vsk->connected_table); in __vsock_create()
608 vsk->listener = NULL; in __vsock_create()
609 INIT_LIST_HEAD(&vsk->pending_links); in __vsock_create()
610 INIT_LIST_HEAD(&vsk->accept_queue); in __vsock_create()
611 vsk->rejected = false; in __vsock_create()
612 vsk->sent_request = false; in __vsock_create()
613 vsk->ignore_connecting_rst = false; in __vsock_create()
614 vsk->peer_shutdown = 0; in __vsock_create()
615 INIT_DELAYED_WORK(&vsk->connect_work, vsock_connect_timeout); in __vsock_create()
616 INIT_DELAYED_WORK(&vsk->pending_work, vsock_pending_work); in __vsock_create()
620 vsk->trusted = psk->trusted; in __vsock_create()
621 vsk->owner = get_cred(psk->owner); in __vsock_create()
622 vsk->connect_timeout = psk->connect_timeout; in __vsock_create()
624 vsk->trusted = capable(CAP_NET_ADMIN); in __vsock_create()
625 vsk->owner = get_current_cred(); in __vsock_create()
626 vsk->connect_timeout = VSOCK_DEFAULT_CONNECT_TIMEOUT; in __vsock_create()
629 if (transport->init(vsk, psk) < 0) { in __vsock_create()
635 vsock_insert_unbound(vsk); in __vsock_create()
646 struct vsock_sock *vsk; in __vsock_release() local
648 vsk = vsock_sk(sk); in __vsock_release()
654 transport->release(vsk); in __vsock_release()
681 struct vsock_sock *vsk = vsock_sk(sk); in vsock_sk_destruct() local
683 transport->destruct(vsk); in vsock_sk_destruct()
688 vsock_addr_init(&vsk->local_addr, VMADDR_CID_ANY, VMADDR_PORT_ANY); in vsock_sk_destruct()
689 vsock_addr_init(&vsk->remote_addr, VMADDR_CID_ANY, VMADDR_PORT_ANY); in vsock_sk_destruct()
691 put_cred(vsk->owner); in vsock_sk_destruct()
705 s64 vsock_stream_has_data(struct vsock_sock *vsk) in vsock_stream_has_data() argument
707 return transport->stream_has_data(vsk); in vsock_stream_has_data()
711 s64 vsock_stream_has_space(struct vsock_sock *vsk) in vsock_stream_has_space() argument
713 return transport->stream_has_space(vsk); in vsock_stream_has_space()
750 struct vsock_sock *vsk; in vsock_getname() local
754 vsk = vsock_sk(sk); in vsock_getname()
764 vm_addr = &vsk->remote_addr; in vsock_getname()
766 vm_addr = &vsk->local_addr; in vsock_getname()
842 struct vsock_sock *vsk; in vsock_poll() local
845 vsk = vsock_sk(sk); in vsock_poll()
859 (vsk->peer_shutdown & SEND_SHUTDOWN))) { in vsock_poll()
864 vsk->peer_shutdown & SEND_SHUTDOWN) { in vsock_poll()
892 if (transport->stream_is_active(vsk) && in vsock_poll()
896 vsk, 1, &data_ready_now); in vsock_poll()
911 vsk->peer_shutdown & SEND_SHUTDOWN) { in vsock_poll()
920 vsk, 1, &space_avail_now); in vsock_poll()
955 struct vsock_sock *vsk; in vsock_dgram_sendmsg() local
964 vsk = vsock_sk(sk); in vsock_dgram_sendmsg()
968 err = vsock_auto_bind(vsk); in vsock_dgram_sendmsg()
991 remote_addr = &vsk->remote_addr; in vsock_dgram_sendmsg()
999 if (!vsock_addr_bound(&vsk->remote_addr)) { in vsock_dgram_sendmsg()
1014 err = transport->dgram_enqueue(vsk, remote_addr, msg, len); in vsock_dgram_sendmsg()
1026 struct vsock_sock *vsk; in vsock_dgram_connect() local
1030 vsk = vsock_sk(sk); in vsock_dgram_connect()
1035 vsock_addr_init(&vsk->remote_addr, VMADDR_CID_ANY, in vsock_dgram_connect()
1045 err = vsock_auto_bind(vsk); in vsock_dgram_connect()
1055 memcpy(&vsk->remote_addr, remote_addr, sizeof(vsk->remote_addr)); in vsock_dgram_connect()
1090 static int vsock_transport_cancel_pkt(struct vsock_sock *vsk) in vsock_transport_cancel_pkt() argument
1095 return transport->cancel_pkt(vsk); in vsock_transport_cancel_pkt()
1101 struct vsock_sock *vsk; in vsock_connect_timeout() local
1104 vsk = container_of(work, struct vsock_sock, connect_work.work); in vsock_connect_timeout()
1105 sk = sk_vsock(vsk); in vsock_connect_timeout()
1117 vsock_transport_cancel_pkt(vsk); in vsock_connect_timeout()
1127 struct vsock_sock *vsk; in vsock_stream_connect() local
1134 vsk = vsock_sk(sk); in vsock_stream_connect()
1172 memcpy(&vsk->remote_addr, remote_addr, in vsock_stream_connect()
1173 sizeof(vsk->remote_addr)); in vsock_stream_connect()
1175 err = vsock_auto_bind(vsk); in vsock_stream_connect()
1181 err = transport->connect(vsk); in vsock_stream_connect()
1196 timeout = vsk->connect_timeout; in vsock_stream_connect()
1208 schedule_delayed_work(&vsk->connect_work, timeout); in vsock_stream_connect()
1222 vsock_transport_cancel_pkt(vsk); in vsock_stream_connect()
1228 vsock_transport_cancel_pkt(vsk); in vsock_stream_connect()
1336 struct vsock_sock *vsk; in vsock_listen() local
1352 vsk = vsock_sk(sk); in vsock_listen()
1354 if (!vsock_addr_bound(&vsk->local_addr)) { in vsock_listen()
1377 struct vsock_sock *vsk; in vsock_stream_setsockopt() local
1397 vsk = vsock_sk(sk); in vsock_stream_setsockopt()
1404 transport->set_buffer_size(vsk, val); in vsock_stream_setsockopt()
1409 transport->set_max_buffer_size(vsk, val); in vsock_stream_setsockopt()
1414 transport->set_min_buffer_size(vsk, val); in vsock_stream_setsockopt()
1422 vsk->connect_timeout = tv.tv_sec * HZ + in vsock_stream_setsockopt()
1424 if (vsk->connect_timeout == 0) in vsock_stream_setsockopt()
1425 vsk->connect_timeout = in vsock_stream_setsockopt()
1454 struct vsock_sock *vsk; in vsock_stream_getsockopt() local
1477 vsk = vsock_sk(sk); in vsock_stream_getsockopt()
1481 val = transport->get_buffer_size(vsk); in vsock_stream_getsockopt()
1486 val = transport->get_max_buffer_size(vsk); in vsock_stream_getsockopt()
1491 val = transport->get_min_buffer_size(vsk); in vsock_stream_getsockopt()
1497 tv.tv_sec = vsk->connect_timeout / HZ; in vsock_stream_getsockopt()
1499 (vsk->connect_timeout - in vsock_stream_getsockopt()
1521 struct vsock_sock *vsk; in vsock_stream_sendmsg() local
1529 vsk = vsock_sk(sk); in vsock_stream_sendmsg()
1546 vsk->peer_shutdown & RCV_SHUTDOWN) { in vsock_stream_sendmsg()
1552 !vsock_addr_bound(&vsk->local_addr)) { in vsock_stream_sendmsg()
1557 if (!vsock_addr_bound(&vsk->remote_addr)) { in vsock_stream_sendmsg()
1565 err = transport->notify_send_init(vsk, &send_data); in vsock_stream_sendmsg()
1573 while (vsock_stream_has_space(vsk) == 0 && in vsock_stream_sendmsg()
1576 !(vsk->peer_shutdown & RCV_SHUTDOWN)) { in vsock_stream_sendmsg()
1585 err = transport->notify_send_pre_block(vsk, &send_data); in vsock_stream_sendmsg()
1614 (vsk->peer_shutdown & RCV_SHUTDOWN)) { in vsock_stream_sendmsg()
1619 err = transport->notify_send_pre_enqueue(vsk, &send_data); in vsock_stream_sendmsg()
1630 vsk, msg, in vsock_stream_sendmsg()
1640 vsk, written, &send_data); in vsock_stream_sendmsg()
1660 struct vsock_sock *vsk; in vsock_stream_recvmsg() local
1670 vsk = vsock_sk(sk); in vsock_stream_recvmsg()
1718 if (target >= transport->stream_rcvhiwat(vsk)) { in vsock_stream_recvmsg()
1725 err = transport->notify_recv_init(vsk, target, &recv_data); in vsock_stream_recvmsg()
1734 ready = vsock_stream_has_data(vsk); in vsock_stream_recvmsg()
1739 (vsk->peer_shutdown & SEND_SHUTDOWN)) { in vsock_stream_recvmsg()
1751 vsk, target, &recv_data); in vsock_stream_recvmsg()
1785 vsk, target, &recv_data); in vsock_stream_recvmsg()
1790 vsk, msg, in vsock_stream_recvmsg()
1800 vsk, target, read, in vsock_stream_recvmsg()