diff --git a/ez-ipupdate.c b/ez-ipupdate.c index ff093a9..eea7624 100644 --- a/ez-ipupdate.c +++ b/ez-ipupdate.c @@ -849,6 +849,27 @@ int is_dotted_quad(char *addr) return(1); } +int is_ip_addr(char *addr) +{ +#if HAVE_ARPA_INET_H + char dst[16]; + + if(inet_pton(AF_INET,addr,dst) == 1) + { + return(1); + } + + if(inet_pton(AF_INET6,addr,dst) == 1) + { + return(1); + } + + return(0); +#else + return is_dotted_quad(addr); +#endif +} + void parse_service(char *str) { int i; @@ -1859,7 +1880,7 @@ int DYNDNS_check_info(void) chomp(host); } - if(address != NULL && !is_dotted_quad(address)) + if(address != NULL && !is_ip_addr(address)) { fprintf(stderr, "the IP address \"%s\" is invalid\n", address); return(-1);