144 lines
4.4 KiB
C
144 lines
4.4 KiB
C
#ifndef __NETLIB_INCLUDE__
|
|
#define __NETLIB_INCLUDE__
|
|
|
|
/******************************************************************************
|
|
* includes
|
|
*****************************************************************************/
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <unistd.h>
|
|
#include <sys/socket.h>
|
|
#include <sys/types.h>
|
|
#include <errno.h>
|
|
#include <fcntl.h>
|
|
|
|
#include <netdb.h>
|
|
#include <net/if.h>
|
|
#include <netinet/in.h>
|
|
#include <netinet/tcp.h>
|
|
#include <arpa/inet.h>
|
|
|
|
#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
|