version 1.13, 2016/09/21 16:55:42 |
version 1.14, 2018/07/31 03:07:24 |
|
|
static int |
static int |
addr_pton(const char *p, struct xaddr *n) |
addr_pton(const char *p, struct xaddr *n) |
{ |
{ |
struct addrinfo hints, *ai; |
struct addrinfo hints, *ai = NULL; |
|
int ret = -1; |
|
|
memset(&hints, '\0', sizeof(hints)); |
memset(&hints, '\0', sizeof(hints)); |
hints.ai_flags = AI_NUMERICHOST; |
hints.ai_flags = AI_NUMERICHOST; |
|
|
if (p == NULL || getaddrinfo(p, NULL, &hints, &ai) != 0) |
if (p == NULL || getaddrinfo(p, NULL, &hints, &ai) != 0) |
return -1; |
goto out; |
|
|
if (ai == NULL || ai->ai_addr == NULL) |
if (ai == NULL || ai->ai_addr == NULL) |
return -1; |
goto out; |
|
if (n != NULL && addr_sa_to_xaddr(ai->ai_addr, ai->ai_addrlen, n) == -1) |
if (n != NULL && |
goto out; |
addr_sa_to_xaddr(ai->ai_addr, ai->ai_addrlen, n) == -1) { |
/* success */ |
|
ret = 0; |
|
out: |
|
if (ai != NULL) |
freeaddrinfo(ai); |
freeaddrinfo(ai); |
return -1; |
return ret; |
} |
|
|
|
freeaddrinfo(ai); |
|
return 0; |
|
} |
} |
|
|
/* |
/* |