socket-util: add sockaddr_in_addr() helper
This extracts the IP address (as union in_addr_union) from a socket address (i.e. a struct sockaddr).
This commit is contained in:
parent
9c2c6692f3
commit
3132597182
|
@ -320,7 +320,7 @@ bool socket_address_matches_fd(const SocketAddress *a, int fd) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int sockaddr_port(const struct sockaddr *_sa, unsigned *ret_port) {
|
int sockaddr_port(const struct sockaddr *_sa, unsigned *ret_port) {
|
||||||
union sockaddr_union *sa = (union sockaddr_union*) _sa;
|
const union sockaddr_union *sa = (const union sockaddr_union*) _sa;
|
||||||
|
|
||||||
/* Note, this returns the port as 'unsigned' rather than 'uint16_t', as AF_VSOCK knows larger ports */
|
/* Note, this returns the port as 'unsigned' rather than 'uint16_t', as AF_VSOCK knows larger ports */
|
||||||
|
|
||||||
|
@ -345,6 +345,25 @@ int sockaddr_port(const struct sockaddr *_sa, unsigned *ret_port) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const union in_addr_union *sockaddr_in_addr(const struct sockaddr *_sa) {
|
||||||
|
const union sockaddr_union *sa = (const union sockaddr_union*) _sa;
|
||||||
|
|
||||||
|
if (!sa)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
switch (sa->sa.sa_family) {
|
||||||
|
|
||||||
|
case AF_INET:
|
||||||
|
return (const union in_addr_union*) &sa->in.sin_addr;
|
||||||
|
|
||||||
|
case AF_INET6:
|
||||||
|
return (const union in_addr_union*) &sa->in6.sin6_addr;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int sockaddr_pretty(
|
int sockaddr_pretty(
|
||||||
const struct sockaddr *_sa,
|
const struct sockaddr *_sa,
|
||||||
socklen_t salen,
|
socklen_t salen,
|
||||||
|
|
|
@ -102,6 +102,7 @@ const char* socket_address_get_path(const SocketAddress *a);
|
||||||
bool socket_ipv6_is_supported(void);
|
bool socket_ipv6_is_supported(void);
|
||||||
|
|
||||||
int sockaddr_port(const struct sockaddr *_sa, unsigned *port);
|
int sockaddr_port(const struct sockaddr *_sa, unsigned *port);
|
||||||
|
const union in_addr_union *sockaddr_in_addr(const struct sockaddr *sa);
|
||||||
|
|
||||||
int sockaddr_pretty(const struct sockaddr *_sa, socklen_t salen, bool translate_ipv6, bool include_port, char **ret);
|
int sockaddr_pretty(const struct sockaddr *_sa, socklen_t salen, bool translate_ipv6, bool include_port, char **ret);
|
||||||
int getpeername_pretty(int fd, bool include_port, char **ret);
|
int getpeername_pretty(int fd, bool include_port, char **ret);
|
||||||
|
|
Loading…
Reference in New Issue