Add IPv6 to C# ZeroTier.Sockets, Add C# selftest, Misc C API improvements

This commit is contained in:
Joseph Henry
2021-03-26 16:33:22 -07:00
parent 9cd5fdee7b
commit 6638f20003
10 changed files with 1262 additions and 818 deletions

View File

@@ -35,6 +35,8 @@ namespace ZeroTier.Core
static ulong _nodeId = 0x0;
static bool _isOnline = false;
static bool _joinedAtLeastOneNetwork = false;
static bool _has_ipv4_routes = false;
static bool _has_ipv6_routes = false;
static bool _hasBeenFreed = false;
string _configFilePath;
ushort _servicePort;
@@ -94,12 +96,22 @@ namespace ZeroTier.Core
newEvent = new ZeroTier.Core.Event(msg.eventCode,"EVENT_NETWORK_ACCESS_DENIED");
}
if (msg.eventCode == Constants.EVENT_NETWORK_READY_IP4) {
_joinedAtLeastOneNetwork = true;
zts_network_details unmanagedDetails =
(zts_network_details)Marshal.PtrToStructure(msg.network, typeof(zts_network_details));
newEvent = new ZeroTier.Core.Event(msg.eventCode,"EVENT_NETWORK_READY_IP4");
newEvent.networkDetails = new NetworkDetails();
newEvent.networkDetails.networkId = unmanagedDetails.nwid;
_joinedAtLeastOneNetwork = true;
_has_ipv4_routes = true;
}
if (msg.eventCode == Constants.EVENT_NETWORK_READY_IP6) {
_joinedAtLeastOneNetwork = true;
zts_network_details unmanagedDetails =
(zts_network_details)Marshal.PtrToStructure(msg.network, typeof(zts_network_details));
newEvent = new ZeroTier.Core.Event(msg.eventCode,"EVENT_NETWORK_READY_IP6");
newEvent.networkDetails = new NetworkDetails();
newEvent.networkDetails.networkId = unmanagedDetails.nwid;
_joinedAtLeastOneNetwork = true;
_has_ipv6_routes = true;
}
if (msg.eventCode == Constants.EVENT_NETWORK_DOWN) {
newEvent = new ZeroTier.Core.Event(msg.eventCode,"EVENT_NETWORK_DOWN");
@@ -261,7 +273,7 @@ namespace ZeroTier.Core
_nodeId = 0x0;
return zts_restart();
}
/// <summary>
/// Requests to join a ZeroTier network. Remember to authorize your node/device.
/// </summary>
@@ -300,6 +312,17 @@ namespace ZeroTier.Core
return _joinedAtLeastOneNetwork;
}
public bool HasIPv4Routes
{
get { return _has_ipv4_routes; }
}
public bool HasIPv6Routes
{
get { return _has_ipv6_routes; }
}
public ulong NodeId
{
get {