Circuit tests basically work but need some tweaks, and fix some issues found with valgrind.

This commit is contained in:
Adam Ierymenko 2015-10-09 14:51:38 -07:00
parent 97dee9de36
commit a95fa379cc
6 changed files with 59 additions and 34 deletions

View file

@ -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);

View file

@ -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;

View file

@ -0,0 +1,13 @@
{
"hops": [
[ "4cbc810d4c" ],
[ "868cd1664f" ],
[ "4cbc810d4c" ],
[ "868cd1664f" ],
[ "4cbc810d4c" ],
[ "868cd1664f" ],
[ "4cbc810d4c" ],
[ "868cd1664f" ]
],
"reportAtEveryHop": true
}

View file

@ -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

View file

@ -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;
} }

View file

@ -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