From 8b05d4b8576c0fc7ec2e8b58ae50ee5d18ea08ab Mon Sep 17 00:00:00 2001 From: Joseph Henry Date: Wed, 15 Jun 2016 10:18:16 -0700 Subject: [PATCH] removed old unity3d project --- integrations/unity3d/Assets/CameraControl.js | 194 ----- integrations/unity3d/Assets/Demo.cs | 89 -- integrations/unity3d/Assets/MainScene.unity | Bin 67160 -> 0 bytes integrations/unity3d/Assets/MyZeroTier.cs | 8 - integrations/unity3d/Assets/WorldMain.cs | 1 - integrations/unity3d/Assets/ZT.mat | Bin 4888 -> 0 bytes integrations/unity3d/Assets/ZeroTier.cs | 282 ------ integrations/unity3d/Assets/ZeroTierUtils.cs | 55 -- integrations/unity3d/Assets/smcs.rsp | 1 - integrations/unity3d/Assets/zerotier-icon.png | Bin 26898 -> 0 bytes .../ZeroTierUnity.xcodeproj/project.pbxproj | 817 ------------------ .../contents.xcworkspacedata | 7 - .../UserInterfaceState.xcuserstate | Bin 45910 -> 0 bytes .../xcschemes/ZeroTierUnity.xcscheme | 80 -- .../xcschemes/xcschememanagement.plist | 22 - .../ZeroTierUnity/ZeroTierUnity/Info.plist | 28 - integrations/unity3d/unity3d_zt_sdk.md | 84 -- 17 files changed, 1668 deletions(-) delete mode 100644 integrations/unity3d/Assets/CameraControl.js delete mode 100644 integrations/unity3d/Assets/Demo.cs delete mode 100644 integrations/unity3d/Assets/MainScene.unity delete mode 100644 integrations/unity3d/Assets/MyZeroTier.cs delete mode 100644 integrations/unity3d/Assets/WorldMain.cs delete mode 100644 integrations/unity3d/Assets/ZT.mat delete mode 100644 integrations/unity3d/Assets/ZeroTier.cs delete mode 100644 integrations/unity3d/Assets/ZeroTierUtils.cs delete mode 100644 integrations/unity3d/Assets/smcs.rsp delete mode 100644 integrations/unity3d/Assets/zerotier-icon.png delete mode 100644 integrations/unity3d/osx_bundle/ZeroTierUnity/ZeroTierUnity.xcodeproj/project.pbxproj delete mode 100644 integrations/unity3d/osx_bundle/ZeroTierUnity/ZeroTierUnity.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 integrations/unity3d/osx_bundle/ZeroTierUnity/ZeroTierUnity.xcodeproj/project.xcworkspace/xcuserdata/Joseph.xcuserdatad/UserInterfaceState.xcuserstate delete mode 100644 integrations/unity3d/osx_bundle/ZeroTierUnity/ZeroTierUnity.xcodeproj/xcuserdata/Joseph.xcuserdatad/xcschemes/ZeroTierUnity.xcscheme delete mode 100644 integrations/unity3d/osx_bundle/ZeroTierUnity/ZeroTierUnity.xcodeproj/xcuserdata/Joseph.xcuserdatad/xcschemes/xcschememanagement.plist delete mode 100644 integrations/unity3d/osx_bundle/ZeroTierUnity/ZeroTierUnity/Info.plist delete mode 100644 integrations/unity3d/unity3d_zt_sdk.md diff --git a/integrations/unity3d/Assets/CameraControl.js b/integrations/unity3d/Assets/CameraControl.js deleted file mode 100644 index 5585fbf..0000000 --- a/integrations/unity3d/Assets/CameraControl.js +++ /dev/null @@ -1,194 +0,0 @@ - -var zoomSpeed : float = 3.0f; -var moveSpeed : float = 3.0f; -var rotateSpeed : float = 6.0f; - -var optionalMaterialForSelection : Material; - -// Some internal placeholders -private var orbitVector : GameObject; -private var materialForSelection : Material; -private var selectedObjects = new ArrayList(); -private var selectedObjectsMaterial = new ArrayList(); - -function Start() { - // Create a capsule (which will be the lookAt target and global orbit vector) - orbitVector = GameObject.CreatePrimitive(PrimitiveType.Capsule); - orbitVector.transform.position = Vector3.zero; - // Snap the camera to align with the grid in set starting position (otherwise everything gets a bit wonky) - transform.position = Vector3(4, 4, 4); - // Point the camera towards the capsule - transform.LookAt(orbitVector.transform.position, Vector3.up); - // Hide the capsule (disable the mesh renderer) - orbitVector.GetComponent.().enabled = false; - // Create material to apply for selections (or use material supplied by user) - if (optionalMaterialForSelection) { - materialForSelection = optionalMaterialForSelection; - } else { - materialForSelection = new Material(Shader.Find("Diffuse")); - materialForSelection.color = Color.green; - } -} - -function Update(){ - -orbitVector.transform.position = Vector3.zero; - - if (Input.GetAxis("Mouse ScrollWheel") < 0) { - var currentZoomSpeedin = -10; - transform.Translate(Vector3.forward * ( currentZoomSpeedin)); - } - if (Input.GetAxis("Mouse ScrollWheel") > 0) { - var currentZoomSpeedout = 10; - transform.Translate(Vector3.forward * ( currentZoomSpeedout)); - } -} - -// Call all of our functionality in LateUpdate() to avoid weird behaviour (as seen in Update()) -function LateUpdate() { - // Get mouse vectors - var x = Input.GetAxis("Mouse X"); - var y = Input.GetAxis("Mouse Y"); - - // ALT is pressed, start navigation - //if (Input.GetKey(KeyCode.RightAlt) || Input.GetKey(KeyCode.LeftAlt)) { - - // Distance between camera and orbitVector. We'll need this in a few places - var distanceToOrbit = Vector3.Distance(transform.position, orbitVector.transform.position); - - //RMB - ZOOM - if (Input.GetMouseButton(2)) { - - // Refine the rotateSpeed based on distance to orbitVector - var currentZoomSpeed = Mathf.Clamp(zoomSpeed * (distanceToOrbit / 50), 0.1f, 2.0f); - - // Move the camera in/out - transform.Translate(Vector3.forward * (x * currentZoomSpeed)); - - // If about to collide with the orbitVector, repulse the orbitVector slightly to keep it in front of us - if (Vector3.Distance(transform.position, orbitVector.transform.position) < 3) { - orbitVector.transform.Translate(Vector3.forward, transform); - } - - - //LMB - PIVOT - } else if (Input.GetMouseButton(1)) { - - // Refine the rotateSpeed based on distance to orbitVector - var currentRotateSpeed = Mathf.Clamp(rotateSpeed * (distanceToOrbit / 50), 1.0f, rotateSpeed); - - // Temporarily parent the camera to orbitVector and rotate orbitVector as desired - transform.parent = orbitVector.transform; - orbitVector.transform.Rotate(Vector3.right * (y * currentRotateSpeed)); - orbitVector.transform.Rotate(Vector3.up * (x * currentRotateSpeed), Space.World); - transform.parent = null; - - - //MMB - PAN - } else if (Input.GetMouseButton(0)) { - - // Calculate move speed - var translateX = Vector3.right * (x * moveSpeed) * -1; - var translateY = Vector3.up * (y * moveSpeed) * -1; - - // Move the camera - transform.Translate(translateX); - transform.Translate(translateY); - - // Move the orbitVector with the same values, along the camera's axes. In effect causing it to behave as if temporarily parented. - orbitVector.transform.Translate(translateX, transform); - orbitVector.transform.Translate(translateY, transform); - } - - - /* - // If we're not currently navigating, grab selection if something is clicked - } else if (Input.GetMouseButtonDown(0)) { - var hitInfo : RaycastHit; - var ray : Ray = camera.ScreenPointToRay(Input.mousePosition); - var allowMultiSelect : boolean = false; - - // See if the user is holding in CTRL or SHIFT. If so, enable multiselection - if(Input.GetKey(KeyCode.RightShift) || Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightControl) || Input.GetKey(KeyCode.LeftControl)) { - allowMultiSelect = true; - } - - // Something was clicked. Fetch. - if (Physics.Raycast(ray, hitInfo, camera.farClipPlane)) { - target = hitInfo.transform; - - // If NOT multiselection, remove all prior selections - if (!allowMultiSelect) { - deselectAll(); - } - - //Toggle between selected and unselected (depending on current state) - if (target.renderer.sharedMaterial != materialForSelection) { - selectedObjects.Add(target.gameObject); - selectedObjectsMaterial.Add(target.gameObject.renderer.sharedMaterial); - target.gameObject.renderer.sharedMaterial = materialForSelection; - - } else { - var arrayLocation : int = selectedObjects.IndexOf(target.gameObject); - if (arrayLocation == -1) {return;}; //this shouldn't happen. Ever. But still. - - target.gameObject.renderer.sharedMaterial = selectedObjectsMaterial[arrayLocation]; - selectedObjects.RemoveAt(arrayLocation); - selectedObjectsMaterial.RemoveAt(arrayLocation); - - } - - // Else deselect all selected objects (ie. click on empty background) - } else { - - // Don't deselect if allowMultiSelect is true - if (!allowMultiSelect) {deselectAll();}; - } - - - - // Fetch input of the F-button (focus) -- this is a very dodgy implementation... - } else if (Input.GetKeyDown("f")) { - var backtrack = Vector3(0, 0, -15); - var selectedObject : GameObject; - - // If dealing with only one selected object - if (selectedObjects.Count == 1) { - selectedObject = selectedObjects[0]; - transform.position = selectedObject.transform.position; - orbitVector.transform.position = selectedObject.transform.position; - transform.Translate(backtrack); - - // Else we need to average out the position vectors (this is the proper dodgy part of the implementation) - } else if (selectedObjects.Count > 1) { - selectedObject = selectedObjects[0]; - var average = selectedObject.transform.position; - - for (var i = 1; i < selectedObjects.Count; i++) { - selectedObject = selectedObjects[i]; - average = (average + selectedObject.transform.position) / 2; - } - - transform.position = average; - orbitVector.transform.position = average; - transform.Translate(backtrack); - } - } - */ -} - - - -// Function to handle the de-selection of all objects in scene -function deselectAll() { - - // Run through the list of selected objects and restore their original materials - for (var currentItem = 0; currentItem < selectedObjects.Count; currentItem++) { - var selectedObject : GameObject = selectedObjects[currentItem]; - selectedObject.GetComponent.().sharedMaterial = selectedObjectsMaterial[currentItem]; - } - - // Clear both arrays - selectedObjects.Clear(); - selectedObjectsMaterial.Clear(); -} \ No newline at end of file diff --git a/integrations/unity3d/Assets/Demo.cs b/integrations/unity3d/Assets/Demo.cs deleted file mode 100644 index fcca4cb..0000000 --- a/integrations/unity3d/Assets/Demo.cs +++ /dev/null @@ -1,89 +0,0 @@ -using UnityEngine; -using System.Collections; -using System.Threading; -using System.Runtime.Serialization.Formatters.Binary; -using System.IO; - -public class Demo : MonoBehaviour -{ - public float speed = 300f; - - private ZeroTierNetworkInterface zt; - string nwid = ""; - - private void zt_sample_network_test_thread() - { - print("test_network"); - - byte error; - // Prepare sample data buffer - /* - byte[] buffer = new byte[1024]; - Stream stream = new MemoryStream(buffer); - BinaryFormatter f = new BinaryFormatter(); - f.Serialize ( stream , "Welcome to the machine! (from Unity3D)" ); - int error; - */ - - // Connect to server - int connfd = zt.Connect (0, "172.22.211.245", 8888, out error); - print(connfd); - - // Send sample data to server - //int bytes_written = zt.Send(connfd,buffer,0, out error); - //print(bytes_written); - - char[] buffer = new char[1024]; - buffer = "hello".ToCharArray(); - //print (buffer); - //Stream stream = new MemoryStream(buffer); - //BinaryFormatter formatter = new BinaryFormatter(); - //formatter.Serialize(stream, "HelloServer"); - //int bufferSize = 1024; - - int bytes_written = zt.Send(connfd, "hello".ToCharArray(),4, out error); - print(bytes_written); - } - - public void zt_test_network() - { - Thread networkTestThread = new Thread(() => { zt_sample_network_test_thread();}); - networkTestThread.IsBackground = true; - networkTestThread.Start(); - } - - void Start() - { - // Create new instance of ZeroTier in separate thread - zt = new ZeroTierNetworkInterface ("/Users/Joseph/utest2"); - - /* This new instance will communicate via a named pipe, so any - * API calls (ZeroTier.Connect(), ZeroTier.Send(), etc) will be sent to the service - * via this pipe. - */ - } - - // Terminate the ZeroTier service when the application quits - void OnApplicationQuit() { - zt.Terminate (); - } - - // Update is called once per frame - void Update () { - - // Rotate ZTCube when ZT is running - if (zt.IsRunning ()) { - GameObject go = GameObject.Find ("ZTCube"); - Vector3 rotvec = new Vector3 (10f, 10f, 10f); - go.transform.Rotate (rotvec, speed * Time.deltaTime); - } - - /* - GameObject go = GameObject.Find("ZTCube"); - Text text = go.GetComponents ()[0]; - if (text) { - text.text = IsRunning() ? "ZeroTier Status: Online" : "ZeroTier Status: Offline"; - } - */ - } -} \ No newline at end of file diff --git a/integrations/unity3d/Assets/MainScene.unity b/integrations/unity3d/Assets/MainScene.unity deleted file mode 100644 index e1f3e570f8b60afa0fa87a9651caed2c9ab1d11c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67160 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 diff --git a/integrations/unity3d/Assets/ZeroTier.cs b/integrations/unity3d/Assets/ZeroTier.cs deleted file mode 100644 index aded4ca..0000000 --- a/integrations/unity3d/Assets/ZeroTier.cs +++ /dev/null @@ -1,282 +0,0 @@ -/* - * ZeroTier One - Network Virtualization Everywhere - * Copyright (C) 2011-2015 ZeroTier, Inc. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * -- - * - * ZeroTier may be used and distributed under the terms of the GPLv3, which - * are available at: http://www.gnu.org/licenses/gpl-3.0.html - * - * If you would like to embed ZeroTier into a commercial application or - * redistribute it in a modified binary form, please contact ZeroTier Networks - * LLC. Start here: http://www.zerotier.com/ - */ - -using UnityEngine; -using UnityEngine.UI; -using System; -using System.Collections; -using System.Runtime.InteropServices; -using System.Threading; -using UnityEngine.Networking; - -using System.Net.Sockets; -using System.Net; - -using System.IO; - - -public class ZeroTierNetworkInterface { - - // ZeroTier background thread - private Thread ztThread; - - // Interop structures - [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential, CharSet=System.Runtime.InteropServices.CharSet.Ansi)] - public struct sockaddr { - /// u_short->unsigned short - public ushort sa_family; - /// char[14] - [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValTStr, SizeConst=14)] - public string sa_data; - } - - // Virtual network interace config - private int MaxPacketSize; - private string rpc_path = "/does/this/work"; - - [UnmanagedFunctionPointer(CallingConvention.Cdecl)] - public delegate void MyDelegate(string str); - - static void CallBackFunction(string str) { - Debug.Log("Native ZT Plugin: " + str); - } - - // ZeroTier service / debug initialization - [DllImport ("ZeroTierUnity")] - public static extern void SetDebugFunction( IntPtr fp ); - [DllImport ("ZeroTierUnity")] - private static extern int unity_start_service(string path); - - // Connection calls - [DllImport ("ZeroTierUnity")] - private static extern int zt_socket(int family, int type, int protocol); - - - [DllImport ("ZeroTierUnity")] - unsafe private static extern int zt_bind(int sockfd, System.IntPtr addr, int addrlen); - [DllImport ("ZeroTierUnity")] - unsafe private static extern int zt_connect(int sockfd, System.IntPtr addr, int addrlen); - - [DllImport ("ZeroTierUnity")] - private static extern int zt_accept(int sockfd); - [DllImport ("ZeroTierUnity")] - private static extern int zt_listen(int sockfd, int backlog); - [DllImport ("ZeroTierUnity")] - private static extern int zt_close(int sockfd); - - // RX / TX - [DllImport ("ZeroTierUnity")] - unsafe private static extern int zt_recv(int sockfd, System.IntPtr buf, int len); - [DllImport ("ZeroTierUnity")] - unsafe private static extern int zt_send(int sockfd, System.IntPtr buf, int len); - - // ZT Thread controls - [DllImport ("ZeroTierUnity")] - private static extern bool zt_is_running(); - [DllImport ("ZeroTierUnity")] - private static extern void zt_terminate(); - - // ZT Network controls - [DllImport ("ZeroTierUnity")] - private static extern bool zt_join_network(string nwid); - [DllImport ("ZeroTierUnity")] - private static extern void zt_leave_network(string nwid); - - // Thread which starts the ZeroTier service - // The ZeroTier service may spin off a SOCKS5 proxy server - // if -DUSE_SOCKS_PROXY is set when building the bundle - private void zt_service_thread() - { - MyDelegate callback_delegate = new MyDelegate( CallBackFunction ); - // Convert callback_delegate into a function pointer that can be - // used in unmanaged code. - IntPtr intptr_delegate = - Marshal.GetFunctionPointerForDelegate(callback_delegate); - // Call the API passing along the function pointer. - SetDebugFunction( intptr_delegate ); - unity_start_service (rpc_path); - } - - // Start the ZeroTier service - private void Init() - { - // TODO: Handle exceptions from unmanaged code - ztThread = new Thread(() => { - try { - zt_service_thread(); - } catch(Exception e) { - Debug.Log(e.Message.ToString()); - } - }); - ztThread.IsBackground = true; // Allow the thread to be aborted safely - ztThread.Start(); - } - - // Initialize the ZeroTier service with a given path - public ZeroTierNetworkInterface(string path) - { - rpc_path = path; - Init(); - } - - // Initialize the ZeroTier service - public ZeroTierNetworkInterface() - { - Init(); - } - - // Initialize the ZeroTier service - // Use the GlobalConfig to set things like the max packet size - public ZeroTierNetworkInterface(GlobalConfig gConfig) - { - MaxPacketSize = gConfig.MaxPacketSize; // TODO: Do something with this! - Init(); - } - - // Joins a ZeroTier virtual network - public void JoinNetwork(string nwid) - { - zt_join_network(nwid); - } - - // Leaves a ZeroTier virtual network - public void LeaveNetwork(string nwid) - { - zt_leave_network(nwid); - } - - // Creates a ZeroTier Socket and binds on the port provided - // A client instance can now connect to this "host" - public int AddHost(int port) - { - int sockfd = zt_socket ((int)AddressFamily.InterNetwork, (int)SocketType.Stream, (int)ProtocolType.Unspecified); - if (sockfd < 0) { - return -1; - } - GCHandle sockaddr_ptr = ZeroTierUtils.Generate_unmananged_sockaddr("0.0.0.0" + ":" + port); - IntPtr pSockAddr = sockaddr_ptr.AddrOfPinnedObject (); - int addrlen = Marshal.SizeOf (pSockAddr); - return zt_bind (sockfd, pSockAddr, addrlen); - } - - // hostId - host socket ID for this connection - public int Connect(int hostId, string address, int port, out byte error) - { - int sockfd = zt_socket ((int)AddressFamily.InterNetwork, (int)SocketType.Stream, (int)ProtocolType.Unspecified); - Debug.Log ("sockfd = " + sockfd); - - if (sockfd < 0) { - error = (byte)sockfd; - return -1; - } - GCHandle sockaddr_ptr = ZeroTierUtils.Generate_unmananged_sockaddr(address + ":" + port); - IntPtr pSockAddr = sockaddr_ptr.AddrOfPinnedObject (); - int addrlen = Marshal.SizeOf (pSockAddr); - error = (byte)zt_connect (sockfd, pSockAddr, addrlen); - return sockfd; - } - - // Returns whether the ZeroTier service is currently running - public bool IsRunning() - { - return zt_is_running (); - } - - // Terminates the ZeroTier service - public void Terminate() - { - zt_terminate (); - } - - // Shutdown a given connection - public int Disconnect(int fd) - { - return zt_close (fd); - } - - // Sends data out over the network - - public int Send(int fd, char[] buf, int len, out byte error) - { - int bytes_written = 0; - error = 0; - - GCHandle buf_handle = GCHandle.Alloc (buf, GCHandleType.Pinned); - IntPtr pBufPtr = buf_handle.AddrOfPinnedObject (); - - //int len = Marshal.SizeOf (pBufPtr); - if((bytes_written = zt_send (fd, pBufPtr, len)) < 0) { - error = (byte)bytes_written; - } - return bytes_written; - } - - - // Structure used to house arrays meant to be sent to unmanaged memory and passed to the - // ZeroTier service - public struct UnityArrayInput - { - public IntPtr array; - } - - /* - // Sends data out over the network - public int Send(int fd, char[] buf, int len, out byte error) - { - //char[] buffer = new char[1024]; - UnityArrayInput data = new UnityArrayInput (); - data.array = Marshal.AllocHGlobal (Marshal.SizeOf (typeof(char))*buf.Length); - //data.len = buf.Length; - int bytes_written = 0; - error = 0; - - try - { - Marshal.Copy(buf, 0, data.array, buf.Length); - - Debug.Log(buf.Length); - // ZT API call - if((bytes_written = zt_send (fd, data.array, buf.Length)) < 0) { - error = (byte)bytes_written; - } - return bytes_written; - } - finally - { - Marshal.FreeHGlobal (data.array); - } - return 0; - } - */ - - // Checks for data to RX - public int OnReceive(int fd, byte[] buf, int len) - { - return 0; - //return zt_read(fd, buf, len); - } -} diff --git a/integrations/unity3d/Assets/ZeroTierUtils.cs b/integrations/unity3d/Assets/ZeroTierUtils.cs deleted file mode 100644 index a1da79d..0000000 --- a/integrations/unity3d/Assets/ZeroTierUtils.cs +++ /dev/null @@ -1,55 +0,0 @@ -using UnityEngine; -using System.Collections; -using System.Net; -using System; -using System.Globalization; -using System.Runtime.InteropServices; - -public class ZeroTierUtils { - - // Handles IPv4 and IPv6 notation. - public static IPEndPoint CreateIPEndPoint(string endPoint) - { - string[] ep = endPoint.Split(':'); - if (ep.Length < 2) throw new FormatException("Invalid endpoint format"); - IPAddress ip; - if (ep.Length > 2) { - if (!IPAddress.TryParse(string.Join(":", ep, 0, ep.Length - 1), out ip)) { - throw new FormatException("Invalid ip-adress"); - } - } - else { - if (!IPAddress.TryParse(ep[0], out ip)) { - throw new FormatException("Invalid ip-adress"); - } - } - int port; - if (!int.TryParse(ep[ep.Length - 1], NumberStyles.None, NumberFormatInfo.CurrentInfo, out port)) { - throw new FormatException("Invalid port"); - } - return new IPEndPoint(ip, port); - } - - // Generates an unmanaged sockaddr structure from a string-formatted endpoint - public static GCHandle Generate_unmananged_sockaddr(string endpoint_str) - { - IPEndPoint ipEndPoint; - ipEndPoint = ZeroTierUtils.CreateIPEndPoint (endpoint_str); - SocketAddress socketAddress = ipEndPoint.Serialize (); - - // use an array of bytes instead of the sockaddr structure - byte[] sockAddrStructureBytes = new byte[socketAddress.Size]; - GCHandle sockAddrHandle = GCHandle.Alloc (sockAddrStructureBytes, GCHandleType.Pinned); - for (int i = 0; i < socketAddress.Size; ++i) { - sockAddrStructureBytes [i] = socketAddress [i]; - } - return sockAddrHandle; - } - - public static GCHandle Generate_unmanaged_buffer(byte[] buf) - { - // use an array of bytes instead of the sockaddr structure - GCHandle sockAddrHandle = GCHandle.Alloc (buf, GCHandleType.Pinned); - return sockAddrHandle; - } -} diff --git a/integrations/unity3d/Assets/smcs.rsp b/integrations/unity3d/Assets/smcs.rsp deleted file mode 100644 index 46ef843..0000000 --- a/integrations/unity3d/Assets/smcs.rsp +++ /dev/null @@ -1 +0,0 @@ --unsafe \ No newline at end of file diff --git a/integrations/unity3d/Assets/zerotier-icon.png b/integrations/unity3d/Assets/zerotier-icon.png deleted file mode 100644 index 4d9641b344329a3790f94206d012f2a9ce2e0750..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26898 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 diff --git a/integrations/unity3d/osx_bundle/ZeroTierUnity/ZeroTierUnity.xcodeproj/project.pbxproj b/integrations/unity3d/osx_bundle/ZeroTierUnity/ZeroTierUnity.xcodeproj/project.pbxproj deleted file mode 100644 index 21af14c..0000000 --- a/integrations/unity3d/osx_bundle/ZeroTierUnity/ZeroTierUnity.xcodeproj/project.pbxproj +++ /dev/null @@ -1,817 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 7C13E9791D11BFCD004F16BE /* C25519.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9401D11BFCD004F16BE /* C25519.cpp */; }; - 7C13E97A1D11BFCD004F16BE /* CertificateOfMembership.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9421D11BFCD004F16BE /* CertificateOfMembership.cpp */; }; - 7C13E97B1D11BFCD004F16BE /* Cluster.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9441D11BFCD004F16BE /* Cluster.cpp */; }; - 7C13E97C1D11BFCD004F16BE /* DeferredPackets.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9471D11BFCD004F16BE /* DeferredPackets.cpp */; }; - 7C13E97D1D11BFCD004F16BE /* Dictionary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9491D11BFCD004F16BE /* Dictionary.cpp */; }; - 7C13E97E1D11BFCD004F16BE /* Identity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E94C1D11BFCD004F16BE /* Identity.cpp */; }; - 7C13E97F1D11BFCD004F16BE /* IncomingPacket.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E94E1D11BFCD004F16BE /* IncomingPacket.cpp */; }; - 7C13E9801D11BFCD004F16BE /* InetAddress.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9501D11BFCD004F16BE /* InetAddress.cpp */; }; - 7C13E9811D11BFCD004F16BE /* Multicaster.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9531D11BFCD004F16BE /* Multicaster.cpp */; }; - 7C13E9821D11BFCD004F16BE /* Network.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9571D11BFCD004F16BE /* Network.cpp */; }; - 7C13E9831D11BFCD004F16BE /* NetworkConfig.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9591D11BFCD004F16BE /* NetworkConfig.cpp */; }; - 7C13E9841D11BFCD004F16BE /* Node.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E95D1D11BFCD004F16BE /* Node.cpp */; }; - 7C13E9851D11BFCD004F16BE /* OutboundMulticast.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9601D11BFCD004F16BE /* OutboundMulticast.cpp */; }; - 7C13E9861D11BFCD004F16BE /* Packet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9621D11BFCD004F16BE /* Packet.cpp */; }; - 7C13E9871D11BFCD004F16BE /* Path.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9641D11BFCD004F16BE /* Path.cpp */; }; - 7C13E9881D11BFCD004F16BE /* Peer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9661D11BFCD004F16BE /* Peer.cpp */; }; - 7C13E9891D11BFCD004F16BE /* Poly1305.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9681D11BFCD004F16BE /* Poly1305.cpp */; }; - 7C13E98A1D11BFCD004F16BE /* Salsa20.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E96B1D11BFCD004F16BE /* Salsa20.cpp */; }; - 7C13E98B1D11BFCD004F16BE /* SelfAwareness.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E96D1D11BFCD004F16BE /* SelfAwareness.cpp */; }; - 7C13E98C1D11BFCD004F16BE /* SHA512.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E96F1D11BFCD004F16BE /* SHA512.cpp */; }; - 7C13E98D1D11BFCD004F16BE /* Switch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9721D11BFCD004F16BE /* Switch.cpp */; }; - 7C13E98E1D11BFCD004F16BE /* Topology.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9741D11BFCD004F16BE /* Topology.cpp */; }; - 7C13E98F1D11BFCD004F16BE /* Utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9761D11BFCD004F16BE /* Utils.cpp */; }; - 7C13E9981D11C013004F16BE /* ControlPlane.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9931D11C013004F16BE /* ControlPlane.cpp */; }; - 7C13E9991D11C013004F16BE /* OneService.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9951D11C013004F16BE /* OneService.cpp */; }; - 7C13E9B11D11C028004F16BE /* Arp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E99A1D11C028004F16BE /* Arp.cpp */; }; - 7C13E9B21D11C028004F16BE /* BackgroundResolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E99C1D11C028004F16BE /* BackgroundResolver.cpp */; }; - 7C13E9B31D11C028004F16BE /* BSDEthernetTap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E99F1D11C028004F16BE /* BSDEthernetTap.cpp */; }; - 7C13E9B41D11C028004F16BE /* Http.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9A11D11C028004F16BE /* Http.cpp */; }; - 7C13E9B61D11C028004F16BE /* OSUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9A51D11C028004F16BE /* OSUtils.cpp */; }; - 7C13E9B81D11C028004F16BE /* PortMapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9AA1D11C028004F16BE /* PortMapper.cpp */; }; - 7C13E9B91D11C028004F16BE /* RoutingTable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9AC1D11C028004F16BE /* RoutingTable.cpp */; }; - 7C13E9C91D11C03D004F16BE /* SDK_Debug.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9BB1D11C03C004F16BE /* SDK_Debug.c */; }; - 7C13E9CA1D11C03D004F16BE /* SDK_EthernetTap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9BD1D11C03C004F16BE /* SDK_EthernetTap.cpp */; }; - 7C13E9CC1D11C03D004F16BE /* SDK_Proxy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9C11D11C03C004F16BE /* SDK_Proxy.cpp */; }; - 7C13E9CD1D11C03D004F16BE /* SDK_RPC.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9C21D11C03C004F16BE /* SDK_RPC.c */; }; - 7C13E9CE1D11C03D004F16BE /* SDK_ServiceSetup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9C41D11C03C004F16BE /* SDK_ServiceSetup.cpp */; }; - 7C13E9CF1D11C03D004F16BE /* SDK_Sockets.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9C71D11C03D004F16BE /* SDK_Sockets.c */; }; - 7C13E9D81D11C0D7004F16BE /* api_lib.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9D01D11C0D7004F16BE /* api_lib.c */; }; - 7C13E9D91D11C0D7004F16BE /* api_msg.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9D11D11C0D7004F16BE /* api_msg.c */; }; - 7C13E9DA1D11C0D7004F16BE /* err.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9D21D11C0D7004F16BE /* err.c */; }; - 7C13E9DB1D11C0D7004F16BE /* netbuf.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9D31D11C0D7004F16BE /* netbuf.c */; }; - 7C13E9DC1D11C0D7004F16BE /* netdb.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9D41D11C0D7004F16BE /* netdb.c */; }; - 7C13E9DD1D11C0D7004F16BE /* netifapi.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9D51D11C0D7004F16BE /* netifapi.c */; }; - 7C13E9DE1D11C0D7004F16BE /* sockets.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9D61D11C0D7004F16BE /* sockets.c */; }; - 7C13E9DF1D11C0D7004F16BE /* tcpip.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9D71D11C0D7004F16BE /* tcpip.c */; }; - 7C13E9F01D11C0EE004F16BE /* def.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9E01D11C0EE004F16BE /* def.c */; }; - 7C13E9F11D11C0EE004F16BE /* dhcp.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9E11D11C0EE004F16BE /* dhcp.c */; }; - 7C13E9F21D11C0EE004F16BE /* dns.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9E21D11C0EE004F16BE /* dns.c */; }; - 7C13E9F31D11C0EE004F16BE /* init.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9E31D11C0EE004F16BE /* init.c */; }; - 7C13E9F41D11C0EE004F16BE /* mem.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9E41D11C0EE004F16BE /* mem.c */; }; - 7C13E9F51D11C0EE004F16BE /* memp.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9E51D11C0EE004F16BE /* memp.c */; }; - 7C13E9F61D11C0EE004F16BE /* netif.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9E61D11C0EE004F16BE /* netif.c */; }; - 7C13E9F71D11C0EE004F16BE /* pbuf.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9E71D11C0EE004F16BE /* pbuf.c */; }; - 7C13E9F81D11C0EE004F16BE /* raw.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9E81D11C0EE004F16BE /* raw.c */; }; - 7C13E9F91D11C0EE004F16BE /* stats.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9E91D11C0EE004F16BE /* stats.c */; }; - 7C13E9FA1D11C0EE004F16BE /* sys.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9EA1D11C0EE004F16BE /* sys.c */; }; - 7C13E9FB1D11C0EE004F16BE /* tcp_in.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9EB1D11C0EE004F16BE /* tcp_in.c */; }; - 7C13E9FC1D11C0EE004F16BE /* tcp_out.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9EC1D11C0EE004F16BE /* tcp_out.c */; }; - 7C13E9FD1D11C0EE004F16BE /* tcp.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9ED1D11C0EE004F16BE /* tcp.c */; }; - 7C13E9FE1D11C0EE004F16BE /* timers.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9EE1D11C0EE004F16BE /* timers.c */; }; - 7C13E9FF1D11C0EE004F16BE /* udp.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C13E9EF1D11C0EE004F16BE /* udp.c */; }; - 7C13EA081D11C0FC004F16BE /* autoip.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C13EA001D11C0FC004F16BE /* autoip.c */; }; - 7C13EA091D11C0FC004F16BE /* icmp.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C13EA011D11C0FC004F16BE /* icmp.c */; }; - 7C13EA0A1D11C0FC004F16BE /* igmp.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C13EA021D11C0FC004F16BE /* igmp.c */; }; - 7C13EA0B1D11C0FC004F16BE /* inet_chksum.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C13EA031D11C0FC004F16BE /* inet_chksum.c */; }; - 7C13EA0C1D11C0FC004F16BE /* inet.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C13EA041D11C0FC004F16BE /* inet.c */; }; - 7C13EA0D1D11C0FC004F16BE /* ip_addr.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C13EA051D11C0FC004F16BE /* ip_addr.c */; }; - 7C13EA0E1D11C0FC004F16BE /* ip_frag.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C13EA061D11C0FC004F16BE /* ip_frag.c */; }; - 7C13EA0F1D11C0FC004F16BE /* ip.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C13EA071D11C0FC004F16BE /* ip.c */; }; - 7C13EA131D11C10D004F16BE /* etharp.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C13EA101D11C10D004F16BE /* etharp.c */; }; - 7C13EA141D11C10D004F16BE /* ethernetif.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C13EA111D11C10D004F16BE /* ethernetif.c */; }; - 7C13EA151D11C10D004F16BE /* slipif.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C13EA121D11C10D004F16BE /* slipif.c */; }; - 7C13EA431D11C342004F16BE /* http_parser.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C13EA411D11C342004F16BE /* http_parser.c */; }; - 7C13EA461D11C355004F16BE /* lz4.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C13EA441D11C355004F16BE /* lz4.c */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 7C13E93B1D11BFCD004F16BE /* Address.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Address.hpp; path = ../../../../zerotierone/node/Address.hpp; sourceTree = ""; }; - 7C13E93C1D11BFCD004F16BE /* Array.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Array.hpp; path = ../../../../zerotierone/node/Array.hpp; sourceTree = ""; }; - 7C13E93D1D11BFCD004F16BE /* AtomicCounter.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = AtomicCounter.hpp; path = ../../../../zerotierone/node/AtomicCounter.hpp; sourceTree = ""; }; - 7C13E93E1D11BFCD004F16BE /* BinarySemaphore.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = BinarySemaphore.hpp; path = ../../../../zerotierone/node/BinarySemaphore.hpp; sourceTree = ""; }; - 7C13E93F1D11BFCD004F16BE /* Buffer.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Buffer.hpp; path = ../../../../zerotierone/node/Buffer.hpp; sourceTree = ""; }; - 7C13E9401D11BFCD004F16BE /* C25519.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = C25519.cpp; path = ../../../../zerotierone/node/C25519.cpp; sourceTree = ""; }; - 7C13E9411D11BFCD004F16BE /* C25519.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = C25519.hpp; path = ../../../../zerotierone/node/C25519.hpp; sourceTree = ""; }; - 7C13E9421D11BFCD004F16BE /* CertificateOfMembership.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CertificateOfMembership.cpp; path = ../../../../zerotierone/node/CertificateOfMembership.cpp; sourceTree = ""; }; - 7C13E9431D11BFCD004F16BE /* CertificateOfMembership.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = CertificateOfMembership.hpp; path = ../../../../zerotierone/node/CertificateOfMembership.hpp; sourceTree = ""; }; - 7C13E9441D11BFCD004F16BE /* Cluster.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Cluster.cpp; path = ../../../../zerotierone/node/Cluster.cpp; sourceTree = ""; }; - 7C13E9451D11BFCD004F16BE /* Cluster.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Cluster.hpp; path = ../../../../zerotierone/node/Cluster.hpp; sourceTree = ""; }; - 7C13E9461D11BFCD004F16BE /* Constants.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Constants.hpp; path = ../../../../zerotierone/node/Constants.hpp; sourceTree = ""; }; - 7C13E9471D11BFCD004F16BE /* DeferredPackets.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DeferredPackets.cpp; path = ../../../../zerotierone/node/DeferredPackets.cpp; sourceTree = ""; }; - 7C13E9481D11BFCD004F16BE /* DeferredPackets.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = DeferredPackets.hpp; path = ../../../../zerotierone/node/DeferredPackets.hpp; sourceTree = ""; }; - 7C13E9491D11BFCD004F16BE /* Dictionary.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Dictionary.cpp; path = ../../../../zerotierone/node/Dictionary.cpp; sourceTree = ""; }; - 7C13E94A1D11BFCD004F16BE /* Dictionary.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Dictionary.hpp; path = ../../../../zerotierone/node/Dictionary.hpp; sourceTree = ""; }; - 7C13E94B1D11BFCD004F16BE /* Hashtable.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Hashtable.hpp; path = ../../../../zerotierone/node/Hashtable.hpp; sourceTree = ""; }; - 7C13E94C1D11BFCD004F16BE /* Identity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Identity.cpp; path = ../../../../zerotierone/node/Identity.cpp; sourceTree = ""; }; - 7C13E94D1D11BFCD004F16BE /* Identity.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Identity.hpp; path = ../../../../zerotierone/node/Identity.hpp; sourceTree = ""; }; - 7C13E94E1D11BFCD004F16BE /* IncomingPacket.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IncomingPacket.cpp; path = ../../../../zerotierone/node/IncomingPacket.cpp; sourceTree = ""; }; - 7C13E94F1D11BFCD004F16BE /* IncomingPacket.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = IncomingPacket.hpp; path = ../../../../zerotierone/node/IncomingPacket.hpp; sourceTree = ""; }; - 7C13E9501D11BFCD004F16BE /* InetAddress.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = InetAddress.cpp; path = ../../../../zerotierone/node/InetAddress.cpp; sourceTree = ""; }; - 7C13E9511D11BFCD004F16BE /* InetAddress.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = InetAddress.hpp; path = ../../../../zerotierone/node/InetAddress.hpp; sourceTree = ""; }; - 7C13E9521D11BFCD004F16BE /* MAC.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = MAC.hpp; path = ../../../../zerotierone/node/MAC.hpp; sourceTree = ""; }; - 7C13E9531D11BFCD004F16BE /* Multicaster.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Multicaster.cpp; path = ../../../../zerotierone/node/Multicaster.cpp; sourceTree = ""; }; - 7C13E9541D11BFCD004F16BE /* Multicaster.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Multicaster.hpp; path = ../../../../zerotierone/node/Multicaster.hpp; sourceTree = ""; }; - 7C13E9551D11BFCD004F16BE /* MulticastGroup.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = MulticastGroup.hpp; path = ../../../../zerotierone/node/MulticastGroup.hpp; sourceTree = ""; }; - 7C13E9561D11BFCD004F16BE /* Mutex.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Mutex.hpp; path = ../../../../zerotierone/node/Mutex.hpp; sourceTree = ""; }; - 7C13E9571D11BFCD004F16BE /* Network.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Network.cpp; path = ../../../../zerotierone/node/Network.cpp; sourceTree = ""; }; - 7C13E9581D11BFCD004F16BE /* Network.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Network.hpp; path = ../../../../zerotierone/node/Network.hpp; sourceTree = ""; }; - 7C13E9591D11BFCD004F16BE /* NetworkConfig.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NetworkConfig.cpp; path = ../../../../zerotierone/node/NetworkConfig.cpp; sourceTree = ""; }; - 7C13E95A1D11BFCD004F16BE /* NetworkConfig.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = NetworkConfig.hpp; path = ../../../../zerotierone/node/NetworkConfig.hpp; sourceTree = ""; }; - 7C13E95B1D11BFCD004F16BE /* NetworkConfigRequestMetaData.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = NetworkConfigRequestMetaData.hpp; path = ../../../../zerotierone/node/NetworkConfigRequestMetaData.hpp; sourceTree = ""; }; - 7C13E95C1D11BFCD004F16BE /* NetworkController.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = NetworkController.hpp; path = ../../../../zerotierone/node/NetworkController.hpp; sourceTree = ""; }; - 7C13E95D1D11BFCD004F16BE /* Node.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Node.cpp; path = ../../../../zerotierone/node/Node.cpp; sourceTree = ""; }; - 7C13E95E1D11BFCD004F16BE /* Node.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Node.hpp; path = ../../../../zerotierone/node/Node.hpp; sourceTree = ""; }; - 7C13E95F1D11BFCD004F16BE /* NonCopyable.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = NonCopyable.hpp; path = ../../../../zerotierone/node/NonCopyable.hpp; sourceTree = ""; }; - 7C13E9601D11BFCD004F16BE /* OutboundMulticast.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OutboundMulticast.cpp; path = ../../../../zerotierone/node/OutboundMulticast.cpp; sourceTree = ""; }; - 7C13E9611D11BFCD004F16BE /* OutboundMulticast.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = OutboundMulticast.hpp; path = ../../../../zerotierone/node/OutboundMulticast.hpp; sourceTree = ""; }; - 7C13E9621D11BFCD004F16BE /* Packet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Packet.cpp; path = ../../../../zerotierone/node/Packet.cpp; sourceTree = ""; }; - 7C13E9631D11BFCD004F16BE /* Packet.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Packet.hpp; path = ../../../../zerotierone/node/Packet.hpp; sourceTree = ""; }; - 7C13E9641D11BFCD004F16BE /* Path.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Path.cpp; path = ../../../../zerotierone/node/Path.cpp; sourceTree = ""; }; - 7C13E9651D11BFCD004F16BE /* Path.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Path.hpp; path = ../../../../zerotierone/node/Path.hpp; sourceTree = ""; }; - 7C13E9661D11BFCD004F16BE /* Peer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Peer.cpp; path = ../../../../zerotierone/node/Peer.cpp; sourceTree = ""; }; - 7C13E9671D11BFCD004F16BE /* Peer.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Peer.hpp; path = ../../../../zerotierone/node/Peer.hpp; sourceTree = ""; }; - 7C13E9681D11BFCD004F16BE /* Poly1305.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Poly1305.cpp; path = ../../../../zerotierone/node/Poly1305.cpp; sourceTree = ""; }; - 7C13E9691D11BFCD004F16BE /* Poly1305.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Poly1305.hpp; path = ../../../../zerotierone/node/Poly1305.hpp; sourceTree = ""; }; - 7C13E96A1D11BFCD004F16BE /* RuntimeEnvironment.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = RuntimeEnvironment.hpp; path = ../../../../zerotierone/node/RuntimeEnvironment.hpp; sourceTree = ""; }; - 7C13E96B1D11BFCD004F16BE /* Salsa20.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Salsa20.cpp; path = ../../../../zerotierone/node/Salsa20.cpp; sourceTree = ""; }; - 7C13E96C1D11BFCD004F16BE /* Salsa20.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Salsa20.hpp; path = ../../../../zerotierone/node/Salsa20.hpp; sourceTree = ""; }; - 7C13E96D1D11BFCD004F16BE /* SelfAwareness.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SelfAwareness.cpp; path = ../../../../zerotierone/node/SelfAwareness.cpp; sourceTree = ""; }; - 7C13E96E1D11BFCD004F16BE /* SelfAwareness.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = SelfAwareness.hpp; path = ../../../../zerotierone/node/SelfAwareness.hpp; sourceTree = ""; }; - 7C13E96F1D11BFCD004F16BE /* SHA512.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SHA512.cpp; path = ../../../../zerotierone/node/SHA512.cpp; sourceTree = ""; }; - 7C13E9701D11BFCD004F16BE /* SHA512.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = SHA512.hpp; path = ../../../../zerotierone/node/SHA512.hpp; sourceTree = ""; }; - 7C13E9711D11BFCD004F16BE /* SharedPtr.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = SharedPtr.hpp; path = ../../../../zerotierone/node/SharedPtr.hpp; sourceTree = ""; }; - 7C13E9721D11BFCD004F16BE /* Switch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Switch.cpp; path = ../../../../zerotierone/node/Switch.cpp; sourceTree = ""; }; - 7C13E9731D11BFCD004F16BE /* Switch.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Switch.hpp; path = ../../../../zerotierone/node/Switch.hpp; sourceTree = ""; }; - 7C13E9741D11BFCD004F16BE /* Topology.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Topology.cpp; path = ../../../../zerotierone/node/Topology.cpp; sourceTree = ""; }; - 7C13E9751D11BFCD004F16BE /* Topology.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Topology.hpp; path = ../../../../zerotierone/node/Topology.hpp; sourceTree = ""; }; - 7C13E9761D11BFCD004F16BE /* Utils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Utils.cpp; path = ../../../../zerotierone/node/Utils.cpp; sourceTree = ""; }; - 7C13E9771D11BFCD004F16BE /* Utils.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Utils.hpp; path = ../../../../zerotierone/node/Utils.hpp; sourceTree = ""; }; - 7C13E9781D11BFCD004F16BE /* World.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = World.hpp; path = ../../../../zerotierone/node/World.hpp; sourceTree = ""; }; - 7C13E9931D11C013004F16BE /* ControlPlane.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ControlPlane.cpp; path = ../../../../zerotierone/service/ControlPlane.cpp; sourceTree = ""; }; - 7C13E9941D11C013004F16BE /* ControlPlane.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = ControlPlane.hpp; path = ../../../../zerotierone/service/ControlPlane.hpp; sourceTree = ""; }; - 7C13E9951D11C013004F16BE /* OneService.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OneService.cpp; path = ../../../../zerotierone/service/OneService.cpp; sourceTree = ""; }; - 7C13E9961D11C013004F16BE /* OneService.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = OneService.hpp; path = ../../../../zerotierone/service/OneService.hpp; sourceTree = ""; }; - 7C13E99A1D11C028004F16BE /* Arp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Arp.cpp; path = ../../../../zerotierone/osdep/Arp.cpp; sourceTree = ""; }; - 7C13E99B1D11C028004F16BE /* Arp.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Arp.hpp; path = ../../../../zerotierone/osdep/Arp.hpp; sourceTree = ""; }; - 7C13E99C1D11C028004F16BE /* BackgroundResolver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BackgroundResolver.cpp; path = ../../../../zerotierone/osdep/BackgroundResolver.cpp; sourceTree = ""; }; - 7C13E99D1D11C028004F16BE /* BackgroundResolver.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = BackgroundResolver.hpp; path = ../../../../zerotierone/osdep/BackgroundResolver.hpp; sourceTree = ""; }; - 7C13E99E1D11C028004F16BE /* Binder.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Binder.hpp; path = ../../../../zerotierone/osdep/Binder.hpp; sourceTree = ""; }; - 7C13E99F1D11C028004F16BE /* BSDEthernetTap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BSDEthernetTap.cpp; path = ../../../../zerotierone/osdep/BSDEthernetTap.cpp; sourceTree = ""; }; - 7C13E9A01D11C028004F16BE /* BSDEthernetTap.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = BSDEthernetTap.hpp; path = ../../../../zerotierone/osdep/BSDEthernetTap.hpp; sourceTree = ""; }; - 7C13E9A11D11C028004F16BE /* Http.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Http.cpp; path = ../../../../zerotierone/osdep/Http.cpp; sourceTree = ""; }; - 7C13E9A21D11C028004F16BE /* Http.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Http.hpp; path = ../../../../zerotierone/osdep/Http.hpp; sourceTree = ""; }; - 7C13E9A51D11C028004F16BE /* OSUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OSUtils.cpp; path = ../../../../zerotierone/osdep/OSUtils.cpp; sourceTree = ""; }; - 7C13E9A61D11C028004F16BE /* OSUtils.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = OSUtils.hpp; path = ../../../../zerotierone/osdep/OSUtils.hpp; sourceTree = ""; }; - 7C13E9A91D11C028004F16BE /* Phy.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Phy.hpp; path = ../../../../zerotierone/osdep/Phy.hpp; sourceTree = ""; }; - 7C13E9AA1D11C028004F16BE /* PortMapper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PortMapper.cpp; path = ../../../../zerotierone/osdep/PortMapper.cpp; sourceTree = ""; }; - 7C13E9AB1D11C028004F16BE /* PortMapper.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = PortMapper.hpp; path = ../../../../zerotierone/osdep/PortMapper.hpp; sourceTree = ""; }; - 7C13E9AC1D11C028004F16BE /* RoutingTable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RoutingTable.cpp; path = ../../../../zerotierone/osdep/RoutingTable.cpp; sourceTree = ""; }; - 7C13E9AD1D11C028004F16BE /* RoutingTable.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = RoutingTable.hpp; path = ../../../../zerotierone/osdep/RoutingTable.hpp; sourceTree = ""; }; - 7C13E9AE1D11C028004F16BE /* Thread.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Thread.hpp; path = ../../../../zerotierone/osdep/Thread.hpp; sourceTree = ""; }; - 7C13E9BB1D11C03C004F16BE /* SDK_Debug.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SDK_Debug.c; path = ../../../../src/SDK_Debug.c; sourceTree = ""; }; - 7C13E9BC1D11C03C004F16BE /* SDK_Debug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDK_Debug.h; path = ../../../../src/SDK_Debug.h; sourceTree = ""; }; - 7C13E9BD1D11C03C004F16BE /* SDK_EthernetTap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SDK_EthernetTap.cpp; path = ../../../../src/SDK_EthernetTap.cpp; sourceTree = ""; }; - 7C13E9BE1D11C03C004F16BE /* SDK_EthernetTap.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = SDK_EthernetTap.hpp; path = ../../../../src/SDK_EthernetTap.hpp; sourceTree = ""; }; - 7C13E9C01D11C03C004F16BE /* SDK_LWIPStack.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = SDK_LWIPStack.hpp; path = ../../../../src/SDK_LWIPStack.hpp; sourceTree = ""; }; - 7C13E9C11D11C03C004F16BE /* SDK_Proxy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SDK_Proxy.cpp; path = ../../../../src/SDK_Proxy.cpp; sourceTree = ""; }; - 7C13E9C21D11C03C004F16BE /* SDK_RPC.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SDK_RPC.c; path = ../../../../src/SDK_RPC.c; sourceTree = ""; }; - 7C13E9C31D11C03C004F16BE /* SDK_RPC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDK_RPC.h; path = ../../../../src/SDK_RPC.h; sourceTree = ""; }; - 7C13E9C41D11C03C004F16BE /* SDK_ServiceSetup.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SDK_ServiceSetup.cpp; path = ../../../../src/SDK_ServiceSetup.cpp; sourceTree = ""; }; - 7C13E9C51D11C03C004F16BE /* SDK_ServiceSetup.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = SDK_ServiceSetup.hpp; path = ../../../../src/SDK_ServiceSetup.hpp; sourceTree = ""; }; - 7C13E9C61D11C03D004F16BE /* SDK_Signatures.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDK_Signatures.h; path = ../../../../src/SDK_Signatures.h; sourceTree = ""; }; - 7C13E9C71D11C03D004F16BE /* SDK_Sockets.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SDK_Sockets.c; path = ../../../../src/SDK_Sockets.c; sourceTree = ""; }; - 7C13E9C81D11C03D004F16BE /* SDK.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDK.h; path = ../../../../src/SDK.h; sourceTree = ""; }; - 7C13E9D01D11C0D7004F16BE /* api_lib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = api_lib.c; path = ../../../../ext/lwip/src/api/api_lib.c; sourceTree = ""; }; - 7C13E9D11D11C0D7004F16BE /* api_msg.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = api_msg.c; path = ../../../../ext/lwip/src/api/api_msg.c; sourceTree = ""; }; - 7C13E9D21D11C0D7004F16BE /* err.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = err.c; path = ../../../../ext/lwip/src/api/err.c; sourceTree = ""; }; - 7C13E9D31D11C0D7004F16BE /* netbuf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = netbuf.c; path = ../../../../ext/lwip/src/api/netbuf.c; sourceTree = ""; }; - 7C13E9D41D11C0D7004F16BE /* netdb.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = netdb.c; path = ../../../../ext/lwip/src/api/netdb.c; sourceTree = ""; }; - 7C13E9D51D11C0D7004F16BE /* netifapi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = netifapi.c; path = ../../../../ext/lwip/src/api/netifapi.c; sourceTree = ""; }; - 7C13E9D61D11C0D7004F16BE /* sockets.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sockets.c; path = ../../../../ext/lwip/src/api/sockets.c; sourceTree = ""; }; - 7C13E9D71D11C0D7004F16BE /* tcpip.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = tcpip.c; path = ../../../../ext/lwip/src/api/tcpip.c; sourceTree = ""; }; - 7C13E9E01D11C0EE004F16BE /* def.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = def.c; path = ../../../../ext/lwip/src/core/def.c; sourceTree = ""; }; - 7C13E9E11D11C0EE004F16BE /* dhcp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = dhcp.c; path = ../../../../ext/lwip/src/core/dhcp.c; sourceTree = ""; }; - 7C13E9E21D11C0EE004F16BE /* dns.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = dns.c; path = ../../../../ext/lwip/src/core/dns.c; sourceTree = ""; }; - 7C13E9E31D11C0EE004F16BE /* init.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = init.c; path = ../../../../ext/lwip/src/core/init.c; sourceTree = ""; }; - 7C13E9E41D11C0EE004F16BE /* mem.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = mem.c; path = ../../../../ext/lwip/src/core/mem.c; sourceTree = ""; }; - 7C13E9E51D11C0EE004F16BE /* memp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = memp.c; path = ../../../../ext/lwip/src/core/memp.c; sourceTree = ""; }; - 7C13E9E61D11C0EE004F16BE /* netif.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = netif.c; path = ../../../../ext/lwip/src/core/netif.c; sourceTree = ""; }; - 7C13E9E71D11C0EE004F16BE /* pbuf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pbuf.c; path = ../../../../ext/lwip/src/core/pbuf.c; sourceTree = ""; }; - 7C13E9E81D11C0EE004F16BE /* raw.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = raw.c; path = ../../../../ext/lwip/src/core/raw.c; sourceTree = ""; }; - 7C13E9E91D11C0EE004F16BE /* stats.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = stats.c; path = ../../../../ext/lwip/src/core/stats.c; sourceTree = ""; }; - 7C13E9EA1D11C0EE004F16BE /* sys.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sys.c; path = ../../../../ext/lwip/src/core/sys.c; sourceTree = ""; }; - 7C13E9EB1D11C0EE004F16BE /* tcp_in.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = tcp_in.c; path = ../../../../ext/lwip/src/core/tcp_in.c; sourceTree = ""; }; - 7C13E9EC1D11C0EE004F16BE /* tcp_out.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = tcp_out.c; path = ../../../../ext/lwip/src/core/tcp_out.c; sourceTree = ""; }; - 7C13E9ED1D11C0EE004F16BE /* tcp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = tcp.c; path = ../../../../ext/lwip/src/core/tcp.c; sourceTree = ""; }; - 7C13E9EE1D11C0EE004F16BE /* timers.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = timers.c; path = ../../../../ext/lwip/src/core/timers.c; sourceTree = ""; }; - 7C13E9EF1D11C0EE004F16BE /* udp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = udp.c; path = ../../../../ext/lwip/src/core/udp.c; sourceTree = ""; }; - 7C13EA001D11C0FC004F16BE /* autoip.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = autoip.c; path = ../../../../ext/lwip/src/core/ipv4/autoip.c; sourceTree = ""; }; - 7C13EA011D11C0FC004F16BE /* icmp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = icmp.c; path = ../../../../ext/lwip/src/core/ipv4/icmp.c; sourceTree = ""; }; - 7C13EA021D11C0FC004F16BE /* igmp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = igmp.c; path = ../../../../ext/lwip/src/core/ipv4/igmp.c; sourceTree = ""; }; - 7C13EA031D11C0FC004F16BE /* inet_chksum.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = inet_chksum.c; path = ../../../../ext/lwip/src/core/ipv4/inet_chksum.c; sourceTree = ""; }; - 7C13EA041D11C0FC004F16BE /* inet.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = inet.c; path = ../../../../ext/lwip/src/core/ipv4/inet.c; sourceTree = ""; }; - 7C13EA051D11C0FC004F16BE /* ip_addr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ip_addr.c; path = ../../../../ext/lwip/src/core/ipv4/ip_addr.c; sourceTree = ""; }; - 7C13EA061D11C0FC004F16BE /* ip_frag.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ip_frag.c; path = ../../../../ext/lwip/src/core/ipv4/ip_frag.c; sourceTree = ""; }; - 7C13EA071D11C0FC004F16BE /* ip.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ip.c; path = ../../../../ext/lwip/src/core/ipv4/ip.c; sourceTree = ""; }; - 7C13EA101D11C10D004F16BE /* etharp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = etharp.c; path = ../../../../ext/lwip/src/netif/etharp.c; sourceTree = ""; }; - 7C13EA111D11C10D004F16BE /* ethernetif.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ethernetif.c; path = ../../../../ext/lwip/src/netif/ethernetif.c; sourceTree = ""; }; - 7C13EA121D11C10D004F16BE /* slipif.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = slipif.c; path = ../../../../ext/lwip/src/netif/slipif.c; sourceTree = ""; }; - 7C13EA161D11C12F004F16BE /* lwipopts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = lwipopts.h; path = ../../../../ext/lwipopts.h; sourceTree = ""; }; - 7C13EA171D11C14B004F16BE /* autoip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = autoip.h; path = ../../../../ext/lwip/src/include/ipv4/lwip/autoip.h; sourceTree = ""; }; - 7C13EA181D11C14B004F16BE /* icmp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = icmp.h; path = ../../../../ext/lwip/src/include/ipv4/lwip/icmp.h; sourceTree = ""; }; - 7C13EA191D11C14B004F16BE /* igmp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = igmp.h; path = ../../../../ext/lwip/src/include/ipv4/lwip/igmp.h; sourceTree = ""; }; - 7C13EA1A1D11C14B004F16BE /* inet_chksum.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = inet_chksum.h; path = ../../../../ext/lwip/src/include/ipv4/lwip/inet_chksum.h; sourceTree = ""; }; - 7C13EA1B1D11C14B004F16BE /* inet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = inet.h; path = ../../../../ext/lwip/src/include/ipv4/lwip/inet.h; sourceTree = ""; }; - 7C13EA1C1D11C14B004F16BE /* ip_addr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ip_addr.h; path = ../../../../ext/lwip/src/include/ipv4/lwip/ip_addr.h; sourceTree = ""; }; - 7C13EA1D1D11C14B004F16BE /* ip_frag.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ip_frag.h; path = ../../../../ext/lwip/src/include/ipv4/lwip/ip_frag.h; sourceTree = ""; }; - 7C13EA1E1D11C14B004F16BE /* ip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ip.h; path = ../../../../ext/lwip/src/include/ipv4/lwip/ip.h; sourceTree = ""; }; - 7C13EA1F1D11C15D004F16BE /* api_msg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = api_msg.h; path = ../../../../ext/lwip/src/include/lwip/api_msg.h; sourceTree = ""; }; - 7C13EA201D11C15D004F16BE /* api.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = api.h; path = ../../../../ext/lwip/src/include/lwip/api.h; sourceTree = ""; }; - 7C13EA211D11C15D004F16BE /* arch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = arch.h; path = ../../../../ext/lwip/src/include/lwip/arch.h; sourceTree = ""; }; - 7C13EA221D11C15D004F16BE /* debug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = debug.h; path = ../../../../ext/lwip/src/include/lwip/debug.h; sourceTree = ""; }; - 7C13EA231D11C15D004F16BE /* def.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = def.h; path = ../../../../ext/lwip/src/include/lwip/def.h; sourceTree = ""; }; - 7C13EA241D11C15D004F16BE /* dhcp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dhcp.h; path = ../../../../ext/lwip/src/include/lwip/dhcp.h; sourceTree = ""; }; - 7C13EA251D11C15D004F16BE /* dns.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dns.h; path = ../../../../ext/lwip/src/include/lwip/dns.h; sourceTree = ""; }; - 7C13EA261D11C15D004F16BE /* err.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = err.h; path = ../../../../ext/lwip/src/include/lwip/err.h; sourceTree = ""; }; - 7C13EA271D11C15D004F16BE /* init.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = init.h; path = ../../../../ext/lwip/src/include/lwip/init.h; sourceTree = ""; }; - 7C13EA281D11C15D004F16BE /* ip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ip.h; path = ../../../../ext/lwip/src/include/lwip/ip.h; sourceTree = ""; }; - 7C13EA291D11C15D004F16BE /* mem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = mem.h; path = ../../../../ext/lwip/src/include/lwip/mem.h; sourceTree = ""; }; - 7C13EA2A1D11C15D004F16BE /* memp_std.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = memp_std.h; path = ../../../../ext/lwip/src/include/lwip/memp_std.h; sourceTree = ""; }; - 7C13EA2B1D11C15D004F16BE /* memp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = memp.h; path = ../../../../ext/lwip/src/include/lwip/memp.h; sourceTree = ""; }; - 7C13EA2C1D11C15D004F16BE /* netbuf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = netbuf.h; path = ../../../../ext/lwip/src/include/lwip/netbuf.h; sourceTree = ""; }; - 7C13EA2D1D11C15D004F16BE /* netdb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = netdb.h; path = ../../../../ext/lwip/src/include/lwip/netdb.h; sourceTree = ""; }; - 7C13EA2E1D11C15D004F16BE /* netif.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = netif.h; path = ../../../../ext/lwip/src/include/lwip/netif.h; sourceTree = ""; }; - 7C13EA2F1D11C15D004F16BE /* netifapi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = netifapi.h; path = ../../../../ext/lwip/src/include/lwip/netifapi.h; sourceTree = ""; }; - 7C13EA301D11C15D004F16BE /* opt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = opt.h; path = ../../../../ext/lwip/src/include/lwip/opt.h; sourceTree = ""; }; - 7C13EA311D11C15D004F16BE /* pbuf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pbuf.h; path = ../../../../ext/lwip/src/include/lwip/pbuf.h; sourceTree = ""; }; - 7C13EA321D11C15D004F16BE /* raw.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = raw.h; path = ../../../../ext/lwip/src/include/lwip/raw.h; sourceTree = ""; }; - 7C13EA331D11C15D004F16BE /* sio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sio.h; path = ../../../../ext/lwip/src/include/lwip/sio.h; sourceTree = ""; }; - 7C13EA341D11C15D004F16BE /* snmp_asn1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = snmp_asn1.h; path = ../../../../ext/lwip/src/include/lwip/snmp_asn1.h; sourceTree = ""; }; - 7C13EA351D11C15D004F16BE /* snmp_msg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = snmp_msg.h; path = ../../../../ext/lwip/src/include/lwip/snmp_msg.h; sourceTree = ""; }; - 7C13EA361D11C15D004F16BE /* snmp_structs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = snmp_structs.h; path = ../../../../ext/lwip/src/include/lwip/snmp_structs.h; sourceTree = ""; }; - 7C13EA371D11C15D004F16BE /* snmp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = snmp.h; path = ../../../../ext/lwip/src/include/lwip/snmp.h; sourceTree = ""; }; - 7C13EA381D11C15D004F16BE /* sockets.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sockets.h; path = ../../../../ext/lwip/src/include/lwip/sockets.h; sourceTree = ""; }; - 7C13EA391D11C15D004F16BE /* stats.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stats.h; path = ../../../../ext/lwip/src/include/lwip/stats.h; sourceTree = ""; }; - 7C13EA3A1D11C15D004F16BE /* sys.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sys.h; path = ../../../../ext/lwip/src/include/lwip/sys.h; sourceTree = ""; }; - 7C13EA3B1D11C15D004F16BE /* tcp_impl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = tcp_impl.h; path = ../../../../ext/lwip/src/include/lwip/tcp_impl.h; sourceTree = ""; }; - 7C13EA3C1D11C15D004F16BE /* tcp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = tcp.h; path = ../../../../ext/lwip/src/include/lwip/tcp.h; sourceTree = ""; }; - 7C13EA3D1D11C15D004F16BE /* tcpip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = tcpip.h; path = ../../../../ext/lwip/src/include/lwip/tcpip.h; sourceTree = ""; }; - 7C13EA3E1D11C15D004F16BE /* timers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = timers.h; path = ../../../../ext/lwip/src/include/lwip/timers.h; sourceTree = ""; }; - 7C13EA3F1D11C15D004F16BE /* udp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = udp.h; path = ../../../../ext/lwip/src/include/lwip/udp.h; sourceTree = ""; }; - 7C13EA411D11C342004F16BE /* http_parser.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = http_parser.c; path = "../../../../zerotierone/ext/http-parser/http_parser.c"; sourceTree = ""; }; - 7C13EA421D11C342004F16BE /* http_parser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = http_parser.h; path = "../../../../zerotierone/ext/http-parser/http_parser.h"; sourceTree = ""; }; - 7C13EA441D11C355004F16BE /* lz4.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lz4.c; path = ../../../../zerotierone/ext/lz4/lz4.c; sourceTree = ""; }; - 7C13EA451D11C355004F16BE /* lz4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = lz4.h; path = ../../../../zerotierone/ext/lz4/lz4.h; sourceTree = ""; }; - 7C3F4C791D0618670033F5EB /* ZeroTierUnity.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ZeroTierUnity.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - 7C3F4C7C1D0618670033F5EB /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 7C3F4C761D0618670033F5EB /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 7C13EA401D11C325004F16BE /* ext */ = { - isa = PBXGroup; - children = ( - 7C13EA441D11C355004F16BE /* lz4.c */, - 7C13EA451D11C355004F16BE /* lz4.h */, - 7C13EA411D11C342004F16BE /* http_parser.c */, - 7C13EA421D11C342004F16BE /* http_parser.h */, - ); - name = ext; - sourceTree = ""; - }; - 7C24164B1D073F2A000851B2 /* ZeroTier */ = { - isa = PBXGroup; - children = ( - 7C13E99A1D11C028004F16BE /* Arp.cpp */, - 7C13E99B1D11C028004F16BE /* Arp.hpp */, - 7C13E99C1D11C028004F16BE /* BackgroundResolver.cpp */, - 7C13E99D1D11C028004F16BE /* BackgroundResolver.hpp */, - 7C13E99E1D11C028004F16BE /* Binder.hpp */, - 7C13E99F1D11C028004F16BE /* BSDEthernetTap.cpp */, - 7C13E9A01D11C028004F16BE /* BSDEthernetTap.hpp */, - 7C13E9A11D11C028004F16BE /* Http.cpp */, - 7C13E9A21D11C028004F16BE /* Http.hpp */, - 7C13E9A51D11C028004F16BE /* OSUtils.cpp */, - 7C13E9A61D11C028004F16BE /* OSUtils.hpp */, - 7C13E9A91D11C028004F16BE /* Phy.hpp */, - 7C13E9AA1D11C028004F16BE /* PortMapper.cpp */, - 7C13E9AB1D11C028004F16BE /* PortMapper.hpp */, - 7C13E9AC1D11C028004F16BE /* RoutingTable.cpp */, - 7C13E9AD1D11C028004F16BE /* RoutingTable.hpp */, - 7C13E9AE1D11C028004F16BE /* Thread.hpp */, - 7C13E9931D11C013004F16BE /* ControlPlane.cpp */, - 7C13E9941D11C013004F16BE /* ControlPlane.hpp */, - 7C13E9951D11C013004F16BE /* OneService.cpp */, - 7C13E9961D11C013004F16BE /* OneService.hpp */, - 7C13E93B1D11BFCD004F16BE /* Address.hpp */, - 7C13E93C1D11BFCD004F16BE /* Array.hpp */, - 7C13E93D1D11BFCD004F16BE /* AtomicCounter.hpp */, - 7C13E93E1D11BFCD004F16BE /* BinarySemaphore.hpp */, - 7C13E93F1D11BFCD004F16BE /* Buffer.hpp */, - 7C13E9401D11BFCD004F16BE /* C25519.cpp */, - 7C13E9411D11BFCD004F16BE /* C25519.hpp */, - 7C13E9421D11BFCD004F16BE /* CertificateOfMembership.cpp */, - 7C13E9431D11BFCD004F16BE /* CertificateOfMembership.hpp */, - 7C13E9441D11BFCD004F16BE /* Cluster.cpp */, - 7C13E9451D11BFCD004F16BE /* Cluster.hpp */, - 7C13E9461D11BFCD004F16BE /* Constants.hpp */, - 7C13E9471D11BFCD004F16BE /* DeferredPackets.cpp */, - 7C13E9481D11BFCD004F16BE /* DeferredPackets.hpp */, - 7C13E9491D11BFCD004F16BE /* Dictionary.cpp */, - 7C13E94A1D11BFCD004F16BE /* Dictionary.hpp */, - 7C13E94B1D11BFCD004F16BE /* Hashtable.hpp */, - 7C13E94C1D11BFCD004F16BE /* Identity.cpp */, - 7C13E94D1D11BFCD004F16BE /* Identity.hpp */, - 7C13E94E1D11BFCD004F16BE /* IncomingPacket.cpp */, - 7C13E94F1D11BFCD004F16BE /* IncomingPacket.hpp */, - 7C13E9501D11BFCD004F16BE /* InetAddress.cpp */, - 7C13E9511D11BFCD004F16BE /* InetAddress.hpp */, - 7C13E9521D11BFCD004F16BE /* MAC.hpp */, - 7C13E9531D11BFCD004F16BE /* Multicaster.cpp */, - 7C13E9541D11BFCD004F16BE /* Multicaster.hpp */, - 7C13E9551D11BFCD004F16BE /* MulticastGroup.hpp */, - 7C13E9561D11BFCD004F16BE /* Mutex.hpp */, - 7C13E9571D11BFCD004F16BE /* Network.cpp */, - 7C13E9581D11BFCD004F16BE /* Network.hpp */, - 7C13E9591D11BFCD004F16BE /* NetworkConfig.cpp */, - 7C13E95A1D11BFCD004F16BE /* NetworkConfig.hpp */, - 7C13E95B1D11BFCD004F16BE /* NetworkConfigRequestMetaData.hpp */, - 7C13E95C1D11BFCD004F16BE /* NetworkController.hpp */, - 7C13E95D1D11BFCD004F16BE /* Node.cpp */, - 7C13E95E1D11BFCD004F16BE /* Node.hpp */, - 7C13E95F1D11BFCD004F16BE /* NonCopyable.hpp */, - 7C13E9601D11BFCD004F16BE /* OutboundMulticast.cpp */, - 7C13E9611D11BFCD004F16BE /* OutboundMulticast.hpp */, - 7C13E9621D11BFCD004F16BE /* Packet.cpp */, - 7C13E9631D11BFCD004F16BE /* Packet.hpp */, - 7C13E9641D11BFCD004F16BE /* Path.cpp */, - 7C13E9651D11BFCD004F16BE /* Path.hpp */, - 7C13E9661D11BFCD004F16BE /* Peer.cpp */, - 7C13E9671D11BFCD004F16BE /* Peer.hpp */, - 7C13E9681D11BFCD004F16BE /* Poly1305.cpp */, - 7C13E9691D11BFCD004F16BE /* Poly1305.hpp */, - 7C13E96A1D11BFCD004F16BE /* RuntimeEnvironment.hpp */, - 7C13E96B1D11BFCD004F16BE /* Salsa20.cpp */, - 7C13E96C1D11BFCD004F16BE /* Salsa20.hpp */, - 7C13E96D1D11BFCD004F16BE /* SelfAwareness.cpp */, - 7C13E96E1D11BFCD004F16BE /* SelfAwareness.hpp */, - 7C13E96F1D11BFCD004F16BE /* SHA512.cpp */, - 7C13E9701D11BFCD004F16BE /* SHA512.hpp */, - 7C13E9711D11BFCD004F16BE /* SharedPtr.hpp */, - 7C13E9721D11BFCD004F16BE /* Switch.cpp */, - 7C13E9731D11BFCD004F16BE /* Switch.hpp */, - 7C13E9741D11BFCD004F16BE /* Topology.cpp */, - 7C13E9751D11BFCD004F16BE /* Topology.hpp */, - 7C13E9761D11BFCD004F16BE /* Utils.cpp */, - 7C13E9771D11BFCD004F16BE /* Utils.hpp */, - 7C13E9781D11BFCD004F16BE /* World.hpp */, - ); - name = ZeroTier; - sourceTree = ""; - }; - 7C24164C1D073F43000851B2 /* lwIP */ = { - isa = PBXGroup; - children = ( - 7C13EA1F1D11C15D004F16BE /* api_msg.h */, - 7C13EA201D11C15D004F16BE /* api.h */, - 7C13EA211D11C15D004F16BE /* arch.h */, - 7C13EA221D11C15D004F16BE /* debug.h */, - 7C13EA231D11C15D004F16BE /* def.h */, - 7C13EA241D11C15D004F16BE /* dhcp.h */, - 7C13EA251D11C15D004F16BE /* dns.h */, - 7C13EA261D11C15D004F16BE /* err.h */, - 7C13EA271D11C15D004F16BE /* init.h */, - 7C13EA281D11C15D004F16BE /* ip.h */, - 7C13EA291D11C15D004F16BE /* mem.h */, - 7C13EA2A1D11C15D004F16BE /* memp_std.h */, - 7C13EA2B1D11C15D004F16BE /* memp.h */, - 7C13EA2C1D11C15D004F16BE /* netbuf.h */, - 7C13EA2D1D11C15D004F16BE /* netdb.h */, - 7C13EA2E1D11C15D004F16BE /* netif.h */, - 7C13EA2F1D11C15D004F16BE /* netifapi.h */, - 7C13EA301D11C15D004F16BE /* opt.h */, - 7C13EA311D11C15D004F16BE /* pbuf.h */, - 7C13EA321D11C15D004F16BE /* raw.h */, - 7C13EA331D11C15D004F16BE /* sio.h */, - 7C13EA341D11C15D004F16BE /* snmp_asn1.h */, - 7C13EA351D11C15D004F16BE /* snmp_msg.h */, - 7C13EA361D11C15D004F16BE /* snmp_structs.h */, - 7C13EA371D11C15D004F16BE /* snmp.h */, - 7C13EA381D11C15D004F16BE /* sockets.h */, - 7C13EA391D11C15D004F16BE /* stats.h */, - 7C13EA3A1D11C15D004F16BE /* sys.h */, - 7C13EA3B1D11C15D004F16BE /* tcp_impl.h */, - 7C13EA3C1D11C15D004F16BE /* tcp.h */, - 7C13EA3D1D11C15D004F16BE /* tcpip.h */, - 7C13EA3E1D11C15D004F16BE /* timers.h */, - 7C13EA3F1D11C15D004F16BE /* udp.h */, - 7C13EA171D11C14B004F16BE /* autoip.h */, - 7C13EA181D11C14B004F16BE /* icmp.h */, - 7C13EA191D11C14B004F16BE /* igmp.h */, - 7C13EA1A1D11C14B004F16BE /* inet_chksum.h */, - 7C13EA1B1D11C14B004F16BE /* inet.h */, - 7C13EA1C1D11C14B004F16BE /* ip_addr.h */, - 7C13EA1D1D11C14B004F16BE /* ip_frag.h */, - 7C13EA1E1D11C14B004F16BE /* ip.h */, - 7C13EA161D11C12F004F16BE /* lwipopts.h */, - 7C13EA101D11C10D004F16BE /* etharp.c */, - 7C13EA111D11C10D004F16BE /* ethernetif.c */, - 7C13EA121D11C10D004F16BE /* slipif.c */, - 7C13EA001D11C0FC004F16BE /* autoip.c */, - 7C13EA011D11C0FC004F16BE /* icmp.c */, - 7C13EA021D11C0FC004F16BE /* igmp.c */, - 7C13EA031D11C0FC004F16BE /* inet_chksum.c */, - 7C13EA041D11C0FC004F16BE /* inet.c */, - 7C13EA051D11C0FC004F16BE /* ip_addr.c */, - 7C13EA061D11C0FC004F16BE /* ip_frag.c */, - 7C13EA071D11C0FC004F16BE /* ip.c */, - 7C13E9E01D11C0EE004F16BE /* def.c */, - 7C13E9E11D11C0EE004F16BE /* dhcp.c */, - 7C13E9E21D11C0EE004F16BE /* dns.c */, - 7C13E9E31D11C0EE004F16BE /* init.c */, - 7C13E9E41D11C0EE004F16BE /* mem.c */, - 7C13E9E51D11C0EE004F16BE /* memp.c */, - 7C13E9E61D11C0EE004F16BE /* netif.c */, - 7C13E9E71D11C0EE004F16BE /* pbuf.c */, - 7C13E9E81D11C0EE004F16BE /* raw.c */, - 7C13E9E91D11C0EE004F16BE /* stats.c */, - 7C13E9EA1D11C0EE004F16BE /* sys.c */, - 7C13E9EB1D11C0EE004F16BE /* tcp_in.c */, - 7C13E9EC1D11C0EE004F16BE /* tcp_out.c */, - 7C13E9ED1D11C0EE004F16BE /* tcp.c */, - 7C13E9EE1D11C0EE004F16BE /* timers.c */, - 7C13E9EF1D11C0EE004F16BE /* udp.c */, - 7C13E9D01D11C0D7004F16BE /* api_lib.c */, - 7C13E9D11D11C0D7004F16BE /* api_msg.c */, - 7C13E9D21D11C0D7004F16BE /* err.c */, - 7C13E9D31D11C0D7004F16BE /* netbuf.c */, - 7C13E9D41D11C0D7004F16BE /* netdb.c */, - 7C13E9D51D11C0D7004F16BE /* netifapi.c */, - 7C13E9D61D11C0D7004F16BE /* sockets.c */, - 7C13E9D71D11C0D7004F16BE /* tcpip.c */, - ); - name = lwIP; - sourceTree = ""; - }; - 7C24169F1D074282000851B2 /* zt_api */ = { - isa = PBXGroup; - children = ( - 7C13E9BB1D11C03C004F16BE /* SDK_Debug.c */, - 7C13E9BC1D11C03C004F16BE /* SDK_Debug.h */, - 7C13E9BD1D11C03C004F16BE /* SDK_EthernetTap.cpp */, - 7C13E9BE1D11C03C004F16BE /* SDK_EthernetTap.hpp */, - 7C13E9C01D11C03C004F16BE /* SDK_LWIPStack.hpp */, - 7C13E9C11D11C03C004F16BE /* SDK_Proxy.cpp */, - 7C13E9C21D11C03C004F16BE /* SDK_RPC.c */, - 7C13E9C31D11C03C004F16BE /* SDK_RPC.h */, - 7C13E9C41D11C03C004F16BE /* SDK_ServiceSetup.cpp */, - 7C13E9C51D11C03C004F16BE /* SDK_ServiceSetup.hpp */, - 7C13E9C61D11C03D004F16BE /* SDK_Signatures.h */, - 7C13E9C71D11C03D004F16BE /* SDK_Sockets.c */, - 7C13E9C81D11C03D004F16BE /* SDK.h */, - ); - name = zt_api; - sourceTree = ""; - }; - 7C3F4C701D0618670033F5EB = { - isa = PBXGroup; - children = ( - 7C13EA401D11C325004F16BE /* ext */, - 7C24169F1D074282000851B2 /* zt_api */, - 7C24164C1D073F43000851B2 /* lwIP */, - 7C24164B1D073F2A000851B2 /* ZeroTier */, - 7C3F4C7B1D0618670033F5EB /* ZeroTierUnity */, - 7C3F4C7A1D0618670033F5EB /* Products */, - ); - sourceTree = ""; - }; - 7C3F4C7A1D0618670033F5EB /* Products */ = { - isa = PBXGroup; - children = ( - 7C3F4C791D0618670033F5EB /* ZeroTierUnity.bundle */, - ); - name = Products; - sourceTree = ""; - }; - 7C3F4C7B1D0618670033F5EB /* ZeroTierUnity */ = { - isa = PBXGroup; - children = ( - 7C3F4C7C1D0618670033F5EB /* Info.plist */, - ); - path = ZeroTierUnity; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 7C3F4C781D0618670033F5EB /* ZeroTierUnity */ = { - isa = PBXNativeTarget; - buildConfigurationList = 7C3F4C7F1D0618670033F5EB /* Build configuration list for PBXNativeTarget "ZeroTierUnity" */; - buildPhases = ( - 7C3F4C751D0618670033F5EB /* Sources */, - 7C3F4C761D0618670033F5EB /* Frameworks */, - 7C3F4C771D0618670033F5EB /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = ZeroTierUnity; - productName = ZeroTierUnity; - productReference = 7C3F4C791D0618670033F5EB /* ZeroTierUnity.bundle */; - productType = "com.apple.product-type.bundle"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 7C3F4C711D0618670033F5EB /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0730; - ORGANIZATIONNAME = "ZeroTier Inc."; - TargetAttributes = { - 7C3F4C781D0618670033F5EB = { - CreatedOnToolsVersion = 7.3; - }; - }; - }; - buildConfigurationList = 7C3F4C741D0618670033F5EB /* Build configuration list for PBXProject "ZeroTierUnity" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = 7C3F4C701D0618670033F5EB; - productRefGroup = 7C3F4C7A1D0618670033F5EB /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 7C3F4C781D0618670033F5EB /* ZeroTierUnity */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 7C3F4C771D0618670033F5EB /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 7C3F4C751D0618670033F5EB /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 7C13EA0A1D11C0FC004F16BE /* igmp.c in Sources */, - 7C13EA431D11C342004F16BE /* http_parser.c in Sources */, - 7C13E9821D11BFCD004F16BE /* Network.cpp in Sources */, - 7C13E97D1D11BFCD004F16BE /* Dictionary.cpp in Sources */, - 7C13E9B61D11C028004F16BE /* OSUtils.cpp in Sources */, - 7C13E9F61D11C0EE004F16BE /* netif.c in Sources */, - 7C13E97F1D11BFCD004F16BE /* IncomingPacket.cpp in Sources */, - 7C13E9FB1D11C0EE004F16BE /* tcp_in.c in Sources */, - 7C13E9C91D11C03D004F16BE /* SDK_Debug.c in Sources */, - 7C13E97C1D11BFCD004F16BE /* DeferredPackets.cpp in Sources */, - 7C13E9851D11BFCD004F16BE /* OutboundMulticast.cpp in Sources */, - 7C13E9B31D11C028004F16BE /* BSDEthernetTap.cpp in Sources */, - 7C13E9D81D11C0D7004F16BE /* api_lib.c in Sources */, - 7C13E97B1D11BFCD004F16BE /* Cluster.cpp in Sources */, - 7C13E9991D11C013004F16BE /* OneService.cpp in Sources */, - 7C13E9F11D11C0EE004F16BE /* dhcp.c in Sources */, - 7C13E9CC1D11C03D004F16BE /* SDK_Proxy.cpp in Sources */, - 7C13E98A1D11BFCD004F16BE /* Salsa20.cpp in Sources */, - 7C13E9CD1D11C03D004F16BE /* SDK_RPC.c in Sources */, - 7C13E9DA1D11C0D7004F16BE /* err.c in Sources */, - 7C13E9CE1D11C03D004F16BE /* SDK_ServiceSetup.cpp in Sources */, - 7C13EA0C1D11C0FC004F16BE /* inet.c in Sources */, - 7C13E9F31D11C0EE004F16BE /* init.c in Sources */, - 7C13E9861D11BFCD004F16BE /* Packet.cpp in Sources */, - 7C13EA151D11C10D004F16BE /* slipif.c in Sources */, - 7C13E9FC1D11C0EE004F16BE /* tcp_out.c in Sources */, - 7C13E9FE1D11C0EE004F16BE /* timers.c in Sources */, - 7C13E9791D11BFCD004F16BE /* C25519.cpp in Sources */, - 7C13E9DC1D11C0D7004F16BE /* netdb.c in Sources */, - 7C13E9FA1D11C0EE004F16BE /* sys.c in Sources */, - 7C13E9DE1D11C0D7004F16BE /* sockets.c in Sources */, - 7C13EA461D11C355004F16BE /* lz4.c in Sources */, - 7C13E9FF1D11C0EE004F16BE /* udp.c in Sources */, - 7C13E9DB1D11C0D7004F16BE /* netbuf.c in Sources */, - 7C13E98F1D11BFCD004F16BE /* Utils.cpp in Sources */, - 7C13E9F01D11C0EE004F16BE /* def.c in Sources */, - 7C13E9811D11BFCD004F16BE /* Multicaster.cpp in Sources */, - 7C13EA0D1D11C0FC004F16BE /* ip_addr.c in Sources */, - 7C13E98D1D11BFCD004F16BE /* Switch.cpp in Sources */, - 7C13E9871D11BFCD004F16BE /* Path.cpp in Sources */, - 7C13EA141D11C10D004F16BE /* ethernetif.c in Sources */, - 7C13E9841D11BFCD004F16BE /* Node.cpp in Sources */, - 7C13EA131D11C10D004F16BE /* etharp.c in Sources */, - 7C13EA0B1D11C0FC004F16BE /* inet_chksum.c in Sources */, - 7C13E9B21D11C028004F16BE /* BackgroundResolver.cpp in Sources */, - 7C13E9F51D11C0EE004F16BE /* memp.c in Sources */, - 7C13E9B11D11C028004F16BE /* Arp.cpp in Sources */, - 7C13E9F81D11C0EE004F16BE /* raw.c in Sources */, - 7C13E9DD1D11C0D7004F16BE /* netifapi.c in Sources */, - 7C13EA0F1D11C0FC004F16BE /* ip.c in Sources */, - 7C13EA0E1D11C0FC004F16BE /* ip_frag.c in Sources */, - 7C13E9831D11BFCD004F16BE /* NetworkConfig.cpp in Sources */, - 7C13E9F71D11C0EE004F16BE /* pbuf.c in Sources */, - 7C13E9F41D11C0EE004F16BE /* mem.c in Sources */, - 7C13E9981D11C013004F16BE /* ControlPlane.cpp in Sources */, - 7C13E98E1D11BFCD004F16BE /* Topology.cpp in Sources */, - 7C13E9B81D11C028004F16BE /* PortMapper.cpp in Sources */, - 7C13E9F91D11C0EE004F16BE /* stats.c in Sources */, - 7C13E9F21D11C0EE004F16BE /* dns.c in Sources */, - 7C13E9CA1D11C03D004F16BE /* SDK_EthernetTap.cpp in Sources */, - 7C13E97A1D11BFCD004F16BE /* CertificateOfMembership.cpp in Sources */, - 7C13E9881D11BFCD004F16BE /* Peer.cpp in Sources */, - 7C13EA091D11C0FC004F16BE /* icmp.c in Sources */, - 7C13EA081D11C0FC004F16BE /* autoip.c in Sources */, - 7C13E98C1D11BFCD004F16BE /* SHA512.cpp in Sources */, - 7C13E9B91D11C028004F16BE /* RoutingTable.cpp in Sources */, - 7C13E9891D11BFCD004F16BE /* Poly1305.cpp in Sources */, - 7C13E9FD1D11C0EE004F16BE /* tcp.c in Sources */, - 7C13E9B41D11C028004F16BE /* Http.cpp in Sources */, - 7C13E9CF1D11C03D004F16BE /* SDK_Sockets.c in Sources */, - 7C13E9D91D11C0D7004F16BE /* api_msg.c in Sources */, - 7C13E9801D11BFCD004F16BE /* InetAddress.cpp in Sources */, - 7C13E9DF1D11C0D7004F16BE /* tcpip.c in Sources */, - 7C13E98B1D11BFCD004F16BE /* SelfAwareness.cpp in Sources */, - 7C13E97E1D11BFCD004F16BE /* Identity.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - 7C3F4C7D1D0618670033F5EB /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "-"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.11; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = macosx; - }; - name = Debug; - }; - 7C3F4C7E1D0618670033F5EB /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "-"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.11; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = macosx; - }; - name = Release; - }; - 7C3F4C801D0618670033F5EB /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - COMBINE_HIDPI_IMAGES = YES; - HEADER_SEARCH_PATHS = ( - "$(SRCROOT)/../../../../src/", - "$(SRCROOT)/../../../../zerotierone/include/", - "$(SRCROOT)/../../../../ext/lwip/src/include/", - "$(SRCROOT)/../../../../ext/lwip/src/include/ipv4/", - "$(SRCROOT)/../../../../zerotierone/", - ); - INFOPLIST_FILE = ZeroTierUnity/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Bundles"; - OTHER_CFLAGS = ( - "-DNETCON_SERVICE", - "-D__UNITY_3D__", - "-DZT_SERVICE_NETCON", - "-g", - ); - PRODUCT_BUNDLE_IDENTIFIER = zerotier.ZeroTierUnity; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; - }; - 7C3F4C811D0618670033F5EB /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - COMBINE_HIDPI_IMAGES = YES; - HEADER_SEARCH_PATHS = ( - "$(SRCROOT)/../../../../src/", - "$(SRCROOT)/../../../../zerotierone/include/", - "$(SRCROOT)/../../../../ext/lwip/src/include/", - "$(SRCROOT)/../../../../ext/lwip/src/include/ipv4/", - "$(SRCROOT)/../../../../zerotierone/", - ); - INFOPLIST_FILE = ZeroTierUnity/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Bundles"; - OTHER_CFLAGS = ( - "-DNETCON_SERVICE", - "-D__UNITY_3D__", - "-DZT_SERVICE_NETCON", - "-g", - ); - PRODUCT_BUNDLE_IDENTIFIER = zerotier.ZeroTierUnity; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 7C3F4C741D0618670033F5EB /* Build configuration list for PBXProject "ZeroTierUnity" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 7C3F4C7D1D0618670033F5EB /* Debug */, - 7C3F4C7E1D0618670033F5EB /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 7C3F4C7F1D0618670033F5EB /* Build configuration list for PBXNativeTarget "ZeroTierUnity" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 7C3F4C801D0618670033F5EB /* Debug */, - 7C3F4C811D0618670033F5EB /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 7C3F4C711D0618670033F5EB /* Project object */; -} diff --git a/integrations/unity3d/osx_bundle/ZeroTierUnity/ZeroTierUnity.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/integrations/unity3d/osx_bundle/ZeroTierUnity/ZeroTierUnity.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 29d513d..0000000 --- a/integrations/unity3d/osx_bundle/ZeroTierUnity/ZeroTierUnity.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/integrations/unity3d/osx_bundle/ZeroTierUnity/ZeroTierUnity.xcodeproj/project.xcworkspace/xcuserdata/Joseph.xcuserdatad/UserInterfaceState.xcuserstate b/integrations/unity3d/osx_bundle/ZeroTierUnity/ZeroTierUnity.xcodeproj/project.xcworkspace/xcuserdata/Joseph.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index 0bdb44e52a8fb84da92286af9c438ec92d12032c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45910 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 EKgv7_=>Px# diff --git a/integrations/unity3d/osx_bundle/ZeroTierUnity/ZeroTierUnity.xcodeproj/xcuserdata/Joseph.xcuserdatad/xcschemes/ZeroTierUnity.xcscheme b/integrations/unity3d/osx_bundle/ZeroTierUnity/ZeroTierUnity.xcodeproj/xcuserdata/Joseph.xcuserdatad/xcschemes/ZeroTierUnity.xcscheme deleted file mode 100644 index e0a2d83..0000000 --- a/integrations/unity3d/osx_bundle/ZeroTierUnity/ZeroTierUnity.xcodeproj/xcuserdata/Joseph.xcuserdatad/xcschemes/ZeroTierUnity.xcscheme +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/integrations/unity3d/osx_bundle/ZeroTierUnity/ZeroTierUnity.xcodeproj/xcuserdata/Joseph.xcuserdatad/xcschemes/xcschememanagement.plist b/integrations/unity3d/osx_bundle/ZeroTierUnity/ZeroTierUnity.xcodeproj/xcuserdata/Joseph.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index 2656a7f..0000000 --- a/integrations/unity3d/osx_bundle/ZeroTierUnity/ZeroTierUnity.xcodeproj/xcuserdata/Joseph.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - SchemeUserState - - ZeroTierUnity.xcscheme - - orderHint - 0 - - - SuppressBuildableAutocreation - - 7C3F4C781D0618670033F5EB - - primary - - - - - diff --git a/integrations/unity3d/osx_bundle/ZeroTierUnity/ZeroTierUnity/Info.plist b/integrations/unity3d/osx_bundle/ZeroTierUnity/ZeroTierUnity/Info.plist deleted file mode 100644 index a3ef5c8..0000000 --- a/integrations/unity3d/osx_bundle/ZeroTierUnity/ZeroTierUnity/Info.plist +++ /dev/null @@ -1,28 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - NSHumanReadableCopyright - Copyright © 2016 ZeroTier Inc. All rights reserved. - NSPrincipalClass - - - diff --git a/integrations/unity3d/unity3d_zt_sdk.md b/integrations/unity3d/unity3d_zt_sdk.md deleted file mode 100644 index ee2e772..0000000 --- a/integrations/unity3d/unity3d_zt_sdk.md +++ /dev/null @@ -1,84 +0,0 @@ -Unity3D + ZeroTier SDK -==== - -Welcome! - -We want your Unity apps to talk *directly* over a flat, secure, no-config virtual network without sending everything into the "cloud". Thus, we introduce the ZeroTier-Unity3D integration! - -Our implementation currently intends to be the bare minimum required to get your Unity application to talk over ZeroTier virtual networks. As a result, we've created an API that is very similar to the built-in Unity LLAPI. It's possible that higher-level functionality could be added in the future. - -*** -## Adding ZeroTier to your Unity app - -**Step 1: Create virtual ZeroTier [virtual network](https://my.zerotier.com/)** - -**Step 2: Add plugin** - - Create a folder called `Plugins` in `Assets` - - Place `ZeroTierUnity.bundle` in that folder - -**Step 3: Add script to some `GameObject`** - - Drag our `ZeroTier.cs` native plugin wrapper onto any `GameObject` - - -*** -## Examples - -Calling `ZeroTier.Init()` will start the network service in a separate thread. You can check if the service is running by checking `ZeroTier.IsRunning()`. Then, connecting and sending data to another endpoint would look something like the following: - -``` -public void zt_sample_network_test_thread() -{ - // Prepare sample data buffer - byte[] buffer = new byte[1024]; - Stream stream = new MemoryStream(buffer); - BinaryFormatter f = new BinaryFormatter(); - f.Serialize ( stream , "Welcome to the machine! (from Unity3D)" ); - - // Connect and send - int error; - Connect (0, "192.168.0.6", 8887, out error); - Send(connfd,buffer,0, out error); -} -``` - -Finally, when you're done running the service you can call `ZeroTier.Terminate()` - -*** -## API - -The API is designed to resemble the Unity LLAPI, so you'll see a few familiar functions but with a slight twist. - -- `Join(nwid)`: Joins a ZeroTier virtual network -- `Leave(nwid)`: Leaves a ZeroTier virtual network -- `AddHost(port)`: Creates a socket, and binds to that socket on the address and port given -- `Connect(fd, ip_address, port, out error)`: Connects to an endpoint associated with the given `fd` -- `Send(fd, buf, pos, out error)`: Sends data to the endpoint associated with the given `fd` -- `Recv(fd, buf, out error)`: Receives data from an endpoint associated with the given `fd` -- `Disconnect(fd)`: Closes a connection with an endpoint - -*** -## Design and structure of the ZeroTier Unity OSX Bundle - -XCode: -New XCode project -Select Cocoa bundle as target -Add C linkages to external functions -Build as 64bit (not universal) - -Unity: -Select x86_64 build target in `Build Settings` -In new C# script asset: - -``` -[DllImport ("ZeroTierUnity")] -private static extern int unity_start_service (); -``` - -Add asset to GameObject -Start ZT service - -*** -## Future Roadmap -With the ZeroTier sockets API in place, higher-level functionality such as lobbies, chat, and object synchronization could easily be built on top. - -