Files
Cnomicon/include/netlib.h
2021-01-22 10:16:20 -05:00

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