1 /* $Id: upnputils.h,v 1.6 2014/03/31 12:32:57 nanard Exp $ */
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 */
8 #ifndef UPNPUTILS_H_INCLUDED
9 #define UPNPUTILS_H_INCLUDED
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)
17 sockaddr_to_string(const struct sockaddr
* addr
, char * str
, size_t size
);
20 * set the file description as non blocking
21 * return 0 in case of failure, 1 in case of success
24 set_non_blocking(int fd
);
27 * get the LAN which the peer belongs to
30 get_lan_for_peer(const struct sockaddr
* peer
);
34 * define portability macros
37 static size_t _sa_len(const struct sockaddr
*addr
)
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
));
44 return (sizeof(struct sockaddr
));
46 # define SA_LEN(sa) (_sa_len(sa))
49 # define SA_LEN(sa) ((sa)->sa_len)
54 # define MAX(a,b) (((a)>(b))?(a):(b))