diff options
author | Timothy J Fontaine <tjfontaine@gmail.com> | 2014-02-26 18:08:30 -0800 |
---|---|---|
committer | Timothy J Fontaine <tjfontaine@gmail.com> | 2014-02-26 18:08:30 -0800 |
commit | cd08c8a0e5e99ed4933b87fc5e188afcd4299f73 (patch) | |
tree | c05e93d47f89df1f7a782ee9c70bb2c97d557cd4 /deps/uv/src/unix/udp.c | |
parent | f3189ace6b5e31a874df421ac2f74da0e77cb14d (diff) | |
download | android-node-v8-cd08c8a0e5e99ed4933b87fc5e188afcd4299f73.tar.gz android-node-v8-cd08c8a0e5e99ed4933b87fc5e188afcd4299f73.tar.bz2 android-node-v8-cd08c8a0e5e99ed4933b87fc5e188afcd4299f73.zip |
uv: Upgrade to v0.11.21
Diffstat (limited to 'deps/uv/src/unix/udp.c')
-rw-r--r-- | deps/uv/src/unix/udp.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/deps/uv/src/unix/udp.c b/deps/uv/src/unix/udp.c index a2b3dc3298..ae3cc8dc65 100644 --- a/deps/uv/src/unix/udp.c +++ b/deps/uv/src/unix/udp.c @@ -539,6 +539,31 @@ int uv_udp_set_multicast_loop(uv_udp_t* handle, int on) { return uv__setsockopt_maybe_char(handle, IP_MULTICAST_LOOP, on); } +int uv_udp_set_multicast_interface(uv_udp_t* handle, const char* interface_addr) { + struct in_addr addr; + int err; + + memset(&addr, 0, sizeof addr); + + if (interface_addr) { + err = uv_inet_pton(AF_INET, interface_addr, &addr.s_addr); + if (err) + return err; + } else { + addr.s_addr = htonl(INADDR_ANY); + } + + if (setsockopt(handle->io_watcher.fd, + IPPROTO_IP, + IP_MULTICAST_IF, + (void*) &addr, + sizeof addr) == -1) { + return -errno; + } + + return 0; +} + int uv_udp_getsockname(uv_udp_t* handle, struct sockaddr* name, int* namelen) { socklen_t socklen; |