--- libelwix/src/net.c 2016/08/02 11:25:58 1.14 +++ libelwix/src/net.c 2016/08/02 11:44:05 1.14.2.1 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: net.c,v 1.14 2016/08/02 11:25:58 misho Exp $ +* $Id: net.c,v 1.14.2.1 2016/08/02 11:44:05 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -256,7 +256,7 @@ e_n2addr(sockaddr_t * __restrict addr, ait_val_t * __r * @psHost = Hostname * @port = Port * @addr = Network address structure - * return: 0 error or >0 network structure length + * return: 0 is error or >0 length of network structure */ socklen_t e_gethostbyname(const char *psHost, u_short port, sockaddr_t * __restrict addr) @@ -313,6 +313,34 @@ e_gethostbyname(const char *psHost, u_short port, sock } return 0; +} + +/* + * e_addrlen() - Get address length from network structure + * + * @addr = address + * return: 0 is error or >0 length of network structure + */ +socklen_t +e_addrlen(const sockaddr_t *addr) +{ + if (!addr) + return 0; + + switch (addr->sa.sa_family) { + case AF_INET: + return sizeof addr->sin; + case AF_INET6: + return sizeof addr->sin6; + case AF_LOCAL: + return sizeof addr->sun; +#ifndef __linux__ + case AF_LINK: + return sizeof addr->sdl; +#endif + } + + return MIN(sizeof(sockaddr_t), 0xff); } /*