1: /* $Id: upnputils.h,v 1.1.1.1 2023/09/27 11:25:11 misho Exp $ */
2: /* MiniUPnP project
3: * http://miniupnp.free.fr/ or https://miniupnp.tuxfamily.org/
4: * (c) 2011-2021 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: */
16: int
17: sockaddr_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: */
23: int
24: set_non_blocking(int fd);
25:
26: /**
27: * get the LAN which the peer belongs to
28: */
29: struct lan_addr_s *
30: get_lan_for_peer(const struct sockaddr * peer);
31:
32: /**
33: * get the time for upnp
34: * Similar to a monotonic gettimeofday(tv, NULL)
35: */
36: int upnp_gettimeofday(struct timeval * tv);
37:
38: /**
39: * define portability macros
40: */
41: #if defined(__sun)
42: static __inline size_t _sa_len(const struct sockaddr *addr)
43: {
44: if (addr->sa_family == AF_INET)
45: return (sizeof(struct sockaddr_in));
46: else if (addr->sa_family == AF_INET6)
47: return (sizeof(struct sockaddr_in6));
48: else
49: return (sizeof(struct sockaddr));
50: }
51: # define SA_LEN(sa) (_sa_len(sa))
52: #else
53: #if !defined(SA_LEN)
54: # define SA_LEN(sa) ((sa)->sa_len)
55: #endif
56: #endif
57:
58: #endif
59:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>