patch for getting tap addresses from _nets
This commit is contained in:
@@ -185,7 +185,7 @@ class ViewController: UIViewController {
|
|||||||
sleep(1)
|
sleep(1)
|
||||||
dispatch_async(dispatch_get_main_queue()) {
|
dispatch_async(dispatch_get_main_queue()) {
|
||||||
var str_buf = [Int8](count: 16, repeatedValue: 0)
|
var str_buf = [Int8](count: 16, repeatedValue: 0)
|
||||||
self.zt.get_ipv6_address(self.txtNWID.text!, &str_buf)
|
self.zt.get_ipv4_address(self.txtNWID.text!, &str_buf)
|
||||||
self.lblAddress.text = String.fromCString(str_buf)
|
self.lblAddress.text = String.fromCString(str_buf)
|
||||||
print("addr = ", String.fromCString(str_buf))
|
print("addr = ", String.fromCString(str_buf))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ void zts_init_rpc(const char * path, const char * nwid);
|
|||||||
int zts_start_proxy_server(const char *homepath, const char * nwid, struct sockaddr_storage * addr) {
|
int zts_start_proxy_server(const char *homepath, const char * nwid, struct sockaddr_storage * addr) {
|
||||||
DEBUG_INFO();
|
DEBUG_INFO();
|
||||||
uint64_t nwid_int = strtoull(nwid, NULL, 16);
|
uint64_t nwid_int = strtoull(nwid, NULL, 16);
|
||||||
ZeroTier::NetconEthernetTap * tap = zt1Service->getTaps()[nwid_int];
|
ZeroTier::NetconEthernetTap * tap = zt1Service->getTap(nwid_int);
|
||||||
if(tap) {
|
if(tap) {
|
||||||
if(tap->startProxyServer(homepath, nwid_int, addr) < 0) {
|
if(tap->startProxyServer(homepath, nwid_int, addr) < 0) {
|
||||||
DEBUG_ERROR("zts_start_proxy_server(%s): Problem while starting server.", nwid);
|
DEBUG_ERROR("zts_start_proxy_server(%s): Problem while starting server.", nwid);
|
||||||
@@ -95,7 +95,7 @@ int zts_start_proxy_server(const char *homepath, const char * nwid, struct socka
|
|||||||
int zts_stop_proxy_server(const char *nwid) {
|
int zts_stop_proxy_server(const char *nwid) {
|
||||||
DEBUG_INFO();
|
DEBUG_INFO();
|
||||||
uint64_t nwid_int = strtoull(nwid, NULL, 16);
|
uint64_t nwid_int = strtoull(nwid, NULL, 16);
|
||||||
ZeroTier::NetconEthernetTap * tap = zt1Service->getTaps()[nwid_int];
|
ZeroTier::NetconEthernetTap * tap = zt1Service->getTap(nwid_int);
|
||||||
if(tap) {
|
if(tap) {
|
||||||
if(tap->stopProxyServer() < 0) {
|
if(tap->stopProxyServer() < 0) {
|
||||||
DEBUG_ERROR("zts_stop_proxy_server(%s): Problem while stopping server.", nwid);
|
DEBUG_ERROR("zts_stop_proxy_server(%s): Problem while stopping server.", nwid);
|
||||||
@@ -113,7 +113,7 @@ bool zts_proxy_is_running(const char *nwid)
|
|||||||
//
|
//
|
||||||
int zts_get_proxy_server_address(const char * nwid, struct sockaddr_storage * addr) {
|
int zts_get_proxy_server_address(const char * nwid, struct sockaddr_storage * addr) {
|
||||||
uint64_t nwid_int = strtoull(nwid, NULL, 16);
|
uint64_t nwid_int = strtoull(nwid, NULL, 16);
|
||||||
ZeroTier::NetconEthernetTap * tap = zt1Service->getTaps()[nwid_int];
|
ZeroTier::NetconEthernetTap * tap = zt1Service->getTap(nwid_int);
|
||||||
if(tap) {
|
if(tap) {
|
||||||
tap->getProxyServerAddress(addr);
|
tap->getProxyServerAddress(addr);
|
||||||
return 0;
|
return 0;
|
||||||
@@ -163,7 +163,7 @@ void zts_stop_service() {
|
|||||||
void zts_get_ipv4_address(const char *nwid, char *addrstr)
|
void zts_get_ipv4_address(const char *nwid, char *addrstr)
|
||||||
{
|
{
|
||||||
uint64_t nwid_int = strtoull(nwid, NULL, 16);
|
uint64_t nwid_int = strtoull(nwid, NULL, 16);
|
||||||
ZeroTier::NetconEthernetTap * tap = zt1Service->getTaps()[nwid_int];
|
ZeroTier::NetconEthernetTap *tap = zt1Service->getTap(nwid_int);
|
||||||
if(tap && tap->_ips.size()){
|
if(tap && tap->_ips.size()){
|
||||||
for(int i=0; i<tap->_ips.size(); i++) {
|
for(int i=0; i<tap->_ips.size(); i++) {
|
||||||
if(tap->_ips[i].isV4()) {
|
if(tap->_ips[i].isV4()) {
|
||||||
@@ -182,13 +182,13 @@ void zts_get_ipv4_address(const char *nwid, char *addrstr)
|
|||||||
void zts_get_ipv6_address(const char *nwid, char *addrstr)
|
void zts_get_ipv6_address(const char *nwid, char *addrstr)
|
||||||
{
|
{
|
||||||
uint64_t nwid_int = strtoull(nwid, NULL, 16);
|
uint64_t nwid_int = strtoull(nwid, NULL, 16);
|
||||||
ZeroTier::NetconEthernetTap * tap = zt1Service->getTaps()[nwid_int];
|
ZeroTier::NetconEthernetTap *tap = zt1Service->getTap(nwid_int);
|
||||||
if(tap && tap->_ips.size()){
|
if(tap && tap->_ips.size()){
|
||||||
for(int i=0; i<tap->_ips.size(); i++){
|
for(int i=0; i<tap->_ips.size(); i++) {
|
||||||
if(tap->_ips[i].isV6()) {
|
if(tap->_ips[i].isV6()) {
|
||||||
std::string addr = tap->_ips[i].toString();
|
std::string addr = tap->_ips[i].toString();
|
||||||
// DEBUG_EXTRA("addr=%s, addrlen=%d", addr.c_str(), addr.length());
|
// DEBUG_EXTRA("addr=%s, addrlen=%d", addr.c_str(), addr.length());
|
||||||
memcpy(addrstr, addr.c_str(), addr.length()); // first address found that matches protocol version 6
|
memcpy(addrstr, addr.c_str(), addr.length()); // first address found that matches protocol version 4
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -539,12 +539,12 @@ public:
|
|||||||
settings.allowGlobal = false;
|
settings.allowGlobal = false;
|
||||||
settings.allowDefault = false;
|
settings.allowDefault = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
EthernetTap *tap;
|
|
||||||
ZT_VirtualNetworkConfig config; // memcpy() of raw config from core
|
ZT_VirtualNetworkConfig config; // memcpy() of raw config from core
|
||||||
std::vector<InetAddress> managedIps;
|
std::vector<InetAddress> managedIps;
|
||||||
std::list<ManagedRoute> managedRoutes;
|
std::list<ManagedRoute> managedRoutes;
|
||||||
NetworkSettings settings;
|
NetworkSettings settings;
|
||||||
|
public:
|
||||||
|
EthernetTap *tap;
|
||||||
};
|
};
|
||||||
std::map<uint64_t,NetworkState> _nets;
|
std::map<uint64_t,NetworkState> _nets;
|
||||||
Mutex _nets_m;
|
Mutex _nets_m;
|
||||||
@@ -1052,11 +1052,13 @@ public:
|
|||||||
return _homePath;
|
return _homePath;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual std::map< uint64_t,EthernetTap * > getTaps()
|
virtual EthernetTap * getTap(uint64_t nwid)
|
||||||
{
|
{
|
||||||
std::map< uint64_t,EthernetTap * > _taps;
|
Mutex::Lock _l(_nets_m);
|
||||||
// FIXME: Rewrite for _nets
|
std::map<uint64_t,NetworkState>::const_iterator n(_nets.find(nwid));
|
||||||
return _taps;
|
if (n == _nets.end())
|
||||||
|
return NULL;
|
||||||
|
return n->second.tap;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual Node * getNode()
|
virtual Node * getNode()
|
||||||
|
|||||||
@@ -181,7 +181,7 @@ public:
|
|||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
virtual std::map< uint64_t,EthernetTap * > getTaps() = 0;
|
virtual EthernetTap * getTap(uint64_t nwid) = 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user