mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-06-05 03:53:44 +02:00
Circuit tests basically work but need some tweaks, and fix some issues found with valgrind.
This commit is contained in:
parent
97dee9de36
commit
a95fa379cc
6 changed files with 59 additions and 34 deletions
|
@ -258,8 +258,6 @@ SqliteNetworkController::~SqliteNetworkController()
|
||||||
sqlite3_finalize(_sCreateMember);
|
sqlite3_finalize(_sCreateMember);
|
||||||
sqlite3_finalize(_sGetNodeIdentity);
|
sqlite3_finalize(_sGetNodeIdentity);
|
||||||
sqlite3_finalize(_sCreateOrReplaceNode);
|
sqlite3_finalize(_sCreateOrReplaceNode);
|
||||||
sqlite3_finalize(_sUpdateNode);
|
|
||||||
sqlite3_finalize(_sUpdateNode2);
|
|
||||||
sqlite3_finalize(_sGetEtherTypesFromRuleTable);
|
sqlite3_finalize(_sGetEtherTypesFromRuleTable);
|
||||||
sqlite3_finalize(_sGetActiveBridges);
|
sqlite3_finalize(_sGetActiveBridges);
|
||||||
sqlite3_finalize(_sGetIpAssignmentsForNode);
|
sqlite3_finalize(_sGetIpAssignmentsForNode);
|
||||||
|
|
|
@ -155,8 +155,6 @@ private:
|
||||||
sqlite3_stmt *_sCreateMember;
|
sqlite3_stmt *_sCreateMember;
|
||||||
sqlite3_stmt *_sGetNodeIdentity;
|
sqlite3_stmt *_sGetNodeIdentity;
|
||||||
sqlite3_stmt *_sCreateOrReplaceNode;
|
sqlite3_stmt *_sCreateOrReplaceNode;
|
||||||
sqlite3_stmt *_sUpdateNode;
|
|
||||||
sqlite3_stmt *_sUpdateNode2;
|
|
||||||
sqlite3_stmt *_sGetEtherTypesFromRuleTable;
|
sqlite3_stmt *_sGetEtherTypesFromRuleTable;
|
||||||
sqlite3_stmt *_sGetActiveBridges;
|
sqlite3_stmt *_sGetActiveBridges;
|
||||||
sqlite3_stmt *_sGetIpAssignmentsForNode;
|
sqlite3_stmt *_sGetIpAssignmentsForNode;
|
||||||
|
|
13
examples/api/circuit-test-pingpong.json
Normal file
13
examples/api/circuit-test-pingpong.json
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
{
|
||||||
|
"hops": [
|
||||||
|
[ "4cbc810d4c" ],
|
||||||
|
[ "868cd1664f" ],
|
||||||
|
[ "4cbc810d4c" ],
|
||||||
|
[ "868cd1664f" ],
|
||||||
|
[ "4cbc810d4c" ],
|
||||||
|
[ "868cd1664f" ],
|
||||||
|
[ "4cbc810d4c" ],
|
||||||
|
[ "868cd1664f" ]
|
||||||
|
],
|
||||||
|
"reportAtEveryHop": true
|
||||||
|
}
|
|
@ -20,6 +20,6 @@ else
|
||||||
fi
|
fi
|
||||||
|
|
||||||
rm -f /var/lib/zerotier-one/identity.*
|
rm -f /var/lib/zerotier-one/identity.*
|
||||||
echo "$ZEROTIER_IDENTITY_SECRET" >identity.secret
|
echo "$ZEROTIER_IDENTITY_SECRET" >/var/lib/zerotier-one/identity.secret
|
||||||
|
|
||||||
/var/lib/zerotier-one/zerotier-one
|
/var/lib/zerotier-one/zerotier-one
|
||||||
|
|
|
@ -100,74 +100,88 @@ struct InetAddress : public sockaddr_storage
|
||||||
inline InetAddress &operator=(const InetAddress &a)
|
inline InetAddress &operator=(const InetAddress &a)
|
||||||
throw()
|
throw()
|
||||||
{
|
{
|
||||||
memcpy(this,&a,sizeof(InetAddress));
|
if (&a != this)
|
||||||
|
memcpy(this,&a,sizeof(InetAddress));
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline InetAddress &operator=(const InetAddress *a)
|
inline InetAddress &operator=(const InetAddress *a)
|
||||||
throw()
|
throw()
|
||||||
{
|
{
|
||||||
memcpy(this,a,sizeof(InetAddress));
|
if (a != this)
|
||||||
|
memcpy(this,a,sizeof(InetAddress));
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline InetAddress &operator=(const struct sockaddr_storage &ss)
|
inline InetAddress &operator=(const struct sockaddr_storage &ss)
|
||||||
throw()
|
throw()
|
||||||
{
|
{
|
||||||
memcpy(this,&ss,sizeof(InetAddress));
|
if (reinterpret_cast<const InetAddress *>(&ss) != this)
|
||||||
|
memcpy(this,&ss,sizeof(InetAddress));
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline InetAddress &operator=(const struct sockaddr_storage *ss)
|
inline InetAddress &operator=(const struct sockaddr_storage *ss)
|
||||||
throw()
|
throw()
|
||||||
{
|
{
|
||||||
memcpy(this,ss,sizeof(InetAddress));
|
if (reinterpret_cast<const InetAddress *>(ss) != this)
|
||||||
|
memcpy(this,ss,sizeof(InetAddress));
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline InetAddress &operator=(const struct sockaddr_in &sa)
|
inline InetAddress &operator=(const struct sockaddr_in &sa)
|
||||||
throw()
|
throw()
|
||||||
{
|
{
|
||||||
memset(this,0,sizeof(InetAddress));
|
if (reinterpret_cast<const InetAddress *>(&sa) != this) {
|
||||||
memcpy(this,&sa,sizeof(struct sockaddr_in));
|
memset(this,0,sizeof(InetAddress));
|
||||||
|
memcpy(this,&sa,sizeof(struct sockaddr_in));
|
||||||
|
}
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline InetAddress &operator=(const struct sockaddr_in *sa)
|
inline InetAddress &operator=(const struct sockaddr_in *sa)
|
||||||
throw()
|
throw()
|
||||||
{
|
{
|
||||||
memset(this,0,sizeof(InetAddress));
|
if (reinterpret_cast<const InetAddress *>(sa) != this) {
|
||||||
memcpy(this,sa,sizeof(struct sockaddr_in));
|
memset(this,0,sizeof(InetAddress));
|
||||||
|
memcpy(this,sa,sizeof(struct sockaddr_in));
|
||||||
|
}
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline InetAddress &operator=(const struct sockaddr_in6 &sa)
|
inline InetAddress &operator=(const struct sockaddr_in6 &sa)
|
||||||
throw()
|
throw()
|
||||||
{
|
{
|
||||||
memset(this,0,sizeof(InetAddress));
|
if (reinterpret_cast<const InetAddress *>(&sa) != this) {
|
||||||
memcpy(this,&sa,sizeof(struct sockaddr_in6));
|
memset(this,0,sizeof(InetAddress));
|
||||||
|
memcpy(this,&sa,sizeof(struct sockaddr_in6));
|
||||||
|
}
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline InetAddress &operator=(const struct sockaddr_in6 *sa)
|
inline InetAddress &operator=(const struct sockaddr_in6 *sa)
|
||||||
throw()
|
throw()
|
||||||
{
|
{
|
||||||
memset(this,0,sizeof(InetAddress));
|
if (reinterpret_cast<const InetAddress *>(sa) != this) {
|
||||||
memcpy(this,sa,sizeof(struct sockaddr_in6));
|
memset(this,0,sizeof(InetAddress));
|
||||||
|
memcpy(this,sa,sizeof(struct sockaddr_in6));
|
||||||
|
}
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline InetAddress &operator=(const struct sockaddr &sa)
|
inline InetAddress &operator=(const struct sockaddr &sa)
|
||||||
throw()
|
throw()
|
||||||
{
|
{
|
||||||
memset(this,0,sizeof(InetAddress));
|
if (reinterpret_cast<const InetAddress *>(&sa) != this) {
|
||||||
switch(sa.sa_family) {
|
memset(this,0,sizeof(InetAddress));
|
||||||
case AF_INET:
|
switch(sa.sa_family) {
|
||||||
memcpy(this,&sa,sizeof(struct sockaddr_in));
|
case AF_INET:
|
||||||
break;
|
memcpy(this,&sa,sizeof(struct sockaddr_in));
|
||||||
case AF_INET6:
|
break;
|
||||||
memcpy(this,&sa,sizeof(struct sockaddr_in6));
|
case AF_INET6:
|
||||||
break;
|
memcpy(this,&sa,sizeof(struct sockaddr_in6));
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
@ -175,14 +189,16 @@ struct InetAddress : public sockaddr_storage
|
||||||
inline InetAddress &operator=(const struct sockaddr *sa)
|
inline InetAddress &operator=(const struct sockaddr *sa)
|
||||||
throw()
|
throw()
|
||||||
{
|
{
|
||||||
memset(this,0,sizeof(InetAddress));
|
if (reinterpret_cast<const InetAddress *>(sa) != this) {
|
||||||
switch(sa->sa_family) {
|
memset(this,0,sizeof(InetAddress));
|
||||||
case AF_INET:
|
switch(sa->sa_family) {
|
||||||
memcpy(this,sa,sizeof(struct sockaddr_in));
|
case AF_INET:
|
||||||
break;
|
memcpy(this,sa,sizeof(struct sockaddr_in));
|
||||||
case AF_INET6:
|
break;
|
||||||
memcpy(this,sa,sizeof(struct sockaddr_in6));
|
case AF_INET6:
|
||||||
break;
|
memcpy(this,sa,sizeof(struct sockaddr_in6));
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
|
@ -491,7 +491,7 @@ ZT_ResultCode Node::circuitTestBegin(ZT_CircuitTest *test,void (*reportCallback)
|
||||||
for(unsigned int a=0;a<test->hops[0].breadth;++a) {
|
for(unsigned int a=0;a<test->hops[0].breadth;++a) {
|
||||||
outp.newInitializationVector();
|
outp.newInitializationVector();
|
||||||
outp.setDestination(Address(test->hops[0].addresses[a]));
|
outp.setDestination(Address(test->hops[0].addresses[a]));
|
||||||
RR->sw->send(outp,true,test->credentialNetworkId);
|
RR->sw->send(outp,true,0);
|
||||||
}
|
}
|
||||||
} catch ( ... ) {
|
} catch ( ... ) {
|
||||||
return ZT_RESULT_FATAL_ERROR_INTERNAL; // probably indicates FIFO too big for packet
|
return ZT_RESULT_FATAL_ERROR_INTERNAL; // probably indicates FIFO too big for packet
|
||||||
|
|
Loading…
Add table
Reference in a new issue