diff options
| author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2013-08-03 10:29:56 -0400 |
|---|---|---|
| committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2013-08-03 10:29:56 -0400 |
| commit | 63fa4a684d15409e185422e7641e7c4680d19ec3 (patch) | |
| tree | f24b0535aed69c5eccd415c344675836d6349772 /node/UdpSocket.cpp | |
| parent | 3635a940f921a10f229d67a30fde1be650d3a28e (diff) | |
| parent | 80d8b7d0ae56f1dce8b5b25ab7930df436755daf (diff) | |
| download | infinitytier-63fa4a684d15409e185422e7641e7c4680d19ec3.tar.gz infinitytier-63fa4a684d15409e185422e7641e7c4680d19ec3.zip | |
Merge my adamierymenko-dev into the new master that incorporates Raspberry Pi build changes in order to keep everything in sync.
Diffstat (limited to 'node/UdpSocket.cpp')
| -rw-r--r-- | node/UdpSocket.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/node/UdpSocket.cpp b/node/UdpSocket.cpp index 95156fcc..6178d16e 100644 --- a/node/UdpSocket.cpp +++ b/node/UdpSocket.cpp @@ -49,6 +49,7 @@ namespace ZeroTier { UdpSocket::UdpSocket( + bool localOnly, int localPort, bool ipv6, void (*packetHandler)(UdpSocket *,void *,const InetAddress &,const void *,unsigned int), @@ -87,7 +88,9 @@ UdpSocket::UdpSocket( memset(&sin6,0,sizeof(sin6)); sin6.sin6_family = AF_INET6; sin6.sin6_port = htons(localPort); - memcpy(&(sin6.sin6_addr),&in6addr_any,sizeof(struct in6_addr)); + if (localOnly) + memcpy(&(sin6.sin6_addr.s6_addr),InetAddress::LO6.rawIpData(),16); + else memcpy(&(sin6.sin6_addr),&in6addr_any,sizeof(struct in6_addr)); if (::bind(_sock,(const struct sockaddr *)&sin6,sizeof(sin6))) { ::close(_sock); throw std::runtime_error("unable to bind to port"); @@ -109,7 +112,9 @@ UdpSocket::UdpSocket( memset(&sin,0,sizeof(sin)); sin.sin_family = AF_INET; sin.sin_port = htons(localPort); - sin.sin_addr.s_addr = INADDR_ANY; + if (localOnly) + memcpy(&(sin.sin_addr.s_addr),InetAddress::LO4.rawIpData(),4); + else sin.sin_addr.s_addr = INADDR_ANY; if (::bind(_sock,(const struct sockaddr *)&sin,sizeof(sin))) { ::close(_sock); throw std::runtime_error("unable to bind to port"); |
