195 |
|
break; |
196 |
|
|
197 |
|
case OPM_TYPE_ADDRESS: |
198 |
< |
{ |
199 |
< |
struct addrinfo hints, *res; |
200 |
< |
|
201 |
< |
memset(&hints, 0, sizeof(hints)); |
202 |
< |
hints.ai_family = AF_INET; |
203 |
< |
hints.ai_socktype = SOCK_STREAM; |
204 |
< |
hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST; |
205 |
< |
|
206 |
< |
if (getaddrinfo(value, NULL, &hints, &res)) |
198 |
> |
if (inet_pton(AF_INET, value, &(((opm_sockaddr *)config->vars[key])->sa4.sin_addr)) <= 0) |
199 |
|
return OPM_ERR_BADVALUE; /* return appropriate err code */ |
200 |
|
|
209 |
– |
memcpy(&(((opm_sockaddr *)config->vars[key])->sa4.sin_addr), &((struct sockaddr_in *)res->ai_addr)->sin_addr, sizeof(struct in_addr)); |
210 |
– |
freeaddrinfo(res); |
201 |
|
break; |
212 |
– |
} |
202 |
|
|
203 |
|
case OPM_TYPE_STRINGLIST: |
204 |
|
node = libopm_node_create(libopm_xstrdup(value)); |