Lines Matching defs:vsk
170 #define vsock_connected_sockets_vsk(vsk) \
171 vsock_connected_sockets(&(vsk)->remote_addr, &(vsk)->local_addr)
181 static int vsock_auto_bind(struct vsock_sock *vsk)
183 struct sock *sk = sk_vsock(vsk);
186 if (vsock_addr_bound(&vsk->local_addr))
204 struct vsock_sock *vsk)
206 sock_hold(&vsk->sk);
207 list_add(&vsk->bound_table, list);
211 struct vsock_sock *vsk)
213 sock_hold(&vsk->sk);
214 list_add(&vsk->connected_table, list);
217 static void __vsock_remove_bound(struct vsock_sock *vsk)
219 list_del_init(&vsk->bound_table);
220 sock_put(&vsk->sk);
223 static void __vsock_remove_connected(struct vsock_sock *vsk)
225 list_del_init(&vsk->connected_table);
226 sock_put(&vsk->sk);
231 struct vsock_sock *vsk;
233 list_for_each_entry(vsk, vsock_bound_sockets(addr), bound_table) {
234 if (vsock_addr_equals_addr(addr, &vsk->local_addr))
235 return sk_vsock(vsk);
237 if (addr->svm_port == vsk->local_addr.svm_port &&
238 (vsk->local_addr.svm_cid == VMADDR_CID_ANY ||
240 return sk_vsock(vsk);
249 struct vsock_sock *vsk;
251 list_for_each_entry(vsk, vsock_connected_sockets(src, dst),
253 if (vsock_addr_equals_addr(src, &vsk->remote_addr) &&
254 dst->svm_port == vsk->local_addr.svm_port) {
255 return sk_vsock(vsk);
262 static void vsock_insert_unbound(struct vsock_sock *vsk)
265 __vsock_insert_bound(vsock_unbound_sockets, vsk);
269 void vsock_insert_connected(struct vsock_sock *vsk)
272 &vsk->remote_addr, &vsk->local_addr);
275 __vsock_insert_connected(list, vsk);
280 void vsock_remove_bound(struct vsock_sock *vsk)
283 if (__vsock_in_bound_table(vsk))
284 __vsock_remove_bound(vsk);
289 void vsock_remove_connected(struct vsock_sock *vsk)
292 if (__vsock_in_connected_table(vsk))
293 __vsock_remove_connected(vsk);
329 void vsock_remove_sock(struct vsock_sock *vsk)
331 vsock_remove_bound(vsk);
332 vsock_remove_connected(vsk);
344 struct vsock_sock *vsk;
345 list_for_each_entry(vsk, &vsock_connected_table[i],
347 if (vsk->transport != transport)
350 fn(sk_vsock(vsk));
411 static void vsock_deassign_transport(struct vsock_sock *vsk)
413 if (!vsk->transport)
416 vsk->transport->destruct(vsk);
417 module_put(vsk->transport->module);
418 vsk->transport = NULL;
423 * Note: for stream socket this must be called when vsk->remote_addr is set
426 * The vsk->remote_addr is used to decide which transport to use:
432 int vsock_assign_transport(struct vsock_sock *vsk, struct vsock_sock *psk)
435 struct sock *sk = sk_vsock(vsk);
436 unsigned int remote_cid = vsk->remote_addr.svm_cid;
455 if (vsk->transport) {
456 if (vsk->transport == new_transport)
465 vsk->transport->release(vsk);
466 vsock_deassign_transport(vsk);
475 ret = new_transport->init(vsk, psk);
481 vsk->transport = new_transport;
526 struct vsock_sock *vsk = vsock_sk(sk);
527 return list_empty(&vsk->accept_queue);
532 struct vsock_sock *vsk = vsock_sk(sk);
533 return !list_empty(&vsk->pending_links);
538 struct vsock_sock *vsk = vsock_sk(sk);
540 if (!vsk->transport)
543 return vsk->transport->shutdown(vsk, mode);
550 struct vsock_sock *vsk;
553 vsk = container_of(work, struct vsock_sock, pending_work.work);
554 sk = sk_vsock(vsk);
555 listener = vsk->listener;
565 } else if (!vsk->rejected) {
579 vsock_remove_connected(vsk);
595 static int __vsock_bind_stream(struct vsock_sock *vsk,
638 vsock_addr_init(&vsk->local_addr, new_addr.svm_cid, new_addr.svm_port);
644 __vsock_remove_bound(vsk);
645 __vsock_insert_bound(vsock_bound_sockets(&vsk->local_addr), vsk);
650 static int __vsock_bind_dgram(struct vsock_sock *vsk,
653 return vsk->transport->dgram_bind(vsk, addr);
658 struct vsock_sock *vsk = vsock_sk(sk);
662 if (vsock_addr_bound(&vsk->local_addr))
676 retval = __vsock_bind_stream(vsk, addr);
681 retval = __vsock_bind_dgram(vsk, addr);
703 struct vsock_sock *vsk;
718 vsk = vsock_sk(sk);
719 vsock_addr_init(&vsk->local_addr, VMADDR_CID_ANY, VMADDR_PORT_ANY);
720 vsock_addr_init(&vsk->remote_addr, VMADDR_CID_ANY, VMADDR_PORT_ANY);
726 INIT_LIST_HEAD(&vsk->bound_table);
727 INIT_LIST_HEAD(&vsk->connected_table);
728 vsk->listener = NULL;
729 INIT_LIST_HEAD(&vsk->pending_links);
730 INIT_LIST_HEAD(&vsk->accept_queue);
731 vsk->rejected = false;
732 vsk->sent_request = false;
733 vsk->ignore_connecting_rst = false;
734 vsk->peer_shutdown = 0;
735 INIT_DELAYED_WORK(&vsk->connect_work, vsock_connect_timeout);
736 INIT_DELAYED_WORK(&vsk->pending_work, vsock_pending_work);
740 vsk->trusted = psk->trusted;
741 vsk->owner = get_cred(psk->owner);
742 vsk->connect_timeout = psk->connect_timeout;
743 vsk->buffer_size = psk->buffer_size;
744 vsk->buffer_min_size = psk->buffer_min_size;
745 vsk->buffer_max_size = psk->buffer_max_size;
748 vsk->trusted = ns_capable_noaudit(&init_user_ns, CAP_NET_ADMIN);
749 vsk->owner = get_current_cred();
750 vsk->connect_timeout = VSOCK_DEFAULT_CONNECT_TIMEOUT;
751 vsk->buffer_size = VSOCK_DEFAULT_BUFFER_SIZE;
752 vsk->buffer_min_size = VSOCK_DEFAULT_BUFFER_MIN_SIZE;
753 vsk->buffer_max_size = VSOCK_DEFAULT_BUFFER_MAX_SIZE;
763 struct vsock_sock *vsk;
765 vsk = vsock_sk(sk);
775 if (vsk->transport)
776 vsk->transport->release(vsk);
778 vsock_remove_sock(vsk);
798 struct vsock_sock *vsk = vsock_sk(sk);
800 vsock_deassign_transport(vsk);
805 vsock_addr_init(&vsk->local_addr, VMADDR_CID_ANY, VMADDR_PORT_ANY);
806 vsock_addr_init(&vsk->remote_addr, VMADDR_CID_ANY, VMADDR_PORT_ANY);
808 put_cred(vsk->owner);
829 s64 vsock_stream_has_data(struct vsock_sock *vsk)
831 return vsk->transport->stream_has_data(vsk);
835 s64 vsock_stream_has_space(struct vsock_sock *vsk)
837 return vsk->transport->stream_has_space(vsk);
874 struct vsock_sock *vsk;
878 vsk = vsock_sk(sk);
888 vm_addr = &vsk->remote_addr;
890 vm_addr = &vsk->local_addr;
968 struct vsock_sock *vsk;
971 vsk = vsock_sk(sk);
985 (vsk->peer_shutdown & SEND_SHUTDOWN))) {
990 vsk->peer_shutdown & SEND_SHUTDOWN) {
1012 transport = vsk->transport;
1022 if (transport && transport->stream_is_active(vsk) &&
1026 vsk, 1, &data_ready_now);
1041 vsk->peer_shutdown & SEND_SHUTDOWN) {
1050 vsk, 1, &space_avail_now);
1085 struct vsock_sock *vsk;
1095 vsk = vsock_sk(sk);
1099 transport = vsk->transport;
1101 err = vsock_auto_bind(vsk);
1124 remote_addr = &vsk->remote_addr;
1132 if (!vsock_addr_bound(&vsk->remote_addr)) {
1147 err = transport->dgram_enqueue(vsk, remote_addr, msg, len);
1159 struct vsock_sock *vsk;
1163 vsk = vsock_sk(sk);
1168 vsock_addr_init(&vsk->remote_addr, VMADDR_CID_ANY,
1178 err = vsock_auto_bind(vsk);
1182 if (!vsk->transport->dgram_allow(remote_addr->svm_cid,
1188 memcpy(&vsk->remote_addr, remote_addr, sizeof(vsk->remote_addr));
1199 struct vsock_sock *vsk = vsock_sk(sock->sk);
1201 return vsk->transport->dgram_dequeue(vsk, msg, len, flags);
1223 static int vsock_transport_cancel_pkt(struct vsock_sock *vsk)
1225 const struct vsock_transport *transport = vsk->transport;
1230 return transport->cancel_pkt(vsk);
1236 struct vsock_sock *vsk;
1238 vsk = container_of(work, struct vsock_sock, connect_work.work);
1239 sk = sk_vsock(vsk);
1248 vsock_transport_cancel_pkt(vsk);
1260 struct vsock_sock *vsk;
1268 vsk = vsock_sk(sk);
1299 memcpy(&vsk->remote_addr, remote_addr,
1300 sizeof(vsk->remote_addr));
1302 err = vsock_assign_transport(vsk, NULL);
1306 transport = vsk->transport;
1318 err = vsock_auto_bind(vsk);
1324 err = transport->connect(vsk);
1339 timeout = vsk->connect_timeout;
1356 if (mod_delayed_work(system_wq, &vsk->connect_work,
1372 vsock_transport_cancel_pkt(vsk);
1373 vsock_remove_connected(vsk);
1379 vsock_transport_cancel_pkt(vsk);
1487 struct vsock_sock *vsk;
1503 vsk = vsock_sk(sk);
1505 if (!vsock_addr_bound(&vsk->local_addr)) {
1520 static void vsock_update_buffer_size(struct vsock_sock *vsk,
1524 if (val > vsk->buffer_max_size)
1525 val = vsk->buffer_max_size;
1527 if (val < vsk->buffer_min_size)
1528 val = vsk->buffer_min_size;
1530 if (val != vsk->buffer_size &&
1532 transport->notify_buffer_size(vsk, &val);
1534 vsk->buffer_size = val;
1545 struct vsock_sock *vsk;
1566 vsk = vsock_sk(sk);
1570 transport = vsk->transport;
1575 vsock_update_buffer_size(vsk, transport, val);
1580 vsk->buffer_max_size = val;
1581 vsock_update_buffer_size(vsk, transport, vsk->buffer_size);
1586 vsk->buffer_min_size = val;
1587 vsock_update_buffer_size(vsk, transport, vsk->buffer_size);
1595 vsk->connect_timeout = tv.tv_sec * HZ +
1597 if (vsk->connect_timeout == 0)
1598 vsk->connect_timeout =
1627 struct vsock_sock *vsk;
1650 vsk = vsock_sk(sk);
1654 val = vsk->buffer_size;
1659 val = vsk->buffer_max_size;
1664 val = vsk->buffer_min_size;
1670 tv.tv_sec = vsk->connect_timeout / HZ;
1672 (vsk->connect_timeout -
1694 struct vsock_sock *vsk;
1703 vsk = vsock_sk(sk);
1712 transport = vsk->transport;
1722 vsk->peer_shutdown & RCV_SHUTDOWN) {
1728 !vsock_addr_bound(&vsk->local_addr)) {
1733 if (!vsock_addr_bound(&vsk->remote_addr)) {
1741 err = transport->notify_send_init(vsk, &send_data);
1749 while (vsock_stream_has_space(vsk) == 0 &&
1752 !(vsk->peer_shutdown & RCV_SHUTDOWN)) {
1761 err = transport->notify_send_pre_block(vsk, &send_data);
1790 (vsk->peer_shutdown & RCV_SHUTDOWN)) {
1795 err = transport->notify_send_pre_enqueue(vsk, &send_data);
1806 vsk, msg,
1816 vsk, written, &send_data);
1836 struct vsock_sock *vsk;
1847 vsk = vsock_sk(sk);
1852 transport = vsk->transport;
1897 if (target >= transport->stream_rcvhiwat(vsk)) {
1904 err = transport->notify_recv_init(vsk, target, &recv_data);
1913 ready = vsock_stream_has_data(vsk);
1918 (vsk->peer_shutdown & SEND_SHUTDOWN)) {
1930 vsk, target, &recv_data);
1964 vsk, target, &recv_data);
1969 vsk, msg,
1979 vsk, target, read,
2028 struct vsock_sock *vsk;
2055 vsk = vsock_sk(sk);
2058 ret = vsock_assign_transport(vsk, NULL);
2065 vsock_insert_unbound(vsk);
2177 const struct vsock_transport *vsock_core_get_transport(struct vsock_sock *vsk)
2179 return vsk->transport;