diff options
author | Andreas Schneider <asn@cryptomilk.org> | 2011-02-12 17:37:05 +0100 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2011-02-12 19:08:59 +0100 |
commit | b313fa944a5ab6e0eb935601cfdf60cf9008d06c (patch) | |
tree | b80a43784122c5ae876e65a8c39b6b48ac28c69f /src/misc.c | |
parent | 7acc2fa607d8242372f84266f90a25bd7000e587 (diff) | |
download | libssh-b313fa944a5ab6e0eb935601cfdf60cf9008d06c.tar.gz libssh-b313fa944a5ab6e0eb935601cfdf60cf9008d06c.tar.xz libssh-b313fa944a5ab6e0eb935601cfdf60cf9008d06c.zip |
misc: Added ssh_is_ipaddr() function.
Diffstat (limited to 'src/misc.c')
-rw-r--r-- | src/misc.c | 32 |
1 files changed, 32 insertions, 0 deletions
@@ -779,6 +779,38 @@ int ssh_analyze_banner(ssh_session session, int server, int *ssh1, int *ssh2) { return 0; } +/* TODO for Windows, inet_pton is only available on Vista and newer */ +int ssh_is_ipaddr_v4(const char *str) { +#ifndef _WIN32 + int rc = -1; + struct in_addr dest; + + rc = inet_pton(AF_INET, str, &dest); + if (rc > 0) { + return 1; + } +#endif + return 0; +} + +/* TODO for Windows, inet_pton is only available on Vista and newer */ +int ssh_is_ipaddr(const char *str) { +#ifndef _WIN32 + int rc = -1; + + if (strchr(str, ':')) { + struct in6_addr dest6; + + /* TODO link-local (IP:v6:addr%ifname). */ + rc = inet_pton(AF_INET6, str, &dest6); + if (rc > 0) { + return 1; + } + } +#endif + return ssh_is_ipaddr_v4(str); +} + /** @} */ /* vim: set ts=4 sw=4 et cindent: */ |