12static inline void *get_in_addr(
struct sockaddr *sa) {
13 if (sa->sa_family == AF_INET) {
14 return &(((
struct sockaddr_in *)sa)->sin_addr);
17 return &(((
struct sockaddr_in6 *)sa)->sin6_addr);
20static inline uint16_t get_in_port(
struct sockaddr *sa) {
21 if (sa->sa_family == AF_INET) {
22 return (((
struct sockaddr_in *)sa)->sin_port);
25 return (((
struct sockaddr_in6 *)sa)->sin6_port);
30 struct sockaddr_storage ss_;
31 socklen_t len_ =
sizeof(ss_);
33 return get_in_port(
reinterpret_cast<struct sockaddr *
>(&ss_));
36 char s[INET6_ADDRSTRLEN];
37 ::inet_ntop(ss_.ss_family,
38 get_in_addr(
reinterpret_cast<struct sockaddr *
>(&ss_)), s,
Definition: ip_address.h:28