1 #ifndef __TCPCRYPT_SOCKET_ADDRESS_H__
2 #define __TCPCRYPT_SOCKET_ADDRESS_H__
3 
4 #include "inc.h"
5 
6 union sockaddr_any {
7 	struct sockaddr sa;
8 	struct sockaddr_in in;
9 #ifndef __WIN32__
10 	struct sockaddr_un un;
11 #endif
12 };
13 
14 struct socket_address {
15 	socklen_t addr_len;
16 	union sockaddr_any addr;
17 };
18 
19 #define SOCKET_ADDRESS_NULL { 0, {} }
20 
21 #define SOCKET_ADDRESS_ANY { (socklen_t) sizeof(union sockaddr_any), {} }
22 
23 extern int socket_address_is_null(const struct socket_address *sa);
24 
25 extern void socket_address_clear(struct socket_address *sa);
26 
27 extern const char *socket_address_pathname(const struct socket_address *sa);
28 
29 extern int socket_address_pretty(char *name, size_t size,
30 				 const struct socket_address *sa);
31 
32 extern int resolve_socket_address_local(const char *descr,
33 					struct socket_address *sa,
34 					char *error, int error_len);
35 
36 #endif /* __TCPCRYPT_SOCKET_ADDRESS_H__ */
37