Lines Matching refs:vsk

160 #define vsock_connected_sockets_vsk(vsk)				\  argument
161 vsock_connected_sockets(&(vsk)->remote_addr, &(vsk)->local_addr)
168 static int vsock_auto_bind(struct vsock_sock *vsk) in vsock_auto_bind() argument
170 struct sock *sk = sk_vsock(vsk); in vsock_auto_bind()
173 if (vsock_addr_bound(&vsk->local_addr)) in vsock_auto_bind()
191 struct vsock_sock *vsk) in __vsock_insert_bound() argument
193 sock_hold(&vsk->sk); in __vsock_insert_bound()
194 list_add(&vsk->bound_table, list); in __vsock_insert_bound()
198 struct vsock_sock *vsk) in __vsock_insert_connected() argument
200 sock_hold(&vsk->sk); in __vsock_insert_connected()
201 list_add(&vsk->connected_table, list); in __vsock_insert_connected()
204 static void __vsock_remove_bound(struct vsock_sock *vsk) in __vsock_remove_bound() argument
206 list_del_init(&vsk->bound_table); in __vsock_remove_bound()
207 sock_put(&vsk->sk); in __vsock_remove_bound()
210 static void __vsock_remove_connected(struct vsock_sock *vsk) in __vsock_remove_connected() argument
212 list_del_init(&vsk->connected_table); in __vsock_remove_connected()
213 sock_put(&vsk->sk); in __vsock_remove_connected()
218 struct vsock_sock *vsk; in __vsock_find_bound_socket() local
220 list_for_each_entry(vsk, vsock_bound_sockets(addr), bound_table) in __vsock_find_bound_socket()
221 if (addr->svm_port == vsk->local_addr.svm_port) in __vsock_find_bound_socket()
222 return sk_vsock(vsk); in __vsock_find_bound_socket()
230 struct vsock_sock *vsk; in __vsock_find_connected_socket() local
232 list_for_each_entry(vsk, vsock_connected_sockets(src, dst), in __vsock_find_connected_socket()
234 if (vsock_addr_equals_addr(src, &vsk->remote_addr) && in __vsock_find_connected_socket()
235 dst->svm_port == vsk->local_addr.svm_port) { in __vsock_find_connected_socket()
236 return sk_vsock(vsk); in __vsock_find_connected_socket()
243 static bool __vsock_in_bound_table(struct vsock_sock *vsk) in __vsock_in_bound_table() argument
245 return !list_empty(&vsk->bound_table); in __vsock_in_bound_table()
248 static bool __vsock_in_connected_table(struct vsock_sock *vsk) in __vsock_in_connected_table() argument
250 return !list_empty(&vsk->connected_table); in __vsock_in_connected_table()
253 static void vsock_insert_unbound(struct vsock_sock *vsk) in vsock_insert_unbound() argument
256 __vsock_insert_bound(vsock_unbound_sockets, vsk); in vsock_insert_unbound()
260 void vsock_insert_connected(struct vsock_sock *vsk) in vsock_insert_connected() argument
263 &vsk->remote_addr, &vsk->local_addr); in vsock_insert_connected()
266 __vsock_insert_connected(list, vsk); in vsock_insert_connected()
271 void vsock_remove_bound(struct vsock_sock *vsk) in vsock_remove_bound() argument
274 __vsock_remove_bound(vsk); in vsock_remove_bound()
279 void vsock_remove_connected(struct vsock_sock *vsk) in vsock_remove_connected() argument
282 __vsock_remove_connected(vsk); in vsock_remove_connected()
318 static bool vsock_in_bound_table(struct vsock_sock *vsk) in vsock_in_bound_table() argument
323 ret = __vsock_in_bound_table(vsk); in vsock_in_bound_table()
329 static bool vsock_in_connected_table(struct vsock_sock *vsk) in vsock_in_connected_table() argument
334 ret = __vsock_in_connected_table(vsk); in vsock_in_connected_table()
347 struct vsock_sock *vsk; in vsock_for_each_connected_socket() local
348 list_for_each_entry(vsk, &vsock_connected_table[i], in vsock_for_each_connected_socket()
350 fn(sk_vsock(vsk)); in vsock_for_each_connected_socket()
419 struct vsock_sock *vsk = vsock_sk(sk); in vsock_is_accept_queue_empty() local
420 return list_empty(&vsk->accept_queue); in vsock_is_accept_queue_empty()
425 struct vsock_sock *vsk = vsock_sk(sk); in vsock_is_pending() local
426 return !list_empty(&vsk->pending_links); in vsock_is_pending()
438 struct vsock_sock *vsk; in vsock_pending_work() local
441 vsk = container_of(work, struct vsock_sock, dwork.work); in vsock_pending_work()
442 sk = sk_vsock(vsk); in vsock_pending_work()
443 listener = vsk->listener; in vsock_pending_work()
451 } else if (!vsk->rejected) { in vsock_pending_work()
467 if (vsock_in_connected_table(vsk)) in vsock_pending_work()
468 vsock_remove_connected(vsk); in vsock_pending_work()
485 static int __vsock_bind_stream(struct vsock_sock *vsk, in __vsock_bind_stream() argument
524 vsock_addr_init(&vsk->local_addr, new_addr.svm_cid, new_addr.svm_port); in __vsock_bind_stream()
530 __vsock_remove_bound(vsk); in __vsock_bind_stream()
531 __vsock_insert_bound(vsock_bound_sockets(&vsk->local_addr), vsk); in __vsock_bind_stream()
536 static int __vsock_bind_dgram(struct vsock_sock *vsk, in __vsock_bind_dgram() argument
539 return transport->dgram_bind(vsk, addr); in __vsock_bind_dgram()
544 struct vsock_sock *vsk = vsock_sk(sk); in __vsock_bind() local
549 if (vsock_addr_bound(&vsk->local_addr)) in __vsock_bind()
564 retval = __vsock_bind_stream(vsk, addr); in __vsock_bind()
569 retval = __vsock_bind_dgram(vsk, addr); in __vsock_bind()
588 struct vsock_sock *vsk; in __vsock_create() local
603 vsk = vsock_sk(sk); in __vsock_create()
604 vsock_addr_init(&vsk->local_addr, VMADDR_CID_ANY, VMADDR_PORT_ANY); in __vsock_create()
605 vsock_addr_init(&vsk->remote_addr, VMADDR_CID_ANY, VMADDR_PORT_ANY); in __vsock_create()
612 INIT_LIST_HEAD(&vsk->bound_table); in __vsock_create()
613 INIT_LIST_HEAD(&vsk->connected_table); in __vsock_create()
614 vsk->listener = NULL; in __vsock_create()
615 INIT_LIST_HEAD(&vsk->pending_links); in __vsock_create()
616 INIT_LIST_HEAD(&vsk->accept_queue); in __vsock_create()
617 vsk->rejected = false; in __vsock_create()
618 vsk->sent_request = false; in __vsock_create()
619 vsk->ignore_connecting_rst = false; in __vsock_create()
620 vsk->peer_shutdown = 0; in __vsock_create()
624 vsk->trusted = psk->trusted; in __vsock_create()
625 vsk->owner = get_cred(psk->owner); in __vsock_create()
626 vsk->connect_timeout = psk->connect_timeout; in __vsock_create()
628 vsk->trusted = capable(CAP_NET_ADMIN); in __vsock_create()
629 vsk->owner = get_current_cred(); in __vsock_create()
630 vsk->connect_timeout = VSOCK_DEFAULT_CONNECT_TIMEOUT; in __vsock_create()
633 if (transport->init(vsk, psk) < 0) { in __vsock_create()
639 vsock_insert_unbound(vsk); in __vsock_create()
650 struct vsock_sock *vsk; in __vsock_release() local
652 vsk = vsock_sk(sk); in __vsock_release()
655 if (vsock_in_bound_table(vsk)) in __vsock_release()
656 vsock_remove_bound(vsk); in __vsock_release()
658 if (vsock_in_connected_table(vsk)) in __vsock_release()
659 vsock_remove_connected(vsk); in __vsock_release()
661 transport->release(vsk); in __vsock_release()
683 struct vsock_sock *vsk = vsock_sk(sk); in vsock_sk_destruct() local
685 transport->destruct(vsk); in vsock_sk_destruct()
690 vsock_addr_init(&vsk->local_addr, VMADDR_CID_ANY, VMADDR_PORT_ANY); in vsock_sk_destruct()
691 vsock_addr_init(&vsk->remote_addr, VMADDR_CID_ANY, VMADDR_PORT_ANY); in vsock_sk_destruct()
693 put_cred(vsk->owner); in vsock_sk_destruct()
707 s64 vsock_stream_has_data(struct vsock_sock *vsk) in vsock_stream_has_data() argument
709 return transport->stream_has_data(vsk); in vsock_stream_has_data()
713 s64 vsock_stream_has_space(struct vsock_sock *vsk) in vsock_stream_has_space() argument
715 return transport->stream_has_space(vsk); in vsock_stream_has_space()
752 struct vsock_sock *vsk; in vsock_getname() local
756 vsk = vsock_sk(sk); in vsock_getname()
766 vm_addr = &vsk->remote_addr; in vsock_getname()
768 vm_addr = &vsk->local_addr; in vsock_getname()
844 struct vsock_sock *vsk; in vsock_poll() local
847 vsk = vsock_sk(sk); in vsock_poll()
861 (vsk->peer_shutdown & SEND_SHUTDOWN))) { in vsock_poll()
866 vsk->peer_shutdown & SEND_SHUTDOWN) { in vsock_poll()
894 if (transport->stream_is_active(vsk) && in vsock_poll()
898 vsk, 1, &data_ready_now); in vsock_poll()
913 vsk->peer_shutdown & SEND_SHUTDOWN) { in vsock_poll()
922 vsk, 1, &space_avail_now); in vsock_poll()
957 struct vsock_sock *vsk; in vsock_dgram_sendmsg() local
966 vsk = vsock_sk(sk); in vsock_dgram_sendmsg()
970 err = vsock_auto_bind(vsk); in vsock_dgram_sendmsg()
993 remote_addr = &vsk->remote_addr; in vsock_dgram_sendmsg()
1001 if (!vsock_addr_bound(&vsk->remote_addr)) { in vsock_dgram_sendmsg()
1016 err = transport->dgram_enqueue(vsk, remote_addr, msg, len); in vsock_dgram_sendmsg()
1028 struct vsock_sock *vsk; in vsock_dgram_connect() local
1032 vsk = vsock_sk(sk); in vsock_dgram_connect()
1037 vsock_addr_init(&vsk->remote_addr, VMADDR_CID_ANY, in vsock_dgram_connect()
1047 err = vsock_auto_bind(vsk); in vsock_dgram_connect()
1057 memcpy(&vsk->remote_addr, remote_addr, sizeof(vsk->remote_addr)); in vsock_dgram_connect()
1095 struct vsock_sock *vsk; in vsock_connect_timeout() local
1097 vsk = container_of(work, struct vsock_sock, dwork.work); in vsock_connect_timeout()
1098 sk = sk_vsock(vsk); in vsock_connect_timeout()
1117 struct vsock_sock *vsk; in vsock_stream_connect() local
1124 vsk = vsock_sk(sk); in vsock_stream_connect()
1162 memcpy(&vsk->remote_addr, remote_addr, in vsock_stream_connect()
1163 sizeof(vsk->remote_addr)); in vsock_stream_connect()
1165 err = vsock_auto_bind(vsk); in vsock_stream_connect()
1171 err = transport->connect(vsk); in vsock_stream_connect()
1186 timeout = vsk->connect_timeout; in vsock_stream_connect()
1198 INIT_DELAYED_WORK(&vsk->dwork, in vsock_stream_connect()
1200 schedule_delayed_work(&vsk->dwork, timeout); in vsock_stream_connect()
1326 struct vsock_sock *vsk; in vsock_listen() local
1342 vsk = vsock_sk(sk); in vsock_listen()
1344 if (!vsock_addr_bound(&vsk->local_addr)) { in vsock_listen()
1367 struct vsock_sock *vsk; in vsock_stream_setsockopt() local
1387 vsk = vsock_sk(sk); in vsock_stream_setsockopt()
1394 transport->set_buffer_size(vsk, val); in vsock_stream_setsockopt()
1399 transport->set_max_buffer_size(vsk, val); in vsock_stream_setsockopt()
1404 transport->set_min_buffer_size(vsk, val); in vsock_stream_setsockopt()
1412 vsk->connect_timeout = tv.tv_sec * HZ + in vsock_stream_setsockopt()
1414 if (vsk->connect_timeout == 0) in vsock_stream_setsockopt()
1415 vsk->connect_timeout = in vsock_stream_setsockopt()
1444 struct vsock_sock *vsk; in vsock_stream_getsockopt() local
1467 vsk = vsock_sk(sk); in vsock_stream_getsockopt()
1471 val = transport->get_buffer_size(vsk); in vsock_stream_getsockopt()
1476 val = transport->get_max_buffer_size(vsk); in vsock_stream_getsockopt()
1481 val = transport->get_min_buffer_size(vsk); in vsock_stream_getsockopt()
1487 tv.tv_sec = vsk->connect_timeout / HZ; in vsock_stream_getsockopt()
1489 (vsk->connect_timeout - in vsock_stream_getsockopt()
1511 struct vsock_sock *vsk; in vsock_stream_sendmsg() local
1520 vsk = vsock_sk(sk); in vsock_stream_sendmsg()
1537 vsk->peer_shutdown & RCV_SHUTDOWN) { in vsock_stream_sendmsg()
1543 !vsock_addr_bound(&vsk->local_addr)) { in vsock_stream_sendmsg()
1548 if (!vsock_addr_bound(&vsk->remote_addr)) { in vsock_stream_sendmsg()
1556 err = transport->notify_send_init(vsk, &send_data); in vsock_stream_sendmsg()
1565 while (vsock_stream_has_space(vsk) == 0 && in vsock_stream_sendmsg()
1568 !(vsk->peer_shutdown & RCV_SHUTDOWN)) { in vsock_stream_sendmsg()
1576 err = transport->notify_send_pre_block(vsk, &send_data); in vsock_stream_sendmsg()
1603 (vsk->peer_shutdown & RCV_SHUTDOWN)) { in vsock_stream_sendmsg()
1608 err = transport->notify_send_pre_enqueue(vsk, &send_data); in vsock_stream_sendmsg()
1619 vsk, msg, in vsock_stream_sendmsg()
1629 vsk, written, &send_data); in vsock_stream_sendmsg()
1650 struct vsock_sock *vsk; in vsock_stream_recvmsg() local
1660 vsk = vsock_sk(sk); in vsock_stream_recvmsg()
1708 if (target >= transport->stream_rcvhiwat(vsk)) { in vsock_stream_recvmsg()
1715 err = transport->notify_recv_init(vsk, target, &recv_data); in vsock_stream_recvmsg()
1722 s64 ready = vsock_stream_has_data(vsk); in vsock_stream_recvmsg()
1735 vsk, target, &recv_data); in vsock_stream_recvmsg()
1740 vsk, msg, in vsock_stream_recvmsg()
1750 vsk, target, read, in vsock_stream_recvmsg()
1761 || (vsk->peer_shutdown & SEND_SHUTDOWN)) { in vsock_stream_recvmsg()
1771 vsk, target, &recv_data); in vsock_stream_recvmsg()
1808 if (vsk->peer_shutdown & SEND_SHUTDOWN) { in vsock_stream_recvmsg()
1809 if (vsock_stream_has_data(vsk) <= 0) { in vsock_stream_recvmsg()