#ifndef __NETLIB_INCLUDE__ #define __NETLIB_INCLUDE__ /****************************************************************************** * includes *****************************************************************************/ #include #include #include #include #include #include #include #include #include #include #include #include #include "strlib.h" /****************************************************************************** * defines *****************************************************************************/ #define VAR_LOG_RUN_NAME "cnomicon" /****************************************************************************** * structs & typedefs *****************************************************************************/ typedef struct _uri_parts { char proto[8]; char user[16]; char pass[16]; char host[256]; char port[16]; char path[1204]; int rate; } uri_parts; /****************************************************************************** * function prototypes *****************************************************************************/ /* export C functions to C++ */ #ifdef __cplusplus extern "C" { #endif /* File */ int fd_add( int sock, fd_set *pfds, int nfds ); int fd_count( fd_set *pfds ); int selector( int *nfds, fd_set *rfds, fd_set *wfds, long usec ); /* Runtime */ void log_path( const char * ); FILE *log_open( const char * ); void log_write( const char * ); void log_printf( const char *, ... ); void log_error( const char * ); void log_on(void); void log_off(void); void pid_path( const char * ); int pid_create( const char * ); void pid_delete( void ); /* Serial I/O */ int serial_open( char *tty, int baud, int vmin, int vwait ); /* Signals */ int sigrt_alloc(void); void sigrt_free(int sig); /* TCP/IP Basics */ int ip_host2addr( const char *host, const char *service, struct sockaddr_storage *ss, socklen_t *len ); const char *ip_host2name( char *buf, int max, const struct sockaddr_storage *ss); int ip_name2host( const char *buf, struct sockaddr_storage *ss); int ip_service2port( const char *service, int port, const char *proto ); int ip_sockname( int sock, struct sockaddr_storage *ss ); /* MAC Address */ int mac_interface2macaddr( const char *, unsigned char * ); int mac_string2mac( const char *str, unsigned char *mac ); int mac_mac2string( const unsigned char *mac, char *str ); /* TCP Server */ int tcp_server( const char *host, const char *service ); int tcp_accept( int sock, struct sockaddr_storage *ss ); /* TCP Client */ int tcp_client( const char *host, const char *service ); int tcp_nagle( int sock, int flag ); /* TCP I/O */ int tcp_recv( int sock, void *buf, int len ); int tcp_send( int sock, const char *buf, int len ); int tcp_sendstr( int sock, const char *str ); /* UDP Server */ int udp_server( const char *host, const char *service ); int udp_client( const char *host, const char *service ); int udp_socket( const char *host, const char *service ); /* UDP Broadcast */ int udp_broadcast( const char *host, const char *service, struct sockaddr_storage *, socklen_t *); int udp_multicast( const char *host, const char *service, struct sockaddr_storage *, socklen_t *); int udp_listener( const char *host, const char *service ); /* UDP I/O */ int udp_recvfrom( int sock, void *buf, int n, struct sockaddr_storage *, socklen_t *len ); int udp_sendto( int sock, const char *buf, int n, const struct sockaddr_storage *, int len ); int udp_sendstr( int sock, const char *buf, const struct sockaddr_storage *, int len ); /* Unix Domain Socket (UDS) */ int uds_client( const char *file ); int uds_server( const char *file ); /* URI */ void uri_clear( uri_parts *parsed ); void uri_defaults( uri_parts *parsed ); int uri_parse( const char *uri, uri_parts *parsed ); /* misc */ int chomp(char *s); void base64(const unsigned char *in, char *out, int len); int unbase64(const char *in, unsigned char *out, int max); int msleep(unsigned long msec); #ifdef __cplusplus } #endif /****************************************************************************** * Macros * ***************************************************************************/ // connected udp socket #define udp_send(S,B,L) tcp_send(S,B,L) #define uds_recv(S,B,L) tcp_recv(S,B,L) #define uds_send(S,B,L) tcp_send(S,B,L) #endif