Lines Matching defs:vsk

176 #define vsock_connected_sockets_vsk(vsk)				\
177 vsock_connected_sockets(&(vsk)->remote_addr, &(vsk)->local_addr)
187 static int vsock_auto_bind(struct vsock_sock *vsk)
189 struct sock *sk = sk_vsock(vsk);
192 if (vsock_addr_bound(&vsk->local_addr))
210 struct vsock_sock *vsk)
212 sock_hold(&vsk->sk);
213 list_add(&vsk->bound_table, list);
217 struct vsock_sock *vsk)
219 sock_hold(&vsk->sk);
220 list_add(&vsk->connected_table, list);
223 static void __vsock_remove_bound(struct vsock_sock *vsk)
225 list_del_init(&vsk->bound_table);
226 sock_put(&vsk->sk);
229 static void __vsock_remove_connected(struct vsock_sock *vsk)
231 list_del_init(&vsk->connected_table);
232 sock_put(&vsk->sk);
237 struct vsock_sock *vsk;
239 list_for_each_entry(vsk, vsock_bound_sockets(addr), bound_table) {
240 if (vsock_addr_equals_addr(addr, &vsk->local_addr))
241 return sk_vsock(vsk);
243 if (addr->svm_port == vsk->local_addr.svm_port &&
244 (vsk->local_addr.svm_cid == VMADDR_CID_ANY ||
246 return sk_vsock(vsk);
255 struct vsock_sock *vsk;
257 list_for_each_entry(vsk, vsock_connected_sockets(src, dst),
259 if (vsock_addr_equals_addr(src, &vsk->remote_addr) &&
260 dst->svm_port == vsk->local_addr.svm_port) {
261 return sk_vsock(vsk);
268 static void vsock_insert_unbound(struct vsock_sock *vsk)
271 __vsock_insert_bound(vsock_unbound_sockets, vsk);
275 void vsock_insert_connected(struct vsock_sock *vsk)
278 &vsk->remote_addr, &vsk->local_addr);
281 __vsock_insert_connected(list, vsk);
286 void vsock_remove_bound(struct vsock_sock *vsk)
289 if (__vsock_in_bound_table(vsk))
290 __vsock_remove_bound(vsk);
295 void vsock_remove_connected(struct vsock_sock *vsk)
298 if (__vsock_in_connected_table(vsk))
299 __vsock_remove_connected(vsk);
335 void vsock_remove_sock(struct vsock_sock *vsk)
337 vsock_remove_bound(vsk);
338 vsock_remove_connected(vsk);
350 struct vsock_sock *vsk;
351 list_for_each_entry(vsk, &vsock_connected_table[i],
353 if (vsk->transport != transport)
356 fn(sk_vsock(vsk));
417 static void vsock_deassign_transport(struct vsock_sock *vsk)
419 if (!vsk->transport)
422 vsk->transport->destruct(vsk);
423 module_put(vsk->transport->module);
424 vsk->transport = NULL;
429 * Note: for connection oriented socket this must be called when vsk->remote_addr
432 * The vsk->remote_addr is used to decide which transport to use:
439 int vsock_assign_transport(struct vsock_sock *vsk, struct vsock_sock *psk)
442 struct sock *sk = sk_vsock(vsk);
443 unsigned int remote_cid = vsk->remote_addr.svm_cid;
455 if (psk && vsk->local_addr.svm_cid > VMADDR_CID_HOST &&
456 vsk->remote_addr.svm_cid > VMADDR_CID_HOST)
457 vsk->remote_addr.svm_flags |= VMADDR_FLAG_TO_HOST;
459 remote_flags = vsk->remote_addr.svm_flags;
479 if (vsk->transport) {
480 if (vsk->transport == new_transport)
489 vsk->transport->release(vsk);
490 vsock_deassign_transport(vsk);
507 ret = new_transport->init(vsk, psk);
513 vsk->transport = new_transport;
558 struct vsock_sock *vsk = vsock_sk(sk);
559 return list_empty(&vsk->accept_queue);
564 struct vsock_sock *vsk = vsock_sk(sk);
565 return !list_empty(&vsk->pending_links);
570 struct vsock_sock *vsk = vsock_sk(sk);
572 if (!vsk->transport)
575 return vsk->transport->shutdown(vsk, mode);
582 struct vsock_sock *vsk;
585 vsk = container_of(work, struct vsock_sock, pending_work.work);
586 sk = sk_vsock(vsk);
587 listener = vsk->listener;
597 } else if (!vsk->rejected) {
611 vsock_remove_connected(vsk);
627 static int __vsock_bind_connectible(struct vsock_sock *vsk,
669 vsock_addr_init(&vsk->local_addr, new_addr.svm_cid, new_addr.svm_port);
676 __vsock_remove_bound(vsk);
677 __vsock_insert_bound(vsock_bound_sockets(&vsk->local_addr), vsk);
682 static int __vsock_bind_dgram(struct vsock_sock *vsk,
685 return vsk->transport->dgram_bind(vsk, addr);
690 struct vsock_sock *vsk = vsock_sk(sk);
694 if (vsock_addr_bound(&vsk->local_addr))
709 retval = __vsock_bind_connectible(vsk, addr);
714 retval = __vsock_bind_dgram(vsk, addr);
736 struct vsock_sock *vsk;
751 vsk = vsock_sk(sk);
752 vsock_addr_init(&vsk->local_addr, VMADDR_CID_ANY, VMADDR_PORT_ANY);
753 vsock_addr_init(&vsk->remote_addr, VMADDR_CID_ANY, VMADDR_PORT_ANY);
759 INIT_LIST_HEAD(&vsk->bound_table);
760 INIT_LIST_HEAD(&vsk->connected_table);
761 vsk->listener = NULL;
762 INIT_LIST_HEAD(&vsk->pending_links);
763 INIT_LIST_HEAD(&vsk->accept_queue);
764 vsk->rejected = false;
765 vsk->sent_request = false;
766 vsk->ignore_connecting_rst = false;
767 vsk->peer_shutdown = 0;
768 INIT_DELAYED_WORK(&vsk->connect_work, vsock_connect_timeout);
769 INIT_DELAYED_WORK(&vsk->pending_work, vsock_pending_work);
773 vsk->trusted = psk->trusted;
774 vsk->owner = get_cred(psk->owner);
775 vsk->connect_timeout = psk->connect_timeout;
776 vsk->buffer_size = psk->buffer_size;
777 vsk->buffer_min_size = psk->buffer_min_size;
778 vsk->buffer_max_size = psk->buffer_max_size;
781 vsk->trusted = ns_capable_noaudit(&init_user_ns, CAP_NET_ADMIN);
782 vsk->owner = get_current_cred();
783 vsk->connect_timeout = VSOCK_DEFAULT_CONNECT_TIMEOUT;
784 vsk->buffer_size = VSOCK_DEFAULT_BUFFER_SIZE;
785 vsk->buffer_min_size = VSOCK_DEFAULT_BUFFER_MIN_SIZE;
786 vsk->buffer_max_size = VSOCK_DEFAULT_BUFFER_MAX_SIZE;
801 struct vsock_sock *vsk;
803 vsk = vsock_sk(sk);
813 if (vsk->transport)
814 vsk->transport->release(vsk);
816 vsock_remove_sock(vsk);
836 struct vsock_sock *vsk = vsock_sk(sk);
838 vsock_deassign_transport(vsk);
843 vsock_addr_init(&vsk->local_addr, VMADDR_CID_ANY, VMADDR_PORT_ANY);
844 vsock_addr_init(&vsk->remote_addr, VMADDR_CID_ANY, VMADDR_PORT_ANY);
846 put_cred(vsk->owner);
867 s64 vsock_stream_has_data(struct vsock_sock *vsk)
869 return vsk->transport->stream_has_data(vsk);
873 s64 vsock_connectible_has_data(struct vsock_sock *vsk)
875 struct sock *sk = sk_vsock(vsk);
878 return vsk->transport->seqpacket_has_data(vsk);
880 return vsock_stream_has_data(vsk);
884 s64 vsock_stream_has_space(struct vsock_sock *vsk)
886 return vsk->transport->stream_has_space(vsk);
892 struct vsock_sock *vsk = vsock_sk(sk);
894 if (vsock_stream_has_data(vsk) >= sk->sk_rcvlowat ||
933 struct vsock_sock *vsk;
937 vsk = vsock_sk(sk);
947 vm_addr = &vsk->remote_addr;
949 vm_addr = &vsk->local_addr;
1027 struct vsock_sock *vsk;
1030 vsk = vsock_sk(sk);
1044 (vsk->peer_shutdown & SEND_SHUTDOWN))) {
1049 vsk->peer_shutdown & SEND_SHUTDOWN) {
1071 transport = vsk->transport;
1081 if (transport && transport->stream_is_active(vsk) &&
1086 vsk, target, &data_ready_now);
1101 vsk->peer_shutdown & SEND_SHUTDOWN) {
1110 vsk, 1, &space_avail_now);
1142 struct vsock_sock *vsk = vsock_sk(sk);
1144 return vsk->transport->read_skb(vsk, read_actor);
1152 struct vsock_sock *vsk;
1162 vsk = vsock_sk(sk);
1166 transport = vsk->transport;
1168 err = vsock_auto_bind(vsk);
1191 remote_addr = &vsk->remote_addr;
1199 if (!vsock_addr_bound(&vsk->remote_addr)) {
1214 err = transport->dgram_enqueue(vsk, remote_addr, msg, len);
1226 struct vsock_sock *vsk;
1230 vsk = vsock_sk(sk);
1235 vsock_addr_init(&vsk->remote_addr, VMADDR_CID_ANY,
1245 err = vsock_auto_bind(vsk);
1249 if (!vsk->transport->dgram_allow(remote_addr->svm_cid,
1255 memcpy(&vsk->remote_addr, remote_addr, sizeof(vsk->remote_addr));
1279 struct vsock_sock *vsk;
1283 vsk = vsock_sk(sk);
1291 return vsk->transport->dgram_dequeue(vsk, msg, len, flags);
1314 static int vsock_transport_cancel_pkt(struct vsock_sock *vsk)
1316 const struct vsock_transport *transport = vsk->transport;
1321 return transport->cancel_pkt(vsk);
1327 struct vsock_sock *vsk;
1329 vsk = container_of(work, struct vsock_sock, connect_work.work);
1330 sk = sk_vsock(vsk);
1339 vsock_transport_cancel_pkt(vsk);
1351 struct vsock_sock *vsk;
1359 vsk = vsock_sk(sk);
1390 memcpy(&vsk->remote_addr, remote_addr,
1391 sizeof(vsk->remote_addr));
1393 err = vsock_assign_transport(vsk, NULL);
1397 transport = vsk->transport;
1420 err = vsock_auto_bind(vsk);
1426 err = transport->connect(vsk);
1441 timeout = vsk->connect_timeout;
1458 if (mod_delayed_work(system_wq, &vsk->connect_work,
1474 vsock_transport_cancel_pkt(vsk);
1475 vsock_remove_connected(vsk);
1481 vsock_transport_cancel_pkt(vsk);
1592 struct vsock_sock *vsk;
1608 vsk = vsock_sk(sk);
1610 if (!vsock_addr_bound(&vsk->local_addr)) {
1625 static void vsock_update_buffer_size(struct vsock_sock *vsk,
1629 if (val > vsk->buffer_max_size)
1630 val = vsk->buffer_max_size;
1632 if (val < vsk->buffer_min_size)
1633 val = vsk->buffer_min_size;
1635 if (val != vsk->buffer_size &&
1637 transport->notify_buffer_size(vsk, &val);
1639 vsk->buffer_size = val;
1650 struct vsock_sock *vsk;
1671 vsk = vsock_sk(sk);
1675 transport = vsk->transport;
1707 vsock_update_buffer_size(vsk, transport, val);
1712 vsk->buffer_max_size = val;
1713 vsock_update_buffer_size(vsk, transport, vsk->buffer_size);
1718 vsk->buffer_min_size = val;
1719 vsock_update_buffer_size(vsk, transport, vsk->buffer_size);
1732 vsk->connect_timeout = tv.tv_sec * HZ +
1734 if (vsk->connect_timeout == 0)
1735 vsk->connect_timeout =
1762 struct vsock_sock *vsk = vsock_sk(sk);
1784 v.val64 = vsk->buffer_size;
1788 v.val64 = vsk->buffer_max_size;
1792 v.val64 = vsk->buffer_min_size;
1797 lv = sock_get_timeout(vsk->connect_timeout, &v,
1822 struct vsock_sock *vsk;
1831 vsk = vsock_sk(sk);
1840 transport = vsk->transport;
1852 vsk->peer_shutdown & RCV_SHUTDOWN) {
1858 !vsock_addr_bound(&vsk->local_addr)) {
1863 if (!vsock_addr_bound(&vsk->remote_addr)) {
1877 err = transport->notify_send_init(vsk, &send_data);
1885 while (vsock_stream_has_space(vsk) == 0 &&
1888 !(vsk->peer_shutdown & RCV_SHUTDOWN)) {
1897 err = transport->notify_send_pre_block(vsk, &send_data);
1926 (vsk->peer_shutdown & RCV_SHUTDOWN)) {
1931 err = transport->notify_send_pre_enqueue(vsk, &send_data);
1942 written = transport->seqpacket_enqueue(vsk,
1945 written = transport->stream_enqueue(vsk,
1957 vsk, written, &send_data);
1987 struct vsock_sock *vsk;
1991 vsk = vsock_sk(sk);
1993 transport = vsk->transport;
1997 data = vsock_connectible_has_data(vsk);
2003 (vsk->peer_shutdown & SEND_SHUTDOWN)) {
2014 err = transport->notify_recv_pre_block(vsk, target, recv_data);
2052 struct vsock_sock *vsk;
2060 vsk = vsock_sk(sk);
2061 transport = vsk->transport;
2070 if (target >= transport->stream_rcvhiwat(vsk)) {
2077 err = transport->notify_recv_init(vsk, target, &recv_data);
2090 err = transport->notify_recv_pre_dequeue(vsk, target,
2095 read = transport->stream_dequeue(vsk, msg, len - copied, flags);
2103 err = transport->notify_recv_post_dequeue(vsk, target, read,
2130 struct vsock_sock *vsk;
2136 vsk = vsock_sk(sk);
2137 transport = vsk->transport;
2145 msg_len = transport->seqpacket_dequeue(vsk, msg, flags);
2181 struct vsock_sock *vsk;
2193 vsk = vsock_sk(sk);
2198 transport = vsk->transport;
2258 struct vsock_sock *vsk;
2260 vsk = vsock_sk(sk);
2262 if (val > vsk->buffer_size)
2265 transport = vsk->transport;
2270 err = transport->notify_set_rcvlowat(vsk, val);
2325 struct vsock_sock *vsk;
2355 vsk = vsock_sk(sk);
2358 ret = vsock_assign_transport(vsk, NULL);
2371 vsock_insert_unbound(vsk);
2484 const struct vsock_transport *vsock_core_get_transport(struct vsock_sock *vsk)
2486 return vsk->transport;