head 1.26; access; symbols L2_0_9_13:1.26 FSL_1_7_0:1.26 L2_0_9_12:1.26 LMTP2NNTP_1_4_1:1.26 LMTP2NNTP_1_4_0:1.26 FSL_1_6_1:1.26 L2_0_9_11:1.26 FSL_1_6_0:1.24 FSL_1_6b2:1.24 L2_0_9_10:1.24 FSL_1_6b1:1.24 L2_0_9_9:1.24 LMTP2NNTP_1_3_0:1.22 LMTP2NNTP_1_3b2:1.22 LMTP2NNTP_1_3b1:1.22 LMTP2NNTP_1_3a3:1.22 FSL_1_5_0:1.22 LMTP2NNTP_1_3a2:1.22 FSL_1_5a3:1.22 LMTP2NNTP_1_3a1:1.22 FSL_1_5a2:1.22 L2_0_9_8:1.22 FSL_1_5a1:1.21 L2_0_9_7:1.21 L2_0_9_6:1.21 FSL_1_4_0:1.19 FSL_1_4b1:1.19 L2_0_9_5:1.19 FSL_1_4a1:1.18 FSL_1_3_0:1.18 FSL_1_3b1:1.18 L2_0_9_4:1.18 FSL_1_2_1:1.18 L2_0_9_3:1.18 FSL_1_2_0:1.18 L2_0_9_2:1.18 FSL_1_1_0:1.18 FSL_1_1b1:1.18 WORKOFF:1.18.0.2 WORKOFF_BP:1.18 FSL_1_0_8:1.18 LMTP2NNTP_1_2_0:1.18 LMTP2NNTP_1_2b4:1.18 LMTP2NNTP_1_2b3:1.18 LMTP2NNTP_1_2b2:1.18 LMTP2NNTP_1_2b1:1.17 LMTP2NNTP_1_2a8:1.17 LMTP2NNTP_1_2a7:1.17 FSL_1_0_7:1.17 FSL_1_0_6:1.16 FSL_1_0_5:1.15 FSL_1_0_4:1.14 L2_0_9_1:1.14 FSL_1_0_3:1.13 LMTP2NNTP_1_2a6:1.13 FSL_1_0_2:1.13 FSL_1_0_1:1.13 FSL_1_0_0:1.13 FSL_0_9_0:1.13 L2_0_9_0:1.13 FSL_0_1_12:1.13 FSL_0_1_11:1.13 FSL_0_1_10:1.13 FSL_0_1_9:1.13 FSL_0_1_8:1.13 FSL_0_1_7:1.13 FSL_0_1_6:1.13 FSL_0_1_5:1.13 FSL_0_1_1:1.13 LMTP2NNTP_1_2a5:1.13 LMTP2NNTP_1_2a4:1.13 LMTP2NNTP_1_2a3:1.13 LMTP2NNTP_1_2a1:1.13 LMTP2NNTP_1_1_1:1.11 LMTP2NNTP_1_1_0:1.11 LMTP2NNTP_1_1b4:1.11 LMTP2NNTP_1_1b3:1.11 L2_CHANNEL_ONLY_REVAMPING_BEFORE:1.12 LMTP2NNTP_1_1b2:1.11 LMTP2NNTP_1_1b1:1.11 L2_0_1_0:1.3; locks; strict; comment @ * @; 1.26 date 2005.10.03.08.20.18; author rse; state Exp; branches; next 1.25; 1.25 date 2005.10.03.08.00.16; author rse; state Exp; branches; next 1.24; 1.24 date 2005.02.02.12.26.44; author thl; state Exp; branches; next 1.23; 1.23 date 2005.01.24.15.03.18; author rse; state Exp; branches; next 1.22; 1.22 date 2004.04.22.15.46.34; author thl; state Exp; branches; next 1.21; 1.21 date 2004.04.21.12.02.12; author thl; state Exp; branches; next 1.20; 1.20 date 2004.03.26.17.14.48; author thl; state Exp; branches; next 1.19; 1.19 date 2003.11.10.15.14.11; author thl; state Exp; branches; next 1.18; 1.18 date 2003.02.10.10.13.23; author thl; state Exp; branches; next 1.17; 1.17 date 2003.01.23.16.25.06; author thl; state Exp; branches; next 1.16; 1.16 date 2002.11.09.14.44.31; author rse; state Exp; branches; next 1.15; 1.15 date 2002.10.21.15.14.04; author rse; state Exp; branches; next 1.14; 1.14 date 2002.10.11.16.00.48; author rse; state Exp; branches; next 1.13; 1.13 date 2001.11.30.09.51.09; author rse; state Exp; branches; next 1.12; 1.12 date 2001.10.31.21.26.11; author rse; state Exp; branches; next 1.11; 1.11 date 2001.10.11.08.00.37; author thl; state Exp; branches; next 1.10; 1.10 date 2001.10.10.15.58.27; author rse; state Exp; branches; next 1.9; 1.9 date 2001.10.06.14.33.09; author rse; state Exp; branches; next 1.8; 1.8 date 2001.10.02.14.11.51; author thl; state Exp; branches; next 1.7; 1.7 date 2001.09.14.19.06.40; author rse; state Exp; branches; next 1.6; 1.6 date 2001.09.13.20.27.56; author rse; state Exp; branches; next 1.5; 1.5 date 2001.09.13.20.13.08; author rse; state Exp; branches; next 1.4; 1.4 date 2001.09.13.20.07.17; author rse; state Exp; branches; next 1.3; 1.3 date 2001.09.09.15.54.31; author rse; state Exp; branches; next 1.2; 1.2 date 2001.09.06.17.17.41; author rse; state Exp; branches; next 1.1; 1.1 date 2001.09.06.16.28.38; author rse; state Exp; branches; next ; desc @@ 1.26 log @import OSSP sa 1.2.6 @ text @/* ** OSSP sa - Socket Abstraction ** Copyright (c) 2001-2005 Ralf S. Engelschall ** Copyright (c) 2001-2005 The OSSP Project ** Copyright (c) 2001-2005 Cable & Wireless ** ** This file is part of OSSP sa, a socket abstraction library which ** can be found at http://www.ossp.org/pkg/lib/sa/. ** ** Permission to use, copy, modify, and distribute this software for ** any purpose with or without fee is hereby granted, provided that ** the above copyright notice and this permission notice appear in all ** copies. ** ** THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 AUTHORS AND COPYRIGHT HOLDERS AND THEIR ** 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. ** ** sa.h: socket abstraction API */ #ifndef __SA_H__ #define __SA_H__ /* system definitions of "size_t", "socklen_t", "struct sockaddr *" */ #include #include #include /* include optional Autoconf header */ #define SA_PREFIX l2_util_ #define HAVE_CONFIG_H 1 #include "l2_config.h" /* fallback for POSIX socklen_t */ #if defined(HAVE_CONFIG_H) && !defined(HAVE_SOCKLEN_T) typedef int socklen_t; #endif /* embedding support */ #ifdef SA_PREFIX #if defined(__STDC__) || defined(__cplusplus) #define __SA_CONCAT(x,y) x ## y #define SA_CONCAT(x,y) __SA_CONCAT(x,y) #else #define __SA_CONCAT(x) x #define SA_CONCAT(x,y) __SA_CONCAT(x)y #endif #define sa_addr_st SA_CONCAT(SA_PREFIX,sa_addr_st) #define sa_addr_t SA_CONCAT(SA_PREFIX,sa_addr_t) #define sa_rc_t SA_CONCAT(SA_PREFIX,sa_rc_t) #define sa_st SA_CONCAT(SA_PREFIX,sa_st) #define sa_t SA_CONCAT(SA_PREFIX,sa_t) #define sa_addr_create SA_CONCAT(SA_PREFIX,sa_addr_create) #define sa_addr_destroy SA_CONCAT(SA_PREFIX,sa_addr_destroy) #define sa_addr_u2a SA_CONCAT(SA_PREFIX,sa_addr_u2a) #define sa_addr_s2a SA_CONCAT(SA_PREFIX,sa_addr_s2a) #define sa_addr_a2u SA_CONCAT(SA_PREFIX,sa_addr_a2u) #define sa_addr_a2s SA_CONCAT(SA_PREFIX,sa_addr_a2s) #define sa_addr_match SA_CONCAT(SA_PREFIX,sa_addr_match) #define sa_create SA_CONCAT(SA_PREFIX,sa_create) #define sa_destroy SA_CONCAT(SA_PREFIX,sa_destroy) #define sa_type SA_CONCAT(SA_PREFIX,sa_type) #define sa_timeout SA_CONCAT(SA_PREFIX,sa_timeout) #define sa_buffer SA_CONCAT(SA_PREFIX,sa_buffer) #define sa_option SA_CONCAT(SA_PREFIX,sa_option) #define sa_syscall SA_CONCAT(SA_PREFIX,sa_syscall) #define sa_bind SA_CONCAT(SA_PREFIX,sa_bind) #define sa_connect SA_CONCAT(SA_PREFIX,sa_connect) #define sa_listen SA_CONCAT(SA_PREFIX,sa_listen) #define sa_accept SA_CONCAT(SA_PREFIX,sa_accept) #define sa_getremote SA_CONCAT(SA_PREFIX,sa_getremote) #define sa_getlocal SA_CONCAT(SA_PREFIX,sa_getlocal) #define sa_getfd SA_CONCAT(SA_PREFIX,sa_getfd) #define sa_shutdown SA_CONCAT(SA_PREFIX,sa_shutdown) #define sa_read SA_CONCAT(SA_PREFIX,sa_read) #define sa_readln SA_CONCAT(SA_PREFIX,sa_readln) #define sa_write SA_CONCAT(SA_PREFIX,sa_write) #define sa_writef SA_CONCAT(SA_PREFIX,sa_writef) #define sa_flush SA_CONCAT(SA_PREFIX,sa_flush) #define sa_recv SA_CONCAT(SA_PREFIX,sa_recv) #define sa_send SA_CONCAT(SA_PREFIX,sa_send) #define sa_sendf SA_CONCAT(SA_PREFIX,sa_sendf) #define sa_id SA_CONCAT(SA_PREFIX,sa_id) #define sa_error SA_CONCAT(SA_PREFIX,sa_error) #endif /* socket address abstraction object type */ struct sa_addr_st; typedef struct sa_addr_st sa_addr_t; /* socket abstraction object type */ struct sa_st; typedef struct sa_st sa_t; /* socket connection types */ typedef enum { SA_TYPE_STREAM, SA_TYPE_DATAGRAM } sa_type_t; /* return codes */ typedef enum { SA_OK, /* Everything Ok */ SA_ERR_ARG, /* Invalid Argument */ SA_ERR_USE, /* Invalid Use Or Context */ SA_ERR_MEM, /* Not Enough Memory */ SA_ERR_MTC, /* Matching Failed */ SA_ERR_EOF, /* End Of Communication */ SA_ERR_TMT, /* Communication Timeout */ SA_ERR_SYS, /* Operating System Error */ SA_ERR_NET, /* Networking Error */ SA_ERR_FMT, /* Formatting Error */ SA_ERR_IMP, /* Implementation Not Available */ SA_ERR_INT /* Internal Error */ } sa_rc_t; /* list of timeouts */ typedef enum { SA_TIMEOUT_ALL = -1, SA_TIMEOUT_ACCEPT = 0, SA_TIMEOUT_CONNECT = 1, SA_TIMEOUT_READ = 2, SA_TIMEOUT_WRITE = 3 } sa_timeout_t; /* list of buffers */ typedef enum { SA_BUFFER_READ, SA_BUFFER_WRITE } sa_buffer_t; /* list of options */ typedef enum { SA_OPTION_NAGLE = 0, SA_OPTION_LINGER = 1, SA_OPTION_REUSEADDR = 2, SA_OPTION_REUSEPORT = 3, SA_OPTION_NONBLOCK = 4 } sa_option_t; /* list of system calls */ typedef enum { SA_SYSCALL_CONNECT, SA_SYSCALL_ACCEPT, SA_SYSCALL_SELECT, SA_SYSCALL_READ, SA_SYSCALL_WRITE, SA_SYSCALL_RECVFROM, SA_SYSCALL_SENDTO } sa_syscall_t; /* unique library identifier */ extern const char sa_id[]; /* address object operations */ extern sa_rc_t sa_addr_create (sa_addr_t **__saa); extern sa_rc_t sa_addr_destroy (sa_addr_t *__saa); /* address operations */ extern sa_rc_t sa_addr_u2a (sa_addr_t *__saa, const char *__uri, ...); extern sa_rc_t sa_addr_s2a (sa_addr_t *__saa, const struct sockaddr *__sabuf, socklen_t __salen); extern sa_rc_t sa_addr_a2u (const sa_addr_t *__saa, char **__uri); extern sa_rc_t sa_addr_a2s (const sa_addr_t *__saa, struct sockaddr **__sabuf, socklen_t *__salen); extern sa_rc_t sa_addr_match (const sa_addr_t *__saa1, const sa_addr_t *__saa2, int __prefixlen); /* socket object operations */ extern sa_rc_t sa_create (sa_t **__sa); extern sa_rc_t sa_destroy (sa_t *__sa); /* socket parameter operations */ extern sa_rc_t sa_type (sa_t *__sa, sa_type_t __id); extern sa_rc_t sa_timeout (sa_t *__sa, sa_timeout_t __id, long __sec, long __usec); extern sa_rc_t sa_buffer (sa_t *__sa, sa_buffer_t __id, size_t __size); extern sa_rc_t sa_option (sa_t *__sa, sa_option_t __id, ...); extern sa_rc_t sa_syscall (sa_t *__sa, sa_syscall_t __id, void (*__fptr)(void), void *__fctx); /* socket connection operations */ extern sa_rc_t sa_bind (sa_t *__sa, const sa_addr_t *__laddr); extern sa_rc_t sa_connect (sa_t *__sa, const sa_addr_t *__raddr); extern sa_rc_t sa_listen (sa_t *__sa, int __backlog); extern sa_rc_t sa_accept (sa_t *__sa, sa_addr_t **__caddr, sa_t **__csa); extern sa_rc_t sa_getremote (sa_t *__sa, sa_addr_t **__raddr); extern sa_rc_t sa_getlocal (sa_t *__sa, sa_addr_t **__laddr); extern sa_rc_t sa_getfd (sa_t *__sa, int *__fd); extern sa_rc_t sa_shutdown (sa_t *__sa, const char *__flags); /* socket input/output operations (stream communication) */ extern sa_rc_t sa_read (sa_t *__sa, char *__buf, size_t __buflen, size_t *__bufdone); extern sa_rc_t sa_readln (sa_t *__sa, char *__buf, size_t __buflen, size_t *__bufdone); extern sa_rc_t sa_write (sa_t *__sa, const char *__buf, size_t __buflen, size_t *__bufdone); extern sa_rc_t sa_writef (sa_t *__sa, const char *__fmt, ...); extern sa_rc_t sa_flush (sa_t *__sa); /* socket input/output operations (datagram communication) */ extern sa_rc_t sa_recv (sa_t *__sa, sa_addr_t **__raddr, char *__buf, size_t __buflen, size_t *__bufdone); extern sa_rc_t sa_send (sa_t *__sa, sa_addr_t *__raddr, const char *__buf, size_t __buflen, size_t *__bufdone); extern sa_rc_t sa_sendf (sa_t *__sa, sa_addr_t *__raddr, const char *__fmt, ...); /* error handling operations */ extern char *sa_error (sa_rc_t __rv); #endif /* __SA_H__ */ @ 1.25 log @Imported OSSP sa 1.2.5 @ text @d160 1 a160 2 SA_SYSCALL_SENDTO, SA_SYSCALL_GETHOSTBYNAME @ 1.24 log @import OSSP sa 1.2.4 @ text @d172 5 a176 5 extern sa_rc_t sa_addr_u2a (sa_addr_t *__saa, const char *__uri, ...); extern sa_rc_t sa_addr_s2a (sa_addr_t *__saa, const struct sockaddr *__sabuf, socklen_t __salen); extern sa_rc_t sa_addr_a2u (sa_addr_t *__saa, char **__uri); extern sa_rc_t sa_addr_a2s (sa_addr_t *__saa, struct sockaddr **__sabuf, socklen_t *__salen); extern sa_rc_t sa_addr_match (sa_addr_t *__saa1, sa_addr_t *__saa2, int __prefixlen); d190 2 a191 2 extern sa_rc_t sa_bind (sa_t *__sa, sa_addr_t *__laddr); extern sa_rc_t sa_connect (sa_t *__sa, sa_addr_t *__raddr); d197 1 a197 1 extern sa_rc_t sa_shutdown (sa_t *__sa, char *__flags); @ 1.23 log @Adjust copyright messages for new year 2005. @ text @d160 2 a161 1 SA_SYSCALL_SENDTO a213 5 /* cleanup */ #if defined(HAVE_CONFIG_H) && !defined(HAVE_SOCKLEN_T) #undef socklen_t #endif @ 1.22 log @change devtool.conf %import of OSSP sa to inject a faked HAVE_CONFIG_H @ text @d3 3 a5 3 ** Copyright (c) 2001-2004 Ralf S. Engelschall ** Copyright (c) 2001-2004 The OSSP Project ** Copyright (c) 2001-2004 Cable & Wireless @ 1.21 log @import latest OSSP sa with changes around restarting interrupted system calls @ text @d41 1 @ 1.20 log @import most recent lib_sa @ text @d3 3 a5 3 ** Copyright (c) 2001-2003 Ralf S. Engelschall ** Copyright (c) 2001-2003 The OSSP Project ** Copyright (c) 2001-2003 Cable & Wireless Deutschland @ 1.19 log @fix build on Darwin by using correct prototype @ text @a33 2 #define SA_PREFIX l2_util_ d40 1 d43 1 d45 1 a45 1 #if !defined(HAVE_SOCKLEN_T) d121 2 @ 1.18 log @extend copyright messages based on CVS information @ text @d183 1 a183 1 extern sa_rc_t sa_syscall (sa_t *__sa, sa_syscall_t __id, void (*__fptr)(), void *__fctx); @ 1.17 log @fix embedding support @ text @d3 3 a5 3 ** Copyright (c) 2001-2002 Ralf S. Engelschall ** Copyright (c) 2001-2002 The OSSP Project ** Copyright (c) 2001-2002 Cable & Wireless Deutschland @ 1.16 log @Upgrade to OSSP sa 1.0.1 @ text @d92 2 @ 1.15 log @we are sure that config.h exists @ text @d140 5 a144 5 SA_OPTION_NAGLE, SA_OPTION_LINGER, SA_OPTION_REUSEADDR, SA_OPTION_REUSEPORT, SA_OPTION_NONBLOCK d162 2 a163 2 sa_rc_t sa_addr_create (sa_addr_t **saa); sa_rc_t sa_addr_destroy (sa_addr_t *saa); d166 5 a170 5 sa_rc_t sa_addr_u2a (sa_addr_t *saa, const char *uri, ...); sa_rc_t sa_addr_s2a (sa_addr_t *saa, const struct sockaddr *sabuf, socklen_t salen); sa_rc_t sa_addr_a2u (sa_addr_t *saa, char **uri); sa_rc_t sa_addr_a2s (sa_addr_t *saa, struct sockaddr **sabuf, socklen_t *salen); sa_rc_t sa_addr_match (sa_addr_t *saa1, sa_addr_t *saa2, int prefixlen); d173 2 a174 2 sa_rc_t sa_create (sa_t **sa); sa_rc_t sa_destroy (sa_t *sa); d177 5 a181 5 sa_rc_t sa_type (sa_t *sa, sa_type_t type); sa_rc_t sa_timeout (sa_t *sa, sa_timeout_t id, long sec, long usec); sa_rc_t sa_buffer (sa_t *sa, sa_buffer_t id, size_t size); sa_rc_t sa_option (sa_t *sa, sa_option_t id, ...); sa_rc_t sa_syscall (sa_t *sa, sa_syscall_t id, void (*fptr)(), void *fctx); d184 8 a191 8 sa_rc_t sa_bind (sa_t *sa, sa_addr_t *laddr); sa_rc_t sa_connect (sa_t *sa, sa_addr_t *raddr); sa_rc_t sa_listen (sa_t *sa, int backlog); sa_rc_t sa_accept (sa_t *sa, sa_addr_t **caddr, sa_t **csa); sa_rc_t sa_getremote (sa_t *sa, sa_addr_t **raddr); sa_rc_t sa_getlocal (sa_t *sa, sa_addr_t **laddr); sa_rc_t sa_getfd (sa_t *sa, int *fd); sa_rc_t sa_shutdown (sa_t *sa, char *flags); d194 5 a198 5 sa_rc_t sa_read (sa_t *sa, char *buf, size_t buflen, size_t *bufdone); sa_rc_t sa_readln (sa_t *sa, char *buf, size_t buflen, size_t *bufdone); sa_rc_t sa_write (sa_t *sa, const char *buf, size_t buflen, size_t *bufdone); sa_rc_t sa_writef (sa_t *sa, const char *fmt, ...); sa_rc_t sa_flush (sa_t *sa); d201 3 a203 2 sa_rc_t sa_recv (sa_t *sa, char *buf, size_t buflen, size_t *bufdone, sa_addr_t **raddr); sa_rc_t sa_send (sa_t *sa, const char *buf, size_t buflen, size_t *bufdone, sa_addr_t *raddr); d206 1 a206 1 char *sa_error (sa_rc_t rv); @ 1.14 log @upgrade to OSSP sa 0.9.2 and release OSSP l2 0.9.1 with it @ text @d45 1 a45 1 #if defined(HAVE_CONFIG_H) && !defined(HAVE_SOCKLEN_T) @ 1.13 log @add missing API function call namespace protector @ text @d2 4 a5 4 ** SA - OSSP Socket Abstraction Library ** Copyright (c) 2001 Ralf S. Engelschall ** Copyright (c) 2001 The OSSP Project ** Copyright (c) 2001 Cable & Wireless Deutschland d7 2 a8 2 ** This file is part of OSSP SA, a socket abstraction library which ** can be found at http://www.ossp.org/pkg/sa/. d46 1 a46 1 #define socklen_t int d141 3 d157 3 @ 1.12 log @update to latest OSSP SA @ text @d75 1 @ 1.11 log @updated embedding support for new and renamed functions @ text @d110 10 a119 9 SA_OK, /* Everything Ok */ SA_ERR_ARG, /* Invalid Argument */ SA_ERR_USE, /* Invalid Use Or Context */ SA_ERR_MEM, /* Not Enough Memory */ SA_ERR_MTC, /* Matching Failed */ SA_ERR_EOF, /* End Of Communication */ SA_ERR_TMT, /* Communication Timeout */ SA_ERR_SYS, /* Operating System Error */ SA_ERR_INT /* Internal Error */ d137 6 d173 1 @ 1.10 log @Upgrade to the latest and greatest OSSP SA. @ text @d69 1 d74 2 a75 1 #define sa_buffers SA_CONCAT(SA_PREFIX,sa_buffers) d91 1 @ 1.9 log @Upgrade to latest OSSP SA snapshot. This time by using SA_PREFIX to hide SA inside the l2_util_ namespace prefix. @ text @d3 3 a5 2 ** Copyright (c) 2001 The OSSP Project (http://www.ossp.org/) ** Copyright (c) 2001 Cable & Wireless Deutschland (http://www.cw.com/de/) d41 8 d107 9 a115 7 SA_OK, /* everything ok */ SA_ERR_ARG, /* invalid argument (wrong parameter) */ SA_ERR_USE, /* invalid use (wrong context) */ SA_ERR_MEM, /* out of memory */ SA_ERR_SYS, /* system error (see errno) */ SA_ERR_EOF, /* end of file/socket communication */ SA_ERR_INT /* internal error */ d118 26 d153 1 d161 3 a163 2 sa_rc_t sa_timeout (sa_t *sa, long sec, long usec); sa_rc_t sa_buffers (sa_t *sa, size_t rsize, size_t wsize); d185 8 @ 1.8 log @- upgrade to latest SA - use SA_PREFIX feature for library embedding without conflicts @ text @d33 3 a35 1 /* system definitions of "size_t", "socklen_t", "struct sockaddr" */ d49 31 a79 28 #define sa_addr_st SA_CONCAT(SA_PREFIX,sa_addr_st) #define sa_addr_t SA_CONCAT(SA_PREFIX,sa_addr_t) #define sa_rc_t SA_CONCAT(SA_PREFIX,sa_rc_t) #define sa_st SA_CONCAT(SA_PREFIX,sa_st) #define sa_t SA_CONCAT(SA_PREFIX,sa_t) #define sa_u2a SA_CONCAT(SA_PREFIX,sa_u2a) #define sa_s2a SA_CONCAT(SA_PREFIX,sa_s2a) #define sa_a2u SA_CONCAT(SA_PREFIX,sa_a2u) #define sa_a2s SA_CONCAT(SA_PREFIX,sa_a2s) #define sa_create SA_CONCAT(SA_PREFIX,sa_create) #define sa_destroy SA_CONCAT(SA_PREFIX,sa_destroy) #define sa_timeout SA_CONCAT(SA_PREFIX,sa_timeout) #define sa_buffers SA_CONCAT(SA_PREFIX,sa_buffers) #define sa_bind SA_CONCAT(SA_PREFIX,sa_bind) #define sa_connect SA_CONCAT(SA_PREFIX,sa_connect) #define sa_listen SA_CONCAT(SA_PREFIX,sa_listen) #define sa_accept SA_CONCAT(SA_PREFIX,sa_accept) #define sa_getremote SA_CONCAT(SA_PREFIX,sa_getremote) #define sa_getlocal SA_CONCAT(SA_PREFIX,sa_getlocal) #define sa_getfd SA_CONCAT(SA_PREFIX,sa_getfd) #define sa_shutdown SA_CONCAT(SA_PREFIX,sa_shutdown) #define sa_read SA_CONCAT(SA_PREFIX,sa_read) #define sa_readfrom SA_CONCAT(SA_PREFIX,sa_readfrom) #define sa_readline SA_CONCAT(SA_PREFIX,sa_readline) #define sa_write SA_CONCAT(SA_PREFIX,sa_write) #define sa_writeto SA_CONCAT(SA_PREFIX,sa_writeto) #define sa_printf SA_CONCAT(SA_PREFIX,sa_printf) #define sa_flush SA_CONCAT(SA_PREFIX,sa_flush) d90 6 d98 7 a104 6 SA_OK, SA_ERR_ARG, SA_ERR_USE, SA_ERR_MEM, SA_ERR_SYS, SA_ERR_INT d107 4 d112 34 a145 31 sa_rc_t sa_u2a (sa_addr_t **saa, const char *uri, ...); sa_rc_t sa_s2a (sa_addr_t **saa, const struct sockaddr *sabuf, socklen_t salen); sa_rc_t sa_a2u (const sa_addr_t *saa, char **uri); sa_rc_t sa_a2s (const sa_addr_t *saa, struct sockaddr **sabuf, socklen_t *salen); /* object operations */ sa_rc_t sa_create (sa_t **sa); sa_rc_t sa_destroy (sa_t *sa); /* parameter operations */ sa_rc_t sa_timeout (sa_t *sa, long sec, long usec); sa_rc_t sa_buffers (sa_t *sa, size_t rsize, size_t wsize); /* connection operations */ sa_rc_t sa_bind (sa_t *sa, sa_addr_t *laddr); sa_rc_t sa_connect (sa_t *sa, sa_addr_t *raddr); sa_rc_t sa_listen (sa_t *sa, int backlog); sa_rc_t sa_accept (sa_t *sa, sa_addr_t **caddr, sa_t **csa); sa_rc_t sa_getremote(sa_t *sa, sa_addr_t **raddr); sa_rc_t sa_getlocal (sa_t *sa, sa_addr_t **laddr); sa_rc_t sa_getfd (sa_t *sa, int *fd); sa_rc_t sa_shutdown (sa_t *sa, char *flags); /* input/output operations */ sa_rc_t sa_read (sa_t *sa, char *buf, size_t buflen, size_t *bufdone); sa_rc_t sa_readfrom (sa_t *sa, char *buf, size_t buflen, size_t *bufdone, sa_addr_t **raddr); sa_rc_t sa_readline (sa_t *sa, char *buf, size_t buflen, size_t *bufdone); sa_rc_t sa_write (sa_t *sa, const char *buf, size_t buflen, size_t *bufdone); sa_rc_t sa_writeto (sa_t *sa, const char *buf, size_t buflen, size_t *bufdone, sa_addr_t *raddr); sa_rc_t sa_printf (sa_t *sa, const char *fmt, ...); sa_rc_t sa_flush (sa_t *sa); @ 1.7 log @Upgrade to the latest version of the Socket Abstraction (SA) library which is now maintained externally and will be comitted into its own module soon. This upgrade fixes the UDP protocol handling. @ text @d33 1 d38 38 a75 2 struct sa_st; typedef struct sa_st sa_t; d77 1 d81 5 d116 1 @ 1.6 log @implement sa_readfrom() and sa_writeto() functions @ text @d2 1 a2 1 ** L2 - OSSP Logging Library d6 2 a7 2 ** This file is part of OSSP L2, a flexible logging library which ** can be found at http://www.ossp.org/pkg/l2/. d27 1 a27 1 ** l2_ut_sa.h: socket abstraction library d30 2 a31 2 #ifndef __L2_UT_SA_H__ #define __L2_UT_SA_H__ d52 2 a53 1 sa_rc_t sa_u2a (sa_addr_t **asaa, const char *uri, ...); d58 1 d62 1 d66 1 a70 1 d73 1 d75 1 a82 1 sa_rc_t sa_shutdown (sa_t *sa, char *flags); d84 1 a84 1 #endif /* __L2_UT_SA_H__ */ @ 1.5 log @Implement sa_getremote() and sa_getlocal() @ text @d72 1 a72 1 sa_rc_t sa_readfrom (sa_t *sa, char *buf, size_t buflen, size_t *bufdone, sa_addr_t *addr); d75 1 a75 1 sa_rc_t sa_writeto (sa_t *sa, const char *buf, size_t buflen, size_t *bufdone, sa_addr_t *addr); @ 1.4 log @Implement sa_{bind,listen,accept}() to make the SA library also useful for server applications. @ text @d68 2 a69 2 sa_rc_t sa_getremote(sa_t *sa, sa_addr_t *raddr); sa_rc_t sa_getlocal (sa_t *sa, sa_addr_t *laddr); @ 1.3 log @Whohoooooo! The first cut for a Socket Abstraction (SA) library. Later it should be moved to its own source tree because it should be a highly reusable library, but until it proofed to be the way we want it, let's stay in L2. This beast allows us to greatly simplify socket handling, because it provides bi-directional socket address conversions (between URIs or "struct sockaddr *" to "sa_addr_t *"), read/write buffering support (readline!) and timeout support (for connect, read, write, etc.). @ text @d65 2 a66 2 sa_rc_t sa_listen (sa_t *sa); sa_rc_t sa_accept (sa_t *sa, sa_t **sa_new); @ 1.2 log @use the L2 prefix @ text @d27 1 a27 1 ** l2_ut_sa.h: utility library for socket address handling d33 1 a33 1 #include a34 1 #include a35 1 #include d37 2 a38 10 typedef struct { struct sockaddr *sa_buf; socklen_t sa_len; int sa_proto; } l2_util_sa_t; enum { L2_UTIL_SA_UNIX, L2_UTIL_SA_IP }; d40 39 a78 2 l2_util_sa_t *l2_util_sa_create(int, ...); void l2_util_sa_destroy(l2_util_sa_t *); @ 1.1 log @Add a copy of our SA library to L2 in order to simplify socket channel and socket monitor program. @ text @d46 2 a47 2 SA_UNIX, SA_IP @