Browse Source

TT#89352 add convenience function for sockaddr_storage

Change-Id: I5fc5c044b5bcd7ba1316b24a3c81bb805e85e022
pull/1093/head
Richard Fuchs 5 years ago
parent
commit
62733b83b4
2 changed files with 9 additions and 0 deletions
  1. +8
    -0
      lib/socket.c
  2. +1
    -0
      lib/socket.h

+ 8
- 0
lib/socket.c View File

@ -217,6 +217,14 @@ static int __ip6_sockaddr2endpoint(endpoint_t *ep, const void *p) {
ep->port = ntohs(sin->sin6_port); ep->port = ntohs(sin->sin6_port);
return 0; return 0;
} }
void endpoint_parse_sockaddr_storage(endpoint_t *ep, struct sockaddr_storage *sa) {
if (sa->ss_family == AF_INET)
__ip4_sockaddr2endpoint(ep, sa);
else if (sa->ss_family == AF_INET6)
__ip6_sockaddr2endpoint(ep, sa);
else
abort();
}
static int __ip4_endpoint2sockaddr(void *p, const endpoint_t *ep) { static int __ip4_endpoint2sockaddr(void *p, const endpoint_t *ep) {
return __ip4_addrport2sockaddr(p, &ep->address, ep->port); return __ip4_addrport2sockaddr(p, &ep->address, ep->port);
} }


+ 1
- 0
lib/socket.h View File

@ -211,6 +211,7 @@ int sockaddr_parse_str(sockaddr_t *dst, sockfamily_t *fam, const str *src);
int endpoint_parse_any(endpoint_t *, const char *); // address (ip) optional int endpoint_parse_any(endpoint_t *, const char *); // address (ip) optional
int sockaddr_getaddrinfo(sockaddr_t *a, const char *s); int sockaddr_getaddrinfo(sockaddr_t *a, const char *s);
int endpoint_parse_any_getaddrinfo(endpoint_t *d, const char *s); // address (ip or hostname) optional int endpoint_parse_any_getaddrinfo(endpoint_t *d, const char *s); // address (ip or hostname) optional
void endpoint_parse_sockaddr_storage(endpoint_t *, struct sockaddr_storage *);
void kernel2endpoint(endpoint_t *ep, const struct re_address *ra); void kernel2endpoint(endpoint_t *ep, const struct re_address *ra);
unsigned int sockaddr_hash(const sockaddr_t *); unsigned int sockaddr_hash(const sockaddr_t *);


Loading…
Cancel
Save