diff options
Diffstat (limited to 'emulator/opengl/tests/event_injector/sockets.h')
-rw-r--r-- | emulator/opengl/tests/event_injector/sockets.h | 432 |
1 files changed, 0 insertions, 432 deletions
diff --git a/emulator/opengl/tests/event_injector/sockets.h b/emulator/opengl/tests/event_injector/sockets.h deleted file mode 100644 index ea48c5f..0000000 --- a/emulator/opengl/tests/event_injector/sockets.h +++ /dev/null @@ -1,432 +0,0 @@ -/* -* Copyright (C) 2011 The Android Open Source Project -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -/* headers to use the BSD sockets */ -#ifndef ANDROID_SOCKET_H -#define ANDROID_SOCKET_H - -#include <stddef.h> -#include <stdint.h> -#include <errno.h> - -#ifdef __cplusplus -extern "C" { -#endif - -/* we're going to hide the implementation details of sockets behind - * a simple wrapper interface declared here. - * - * all socket operations set the global 'errno' variable on error. - * this is unlike Winsock which instead modifies another internal - * variable accessed through WSAGetLastError() and WSASetLastError() - */ - -/* the wrapper will convert any Winsock error message into an errno - * code for you. There are however a few standard Unix error codes - * that are not defined by the MS C library headers, so we add them - * here. We use the official Winsock error codes, which are documented - * even though we don't want to include the Winsock headers - */ -#ifdef _WIN32 -# ifndef EINTR -# define EINTR 10004 -# endif -# ifndef EAGAIN -# define EAGAIN 10035 -# endif -# ifndef EWOULDBLOCK -# define EWOULDBLOCK EAGAIN -# endif -# ifndef EINPROGRESS -# define EINPROGRESS 10036 -# endif -# ifndef EALREADY -# define EALREADY 10037 -# endif -# ifndef EDESTADDRREQ -# define EDESTADDRREQ 10039 -# endif -# ifndef EMSGSIZE -# define EMSGSIZE 10040 -# endif -# ifndef EPROTOTYPE -# define EPROTOTYPE 10041 -# endif -# ifndef ENOPROTOOPT -# define ENOPROTOOPT 10042 -# endif -# ifndef EAFNOSUPPORT -# define EAFNOSUPPORT 10047 -# endif -# ifndef EADDRINUSE -# define EADDRINUSE 10048 -# endif -# ifndef EADDRNOTAVAIL -# define EADDRNOTAVAIL 10049 -# endif -# ifndef ENETDOWN -# define ENETDOWN 10050 -# endif -# ifndef ENETUNREACH -# define ENETUNREACH 10051 -# endif -# ifndef ENETRESET -# define ENETRESET 10052 -# endif -# ifndef ECONNABORTED -# define ECONNABORTED 10053 -# endif -# ifndef ECONNRESET -# define ECONNRESET 10054 -# endif -# ifndef ENOBUFS -# define ENOBUFS 10055 -# endif -# ifndef EISCONN -# define EISCONN 10056 -# endif -# ifndef ENOTCONN -# define ENOTCONN 10057 -# endif -# ifndef ESHUTDOWN -# define ESHUTDOWN 10058 -# endif -# ifndef ETOOMANYREFS -# define ETOOMANYREFS 10059 -# endif -# ifndef ETIMEDOUT -# define ETIMEDOUT 10060 -# endif -# ifndef ECONNREFUSED -# define ECONNREFUSED 10061 -# endif -# ifndef ELOOP -# define ELOOP 10062 -# endif -# ifndef EHOSTDOWN -# define EHOSTDOWN 10064 -# endif -# ifndef EHOSTUNREACH -# define EHOSTUNREACH 10065 -# endif -#endif /* _WIN32 */ - -/* Define 'errno_str' as a handy macro to return the string - * corresponding to a given errno code. On Unix, this is - * equivalent to strerror(errno), but on Windows, this will - * take care of Winsock-originated errors as well. - */ -#ifdef _WIN32 - extern const char* _errno_str(void); -# define errno_str _errno_str() -#else -# define errno_str strerror(errno) -#endif - -/* always enable IPv6 sockets for now. - * the QEMU internal router is not capable of - * supporting them, but we plan to replace it - * with something better in the future. - */ -#define HAVE_IN6_SOCKETS 1 - -/* Unix sockets are not available on Win32 */ -#ifndef _WIN32 -# define HAVE_UNIX_SOCKETS 1 -#endif - -/* initialize the socket sub-system. this must be called before - * using any of the declarations below. - */ -int socket_init( void ); - -/* return the name of the current host */ -char* host_name( void ); - -/* supported socket types */ -typedef enum { - SOCKET_DGRAM = 0, - SOCKET_STREAM -} SocketType; - -/* supported socket families */ -typedef enum { - SOCKET_UNSPEC, - SOCKET_INET, - SOCKET_IN6, - SOCKET_UNIX -} SocketFamily; - -/* Generic socket address structure. Note that for Unix - * sockets, the path is stored in a heap-allocated block, - * unless the 'owner' field is cleared. If this is the case, - */ -typedef struct { - SocketFamily family; - union { - struct { - uint16_t port; - uint32_t address; - } inet; - struct { - uint16_t port; - uint8_t address[16]; - } in6; - struct { - int owner; - const char* path; - } _unix; - } u; -} SockAddress; - -#define SOCK_ADDRESS_INET_ANY 0x00000000 -#define SOCK_ADDRESS_INET_LOOPBACK 0x7f000001 - -/* initialize a new IPv4 socket address, the IP address and port are - * in host endianess. - */ -void sock_address_init_inet( SockAddress* a, uint32_t ip, uint16_t port ); - -/* Initialize an IPv6 socket address, the address is in network order - * and the port in host endianess. - */ -#if HAVE_IN6_SOCKETS -void sock_address_init_in6 ( SockAddress* a, const uint8_t* ip6[16], uint16_t port ); -#endif - -/* Intialize a Unix socket address, this will copy the 'path' string into the - * heap. You need to call sock_address_done() to release the copy - */ -#if HAVE_UNIX_SOCKETS -void sock_address_init_unix( SockAddress* a, const char* path ); -#endif - -/* Finalize a socket address, only needed for now for Unix addresses */ -void sock_address_done( SockAddress* a ); - -int sock_address_equal( const SockAddress* a, const SockAddress* b ); - -/* return a static string describing the address */ -const char* sock_address_to_string( const SockAddress* a ); - -static __inline__ -SocketFamily sock_address_get_family( const SockAddress* a ) -{ - return a->family; -} - -/* return the port number of a given socket address, or -1 if it's a Unix one */ -int sock_address_get_port( const SockAddress* a ); - -/* set the port number of a given socket address, don't do anything for Unix ones */ -void sock_address_set_port( SockAddress* a, uint16_t port ); - -/* return the path of a given Unix socket, returns NULL for non-Unix ones */ -const char* sock_address_get_path( const SockAddress* a ); - -/* return the inet address, or -1 if it's not SOCKET_INET */ -int sock_address_get_ip( const SockAddress* a ); - -/* bufprint a socket address into a human-readable string */ -char* bufprint_sock_address( char* p, char* end, const SockAddress* a ); - -/* resolve a hostname or decimal IPv4/IPv6 address into a socket address. - * returns 0 on success, or -1 on failure. Note that the values or errno - * set by this function are the following: - * - * EINVAL : invalid argument - * EHOSTDOWN : could not reach DNS server - * ENOENT : no host with this name, or host doesn't have any IP address - * ENOMEM : not enough memory to perform request - */ -int sock_address_init_resolve( SockAddress* a, - const char* hostname, - uint16_t port, - int preferIn6 ); - -int sock_address_get_numeric_info( SockAddress* a, - char* host, - size_t hostlen, - char* serv, - size_t servlen ); - -/* Support for listing all socket addresses of a given host */ -enum { - SOCKET_LIST_PASSIVE = (1 << 0), - SOCKET_LIST_FORCE_INET = (1 << 1), - SOCKET_LIST_FORCE_IN6 = (1 << 2), - SOCKET_LIST_DGRAM = (1 << 3), -}; - -/* resolve a host and service/port name into a list of SockAddress objects. - * returns a NULL-terminated array of SockAddress pointers on success, - * or NULL in case of failure, with the value of errno set to one of the - * following: - * - * EINVAL : invalid argument - * EHOSTDOWN : could not reach DNS server - * ENOENT : no host with this name, or host doesn't have IP address - * ENOMEM : not enough memory to perform request - * - * other system-level errors can also be set depending on the host sockets - * implementation. - * - * This function loops on EINTR so the caller shouldn't have to check for it. - */ -SockAddress** sock_address_list_create( const char* hostname, - const char* port, - unsigned flags ); - -/* resolve a string containing host and port name into a list of SockAddress - * objects. Parameter host_and_port should be in format [host:]port, where - * 'host' addresses the machine and must be resolvable into an IP address, and - * 'port' is a decimal numeric value for the port. 'host' is optional, and if - * ommited, localhost will be used. - * returns a NULL-terminated array of SockAddress pointers on success, - * or NULL in case of failure, with the value of errno set to one of the - * following: - * - * EINVAL : invalid argument - * EHOSTDOWN : could not reach DNS server - * ENOENT : no host with this name, or host doesn't have IP address - * ENOMEM : not enough memory to perform request - * - * other system-level errors can also be set depending on the host sockets - * implementation. - * - * This function loops on EINTR so the caller shouldn't have to check for it. - */ -SockAddress** sock_address_list_create2(const char* host_and_port, - unsigned flags ); - -void sock_address_list_free( SockAddress** list ); - -/* create a new socket, return the socket number of -1 on failure */ -int socket_create( SocketFamily family, SocketType type ); - -/* create a new socket intended for IPv4 communication. returns the socket number, - * or -1 on failure. - */ -int socket_create_inet( SocketType type ); - -/* create a new socket intended for IPv6 communication. returns the socket number, - * or -1 on failure. - */ -#if HAVE_IN6_SOCKETS -int socket_create_in6 ( SocketType type ); -#endif - -/* create a unix/local domain socket. returns the socket number, - * or -1 on failure. - */ -#if HAVE_UNIX_SOCKETS -int socket_create_unix( SocketType type ); -#endif - -/* return the type of a given socket */ -SocketType socket_get_type(int fd); - -/* set SO_REUSEADDR on Unix, SO_EXCLUSIVEADDR on Windows */ -int socket_set_xreuseaddr(int fd); - -/* set socket in non-blocking mode */ -int socket_set_nonblock(int fd); - -/* set socket in blocking mode */ -int socket_set_blocking(int fd); - -/* disable the TCP Nagle algorithm for lower latency */ -int socket_set_nodelay(int fd); - -/* send OOB data inline for this socket */ -int socket_set_oobinline(int fd); - -/* force listening to IPv6 interfaces only */ -int socket_set_ipv6only(int fd); - -/* retrieve last socket error code */ -int socket_get_error(int fd); - -/* close an opened socket. Note that this is unlike the Unix 'close' because: - * - it will properly shutdown the socket in the background - * - it does not modify errno - */ -void socket_close( int fd ); - -/* the following functions are equivalent to the BSD sockets ones - */ -int socket_recv ( int fd, void* buf, int buflen ); -int socket_recvfrom( int fd, void* buf, int buflen, SockAddress* from ); - -int socket_send ( int fd, const void* buf, int buflen ); -int socket_send_oob( int fd, const void* buf, int buflen ); -int socket_sendto( int fd, const void* buf, int buflen, const SockAddress* to ); - -int socket_connect( int fd, const SockAddress* address ); -int socket_bind( int fd, const SockAddress* address ); -int socket_get_address( int fd, SockAddress* address ); -int socket_get_peer_address( int fd, SockAddress* address ); -int socket_listen( int fd, int backlog ); -int socket_accept( int fd, SockAddress* address ); - -/* returns the number of bytes that can be read from a socket */ -int socket_can_read( int fd ); - -/* this call creates a pair of non-blocking sockets connected - * to each other. this is equivalent to calling the Unix function: - * socketpair(AF_LOCAL,SOCK_STREAM,0,&fds) - * - * on Windows, this will use a pair of TCP loopback sockets instead - * returns 0 on success, -1 on error. - */ -int socket_pair(int *fd1, int *fd2); - -/* create a server socket listening on the host's loopback interface */ -int socket_loopback_server( int port, SocketType type ); - -/* connect to a port on the host's loopback interface */ -int socket_loopback_client( int port, SocketType type ); - -/* create a server socket listening to a Unix domain path */ -#if HAVE_UNIX_SOCKETS -int socket_unix_server( const char* name, SocketType type ); -#endif - -/* create a Unix sockets and connects it to a Unix server */ -#if HAVE_UNIX_SOCKETS -int socket_unix_client( const char* name, SocketType type ); -#endif - -/* create an IPv4 client socket and connect it to a given host */ -int socket_network_client( const char* host, int port, SocketType type ); - -/* create an IPv4 socket and binds it to a given port of the host's interface */ -int socket_anyaddr_server( int port, SocketType type ); - -/* accept a connection from the host's any interface, return the new socket - * descriptor or -1 */ -int socket_accept_any( int server_fd ); - - -int socket_mcast_inet_add_membership( int s, uint32_t ip ); -int socket_mcast_inet_drop_membership( int s, uint32_t ip ); -int socket_mcast_inet_set_loop( int s, int enabled ); -int socket_mcast_inet_set_ttl( int s, int ttl ); - -#ifdef __cplusplus -} -#endif - -#endif /* ANDROID_SOCKET_H */ |