Lines Matching refs:vsk
159 #define vsock_connected_sockets_vsk(vsk) \ argument
160 vsock_connected_sockets(&(vsk)->remote_addr, &(vsk)->local_addr)
167 static int vsock_auto_bind(struct vsock_sock *vsk) in vsock_auto_bind() argument
169 struct sock *sk = sk_vsock(vsk); in vsock_auto_bind()
172 if (vsock_addr_bound(&vsk->local_addr)) in vsock_auto_bind()
190 struct vsock_sock *vsk) in __vsock_insert_bound() argument
192 sock_hold(&vsk->sk); in __vsock_insert_bound()
193 list_add(&vsk->bound_table, list); in __vsock_insert_bound()
197 struct vsock_sock *vsk) in __vsock_insert_connected() argument
199 sock_hold(&vsk->sk); in __vsock_insert_connected()
200 list_add(&vsk->connected_table, list); in __vsock_insert_connected()
203 static void __vsock_remove_bound(struct vsock_sock *vsk) in __vsock_remove_bound() argument
205 list_del_init(&vsk->bound_table); in __vsock_remove_bound()
206 sock_put(&vsk->sk); in __vsock_remove_bound()
209 static void __vsock_remove_connected(struct vsock_sock *vsk) in __vsock_remove_connected() argument
211 list_del_init(&vsk->connected_table); in __vsock_remove_connected()
212 sock_put(&vsk->sk); in __vsock_remove_connected()
217 struct vsock_sock *vsk; in __vsock_find_bound_socket() local
219 list_for_each_entry(vsk, vsock_bound_sockets(addr), bound_table) in __vsock_find_bound_socket()
220 if (addr->svm_port == vsk->local_addr.svm_port) in __vsock_find_bound_socket()
221 return sk_vsock(vsk); in __vsock_find_bound_socket()
229 struct vsock_sock *vsk; in __vsock_find_connected_socket() local
231 list_for_each_entry(vsk, vsock_connected_sockets(src, dst), in __vsock_find_connected_socket()
233 if (vsock_addr_equals_addr(src, &vsk->remote_addr) && in __vsock_find_connected_socket()
234 dst->svm_port == vsk->local_addr.svm_port) { in __vsock_find_connected_socket()
235 return sk_vsock(vsk); in __vsock_find_connected_socket()
242 static bool __vsock_in_bound_table(struct vsock_sock *vsk) in __vsock_in_bound_table() argument
244 return !list_empty(&vsk->bound_table); in __vsock_in_bound_table()
247 static bool __vsock_in_connected_table(struct vsock_sock *vsk) in __vsock_in_connected_table() argument
249 return !list_empty(&vsk->connected_table); in __vsock_in_connected_table()
252 static void vsock_insert_unbound(struct vsock_sock *vsk) in vsock_insert_unbound() argument
255 __vsock_insert_bound(vsock_unbound_sockets, vsk); in vsock_insert_unbound()
259 void vsock_insert_connected(struct vsock_sock *vsk) in vsock_insert_connected() argument
262 &vsk->remote_addr, &vsk->local_addr); in vsock_insert_connected()
265 __vsock_insert_connected(list, vsk); in vsock_insert_connected()
270 void vsock_remove_bound(struct vsock_sock *vsk) in vsock_remove_bound() argument
273 __vsock_remove_bound(vsk); in vsock_remove_bound()
278 void vsock_remove_connected(struct vsock_sock *vsk) in vsock_remove_connected() argument
281 __vsock_remove_connected(vsk); in vsock_remove_connected()
317 static bool vsock_in_bound_table(struct vsock_sock *vsk) in vsock_in_bound_table() argument
322 ret = __vsock_in_bound_table(vsk); in vsock_in_bound_table()
328 static bool vsock_in_connected_table(struct vsock_sock *vsk) in vsock_in_connected_table() argument
333 ret = __vsock_in_connected_table(vsk); in vsock_in_connected_table()
346 struct vsock_sock *vsk; in vsock_for_each_connected_socket() local
347 list_for_each_entry(vsk, &vsock_connected_table[i], in vsock_for_each_connected_socket()
349 fn(sk_vsock(vsk)); in vsock_for_each_connected_socket()
418 struct vsock_sock *vsk = vsock_sk(sk); in vsock_is_accept_queue_empty() local
419 return list_empty(&vsk->accept_queue); in vsock_is_accept_queue_empty()
424 struct vsock_sock *vsk = vsock_sk(sk); in vsock_is_pending() local
425 return !list_empty(&vsk->pending_links); in vsock_is_pending()
437 struct vsock_sock *vsk; in vsock_pending_work() local
440 vsk = container_of(work, struct vsock_sock, dwork.work); in vsock_pending_work()
441 sk = sk_vsock(vsk); in vsock_pending_work()
442 listener = vsk->listener; in vsock_pending_work()
450 } else if (!vsk->rejected) { in vsock_pending_work()
466 if (vsock_in_connected_table(vsk)) in vsock_pending_work()
467 vsock_remove_connected(vsk); in vsock_pending_work()
484 static int __vsock_bind_stream(struct vsock_sock *vsk, in __vsock_bind_stream() argument
523 vsock_addr_init(&vsk->local_addr, new_addr.svm_cid, new_addr.svm_port); in __vsock_bind_stream()
529 __vsock_remove_bound(vsk); in __vsock_bind_stream()
530 __vsock_insert_bound(vsock_bound_sockets(&vsk->local_addr), vsk); in __vsock_bind_stream()
535 static int __vsock_bind_dgram(struct vsock_sock *vsk, in __vsock_bind_dgram() argument
538 return transport->dgram_bind(vsk, addr); in __vsock_bind_dgram()
543 struct vsock_sock *vsk = vsock_sk(sk); in __vsock_bind() local
548 if (vsock_addr_bound(&vsk->local_addr)) in __vsock_bind()
563 retval = __vsock_bind_stream(vsk, addr); in __vsock_bind()
568 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()