diff options
Diffstat (limited to 'external/unbound/util/netevent.h')
m--------- | external/unbound | 0 | ||||
-rw-r--r-- | external/unbound/util/netevent.h | 731 |
2 files changed, 0 insertions, 731 deletions
diff --git a/external/unbound b/external/unbound new file mode 160000 +Subproject 193bdc4ee3fe2b0d17e547e86512528c2614483 diff --git a/external/unbound/util/netevent.h b/external/unbound/util/netevent.h deleted file mode 100644 index cb8eb86b9..000000000 --- a/external/unbound/util/netevent.h +++ /dev/null @@ -1,731 +0,0 @@ -/* - * util/netevent.h - event notification - * - * Copyright (c) 2007, NLnet Labs. All rights reserved. - * - * This software is open source. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * Neither the name of the NLNET LABS nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/** - * \file - * - * This file contains event notification functions. - * - * There are three types of communication points - * o UDP socket - perthread buffer. - * o TCP-accept socket - array of TCP-sockets, socketcount. - * o TCP socket - own buffer, parent-TCPaccept, read/write state, - * number of bytes read/written, timeout. - * - * There are sockets aimed towards our clients and towards the internet. - * o frontside - aimed towards our clients, queries come in, answers back. - * o behind - aimed towards internet, to the authoritative DNS servers. - * - * Several event types are available: - * o comm_base - for thread safety of the comm points, one per thread. - * o comm_point - udp and tcp networking, with callbacks. - * o comm_timer - a timeout with callback. - * o comm_signal - callbacks when signal is caught. - * o comm_reply - holds reply info during networking callback. - * - */ - -#ifndef NET_EVENT_H -#define NET_EVENT_H - -#include "dnscrypt/dnscrypt.h" - -struct sldns_buffer; -struct comm_point; -struct comm_reply; -struct ub_event_base; - -/* internal event notification data storage structure. */ -struct internal_event; -struct internal_base; -struct internal_timer; /* A sub struct of the comm_timer super struct */ - -/** callback from communication point function type */ -typedef int comm_point_callback_type(struct comm_point*, void*, int, - struct comm_reply*); - -/** to pass no_error to callback function */ -#define NETEVENT_NOERROR 0 -/** to pass closed connection to callback function */ -#define NETEVENT_CLOSED -1 -/** to pass timeout happened to callback function */ -#define NETEVENT_TIMEOUT -2 -/** to pass fallback from capsforID to callback function; 0x20 failed */ -#define NETEVENT_CAPSFAIL -3 - -/** timeout to slow accept calls when not possible, in msec. */ -#define NETEVENT_SLOW_ACCEPT_TIME 2000 - -/** - * A communication point dispatcher. Thread specific. - */ -struct comm_base { - /** behind the scenes structure. with say libevent info. alloced */ - struct internal_base* eb; - /** callback to stop listening on accept sockets, - * performed when accept() will not function properly */ - void (*stop_accept)(void*); - /** callback to start listening on accept sockets, performed - * after stop_accept() then a timeout has passed. */ - void (*start_accept)(void*); - /** user argument for stop_accept and start_accept functions */ - void* cb_arg; -}; - -/** - * Reply information for a communication point. - */ -struct comm_reply { - /** the comm_point with fd to send reply on to. */ - struct comm_point* c; - /** the address (for UDP based communication) */ - struct sockaddr_storage addr; - /** length of address */ - socklen_t addrlen; - /** return type 0 (none), 4(IP4), 6(IP6) */ - int srctype; - /* DnsCrypt context */ -#ifdef USE_DNSCRYPT - uint8_t client_nonce[crypto_box_HALF_NONCEBYTES]; - uint8_t nmkey[crypto_box_BEFORENMBYTES]; - const KeyPair *keypair; - int is_dnscrypted; -#endif - /** the return source interface data */ - union { -#ifdef IPV6_PKTINFO - struct in6_pktinfo v6info; -#endif -#ifdef IP_PKTINFO - struct in_pktinfo v4info; -#elif defined(IP_RECVDSTADDR) - struct in_addr v4addr; -#endif - } - /** variable with return source data */ - pktinfo; - /** max udp size for udp packets */ - size_t max_udp_size; -}; - -/** - * Communication point to the network - * These behaviours can be accomplished by setting the flags - * and passing return values from the callback. - * udp frontside: called after readdone. sendafter. - * tcp frontside: called readdone, sendafter. close. - * udp behind: called after readdone. No send after. - * tcp behind: write done, read done, then called. No send after. - */ -struct comm_point { - /** behind the scenes structure, with say libevent info. alloced. */ - struct internal_event* ev; - - /** file descriptor for communication point */ - int fd; - - /** timeout (NULL if it does not). Malloced. */ - struct timeval* timeout; - - /** buffer pointer. Either to perthread, or own buffer or NULL */ - struct sldns_buffer* buffer; - - /* -------- TCP Handler -------- */ - /** Read/Write state for TCP */ - int tcp_is_reading; - /** The current read/write count for TCP */ - size_t tcp_byte_count; - /** parent communication point (for TCP sockets) */ - struct comm_point* tcp_parent; - /** sockaddr from peer, for TCP handlers */ - struct comm_reply repinfo; - - /* -------- TCP Accept -------- */ - /** the number of TCP handlers for this tcp-accept socket */ - int max_tcp_count; - /** current number of tcp handler in-use for this accept socket */ - int cur_tcp_count; - /** malloced array of tcp handlers for a tcp-accept, - of size max_tcp_count. */ - struct comm_point** tcp_handlers; - /** linked list of free tcp_handlers to use for new queries. - For tcp_accept the first entry, for tcp_handlers the next one. */ - struct comm_point* tcp_free; - - /* -------- SSL TCP DNS ------- */ - /** the SSL object with rw bio (owned) or for commaccept ctx ref */ - void* ssl; - /** handshake state for init and renegotiate */ - enum { - /** no handshake, it has been done */ - comm_ssl_shake_none = 0, - /** ssl initial handshake wants to read */ - comm_ssl_shake_read, - /** ssl initial handshake wants to write */ - comm_ssl_shake_write, - /** ssl_write wants to read */ - comm_ssl_shake_hs_read, - /** ssl_read wants to write */ - comm_ssl_shake_hs_write - } ssl_shake_state; - - /* -------- dnstap ------- */ - /** the dnstap environment */ - struct dt_env* dtenv; - - /** is this a UDP, TCP-accept or TCP socket. */ - enum comm_point_type { - /** UDP socket - handle datagrams. */ - comm_udp, - /** TCP accept socket - only creates handlers if readable. */ - comm_tcp_accept, - /** TCP handler socket - handle byteperbyte readwrite. */ - comm_tcp, - /** AF_UNIX socket - for internal commands. */ - comm_local, - /** raw - not DNS format - for pipe readers and writers */ - comm_raw - } - /** variable with type of socket, UDP,TCP-accept,TCP,pipe */ - type; - - /* ---------- Behaviour ----------- */ - /** if set the connection is NOT closed on delete. */ - int do_not_close; - - /** if set, the connection is closed on error, on timeout, - and after read/write completes. No callback is done. */ - int tcp_do_close; - - /** if set, read/write completes: - read/write state of tcp is toggled. - buffer reset/bytecount reset. - this flag cleared. - So that when that is done the callback is called. */ - int tcp_do_toggle_rw; - - /** timeout in msec for TCP wait times for this connection */ - int tcp_timeout_msec; - - /** if set, checks for pending error from nonblocking connect() call.*/ - int tcp_check_nb_connect; - -#ifdef USE_MSG_FASTOPEN - /** used to track if the sendto() call should be done when using TFO. */ - int tcp_do_fastopen; -#endif - -#ifdef USE_DNSCRYPT - /** Is this a dnscrypt channel */ - int dnscrypt; - /** encrypted buffer pointer. Either to perthread, or own buffer or NULL */ - struct sldns_buffer* dnscrypt_buffer; -#endif - /** number of queries outstanding on this socket, used by - * outside network for udp ports */ - int inuse; - - /** callback when done. - tcp_accept does not get called back, is NULL then. - If a timeout happens, callback with timeout=1 is called. - If an error happens, callback is called with error set - nonzero. If not NETEVENT_NOERROR, it is an errno value. - If the connection is closed (by remote end) then the - callback is called with error set to NETEVENT_CLOSED=-1. - If a timeout happens on the connection, the error is set to - NETEVENT_TIMEOUT=-2. - The reply_info can be copied if the reply needs to happen at a - later time. It consists of a struct with commpoint and address. - It can be passed to a msg send routine some time later. - Note the reply information is temporary and must be copied. - NULL is passed for_reply info, in cases where error happened. - - declare as: - int my_callback(struct comm_point* c, void* my_arg, int error, - struct comm_reply *reply_info); - - if the routine returns 0, nothing is done. - Notzero, the buffer will be sent back to client. - For UDP this is done without changing the commpoint. - In TCP it sets write state. - */ - comm_point_callback_type* callback; - /** argument to pass to callback. */ - void *cb_arg; -}; - -/** - * Structure only for making timeout events. - */ -struct comm_timer { - /** the internal event stuff (derived) */ - struct internal_timer* ev_timer; - - /** callback function, takes user arg only */ - void (*callback)(void*); - - /** callback user argument */ - void* cb_arg; -}; - -/** - * Structure only for signal events. - */ -struct comm_signal { - /** the communication base */ - struct comm_base* base; - - /** the internal event stuff */ - struct internal_signal* ev_signal; - - /** callback function, takes signal number and user arg */ - void (*callback)(int, void*); - - /** callback user argument */ - void* cb_arg; -}; - -/** - * Create a new comm base. - * @param sigs: if true it attempts to create a default loop for - * signal handling. - * @return: the new comm base. NULL on error. - */ -struct comm_base* comm_base_create(int sigs); - -/** - * Create comm base that uses the given ub_event_base (underlying pluggable - * event mechanism pointer). - * @param base: underlying pluggable event base. - * @return: the new comm base. NULL on error. - */ -struct comm_base* comm_base_create_event(struct ub_event_base* base); - -/** - * Delete comm base structure but not the underlying lib event base. - * All comm points must have been deleted. - * @param b: the base to delete. - */ -void comm_base_delete_no_base(struct comm_base* b); - -/** - * Destroy a comm base. - * All comm points must have been deleted. - * @param b: the base to delete. - */ -void comm_base_delete(struct comm_base* b); - -/** - * Obtain two pointers. The pointers never change (until base_delete()). - * The pointers point to time values that are updated regularly. - * @param b: the communication base that will update the time values. - * @param tt: pointer to time in seconds is returned. - * @param tv: pointer to time in microseconds is returned. - */ -void comm_base_timept(struct comm_base* b, time_t** tt, struct timeval** tv); - -/** - * Dispatch the comm base events. - * @param b: the communication to perform. - */ -void comm_base_dispatch(struct comm_base* b); - -/** - * Exit from dispatch loop. - * @param b: the communication base that is in dispatch(). - */ -void comm_base_exit(struct comm_base* b); - -/** - * Set the slow_accept mode handlers. You can not provide these if you do - * not perform accept() calls. - * @param b: comm base - * @param stop_accept: function that stops listening to accept fds. - * @param start_accept: function that resumes listening to accept fds. - * @param arg: callback arg to pass to the functions. - */ -void comm_base_set_slow_accept_handlers(struct comm_base* b, - void (*stop_accept)(void*), void (*start_accept)(void*), void* arg); - -/** - * Access internal data structure (for util/tube.c on windows) - * @param b: comm base - * @return ub_event_base. - */ -struct ub_event_base* comm_base_internal(struct comm_base* b); - -/** - * Create an UDP comm point. Calls malloc. - * setups the structure with the parameters you provide. - * @param base: in which base to alloc the commpoint. - * @param fd : file descriptor of open UDP socket. - * @param buffer: shared buffer by UDP sockets from this thread. - * @param callback: callback function pointer. - * @param callback_arg: will be passed to your callback function. - * @return: returns the allocated communication point. NULL on error. - * Sets timeout to NULL. Turns off TCP options. - */ -struct comm_point* comm_point_create_udp(struct comm_base* base, - int fd, struct sldns_buffer* buffer, - comm_point_callback_type* callback, void* callback_arg); - -/** - * Create an UDP with ancillary data comm point. Calls malloc. - * Uses recvmsg instead of recv to get udp message. - * setups the structure with the parameters you provide. - * @param base: in which base to alloc the commpoint. - * @param fd : file descriptor of open UDP socket. - * @param buffer: shared buffer by UDP sockets from this thread. - * @param callback: callback function pointer. - * @param callback_arg: will be passed to your callback function. - * @return: returns the allocated communication point. NULL on error. - * Sets timeout to NULL. Turns off TCP options. - */ -struct comm_point* comm_point_create_udp_ancil(struct comm_base* base, - int fd, struct sldns_buffer* buffer, - comm_point_callback_type* callback, void* callback_arg); - -/** - * Create a TCP listener comm point. Calls malloc. - * Setups the structure with the parameters you provide. - * Also Creates TCP Handlers, pre allocated for you. - * Uses the parameters you provide. - * @param base: in which base to alloc the commpoint. - * @param fd: file descriptor of open TCP socket set to listen nonblocking. - * @param num: becomes max_tcp_count, the routine allocates that - * many tcp handler commpoints. - * @param bufsize: size of buffer to create for handlers. - * @param callback: callback function pointer for TCP handlers. - * @param callback_arg: will be passed to your callback function. - * @return: returns the TCP listener commpoint. You can find the - * TCP handlers in the array inside the listener commpoint. - * returns NULL on error. - * Inits timeout to NULL. All handlers are on the free list. - */ -struct comm_point* comm_point_create_tcp(struct comm_base* base, - int fd, int num, size_t bufsize, - comm_point_callback_type* callback, void* callback_arg); - -/** - * Create an outgoing TCP commpoint. No file descriptor is opened, left at -1. - * @param base: in which base to alloc the commpoint. - * @param bufsize: size of buffer to create for handlers. - * @param callback: callback function pointer for the handler. - * @param callback_arg: will be passed to your callback function. - * @return: the commpoint or NULL on error. - */ -struct comm_point* comm_point_create_tcp_out(struct comm_base* base, - size_t bufsize, comm_point_callback_type* callback, void* callback_arg); - -/** - * Create commpoint to listen to a local domain file descriptor. - * @param base: in which base to alloc the commpoint. - * @param fd: file descriptor of open AF_UNIX socket set to listen nonblocking. - * @param bufsize: size of buffer to create for handlers. - * @param callback: callback function pointer for the handler. - * @param callback_arg: will be passed to your callback function. - * @return: the commpoint or NULL on error. - */ -struct comm_point* comm_point_create_local(struct comm_base* base, - int fd, size_t bufsize, - comm_point_callback_type* callback, void* callback_arg); - -/** - * Create commpoint to listen to a local domain pipe descriptor. - * @param base: in which base to alloc the commpoint. - * @param fd: file descriptor. - * @param writing: true if you want to listen to writes, false for reads. - * @param callback: callback function pointer for the handler. - * @param callback_arg: will be passed to your callback function. - * @return: the commpoint or NULL on error. - */ -struct comm_point* comm_point_create_raw(struct comm_base* base, - int fd, int writing, - comm_point_callback_type* callback, void* callback_arg); - -/** - * Close a comm point fd. - * @param c: comm point to close. - */ -void comm_point_close(struct comm_point* c); - -/** - * Close and deallocate (free) the comm point. If the comm point is - * a tcp-accept point, also its tcp-handler points are deleted. - * @param c: comm point to delete. - */ -void comm_point_delete(struct comm_point* c); - -/** - * Send reply. Put message into commpoint buffer. - * @param repinfo: The reply info copied from a commpoint callback call. - */ -void comm_point_send_reply(struct comm_reply* repinfo); - -/** - * Drop reply. Cleans up. - * @param repinfo: The reply info copied from a commpoint callback call. - */ -void comm_point_drop_reply(struct comm_reply* repinfo); - -/** - * Send an udp message over a commpoint. - * @param c: commpoint to send it from. - * @param packet: what to send. - * @param addr: where to send it to. - * @param addrlen: length of addr. - * @return: false on a failure. - */ -int comm_point_send_udp_msg(struct comm_point* c, struct sldns_buffer* packet, - struct sockaddr* addr, socklen_t addrlen); - -/** - * Stop listening for input on the commpoint. No callbacks will happen. - * @param c: commpoint to disable. The fd is not closed. - */ -void comm_point_stop_listening(struct comm_point* c); - -/** - * Start listening again for input on the comm point. - * @param c: commpoint to enable again. - * @param newfd: new fd, or -1 to leave fd be. - * @param msec: timeout in milliseconds, or -1 for no (change to the) timeout. - * So seconds*1000. - */ -void comm_point_start_listening(struct comm_point* c, int newfd, int msec); - -/** - * Stop listening and start listening again for reading or writing. - * @param c: commpoint - * @param rd: if true, listens for reading. - * @param wr: if true, listens for writing. - */ -void comm_point_listen_for_rw(struct comm_point* c, int rd, int wr); - -/** - * Get size of memory used by comm point. - * For TCP handlers this includes subhandlers. - * For UDP handlers, this does not include the (shared) UDP buffer. - * @param c: commpoint. - * @return size in bytes. - */ -size_t comm_point_get_mem(struct comm_point* c); - -/** - * create timer. Not active upon creation. - * @param base: event handling base. - * @param cb: callback function: void myfunc(void* myarg); - * @param cb_arg: user callback argument. - * @return: the new timer or NULL on error. - */ -struct comm_timer* comm_timer_create(struct comm_base* base, - void (*cb)(void*), void* cb_arg); - -/** - * disable timer. Stops callbacks from happening. - * @param timer: to disable. - */ -void comm_timer_disable(struct comm_timer* timer); - -/** - * reset timevalue for timer. - * @param timer: timer to (re)set. - * @param tv: when the timer should activate. if NULL timer is disabled. - */ -void comm_timer_set(struct comm_timer* timer, struct timeval* tv); - -/** - * delete timer. - * @param timer: to delete. - */ -void comm_timer_delete(struct comm_timer* timer); - -/** - * see if timeout has been set to a value. - * @param timer: the timer to examine. - * @return: false if disabled or not set. - */ -int comm_timer_is_set(struct comm_timer* timer); - -/** - * Get size of memory used by comm timer. - * @param timer: the timer to examine. - * @return size in bytes. - */ -size_t comm_timer_get_mem(struct comm_timer* timer); - -/** - * Create a signal handler. Call signal_bind() later to bind to a signal. - * @param base: communication base to use. - * @param callback: called when signal is caught. - * @param cb_arg: user argument to callback - * @return: the signal struct or NULL on error. - */ -struct comm_signal* comm_signal_create(struct comm_base* base, - void (*callback)(int, void*), void* cb_arg); - -/** - * Bind signal struct to catch a signal. A signle comm_signal can be bound - * to multiple signals, calling comm_signal_bind multiple times. - * @param comsig: the communication point, with callback information. - * @param sig: signal number. - * @return: true on success. false on error. - */ -int comm_signal_bind(struct comm_signal* comsig, int sig); - -/** - * Delete the signal communication point. - * @param comsig: to delete. - */ -void comm_signal_delete(struct comm_signal* comsig); - -/** - * perform accept(2) with error checking. - * @param c: commpoint with accept fd. - * @param addr: remote end returned here. - * @param addrlen: length of remote end returned here. - * @return new fd, or -1 on error. - * if -1, error message has been printed if necessary, simply drop - * out of the reading handler. - */ -int comm_point_perform_accept(struct comm_point* c, - struct sockaddr_storage* addr, socklen_t* addrlen); - -/**** internal routines ****/ - -/** - * This routine is published for checks and tests, and is only used internally. - * handle libevent callback for udp comm point. - * @param fd: file descriptor. - * @param event: event bits from libevent: - * EV_READ, EV_WRITE, EV_SIGNAL, EV_TIMEOUT. - * @param arg: the comm_point structure. - */ -void comm_point_udp_callback(int fd, short event, void* arg); - -/** - * This routine is published for checks and tests, and is only used internally. - * handle libevent callback for udp ancillary data comm point. - * @param fd: file descriptor. - * @param event: event bits from libevent: - * EV_READ, EV_WRITE, EV_SIGNAL, EV_TIMEOUT. - * @param arg: the comm_point structure. - */ -void comm_point_udp_ancil_callback(int fd, short event, void* arg); - -/** - * This routine is published for checks and tests, and is only used internally. - * handle libevent callback for tcp accept comm point - * @param fd: file descriptor. - * @param event: event bits from libevent: - * EV_READ, EV_WRITE, EV_SIGNAL, EV_TIMEOUT. - * @param arg: the comm_point structure. - */ -void comm_point_tcp_accept_callback(int fd, short event, void* arg); - -/** - * This routine is published for checks and tests, and is only used internally. - * handle libevent callback for tcp data comm point - * @param fd: file descriptor. - * @param event: event bits from libevent: - * EV_READ, EV_WRITE, EV_SIGNAL, EV_TIMEOUT. - * @param arg: the comm_point structure. - */ -void comm_point_tcp_handle_callback(int fd, short event, void* arg); - -/** - * This routine is published for checks and tests, and is only used internally. - * handle libevent callback for timer comm. - * @param fd: file descriptor (always -1). - * @param event: event bits from libevent: - * EV_READ, EV_WRITE, EV_SIGNAL, EV_TIMEOUT. - * @param arg: the comm_timer structure. - */ -void comm_timer_callback(int fd, short event, void* arg); - -/** - * This routine is published for checks and tests, and is only used internally. - * handle libevent callback for signal comm. - * @param fd: file descriptor (used for the signal number). - * @param event: event bits from libevent: - * EV_READ, EV_WRITE, EV_SIGNAL, EV_TIMEOUT. - * @param arg: the internal commsignal structure. - */ -void comm_signal_callback(int fd, short event, void* arg); - -/** - * This routine is published for checks and tests, and is only used internally. - * libevent callback for AF_UNIX fds - * @param fd: file descriptor. - * @param event: event bits from libevent: - * EV_READ, EV_WRITE, EV_SIGNAL, EV_TIMEOUT. - * @param arg: the comm_point structure. - */ -void comm_point_local_handle_callback(int fd, short event, void* arg); - -/** - * This routine is published for checks and tests, and is only used internally. - * libevent callback for raw fd access. - * @param fd: file descriptor. - * @param event: event bits from libevent: - * EV_READ, EV_WRITE, EV_SIGNAL, EV_TIMEOUT. - * @param arg: the comm_point structure. - */ -void comm_point_raw_handle_callback(int fd, short event, void* arg); - -/** - * This routine is published for checks and tests, and is only used internally. - * libevent callback for timeout on slow accept. - * @param fd: file descriptor. - * @param event: event bits from libevent: - * EV_READ, EV_WRITE, EV_SIGNAL, EV_TIMEOUT. - * @param arg: the comm_point structure. - */ -void comm_base_handle_slow_accept(int fd, short event, void* arg); - -#ifdef USE_WINSOCK -/** - * Callback for openssl BIO to on windows detect WSAEWOULDBLOCK and notify - * the winsock_event of this for proper TCP nonblocking implementation. - * @param c: comm_point, fd must be set its struct event is registered. - * @param ssl: openssl SSL, fd must be set so it has a bio. - */ -void comm_point_tcp_win_bio_cb(struct comm_point* c, void* ssl); -#endif - -/** see if errno for tcp connect has to be logged or not. This uses errno */ -int tcp_connect_errno_needs_log(struct sockaddr* addr, socklen_t addrlen); - -#endif /* NET_EVENT_H */ |