Browse Source

Carry virtual network routes through to API.

Adam Ierymenko 9 years ago
parent
commit
9161eebc68
2 changed files with 28 additions and 2 deletions
  1. 18 2
      include/ZeroTierOne.h
  2. 10 0
      node/Network.cpp

+ 18 - 2
include/ZeroTierOne.h

@@ -362,7 +362,7 @@ enum ZT_VirtualNetworkStatus
 	ZT_NETWORK_STATUS_PORT_ERROR = 4,
 	ZT_NETWORK_STATUS_PORT_ERROR = 4,
 
 
 	/**
 	/**
-	 * ZeroTier One version too old
+	 * ZeroTier core version too old
 	 */
 	 */
 	ZT_NETWORK_STATUS_CLIENT_TOO_OLD = 5
 	ZT_NETWORK_STATUS_CLIENT_TOO_OLD = 5
 };
 };
@@ -727,7 +727,13 @@ enum ZT_Architecture {
 	ZT_ARCHITECTURE_MIPS32 = 5,
 	ZT_ARCHITECTURE_MIPS32 = 5,
 	ZT_ARCHITECTURE_MIPS64 = 6,
 	ZT_ARCHITECTURE_MIPS64 = 6,
 	ZT_ARCHITECTURE_POWER32 = 7,
 	ZT_ARCHITECTURE_POWER32 = 7,
-	ZT_ARCHITECTURE_POWER64 = 8
+	ZT_ARCHITECTURE_POWER64 = 8,
+	ZT_ARCHITECTURE_OPENRISC32 = 9,
+	ZT_ARCHITECTURE_OPENRISC64 = 10,
+	ZT_ARCHITECTURE_SPARC32 = 11,
+	ZT_ARCHITECTURE_SPARC64 = 12,
+	ZT_ARCHITECTURE_DOTNET_CLR = 13,
+	ZT_ARCHITECTURE_JAVA_JVM = 14
 };
 };
 
 
 /**
 /**
@@ -830,6 +836,16 @@ typedef struct
 	 * virtual network's configuration master.
 	 * virtual network's configuration master.
 	 */
 	 */
 	struct sockaddr_storage assignedAddresses[ZT_MAX_ZT_ASSIGNED_ADDRESSES];
 	struct sockaddr_storage assignedAddresses[ZT_MAX_ZT_ASSIGNED_ADDRESSES];
+
+	/**
+	 * Number of ZT-pushed routes
+	 */
+	unsigned int routeCount;
+
+	/**
+	 * Routes (excluding those implied by assigned addresses and their masks)
+	 */
+	ZT_VirtualNetworkRoute routes[ZT_MAX_NETWORK_ROUTES];
 } ZT_VirtualNetworkConfig;
 } ZT_VirtualNetworkConfig;
 
 
 /**
 /**

+ 10 - 0
node/Network.cpp

@@ -406,6 +406,16 @@ void Network::_externalConfig(ZT_VirtualNetworkConfig *ec) const
 			memset(&(ec->assignedAddresses[i]),0,sizeof(struct sockaddr_storage));
 			memset(&(ec->assignedAddresses[i]),0,sizeof(struct sockaddr_storage));
 		}
 		}
 	}
 	}
+
+	ec->routeCount = 0;
+	for(unsigned int i=0;i<ZT_MAX_NETWORK_ROUTES;++i) {
+		if (i < _config.routeCount) {
+			memcpy(&(ec->routes[i]),&(_config.routes[i]),sizeof(ZT_VirtualNetworkRoute));
+			++ec->routeCount;
+		} else {
+			memset(&(ec->routes[i]),0,sizeof(ZT_VirtualNetworkRoute));
+		}
+	}
 }
 }
 
 
 bool Network::_isAllowed(const SharedPtr<Peer> &peer) const
 bool Network::_isAllowed(const SharedPtr<Peer> &peer) const