diff options
| author | Grant Limberg <grant.limberg@zerotier.com> | 2017-07-17 16:15:13 -0700 |
|---|---|---|
| committer | Grant Limberg <grant.limberg@zerotier.com> | 2017-07-17 16:16:25 -0700 |
| commit | bcf697cc2bd0f49b3b6c5acd120dfc28537bd97c (patch) | |
| tree | 5b6cae06b49dcbe1c4e3fdaa0b1a8b7e9e4a4c81 /java/jni/com_zerotierone_sdk_Node.cpp | |
| parent | b9e1d53d7ac4e8d19520e3063b194ee01f550198 (diff) | |
| download | infinitytier-bcf697cc2bd0f49b3b6c5acd120dfc28537bd97c.tar.gz infinitytier-bcf697cc2bd0f49b3b6c5acd120dfc28537bd97c.zip | |
Wire up PortMapper in Android
Enables UPnP port mapping for Android client on networks with UPnP routers
Diffstat (limited to 'java/jni/com_zerotierone_sdk_Node.cpp')
| -rw-r--r-- | java/jni/com_zerotierone_sdk_Node.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/java/jni/com_zerotierone_sdk_Node.cpp b/java/jni/com_zerotierone_sdk_Node.cpp index 91561ff9..01ca6d7f 100644 --- a/java/jni/com_zerotierone_sdk_Node.cpp +++ b/java/jni/com_zerotierone_sdk_Node.cpp @@ -32,6 +32,8 @@ #include <ZeroTierOne.h> #include "Mutex.hpp" +#include "PortMapper.hpp" + #include <map> #include <string> #include <assert.h> @@ -58,6 +60,7 @@ namespace { , configListener(NULL) , pathChecker(NULL) , callbacks(NULL) + , portMapper(NULL) { callbacks = (ZT_Node_Callbacks*)malloc(sizeof(ZT_Node_Callbacks)); memset(callbacks, 0, sizeof(ZT_Node_Callbacks)); @@ -78,6 +81,9 @@ namespace { free(callbacks); callbacks = NULL; + + delete portMapper; + portMapper = NULL; } uint64_t id; @@ -95,6 +101,8 @@ namespace { jobject pathChecker; ZT_Node_Callbacks *callbacks; + + ZeroTier::PortMapper *portMapper; }; @@ -833,11 +841,17 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_node_1init( return resultObject; } + uint64_t nodeId = ZT_Node_address(node); + if (nodeId != 0) { + char uniqueName[64]; + snprintf(uniqueName, sizeof(uniqueName), "ZeroTier Android/%.10llx@%u", (unsigned long long)nodeId, 9993); + ref->portMapper = new ZeroTier::PortMapper(9993, uniqueName); + } + ZeroTier::Mutex::Lock lock(nodeMapMutex); ref->node = node; nodeMap.insert(std::make_pair(ref->id, ref)); - return resultObject; } |
