1/* $Id: upnputils.h,v 1.6 2014/03/31 12:32:57 nanard Exp $ */ 2/* MiniUPnP project 3 * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ 4 * (c) 2011-2013 Thomas Bernard 5 * This software is subject to the conditions detailed 6 * in the LICENCE file provided within the distribution */ 7 8#ifndef UPNPUTILS_H_INCLUDED 9#define UPNPUTILS_H_INCLUDED 10 11/** 12 * convert a struct sockaddr to a human readable string. 13 * [ipv6]:port or ipv4:port 14 * return the number of characters used (as snprintf) 15 */ 16int 17sockaddr_to_string(const struct sockaddr * addr, char * str, size_t size); 18 19/** 20 * set the file description as non blocking 21 * return 0 in case of failure, 1 in case of success 22 */ 23int 24set_non_blocking(int fd); 25 26/** 27 * get the LAN which the peer belongs to 28 */ 29struct lan_addr_s * 30get_lan_for_peer(const struct sockaddr * peer); 31 32 33/** 34 * define portability macros 35 */ 36#if defined(__sun) 37static size_t _sa_len(const struct sockaddr *addr) 38{ 39 if (addr->sa_family == AF_INET) 40 return (sizeof(struct sockaddr_in)); 41 else if (addr->sa_family == AF_INET6) 42 return (sizeof(struct sockaddr_in6)); 43 else 44 return (sizeof(struct sockaddr)); 45} 46# define SA_LEN(sa) (_sa_len(sa)) 47#else 48#if !defined(SA_LEN) 49# define SA_LEN(sa) ((sa)->sa_len) 50#endif 51#endif 52 53#ifndef MAX 54# define MAX(a,b) (((a)>(b))?(a):(b)) 55#endif 56 57#endif 58 59