mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-06-13 12:48:27 +00:00
New simpler command interface via loopback UDP protected by a crypto token.
This commit is contained in:
@ -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.rawIpBytes(),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.rawIpBytes(),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");
|
||||
|
Reference in New Issue
Block a user