aboutsummaryrefslogtreecommitdiff
path: root/src/udp.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/udp.c')
-rw-r--r--src/udp.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/udp.c b/src/udp.c
index 94bf125..fcfbbb7 100644
--- a/src/udp.c
+++ b/src/udp.c
@@ -77,6 +77,7 @@ static t_opt optset[] = {
77 {"ip-multicast-loop", opt_set_ip_multicast_loop}, 77 {"ip-multicast-loop", opt_set_ip_multicast_loop},
78 {"ip-add-membership", opt_set_ip_add_membership}, 78 {"ip-add-membership", opt_set_ip_add_membership},
79 {"ip-drop-membership", opt_set_ip_drop_membersip}, 79 {"ip-drop-membership", opt_set_ip_drop_membersip},
80 {"ipv6-v6only", opt_set_ip6_v6only},
80 {NULL, NULL} 81 {NULL, NULL}
81}; 82};
82 83
@@ -352,6 +353,11 @@ static int udp_create(lua_State *L, int domain) {
352 auxiliar_setclass(L, "udp{unconnected}", -1); 353 auxiliar_setclass(L, "udp{unconnected}", -1);
353 /* initialize remaining structure fields */ 354 /* initialize remaining structure fields */
354 socket_setnonblocking(&sock); 355 socket_setnonblocking(&sock);
356 if (domain == PF_INET6) {
357 int yes = 1;
358 setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY,
359 (void *)&yes, sizeof(yes));
360 }
355 udp->sock = sock; 361 udp->sock = sock;
356 timeout_init(&udp->tm, -1, -1); 362 timeout_init(&udp->tm, -1, -1);
357 udp->domain = domain; 363 udp->domain = domain;