updated
This commit is contained in:
194
integrations/unity3d/Assets/CameraControl.js
Normal file
194
integrations/unity3d/Assets/CameraControl.js
Normal file
@@ -0,0 +1,194 @@
|
||||
|
||||
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.<Renderer>().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.<Renderer>().sharedMaterial = selectedObjectsMaterial[currentItem];
|
||||
}
|
||||
|
||||
// Clear both arrays
|
||||
selectedObjects.Clear();
|
||||
selectedObjectsMaterial.Clear();
|
||||
}
|
||||
89
integrations/unity3d/Assets/Demo.cs
Normal file
89
integrations/unity3d/Assets/Demo.cs
Normal file
@@ -0,0 +1,89 @@
|
||||
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<Text> ()[0];
|
||||
if (text) {
|
||||
text.text = IsRunning() ? "ZeroTier Status: Online" : "ZeroTier Status: Offline";
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
BIN
integrations/unity3d/Assets/MainScene.unity
Normal file
BIN
integrations/unity3d/Assets/MainScene.unity
Normal file
Binary file not shown.
8
integrations/unity3d/Assets/MyZeroTier.cs
Normal file
8
integrations/unity3d/Assets/MyZeroTier.cs
Normal file
@@ -0,0 +1,8 @@
|
||||
using UnityEngine;
|
||||
using System.Collections;
|
||||
|
||||
public class MyZeroTier : MonoBehaviour {
|
||||
void Start() {
|
||||
Application.OpenURL("https://my.zerotier.com");
|
||||
}
|
||||
}
|
||||
1
integrations/unity3d/Assets/WorldMain.cs
Normal file
1
integrations/unity3d/Assets/WorldMain.cs
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
BIN
integrations/unity3d/Assets/ZT.mat
Normal file
BIN
integrations/unity3d/Assets/ZT.mat
Normal file
Binary file not shown.
282
integrations/unity3d/Assets/ZeroTier.cs
Normal file
282
integrations/unity3d/Assets/ZeroTier.cs
Normal file
@@ -0,0 +1,282 @@
|
||||
/*
|
||||
* 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 <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* --
|
||||
*
|
||||
* 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);
|
||||
}
|
||||
}
|
||||
55
integrations/unity3d/Assets/ZeroTierUtils.cs
Normal file
55
integrations/unity3d/Assets/ZeroTierUtils.cs
Normal file
@@ -0,0 +1,55 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
1
integrations/unity3d/Assets/smcs.rsp
Normal file
1
integrations/unity3d/Assets/smcs.rsp
Normal file
@@ -0,0 +1 @@
|
||||
-unsafe
|
||||
BIN
integrations/unity3d/Assets/zerotier-icon.png
Normal file
BIN
integrations/unity3d/Assets/zerotier-icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 26 KiB |
@@ -0,0 +1,747 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
7C2416481D073B5C000851B2 /* Phy.hpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C3F4C941D06267B0033F5EB /* Phy.hpp */; };
|
||||
7C24164A1D073E54000851B2 /* LWIPStack.hpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C2416491D073DEA000851B2 /* LWIPStack.hpp */; };
|
||||
7C2416551D073F5F000851B2 /* api_lib.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C24164D1D073F5F000851B2 /* api_lib.c */; };
|
||||
7C2416561D073F5F000851B2 /* api_msg.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C24164E1D073F5F000851B2 /* api_msg.c */; };
|
||||
7C2416571D073F5F000851B2 /* err.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C24164F1D073F5F000851B2 /* err.c */; };
|
||||
7C2416581D073F5F000851B2 /* netbuf.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C2416501D073F5F000851B2 /* netbuf.c */; };
|
||||
7C2416591D073F5F000851B2 /* netdb.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C2416511D073F5F000851B2 /* netdb.c */; };
|
||||
7C24165A1D073F5F000851B2 /* netifapi.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C2416521D073F5F000851B2 /* netifapi.c */; };
|
||||
7C24165B1D073F5F000851B2 /* sockets.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C2416531D073F5F000851B2 /* sockets.c */; };
|
||||
7C24165C1D073F5F000851B2 /* tcpip.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C2416541D073F5F000851B2 /* tcpip.c */; };
|
||||
7C24166D1D073F71000851B2 /* def.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C24165D1D073F71000851B2 /* def.c */; };
|
||||
7C24166E1D073F71000851B2 /* dhcp.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C24165E1D073F71000851B2 /* dhcp.c */; };
|
||||
7C24166F1D073F71000851B2 /* dns.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C24165F1D073F71000851B2 /* dns.c */; };
|
||||
7C2416701D073F71000851B2 /* init.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C2416601D073F71000851B2 /* init.c */; };
|
||||
7C2416711D073F71000851B2 /* mem.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C2416611D073F71000851B2 /* mem.c */; };
|
||||
7C2416721D073F71000851B2 /* memp.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C2416621D073F71000851B2 /* memp.c */; };
|
||||
7C2416731D073F71000851B2 /* netif.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C2416631D073F71000851B2 /* netif.c */; };
|
||||
7C2416741D073F72000851B2 /* pbuf.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C2416641D073F71000851B2 /* pbuf.c */; };
|
||||
7C2416751D073F72000851B2 /* raw.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C2416651D073F71000851B2 /* raw.c */; };
|
||||
7C2416761D073F72000851B2 /* stats.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C2416661D073F71000851B2 /* stats.c */; };
|
||||
7C2416771D073F72000851B2 /* sys.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C2416671D073F71000851B2 /* sys.c */; };
|
||||
7C2416781D073F72000851B2 /* tcp_in.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C2416681D073F71000851B2 /* tcp_in.c */; };
|
||||
7C2416791D073F72000851B2 /* tcp_out.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C2416691D073F71000851B2 /* tcp_out.c */; };
|
||||
7C24167A1D073F72000851B2 /* tcp.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C24166A1D073F71000851B2 /* tcp.c */; };
|
||||
7C24167B1D073F72000851B2 /* timers.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C24166B1D073F71000851B2 /* timers.c */; };
|
||||
7C24167C1D073F72000851B2 /* udp.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C24166C1D073F71000851B2 /* udp.c */; };
|
||||
7C2416851D073F81000851B2 /* autoip.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C24167D1D073F81000851B2 /* autoip.c */; };
|
||||
7C2416861D073F81000851B2 /* icmp.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C24167E1D073F81000851B2 /* icmp.c */; };
|
||||
7C2416871D073F81000851B2 /* igmp.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C24167F1D073F81000851B2 /* igmp.c */; };
|
||||
7C2416881D073F81000851B2 /* inet_chksum.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C2416801D073F81000851B2 /* inet_chksum.c */; };
|
||||
7C2416891D073F81000851B2 /* inet.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C2416811D073F81000851B2 /* inet.c */; };
|
||||
7C24168A1D073F81000851B2 /* ip_addr.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C2416821D073F81000851B2 /* ip_addr.c */; };
|
||||
7C24168B1D073F81000851B2 /* ip_frag.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C2416831D073F81000851B2 /* ip_frag.c */; };
|
||||
7C24168C1D073F81000851B2 /* ip.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C2416841D073F81000851B2 /* ip.c */; };
|
||||
7C2416931D073F8D000851B2 /* asn1_dec.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C24168D1D073F8D000851B2 /* asn1_dec.c */; };
|
||||
7C2416941D073F8D000851B2 /* asn1_enc.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C24168E1D073F8D000851B2 /* asn1_enc.c */; };
|
||||
7C2416951D073F8D000851B2 /* mib_structs.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C24168F1D073F8D000851B2 /* mib_structs.c */; };
|
||||
7C2416961D073F8D000851B2 /* mib2.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C2416901D073F8D000851B2 /* mib2.c */; };
|
||||
7C2416971D073F8D000851B2 /* msg_in.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C2416911D073F8D000851B2 /* msg_in.c */; };
|
||||
7C2416981D073F8D000851B2 /* msg_out.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C2416921D073F8D000851B2 /* msg_out.c */; };
|
||||
7C24169C1D073FA1000851B2 /* etharp.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C2416991D073FA1000851B2 /* etharp.c */; };
|
||||
7C24169D1D073FA1000851B2 /* ethernetif.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C24169A1D073FA1000851B2 /* ethernetif.c */; };
|
||||
7C24169E1D073FA1000851B2 /* slipif.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C24169B1D073FA1000851B2 /* slipif.c */; };
|
||||
7C2416A11D07430E000851B2 /* NetconSockets.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C2416A01D07430E000851B2 /* NetconSockets.c */; };
|
||||
7C3F4C841D0618940033F5EB /* NetconServiceSetup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C3F4C821D0618940033F5EB /* NetconServiceSetup.cpp */; };
|
||||
7C3F4C871D0626510033F5EB /* lz4.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C3F4C851D0626510033F5EB /* lz4.c */; };
|
||||
7C3F4C8A1D0626620033F5EB /* http_parser.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C3F4C881D0626620033F5EB /* http_parser.c */; };
|
||||
7C3F4C9A1D06267B0033F5EB /* Arp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C3F4C8B1D06267B0033F5EB /* Arp.cpp */; };
|
||||
7C3F4C9B1D06267B0033F5EB /* BackgroundResolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C3F4C8D1D06267B0033F5EB /* BackgroundResolver.cpp */; };
|
||||
7C3F4C9C1D06267B0033F5EB /* Http.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C3F4C901D06267B0033F5EB /* Http.cpp */; };
|
||||
7C3F4C9D1D06267B0033F5EB /* OSUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C3F4C921D06267B0033F5EB /* OSUtils.cpp */; };
|
||||
7C3F4C9E1D06267B0033F5EB /* PortMapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C3F4C951D06267B0033F5EB /* PortMapper.cpp */; };
|
||||
7C3F4C9F1D06267B0033F5EB /* RoutingTable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C3F4C971D06267B0033F5EB /* RoutingTable.cpp */; };
|
||||
7C3F4CDE1D06268E0033F5EB /* C25519.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C3F4CA51D06268E0033F5EB /* C25519.cpp */; };
|
||||
7C3F4CDF1D06268E0033F5EB /* CertificateOfMembership.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C3F4CA71D06268E0033F5EB /* CertificateOfMembership.cpp */; };
|
||||
7C3F4CE01D06268E0033F5EB /* Cluster.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C3F4CA91D06268E0033F5EB /* Cluster.cpp */; };
|
||||
7C3F4CE11D06268E0033F5EB /* DeferredPackets.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C3F4CAC1D06268E0033F5EB /* DeferredPackets.cpp */; };
|
||||
7C3F4CE21D06268E0033F5EB /* Dictionary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C3F4CAE1D06268E0033F5EB /* Dictionary.cpp */; };
|
||||
7C3F4CE31D06268E0033F5EB /* Identity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C3F4CB11D06268E0033F5EB /* Identity.cpp */; };
|
||||
7C3F4CE41D06268E0033F5EB /* IncomingPacket.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C3F4CB31D06268E0033F5EB /* IncomingPacket.cpp */; };
|
||||
7C3F4CE51D06268E0033F5EB /* InetAddress.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C3F4CB51D06268E0033F5EB /* InetAddress.cpp */; };
|
||||
7C3F4CE61D06268E0033F5EB /* Multicaster.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C3F4CB81D06268E0033F5EB /* Multicaster.cpp */; };
|
||||
7C3F4CE71D06268E0033F5EB /* Network.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C3F4CBC1D06268E0033F5EB /* Network.cpp */; };
|
||||
7C3F4CE81D06268E0033F5EB /* NetworkConfig.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C3F4CBE1D06268E0033F5EB /* NetworkConfig.cpp */; };
|
||||
7C3F4CE91D06268E0033F5EB /* Node.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C3F4CC21D06268E0033F5EB /* Node.cpp */; };
|
||||
7C3F4CEA1D06268E0033F5EB /* OutboundMulticast.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C3F4CC51D06268E0033F5EB /* OutboundMulticast.cpp */; };
|
||||
7C3F4CEB1D06268E0033F5EB /* Packet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C3F4CC71D06268E0033F5EB /* Packet.cpp */; };
|
||||
7C3F4CEC1D06268E0033F5EB /* Path.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C3F4CC91D06268E0033F5EB /* Path.cpp */; };
|
||||
7C3F4CED1D06268E0033F5EB /* Peer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C3F4CCB1D06268E0033F5EB /* Peer.cpp */; };
|
||||
7C3F4CEE1D06268E0033F5EB /* Poly1305.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C3F4CCD1D06268E0033F5EB /* Poly1305.cpp */; };
|
||||
7C3F4CEF1D06268E0033F5EB /* Salsa20.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C3F4CD01D06268E0033F5EB /* Salsa20.cpp */; };
|
||||
7C3F4CF01D06268E0033F5EB /* SelfAwareness.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C3F4CD21D06268E0033F5EB /* SelfAwareness.cpp */; };
|
||||
7C3F4CF11D06268E0033F5EB /* SHA512.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C3F4CD41D06268E0033F5EB /* SHA512.cpp */; };
|
||||
7C3F4CF21D06268E0033F5EB /* Switch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C3F4CD71D06268E0033F5EB /* Switch.cpp */; };
|
||||
7C3F4CF31D06268E0033F5EB /* Topology.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C3F4CD91D06268E0033F5EB /* Topology.cpp */; };
|
||||
7C3F4CF41D06268E0033F5EB /* Utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C3F4CDB1D06268E0033F5EB /* Utils.cpp */; };
|
||||
7C3F4CF81D0626AE0033F5EB /* OneService.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C3F4CF61D0626AE0033F5EB /* OneService.cpp */; };
|
||||
7C3F4CFB1D0626C20033F5EB /* ControlPlane.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C3F4CF91D0626C20033F5EB /* ControlPlane.cpp */; };
|
||||
7CADD87D1D062BDB00B1B486 /* NetconRPC.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CADD87B1D062BDB00B1B486 /* NetconRPC.c */; };
|
||||
7CADD8821D064E1500B1B486 /* NetconEthernetTap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CADD8811D06449200B1B486 /* NetconEthernetTap.cpp */; };
|
||||
7CADD8861D064F3600B1B486 /* NetconProxy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CADD8851D064F3600B1B486 /* NetconProxy.cpp */; };
|
||||
7CC40F1C1D08B0E30083AF40 /* NetconDebug.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CC40F1A1D08B0E30083AF40 /* NetconDebug.c */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
7C2416491D073DEA000851B2 /* LWIPStack.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = LWIPStack.hpp; path = ../../../../LWIPStack.hpp; sourceTree = "<group>"; };
|
||||
7C24164D1D073F5F000851B2 /* api_lib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = api_lib.c; path = ../../../../../ext/lwip/src/api/api_lib.c; sourceTree = "<group>"; };
|
||||
7C24164E1D073F5F000851B2 /* api_msg.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = api_msg.c; path = ../../../../../ext/lwip/src/api/api_msg.c; sourceTree = "<group>"; };
|
||||
7C24164F1D073F5F000851B2 /* err.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = err.c; path = ../../../../../ext/lwip/src/api/err.c; sourceTree = "<group>"; };
|
||||
7C2416501D073F5F000851B2 /* netbuf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = netbuf.c; path = ../../../../../ext/lwip/src/api/netbuf.c; sourceTree = "<group>"; };
|
||||
7C2416511D073F5F000851B2 /* netdb.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = netdb.c; path = ../../../../../ext/lwip/src/api/netdb.c; sourceTree = "<group>"; };
|
||||
7C2416521D073F5F000851B2 /* netifapi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = netifapi.c; path = ../../../../../ext/lwip/src/api/netifapi.c; sourceTree = "<group>"; };
|
||||
7C2416531D073F5F000851B2 /* sockets.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sockets.c; path = ../../../../../ext/lwip/src/api/sockets.c; sourceTree = "<group>"; };
|
||||
7C2416541D073F5F000851B2 /* tcpip.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = tcpip.c; path = ../../../../../ext/lwip/src/api/tcpip.c; sourceTree = "<group>"; };
|
||||
7C24165D1D073F71000851B2 /* def.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = def.c; path = ../../../../../ext/lwip/src/core/def.c; sourceTree = "<group>"; };
|
||||
7C24165E1D073F71000851B2 /* dhcp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = dhcp.c; path = ../../../../../ext/lwip/src/core/dhcp.c; sourceTree = "<group>"; };
|
||||
7C24165F1D073F71000851B2 /* dns.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = dns.c; path = ../../../../../ext/lwip/src/core/dns.c; sourceTree = "<group>"; };
|
||||
7C2416601D073F71000851B2 /* init.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = init.c; path = ../../../../../ext/lwip/src/core/init.c; sourceTree = "<group>"; };
|
||||
7C2416611D073F71000851B2 /* mem.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = mem.c; path = ../../../../../ext/lwip/src/core/mem.c; sourceTree = "<group>"; };
|
||||
7C2416621D073F71000851B2 /* memp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = memp.c; path = ../../../../../ext/lwip/src/core/memp.c; sourceTree = "<group>"; };
|
||||
7C2416631D073F71000851B2 /* netif.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = netif.c; path = ../../../../../ext/lwip/src/core/netif.c; sourceTree = "<group>"; };
|
||||
7C2416641D073F71000851B2 /* pbuf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pbuf.c; path = ../../../../../ext/lwip/src/core/pbuf.c; sourceTree = "<group>"; };
|
||||
7C2416651D073F71000851B2 /* raw.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = raw.c; path = ../../../../../ext/lwip/src/core/raw.c; sourceTree = "<group>"; };
|
||||
7C2416661D073F71000851B2 /* stats.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = stats.c; path = ../../../../../ext/lwip/src/core/stats.c; sourceTree = "<group>"; };
|
||||
7C2416671D073F71000851B2 /* sys.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sys.c; path = ../../../../../ext/lwip/src/core/sys.c; sourceTree = "<group>"; };
|
||||
7C2416681D073F71000851B2 /* tcp_in.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = tcp_in.c; path = ../../../../../ext/lwip/src/core/tcp_in.c; sourceTree = "<group>"; };
|
||||
7C2416691D073F71000851B2 /* tcp_out.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = tcp_out.c; path = ../../../../../ext/lwip/src/core/tcp_out.c; sourceTree = "<group>"; };
|
||||
7C24166A1D073F71000851B2 /* tcp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = tcp.c; path = ../../../../../ext/lwip/src/core/tcp.c; sourceTree = "<group>"; };
|
||||
7C24166B1D073F71000851B2 /* timers.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = timers.c; path = ../../../../../ext/lwip/src/core/timers.c; sourceTree = "<group>"; };
|
||||
7C24166C1D073F71000851B2 /* udp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = udp.c; path = ../../../../../ext/lwip/src/core/udp.c; sourceTree = "<group>"; };
|
||||
7C24167D1D073F81000851B2 /* autoip.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = autoip.c; path = ../../../../../ext/lwip/src/core/ipv4/autoip.c; sourceTree = "<group>"; };
|
||||
7C24167E1D073F81000851B2 /* icmp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = icmp.c; path = ../../../../../ext/lwip/src/core/ipv4/icmp.c; sourceTree = "<group>"; };
|
||||
7C24167F1D073F81000851B2 /* igmp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = igmp.c; path = ../../../../../ext/lwip/src/core/ipv4/igmp.c; sourceTree = "<group>"; };
|
||||
7C2416801D073F81000851B2 /* 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 = "<group>"; };
|
||||
7C2416811D073F81000851B2 /* inet.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = inet.c; path = ../../../../../ext/lwip/src/core/ipv4/inet.c; sourceTree = "<group>"; };
|
||||
7C2416821D073F81000851B2 /* 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 = "<group>"; };
|
||||
7C2416831D073F81000851B2 /* 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 = "<group>"; };
|
||||
7C2416841D073F81000851B2 /* ip.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ip.c; path = ../../../../../ext/lwip/src/core/ipv4/ip.c; sourceTree = "<group>"; };
|
||||
7C24168D1D073F8D000851B2 /* asn1_dec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = asn1_dec.c; path = ../../../../../ext/lwip/src/core/snmp/asn1_dec.c; sourceTree = "<group>"; };
|
||||
7C24168E1D073F8D000851B2 /* asn1_enc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = asn1_enc.c; path = ../../../../../ext/lwip/src/core/snmp/asn1_enc.c; sourceTree = "<group>"; };
|
||||
7C24168F1D073F8D000851B2 /* mib_structs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = mib_structs.c; path = ../../../../../ext/lwip/src/core/snmp/mib_structs.c; sourceTree = "<group>"; };
|
||||
7C2416901D073F8D000851B2 /* mib2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = mib2.c; path = ../../../../../ext/lwip/src/core/snmp/mib2.c; sourceTree = "<group>"; };
|
||||
7C2416911D073F8D000851B2 /* msg_in.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = msg_in.c; path = ../../../../../ext/lwip/src/core/snmp/msg_in.c; sourceTree = "<group>"; };
|
||||
7C2416921D073F8D000851B2 /* msg_out.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = msg_out.c; path = ../../../../../ext/lwip/src/core/snmp/msg_out.c; sourceTree = "<group>"; };
|
||||
7C2416991D073FA1000851B2 /* etharp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = etharp.c; path = ../../../../../ext/lwip/src/netif/etharp.c; sourceTree = "<group>"; };
|
||||
7C24169A1D073FA1000851B2 /* ethernetif.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ethernetif.c; path = ../../../../../ext/lwip/src/netif/ethernetif.c; sourceTree = "<group>"; };
|
||||
7C24169B1D073FA1000851B2 /* slipif.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = slipif.c; path = ../../../../../ext/lwip/src/netif/slipif.c; sourceTree = "<group>"; };
|
||||
7C2416A01D07430E000851B2 /* NetconSockets.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = NetconSockets.c; path = ../../../../NetconSockets.c; sourceTree = "<group>"; };
|
||||
7C2416A21D0744CC000851B2 /* Netcon.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Netcon.h; path = ../../../../Netcon.h; sourceTree = "<group>"; };
|
||||
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 = "<group>"; };
|
||||
7C3F4C821D0618940033F5EB /* NetconServiceSetup.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NetconServiceSetup.cpp; path = ../../../../NetconServiceSetup.cpp; sourceTree = "<group>"; };
|
||||
7C3F4C831D0618940033F5EB /* NetconServiceSetup.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = NetconServiceSetup.hpp; path = ../../../../NetconServiceSetup.hpp; sourceTree = "<group>"; };
|
||||
7C3F4C851D0626510033F5EB /* lz4.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lz4.c; path = ../../../../../ext/lz4/lz4.c; sourceTree = "<group>"; };
|
||||
7C3F4C861D0626510033F5EB /* lz4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = lz4.h; path = ../../../../../ext/lz4/lz4.h; sourceTree = "<group>"; };
|
||||
7C3F4C881D0626620033F5EB /* http_parser.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = http_parser.c; path = "../../../../../ext/http-parser/http_parser.c"; sourceTree = "<group>"; };
|
||||
7C3F4C891D0626620033F5EB /* http_parser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = http_parser.h; path = "../../../../../ext/http-parser/http_parser.h"; sourceTree = "<group>"; };
|
||||
7C3F4C8B1D06267B0033F5EB /* Arp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Arp.cpp; path = ../../../../../osdep/Arp.cpp; sourceTree = "<group>"; };
|
||||
7C3F4C8C1D06267B0033F5EB /* Arp.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Arp.hpp; path = ../../../../../osdep/Arp.hpp; sourceTree = "<group>"; };
|
||||
7C3F4C8D1D06267B0033F5EB /* BackgroundResolver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BackgroundResolver.cpp; path = ../../../../../osdep/BackgroundResolver.cpp; sourceTree = "<group>"; };
|
||||
7C3F4C8E1D06267B0033F5EB /* BackgroundResolver.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = BackgroundResolver.hpp; path = ../../../../../osdep/BackgroundResolver.hpp; sourceTree = "<group>"; };
|
||||
7C3F4C8F1D06267B0033F5EB /* Binder.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Binder.hpp; path = ../../../../../osdep/Binder.hpp; sourceTree = "<group>"; };
|
||||
7C3F4C901D06267B0033F5EB /* Http.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Http.cpp; path = ../../../../../osdep/Http.cpp; sourceTree = "<group>"; };
|
||||
7C3F4C911D06267B0033F5EB /* Http.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Http.hpp; path = ../../../../../osdep/Http.hpp; sourceTree = "<group>"; };
|
||||
7C3F4C921D06267B0033F5EB /* OSUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OSUtils.cpp; path = ../../../../../osdep/OSUtils.cpp; sourceTree = "<group>"; };
|
||||
7C3F4C931D06267B0033F5EB /* OSUtils.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = OSUtils.hpp; path = ../../../../../osdep/OSUtils.hpp; sourceTree = "<group>"; };
|
||||
7C3F4C941D06267B0033F5EB /* Phy.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Phy.hpp; path = ../../../../../osdep/Phy.hpp; sourceTree = "<group>"; };
|
||||
7C3F4C951D06267B0033F5EB /* PortMapper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PortMapper.cpp; path = ../../../../../osdep/PortMapper.cpp; sourceTree = "<group>"; };
|
||||
7C3F4C961D06267B0033F5EB /* PortMapper.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = PortMapper.hpp; path = ../../../../../osdep/PortMapper.hpp; sourceTree = "<group>"; };
|
||||
7C3F4C971D06267B0033F5EB /* RoutingTable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RoutingTable.cpp; path = ../../../../../osdep/RoutingTable.cpp; sourceTree = "<group>"; };
|
||||
7C3F4C981D06267B0033F5EB /* RoutingTable.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = RoutingTable.hpp; path = ../../../../../osdep/RoutingTable.hpp; sourceTree = "<group>"; };
|
||||
7C3F4C991D06267B0033F5EB /* Thread.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Thread.hpp; path = ../../../../../osdep/Thread.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CA01D06268E0033F5EB /* Address.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Address.hpp; path = ../../../../../node/Address.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CA11D06268E0033F5EB /* Array.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Array.hpp; path = ../../../../../node/Array.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CA21D06268E0033F5EB /* AtomicCounter.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = AtomicCounter.hpp; path = ../../../../../node/AtomicCounter.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CA31D06268E0033F5EB /* BinarySemaphore.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = BinarySemaphore.hpp; path = ../../../../../node/BinarySemaphore.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CA41D06268E0033F5EB /* Buffer.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Buffer.hpp; path = ../../../../../node/Buffer.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CA51D06268E0033F5EB /* C25519.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = C25519.cpp; path = ../../../../../node/C25519.cpp; sourceTree = "<group>"; };
|
||||
7C3F4CA61D06268E0033F5EB /* C25519.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = C25519.hpp; path = ../../../../../node/C25519.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CA71D06268E0033F5EB /* CertificateOfMembership.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CertificateOfMembership.cpp; path = ../../../../../node/CertificateOfMembership.cpp; sourceTree = "<group>"; };
|
||||
7C3F4CA81D06268E0033F5EB /* CertificateOfMembership.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = CertificateOfMembership.hpp; path = ../../../../../node/CertificateOfMembership.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CA91D06268E0033F5EB /* Cluster.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Cluster.cpp; path = ../../../../../node/Cluster.cpp; sourceTree = "<group>"; };
|
||||
7C3F4CAA1D06268E0033F5EB /* Cluster.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Cluster.hpp; path = ../../../../../node/Cluster.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CAB1D06268E0033F5EB /* Constants.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Constants.hpp; path = ../../../../../node/Constants.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CAC1D06268E0033F5EB /* DeferredPackets.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DeferredPackets.cpp; path = ../../../../../node/DeferredPackets.cpp; sourceTree = "<group>"; };
|
||||
7C3F4CAD1D06268E0033F5EB /* DeferredPackets.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = DeferredPackets.hpp; path = ../../../../../node/DeferredPackets.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CAE1D06268E0033F5EB /* Dictionary.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Dictionary.cpp; path = ../../../../../node/Dictionary.cpp; sourceTree = "<group>"; };
|
||||
7C3F4CAF1D06268E0033F5EB /* Dictionary.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Dictionary.hpp; path = ../../../../../node/Dictionary.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CB01D06268E0033F5EB /* Hashtable.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Hashtable.hpp; path = ../../../../../node/Hashtable.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CB11D06268E0033F5EB /* Identity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Identity.cpp; path = ../../../../../node/Identity.cpp; sourceTree = "<group>"; };
|
||||
7C3F4CB21D06268E0033F5EB /* Identity.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Identity.hpp; path = ../../../../../node/Identity.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CB31D06268E0033F5EB /* IncomingPacket.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IncomingPacket.cpp; path = ../../../../../node/IncomingPacket.cpp; sourceTree = "<group>"; };
|
||||
7C3F4CB41D06268E0033F5EB /* IncomingPacket.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = IncomingPacket.hpp; path = ../../../../../node/IncomingPacket.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CB51D06268E0033F5EB /* InetAddress.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = InetAddress.cpp; path = ../../../../../node/InetAddress.cpp; sourceTree = "<group>"; };
|
||||
7C3F4CB61D06268E0033F5EB /* InetAddress.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = InetAddress.hpp; path = ../../../../../node/InetAddress.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CB71D06268E0033F5EB /* MAC.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = MAC.hpp; path = ../../../../../node/MAC.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CB81D06268E0033F5EB /* Multicaster.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Multicaster.cpp; path = ../../../../../node/Multicaster.cpp; sourceTree = "<group>"; };
|
||||
7C3F4CB91D06268E0033F5EB /* Multicaster.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Multicaster.hpp; path = ../../../../../node/Multicaster.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CBA1D06268E0033F5EB /* MulticastGroup.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = MulticastGroup.hpp; path = ../../../../../node/MulticastGroup.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CBB1D06268E0033F5EB /* Mutex.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Mutex.hpp; path = ../../../../../node/Mutex.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CBC1D06268E0033F5EB /* Network.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Network.cpp; path = ../../../../../node/Network.cpp; sourceTree = "<group>"; };
|
||||
7C3F4CBD1D06268E0033F5EB /* Network.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Network.hpp; path = ../../../../../node/Network.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CBE1D06268E0033F5EB /* NetworkConfig.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NetworkConfig.cpp; path = ../../../../../node/NetworkConfig.cpp; sourceTree = "<group>"; };
|
||||
7C3F4CBF1D06268E0033F5EB /* NetworkConfig.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = NetworkConfig.hpp; path = ../../../../../node/NetworkConfig.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CC01D06268E0033F5EB /* NetworkConfigRequestMetaData.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = NetworkConfigRequestMetaData.hpp; path = ../../../../../node/NetworkConfigRequestMetaData.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CC11D06268E0033F5EB /* NetworkController.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = NetworkController.hpp; path = ../../../../../node/NetworkController.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CC21D06268E0033F5EB /* Node.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Node.cpp; path = ../../../../../node/Node.cpp; sourceTree = "<group>"; };
|
||||
7C3F4CC31D06268E0033F5EB /* Node.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Node.hpp; path = ../../../../../node/Node.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CC41D06268E0033F5EB /* NonCopyable.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = NonCopyable.hpp; path = ../../../../../node/NonCopyable.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CC51D06268E0033F5EB /* OutboundMulticast.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OutboundMulticast.cpp; path = ../../../../../node/OutboundMulticast.cpp; sourceTree = "<group>"; };
|
||||
7C3F4CC61D06268E0033F5EB /* OutboundMulticast.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = OutboundMulticast.hpp; path = ../../../../../node/OutboundMulticast.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CC71D06268E0033F5EB /* Packet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Packet.cpp; path = ../../../../../node/Packet.cpp; sourceTree = "<group>"; };
|
||||
7C3F4CC81D06268E0033F5EB /* Packet.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Packet.hpp; path = ../../../../../node/Packet.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CC91D06268E0033F5EB /* Path.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Path.cpp; path = ../../../../../node/Path.cpp; sourceTree = "<group>"; };
|
||||
7C3F4CCA1D06268E0033F5EB /* Path.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Path.hpp; path = ../../../../../node/Path.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CCB1D06268E0033F5EB /* Peer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Peer.cpp; path = ../../../../../node/Peer.cpp; sourceTree = "<group>"; };
|
||||
7C3F4CCC1D06268E0033F5EB /* Peer.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Peer.hpp; path = ../../../../../node/Peer.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CCD1D06268E0033F5EB /* Poly1305.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Poly1305.cpp; path = ../../../../../node/Poly1305.cpp; sourceTree = "<group>"; };
|
||||
7C3F4CCE1D06268E0033F5EB /* Poly1305.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Poly1305.hpp; path = ../../../../../node/Poly1305.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CCF1D06268E0033F5EB /* RuntimeEnvironment.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = RuntimeEnvironment.hpp; path = ../../../../../node/RuntimeEnvironment.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CD01D06268E0033F5EB /* Salsa20.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Salsa20.cpp; path = ../../../../../node/Salsa20.cpp; sourceTree = "<group>"; };
|
||||
7C3F4CD11D06268E0033F5EB /* Salsa20.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Salsa20.hpp; path = ../../../../../node/Salsa20.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CD21D06268E0033F5EB /* SelfAwareness.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SelfAwareness.cpp; path = ../../../../../node/SelfAwareness.cpp; sourceTree = "<group>"; };
|
||||
7C3F4CD31D06268E0033F5EB /* SelfAwareness.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = SelfAwareness.hpp; path = ../../../../../node/SelfAwareness.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CD41D06268E0033F5EB /* SHA512.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SHA512.cpp; path = ../../../../../node/SHA512.cpp; sourceTree = "<group>"; };
|
||||
7C3F4CD51D06268E0033F5EB /* SHA512.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = SHA512.hpp; path = ../../../../../node/SHA512.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CD61D06268E0033F5EB /* SharedPtr.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = SharedPtr.hpp; path = ../../../../../node/SharedPtr.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CD71D06268E0033F5EB /* Switch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Switch.cpp; path = ../../../../../node/Switch.cpp; sourceTree = "<group>"; };
|
||||
7C3F4CD81D06268E0033F5EB /* Switch.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Switch.hpp; path = ../../../../../node/Switch.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CD91D06268E0033F5EB /* Topology.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Topology.cpp; path = ../../../../../node/Topology.cpp; sourceTree = "<group>"; };
|
||||
7C3F4CDA1D06268E0033F5EB /* Topology.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Topology.hpp; path = ../../../../../node/Topology.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CDB1D06268E0033F5EB /* Utils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Utils.cpp; path = ../../../../../node/Utils.cpp; sourceTree = "<group>"; };
|
||||
7C3F4CDC1D06268E0033F5EB /* Utils.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Utils.hpp; path = ../../../../../node/Utils.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CDD1D06268E0033F5EB /* World.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = World.hpp; path = ../../../../../node/World.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CF51D0626AE0033F5EB /* ClusterDefinition.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = ClusterDefinition.hpp; path = ../../../../../service/ClusterDefinition.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CF61D0626AE0033F5EB /* OneService.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OneService.cpp; path = ../../../../../service/OneService.cpp; sourceTree = "<group>"; };
|
||||
7C3F4CF71D0626AE0033F5EB /* OneService.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = OneService.hpp; path = ../../../../../service/OneService.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CF91D0626C20033F5EB /* ControlPlane.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ControlPlane.cpp; path = ../../../../../service/ControlPlane.cpp; sourceTree = "<group>"; };
|
||||
7C3F4CFA1D0626C20033F5EB /* ControlPlane.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = ControlPlane.hpp; path = ../../../../../service/ControlPlane.hpp; sourceTree = "<group>"; };
|
||||
7C3F4CFF1D0627110033F5EB /* Netcon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Netcon.h; path = ../../../../Netcon.h; sourceTree = "<group>"; };
|
||||
7CADD87B1D062BDB00B1B486 /* NetconRPC.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = NetconRPC.c; path = ../../../../NetconRPC.c; sourceTree = "<group>"; };
|
||||
7CADD87C1D062BDB00B1B486 /* NetconRPC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NetconRPC.h; path = ../../../../NetconRPC.h; sourceTree = "<group>"; };
|
||||
7CADD87F1D06417F00B1B486 /* NetconEthernetTap.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = NetconEthernetTap.hpp; path = ../../../../NetconEthernetTap.hpp; sourceTree = "<group>"; };
|
||||
7CADD8811D06449200B1B486 /* NetconEthernetTap.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = NetconEthernetTap.cpp; path = ../../../../NetconEthernetTap.cpp; sourceTree = "<group>"; };
|
||||
7CADD8851D064F3600B1B486 /* NetconProxy.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = NetconProxy.cpp; path = ../../../../NetconProxy.cpp; sourceTree = "<group>"; };
|
||||
7CC40F1A1D08B0E30083AF40 /* NetconDebug.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = NetconDebug.c; path = ../../../../NetconDebug.c; sourceTree = "<group>"; };
|
||||
7CC40F1B1D08B0E30083AF40 /* NetconDebug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NetconDebug.h; path = ../../../../NetconDebug.h; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
7C3F4C761D0618670033F5EB /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
7C24164B1D073F2A000851B2 /* ZeroTier */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
7C2416491D073DEA000851B2 /* LWIPStack.hpp */,
|
||||
7CADD8851D064F3600B1B486 /* NetconProxy.cpp */,
|
||||
7CADD8811D06449200B1B486 /* NetconEthernetTap.cpp */,
|
||||
7CADD87F1D06417F00B1B486 /* NetconEthernetTap.hpp */,
|
||||
7C3F4CFF1D0627110033F5EB /* Netcon.h */,
|
||||
7C3F4CF91D0626C20033F5EB /* ControlPlane.cpp */,
|
||||
7C3F4CFA1D0626C20033F5EB /* ControlPlane.hpp */,
|
||||
7C3F4CF51D0626AE0033F5EB /* ClusterDefinition.hpp */,
|
||||
7C3F4CF61D0626AE0033F5EB /* OneService.cpp */,
|
||||
7C3F4CF71D0626AE0033F5EB /* OneService.hpp */,
|
||||
7C3F4CA01D06268E0033F5EB /* Address.hpp */,
|
||||
7C3F4CA11D06268E0033F5EB /* Array.hpp */,
|
||||
7C3F4CA21D06268E0033F5EB /* AtomicCounter.hpp */,
|
||||
7C3F4CA31D06268E0033F5EB /* BinarySemaphore.hpp */,
|
||||
7C3F4CA41D06268E0033F5EB /* Buffer.hpp */,
|
||||
7C3F4CA51D06268E0033F5EB /* C25519.cpp */,
|
||||
7C3F4CA61D06268E0033F5EB /* C25519.hpp */,
|
||||
7C3F4CA71D06268E0033F5EB /* CertificateOfMembership.cpp */,
|
||||
7C3F4CA81D06268E0033F5EB /* CertificateOfMembership.hpp */,
|
||||
7C3F4CA91D06268E0033F5EB /* Cluster.cpp */,
|
||||
7C3F4CAA1D06268E0033F5EB /* Cluster.hpp */,
|
||||
7C3F4CAB1D06268E0033F5EB /* Constants.hpp */,
|
||||
7C3F4CAC1D06268E0033F5EB /* DeferredPackets.cpp */,
|
||||
7C3F4CAD1D06268E0033F5EB /* DeferredPackets.hpp */,
|
||||
7C3F4CAE1D06268E0033F5EB /* Dictionary.cpp */,
|
||||
7C3F4CAF1D06268E0033F5EB /* Dictionary.hpp */,
|
||||
7C3F4CB01D06268E0033F5EB /* Hashtable.hpp */,
|
||||
7C3F4CB11D06268E0033F5EB /* Identity.cpp */,
|
||||
7C3F4CB21D06268E0033F5EB /* Identity.hpp */,
|
||||
7C3F4CB31D06268E0033F5EB /* IncomingPacket.cpp */,
|
||||
7C3F4CB41D06268E0033F5EB /* IncomingPacket.hpp */,
|
||||
7C3F4CB51D06268E0033F5EB /* InetAddress.cpp */,
|
||||
7C3F4CB61D06268E0033F5EB /* InetAddress.hpp */,
|
||||
7C3F4CB71D06268E0033F5EB /* MAC.hpp */,
|
||||
7C3F4CB81D06268E0033F5EB /* Multicaster.cpp */,
|
||||
7C3F4CB91D06268E0033F5EB /* Multicaster.hpp */,
|
||||
7C3F4CBA1D06268E0033F5EB /* MulticastGroup.hpp */,
|
||||
7C3F4CBB1D06268E0033F5EB /* Mutex.hpp */,
|
||||
7C3F4CBC1D06268E0033F5EB /* Network.cpp */,
|
||||
7C3F4CBD1D06268E0033F5EB /* Network.hpp */,
|
||||
7C3F4CBE1D06268E0033F5EB /* NetworkConfig.cpp */,
|
||||
7C3F4CBF1D06268E0033F5EB /* NetworkConfig.hpp */,
|
||||
7C3F4CC01D06268E0033F5EB /* NetworkConfigRequestMetaData.hpp */,
|
||||
7C3F4CC11D06268E0033F5EB /* NetworkController.hpp */,
|
||||
7C3F4CC21D06268E0033F5EB /* Node.cpp */,
|
||||
7C3F4CC31D06268E0033F5EB /* Node.hpp */,
|
||||
7C3F4CC41D06268E0033F5EB /* NonCopyable.hpp */,
|
||||
7C3F4CC51D06268E0033F5EB /* OutboundMulticast.cpp */,
|
||||
7C3F4CC61D06268E0033F5EB /* OutboundMulticast.hpp */,
|
||||
7C3F4CC71D06268E0033F5EB /* Packet.cpp */,
|
||||
7C3F4CC81D06268E0033F5EB /* Packet.hpp */,
|
||||
7C3F4CC91D06268E0033F5EB /* Path.cpp */,
|
||||
7C3F4CCA1D06268E0033F5EB /* Path.hpp */,
|
||||
7C3F4CCB1D06268E0033F5EB /* Peer.cpp */,
|
||||
7C3F4CCC1D06268E0033F5EB /* Peer.hpp */,
|
||||
7C3F4CCD1D06268E0033F5EB /* Poly1305.cpp */,
|
||||
7C3F4CCE1D06268E0033F5EB /* Poly1305.hpp */,
|
||||
7C3F4CCF1D06268E0033F5EB /* RuntimeEnvironment.hpp */,
|
||||
7C3F4CD01D06268E0033F5EB /* Salsa20.cpp */,
|
||||
7C3F4CD11D06268E0033F5EB /* Salsa20.hpp */,
|
||||
7C3F4CD21D06268E0033F5EB /* SelfAwareness.cpp */,
|
||||
7C3F4CD31D06268E0033F5EB /* SelfAwareness.hpp */,
|
||||
7C3F4CD41D06268E0033F5EB /* SHA512.cpp */,
|
||||
7C3F4CD51D06268E0033F5EB /* SHA512.hpp */,
|
||||
7C3F4CD61D06268E0033F5EB /* SharedPtr.hpp */,
|
||||
7C3F4CD71D06268E0033F5EB /* Switch.cpp */,
|
||||
7C3F4CD81D06268E0033F5EB /* Switch.hpp */,
|
||||
7C3F4CD91D06268E0033F5EB /* Topology.cpp */,
|
||||
7C3F4CDA1D06268E0033F5EB /* Topology.hpp */,
|
||||
7C3F4CDB1D06268E0033F5EB /* Utils.cpp */,
|
||||
7C3F4CDC1D06268E0033F5EB /* Utils.hpp */,
|
||||
7C3F4CDD1D06268E0033F5EB /* World.hpp */,
|
||||
7C3F4C8B1D06267B0033F5EB /* Arp.cpp */,
|
||||
7C3F4C8C1D06267B0033F5EB /* Arp.hpp */,
|
||||
7C3F4C8D1D06267B0033F5EB /* BackgroundResolver.cpp */,
|
||||
7C3F4C8E1D06267B0033F5EB /* BackgroundResolver.hpp */,
|
||||
7C3F4C8F1D06267B0033F5EB /* Binder.hpp */,
|
||||
7C3F4C901D06267B0033F5EB /* Http.cpp */,
|
||||
7C3F4C911D06267B0033F5EB /* Http.hpp */,
|
||||
7C3F4C921D06267B0033F5EB /* OSUtils.cpp */,
|
||||
7C3F4C931D06267B0033F5EB /* OSUtils.hpp */,
|
||||
7C3F4C941D06267B0033F5EB /* Phy.hpp */,
|
||||
7C3F4C951D06267B0033F5EB /* PortMapper.cpp */,
|
||||
7C3F4C961D06267B0033F5EB /* PortMapper.hpp */,
|
||||
7C3F4C971D06267B0033F5EB /* RoutingTable.cpp */,
|
||||
7C3F4C981D06267B0033F5EB /* RoutingTable.hpp */,
|
||||
7C3F4C991D06267B0033F5EB /* Thread.hpp */,
|
||||
7C3F4C881D0626620033F5EB /* http_parser.c */,
|
||||
7C3F4C891D0626620033F5EB /* http_parser.h */,
|
||||
7C3F4C851D0626510033F5EB /* lz4.c */,
|
||||
7C3F4C861D0626510033F5EB /* lz4.h */,
|
||||
7C3F4C821D0618940033F5EB /* NetconServiceSetup.cpp */,
|
||||
7C3F4C831D0618940033F5EB /* NetconServiceSetup.hpp */,
|
||||
);
|
||||
name = ZeroTier;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
7C24164C1D073F43000851B2 /* lwIP */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
7C2416991D073FA1000851B2 /* etharp.c */,
|
||||
7C24169A1D073FA1000851B2 /* ethernetif.c */,
|
||||
7C24169B1D073FA1000851B2 /* slipif.c */,
|
||||
7C24168D1D073F8D000851B2 /* asn1_dec.c */,
|
||||
7C24168E1D073F8D000851B2 /* asn1_enc.c */,
|
||||
7C24168F1D073F8D000851B2 /* mib_structs.c */,
|
||||
7C2416901D073F8D000851B2 /* mib2.c */,
|
||||
7C2416911D073F8D000851B2 /* msg_in.c */,
|
||||
7C2416921D073F8D000851B2 /* msg_out.c */,
|
||||
7C24167D1D073F81000851B2 /* autoip.c */,
|
||||
7C24167E1D073F81000851B2 /* icmp.c */,
|
||||
7C24167F1D073F81000851B2 /* igmp.c */,
|
||||
7C2416801D073F81000851B2 /* inet_chksum.c */,
|
||||
7C2416811D073F81000851B2 /* inet.c */,
|
||||
7C2416821D073F81000851B2 /* ip_addr.c */,
|
||||
7C2416831D073F81000851B2 /* ip_frag.c */,
|
||||
7C2416841D073F81000851B2 /* ip.c */,
|
||||
7C24165D1D073F71000851B2 /* def.c */,
|
||||
7C24165E1D073F71000851B2 /* dhcp.c */,
|
||||
7C24165F1D073F71000851B2 /* dns.c */,
|
||||
7C2416601D073F71000851B2 /* init.c */,
|
||||
7C2416611D073F71000851B2 /* mem.c */,
|
||||
7C2416621D073F71000851B2 /* memp.c */,
|
||||
7C2416631D073F71000851B2 /* netif.c */,
|
||||
7C2416641D073F71000851B2 /* pbuf.c */,
|
||||
7C2416651D073F71000851B2 /* raw.c */,
|
||||
7C2416661D073F71000851B2 /* stats.c */,
|
||||
7C2416671D073F71000851B2 /* sys.c */,
|
||||
7C2416681D073F71000851B2 /* tcp_in.c */,
|
||||
7C2416691D073F71000851B2 /* tcp_out.c */,
|
||||
7C24166A1D073F71000851B2 /* tcp.c */,
|
||||
7C24166B1D073F71000851B2 /* timers.c */,
|
||||
7C24166C1D073F71000851B2 /* udp.c */,
|
||||
7C24164D1D073F5F000851B2 /* api_lib.c */,
|
||||
7C24164E1D073F5F000851B2 /* api_msg.c */,
|
||||
7C24164F1D073F5F000851B2 /* err.c */,
|
||||
7C2416501D073F5F000851B2 /* netbuf.c */,
|
||||
7C2416511D073F5F000851B2 /* netdb.c */,
|
||||
7C2416521D073F5F000851B2 /* netifapi.c */,
|
||||
7C2416531D073F5F000851B2 /* sockets.c */,
|
||||
7C2416541D073F5F000851B2 /* tcpip.c */,
|
||||
);
|
||||
name = lwIP;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
7C24169F1D074282000851B2 /* zt_api */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
7CC40F1A1D08B0E30083AF40 /* NetconDebug.c */,
|
||||
7CC40F1B1D08B0E30083AF40 /* NetconDebug.h */,
|
||||
7C2416A21D0744CC000851B2 /* Netcon.h */,
|
||||
7C2416A01D07430E000851B2 /* NetconSockets.c */,
|
||||
7CADD87B1D062BDB00B1B486 /* NetconRPC.c */,
|
||||
7CADD87C1D062BDB00B1B486 /* NetconRPC.h */,
|
||||
);
|
||||
name = zt_api;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
7C3F4C701D0618670033F5EB = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
7C24169F1D074282000851B2 /* zt_api */,
|
||||
7C24164C1D073F43000851B2 /* lwIP */,
|
||||
7C24164B1D073F2A000851B2 /* ZeroTier */,
|
||||
7C3F4C7B1D0618670033F5EB /* ZeroTierUnity */,
|
||||
7C3F4C7A1D0618670033F5EB /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
7C3F4C7A1D0618670033F5EB /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
7C3F4C791D0618670033F5EB /* ZeroTierUnity.bundle */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
7C3F4C7B1D0618670033F5EB /* ZeroTierUnity */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
7C3F4C7C1D0618670033F5EB /* Info.plist */,
|
||||
);
|
||||
path = ZeroTierUnity;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* 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 = (
|
||||
7C2416861D073F81000851B2 /* icmp.c in Sources */,
|
||||
7C2416741D073F72000851B2 /* pbuf.c in Sources */,
|
||||
7C24164A1D073E54000851B2 /* LWIPStack.hpp in Sources */,
|
||||
7C2416481D073B5C000851B2 /* Phy.hpp in Sources */,
|
||||
7C2416981D073F8D000851B2 /* msg_out.c in Sources */,
|
||||
7C2416551D073F5F000851B2 /* api_lib.c in Sources */,
|
||||
7C2416941D073F8D000851B2 /* asn1_enc.c in Sources */,
|
||||
7CADD8861D064F3600B1B486 /* NetconProxy.cpp in Sources */,
|
||||
7CADD8821D064E1500B1B486 /* NetconEthernetTap.cpp in Sources */,
|
||||
7C2416711D073F71000851B2 /* mem.c in Sources */,
|
||||
7C2416591D073F5F000851B2 /* netdb.c in Sources */,
|
||||
7C3F4CE51D06268E0033F5EB /* InetAddress.cpp in Sources */,
|
||||
7C3F4CF01D06268E0033F5EB /* SelfAwareness.cpp in Sources */,
|
||||
7C3F4CDE1D06268E0033F5EB /* C25519.cpp in Sources */,
|
||||
7C3F4CF21D06268E0033F5EB /* Switch.cpp in Sources */,
|
||||
7C24165B1D073F5F000851B2 /* sockets.c in Sources */,
|
||||
7C24169E1D073FA1000851B2 /* slipif.c in Sources */,
|
||||
7C24165A1D073F5F000851B2 /* netifapi.c in Sources */,
|
||||
7C2416A11D07430E000851B2 /* NetconSockets.c in Sources */,
|
||||
7C3F4CF11D06268E0033F5EB /* SHA512.cpp in Sources */,
|
||||
7C24166F1D073F71000851B2 /* dns.c in Sources */,
|
||||
7C3F4CE81D06268E0033F5EB /* NetworkConfig.cpp in Sources */,
|
||||
7C2416721D073F71000851B2 /* memp.c in Sources */,
|
||||
7C2416961D073F8D000851B2 /* mib2.c in Sources */,
|
||||
7C2416561D073F5F000851B2 /* api_msg.c in Sources */,
|
||||
7C3F4CE21D06268E0033F5EB /* Dictionary.cpp in Sources */,
|
||||
7C2416791D073F72000851B2 /* tcp_out.c in Sources */,
|
||||
7C24167C1D073F72000851B2 /* udp.c in Sources */,
|
||||
7C24165C1D073F5F000851B2 /* tcpip.c in Sources */,
|
||||
7C2416761D073F72000851B2 /* stats.c in Sources */,
|
||||
7C3F4C9B1D06267B0033F5EB /* BackgroundResolver.cpp in Sources */,
|
||||
7C24168A1D073F81000851B2 /* ip_addr.c in Sources */,
|
||||
7C3F4CF81D0626AE0033F5EB /* OneService.cpp in Sources */,
|
||||
7C3F4C9E1D06267B0033F5EB /* PortMapper.cpp in Sources */,
|
||||
7C3F4CEC1D06268E0033F5EB /* Path.cpp in Sources */,
|
||||
7C24169D1D073FA1000851B2 /* ethernetif.c in Sources */,
|
||||
7C2416951D073F8D000851B2 /* mib_structs.c in Sources */,
|
||||
7C24166D1D073F71000851B2 /* def.c in Sources */,
|
||||
7C3F4CEA1D06268E0033F5EB /* OutboundMulticast.cpp in Sources */,
|
||||
7C2416881D073F81000851B2 /* inet_chksum.c in Sources */,
|
||||
7C3F4CF41D06268E0033F5EB /* Utils.cpp in Sources */,
|
||||
7C3F4CDF1D06268E0033F5EB /* CertificateOfMembership.cpp in Sources */,
|
||||
7C3F4CED1D06268E0033F5EB /* Peer.cpp in Sources */,
|
||||
7C3F4CEF1D06268E0033F5EB /* Salsa20.cpp in Sources */,
|
||||
7C2416731D073F71000851B2 /* netif.c in Sources */,
|
||||
7C2416871D073F81000851B2 /* igmp.c in Sources */,
|
||||
7C3F4C871D0626510033F5EB /* lz4.c in Sources */,
|
||||
7C3F4C8A1D0626620033F5EB /* http_parser.c in Sources */,
|
||||
7C24166E1D073F71000851B2 /* dhcp.c in Sources */,
|
||||
7C3F4CE71D06268E0033F5EB /* Network.cpp in Sources */,
|
||||
7C3F4CE11D06268E0033F5EB /* DeferredPackets.cpp in Sources */,
|
||||
7C3F4CE01D06268E0033F5EB /* Cluster.cpp in Sources */,
|
||||
7C24169C1D073FA1000851B2 /* etharp.c in Sources */,
|
||||
7C2416571D073F5F000851B2 /* err.c in Sources */,
|
||||
7C3F4CE31D06268E0033F5EB /* Identity.cpp in Sources */,
|
||||
7C2416851D073F81000851B2 /* autoip.c in Sources */,
|
||||
7C2416891D073F81000851B2 /* inet.c in Sources */,
|
||||
7C2416701D073F71000851B2 /* init.c in Sources */,
|
||||
7C3F4CF31D06268E0033F5EB /* Topology.cpp in Sources */,
|
||||
7C24168C1D073F81000851B2 /* ip.c in Sources */,
|
||||
7C3F4C9C1D06267B0033F5EB /* Http.cpp in Sources */,
|
||||
7C3F4C841D0618940033F5EB /* NetconServiceSetup.cpp in Sources */,
|
||||
7CC40F1C1D08B0E30083AF40 /* NetconDebug.c in Sources */,
|
||||
7C2416771D073F72000851B2 /* sys.c in Sources */,
|
||||
7C2416971D073F8D000851B2 /* msg_in.c in Sources */,
|
||||
7C3F4CEE1D06268E0033F5EB /* Poly1305.cpp in Sources */,
|
||||
7C3F4CFB1D0626C20033F5EB /* ControlPlane.cpp in Sources */,
|
||||
7C3F4CE91D06268E0033F5EB /* Node.cpp in Sources */,
|
||||
7C3F4CE61D06268E0033F5EB /* Multicaster.cpp in Sources */,
|
||||
7C2416751D073F72000851B2 /* raw.c in Sources */,
|
||||
7C3F4C9F1D06267B0033F5EB /* RoutingTable.cpp in Sources */,
|
||||
7C3F4C9A1D06267B0033F5EB /* Arp.cpp in Sources */,
|
||||
7C3F4CEB1D06268E0033F5EB /* Packet.cpp in Sources */,
|
||||
7CADD87D1D062BDB00B1B486 /* NetconRPC.c in Sources */,
|
||||
7C2416781D073F72000851B2 /* tcp_in.c in Sources */,
|
||||
7C2416931D073F8D000851B2 /* asn1_dec.c in Sources */,
|
||||
7C2416581D073F5F000851B2 /* netbuf.c in Sources */,
|
||||
7C24167A1D073F72000851B2 /* tcp.c in Sources */,
|
||||
7C3F4C9D1D06267B0033F5EB /* OSUtils.cpp in Sources */,
|
||||
7C3F4CE41D06268E0033F5EB /* IncomingPacket.cpp in Sources */,
|
||||
7C24168B1D073F81000851B2 /* ip_frag.c in Sources */,
|
||||
7C24167B1D073F72000851B2 /* timers.c 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)/../../../../../netcon/",
|
||||
"$(SRCROOT)/../../../../../include/",
|
||||
"$(SRCROOT)/../../../../../ext/lwip/src/include/",
|
||||
"$(SRCROOT)/../../../../../ext/lwip/src/include/ipv4/",
|
||||
);
|
||||
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)/../../../../../netcon/",
|
||||
"$(SRCROOT)/../../../../../include/",
|
||||
"$(SRCROOT)/../../../../../ext/lwip/src/include/",
|
||||
"$(SRCROOT)/../../../../../ext/lwip/src/include/ipv4/",
|
||||
);
|
||||
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 */;
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "self:ZeroTierUnity.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
Binary file not shown.
@@ -0,0 +1,80 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0730"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "7C3F4C781D0618670033F5EB"
|
||||
BuildableName = "ZeroTierUnity.bundle"
|
||||
BlueprintName = "ZeroTierUnity"
|
||||
ReferencedContainer = "container:ZeroTierUnity.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
</Testables>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "7C3F4C781D0618670033F5EB"
|
||||
BuildableName = "ZeroTierUnity.bundle"
|
||||
BlueprintName = "ZeroTierUnity"
|
||||
ReferencedContainer = "container:ZeroTierUnity.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "7C3F4C781D0618670033F5EB"
|
||||
BuildableName = "ZeroTierUnity.bundle"
|
||||
BlueprintName = "ZeroTierUnity"
|
||||
ReferencedContainer = "container:ZeroTierUnity.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>SchemeUserState</key>
|
||||
<dict>
|
||||
<key>ZeroTierUnity.xcscheme</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>SuppressBuildableAutocreation</key>
|
||||
<dict>
|
||||
<key>7C3F4C781D0618670033F5EB</key>
|
||||
<dict>
|
||||
<key>primary</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright © 2016 ZeroTier Inc. All rights reserved.</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
</plist>
|
||||
84
integrations/unity3d/unity3d_zt_sdk.md
Normal file
84
integrations/unity3d/unity3d_zt_sdk.md
Normal file
@@ -0,0 +1,84 @@
|
||||
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.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user