1 /* 2 * Copyright (c) 2024 Apple Inc. All rights reserved. 3 * 4 * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. The rights granted to you under the License 10 * may not be used to create, or enable the creation or redistribution of, 11 * unlawful or unlicensed copies of an Apple operating system, or to 12 * circumvent, violate, or enable the circumvention or violation of, any 13 * terms of an Apple operating system software license agreement. 14 * 15 * Please obtain a copy of the License at 16 * http://www.opensource.apple.com/apsl/ and read it before using this file. 17 * 18 * The Original Code and all software distributed under the License are 19 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 20 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 21 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 22 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 23 * Please see the License for the specific language governing rights and 24 * limitations under the License. 25 * 26 * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 27 */ 28 29 #ifndef VSOCK_HELPERS_H 30 #define VSOCK_HELPERS_H 31 32 #include <sys/cdefs.h> 33 #include <sys/ioctl.h> 34 #include <sys/socket.h> 35 #include <sys/sysctl.h> 36 #include <sys/vsock_private.h> 37 #include <errno.h> 38 39 #include <darwintest.h> 40 #include <darwintest_utils.h> 41 42 #define COUNT_ELEMS(array) (sizeof (array) / sizeof (array[0])) 43 44 int 45 vsock_new_socket(void); 46 47 int 48 vsock_private_new_socket(void); 49 50 uint32_t 51 vsock_get_local_cid(int socket); 52 53 int 54 vsock_bind(uint32_t cid, uint32_t port, struct sockaddr_vm * addr, int *socket); 55 56 int 57 vsock_private_bind(uint32_t cid, uint32_t port, struct sockaddr_vm * addr, int *socket); 58 59 int 60 vsock_listen(uint32_t cid, uint32_t port, struct sockaddr_vm * addr, int backlog, int *socket); 61 62 int 63 vsock_private_listen(uint32_t cid, uint32_t port, struct sockaddr_vm * addr, int backlog, int *socket); 64 65 int 66 vsock_connect(uint32_t cid, uint32_t port, int *socket); 67 68 int 69 vsock_private_connect(uint32_t cid, uint32_t port, int *socket); 70 71 struct sockaddr_vm 72 vsock_getsockname(int socket); 73 74 void 75 vsock_close(int socket); 76 77 void 78 vsock_connect_peers(uint32_t cid, uint32_t port, int backlog, int *socketA, int *socketB); 79 80 void 81 vsock_send(int socket, char *msg); 82 83 void 84 vsock_disable_sigpipe(int socket); 85 86 bool 87 vsock_address_exists(struct xvsockpgen *buffer, struct sockaddr_vm addr); 88 89 uint32_t 90 vsock_get_available_port(void); 91 92 int 93 vsock_bind_family(sa_family_t family); 94 95 #endif /* VSOCK_HELPERS_H */ 96