1 | #ifndef READ_SOCKET 2 | #define READ_SOCKET 3 | /*************************************** 4 | $Revision: 1.8 $ 5 | 6 | Socket module (sk) 7 | 8 | Status: NOT REVUED, NOT TESTED 9 | 10 | ******************/ /****************** 11 | Copyright (c) 1999 RIPE NCC 12 | 13 | All Rights Reserved 14 | 15 | Permission to use, copy, modify, and distribute this software and its 16 | documentation for any purpose and without fee is hereby granted, 17 | provided that the above copyright notice appear in all copies and that 18 | both that copyright notice and this permission notice appear in 19 | supporting documentation, and that the name of the author not be 20 | used in advertising or publicity pertaining to distribution of the 21 | software without specific, written prior permission. 22 | 23 | THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING 24 | ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS; IN NO EVENT SHALL 25 | AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY 26 | DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN 27 | AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 28 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 29 | ***************************************/ 30 | #include <sys/types.h> 31 | #include <sys/socket.h> 32 | #include <netinet/in.h> 33 | 34 | #include <stdlib.h> 35 | #include <errno.h> 36 | #include <netdb.h> 37 | 38 | #include <signal.h> 39 | #include <stdio.h> 40 | 41 | #include <iproutines.h> 42 | 43 | /* connection data -> helps keep track of all errors etc */ 44 | typedef struct { 45 | unsigned short sock; /* socket descriptor # */ 46 | unsigned short rd_timeout; /* preset timeout values */ 47 | unsigned short wr_timeout; 48 | unsigned short rtc; /* RTC flags (reason-to-close) */ 49 | unsigned char lasterr; /* timeout, interrupt, etc. */ 50 | ip_addr_t rIP; /* real IP */ 51 | ip_addr_t eIP; /* effective IP */ 52 | char *ip; /* text of the eIP */ 53 | } sk_conn_st; 54 | 55 | /* reasons to close: socket-wise .... */ 56 | #define SK_DISCONNECT 0x0001 57 | #define SK_INTERRUPT 0x0002 58 | #define SK_TIMEOUT 0x0004 59 | 60 | /* ... and user-wise: */ 61 | #define SK_NOTEXT 0x0100 62 | 63 | int SK_atoport(const char *service, const char *proto); 64 | void SK_close(int socket); 65 | int SK_getsock(int socket_type, u_short port, uint32_t bind_address); 66 | int SK_accept_connection(int listening_socket); 67 | int SK_gets(int sockfd, char *str, size_t count, unsigned timeout); 68 | int SK_puts(int sockfd, const char *str, unsigned timeout); 69 | int SK_putc(int sockfd, char ch, unsigned timeout); 70 | int SK_getc(int sockfd, unsigned timeout); 71 | char *SK_getpeername(int sockfd); 72 | int SK_getpeerip(int sockfd, ip_addr_t *ip); 73 | int SK_cd_puts(sk_conn_st *condat, const char *str); 74 | int SK_cd_gets(sk_conn_st *condat, char *str, size_t count); 75 | int SK_cd_close(sk_conn_st *condat); 76 | 77 | #endif /* READ_SOCKET */