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