1
0
Fork 0
mirror of https://github.com/warmcat/libwebsockets.git synced 2025-03-16 00:00:07 +01:00

lws_interface_to_sa

Expose interface handling code as an api
This commit is contained in:
Andy Green 2016-01-16 12:09:38 +08:00
parent d5060d25a1
commit 1d719ec87f
4 changed files with 21 additions and 5 deletions

View file

@ -344,6 +344,20 @@ just_kill_connection:
lws_free_wsi(wsi);
}
#if LWS_POSIX
LWS_VISIBLE int
interface_to_sa(struct lws_context *context, const char *ifname, struct sockaddr_in *addr, size_t addrlen)
{
int ipv6 = 0;
#ifdef LWS_USE_IPV6
ipv6 = LWS_IPV6_ENABLED(context);
#endif
(void)context;
return lws_interface_to_sa(ipv6, ifname, addr, addrlen);
}
#endif
LWS_VISIBLE int
lws_get_addresses(struct lws_context *context, void *ads, char *name,
int name_len, char *rip, int rip_len)

View file

@ -1378,6 +1378,9 @@ lws_service(struct lws_context *context, int timeout_ms);
LWS_VISIBLE LWS_EXTERN void
lws_cancel_service(struct lws_context *context);
LWS_VISIBLE LWS_EXTERN int
lws_interface_to_sa(int ipv6, const char *ifname, struct sockaddr_in *addr, size_t addrlen);
LWS_VISIBLE LWS_EXTERN const unsigned char *
lws_token_to_string(enum lws_token_indexes token);

View file

@ -343,8 +343,7 @@ lws_plat_context_late_destroy(struct lws_context *context)
/* cast a struct sockaddr_in6 * into addr for ipv6 */
LWS_VISIBLE int
interface_to_sa(struct lws_context *context,
const char *ifname, struct sockaddr_in *addr, size_t addrlen)
lws_interface_to_sa(int ipv6, const char *ifname, struct sockaddr_in *addr, size_t addrlen)
{
int rc = -1;
@ -367,7 +366,7 @@ interface_to_sa(struct lws_context *context,
switch (ifc->ifa_addr->sa_family) {
case AF_INET:
#ifdef LWS_USE_IPV6
if (LWS_IPV6_ENABLED(context)) {
if (ipv6) {
/* map IPv4 to IPv6 */
bzero((char *)&addr6->sin6_addr,
sizeof(struct in6_addr));

View file

@ -308,8 +308,8 @@ lws_plat_context_late_destroy(struct lws_context *context)
WSACleanup();
}
LWS_VISIBLE int
interface_to_sa(struct lws_context *context,
LWS_VISIBLE LWS_EXTERN int
lws_interface_to_sa(int ipv6,
const char *ifname, struct sockaddr_in *addr, size_t addrlen)
{
long long address = inet_addr(ifname);