--- libaitio/inc/aitio.h 2012/09/10 12:03:55 1.25.2.3 +++ libaitio/inc/aitio.h 2012/11/19 21:12:03 1.27 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: aitio.h,v 1.25.2.3 2012/09/10 12:03:55 misho Exp $ +* $Id: aitio.h,v 1.27 2012/11/19 21:12:03 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -401,7 +401,7 @@ typedef union { #define IO_SOCKADDR_INIT { .ss = { 0 } } -#define io_align(x, a) (((x) + (a)) & ~(a)) +#define io_align(x, a) (((x) + ((a) - 1)) & ~((a) - 1)) // io_GetErrno() Get error code of last operation @@ -466,7 +466,7 @@ inline struct io_ether_addr *io_ether_aton(const char * @addr = Address * return: 0 not supported family type or port number */ -inline u_short io_n2port(io_sockaddr_t * __restrict addr); +inline unsigned short io_n2port(io_sockaddr_t * __restrict addr); /* * io_n2addr() - Extract address from network structure * @@ -485,6 +485,15 @@ const char *io_n2addr(io_sockaddr_t * __restrict addr, */ io_sockaddr_t *io_gethostbyname(const char *psHost, unsigned short port, io_sockaddr_t * __restrict addr); +/* + * io_addrcmp() - Compare network addresses + * + * @a = 1st address + * @b = 2nd address + * @p = compare and ports, if family is AF_INET or AF_INET6 + * return: 0 is equal or !=0 is different + */ +int io_addrcmp(io_sockaddr_t * __restrict a, io_sockaddr_t * __restrict b, int p); /* * io_vars2buffer() - Marshaling data from array with variables to buffer @@ -560,7 +569,7 @@ ait_val_t *io_makeVar(ait_type_t type, ...); * @... = data * return: -1 error or 0 ok */ -inline int io_setlikeVar(ait_val_t * __restrict v, ait_type_t t, u_int l, ...); +inline int io_setlikeVar(ait_val_t * __restrict v, ait_type_t t, unsigned int l, ...); /* * io_sprintfVar() - Builtin string variable from formatted input * @@ -571,6 +580,14 @@ inline int io_setlikeVar(ait_val_t * __restrict v, ait */ int io_sprintfVar(ait_val_t * __restrict v, const char *fmt, ...); /* + * io_cmpVar() - Compare two variables + * + * @a = 1st variable + * @b = 2nd variable + * return: 0 is equal or !=0 is different + */ +inline int io_cmpVar(ait_val_t * __restrict a, ait_val_t * __restrict b); +/* * io_hashVar() - Generate hash key for variable from string or value * * @v = variable @@ -632,7 +649,7 @@ inline void io_sortVarsByVal(array_t * __restrict vars * @key = Search key * return: NULL error or not found, !=NULL valid element */ -ait_val_t *io_findKeyVars(array_t * __restrict vars, u_short key); +ait_val_t *io_findKeyVars(array_t * __restrict vars, unsigned short key); /* * io_findKeyHash() - Find variable by hash string from array *