From b7049e8c43a9f02a158773fb983d27e65e9a0a21 Mon Sep 17 00:00:00 2001 From: Cedric BAIL Date: Fri, 29 Sep 2017 14:12:03 -0700 Subject: [PATCH] ecore_con: add an intermediate Efl.Net.Server.Ip --- src/Makefile_Ecore_Con.am | 2 + src/examples/ecore/efl_net_server_example.c | 8 +- .../ecore/efl_net_server_simple_example.c | 8 +- .../ecore/efl_net_socket_ssl_server_example.c | 2 +- src/lib/ecore_con/Ecore_Con_Eo.h | 2 + src/lib/ecore_con/ecore_con_legacy.c | 4 +- src/lib/ecore_con/efl_net_server_ip.c | 82 +++++++++++++++++++ src/lib/ecore_con/efl_net_server_ip.eo | 38 +++++++++ src/lib/ecore_con/efl_net_server_ssl.c | 4 +- src/lib/ecore_con/efl_net_server_tcp.c | 70 +--------------- src/lib/ecore_con/efl_net_server_tcp.eo | 32 +------- src/lib/ecore_con/efl_net_server_udp.c | 63 +------------- src/lib/ecore_con/efl_net_server_udp.eo | 29 +------ src/lib/ecore_ipc/ecore_ipc.c | 2 +- 14 files changed, 142 insertions(+), 204 deletions(-) create mode 100644 src/lib/ecore_con/efl_net_server_ip.c create mode 100644 src/lib/ecore_con/efl_net_server_ip.eo diff --git a/src/Makefile_Ecore_Con.am b/src/Makefile_Ecore_Con.am index cfae980ed4..b1047c8e85 100644 --- a/src/Makefile_Ecore_Con.am +++ b/src/Makefile_Ecore_Con.am @@ -16,6 +16,7 @@ ecore_con_eolian_files = \ lib/ecore_con/efl_net_server.eo \ lib/ecore_con/efl_net_server_simple.eo \ lib/ecore_con/efl_net_server_fd.eo \ + lib/ecore_con/efl_net_server_ip.eo \ lib/ecore_con/efl_net_server_tcp.eo \ lib/ecore_con/efl_net_server_udp.eo \ lib/ecore_con/efl_net_server_udp_client.eo \ @@ -108,6 +109,7 @@ lib/ecore_con/efl_net_dialer_websocket.c \ lib/ecore_con/efl_net_server.c \ lib/ecore_con/efl_net_server_simple.c \ lib/ecore_con/efl_net_server_fd.c \ +lib/ecore_con/efl_net_server_ip.c \ lib/ecore_con/efl_net_server_tcp.c \ lib/ecore_con/efl_net_server_udp.c \ lib/ecore_con/efl_net_server_udp_client.c \ diff --git a/src/examples/ecore/efl_net_server_example.c b/src/examples/ecore/efl_net_server_example.c index 277d4c9e1e..1129f024f2 100644 --- a/src/examples/ecore/efl_net_server_example.c +++ b/src/examples/ecore/efl_net_server_example.c @@ -425,7 +425,7 @@ _server_serving(void *data EINA_UNUSED, const Efl_Event *event) fprintf(stderr, "TCP options:\n" " - IPv6 only: %u\n", - efl_net_server_tcp_ipv6_only_get(event->object)); + efl_net_server_ip_ipv6_only_get(event->object)); } else if (efl_class_get(event->object) == EFL_NET_SERVER_UDP_CLASS) { @@ -439,7 +439,7 @@ _server_serving(void *data EINA_UNUSED, const Efl_Event *event) " - multicast TTL: %u\n" " - multicast loopback: %u\n" " - multicast groups:\n", - efl_net_server_udp_ipv6_only_get(event->object), + efl_net_server_ip_ipv6_only_get(event->object), efl_net_server_udp_dont_route_get(event->object), efl_net_server_udp_multicast_time_to_live_get(event->object), efl_net_server_udp_multicast_loopback_get(event->object)); @@ -651,7 +651,7 @@ main(int argc, char **argv) if (cls == EFL_NET_SERVER_TCP_CLASS) { - efl_net_server_tcp_ipv6_only_set(server, ipv6_only); + efl_net_server_ip_ipv6_only_set(server, ipv6_only); efl_net_server_fd_reuse_address_set(server, EINA_TRUE); /* optional, but nice for testing */ efl_net_server_fd_reuse_port_set(server, EINA_TRUE); /* optional, but nice for testing... not secure unless you know what you're doing */ @@ -661,7 +661,7 @@ main(int argc, char **argv) { const Eina_List *lst; - efl_net_server_udp_ipv6_only_set(server, ipv6_only); + efl_net_server_ip_ipv6_only_set(server, ipv6_only); efl_net_server_udp_dont_route_set(server, udp_dont_route); efl_net_server_udp_multicast_time_to_live_set(server, udp_mcast_ttl); diff --git a/src/examples/ecore/efl_net_server_simple_example.c b/src/examples/ecore/efl_net_server_simple_example.c index 6cafe9ddcb..d3b0b93573 100644 --- a/src/examples/ecore/efl_net_server_simple_example.c +++ b/src/examples/ecore/efl_net_server_simple_example.c @@ -229,7 +229,7 @@ _server_serving(void *data EINA_UNUSED, const Efl_Event *event) fprintf(stderr, "TCP options:\n" " - IPv6 only: %u\n", - efl_net_server_tcp_ipv6_only_get(event->object)); + efl_net_server_ip_ipv6_only_get(event->object)); } else if (efl_class_get(event->object) == EFL_NET_SERVER_UDP_CLASS) { @@ -243,7 +243,7 @@ _server_serving(void *data EINA_UNUSED, const Efl_Event *event) " - multicast TTL: %u\n" " - multicast loopback: %u\n" " - multicast groups:\n", - efl_net_server_udp_ipv6_only_get(event->object), + efl_net_server_ip_ipv6_only_get(event->object), efl_net_server_udp_dont_route_get(event->object), efl_net_server_udp_multicast_time_to_live_get(event->object), efl_net_server_udp_multicast_loopback_get(event->object)); @@ -459,7 +459,7 @@ main(int argc, char **argv) if (cls == EFL_NET_SERVER_TCP_CLASS) { - efl_net_server_tcp_ipv6_only_set(server, ipv6_only); + efl_net_server_ip_ipv6_only_set(server, ipv6_only); efl_net_server_fd_reuse_address_set(server, EINA_TRUE); /* optional, but nice for testing */ efl_net_server_fd_reuse_port_set(server, EINA_TRUE); /* optional, but nice for testing... not secure unless you know what you're doing */ @@ -469,7 +469,7 @@ main(int argc, char **argv) { const Eina_List *lst; - efl_net_server_udp_ipv6_only_set(server, ipv6_only); + efl_net_server_ip_ipv6_only_set(server, ipv6_only); efl_net_server_udp_dont_route_set(server, udp_dont_route); efl_net_server_udp_multicast_time_to_live_set(server, udp_mcast_ttl); diff --git a/src/examples/ecore/efl_net_socket_ssl_server_example.c b/src/examples/ecore/efl_net_socket_ssl_server_example.c index 129bee44df..6fc867d922 100644 --- a/src/examples/ecore/efl_net_socket_ssl_server_example.c +++ b/src/examples/ecore/efl_net_socket_ssl_server_example.c @@ -311,7 +311,7 @@ main(int argc, char **argv) eina_iterator_free(it); server = efl_add(EFL_NET_SERVER_TCP_CLASS, ecore_main_loop_get(), /* it's mandatory to use a main loop provider as the server parent */ - efl_net_server_tcp_ipv6_only_set(efl_added, EINA_FALSE), /* optional, but helps testing IPv4 on IPv6 servers */ + efl_net_server_ip_ipv6_only_set(efl_added, EINA_FALSE), /* optional, but helps testing IPv4 on IPv6 servers */ efl_net_server_fd_reuse_address_set(efl_added, EINA_TRUE), /* optional, but nice for testing */ efl_net_server_fd_reuse_port_set(efl_added, EINA_TRUE), /* optional, but nice for testing... not secure unless you know what you're doing */ efl_event_callback_array_add(efl_added, server_cbs(), NULL)); /* mandatory to have "client,add" in order to be useful */ diff --git a/src/lib/ecore_con/Ecore_Con_Eo.h b/src/lib/ecore_con/Ecore_Con_Eo.h index 9825a2b2a6..5958430cbd 100644 --- a/src/lib/ecore_con/Ecore_Con_Eo.h +++ b/src/lib/ecore_con/Ecore_Con_Eo.h @@ -13,6 +13,8 @@ #include "efl_net_socket_fd.eo.h" #include "efl_net_server_fd.eo.h" +#include "efl_net_server_ip.eo.h" + #include "efl_net_socket_tcp.eo.h" #include "efl_net_dialer_tcp.eo.h" #include "efl_net_server_tcp.eo.h" diff --git a/src/lib/ecore_con/ecore_con_legacy.c b/src/lib/ecore_con/ecore_con_legacy.c index fa71139dca..9fb417e41d 100644 --- a/src/lib/ecore_con/ecore_con_legacy.c +++ b/src/lib/ecore_con/ecore_con_legacy.c @@ -1515,12 +1515,12 @@ _ecore_con_server_server_set(Ecore_Con_Server *svr, Eo *server) if (efl_isa(inner_server, EFL_NET_SERVER_TCP_CLASS)) { /* old ecore_con did not map ipv4 to ipv6... */ - efl_net_server_tcp_ipv6_only_set(inner_server, EINA_TRUE); + efl_net_server_ip_ipv6_only_set(inner_server, EINA_TRUE); } else if (efl_isa(inner_server, EFL_NET_SERVER_UDP_CLASS)) { /* old ecore_con did not map ipv4 to ipv6... */ - efl_net_server_udp_ipv6_only_set(inner_server, EINA_TRUE); + efl_net_server_ip_ipv6_only_set(inner_server, EINA_TRUE); svr->want_mcast = type == ECORE_CON_REMOTE_MCAST; } else if (efl_isa(inner_server, EFL_NET_SERVER_SSL_CLASS)) diff --git a/src/lib/ecore_con/efl_net_server_ip.c b/src/lib/ecore_con/efl_net_server_ip.c new file mode 100644 index 0000000000..210af3bc1e --- /dev/null +++ b/src/lib/ecore_con/efl_net_server_ip.c @@ -0,0 +1,82 @@ +#define EFL_NET_SERVER_FD_PROTECTED 1 +#define EFL_NET_SERVER_PROTECTED 1 +#define EFL_LOOP_FD_PROTECTED 1 + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "Ecore.h" +#include "Ecore_Con.h" +#include "ecore_con_private.h" + +#ifdef HAVE_SYS_SOCKET_H +# include +#endif +#ifdef HAVE_NETINET_TCP_H +# include +#endif +#ifdef HAVE_NETINET_IN_H +# include +#endif +#ifdef HAVE_ARPA_INET_H +# include +#endif +#ifdef _WIN32 +# include +#endif + +#define MY_CLASS EFL_NET_SERVER_IP_CLASS + +typedef struct _Efl_Net_Server_Ip_Data +{ + Eina_Bool ipv6_only; +} Efl_Net_Server_Ip_Data; + +EOLIAN Efl_Object * +_efl_net_server_ip_efl_object_constructor(Eo *o, Efl_Net_Server_Ip_Data *pd) +{ + pd->ipv6_only = 0xff; + return efl_constructor(efl_super(o, MY_CLASS)); +} + +EOLIAN void +_efl_net_server_ip_ipv6_only_set(Eo *o, Efl_Net_Server_Ip_Data *pd, Eina_Bool ipv6_only) +{ +#ifdef IPV6_V6ONLY + SOCKET fd = efl_loop_fd_get(o); +#ifdef _WIN32 + DWORD value = ipv6_only; + int valuelen; +#else + int value = ipv6_only; + socklen_t valuelen; +#endif +#endif + +#ifdef IPV6_V6ONLY + if (fd == INVALID_SOCKET) return; + if (efl_net_server_fd_family_get(o) != AF_INET6) return; + + if (setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, (const char *)&value, sizeof(value)) != 0) + { + ERR("could not set socket=" SOCKET_FMT " IPV6_V6ONLY=%d: %s", fd, (int)value, eina_error_msg_get(efl_net_socket_error_get())); + } + + valuelen = sizeof(value); + if (getsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, (char *)&value, &valuelen) != 0) + { + WRN("getsockopt(" SOCKET_FMT ", IPPROTO_IPV6, IPV6_V6ONLY): %s", fd, eina_error_msg_get(efl_net_socket_error_get())); + return ; + } + pd->ipv6_only = !!value; +#endif +} + +EOLIAN Eina_Bool +_efl_net_server_ip_ipv6_only_get(Eo *o EINA_UNUSED, Efl_Net_Server_Ip_Data *pd) +{ + return pd->ipv6_only; +} + +#include "efl_net_server_ip.eo.c" diff --git a/src/lib/ecore_con/efl_net_server_ip.eo b/src/lib/ecore_con/efl_net_server_ip.eo new file mode 100644 index 0000000000..466a1c1b1d --- /dev/null +++ b/src/lib/ecore_con/efl_net_server_ip.eo @@ -0,0 +1,38 @@ +class Efl.Net.Server.Ip (Efl.Net.Server.Fd) { + [[An IP server. + + @since 1.20 + ]] + methods { + @property ipv6_only { + [[Whenever IPv6 listen address will accept only same-family clients or will allow IPv4 to connect as well. + + Since Linux 2.4.21, Windows Vista and MacOS X these + control whenever a server that did bind to an IPv6 + address will accept only IPv6 clients or will also + accept IPv4 by automatically converting them in an IPv6 + address, allowing a single socket to handle both + protocols. + + If an IPv6 address was used in @Efl.Net.Server.address, + this property is $false and an IPv4 connects, then an + address such as [::ffff:IPv4]:PORT will be used, such as + [::ffff:192.168.0.2]:1234, where the IPv4 address can be + extracted. + + If an IPv4 address was used in @Efl.Net.Server.address, + this has no effect. + + Systems can configure their default value, usually true + (allows only IPv6 clients). + ]] + values { + ipv6_only: bool; [[If $true the server will only accept IPv6 clients, $false otherwise]] + } + } + } + + implements { + Efl.Object.constructor; + } +} diff --git a/src/lib/ecore_con/efl_net_server_ssl.c b/src/lib/ecore_con/efl_net_server_ssl.c index 1fe34bc949..551980dc4d 100644 --- a/src/lib/ecore_con/efl_net_server_ssl.c +++ b/src/lib/ecore_con/efl_net_server_ssl.c @@ -284,13 +284,13 @@ _efl_net_server_ssl_reuse_port_get(Eo *o EINA_UNUSED, Efl_Net_Server_Ssl_Data *p EOLIAN void _efl_net_server_ssl_ipv6_only_set(Eo *o EINA_UNUSED, Efl_Net_Server_Ssl_Data *pd, Eina_Bool ipv6_only) { - efl_net_server_tcp_ipv6_only_set(pd->server, ipv6_only); + efl_net_server_ip_ipv6_only_set(pd->server, ipv6_only); } EOLIAN Eina_Bool _efl_net_server_ssl_ipv6_only_get(Eo *o EINA_UNUSED, Efl_Net_Server_Ssl_Data *pd) { - return efl_net_server_tcp_ipv6_only_get(pd->server); + return efl_net_server_ip_ipv6_only_get(pd->server); } diff --git a/src/lib/ecore_con/efl_net_server_tcp.c b/src/lib/ecore_con/efl_net_server_tcp.c index de4da818a8..89b054d579 100644 --- a/src/lib/ecore_con/efl_net_server_tcp.c +++ b/src/lib/ecore_con/efl_net_server_tcp.c @@ -32,16 +32,8 @@ typedef struct _Efl_Net_Server_Tcp_Data { Ecore_Thread *resolver; - Eina_Bool ipv6_only; } Efl_Net_Server_Tcp_Data; -EOLIAN Efl_Object * -_efl_net_server_tcp_efl_object_constructor(Eo *o, Efl_Net_Server_Tcp_Data *pd) -{ - pd->ipv6_only = 0xff; - return efl_constructor(efl_super(o, MY_CLASS)); -} - EOLIAN void _efl_net_server_tcp_efl_object_destructor(Eo *o, Efl_Net_Server_Tcp_Data *pd) { @@ -80,10 +72,7 @@ _efl_net_server_tcp_resolved_bind(Eo *o, Efl_Net_Server_Tcp_Data *pd, const stru /* apply pending value BEFORE bind() */ if (addr->ai_family == AF_INET6) { - if (pd->ipv6_only == 0xff) - efl_net_server_tcp_ipv6_only_get(o); /* fetch & sync */ - else - efl_net_server_tcp_ipv6_only_set(o, pd->ipv6_only); + efl_net_server_ip_ipv6_only_set(o, efl_net_server_ip_ipv6_only_get(o)); } r = bind(fd, addr->ai_addr, addrlen); @@ -293,61 +282,4 @@ _efl_net_server_tcp_efl_net_server_fd_client_reject(Eo *o, Efl_Net_Server_Tcp_Da efl_event_callback_call(o, EFL_NET_SERVER_EVENT_CLIENT_REJECTED, str); } -EOLIAN void -_efl_net_server_tcp_ipv6_only_set(Eo *o, Efl_Net_Server_Tcp_Data *pd, Eina_Bool ipv6_only) -{ -#ifdef IPV6_V6ONLY - Eina_Bool old = pd->ipv6_only; - SOCKET fd = efl_loop_fd_get(o); -#ifdef _WIN32 - DWORD value = ipv6_only; -#else - int value = ipv6_only; -#endif -#endif - - pd->ipv6_only = ipv6_only; - -#ifdef IPV6_V6ONLY - if (fd == INVALID_SOCKET) return; - if (efl_net_server_fd_family_get(o) != AF_INET6) return; - - if (setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, (const char *)&value, sizeof(value)) != 0) - { - ERR("could not set socket=" SOCKET_FMT " IPV6_V6ONLY=%d: %s", fd, (int)value, eina_error_msg_get(efl_net_socket_error_get())); - pd->ipv6_only = old; - } -#endif -} - -EOLIAN Eina_Bool -_efl_net_server_tcp_ipv6_only_get(Eo *o EINA_UNUSED, Efl_Net_Server_Tcp_Data *pd) -{ -#ifdef IPV6_V6ONLY - SOCKET fd = efl_loop_fd_get(o); -#ifdef _WIN32 - DWORD value = 0; - int valuelen; -#else - int value = 0; - socklen_t valuelen; -#endif - - if (fd == INVALID_SOCKET) goto end; - if (efl_net_server_fd_family_get(o) != AF_INET6) goto end; - - valuelen = sizeof(value); - if (getsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, (char *)&value, &valuelen) != 0) - { - WRN("getsockopt(" SOCKET_FMT ", IPPROTO_IPV6, IPV6_V6ONLY): %s", fd, eina_error_msg_get(efl_net_socket_error_get())); - goto end; - } - pd->ipv6_only = !!value; - - end: -#endif - return pd->ipv6_only; -} - - #include "efl_net_server_tcp.eo.c" diff --git a/src/lib/ecore_con/efl_net_server_tcp.eo b/src/lib/ecore_con/efl_net_server_tcp.eo index 10e1e019ee..b80fa100df 100644 --- a/src/lib/ecore_con/efl_net_server_tcp.eo +++ b/src/lib/ecore_con/efl_net_server_tcp.eo @@ -1,40 +1,10 @@ -class Efl.Net.Server.Tcp (Efl.Net.Server.Fd) { +class Efl.Net.Server.Tcp (Efl.Net.Server.Ip) { [[A TCP server. @since 1.19 ]] - methods { - @property ipv6_only { - [[Whenever IPv6 listen address will accept only same-family clients or will allow IPv4 to connect as well. - - Since Linux 2.4.21, Windows Vista and MacOS X these - control whenever a server that did bind to an IPv6 - address will accept only IPv6 clients or will also - accept IPv4 by automatically converting them in an IPv6 - address, allowing a single socket to handle both - protocols. - - If an IPv6 address was used in @Efl.Net.Server.address, - this property is $false and an IPv4 connects, then an - address such as [::ffff:IPv4]:PORT will be used, such as - [::ffff:192.168.0.2]:1234, where the IPv4 address can be - extracted. - - If an IPv4 address was used in @Efl.Net.Server.address, - this has no effect. - - Systems can configure their default value, usually true - (allows only IPv6 clients). - ]] - values { - ipv6_only: bool; [[If $true the server will only accept IPv6 clients, $false otherwise]] - } - } - } - implements { - Efl.Object.constructor; Efl.Object.destructor; Efl.Net.Server.serve; Efl.Net.Server.Fd.client_add; diff --git a/src/lib/ecore_con/efl_net_server_udp.c b/src/lib/ecore_con/efl_net_server_udp.c index 9159929818..c3401d8b99 100644 --- a/src/lib/ecore_con/efl_net_server_udp.c +++ b/src/lib/ecore_con/efl_net_server_udp.c @@ -42,14 +42,12 @@ typedef struct _Efl_Net_Server_Udp_Data Eina_Bool loopback; Eina_Bool ttl_set; } multicast; - Eina_Bool ipv6_only; Eina_Bool dont_route; } Efl_Net_Server_Udp_Data; EOLIAN Efl_Object * _efl_net_server_udp_efl_object_constructor(Eo *o, Efl_Net_Server_Udp_Data *pd) { - pd->ipv6_only = 0xff; pd->clients = eina_hash_string_superfast_new(NULL); pd->multicast.ttl = 1; pd->multicast.ttl_set = EINA_FALSE; @@ -111,10 +109,7 @@ _efl_net_server_udp_resolved_bind(Eo *o, Efl_Net_Server_Udp_Data *pd, const stru /* apply pending value BEFORE bind() */ if (addr->ai_family == AF_INET6) { - if (pd->ipv6_only == 0xff) - efl_net_server_udp_ipv6_only_get(o); /* fetch & sync */ - else - efl_net_server_udp_ipv6_only_set(o, pd->ipv6_only); + efl_net_server_ip_ipv6_only_set(o, efl_net_server_ip_ipv6_only_get(o)); } efl_net_server_udp_dont_route_set(o, pd->dont_route); @@ -403,62 +398,6 @@ _efl_net_server_udp_efl_net_server_fd_process_incoming_data(Eo *o, Efl_Net_Serve _efl_net_server_udp_client_feed(client, slice); } -EOLIAN void -_efl_net_server_udp_ipv6_only_set(Eo *o, Efl_Net_Server_Udp_Data *pd, Eina_Bool ipv6_only) -{ -#ifdef IPV6_V6ONLY - Eina_Bool old = pd->ipv6_only; - SOCKET fd = efl_loop_fd_get(o); -#ifdef _WIN32 - DWORD value = ipv6_only; -#else - int value = ipv6_only; -#endif -#endif - - pd->ipv6_only = ipv6_only; - -#ifdef IPV6_V6ONLY - if (fd == INVALID_SOCKET) return; - if (efl_net_server_fd_family_get(o) != AF_INET6) return; - - if (setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, (const char *)&value, sizeof(value)) != 0) - { - ERR("could not set socket=" SOCKET_FMT " IPV6_V6ONLY=%d: %s", fd, (int)value, eina_error_msg_get(efl_net_socket_error_get())); - pd->ipv6_only = old; - } -#endif -} - -EOLIAN Eina_Bool -_efl_net_server_udp_ipv6_only_get(Eo *o EINA_UNUSED, Efl_Net_Server_Udp_Data *pd) -{ -#ifdef IPV6_V6ONLY - SOCKET fd = efl_loop_fd_get(o); -#ifdef _WIN32 - DWORD value = 0; - int valuelen; -#else - int value = 0; - socklen_t valuelen; -#endif - - if (fd == INVALID_SOCKET) goto end; - if (efl_net_server_fd_family_get(o) != AF_INET6) goto end; - - valuelen = sizeof(value); - if (getsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, (char *)&value, &valuelen) != 0) - { - WRN("getsockopt(" SOCKET_FMT ", IPPROTO_IPV6, IPV6_V6ONLY): %s", fd, eina_error_msg_get(efl_net_socket_error_get())); - goto end; - } - pd->ipv6_only = !!value; - - end: -#endif - return pd->ipv6_only; -} - EOLIAN static Eina_Bool _efl_net_server_udp_dont_route_set(Eo *o, Efl_Net_Server_Udp_Data *pd, Eina_Bool dont_route) { diff --git a/src/lib/ecore_con/efl_net_server_udp.eo b/src/lib/ecore_con/efl_net_server_udp.eo index 402ef758eb..4fe45668dc 100644 --- a/src/lib/ecore_con/efl_net_server_udp.eo +++ b/src/lib/ecore_con/efl_net_server_udp.eo @@ -1,37 +1,10 @@ -class Efl.Net.Server.Udp (Efl.Net.Server.Fd) { +class Efl.Net.Server.Udp (Efl.Net.Server.Ip) { [[A UDP server. @since 1.19 ]] methods { - @property ipv6_only { - [[Whenever IPv6 listen address will accept only same-family clients or will allow IPv4 to connect as well. - - Since Linux 2.4.21, Windows Vista and MacOS X these - control whenever a server that did bind to an IPv6 - address will accept only IPv6 clients or will also - accept IPv4 by automatically converting them in an IPv6 - address, allowing a single socket to handle both - protocols. - - If an IPv6 address was used in @Efl.Net.Server.address, - this property is $false and an IPv4 connects, then an - address such as [::ffff:IPv4]:PORT will be used, such as - [::ffff:192.168.0.2]:1234, where the IPv4 address can be - extracted. - - If an IPv4 address was used in @Efl.Net.Server.address, - this has no effect. - - Systems can configure their default value, usually true - (allows only IPv6 clients). - ]] - values { - ipv6_only: bool; [[If $true the server will only accept IPv6 clients, $false otherwise]] - } - } - @property dont_route { [[Avoids sent UDP packets being routed by a gateway, limiting them to the local network. diff --git a/src/lib/ecore_ipc/ecore_ipc.c b/src/lib/ecore_ipc/ecore_ipc.c index c0bd6ee1f0..4b092a16f7 100644 --- a/src/lib/ecore_ipc/ecore_ipc.c +++ b/src/lib/ecore_ipc/ecore_ipc.c @@ -488,7 +488,7 @@ ecore_ipc_server_add(Ecore_Ipc_Type type, const char *name, int port, const void if (efl_isa(svr->server, EFL_NET_SERVER_TCP_CLASS)) { /* old ecore_con did not map ipv4 to ipv6... */ - efl_net_server_tcp_ipv6_only_set(svr->server, EINA_TRUE); + efl_net_server_ip_ipv6_only_set(svr->server, EINA_TRUE); } else if (efl_isa(svr->server, EFL_NET_SERVER_SSL_CLASS)) {