Browse Source

Merge branch 'netcon' of http://10.6.6.2/zerotier/zerotierone into netcon

Joseph Henry 10 years ago
parent
commit
cb277f52e8

+ 9 - 2
controller/SqliteNetworkController.cpp

@@ -203,6 +203,7 @@ SqliteNetworkController::SqliteNetworkController(const char *dbPath) :
 			||(sqlite3_prepare_v2(_db,"UPDATE Member SET authorized = ?,memberRevision = (SELECT memberRevisionCounter FROM Network WHERE id = ?) WHERE rowid = ?",-1,&_sUpdateMemberAuthorized,(const char **)0) != SQLITE_OK)
 			||(sqlite3_prepare_v2(_db,"UPDATE Member SET authorized = ?,memberRevision = (SELECT memberRevisionCounter FROM Network WHERE id = ?) WHERE rowid = ?",-1,&_sUpdateMemberAuthorized,(const char **)0) != SQLITE_OK)
 			||(sqlite3_prepare_v2(_db,"UPDATE Member SET activeBridge = ?,memberRevision = (SELECT memberRevisionCounter FROM Network WHERE id = ?) WHERE rowid = ?",-1,&_sUpdateMemberActiveBridge,(const char **)0) != SQLITE_OK)
 			||(sqlite3_prepare_v2(_db,"UPDATE Member SET activeBridge = ?,memberRevision = (SELECT memberRevisionCounter FROM Network WHERE id = ?) WHERE rowid = ?",-1,&_sUpdateMemberActiveBridge,(const char **)0) != SQLITE_OK)
 			||(sqlite3_prepare_v2(_db,"DELETE FROM Member WHERE networkId = ? AND nodeId = ?",-1,&_sDeleteMember,(const char **)0) != SQLITE_OK)
 			||(sqlite3_prepare_v2(_db,"DELETE FROM Member WHERE networkId = ? AND nodeId = ?",-1,&_sDeleteMember,(const char **)0) != SQLITE_OK)
+			||(sqlite3_prepare_v2(_db,"DELETE FROM Member WHERE networkId = ?",-1,&_sDeleteAllNetworkMembers,(const char **)0) != SQLITE_OK)
 
 
 			/* Gateway */
 			/* Gateway */
 			||(sqlite3_prepare_v2(_db,"SELECT \"ip\",ipVersion,metric FROM Gateway WHERE networkId = ? ORDER BY metric ASC",-1,&_sGetGateways,(const char **)0) != SQLITE_OK)
 			||(sqlite3_prepare_v2(_db,"SELECT \"ip\",ipVersion,metric FROM Gateway WHERE networkId = ? ORDER BY metric ASC",-1,&_sGetGateways,(const char **)0) != SQLITE_OK)
@@ -287,6 +288,7 @@ SqliteNetworkController::~SqliteNetworkController()
 		sqlite3_finalize(_sUpdateMemberAuthorized);
 		sqlite3_finalize(_sUpdateMemberAuthorized);
 		sqlite3_finalize(_sUpdateMemberActiveBridge);
 		sqlite3_finalize(_sUpdateMemberActiveBridge);
 		sqlite3_finalize(_sDeleteMember);
 		sqlite3_finalize(_sDeleteMember);
+		sqlite3_finalize(_sDeleteAllNetworkMembers);
 		sqlite3_finalize(_sDeleteNetwork);
 		sqlite3_finalize(_sDeleteNetwork);
 		sqlite3_finalize(_sGetGateways);
 		sqlite3_finalize(_sGetGateways);
 		sqlite3_finalize(_sDeleteGateways);
 		sqlite3_finalize(_sDeleteGateways);
@@ -932,7 +934,12 @@ unsigned int SqliteNetworkController::handleControlPlaneHttpDELETE(
 
 
 				sqlite3_reset(_sDeleteNetwork);
 				sqlite3_reset(_sDeleteNetwork);
 				sqlite3_bind_text(_sDeleteNetwork,1,nwids,16,SQLITE_STATIC);
 				sqlite3_bind_text(_sDeleteNetwork,1,nwids,16,SQLITE_STATIC);
-				return ((sqlite3_step(_sDeleteNetwork) == SQLITE_DONE) ? 200 : 500);
+				if (sqlite3_step(_sDeleteNetwork) == SQLITE_DONE) {
+					sqlite3_reset(_sDeleteAllNetworkMembers);
+					sqlite3_bind_text(_sDeleteAllNetworkMembers,1,nwids,16,SQLITE_STATIC);
+					sqlite3_step(_sDeleteAllNetworkMembers);
+					return 200;
+				} else return 500;
 
 
 			}
 			}
 		} // else 404
 		} // else 404
@@ -1019,7 +1026,7 @@ unsigned int SqliteNetworkController::_doCPGet(
 										testFields.push_back('"');
 										testFields.push_back('"');
 									}
 									}
 									testFields.append("\n\t\t}\n");
 									testFields.append("\n\t\t}\n");
-									testFields.append("\t}\n");
+									testFields.append("\t},\n");
 								}
 								}
 							}
 							}
 
 

+ 1 - 0
controller/SqliteNetworkController.hpp

@@ -143,6 +143,7 @@ private:
 	sqlite3_stmt *_sUpdateMemberAuthorized;
 	sqlite3_stmt *_sUpdateMemberAuthorized;
 	sqlite3_stmt *_sUpdateMemberActiveBridge;
 	sqlite3_stmt *_sUpdateMemberActiveBridge;
 	sqlite3_stmt *_sDeleteMember;
 	sqlite3_stmt *_sDeleteMember;
+	sqlite3_stmt *_sDeleteAllNetworkMembers;
 	sqlite3_stmt *_sDeleteNetwork;
 	sqlite3_stmt *_sDeleteNetwork;
 	sqlite3_stmt *_sGetGateways;
 	sqlite3_stmt *_sGetGateways;
 	sqlite3_stmt *_sDeleteGateways;
 	sqlite3_stmt *_sDeleteGateways;

+ 15 - 3
include/ZeroTierOne.h

@@ -760,7 +760,11 @@ enum ZT1_ResultCode ZT1_Node_new(
 	ZT1_VirtualNetworkFrameFunction virtualNetworkFrameFunction,
 	ZT1_VirtualNetworkFrameFunction virtualNetworkFrameFunction,
 	ZT1_VirtualNetworkConfigFunction virtualNetworkConfigFunction,
 	ZT1_VirtualNetworkConfigFunction virtualNetworkConfigFunction,
 	ZT1_EventCallback eventCallback,
 	ZT1_EventCallback eventCallback,
-	const char *overrideRootTopology = (const char *)0);
+	const char *overrideRootTopology
+#ifdef __cplusplus
+    = (const char *)0               
+#endif
+    );
 
 
 /**
 /**
  * Delete a node and free all resources it consumes
  * Delete a node and free all resources it consumes
@@ -881,7 +885,11 @@ enum ZT1_ResultCode ZT1_Node_leave(ZT1_Node *node,uint64_t nwid);
  * @param multicastAdi Multicast ADI (least significant 32 bits only, default: 0)
  * @param multicastAdi Multicast ADI (least significant 32 bits only, default: 0)
  * @return OK (0) or error code if a fatal error condition has occurred
  * @return OK (0) or error code if a fatal error condition has occurred
  */
  */
-enum ZT1_ResultCode ZT1_Node_multicastSubscribe(ZT1_Node *node,uint64_t nwid,uint64_t multicastGroup,unsigned long multicastAdi = 0);
+enum ZT1_ResultCode ZT1_Node_multicastSubscribe(ZT1_Node *node,uint64_t nwid,uint64_t multicastGroup,unsigned long multicastAdi
+#ifdef __cplusplus
+    = 0
+#endif
+    );
 
 
 /**
 /**
  * Unsubscribe from an Ethernet multicast group (or all groups)
  * Unsubscribe from an Ethernet multicast group (or all groups)
@@ -897,7 +905,11 @@ enum ZT1_ResultCode ZT1_Node_multicastSubscribe(ZT1_Node *node,uint64_t nwid,uin
  * @param multicastAdi Multicast ADI (least significant 32 bits only, default: 0)
  * @param multicastAdi Multicast ADI (least significant 32 bits only, default: 0)
  * @return OK (0) or error code if a fatal error condition has occurred
  * @return OK (0) or error code if a fatal error condition has occurred
  */
  */
-enum ZT1_ResultCode ZT1_Node_multicastUnsubscribe(ZT1_Node *node,uint64_t nwid,uint64_t multicastGroup,unsigned long multicastAdi = 0);
+enum ZT1_ResultCode ZT1_Node_multicastUnsubscribe(ZT1_Node *node,uint64_t nwid,uint64_t multicastGroup,unsigned long multicastAdi
+#ifdef __cplusplus
+    = 0
+#endif
+    );
 
 
 /**
 /**
  * Get this node's 40-bit ZeroTier address
  * Get this node's 40-bit ZeroTier address