1
1

misc: Added ssh_is_ipaddr() function.

Этот коммит содержится в:
Andreas Schneider 2011-02-12 17:37:05 +01:00
родитель 7acc2fa607
Коммит b313fa944a
2 изменённых файлов: 34 добавлений и 0 удалений

Просмотреть файл

@ -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);

Просмотреть файл

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