summaryrefslogtreecommitdiff
path: root/node/NetworkConfig.hpp
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2016-05-16 18:37:37 -0700
committerAdam Ierymenko <adam.ierymenko@gmail.com>2016-05-16 18:37:37 -0700
commit93b673043c48ec65b8c2133cd1f0b0256719613b (patch)
tree8c54e640fc258f4905d7fad316437ff290a9fa8f /node/NetworkConfig.hpp
parentde1b74598855e5251a2a236bb6b61825ecaf8a39 (diff)
downloadinfinitytier-93b673043c48ec65b8c2133cd1f0b0256719613b.tar.gz
infinitytier-93b673043c48ec65b8c2133cd1f0b0256719613b.zip
Fix new binary meta-data deserialization and add some debug code (will disable later).
Diffstat (limited to 'node/NetworkConfig.hpp')
-rw-r--r--node/NetworkConfig.hpp38
1 files changed, 37 insertions, 1 deletions
diff --git a/node/NetworkConfig.hpp b/node/NetworkConfig.hpp
index 1bbf6506..35382a3d 100644
--- a/node/NetworkConfig.hpp
+++ b/node/NetworkConfig.hpp
@@ -353,6 +353,8 @@ public:
template<unsigned int C>
inline void serialize(Buffer<C> &b) const
{
+ printf("!!! sending\n");
+
b.append((uint16_t)1); // version
b.append((uint64_t)networkId);
@@ -471,6 +473,8 @@ public:
this->com.serialize(b);
b.append((uint16_t)0); // extended bytes, currently 0 since unused
+
+ dump();
}
template<unsigned int C>
@@ -478,6 +482,8 @@ public:
{
memset(this,0,sizeof(NetworkConfig));
+ printf("!!! deserializing\n");
+
unsigned int p = startAt;
if (b.template at<uint16_t>(p) != 1)
@@ -493,7 +499,7 @@ public:
type = (ZT_VirtualNetworkType)b[p++];
unsigned int nl = (unsigned int)b[p++];
- memcpy(this->name,b.field(p,nl),std::max(nl,(unsigned int)ZT_MAX_NETWORK_SHORT_NAME_LENGTH));
+ memcpy(this->name,b.field(p,nl),std::min(nl,(unsigned int)ZT_MAX_NETWORK_SHORT_NAME_LENGTH));
p += nl;
// _name will always be null terminated since field size is ZT_MAX_NETWORK_SHORT_NAME_LENGTH + 1
@@ -602,6 +608,7 @@ public:
p += b.template at<uint16_t>(p) + 2;
+ dump();
return (p - startAt);
}
@@ -609,6 +616,35 @@ public:
void fromDictionary(const char *ds,unsigned int dslen);
#endif
+ inline void dump() const
+ {
+ printf("networkId==%.16llx\n",networkId);
+ printf("timestamp==%llu\n",timestamp);
+ 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 struct sockaddr_storage *>(&(routes[i].target))->toString().c_str());
+ printf(" routes[i].via==%s\n",reinterpret_cast<const struct sockaddr_storage *>(&(routes[i].via))->toString().c_str());
+ }
+ printf("staticIpCount==%u\n",staticIpCount);
+ for(unsigned int i=0;i<staticIpCount;++i)
+ printf(" staticIps[i]==%s\n",staticIps[i].toString().c_str());
+ printf("pinnedCount==%u\n",pinnedCount);
+ for(unsigned int i=0;i<pinnedCount;++i) {
+ printf(" pinned[i].zt==%s\n",pinned[i].zt->toString().c_str());
+ printf(" pinned[i].phy==%s\n",pinned[i].zt->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
*/