interface_to_sa no longer server only
Via "DevYourWorld" on github
https://github.com/warmcat/libwebsockets/issues/64
Signed-off-by: Andy Green <andy.green@linaro.org>
diff --git a/lib/libwebsockets.c b/lib/libwebsockets.c
index 84a10c8..7436758 100644
--- a/lib/libwebsockets.c
+++ b/lib/libwebsockets.c
@@ -2650,3 +2650,34 @@
if (log_emit_function)
lwsl_emit = log_emit_function;
}
+
+int
+interface_to_sa(const char *ifname, struct sockaddr_in *addr, size_t addrlen)
+{
+ int rc = -1;
+#if defined(WIN32) || defined(_WIN32)
+ /* TODO */
+#else
+ struct ifaddrs *ifr;
+ struct ifaddrs *ifc;
+ struct sockaddr_in *sin;
+
+ getifaddrs(&ifr);
+ for (ifc = ifr; ifc != NULL && rc; ifc = ifc->ifa_next) {
+ if (ifc->ifa_addr == NULL)
+ continue;
+ lwsl_info(" interface %s vs %s\n", ifc->ifa_name, ifname);
+ if (strcmp(ifc->ifa_name, ifname))
+ continue;
+ sin = (struct sockaddr_in *)ifc->ifa_addr;
+ if (sin->sin_family != AF_INET)
+ continue;
+ memcpy(addr, sin, addrlen);
+ rc = 0;
+ }
+
+ freeifaddrs(ifr);
+#endif
+ return rc;
+}
+
diff --git a/lib/server.c b/lib/server.c
index 6269185..4547a34 100644
--- a/lib/server.c
+++ b/lib/server.c
@@ -51,36 +51,6 @@
}
#endif
-int
-interface_to_sa(const char *ifname, struct sockaddr_in *addr, size_t addrlen)
-{
- int rc = -1;
-#if defined(WIN32) || defined(_WIN32)
- /* TODO */
-#else
- struct ifaddrs *ifr;
- struct ifaddrs *ifc;
- struct sockaddr_in *sin;
-
- getifaddrs(&ifr);
- for (ifc = ifr; ifc != NULL && rc; ifc = ifc->ifa_next) {
- if (ifc->ifa_addr == NULL)
- continue;
- lwsl_info(" interface %s vs %s\n", ifc->ifa_name, ifname);
- if (strcmp(ifc->ifa_name, ifname))
- continue;
- sin = (struct sockaddr_in *)ifc->ifa_addr;
- if (sin->sin_family != AF_INET)
- continue;
- memcpy(addr, sin, addrlen);
- rc = 0;
- }
-
- freeifaddrs(ifr);
-#endif
- return rc;
-}
-
struct libwebsocket *
libwebsocket_create_new_server_wsi(struct libwebsocket_context *context)
{