diff options
Diffstat (limited to 'lib/if2ip.c')
-rw-r--r-- | lib/if2ip.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/lib/if2ip.c b/lib/if2ip.c index 4924f7301..0ae375b15 100644 --- a/lib/if2ip.c +++ b/lib/if2ip.c @@ -71,6 +71,24 @@ #if defined(HAVE_GETIFADDRS) +bool Curl_if_is_interface_name(const char *interface) +{ + bool result = FALSE; + + struct ifaddrs *iface, *head; + + if(getifaddrs(&head) >= 0) { + for(iface=head; iface != NULL; iface=iface->ifa_next) { + if(curl_strequal(iface->ifa_name, interface)) { + result = TRUE; + break; + } + } + freeifaddrs(head); + } + return result; +} + char *Curl_if2ip(int af, const char *interface, char *buf, int buf_size) { struct ifaddrs *iface, *head; @@ -109,6 +127,14 @@ char *Curl_if2ip(int af, const char *interface, char *buf, int buf_size) #elif defined(HAVE_IOCTL_SIOCGIFADDR) +bool Curl_if_is_interface_name(const char *interface) +{ + /* This is here just to support the old interfaces */ + char buf[256]; + + return (Curl_if2ip(AF_INET, interface, buf, sizeof(buf)) != NULL); +} + char *Curl_if2ip(int af, const char *interface, char *buf, int buf_size) { struct ifreq req; @@ -148,6 +174,11 @@ char *Curl_if2ip(int af, const char *interface, char *buf, int buf_size) #else +bool Curl_if_is_interface_name(const char *interface) +{ + return FALSE; +} + char *Curl_if2ip(int af, const char *interf, char *buf, int buf_size) { (void) af; |