1
0
mirror of https://git.libssh.org/projects/libssh.git synced 2025-11-30 13:01:23 +03:00

misc: Added ssh_is_ipaddr() function.

This commit is contained in:
Andreas Schneider
2011-02-12 17:37:05 +01:00
parent 7acc2fa607
commit b313fa944a
2 changed files with 34 additions and 0 deletions

View File

@@ -31,6 +31,8 @@ int ssh_file_readaccess_ok(const char *file);
char *ssh_path_expand_tilde(const char *d);
char *ssh_path_expand_escape(ssh_session session, const char *s);
int ssh_analyze_banner(ssh_session session, int server, int *ssh1, int *ssh2);
int ssh_is_ipaddr_v4(const char *str);
int ssh_is_ipaddr(const char *str);
/* macro for byte ordering */
uint64_t ntohll(uint64_t);

View File

@@ -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: */