diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2008-10-21 07:00:00 -0700 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2008-10-21 07:00:00 -0700 |
commit | 55f4e4a5ec657a017e3bf75299ad71fd1c968dd3 (patch) | |
tree | 550ce922ea0e125ac6a9738210ce2939bf2fe901 /proxy/proxy_common.h | |
parent | 413f05aaf54fa08c0ae7e997327a4f4a473c0a8d (diff) | |
download | external_qemu-55f4e4a5ec657a017e3bf75299ad71fd1c968dd3.zip external_qemu-55f4e4a5ec657a017e3bf75299ad71fd1c968dd3.tar.gz external_qemu-55f4e4a5ec657a017e3bf75299ad71fd1c968dd3.tar.bz2 |
Initial Contribution
Diffstat (limited to 'proxy/proxy_common.h')
-rw-r--r-- | proxy/proxy_common.h | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/proxy/proxy_common.h b/proxy/proxy_common.h new file mode 100644 index 0000000..54889cf --- /dev/null +++ b/proxy/proxy_common.h @@ -0,0 +1,79 @@ +/* Copyright (C) 2007-2008 The Android Open Source Project +** +** This software is licensed under the terms of the GNU General Public +** License version 2, as published by the Free Software Foundation, and +** may be copied, distributed, and modified under those terms. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +** GNU General Public License for more details. +*/ +#ifndef _PROXY_COMMON_H_ +#define _PROXY_COMMON_H_ + +#ifdef _WIN32 +#include <winsock2.h> +#else +#include <sys/select.h> +#include <netinet/in.h> +#endif + +/* types and definitions used by all proxy connections */ + +typedef enum { + PROXY_EVENT_NONE, + PROXY_EVENT_CONNECTED, + PROXY_EVENT_CONNECTION_REFUSED, + PROXY_EVENT_SERVER_ERROR +} ProxyEvent; + +/* event can't be NONE when this callback is called */ +typedef void (*ProxyEventFunc)( void* opaque, ProxyEvent event ); + +extern void proxy_set_verbose(int mode); + + +typedef enum { + PROXY_OPTION_AUTH_USERNAME = 1, + PROXY_OPTION_AUTH_PASSWORD, + + PROXY_OPTION_HTTP_NOCACHE = 100, + PROXY_OPTION_HTTP_KEEPALIVE, + PROXY_OPTION_HTTP_USER_AGENT, + + PROXY_OPTION_MAX + +} ProxyOptionType; + + +typedef struct { + ProxyOptionType type; + const char* string; + int string_len; +} ProxyOption; + + +/* add a new proxified socket connection to the manager's list. the event function + * will be called when the connection is established or refused. + * + * only IPv4 is supported at the moment, since our slirp code cannot handle IPv6 + * + * returns 0 on success, or -1 if there is no proxy service for this type of connection + */ +extern int proxy_manager_add( int socket, struct sockaddr_in* address, void* ev_opaque, ProxyEventFunc ev_func ); + +/* remove an on-going proxified socket connection from the manager's list. + * this is only necessary when the socket connection must be canceled before + * the connection accept/refusal occured + */ +extern void proxy_manager_del( int socket ); + +/* this function is called to update the select file descriptor sets + * with those of the proxified connection sockets that are currently managed */ +extern void proxy_manager_select_fill( int *pcount, fd_set* read_fds, fd_set* write_fds, fd_set* err_fds); + +/* this function is called to act on proxified connection sockets when network events arrive */ +extern void proxy_manager_poll( fd_set* read_fds, fd_set* write_fds, fd_set* err_fds ); + +#endif /* END */ |