summaryrefslogtreecommitdiff
path: root/node
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2017-07-17 17:02:50 -0700
committerAdam Ierymenko <adam.ierymenko@gmail.com>2017-07-17 17:02:50 -0700
commit1685659e37f568c727580634e412674cc266ff31 (patch)
treeb0dd1b55d5ffe276da5d7acbd1b04bc0e42118c2 /node
parent5e2ea4a81ae95a488e30f6f0e20a37d38bbeea64 (diff)
downloadinfinitytier-1685659e37f568c727580634e412674cc266ff31.tar.gz
infinitytier-1685659e37f568c727580634e412674cc266ff31.zip
Remote tracing works.
Diffstat (limited to 'node')
-rw-r--r--node/IncomingPacket.cpp4
-rw-r--r--node/NetworkConfig.hpp29
-rw-r--r--node/Packet.hpp4
-rw-r--r--node/Trace.cpp35
-rw-r--r--node/Trace.hpp2
5 files changed, 21 insertions, 53 deletions
diff --git a/node/IncomingPacket.cpp b/node/IncomingPacket.cpp
index be3d082b..51955bf3 100644
--- a/node/IncomingPacket.cpp
+++ b/node/IncomingPacket.cpp
@@ -115,6 +115,7 @@ bool IncomingPacket::tryDecode(const RuntimeEnvironment *RR,void *tPtr)
case Packet::VERB_MULTICAST_FRAME: return _doMULTICAST_FRAME(RR,tPtr,peer);
case Packet::VERB_PUSH_DIRECT_PATHS: return _doPUSH_DIRECT_PATHS(RR,tPtr,peer);
case Packet::VERB_USER_MESSAGE: return _doUSER_MESSAGE(RR,tPtr,peer);
+ case Packet::VERB_REMOTE_TRACE: return _doREMOTE_TRACE(RR,tPtr,peer);
}
} else {
RR->sw->requestWhois(tPtr,sourceAddress);
@@ -1172,8 +1173,9 @@ bool IncomingPacket::_doREMOTE_TRACE(const RuntimeEnvironment *RR,void *tPtr,con
while (ptr < eof) {
if (!*ptr) { // end of string
rt.len = (unsigned int)(ptr - rt.data);
- if ((rt.len > 0)&&(rt.len <= ZT_MAX_REMOTE_TRACE_SIZE))
+ if ((rt.len > 0)&&(rt.len <= ZT_MAX_REMOTE_TRACE_SIZE)) {
RR->node->postEvent(tPtr,ZT_EVENT_REMOTE_TRACE,&rt);
+ }
rt.data = const_cast<char *>(++ptr); // start of next string, if any
} else {
++ptr;
diff --git a/node/NetworkConfig.hpp b/node/NetworkConfig.hpp
index fb48edc9..3fd5ddac 100644
--- a/node/NetworkConfig.hpp
+++ b/node/NetworkConfig.hpp
@@ -410,35 +410,6 @@ public:
return (Tag *)0;
}
- /*
- inline void dump() const
- {
- printf("networkId==%.16llx\n",networkId);
- printf("timestamp==%llu\n",timestamp);
- printf("credentialTimeMaxDelta==%llu\n",credentialTimeMaxDelta);
- printf("revision==%llu\n",revision);
- printf("issuedTo==%.10llx\n",issuedTo.toInt());
- printf("multicastLimit==%u\n",multicastLimit);
- printf("flags=%.8lx\n",(unsigned long)flags);
- printf("specialistCount==%u\n",specialistCount);
- for(unsigned int i=0;i<specialistCount;++i)
- printf(" specialists[%u]==%.16llx\n",i,specialists[i]);
- printf("routeCount==%u\n",routeCount);
- for(unsigned int i=0;i<routeCount;++i) {
- printf(" routes[i].target==%s\n",reinterpret_cast<const InetAddress *>(&(routes[i].target))->toString().c_str());
- printf(" routes[i].via==%s\n",reinterpret_cast<const InetAddress *>(&(routes[i].via))->toIpString().c_str());
- printf(" routes[i].flags==%.4x\n",(unsigned int)routes[i].flags);
- printf(" routes[i].metric==%u\n",(unsigned int)routes[i].metric);
- }
- printf("staticIpCount==%u\n",staticIpCount);
- for(unsigned int i=0;i<staticIpCount;++i)
- printf(" staticIps[i]==%s\n",staticIps[i].toString().c_str());
- printf("ruleCount==%u\n",ruleCount);
- printf("name==%s\n",name);
- printf("com==%s\n",com.toString().c_str());
- }
- */
-
/**
* Network ID that this configuration applies to
*/
diff --git a/node/Packet.hpp b/node/Packet.hpp
index 97c9774e..5fc631b1 100644
--- a/node/Packet.hpp
+++ b/node/Packet.hpp
@@ -935,10 +935,6 @@ public:
* be used unless they are blacklisted explicitly or unless flag 0x01
* is set.
*
- * Only a subset of this functionality is currently implemented: basic
- * path pushing and learning. Blacklisting and trust are not fully
- * implemented yet (encryption is still always used).
- *
* OK and ERROR are not generated.
*/
VERB_PUSH_DIRECT_PATHS = 0x10,
diff --git a/node/Trace.cpp b/node/Trace.cpp
index 2b1c69dd..98a4adcb 100644
--- a/node/Trace.cpp
+++ b/node/Trace.cpp
@@ -140,7 +140,7 @@ void Trace::incomingNetworkAccessDenied(void *const tPtr,const SharedPtr<Network
d.add(ZT_REMOTE_TRACE_FIELD__LOCAL_SOCKET,path->localSocket());
}
d.add(ZT_REMOTE_TRACE_FIELD__NETWORK_ID,network->id());
- _send(tPtr,d,network);
+ _send(tPtr,d,*network);
}
void Trace::incomingNetworkFrameDropped(void *const tPtr,const SharedPtr<Network> &network,const SharedPtr<Path> &path,const uint64_t packetId,const unsigned int packetLength,const Address &source,const Packet::Verb verb,const MAC &sourceMac,const MAC &destMac,const char *reason)
@@ -161,7 +161,7 @@ void Trace::incomingNetworkFrameDropped(void *const tPtr,const SharedPtr<Network
d.add(ZT_REMOTE_TRACE_FIELD__DEST_MAC,destMac.toInt());
if (reason)
d.add(ZT_REMOTE_TRACE_FIELD__REASON,reason);
- _send(tPtr,d,network);
+ _send(tPtr,d,*network);
}
void Trace::incomingPacketTrustedPath(void *const tPtr,const SharedPtr<Path> &path,const uint64_t packetId,const Address &source,const uint64_t trustedPathId,bool approved)
@@ -218,7 +218,7 @@ void Trace::networkConfigRequestSent(void *const tPtr,const Network &network,con
d.add(ZT_REMOTE_TRACE_FIELD__EVENT,ZT_REMOTE_TRACE_EVENT__NETWORK_CONFIG_REQUEST_SENT_S);
d.add(ZT_REMOTE_TRACE_FIELD__NETWORK_ID,network.id());
d.add(ZT_REMOTE_TRACE_FIELD__NETWORK_CONTROLLER_ID,controller);
- _send(tPtr,d,0);
+ _send(tPtr,d,network);
}
void Trace::networkFilter(
@@ -259,7 +259,7 @@ void Trace::networkFilter(
d.add(ZT_REMOTE_TRACE_FIELD__FRAME_LENGTH,(uint64_t)frameLen);
if (frameLen > 0)
d.add(ZT_REMOTE_TRACE_FIELD__FRAME_DATA,(const char *)frameData,(frameLen > 256) ? (int)256 : (int)frameLen);
- _send(tPtr,d,network.id());
+ _send(tPtr,d,network);
}
void Trace::credentialRejected(void *const tPtr,const CertificateOfMembership &c,const char *reason)
@@ -273,7 +273,7 @@ void Trace::credentialRejected(void *const tPtr,const CertificateOfMembership &c
d.add(ZT_REMOTE_TRACE_FIELD__CREDENTIAL_ISSUED_TO,c.issuedTo());
if (reason)
d.add(ZT_REMOTE_TRACE_FIELD__REASON,reason);
- _send(tPtr,d,0);
+ _send(tPtr,d,c.networkId());
}
void Trace::credentialRejected(void *const tPtr,const CertificateOfOwnership &c,const char *reason)
@@ -287,7 +287,7 @@ void Trace::credentialRejected(void *const tPtr,const CertificateOfOwnership &c,
d.add(ZT_REMOTE_TRACE_FIELD__CREDENTIAL_ISSUED_TO,c.issuedTo());
if (reason)
d.add(ZT_REMOTE_TRACE_FIELD__REASON,reason);
- _send(tPtr,d,0);
+ _send(tPtr,d,c.networkId());
}
void Trace::credentialRejected(void *const tPtr,const CertificateOfRepresentation &c,const char *reason)
@@ -313,7 +313,7 @@ void Trace::credentialRejected(void *const tPtr,const Capability &c,const char *
d.add(ZT_REMOTE_TRACE_FIELD__CREDENTIAL_ISSUED_TO,c.issuedTo());
if (reason)
d.add(ZT_REMOTE_TRACE_FIELD__REASON,reason);
- _send(tPtr,d,0);
+ _send(tPtr,d,c.networkId());
}
void Trace::credentialRejected(void *const tPtr,const Tag &c,const char *reason)
@@ -328,7 +328,7 @@ void Trace::credentialRejected(void *const tPtr,const Tag &c,const char *reason)
d.add(ZT_REMOTE_TRACE_FIELD__CREDENTIAL_INFO,(uint64_t)c.value());
if (reason)
d.add(ZT_REMOTE_TRACE_FIELD__REASON,reason);
- _send(tPtr,d,0);
+ _send(tPtr,d,c.networkId());
}
void Trace::credentialRejected(void *const tPtr,const Revocation &c,const char *reason)
@@ -341,7 +341,7 @@ void Trace::credentialRejected(void *const tPtr,const Revocation &c,const char *
d.add(ZT_REMOTE_TRACE_FIELD__CREDENTIAL_REVOCATION_TARGET,c.target());
if (reason)
d.add(ZT_REMOTE_TRACE_FIELD__REASON,reason);
- _send(tPtr,d,0);
+ _send(tPtr,d,c.networkId());
}
void Trace::credentialAccepted(void *const tPtr,const CertificateOfMembership &c)
@@ -353,7 +353,7 @@ void Trace::credentialAccepted(void *const tPtr,const CertificateOfMembership &c
d.add(ZT_REMOTE_TRACE_FIELD__CREDENTIAL_ID,(uint64_t)c.id());
d.add(ZT_REMOTE_TRACE_FIELD__CREDENTIAL_TIMESTAMP,c.timestamp());
d.add(ZT_REMOTE_TRACE_FIELD__CREDENTIAL_ISSUED_TO,c.issuedTo());
- _send(tPtr,d,0);
+ _send(tPtr,d,c.networkId());
}
void Trace::credentialAccepted(void *const tPtr,const CertificateOfOwnership &c)
@@ -365,7 +365,7 @@ void Trace::credentialAccepted(void *const tPtr,const CertificateOfOwnership &c)
d.add(ZT_REMOTE_TRACE_FIELD__CREDENTIAL_ID,(uint64_t)c.id());
d.add(ZT_REMOTE_TRACE_FIELD__CREDENTIAL_TIMESTAMP,c.timestamp());
d.add(ZT_REMOTE_TRACE_FIELD__CREDENTIAL_ISSUED_TO,c.issuedTo());
- _send(tPtr,d,0);
+ _send(tPtr,d,c.networkId());
}
void Trace::credentialAccepted(void *const tPtr,const CertificateOfRepresentation &c)
@@ -387,7 +387,7 @@ void Trace::credentialAccepted(void *const tPtr,const Capability &c)
d.add(ZT_REMOTE_TRACE_FIELD__CREDENTIAL_ID,(uint64_t)c.id());
d.add(ZT_REMOTE_TRACE_FIELD__CREDENTIAL_TIMESTAMP,c.timestamp());
d.add(ZT_REMOTE_TRACE_FIELD__CREDENTIAL_ISSUED_TO,c.issuedTo());
- _send(tPtr,d,0);
+ _send(tPtr,d,c.networkId());
}
void Trace::credentialAccepted(void *const tPtr,const Tag &c)
@@ -400,7 +400,7 @@ void Trace::credentialAccepted(void *const tPtr,const Tag &c)
d.add(ZT_REMOTE_TRACE_FIELD__CREDENTIAL_TIMESTAMP,c.timestamp());
d.add(ZT_REMOTE_TRACE_FIELD__CREDENTIAL_ISSUED_TO,c.issuedTo());
d.add(ZT_REMOTE_TRACE_FIELD__CREDENTIAL_INFO,(uint64_t)c.value());
- _send(tPtr,d,0);
+ _send(tPtr,d,c.networkId());
}
void Trace::credentialAccepted(void *const tPtr,const Revocation &c)
@@ -411,7 +411,7 @@ void Trace::credentialAccepted(void *const tPtr,const Revocation &c)
d.add(ZT_REMOTE_TRACE_FIELD__CREDENTIAL_TYPE,(uint64_t)c.credentialType());
d.add(ZT_REMOTE_TRACE_FIELD__CREDENTIAL_ID,(uint64_t)c.id());
d.add(ZT_REMOTE_TRACE_FIELD__CREDENTIAL_REVOCATION_TARGET,c.target());
- _send(tPtr,d,0);
+ _send(tPtr,d,c.networkId());
}
void Trace::_send(void *const tPtr,const Dictionary<ZT_MAX_REMOTE_TRACE_SIZE> &d)
@@ -434,7 +434,6 @@ void Trace::_send(void *const tPtr,const Dictionary<ZT_MAX_REMOTE_TRACE_SIZE> &d
}
}
_traceMsgBuf[i] = (char)0;
- //printf("%s\n",_traceMsgBuf);
RR->node->postEvent(tPtr,ZT_EVENT_TRACE,_traceMsgBuf);
#endif
@@ -461,11 +460,11 @@ void Trace::_send(void *const tPtr,const Dictionary<ZT_MAX_REMOTE_TRACE_SIZE> &d
}
}
-void Trace::_send(void *const tPtr,const Dictionary<ZT_MAX_REMOTE_TRACE_SIZE> &d,const SharedPtr<Network> &network)
+void Trace::_send(void *const tPtr,const Dictionary<ZT_MAX_REMOTE_TRACE_SIZE> &d,const Network &network)
{
_send(tPtr,d);
- if ((network)&&(network->config().remoteTraceTarget)) {
- Packet outp(network->config().remoteTraceTarget,RR->identity.address(),Packet::VERB_REMOTE_TRACE);
+ if (network.config().remoteTraceTarget) {
+ Packet outp(network.config().remoteTraceTarget,RR->identity.address(),Packet::VERB_REMOTE_TRACE);
outp.appendCString(d.data());
outp.compress();
RR->sw->send(tPtr,outp,true);
diff --git a/node/Trace.hpp b/node/Trace.hpp
index 7fe48cdd..d66d0871 100644
--- a/node/Trace.hpp
+++ b/node/Trace.hpp
@@ -154,7 +154,7 @@ private:
void _send(void *const tPtr,const Dictionary<ZT_MAX_REMOTE_TRACE_SIZE> &d);
void _send(void *const tPtr,const Dictionary<ZT_MAX_REMOTE_TRACE_SIZE> &d,const uint64_t networkId);
- void _send(void *const tPtr,const Dictionary<ZT_MAX_REMOTE_TRACE_SIZE> &d,const SharedPtr<Network> &network);
+ void _send(void *const tPtr,const Dictionary<ZT_MAX_REMOTE_TRACE_SIZE> &d,const Network &network);
#ifdef ZT_TRACE
char _traceMsgBuf[4096];