diff --git a/docs/rxtx.md b/docs/rxtx.md index c995e18..4897766 100644 --- a/docs/rxtx.md +++ b/docs/rxtx.md @@ -15,12 +15,14 @@ Our library's implementation of `socket()` is executed instead of the kernel's. From your app's perspective nothing out of the ordinary has happened. It called `socket()`, and got a file descriptor back. + + + + *** ## Establishing a connection -When your app attempts to establish a connection over a socket the following happens: - You app connects to a remote host: ``` @@ -35,16 +37,21 @@ pico_handleConnect() pico_socket_connect() ``` + + + + + *** -## Acception a connection +## Accepting a connection Your app places a socket into a listen state: ``` listen() ``` -An RPC_LISTEN call is sent to the **tap service** and **stack driver** +An `RPC_LISTEN` call is sent to the **tap service** and **stack driver** You app accepts a connection: @@ -54,7 +61,13 @@ accept() The **network stack** raises a `PICO_SOCK_EV_CONN` event which calls `pico_cb_socket_activity()`. From here we request a new `pico_socket` be created to represent the new connection. This is done via `pico_socket_accept()`. Once we have a valid `pico_socket`, we create an `AF_UNIX` socket pair. We associate one end with the newly-created `pico_socket` via a `Connection` object. And we send the other end of the socket pair to the app. -Out library's implementation of `accept()` will read and return the new file descriptor representing one end of the socket pair. From your app's prespective this is a normal file descriptor. +Our library's implementation of `accept()` will read and return the new file descriptor representing one end of the socket pair. From your app's prespective this is a normal file descriptor. + + + + + + *** @@ -72,22 +85,22 @@ Periodically the **network stack** thread will call `pico_eth_poll()`, this is r ``` pico_eth_poll() - ---> pico_stack_recv + ---> pico_stack_recv() ``` After some time has passed and the **network stack** has processed the incoming frames a `PICO_SOCK_EV_RD` event will be triggered which calls `pico_cb_socket_activity()`, and ultimately `pico_cb_tcp_read()`. This is where we copy the incoming data from the `pico_socket` to the `Connection`'s `rxbuf` (different from `pico_frame_rxbuf`). We then notify the **tap service** that the `PhySocket` (a wrapped file descriptor with one end visible to the application) associated with this `Connection` has data in its `rxbuf` that needs to be written so the app can read it. ``` pico_cb_socket_activity() - pico_cb_tcp_read() ---> conn->rxbuf - setNotifyWritable=TRUE + pico_cb_tcp_read() ---> + setNotifyWritable(TRUE) ``` After some (more) time, the **tap service** thread will call `pico_handleRead()`, this will copy the data from the `rxbuf` to the `AF_UNIX` socket which links the service and your application. ``` pico_handleRead() - streamSend(): conn->rxbuf --- conn->sock + streamSend(): ---> PhySock ``` After this point it's up to your application to read the data via a conventional `read()`, `recv()`, or `recvfrom()` call. @@ -97,6 +110,12 @@ read() ``` + + + + + + *** ## Sending data @@ -112,7 +131,7 @@ The other end of the `AF_UNIX` socket which was written to is monitored by the * ``` phyOnUnixData() handleWrite() - pico_socket_write(): conn->txbuf ---> conn->picosock + pico_socket_write(): ---> picosock ``` Periodically a `PICO_SOCK_EV_WR` event will be raised by the **network stack**, this will call `pico_cb_socket_activity()` and ultimately `pico_cb_tcp_write()` where a `pico_socket_write()` call will be made to copy any remaining `txbuf` contents into the stack. diff --git a/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_Apple.xcodeproj/project.pbxproj b/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_Apple.xcodeproj/project.pbxproj new file mode 100644 index 0000000..6850e41 --- /dev/null +++ b/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_Apple.xcodeproj/project.pbxproj @@ -0,0 +1,1563 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 7C0463271DE362BD003E2B0E /* json.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C0463251DE362BD003E2B0E /* json.c */; }; + 7C0463281DE362D9003E2B0E /* json.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C0463251DE362BD003E2B0E /* json.c */; }; + 7C04632B1DE363BA003E2B0E /* ManagedRoute.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C0463291DE363BA003E2B0E /* ManagedRoute.cpp */; }; + 7C04632C1DE363C9003E2B0E /* ManagedRoute.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C0463291DE363BA003E2B0E /* ManagedRoute.cpp */; }; + 7C2228D41DCC11A8006A2661 /* picotcp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C2228D21DCC11A8006A2661 /* picotcp.cpp */; }; + 7C2228D51DCC11B8006A2661 /* picotcp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C2228D21DCC11A8006A2661 /* picotcp.cpp */; }; + 7C5B40971DCC14E300C43410 /* picotcp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C2228D21DCC11A8006A2661 /* picotcp.cpp */; }; + 7C7D52831DBEADD200896C93 /* intercept.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C7D52791DBEADD200896C93 /* intercept.c */; }; + 7C7D52841DBEADD200896C93 /* proxy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C7D527A1DBEADD200896C93 /* proxy.cpp */; }; + 7C7D52851DBEADD200896C93 /* rpc.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C7D527B1DBEADD200896C93 /* rpc.c */; }; + 7C7D52861DBEADD200896C93 /* service.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C7D527D1DBEADD200896C93 /* service.cpp */; }; + 7C7D52871DBEADD200896C93 /* sockets.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C7D527F1DBEADD200896C93 /* sockets.c */; }; + 7C7D52881DBEADD200896C93 /* tap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C7D52801DBEADD200896C93 /* tap.cpp */; }; + 7C7D528B1DBEADE600896C93 /* intercept.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C7D52791DBEADD200896C93 /* intercept.c */; }; + 7C7D528C1DBEADE600896C93 /* proxy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C7D527A1DBEADD200896C93 /* proxy.cpp */; }; + 7C7D528D1DBEADE600896C93 /* rpc.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C7D527B1DBEADD200896C93 /* rpc.c */; }; + 7C7D528F1DBEADE600896C93 /* service.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C7D527D1DBEADD200896C93 /* service.cpp */; }; + 7C7D52901DBEADE600896C93 /* signatures.h in Sources */ = {isa = PBXBuildFile; fileRef = 7C7D527E1DBEADD200896C93 /* signatures.h */; }; + 7C7D52911DBEADE600896C93 /* sockets.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C7D527F1DBEADD200896C93 /* sockets.c */; }; + 7C7D52921DBEADE600896C93 /* tap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C7D52801DBEADD200896C93 /* tap.cpp */; }; + 7C7D52931DBEADE600896C93 /* tap.hpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C7D52811DBEADD200896C93 /* tap.hpp */; }; + 7C7F16471DBEB76F00C7AFFD /* intercept.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C7D52791DBEADD200896C93 /* intercept.c */; }; + 7C7F16481DBEB76F00C7AFFD /* proxy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C7D527A1DBEADD200896C93 /* proxy.cpp */; }; + 7C7F16491DBEB76F00C7AFFD /* rpc.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C7D527B1DBEADD200896C93 /* rpc.c */; }; + 7C7F164A1DBEB76F00C7AFFD /* service.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C7D527D1DBEADD200896C93 /* service.cpp */; }; + 7C7F164B1DBEB76F00C7AFFD /* sockets.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C7D527F1DBEADD200896C93 /* sockets.c */; }; + 7C7F164C1DBEB76F00C7AFFD /* tap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C7D52801DBEADD200896C93 /* tap.cpp */; }; + 7C7F164D1DBEB7AB00C7AFFD /* BackgroundResolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF58E1DBAD10A006585E7 /* BackgroundResolver.cpp */; }; + 7C7F164E1DBEB7AB00C7AFFD /* DeferredPackets.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5891DBAD0BF006585E7 /* DeferredPackets.cpp */; }; + 7C7F164F1DBEB7AB00C7AFFD /* OneService.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5821DBACB3E006585E7 /* OneService.cpp */; }; + 7C7F16501DBEB7AB00C7AFFD /* C25519.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5121DBAC872006585E7 /* C25519.cpp */; }; + 7C7F16511DBEB7AB00C7AFFD /* CertificateOfMembership.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5141DBAC872006585E7 /* CertificateOfMembership.cpp */; }; + 7C7F16521DBEB7AB00C7AFFD /* Cluster.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5161DBAC872006585E7 /* Cluster.cpp */; }; + 7C7F16541DBEB7AB00C7AFFD /* Identity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF51E1DBAC872006585E7 /* Identity.cpp */; }; + 7C7F16551DBEB7AB00C7AFFD /* IncomingPacket.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5201DBAC872006585E7 /* IncomingPacket.cpp */; }; + 7C7F16561DBEB7AB00C7AFFD /* InetAddress.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5221DBAC872006585E7 /* InetAddress.cpp */; }; + 7C7F16571DBEB7AB00C7AFFD /* Multicaster.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5251DBAC872006585E7 /* Multicaster.cpp */; }; + 7C7F16581DBEB7AB00C7AFFD /* Network.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5291DBAC872006585E7 /* Network.cpp */; }; + 7C7F16591DBEB7AB00C7AFFD /* NetworkConfig.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF52B1DBAC872006585E7 /* NetworkConfig.cpp */; }; + 7C7F165A1DBEB7AB00C7AFFD /* Node.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF52F1DBAC872006585E7 /* Node.cpp */; }; + 7C7F165B1DBEB7AB00C7AFFD /* OutboundMulticast.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5321DBAC872006585E7 /* OutboundMulticast.cpp */; }; + 7C7F165C1DBEB7AB00C7AFFD /* Packet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5341DBAC872006585E7 /* Packet.cpp */; }; + 7C7F165D1DBEB7AB00C7AFFD /* Path.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5361DBAC872006585E7 /* Path.cpp */; }; + 7C7F165E1DBEB7AB00C7AFFD /* Peer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5381DBAC872006585E7 /* Peer.cpp */; }; + 7C7F165F1DBEB7AB00C7AFFD /* Poly1305.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF53A1DBAC872006585E7 /* Poly1305.cpp */; }; + 7C7F16601DBEB7AB00C7AFFD /* Salsa20.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF53D1DBAC872006585E7 /* Salsa20.cpp */; }; + 7C7F16611DBEB7AB00C7AFFD /* SelfAwareness.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF53F1DBAC872006585E7 /* SelfAwareness.cpp */; }; + 7C7F16621DBEB7AB00C7AFFD /* SHA512.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5411DBAC872006585E7 /* SHA512.cpp */; }; + 7C7F16631DBEB7AB00C7AFFD /* Switch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5441DBAC872006585E7 /* Switch.cpp */; }; + 7C7F16641DBEB7AB00C7AFFD /* Topology.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5461DBAC872006585E7 /* Topology.cpp */; }; + 7C7F16651DBEB7AB00C7AFFD /* Utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5481DBAC872006585E7 /* Utils.cpp */; }; + 7C7F16661DBEB7AB00C7AFFD /* Arp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF4F81DBAC841006585E7 /* Arp.cpp */; }; + 7C7F16671DBEB7AB00C7AFFD /* Http.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF4FD1DBAC841006585E7 /* Http.cpp */; }; + 7C7F16681DBEB7AB00C7AFFD /* OSUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF4FF1DBAC841006585E7 /* OSUtils.cpp */; }; + 7C7F16691DBEB7AB00C7AFFD /* PortMapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5021DBAC841006585E7 /* PortMapper.cpp */; }; + 7C7F166B1DBEB7AB00C7AFFD /* ControlPlane.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF4F11DBAC80C006585E7 /* ControlPlane.cpp */; }; + 7C7F16881DBEB8B300C7AFFD /* lz4.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CC0035A1D1217B2003E68DC /* lz4.c */; }; + 7C7F16891DBEB8B300C7AFFD /* http_parser.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CC003571D1217A1003E68DC /* http_parser.c */; }; + 7C9D4ED51DF246F200EF20CD /* json.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C0463251DE362BD003E2B0E /* json.c */; }; + 7CC003261D1216E3003E68DC /* ZeroTierSDK_iOS.h in Headers */ = {isa = PBXBuildFile; fileRef = 7CC003251D1216E3003E68DC /* ZeroTierSDK_iOS.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7CC003591D1217A1003E68DC /* http_parser.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CC003571D1217A1003E68DC /* http_parser.c */; }; + 7CC0035C1D1217B2003E68DC /* lz4.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CC0035A1D1217B2003E68DC /* lz4.c */; }; + 7CC004D01D131E37003E68DC /* lz4.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CC0035A1D1217B2003E68DC /* lz4.c */; }; + 7CC004D11D131E37003E68DC /* http_parser.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CC003571D1217A1003E68DC /* http_parser.c */; }; + 7CC005201D1324B3003E68DC /* lz4.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CC0035A1D1217B2003E68DC /* lz4.c */; }; + 7CC005211D1324B3003E68DC /* http_parser.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CC003571D1217A1003E68DC /* http_parser.c */; }; + 7CE960B61DF78234005F3B0D /* pico_device.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960AE1DF78234005F3B0D /* pico_device.c */; }; + 7CE960B71DF78234005F3B0D /* pico_frame.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960AF1DF78234005F3B0D /* pico_frame.c */; }; + 7CE960B81DF78234005F3B0D /* pico_md5.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960B01DF78234005F3B0D /* pico_md5.c */; }; + 7CE960B91DF78234005F3B0D /* pico_protocol.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960B11DF78234005F3B0D /* pico_protocol.c */; }; + 7CE960BA1DF78234005F3B0D /* pico_socket_multicast.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960B21DF78234005F3B0D /* pico_socket_multicast.c */; }; + 7CE960BB1DF78234005F3B0D /* pico_socket.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960B31DF78234005F3B0D /* pico_socket.c */; }; + 7CE960BC1DF78234005F3B0D /* pico_stack.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960B41DF78234005F3B0D /* pico_stack.c */; }; + 7CE960BD1DF78234005F3B0D /* pico_tree.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960B51DF78234005F3B0D /* pico_tree.c */; }; + 7CE9610E1DF78251005F3B0D /* pico_aodv.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960BE1DF78251005F3B0D /* pico_aodv.c */; }; + 7CE9610F1DF78251005F3B0D /* pico_arp.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960C01DF78251005F3B0D /* pico_arp.c */; }; + 7CE961101DF78251005F3B0D /* pico_dev_loop.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960C21DF78251005F3B0D /* pico_dev_loop.c */; }; + 7CE961111DF78251005F3B0D /* pico_dev_mock.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960C41DF78251005F3B0D /* pico_dev_mock.c */; }; + 7CE961121DF78251005F3B0D /* pico_dev_null.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960C61DF78251005F3B0D /* pico_dev_null.c */; }; + 7CE961131DF78251005F3B0D /* pico_dev_pcap.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960C81DF78251005F3B0D /* pico_dev_pcap.c */; }; + 7CE961141DF78251005F3B0D /* pico_dev_ppp.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960CA1DF78251005F3B0D /* pico_dev_ppp.c */; }; + 7CE961151DF78251005F3B0D /* pico_dev_tap_windows.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960CD1DF78251005F3B0D /* pico_dev_tap_windows.c */; }; + 7CE961161DF78251005F3B0D /* pico_dev_tap.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960CF1DF78251005F3B0D /* pico_dev_tap.c */; }; + 7CE961171DF78251005F3B0D /* pico_dev_tun.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960D11DF78251005F3B0D /* pico_dev_tun.c */; }; + 7CE961181DF78251005F3B0D /* pico_dev_vde.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960D31DF78251005F3B0D /* pico_dev_vde.c */; }; + 7CE961191DF78251005F3B0D /* pico_dhcp_client.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960D51DF78251005F3B0D /* pico_dhcp_client.c */; }; + 7CE9611A1DF78251005F3B0D /* pico_dhcp_common.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960D71DF78251005F3B0D /* pico_dhcp_common.c */; }; + 7CE9611B1DF78251005F3B0D /* pico_dhcp_server.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960D91DF78251005F3B0D /* pico_dhcp_server.c */; }; + 7CE9611C1DF78251005F3B0D /* pico_dns_client.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960DB1DF78251005F3B0D /* pico_dns_client.c */; }; + 7CE9611D1DF78251005F3B0D /* pico_dns_common.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960DD1DF78251005F3B0D /* pico_dns_common.c */; }; + 7CE9611E1DF78251005F3B0D /* pico_dns_sd.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960DF1DF78251005F3B0D /* pico_dns_sd.c */; }; + 7CE9611F1DF78251005F3B0D /* pico_fragments.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960E11DF78251005F3B0D /* pico_fragments.c */; }; + 7CE961201DF78251005F3B0D /* pico_hotplug_detection.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960E31DF78251005F3B0D /* pico_hotplug_detection.c */; }; + 7CE961211DF78251005F3B0D /* pico_icmp4.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960E51DF78251005F3B0D /* pico_icmp4.c */; }; + 7CE961221DF78251005F3B0D /* pico_icmp6.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960E71DF78251005F3B0D /* pico_icmp6.c */; }; + 7CE961231DF78251005F3B0D /* pico_igmp.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960E91DF78251005F3B0D /* pico_igmp.c */; }; + 7CE961241DF78251005F3B0D /* pico_ipfilter.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960EB1DF78251005F3B0D /* pico_ipfilter.c */; }; + 7CE961251DF78251005F3B0D /* pico_ipv4.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960ED1DF78251005F3B0D /* pico_ipv4.c */; }; + 7CE961261DF78251005F3B0D /* pico_ipv6_nd.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960EF1DF78251005F3B0D /* pico_ipv6_nd.c */; }; + 7CE961271DF78251005F3B0D /* pico_ipv6.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960F11DF78251005F3B0D /* pico_ipv6.c */; }; + 7CE961281DF78251005F3B0D /* pico_mdns.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960F31DF78251005F3B0D /* pico_mdns.c */; }; + 7CE961291DF78251005F3B0D /* pico_mld.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960F51DF78251005F3B0D /* pico_mld.c */; }; + 7CE9612A1DF78251005F3B0D /* pico_mm.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960F71DF78251005F3B0D /* pico_mm.c */; }; + 7CE9612B1DF78251005F3B0D /* pico_nat.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960F91DF78251005F3B0D /* pico_nat.c */; }; + 7CE9612C1DF78251005F3B0D /* pico_olsr.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960FB1DF78251005F3B0D /* pico_olsr.c */; }; + 7CE9612D1DF78251005F3B0D /* pico_posix.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960FD1DF78251005F3B0D /* pico_posix.c */; }; + 7CE9612E1DF78251005F3B0D /* pico_slaacv4.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960FE1DF78251005F3B0D /* pico_slaacv4.c */; }; + 7CE9612F1DF78251005F3B0D /* pico_sntp_client.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE961001DF78251005F3B0D /* pico_sntp_client.c */; }; + 7CE961301DF78251005F3B0D /* pico_socket_tcp.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE961021DF78251005F3B0D /* pico_socket_tcp.c */; }; + 7CE961311DF78251005F3B0D /* pico_socket_udp.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE961041DF78251005F3B0D /* pico_socket_udp.c */; }; + 7CE961321DF78251005F3B0D /* pico_strings.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE961061DF78251005F3B0D /* pico_strings.c */; }; + 7CE961331DF78251005F3B0D /* pico_tcp.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE961081DF78251005F3B0D /* pico_tcp.c */; }; + 7CE961341DF78251005F3B0D /* pico_tftp.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE9610A1DF78251005F3B0D /* pico_tftp.c */; }; + 7CE961351DF78251005F3B0D /* pico_udp.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE9610C1DF78251005F3B0D /* pico_udp.c */; }; + 7CE961451DF782CA005F3B0D /* pico_aodv.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960BE1DF78251005F3B0D /* pico_aodv.c */; }; + 7CE961461DF782CA005F3B0D /* pico_arp.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960C01DF78251005F3B0D /* pico_arp.c */; }; + 7CE961471DF782CA005F3B0D /* pico_dev_loop.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960C21DF78251005F3B0D /* pico_dev_loop.c */; }; + 7CE961481DF782CA005F3B0D /* pico_dev_mock.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960C41DF78251005F3B0D /* pico_dev_mock.c */; }; + 7CE961491DF782CA005F3B0D /* pico_dev_null.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960C61DF78251005F3B0D /* pico_dev_null.c */; }; + 7CE9614B1DF782CA005F3B0D /* pico_dev_ppp.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960CA1DF78251005F3B0D /* pico_dev_ppp.c */; }; + 7CE961501DF782CA005F3B0D /* pico_dhcp_client.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960D51DF78251005F3B0D /* pico_dhcp_client.c */; }; + 7CE961511DF782CA005F3B0D /* pico_dhcp_common.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960D71DF78251005F3B0D /* pico_dhcp_common.c */; }; + 7CE961521DF782CA005F3B0D /* pico_dhcp_server.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960D91DF78251005F3B0D /* pico_dhcp_server.c */; }; + 7CE961531DF782CA005F3B0D /* pico_dns_client.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960DB1DF78251005F3B0D /* pico_dns_client.c */; }; + 7CE961541DF782CA005F3B0D /* pico_dns_common.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960DD1DF78251005F3B0D /* pico_dns_common.c */; }; + 7CE961551DF782CA005F3B0D /* pico_dns_sd.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960DF1DF78251005F3B0D /* pico_dns_sd.c */; }; + 7CE961561DF782CA005F3B0D /* pico_fragments.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960E11DF78251005F3B0D /* pico_fragments.c */; }; + 7CE961571DF782CA005F3B0D /* pico_hotplug_detection.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960E31DF78251005F3B0D /* pico_hotplug_detection.c */; }; + 7CE961581DF782CA005F3B0D /* pico_icmp4.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960E51DF78251005F3B0D /* pico_icmp4.c */; }; + 7CE961591DF782CA005F3B0D /* pico_icmp6.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960E71DF78251005F3B0D /* pico_icmp6.c */; }; + 7CE9615A1DF782CA005F3B0D /* pico_igmp.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960E91DF78251005F3B0D /* pico_igmp.c */; }; + 7CE9615B1DF782CA005F3B0D /* pico_ipfilter.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960EB1DF78251005F3B0D /* pico_ipfilter.c */; }; + 7CE9615C1DF782CA005F3B0D /* pico_ipv4.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960ED1DF78251005F3B0D /* pico_ipv4.c */; }; + 7CE9615D1DF782CA005F3B0D /* pico_ipv6_nd.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960EF1DF78251005F3B0D /* pico_ipv6_nd.c */; }; + 7CE9615E1DF782CA005F3B0D /* pico_ipv6.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960F11DF78251005F3B0D /* pico_ipv6.c */; }; + 7CE9615F1DF782CA005F3B0D /* pico_mdns.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960F31DF78251005F3B0D /* pico_mdns.c */; }; + 7CE961601DF782CA005F3B0D /* pico_mld.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960F51DF78251005F3B0D /* pico_mld.c */; }; + 7CE961611DF782CA005F3B0D /* pico_mm.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960F71DF78251005F3B0D /* pico_mm.c */; }; + 7CE961621DF782CA005F3B0D /* pico_nat.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960F91DF78251005F3B0D /* pico_nat.c */; }; + 7CE961631DF782CA005F3B0D /* pico_olsr.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960FB1DF78251005F3B0D /* pico_olsr.c */; }; + 7CE961641DF782CA005F3B0D /* pico_posix.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960FD1DF78251005F3B0D /* pico_posix.c */; }; + 7CE961651DF782CA005F3B0D /* pico_slaacv4.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960FE1DF78251005F3B0D /* pico_slaacv4.c */; }; + 7CE961661DF782CA005F3B0D /* pico_sntp_client.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE961001DF78251005F3B0D /* pico_sntp_client.c */; }; + 7CE961671DF782CA005F3B0D /* pico_socket_tcp.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE961021DF78251005F3B0D /* pico_socket_tcp.c */; }; + 7CE961681DF782CA005F3B0D /* pico_socket_udp.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE961041DF78251005F3B0D /* pico_socket_udp.c */; }; + 7CE961691DF782CA005F3B0D /* pico_strings.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE961061DF78251005F3B0D /* pico_strings.c */; }; + 7CE9616A1DF782CA005F3B0D /* pico_tcp.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE961081DF78251005F3B0D /* pico_tcp.c */; }; + 7CE9616B1DF782CA005F3B0D /* pico_tftp.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE9610A1DF78251005F3B0D /* pico_tftp.c */; }; + 7CE9616C1DF782CA005F3B0D /* pico_udp.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE9610C1DF78251005F3B0D /* pico_udp.c */; }; + 7CE9616D1DF782CA005F3B0D /* pico_device.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960AE1DF78234005F3B0D /* pico_device.c */; }; + 7CE9616E1DF782CA005F3B0D /* pico_frame.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960AF1DF78234005F3B0D /* pico_frame.c */; }; + 7CE9616F1DF782CA005F3B0D /* pico_md5.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960B01DF78234005F3B0D /* pico_md5.c */; }; + 7CE961701DF782CA005F3B0D /* pico_protocol.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960B11DF78234005F3B0D /* pico_protocol.c */; }; + 7CE961711DF782CA005F3B0D /* pico_socket_multicast.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960B21DF78234005F3B0D /* pico_socket_multicast.c */; }; + 7CE961721DF782CA005F3B0D /* pico_socket.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960B31DF78234005F3B0D /* pico_socket.c */; }; + 7CE961731DF782CA005F3B0D /* pico_stack.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960B41DF78234005F3B0D /* pico_stack.c */; }; + 7CE961741DF782CA005F3B0D /* pico_tree.c in Sources */ = {isa = PBXBuildFile; fileRef = 7CE960B51DF78234005F3B0D /* pico_tree.c */; }; + 7CEAF4F61DBAC80C006585E7 /* ControlPlane.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF4F11DBAC80C006585E7 /* ControlPlane.cpp */; }; + 7CEAF5071DBAC841006585E7 /* Arp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF4F81DBAC841006585E7 /* Arp.cpp */; }; + 7CEAF5091DBAC841006585E7 /* Http.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF4FD1DBAC841006585E7 /* Http.cpp */; }; + 7CEAF50A1DBAC841006585E7 /* OSUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF4FF1DBAC841006585E7 /* OSUtils.cpp */; }; + 7CEAF50B1DBAC841006585E7 /* PortMapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5021DBAC841006585E7 /* PortMapper.cpp */; }; + 7CEAF54B1DBAC872006585E7 /* C25519.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5121DBAC872006585E7 /* C25519.cpp */; }; + 7CEAF54C1DBAC872006585E7 /* CertificateOfMembership.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5141DBAC872006585E7 /* CertificateOfMembership.cpp */; }; + 7CEAF54D1DBAC872006585E7 /* Cluster.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5161DBAC872006585E7 /* Cluster.cpp */; }; + 7CEAF5501DBAC872006585E7 /* Identity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF51E1DBAC872006585E7 /* Identity.cpp */; }; + 7CEAF5511DBAC872006585E7 /* IncomingPacket.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5201DBAC872006585E7 /* IncomingPacket.cpp */; }; + 7CEAF5521DBAC872006585E7 /* InetAddress.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5221DBAC872006585E7 /* InetAddress.cpp */; }; + 7CEAF5531DBAC872006585E7 /* Multicaster.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5251DBAC872006585E7 /* Multicaster.cpp */; }; + 7CEAF5541DBAC872006585E7 /* Network.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5291DBAC872006585E7 /* Network.cpp */; }; + 7CEAF5551DBAC872006585E7 /* NetworkConfig.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF52B1DBAC872006585E7 /* NetworkConfig.cpp */; }; + 7CEAF5561DBAC872006585E7 /* Node.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF52F1DBAC872006585E7 /* Node.cpp */; }; + 7CEAF5571DBAC872006585E7 /* OutboundMulticast.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5321DBAC872006585E7 /* OutboundMulticast.cpp */; }; + 7CEAF5581DBAC872006585E7 /* Packet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5341DBAC872006585E7 /* Packet.cpp */; }; + 7CEAF5591DBAC872006585E7 /* Path.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5361DBAC872006585E7 /* Path.cpp */; }; + 7CEAF55A1DBAC872006585E7 /* Peer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5381DBAC872006585E7 /* Peer.cpp */; }; + 7CEAF55B1DBAC872006585E7 /* Poly1305.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF53A1DBAC872006585E7 /* Poly1305.cpp */; }; + 7CEAF55C1DBAC872006585E7 /* Salsa20.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF53D1DBAC872006585E7 /* Salsa20.cpp */; }; + 7CEAF55D1DBAC872006585E7 /* SelfAwareness.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF53F1DBAC872006585E7 /* SelfAwareness.cpp */; }; + 7CEAF55E1DBAC872006585E7 /* SHA512.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5411DBAC872006585E7 /* SHA512.cpp */; }; + 7CEAF55F1DBAC872006585E7 /* Switch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5441DBAC872006585E7 /* Switch.cpp */; }; + 7CEAF5601DBAC872006585E7 /* Topology.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5461DBAC872006585E7 /* Topology.cpp */; }; + 7CEAF5611DBAC872006585E7 /* Utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5481DBAC872006585E7 /* Utils.cpp */; }; + 7CEAF5621DBAC975006585E7 /* C25519.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5121DBAC872006585E7 /* C25519.cpp */; }; + 7CEAF5631DBAC975006585E7 /* CertificateOfMembership.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5141DBAC872006585E7 /* CertificateOfMembership.cpp */; }; + 7CEAF5641DBAC975006585E7 /* Cluster.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5161DBAC872006585E7 /* Cluster.cpp */; }; + 7CEAF5671DBAC975006585E7 /* Identity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF51E1DBAC872006585E7 /* Identity.cpp */; }; + 7CEAF5681DBAC975006585E7 /* IncomingPacket.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5201DBAC872006585E7 /* IncomingPacket.cpp */; }; + 7CEAF5691DBAC975006585E7 /* InetAddress.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5221DBAC872006585E7 /* InetAddress.cpp */; }; + 7CEAF56A1DBAC975006585E7 /* Multicaster.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5251DBAC872006585E7 /* Multicaster.cpp */; }; + 7CEAF56B1DBAC975006585E7 /* Network.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5291DBAC872006585E7 /* Network.cpp */; }; + 7CEAF56C1DBAC975006585E7 /* NetworkConfig.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF52B1DBAC872006585E7 /* NetworkConfig.cpp */; }; + 7CEAF56D1DBAC975006585E7 /* Node.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF52F1DBAC872006585E7 /* Node.cpp */; }; + 7CEAF56E1DBAC975006585E7 /* OutboundMulticast.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5321DBAC872006585E7 /* OutboundMulticast.cpp */; }; + 7CEAF56F1DBAC975006585E7 /* Packet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5341DBAC872006585E7 /* Packet.cpp */; }; + 7CEAF5701DBAC975006585E7 /* Path.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5361DBAC872006585E7 /* Path.cpp */; }; + 7CEAF5711DBAC975006585E7 /* Peer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5381DBAC872006585E7 /* Peer.cpp */; }; + 7CEAF5721DBAC975006585E7 /* Poly1305.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF53A1DBAC872006585E7 /* Poly1305.cpp */; }; + 7CEAF5731DBAC975006585E7 /* Salsa20.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF53D1DBAC872006585E7 /* Salsa20.cpp */; }; + 7CEAF5741DBAC975006585E7 /* SelfAwareness.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF53F1DBAC872006585E7 /* SelfAwareness.cpp */; }; + 7CEAF5751DBAC975006585E7 /* SHA512.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5411DBAC872006585E7 /* SHA512.cpp */; }; + 7CEAF5761DBAC975006585E7 /* Switch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5441DBAC872006585E7 /* Switch.cpp */; }; + 7CEAF5771DBAC975006585E7 /* Topology.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5461DBAC872006585E7 /* Topology.cpp */; }; + 7CEAF5781DBAC975006585E7 /* Utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5481DBAC872006585E7 /* Utils.cpp */; }; + 7CEAF5791DBAC975006585E7 /* Arp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF4F81DBAC841006585E7 /* Arp.cpp */; }; + 7CEAF57B1DBAC975006585E7 /* Http.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF4FD1DBAC841006585E7 /* Http.cpp */; }; + 7CEAF57C1DBAC975006585E7 /* OSUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF4FF1DBAC841006585E7 /* OSUtils.cpp */; }; + 7CEAF57D1DBAC975006585E7 /* PortMapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5021DBAC841006585E7 /* PortMapper.cpp */; }; + 7CEAF5801DBAC975006585E7 /* ControlPlane.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF4F11DBAC80C006585E7 /* ControlPlane.cpp */; }; + 7CEAF5841DBACB3E006585E7 /* OneService.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5821DBACB3E006585E7 /* OneService.cpp */; }; + 7CEAF58B1DBAD0BF006585E7 /* DeferredPackets.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5891DBAD0BF006585E7 /* DeferredPackets.cpp */; }; + 7CEAF58C1DBAD0E1006585E7 /* DeferredPackets.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5891DBAD0BF006585E7 /* DeferredPackets.cpp */; }; + 7CEAF58D1DBAD0E1006585E7 /* OneService.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF5821DBACB3E006585E7 /* OneService.cpp */; }; + 7CEAF58F1DBAD10A006585E7 /* BackgroundResolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CEAF58E1DBAD10A006585E7 /* BackgroundResolver.cpp */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 7C0463251DE362BD003E2B0E /* json.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = json.c; path = "../../../zerotierone/ext/json-parser/json.c"; sourceTree = ""; }; + 7C0463261DE362BD003E2B0E /* json.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = json.h; path = "../../../zerotierone/ext/json-parser/json.h"; sourceTree = ""; }; + 7C0463291DE363BA003E2B0E /* ManagedRoute.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ManagedRoute.cpp; path = ../../../zerotierone/osdep/ManagedRoute.cpp; sourceTree = ""; }; + 7C04632A1DE363BA003E2B0E /* ManagedRoute.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = ManagedRoute.hpp; path = ../../../zerotierone/osdep/ManagedRoute.hpp; sourceTree = ""; }; + 7C2228D21DCC11A8006A2661 /* picotcp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = picotcp.cpp; path = ../../../src/stack_drivers/picotcp/picotcp.cpp; sourceTree = ""; }; + 7C2228D31DCC11A8006A2661 /* picotcp.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = picotcp.hpp; path = ../../../src/stack_drivers/picotcp/picotcp.hpp; sourceTree = ""; }; + 7C7D52771DBEADD200896C93 /* debug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = debug.h; path = ../../../src/debug.h; sourceTree = ""; }; + 7C7D52781DBEADD200896C93 /* defs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = defs.h; path = ../../../src/defs.h; sourceTree = ""; }; + 7C7D52791DBEADD200896C93 /* intercept.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = intercept.c; path = ../../../src/intercept.c; sourceTree = ""; }; + 7C7D527A1DBEADD200896C93 /* proxy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = proxy.cpp; path = ../../../src/proxy.cpp; sourceTree = ""; }; + 7C7D527B1DBEADD200896C93 /* rpc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rpc.c; path = ../../../src/rpc.c; sourceTree = ""; }; + 7C7D527C1DBEADD200896C93 /* rpc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rpc.h; path = ../../../src/rpc.h; sourceTree = ""; }; + 7C7D527D1DBEADD200896C93 /* service.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = service.cpp; path = ../../../src/service.cpp; sourceTree = ""; }; + 7C7D527E1DBEADD200896C93 /* signatures.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = signatures.h; path = ../../../src/signatures.h; sourceTree = ""; }; + 7C7D527F1DBEADD200896C93 /* sockets.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = sockets.c; path = ../../../src/sockets.c; sourceTree = ""; }; + 7C7D52801DBEADD200896C93 /* tap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = tap.cpp; path = ../../../src/tap.cpp; sourceTree = ""; }; + 7C7D52811DBEADD200896C93 /* tap.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = tap.hpp; path = ../../../src/tap.hpp; sourceTree = ""; }; + 7CC003181D1216B0003E68DC /* ZeroTierSDK_Unity3D_iOS.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ZeroTierSDK_Unity3D_iOS.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; + 7CC0031A1D1216B0003E68DC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 7CC003231D1216E3003E68DC /* ZeroTierSDK_iOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ZeroTierSDK_iOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 7CC003251D1216E3003E68DC /* ZeroTierSDK_iOS.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ZeroTierSDK_iOS.h; sourceTree = ""; }; + 7CC003271D1216E3003E68DC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 7CC003301D1216F8003E68DC /* ZeroTierSDK_OSX.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ZeroTierSDK_OSX.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 7CC003321D1216F8003E68DC /* ZeroTierSDK_OSX.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ZeroTierSDK_OSX.h; sourceTree = ""; }; + 7CC003341D1216F8003E68DC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 7CC0033C1D121741003E68DC /* ZeroTierSDK_Unity3D_OSX.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ZeroTierSDK_Unity3D_OSX.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; + 7CC0033E1D121742003E68DC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 7CC0034F1D12178D003E68DC /* SDK.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDK.h; path = ../../../src/SDK.h; sourceTree = ""; }; + 7CC003571D1217A1003E68DC /* http_parser.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = http_parser.c; path = "../../../zerotierone/ext/http-parser/http_parser.c"; sourceTree = ""; }; + 7CC003581D1217A1003E68DC /* http_parser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = http_parser.h; path = "../../../zerotierone/ext/http-parser/http_parser.h"; sourceTree = ""; }; + 7CC0035A1D1217B2003E68DC /* lz4.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lz4.c; path = ../../../zerotierone/ext/lz4/lz4.c; sourceTree = ""; }; + 7CC0035B1D1217B2003E68DC /* lz4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = lz4.h; path = ../../../zerotierone/ext/lz4/lz4.h; sourceTree = ""; }; + 7CE960AE1DF78234005F3B0D /* pico_device.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_device.c; path = ../../../ext/picotcp/stack/pico_device.c; sourceTree = ""; }; + 7CE960AF1DF78234005F3B0D /* pico_frame.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_frame.c; path = ../../../ext/picotcp/stack/pico_frame.c; sourceTree = ""; }; + 7CE960B01DF78234005F3B0D /* pico_md5.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_md5.c; path = ../../../ext/picotcp/stack/pico_md5.c; sourceTree = ""; }; + 7CE960B11DF78234005F3B0D /* pico_protocol.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_protocol.c; path = ../../../ext/picotcp/stack/pico_protocol.c; sourceTree = ""; }; + 7CE960B21DF78234005F3B0D /* pico_socket_multicast.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_socket_multicast.c; path = ../../../ext/picotcp/stack/pico_socket_multicast.c; sourceTree = ""; }; + 7CE960B31DF78234005F3B0D /* pico_socket.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_socket.c; path = ../../../ext/picotcp/stack/pico_socket.c; sourceTree = ""; }; + 7CE960B41DF78234005F3B0D /* pico_stack.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_stack.c; path = ../../../ext/picotcp/stack/pico_stack.c; sourceTree = ""; }; + 7CE960B51DF78234005F3B0D /* pico_tree.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_tree.c; path = ../../../ext/picotcp/stack/pico_tree.c; sourceTree = ""; }; + 7CE960BE1DF78251005F3B0D /* pico_aodv.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_aodv.c; path = ../../../ext/picotcp/modules/pico_aodv.c; sourceTree = ""; }; + 7CE960BF1DF78251005F3B0D /* pico_aodv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_aodv.h; path = ../../../ext/picotcp/modules/pico_aodv.h; sourceTree = ""; }; + 7CE960C01DF78251005F3B0D /* pico_arp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_arp.c; path = ../../../ext/picotcp/modules/pico_arp.c; sourceTree = ""; }; + 7CE960C11DF78251005F3B0D /* pico_arp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_arp.h; path = ../../../ext/picotcp/modules/pico_arp.h; sourceTree = ""; }; + 7CE960C21DF78251005F3B0D /* pico_dev_loop.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_dev_loop.c; path = ../../../ext/picotcp/modules/pico_dev_loop.c; sourceTree = ""; }; + 7CE960C31DF78251005F3B0D /* pico_dev_loop.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_dev_loop.h; path = ../../../ext/picotcp/modules/pico_dev_loop.h; sourceTree = ""; }; + 7CE960C41DF78251005F3B0D /* pico_dev_mock.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_dev_mock.c; path = ../../../ext/picotcp/modules/pico_dev_mock.c; sourceTree = ""; }; + 7CE960C51DF78251005F3B0D /* pico_dev_mock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_dev_mock.h; path = ../../../ext/picotcp/modules/pico_dev_mock.h; sourceTree = ""; }; + 7CE960C61DF78251005F3B0D /* pico_dev_null.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_dev_null.c; path = ../../../ext/picotcp/modules/pico_dev_null.c; sourceTree = ""; }; + 7CE960C71DF78251005F3B0D /* pico_dev_null.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_dev_null.h; path = ../../../ext/picotcp/modules/pico_dev_null.h; sourceTree = ""; }; + 7CE960C81DF78251005F3B0D /* pico_dev_pcap.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_dev_pcap.c; path = ../../../ext/picotcp/modules/pico_dev_pcap.c; sourceTree = ""; }; + 7CE960C91DF78251005F3B0D /* pico_dev_pcap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_dev_pcap.h; path = ../../../ext/picotcp/modules/pico_dev_pcap.h; sourceTree = ""; }; + 7CE960CA1DF78251005F3B0D /* pico_dev_ppp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_dev_ppp.c; path = ../../../ext/picotcp/modules/pico_dev_ppp.c; sourceTree = ""; }; + 7CE960CB1DF78251005F3B0D /* pico_dev_ppp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_dev_ppp.h; path = ../../../ext/picotcp/modules/pico_dev_ppp.h; sourceTree = ""; }; + 7CE960CC1DF78251005F3B0D /* pico_dev_tap_windows_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_dev_tap_windows_private.h; path = ../../../ext/picotcp/modules/pico_dev_tap_windows_private.h; sourceTree = ""; }; + 7CE960CD1DF78251005F3B0D /* pico_dev_tap_windows.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_dev_tap_windows.c; path = ../../../ext/picotcp/modules/pico_dev_tap_windows.c; sourceTree = ""; }; + 7CE960CE1DF78251005F3B0D /* pico_dev_tap_windows.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_dev_tap_windows.h; path = ../../../ext/picotcp/modules/pico_dev_tap_windows.h; sourceTree = ""; }; + 7CE960CF1DF78251005F3B0D /* pico_dev_tap.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_dev_tap.c; path = ../../../ext/picotcp/modules/pico_dev_tap.c; sourceTree = ""; }; + 7CE960D01DF78251005F3B0D /* pico_dev_tap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_dev_tap.h; path = ../../../ext/picotcp/modules/pico_dev_tap.h; sourceTree = ""; }; + 7CE960D11DF78251005F3B0D /* pico_dev_tun.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_dev_tun.c; path = ../../../ext/picotcp/modules/pico_dev_tun.c; sourceTree = ""; }; + 7CE960D21DF78251005F3B0D /* pico_dev_tun.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_dev_tun.h; path = ../../../ext/picotcp/modules/pico_dev_tun.h; sourceTree = ""; }; + 7CE960D31DF78251005F3B0D /* pico_dev_vde.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_dev_vde.c; path = ../../../ext/picotcp/modules/pico_dev_vde.c; sourceTree = ""; }; + 7CE960D41DF78251005F3B0D /* pico_dev_vde.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_dev_vde.h; path = ../../../ext/picotcp/modules/pico_dev_vde.h; sourceTree = ""; }; + 7CE960D51DF78251005F3B0D /* pico_dhcp_client.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_dhcp_client.c; path = ../../../ext/picotcp/modules/pico_dhcp_client.c; sourceTree = ""; }; + 7CE960D61DF78251005F3B0D /* pico_dhcp_client.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_dhcp_client.h; path = ../../../ext/picotcp/modules/pico_dhcp_client.h; sourceTree = ""; }; + 7CE960D71DF78251005F3B0D /* pico_dhcp_common.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_dhcp_common.c; path = ../../../ext/picotcp/modules/pico_dhcp_common.c; sourceTree = ""; }; + 7CE960D81DF78251005F3B0D /* pico_dhcp_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_dhcp_common.h; path = ../../../ext/picotcp/modules/pico_dhcp_common.h; sourceTree = ""; }; + 7CE960D91DF78251005F3B0D /* pico_dhcp_server.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_dhcp_server.c; path = ../../../ext/picotcp/modules/pico_dhcp_server.c; sourceTree = ""; }; + 7CE960DA1DF78251005F3B0D /* pico_dhcp_server.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_dhcp_server.h; path = ../../../ext/picotcp/modules/pico_dhcp_server.h; sourceTree = ""; }; + 7CE960DB1DF78251005F3B0D /* pico_dns_client.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_dns_client.c; path = ../../../ext/picotcp/modules/pico_dns_client.c; sourceTree = ""; }; + 7CE960DC1DF78251005F3B0D /* pico_dns_client.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_dns_client.h; path = ../../../ext/picotcp/modules/pico_dns_client.h; sourceTree = ""; }; + 7CE960DD1DF78251005F3B0D /* pico_dns_common.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_dns_common.c; path = ../../../ext/picotcp/modules/pico_dns_common.c; sourceTree = ""; }; + 7CE960DE1DF78251005F3B0D /* pico_dns_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_dns_common.h; path = ../../../ext/picotcp/modules/pico_dns_common.h; sourceTree = ""; }; + 7CE960DF1DF78251005F3B0D /* pico_dns_sd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_dns_sd.c; path = ../../../ext/picotcp/modules/pico_dns_sd.c; sourceTree = ""; }; + 7CE960E01DF78251005F3B0D /* pico_dns_sd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_dns_sd.h; path = ../../../ext/picotcp/modules/pico_dns_sd.h; sourceTree = ""; }; + 7CE960E11DF78251005F3B0D /* pico_fragments.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_fragments.c; path = ../../../ext/picotcp/modules/pico_fragments.c; sourceTree = ""; }; + 7CE960E21DF78251005F3B0D /* pico_fragments.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_fragments.h; path = ../../../ext/picotcp/modules/pico_fragments.h; sourceTree = ""; }; + 7CE960E31DF78251005F3B0D /* pico_hotplug_detection.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_hotplug_detection.c; path = ../../../ext/picotcp/modules/pico_hotplug_detection.c; sourceTree = ""; }; + 7CE960E41DF78251005F3B0D /* pico_hotplug_detection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_hotplug_detection.h; path = ../../../ext/picotcp/modules/pico_hotplug_detection.h; sourceTree = ""; }; + 7CE960E51DF78251005F3B0D /* pico_icmp4.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_icmp4.c; path = ../../../ext/picotcp/modules/pico_icmp4.c; sourceTree = ""; }; + 7CE960E61DF78251005F3B0D /* pico_icmp4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_icmp4.h; path = ../../../ext/picotcp/modules/pico_icmp4.h; sourceTree = ""; }; + 7CE960E71DF78251005F3B0D /* pico_icmp6.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_icmp6.c; path = ../../../ext/picotcp/modules/pico_icmp6.c; sourceTree = ""; }; + 7CE960E81DF78251005F3B0D /* pico_icmp6.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_icmp6.h; path = ../../../ext/picotcp/modules/pico_icmp6.h; sourceTree = ""; }; + 7CE960E91DF78251005F3B0D /* pico_igmp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_igmp.c; path = ../../../ext/picotcp/modules/pico_igmp.c; sourceTree = ""; }; + 7CE960EA1DF78251005F3B0D /* pico_igmp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_igmp.h; path = ../../../ext/picotcp/modules/pico_igmp.h; sourceTree = ""; }; + 7CE960EB1DF78251005F3B0D /* pico_ipfilter.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_ipfilter.c; path = ../../../ext/picotcp/modules/pico_ipfilter.c; sourceTree = ""; }; + 7CE960EC1DF78251005F3B0D /* pico_ipfilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_ipfilter.h; path = ../../../ext/picotcp/modules/pico_ipfilter.h; sourceTree = ""; }; + 7CE960ED1DF78251005F3B0D /* pico_ipv4.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_ipv4.c; path = ../../../ext/picotcp/modules/pico_ipv4.c; sourceTree = ""; }; + 7CE960EE1DF78251005F3B0D /* pico_ipv4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_ipv4.h; path = ../../../ext/picotcp/modules/pico_ipv4.h; sourceTree = ""; }; + 7CE960EF1DF78251005F3B0D /* pico_ipv6_nd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_ipv6_nd.c; path = ../../../ext/picotcp/modules/pico_ipv6_nd.c; sourceTree = ""; }; + 7CE960F01DF78251005F3B0D /* pico_ipv6_nd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_ipv6_nd.h; path = ../../../ext/picotcp/modules/pico_ipv6_nd.h; sourceTree = ""; }; + 7CE960F11DF78251005F3B0D /* pico_ipv6.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_ipv6.c; path = ../../../ext/picotcp/modules/pico_ipv6.c; sourceTree = ""; }; + 7CE960F21DF78251005F3B0D /* pico_ipv6.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_ipv6.h; path = ../../../ext/picotcp/modules/pico_ipv6.h; sourceTree = ""; }; + 7CE960F31DF78251005F3B0D /* pico_mdns.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_mdns.c; path = ../../../ext/picotcp/modules/pico_mdns.c; sourceTree = ""; }; + 7CE960F41DF78251005F3B0D /* pico_mdns.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_mdns.h; path = ../../../ext/picotcp/modules/pico_mdns.h; sourceTree = ""; }; + 7CE960F51DF78251005F3B0D /* pico_mld.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_mld.c; path = ../../../ext/picotcp/modules/pico_mld.c; sourceTree = ""; }; + 7CE960F61DF78251005F3B0D /* pico_mld.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_mld.h; path = ../../../ext/picotcp/modules/pico_mld.h; sourceTree = ""; }; + 7CE960F71DF78251005F3B0D /* pico_mm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_mm.c; path = ../../../ext/picotcp/modules/pico_mm.c; sourceTree = ""; }; + 7CE960F81DF78251005F3B0D /* pico_mm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_mm.h; path = ../../../ext/picotcp/modules/pico_mm.h; sourceTree = ""; }; + 7CE960F91DF78251005F3B0D /* pico_nat.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_nat.c; path = ../../../ext/picotcp/modules/pico_nat.c; sourceTree = ""; }; + 7CE960FA1DF78251005F3B0D /* pico_nat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_nat.h; path = ../../../ext/picotcp/modules/pico_nat.h; sourceTree = ""; }; + 7CE960FB1DF78251005F3B0D /* pico_olsr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_olsr.c; path = ../../../ext/picotcp/modules/pico_olsr.c; sourceTree = ""; }; + 7CE960FC1DF78251005F3B0D /* pico_olsr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_olsr.h; path = ../../../ext/picotcp/modules/pico_olsr.h; sourceTree = ""; }; + 7CE960FD1DF78251005F3B0D /* pico_posix.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_posix.c; path = ../../../ext/picotcp/modules/pico_posix.c; sourceTree = ""; }; + 7CE960FE1DF78251005F3B0D /* pico_slaacv4.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_slaacv4.c; path = ../../../ext/picotcp/modules/pico_slaacv4.c; sourceTree = ""; }; + 7CE960FF1DF78251005F3B0D /* pico_slaacv4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_slaacv4.h; path = ../../../ext/picotcp/modules/pico_slaacv4.h; sourceTree = ""; }; + 7CE961001DF78251005F3B0D /* pico_sntp_client.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_sntp_client.c; path = ../../../ext/picotcp/modules/pico_sntp_client.c; sourceTree = ""; }; + 7CE961011DF78251005F3B0D /* pico_sntp_client.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_sntp_client.h; path = ../../../ext/picotcp/modules/pico_sntp_client.h; sourceTree = ""; }; + 7CE961021DF78251005F3B0D /* pico_socket_tcp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_socket_tcp.c; path = ../../../ext/picotcp/modules/pico_socket_tcp.c; sourceTree = ""; }; + 7CE961031DF78251005F3B0D /* pico_socket_tcp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_socket_tcp.h; path = ../../../ext/picotcp/modules/pico_socket_tcp.h; sourceTree = ""; }; + 7CE961041DF78251005F3B0D /* pico_socket_udp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_socket_udp.c; path = ../../../ext/picotcp/modules/pico_socket_udp.c; sourceTree = ""; }; + 7CE961051DF78251005F3B0D /* pico_socket_udp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_socket_udp.h; path = ../../../ext/picotcp/modules/pico_socket_udp.h; sourceTree = ""; }; + 7CE961061DF78251005F3B0D /* pico_strings.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_strings.c; path = ../../../ext/picotcp/modules/pico_strings.c; sourceTree = ""; }; + 7CE961071DF78251005F3B0D /* pico_strings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_strings.h; path = ../../../ext/picotcp/modules/pico_strings.h; sourceTree = ""; }; + 7CE961081DF78251005F3B0D /* pico_tcp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_tcp.c; path = ../../../ext/picotcp/modules/pico_tcp.c; sourceTree = ""; }; + 7CE961091DF78251005F3B0D /* pico_tcp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_tcp.h; path = ../../../ext/picotcp/modules/pico_tcp.h; sourceTree = ""; }; + 7CE9610A1DF78251005F3B0D /* pico_tftp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_tftp.c; path = ../../../ext/picotcp/modules/pico_tftp.c; sourceTree = ""; }; + 7CE9610B1DF78251005F3B0D /* pico_tftp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_tftp.h; path = ../../../ext/picotcp/modules/pico_tftp.h; sourceTree = ""; }; + 7CE9610C1DF78251005F3B0D /* pico_udp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pico_udp.c; path = ../../../ext/picotcp/modules/pico_udp.c; sourceTree = ""; }; + 7CE9610D1DF78251005F3B0D /* pico_udp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_udp.h; path = ../../../ext/picotcp/modules/pico_udp.h; sourceTree = ""; }; + 7CE961361DF78266005F3B0D /* heap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = heap.h; path = ../../../ext/picotcp/include/heap.h; sourceTree = ""; }; + 7CE961371DF78266005F3B0D /* pico_addressing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_addressing.h; path = ../../../ext/picotcp/include/pico_addressing.h; sourceTree = ""; }; + 7CE961381DF78266005F3B0D /* pico_config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_config.h; path = ../../../ext/picotcp/include/pico_config.h; sourceTree = ""; }; + 7CE961391DF78266005F3B0D /* pico_constants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_constants.h; path = ../../../ext/picotcp/include/pico_constants.h; sourceTree = ""; }; + 7CE9613A1DF78266005F3B0D /* pico_device.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_device.h; path = ../../../ext/picotcp/include/pico_device.h; sourceTree = ""; }; + 7CE9613B1DF78266005F3B0D /* pico_eth.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_eth.h; path = ../../../ext/picotcp/include/pico_eth.h; sourceTree = ""; }; + 7CE9613C1DF78266005F3B0D /* pico_frame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_frame.h; path = ../../../ext/picotcp/include/pico_frame.h; sourceTree = ""; }; + 7CE9613D1DF78266005F3B0D /* pico_md5.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_md5.h; path = ../../../ext/picotcp/include/pico_md5.h; sourceTree = ""; }; + 7CE9613E1DF78266005F3B0D /* pico_module_eth.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_module_eth.h; path = ../../../ext/picotcp/include/pico_module_eth.h; sourceTree = ""; }; + 7CE9613F1DF78266005F3B0D /* pico_protocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_protocol.h; path = ../../../ext/picotcp/include/pico_protocol.h; sourceTree = ""; }; + 7CE961401DF78266005F3B0D /* pico_queue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_queue.h; path = ../../../ext/picotcp/include/pico_queue.h; sourceTree = ""; }; + 7CE961411DF78266005F3B0D /* pico_socket_multicast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_socket_multicast.h; path = ../../../ext/picotcp/include/pico_socket_multicast.h; sourceTree = ""; }; + 7CE961421DF78266005F3B0D /* pico_socket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_socket.h; path = ../../../ext/picotcp/include/pico_socket.h; sourceTree = ""; }; + 7CE961431DF78266005F3B0D /* pico_stack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_stack.h; path = ../../../ext/picotcp/include/pico_stack.h; sourceTree = ""; }; + 7CE961441DF78266005F3B0D /* pico_tree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pico_tree.h; path = ../../../ext/picotcp/include/pico_tree.h; sourceTree = ""; }; + 7CEAF4EE1DBAC80C006585E7 /* ClusterDefinition.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = ClusterDefinition.hpp; path = ../../../zerotierone/service/ClusterDefinition.hpp; sourceTree = ""; }; + 7CEAF4F11DBAC80C006585E7 /* ControlPlane.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ControlPlane.cpp; path = ../../../zerotierone/service/ControlPlane.cpp; sourceTree = ""; }; + 7CEAF4F21DBAC80C006585E7 /* ControlPlane.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = ControlPlane.hpp; path = ../../../zerotierone/service/ControlPlane.hpp; sourceTree = ""; }; + 7CEAF4F81DBAC841006585E7 /* Arp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Arp.cpp; path = ../../../zerotierone/osdep/Arp.cpp; sourceTree = ""; }; + 7CEAF4F91DBAC841006585E7 /* Arp.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Arp.hpp; path = ../../../zerotierone/osdep/Arp.hpp; sourceTree = ""; }; + 7CEAF4FC1DBAC841006585E7 /* Binder.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Binder.hpp; path = ../../../zerotierone/osdep/Binder.hpp; sourceTree = ""; }; + 7CEAF4FD1DBAC841006585E7 /* Http.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Http.cpp; path = ../../../zerotierone/osdep/Http.cpp; sourceTree = ""; }; + 7CEAF4FE1DBAC841006585E7 /* Http.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Http.hpp; path = ../../../zerotierone/osdep/Http.hpp; sourceTree = ""; }; + 7CEAF4FF1DBAC841006585E7 /* OSUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OSUtils.cpp; path = ../../../zerotierone/osdep/OSUtils.cpp; sourceTree = ""; }; + 7CEAF5001DBAC841006585E7 /* OSUtils.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = OSUtils.hpp; path = ../../../zerotierone/osdep/OSUtils.hpp; sourceTree = ""; }; + 7CEAF5011DBAC841006585E7 /* Phy.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Phy.hpp; path = ../../../zerotierone/osdep/Phy.hpp; sourceTree = ""; }; + 7CEAF5021DBAC841006585E7 /* PortMapper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PortMapper.cpp; path = ../../../zerotierone/osdep/PortMapper.cpp; sourceTree = ""; }; + 7CEAF5031DBAC841006585E7 /* PortMapper.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = PortMapper.hpp; path = ../../../zerotierone/osdep/PortMapper.hpp; sourceTree = ""; }; + 7CEAF5061DBAC841006585E7 /* Thread.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Thread.hpp; path = ../../../zerotierone/osdep/Thread.hpp; sourceTree = ""; }; + 7CEAF50D1DBAC872006585E7 /* Address.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Address.hpp; path = ../../../zerotierone/node/Address.hpp; sourceTree = ""; }; + 7CEAF50E1DBAC872006585E7 /* Array.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Array.hpp; path = ../../../zerotierone/node/Array.hpp; sourceTree = ""; }; + 7CEAF50F1DBAC872006585E7 /* AtomicCounter.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = AtomicCounter.hpp; path = ../../../zerotierone/node/AtomicCounter.hpp; sourceTree = ""; }; + 7CEAF5101DBAC872006585E7 /* BinarySemaphore.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = BinarySemaphore.hpp; path = ../../../zerotierone/node/BinarySemaphore.hpp; sourceTree = ""; }; + 7CEAF5111DBAC872006585E7 /* Buffer.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Buffer.hpp; path = ../../../zerotierone/node/Buffer.hpp; sourceTree = ""; }; + 7CEAF5121DBAC872006585E7 /* C25519.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = C25519.cpp; path = ../../../zerotierone/node/C25519.cpp; sourceTree = ""; }; + 7CEAF5131DBAC872006585E7 /* C25519.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = C25519.hpp; path = ../../../zerotierone/node/C25519.hpp; sourceTree = ""; }; + 7CEAF5141DBAC872006585E7 /* CertificateOfMembership.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CertificateOfMembership.cpp; path = ../../../zerotierone/node/CertificateOfMembership.cpp; sourceTree = ""; }; + 7CEAF5151DBAC872006585E7 /* CertificateOfMembership.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = CertificateOfMembership.hpp; path = ../../../zerotierone/node/CertificateOfMembership.hpp; sourceTree = ""; }; + 7CEAF5161DBAC872006585E7 /* Cluster.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Cluster.cpp; path = ../../../zerotierone/node/Cluster.cpp; sourceTree = ""; }; + 7CEAF5171DBAC872006585E7 /* Cluster.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Cluster.hpp; path = ../../../zerotierone/node/Cluster.hpp; sourceTree = ""; }; + 7CEAF5181DBAC872006585E7 /* Constants.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Constants.hpp; path = ../../../zerotierone/node/Constants.hpp; sourceTree = ""; }; + 7CEAF51C1DBAC872006585E7 /* Dictionary.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Dictionary.hpp; path = ../../../zerotierone/node/Dictionary.hpp; sourceTree = ""; }; + 7CEAF51D1DBAC872006585E7 /* Hashtable.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Hashtable.hpp; path = ../../../zerotierone/node/Hashtable.hpp; sourceTree = ""; }; + 7CEAF51E1DBAC872006585E7 /* Identity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Identity.cpp; path = ../../../zerotierone/node/Identity.cpp; sourceTree = ""; }; + 7CEAF51F1DBAC872006585E7 /* Identity.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Identity.hpp; path = ../../../zerotierone/node/Identity.hpp; sourceTree = ""; }; + 7CEAF5201DBAC872006585E7 /* IncomingPacket.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IncomingPacket.cpp; path = ../../../zerotierone/node/IncomingPacket.cpp; sourceTree = ""; }; + 7CEAF5211DBAC872006585E7 /* IncomingPacket.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = IncomingPacket.hpp; path = ../../../zerotierone/node/IncomingPacket.hpp; sourceTree = ""; }; + 7CEAF5221DBAC872006585E7 /* InetAddress.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = InetAddress.cpp; path = ../../../zerotierone/node/InetAddress.cpp; sourceTree = ""; }; + 7CEAF5231DBAC872006585E7 /* InetAddress.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = InetAddress.hpp; path = ../../../zerotierone/node/InetAddress.hpp; sourceTree = ""; }; + 7CEAF5241DBAC872006585E7 /* MAC.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = MAC.hpp; path = ../../../zerotierone/node/MAC.hpp; sourceTree = ""; }; + 7CEAF5251DBAC872006585E7 /* Multicaster.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Multicaster.cpp; path = ../../../zerotierone/node/Multicaster.cpp; sourceTree = ""; }; + 7CEAF5261DBAC872006585E7 /* Multicaster.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Multicaster.hpp; path = ../../../zerotierone/node/Multicaster.hpp; sourceTree = ""; }; + 7CEAF5271DBAC872006585E7 /* MulticastGroup.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = MulticastGroup.hpp; path = ../../../zerotierone/node/MulticastGroup.hpp; sourceTree = ""; }; + 7CEAF5281DBAC872006585E7 /* Mutex.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Mutex.hpp; path = ../../../zerotierone/node/Mutex.hpp; sourceTree = ""; }; + 7CEAF5291DBAC872006585E7 /* Network.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Network.cpp; path = ../../../zerotierone/node/Network.cpp; sourceTree = ""; }; + 7CEAF52A1DBAC872006585E7 /* Network.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Network.hpp; path = ../../../zerotierone/node/Network.hpp; sourceTree = ""; }; + 7CEAF52B1DBAC872006585E7 /* NetworkConfig.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NetworkConfig.cpp; path = ../../../zerotierone/node/NetworkConfig.cpp; sourceTree = ""; }; + 7CEAF52C1DBAC872006585E7 /* NetworkConfig.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = NetworkConfig.hpp; path = ../../../zerotierone/node/NetworkConfig.hpp; sourceTree = ""; }; + 7CEAF52F1DBAC872006585E7 /* Node.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Node.cpp; path = ../../../zerotierone/node/Node.cpp; sourceTree = ""; }; + 7CEAF5301DBAC872006585E7 /* Node.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Node.hpp; path = ../../../zerotierone/node/Node.hpp; sourceTree = ""; }; + 7CEAF5311DBAC872006585E7 /* NonCopyable.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = NonCopyable.hpp; path = ../../../zerotierone/node/NonCopyable.hpp; sourceTree = ""; }; + 7CEAF5321DBAC872006585E7 /* OutboundMulticast.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OutboundMulticast.cpp; path = ../../../zerotierone/node/OutboundMulticast.cpp; sourceTree = ""; }; + 7CEAF5331DBAC872006585E7 /* OutboundMulticast.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = OutboundMulticast.hpp; path = ../../../zerotierone/node/OutboundMulticast.hpp; sourceTree = ""; }; + 7CEAF5341DBAC872006585E7 /* Packet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Packet.cpp; path = ../../../zerotierone/node/Packet.cpp; sourceTree = ""; }; + 7CEAF5351DBAC872006585E7 /* Packet.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Packet.hpp; path = ../../../zerotierone/node/Packet.hpp; sourceTree = ""; }; + 7CEAF5361DBAC872006585E7 /* Path.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Path.cpp; path = ../../../zerotierone/node/Path.cpp; sourceTree = ""; }; + 7CEAF5371DBAC872006585E7 /* Path.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Path.hpp; path = ../../../zerotierone/node/Path.hpp; sourceTree = ""; }; + 7CEAF5381DBAC872006585E7 /* Peer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Peer.cpp; path = ../../../zerotierone/node/Peer.cpp; sourceTree = ""; }; + 7CEAF5391DBAC872006585E7 /* Peer.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Peer.hpp; path = ../../../zerotierone/node/Peer.hpp; sourceTree = ""; }; + 7CEAF53A1DBAC872006585E7 /* Poly1305.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Poly1305.cpp; path = ../../../zerotierone/node/Poly1305.cpp; sourceTree = ""; }; + 7CEAF53B1DBAC872006585E7 /* Poly1305.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Poly1305.hpp; path = ../../../zerotierone/node/Poly1305.hpp; sourceTree = ""; }; + 7CEAF53C1DBAC872006585E7 /* RuntimeEnvironment.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = RuntimeEnvironment.hpp; path = ../../../zerotierone/node/RuntimeEnvironment.hpp; sourceTree = ""; }; + 7CEAF53D1DBAC872006585E7 /* Salsa20.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Salsa20.cpp; path = ../../../zerotierone/node/Salsa20.cpp; sourceTree = ""; }; + 7CEAF53E1DBAC872006585E7 /* Salsa20.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Salsa20.hpp; path = ../../../zerotierone/node/Salsa20.hpp; sourceTree = ""; }; + 7CEAF53F1DBAC872006585E7 /* SelfAwareness.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SelfAwareness.cpp; path = ../../../zerotierone/node/SelfAwareness.cpp; sourceTree = ""; }; + 7CEAF5401DBAC872006585E7 /* SelfAwareness.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = SelfAwareness.hpp; path = ../../../zerotierone/node/SelfAwareness.hpp; sourceTree = ""; }; + 7CEAF5411DBAC872006585E7 /* SHA512.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SHA512.cpp; path = ../../../zerotierone/node/SHA512.cpp; sourceTree = ""; }; + 7CEAF5421DBAC872006585E7 /* SHA512.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = SHA512.hpp; path = ../../../zerotierone/node/SHA512.hpp; sourceTree = ""; }; + 7CEAF5431DBAC872006585E7 /* SharedPtr.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = SharedPtr.hpp; path = ../../../zerotierone/node/SharedPtr.hpp; sourceTree = ""; }; + 7CEAF5441DBAC872006585E7 /* Switch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Switch.cpp; path = ../../../zerotierone/node/Switch.cpp; sourceTree = ""; }; + 7CEAF5451DBAC872006585E7 /* Switch.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Switch.hpp; path = ../../../zerotierone/node/Switch.hpp; sourceTree = ""; }; + 7CEAF5461DBAC872006585E7 /* Topology.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Topology.cpp; path = ../../../zerotierone/node/Topology.cpp; sourceTree = ""; }; + 7CEAF5471DBAC872006585E7 /* Topology.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Topology.hpp; path = ../../../zerotierone/node/Topology.hpp; sourceTree = ""; }; + 7CEAF5481DBAC872006585E7 /* Utils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Utils.cpp; path = ../../../zerotierone/node/Utils.cpp; sourceTree = ""; }; + 7CEAF5491DBAC872006585E7 /* Utils.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Utils.hpp; path = ../../../zerotierone/node/Utils.hpp; sourceTree = ""; }; + 7CEAF54A1DBAC872006585E7 /* World.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = World.hpp; path = ../../../zerotierone/node/World.hpp; sourceTree = ""; }; + 7CEAF5821DBACB3E006585E7 /* OneService.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OneService.cpp; path = ../../../zerotierone/service/OneService.cpp; sourceTree = ""; }; + 7CEAF5831DBACB3E006585E7 /* OneService.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = OneService.hpp; path = ../../../zerotierone/service/OneService.hpp; sourceTree = ""; }; + 7CEAF5891DBAD0BF006585E7 /* DeferredPackets.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DeferredPackets.cpp; path = ../../../zerotierone/node/DeferredPackets.cpp; sourceTree = ""; }; + 7CEAF58A1DBAD0BF006585E7 /* DeferredPackets.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = DeferredPackets.hpp; path = ../../../zerotierone/node/DeferredPackets.hpp; sourceTree = ""; }; + 7CEAF58E1DBAD10A006585E7 /* BackgroundResolver.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = BackgroundResolver.cpp; path = ../../../zerotierone/osdep/BackgroundResolver.cpp; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 7CC003151D1216B0003E68DC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7CC0031F1D1216E3003E68DC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7CC0032C1D1216F8003E68DC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7CC003391D121741003E68DC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 7C969B211DB99CA800BD3F7F /* picoTCP */ = { + isa = PBXGroup; + children = ( + 7CE961361DF78266005F3B0D /* heap.h */, + 7CE961371DF78266005F3B0D /* pico_addressing.h */, + 7CE961381DF78266005F3B0D /* pico_config.h */, + 7CE961391DF78266005F3B0D /* pico_constants.h */, + 7CE9613A1DF78266005F3B0D /* pico_device.h */, + 7CE9613B1DF78266005F3B0D /* pico_eth.h */, + 7CE9613C1DF78266005F3B0D /* pico_frame.h */, + 7CE9613D1DF78266005F3B0D /* pico_md5.h */, + 7CE9613E1DF78266005F3B0D /* pico_module_eth.h */, + 7CE9613F1DF78266005F3B0D /* pico_protocol.h */, + 7CE961401DF78266005F3B0D /* pico_queue.h */, + 7CE961411DF78266005F3B0D /* pico_socket_multicast.h */, + 7CE961421DF78266005F3B0D /* pico_socket.h */, + 7CE961431DF78266005F3B0D /* pico_stack.h */, + 7CE961441DF78266005F3B0D /* pico_tree.h */, + 7CE960BE1DF78251005F3B0D /* pico_aodv.c */, + 7CE960BF1DF78251005F3B0D /* pico_aodv.h */, + 7CE960C01DF78251005F3B0D /* pico_arp.c */, + 7CE960C11DF78251005F3B0D /* pico_arp.h */, + 7CE960C21DF78251005F3B0D /* pico_dev_loop.c */, + 7CE960C31DF78251005F3B0D /* pico_dev_loop.h */, + 7CE960C41DF78251005F3B0D /* pico_dev_mock.c */, + 7CE960C51DF78251005F3B0D /* pico_dev_mock.h */, + 7CE960C61DF78251005F3B0D /* pico_dev_null.c */, + 7CE960C71DF78251005F3B0D /* pico_dev_null.h */, + 7CE960C81DF78251005F3B0D /* pico_dev_pcap.c */, + 7CE960C91DF78251005F3B0D /* pico_dev_pcap.h */, + 7CE960CA1DF78251005F3B0D /* pico_dev_ppp.c */, + 7CE960CB1DF78251005F3B0D /* pico_dev_ppp.h */, + 7CE960CC1DF78251005F3B0D /* pico_dev_tap_windows_private.h */, + 7CE960CD1DF78251005F3B0D /* pico_dev_tap_windows.c */, + 7CE960CE1DF78251005F3B0D /* pico_dev_tap_windows.h */, + 7CE960CF1DF78251005F3B0D /* pico_dev_tap.c */, + 7CE960D01DF78251005F3B0D /* pico_dev_tap.h */, + 7CE960D11DF78251005F3B0D /* pico_dev_tun.c */, + 7CE960D21DF78251005F3B0D /* pico_dev_tun.h */, + 7CE960D31DF78251005F3B0D /* pico_dev_vde.c */, + 7CE960D41DF78251005F3B0D /* pico_dev_vde.h */, + 7CE960D51DF78251005F3B0D /* pico_dhcp_client.c */, + 7CE960D61DF78251005F3B0D /* pico_dhcp_client.h */, + 7CE960D71DF78251005F3B0D /* pico_dhcp_common.c */, + 7CE960D81DF78251005F3B0D /* pico_dhcp_common.h */, + 7CE960D91DF78251005F3B0D /* pico_dhcp_server.c */, + 7CE960DA1DF78251005F3B0D /* pico_dhcp_server.h */, + 7CE960DB1DF78251005F3B0D /* pico_dns_client.c */, + 7CE960DC1DF78251005F3B0D /* pico_dns_client.h */, + 7CE960DD1DF78251005F3B0D /* pico_dns_common.c */, + 7CE960DE1DF78251005F3B0D /* pico_dns_common.h */, + 7CE960DF1DF78251005F3B0D /* pico_dns_sd.c */, + 7CE960E01DF78251005F3B0D /* pico_dns_sd.h */, + 7CE960E11DF78251005F3B0D /* pico_fragments.c */, + 7CE960E21DF78251005F3B0D /* pico_fragments.h */, + 7CE960E31DF78251005F3B0D /* pico_hotplug_detection.c */, + 7CE960E41DF78251005F3B0D /* pico_hotplug_detection.h */, + 7CE960E51DF78251005F3B0D /* pico_icmp4.c */, + 7CE960E61DF78251005F3B0D /* pico_icmp4.h */, + 7CE960E71DF78251005F3B0D /* pico_icmp6.c */, + 7CE960E81DF78251005F3B0D /* pico_icmp6.h */, + 7CE960E91DF78251005F3B0D /* pico_igmp.c */, + 7CE960EA1DF78251005F3B0D /* pico_igmp.h */, + 7CE960EB1DF78251005F3B0D /* pico_ipfilter.c */, + 7CE960EC1DF78251005F3B0D /* pico_ipfilter.h */, + 7CE960ED1DF78251005F3B0D /* pico_ipv4.c */, + 7CE960EE1DF78251005F3B0D /* pico_ipv4.h */, + 7CE960EF1DF78251005F3B0D /* pico_ipv6_nd.c */, + 7CE960F01DF78251005F3B0D /* pico_ipv6_nd.h */, + 7CE960F11DF78251005F3B0D /* pico_ipv6.c */, + 7CE960F21DF78251005F3B0D /* pico_ipv6.h */, + 7CE960F31DF78251005F3B0D /* pico_mdns.c */, + 7CE960F41DF78251005F3B0D /* pico_mdns.h */, + 7CE960F51DF78251005F3B0D /* pico_mld.c */, + 7CE960F61DF78251005F3B0D /* pico_mld.h */, + 7CE960F71DF78251005F3B0D /* pico_mm.c */, + 7CE960F81DF78251005F3B0D /* pico_mm.h */, + 7CE960F91DF78251005F3B0D /* pico_nat.c */, + 7CE960FA1DF78251005F3B0D /* pico_nat.h */, + 7CE960FB1DF78251005F3B0D /* pico_olsr.c */, + 7CE960FC1DF78251005F3B0D /* pico_olsr.h */, + 7CE960FD1DF78251005F3B0D /* pico_posix.c */, + 7CE960FE1DF78251005F3B0D /* pico_slaacv4.c */, + 7CE960FF1DF78251005F3B0D /* pico_slaacv4.h */, + 7CE961001DF78251005F3B0D /* pico_sntp_client.c */, + 7CE961011DF78251005F3B0D /* pico_sntp_client.h */, + 7CE961021DF78251005F3B0D /* pico_socket_tcp.c */, + 7CE961031DF78251005F3B0D /* pico_socket_tcp.h */, + 7CE961041DF78251005F3B0D /* pico_socket_udp.c */, + 7CE961051DF78251005F3B0D /* pico_socket_udp.h */, + 7CE961061DF78251005F3B0D /* pico_strings.c */, + 7CE961071DF78251005F3B0D /* pico_strings.h */, + 7CE961081DF78251005F3B0D /* pico_tcp.c */, + 7CE961091DF78251005F3B0D /* pico_tcp.h */, + 7CE9610A1DF78251005F3B0D /* pico_tftp.c */, + 7CE9610B1DF78251005F3B0D /* pico_tftp.h */, + 7CE9610C1DF78251005F3B0D /* pico_udp.c */, + 7CE9610D1DF78251005F3B0D /* pico_udp.h */, + 7CE960AE1DF78234005F3B0D /* pico_device.c */, + 7CE960AF1DF78234005F3B0D /* pico_frame.c */, + 7CE960B01DF78234005F3B0D /* pico_md5.c */, + 7CE960B11DF78234005F3B0D /* pico_protocol.c */, + 7CE960B21DF78234005F3B0D /* pico_socket_multicast.c */, + 7CE960B31DF78234005F3B0D /* pico_socket.c */, + 7CE960B41DF78234005F3B0D /* pico_stack.c */, + 7CE960B51DF78234005F3B0D /* pico_tree.c */, + ); + name = picoTCP; + sourceTree = ""; + }; + 7CC002FB1D12164D003E68DC = { + isa = PBXGroup; + children = ( + 7C969B211DB99CA800BD3F7F /* picoTCP */, + 7CC003131D12167D003E68DC /* SDK */, + 7CC003121D121677003E68DC /* ZeroTier */, + 7CC003101D12166B003E68DC /* ext */, + 7CC003191D1216B0003E68DC /* ZeroTierSDK_Unity3D_iOS */, + 7CC003241D1216E3003E68DC /* ZeroTierSDK_iOS */, + 7CC003311D1216F8003E68DC /* ZeroTierSDK_OSX */, + 7CC0033D1D121742003E68DC /* ZeroTierSDK_Unity3D_OSX */, + 7CC003061D12164D003E68DC /* Products */, + ); + sourceTree = ""; + }; + 7CC003061D12164D003E68DC /* Products */ = { + isa = PBXGroup; + children = ( + 7CC003181D1216B0003E68DC /* ZeroTierSDK_Unity3D_iOS.bundle */, + 7CC003231D1216E3003E68DC /* ZeroTierSDK_iOS.framework */, + 7CC003301D1216F8003E68DC /* ZeroTierSDK_OSX.framework */, + 7CC0033C1D121741003E68DC /* ZeroTierSDK_Unity3D_OSX.bundle */, + ); + name = Products; + sourceTree = ""; + }; + 7CC003101D12166B003E68DC /* ext */ = { + isa = PBXGroup; + children = ( + 7C0463251DE362BD003E2B0E /* json.c */, + 7C0463261DE362BD003E2B0E /* json.h */, + 7CC0035A1D1217B2003E68DC /* lz4.c */, + 7CC0035B1D1217B2003E68DC /* lz4.h */, + 7CC003571D1217A1003E68DC /* http_parser.c */, + 7CC003581D1217A1003E68DC /* http_parser.h */, + ); + name = ext; + sourceTree = ""; + }; + 7CC003121D121677003E68DC /* ZeroTier */ = { + isa = PBXGroup; + children = ( + 7C0463291DE363BA003E2B0E /* ManagedRoute.cpp */, + 7C04632A1DE363BA003E2B0E /* ManagedRoute.hpp */, + 7CEAF58E1DBAD10A006585E7 /* BackgroundResolver.cpp */, + 7CEAF5891DBAD0BF006585E7 /* DeferredPackets.cpp */, + 7CEAF58A1DBAD0BF006585E7 /* DeferredPackets.hpp */, + 7CEAF5821DBACB3E006585E7 /* OneService.cpp */, + 7CEAF5831DBACB3E006585E7 /* OneService.hpp */, + 7CEAF50D1DBAC872006585E7 /* Address.hpp */, + 7CEAF50E1DBAC872006585E7 /* Array.hpp */, + 7CEAF50F1DBAC872006585E7 /* AtomicCounter.hpp */, + 7CEAF5101DBAC872006585E7 /* BinarySemaphore.hpp */, + 7CEAF5111DBAC872006585E7 /* Buffer.hpp */, + 7CEAF5121DBAC872006585E7 /* C25519.cpp */, + 7CEAF5131DBAC872006585E7 /* C25519.hpp */, + 7CEAF5141DBAC872006585E7 /* CertificateOfMembership.cpp */, + 7CEAF5151DBAC872006585E7 /* CertificateOfMembership.hpp */, + 7CEAF5161DBAC872006585E7 /* Cluster.cpp */, + 7CEAF5171DBAC872006585E7 /* Cluster.hpp */, + 7CEAF5181DBAC872006585E7 /* Constants.hpp */, + 7CEAF51C1DBAC872006585E7 /* Dictionary.hpp */, + 7CEAF51D1DBAC872006585E7 /* Hashtable.hpp */, + 7CEAF51E1DBAC872006585E7 /* Identity.cpp */, + 7CEAF51F1DBAC872006585E7 /* Identity.hpp */, + 7CEAF5201DBAC872006585E7 /* IncomingPacket.cpp */, + 7CEAF5211DBAC872006585E7 /* IncomingPacket.hpp */, + 7CEAF5221DBAC872006585E7 /* InetAddress.cpp */, + 7CEAF5231DBAC872006585E7 /* InetAddress.hpp */, + 7CEAF5241DBAC872006585E7 /* MAC.hpp */, + 7CEAF5251DBAC872006585E7 /* Multicaster.cpp */, + 7CEAF5261DBAC872006585E7 /* Multicaster.hpp */, + 7CEAF5271DBAC872006585E7 /* MulticastGroup.hpp */, + 7CEAF5281DBAC872006585E7 /* Mutex.hpp */, + 7CEAF5291DBAC872006585E7 /* Network.cpp */, + 7CEAF52A1DBAC872006585E7 /* Network.hpp */, + 7CEAF52B1DBAC872006585E7 /* NetworkConfig.cpp */, + 7CEAF52C1DBAC872006585E7 /* NetworkConfig.hpp */, + 7CEAF52F1DBAC872006585E7 /* Node.cpp */, + 7CEAF5301DBAC872006585E7 /* Node.hpp */, + 7CEAF5311DBAC872006585E7 /* NonCopyable.hpp */, + 7CEAF5321DBAC872006585E7 /* OutboundMulticast.cpp */, + 7CEAF5331DBAC872006585E7 /* OutboundMulticast.hpp */, + 7CEAF5341DBAC872006585E7 /* Packet.cpp */, + 7CEAF5351DBAC872006585E7 /* Packet.hpp */, + 7CEAF5361DBAC872006585E7 /* Path.cpp */, + 7CEAF5371DBAC872006585E7 /* Path.hpp */, + 7CEAF5381DBAC872006585E7 /* Peer.cpp */, + 7CEAF5391DBAC872006585E7 /* Peer.hpp */, + 7CEAF53A1DBAC872006585E7 /* Poly1305.cpp */, + 7CEAF53B1DBAC872006585E7 /* Poly1305.hpp */, + 7CEAF53C1DBAC872006585E7 /* RuntimeEnvironment.hpp */, + 7CEAF53D1DBAC872006585E7 /* Salsa20.cpp */, + 7CEAF53E1DBAC872006585E7 /* Salsa20.hpp */, + 7CEAF53F1DBAC872006585E7 /* SelfAwareness.cpp */, + 7CEAF5401DBAC872006585E7 /* SelfAwareness.hpp */, + 7CEAF5411DBAC872006585E7 /* SHA512.cpp */, + 7CEAF5421DBAC872006585E7 /* SHA512.hpp */, + 7CEAF5431DBAC872006585E7 /* SharedPtr.hpp */, + 7CEAF5441DBAC872006585E7 /* Switch.cpp */, + 7CEAF5451DBAC872006585E7 /* Switch.hpp */, + 7CEAF5461DBAC872006585E7 /* Topology.cpp */, + 7CEAF5471DBAC872006585E7 /* Topology.hpp */, + 7CEAF5481DBAC872006585E7 /* Utils.cpp */, + 7CEAF5491DBAC872006585E7 /* Utils.hpp */, + 7CEAF54A1DBAC872006585E7 /* World.hpp */, + 7CEAF4F81DBAC841006585E7 /* Arp.cpp */, + 7CEAF4F91DBAC841006585E7 /* Arp.hpp */, + 7CEAF4FC1DBAC841006585E7 /* Binder.hpp */, + 7CEAF4FD1DBAC841006585E7 /* Http.cpp */, + 7CEAF4FE1DBAC841006585E7 /* Http.hpp */, + 7CEAF4FF1DBAC841006585E7 /* OSUtils.cpp */, + 7CEAF5001DBAC841006585E7 /* OSUtils.hpp */, + 7CEAF5011DBAC841006585E7 /* Phy.hpp */, + 7CEAF5021DBAC841006585E7 /* PortMapper.cpp */, + 7CEAF5031DBAC841006585E7 /* PortMapper.hpp */, + 7CEAF5061DBAC841006585E7 /* Thread.hpp */, + 7CEAF4EE1DBAC80C006585E7 /* ClusterDefinition.hpp */, + 7CEAF4F11DBAC80C006585E7 /* ControlPlane.cpp */, + 7CEAF4F21DBAC80C006585E7 /* ControlPlane.hpp */, + ); + name = ZeroTier; + sourceTree = ""; + }; + 7CC003131D12167D003E68DC /* SDK */ = { + isa = PBXGroup; + children = ( + 7C2228D21DCC11A8006A2661 /* picotcp.cpp */, + 7C2228D31DCC11A8006A2661 /* picotcp.hpp */, + 7C7D52771DBEADD200896C93 /* debug.h */, + 7C7D52781DBEADD200896C93 /* defs.h */, + 7C7D52791DBEADD200896C93 /* intercept.c */, + 7C7D527A1DBEADD200896C93 /* proxy.cpp */, + 7C7D527B1DBEADD200896C93 /* rpc.c */, + 7C7D527C1DBEADD200896C93 /* rpc.h */, + 7C7D527D1DBEADD200896C93 /* service.cpp */, + 7C7D527E1DBEADD200896C93 /* signatures.h */, + 7C7D527F1DBEADD200896C93 /* sockets.c */, + 7C7D52801DBEADD200896C93 /* tap.cpp */, + 7C7D52811DBEADD200896C93 /* tap.hpp */, + 7CC0034F1D12178D003E68DC /* SDK.h */, + ); + name = SDK; + sourceTree = ""; + }; + 7CC003191D1216B0003E68DC /* ZeroTierSDK_Unity3D_iOS */ = { + isa = PBXGroup; + children = ( + 7CC0031A1D1216B0003E68DC /* Info.plist */, + ); + path = ZeroTierSDK_Unity3D_iOS; + sourceTree = ""; + }; + 7CC003241D1216E3003E68DC /* ZeroTierSDK_iOS */ = { + isa = PBXGroup; + children = ( + 7CC003251D1216E3003E68DC /* ZeroTierSDK_iOS.h */, + 7CC003271D1216E3003E68DC /* Info.plist */, + ); + path = ZeroTierSDK_iOS; + sourceTree = ""; + }; + 7CC003311D1216F8003E68DC /* ZeroTierSDK_OSX */ = { + isa = PBXGroup; + children = ( + 7CC003321D1216F8003E68DC /* ZeroTierSDK_OSX.h */, + 7CC003341D1216F8003E68DC /* Info.plist */, + ); + path = ZeroTierSDK_OSX; + sourceTree = ""; + }; + 7CC0033D1D121742003E68DC /* ZeroTierSDK_Unity3D_OSX */ = { + isa = PBXGroup; + children = ( + 7CC0033E1D121742003E68DC /* Info.plist */, + ); + path = ZeroTierSDK_Unity3D_OSX; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 7CC003201D1216E3003E68DC /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 7CC003261D1216E3003E68DC /* ZeroTierSDK_iOS.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7CC0032D1D1216F8003E68DC /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 7CC003171D1216B0003E68DC /* ZeroTierSDK_Unity3D_iOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = 7CC0031B1D1216B0003E68DC /* Build configuration list for PBXNativeTarget "ZeroTierSDK_Unity3D_iOS" */; + buildPhases = ( + 7CC003141D1216B0003E68DC /* Sources */, + 7CC003151D1216B0003E68DC /* Frameworks */, + 7CC003161D1216B0003E68DC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = ZeroTierSDK_Unity3D_iOS; + productName = ZeroTierSDK_Unity3D_iOS; + productReference = 7CC003181D1216B0003E68DC /* ZeroTierSDK_Unity3D_iOS.bundle */; + productType = "com.apple.product-type.bundle"; + }; + 7CC003221D1216E3003E68DC /* ZeroTierSDK_iOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = 7CC003281D1216E3003E68DC /* Build configuration list for PBXNativeTarget "ZeroTierSDK_iOS" */; + buildPhases = ( + 7CC0031E1D1216E3003E68DC /* Sources */, + 7CC0031F1D1216E3003E68DC /* Frameworks */, + 7CC003201D1216E3003E68DC /* Headers */, + 7CC003211D1216E3003E68DC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = ZeroTierSDK_iOS; + productName = ZeroTierSDK_iOS; + productReference = 7CC003231D1216E3003E68DC /* ZeroTierSDK_iOS.framework */; + productType = "com.apple.product-type.framework"; + }; + 7CC0032F1D1216F8003E68DC /* ZeroTierSDK_OSX */ = { + isa = PBXNativeTarget; + buildConfigurationList = 7CC003351D1216F8003E68DC /* Build configuration list for PBXNativeTarget "ZeroTierSDK_OSX" */; + buildPhases = ( + 7CC0032B1D1216F8003E68DC /* Sources */, + 7CC0032C1D1216F8003E68DC /* Frameworks */, + 7CC0032D1D1216F8003E68DC /* Headers */, + 7CC0032E1D1216F8003E68DC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = ZeroTierSDK_OSX; + productName = ZeroTierSDK_OSX; + productReference = 7CC003301D1216F8003E68DC /* ZeroTierSDK_OSX.framework */; + productType = "com.apple.product-type.framework"; + }; + 7CC0033B1D121741003E68DC /* ZeroTierSDK_Unity3D_OSX */ = { + isa = PBXNativeTarget; + buildConfigurationList = 7CC0033F1D121742003E68DC /* Build configuration list for PBXNativeTarget "ZeroTierSDK_Unity3D_OSX" */; + buildPhases = ( + 7CC003381D121741003E68DC /* Sources */, + 7CC003391D121741003E68DC /* Frameworks */, + 7CC0033A1D121741003E68DC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = ZeroTierSDK_Unity3D_OSX; + productName = ZeroTierSDK_Unity3D_OSX; + productReference = 7CC0033C1D121741003E68DC /* ZeroTierSDK_Unity3D_OSX.bundle */; + productType = "com.apple.product-type.bundle"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 7CC002FC1D12164D003E68DC /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0730; + ORGANIZATIONNAME = "ZeroTier Inc."; + TargetAttributes = { + 7CC003171D1216B0003E68DC = { + CreatedOnToolsVersion = 7.3; + }; + 7CC003221D1216E3003E68DC = { + CreatedOnToolsVersion = 7.3; + DevelopmentTeam = 8ZD9JUCZ4V; + }; + 7CC0032F1D1216F8003E68DC = { + CreatedOnToolsVersion = 7.3; + DevelopmentTeam = 8ZD9JUCZ4V; + }; + 7CC0033B1D121741003E68DC = { + CreatedOnToolsVersion = 7.3; + }; + }; + }; + buildConfigurationList = 7CC002FF1D12164D003E68DC /* Build configuration list for PBXProject "ZeroTierSDK_Apple" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 7CC002FB1D12164D003E68DC; + productRefGroup = 7CC003061D12164D003E68DC /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 7CC003171D1216B0003E68DC /* ZeroTierSDK_Unity3D_iOS */, + 7CC0033B1D121741003E68DC /* ZeroTierSDK_Unity3D_OSX */, + 7CC003221D1216E3003E68DC /* ZeroTierSDK_iOS */, + 7CC0032F1D1216F8003E68DC /* ZeroTierSDK_OSX */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 7CC003161D1216B0003E68DC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7CC003211D1216E3003E68DC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7CC0032E1D1216F8003E68DC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7CC0033A1D121741003E68DC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 7CC003141D1216B0003E68DC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7CE960BA1DF78234005F3B0D /* pico_socket_multicast.c in Sources */, + 7CE961251DF78251005F3B0D /* pico_ipv4.c in Sources */, + 7C0463271DE362BD003E2B0E /* json.c in Sources */, + 7CE9612E1DF78251005F3B0D /* pico_slaacv4.c in Sources */, + 7CEAF5531DBAC872006585E7 /* Multicaster.cpp in Sources */, + 7C2228D41DCC11A8006A2661 /* picotcp.cpp in Sources */, + 7CE961101DF78251005F3B0D /* pico_dev_loop.c in Sources */, + 7CEAF50B1DBAC841006585E7 /* PortMapper.cpp in Sources */, + 7CE961111DF78251005F3B0D /* pico_dev_mock.c in Sources */, + 7CEAF5501DBAC872006585E7 /* Identity.cpp in Sources */, + 7CE9610E1DF78251005F3B0D /* pico_aodv.c in Sources */, + 7CE961261DF78251005F3B0D /* pico_ipv6_nd.c in Sources */, + 7CEAF5601DBAC872006585E7 /* Topology.cpp in Sources */, + 7CE9612C1DF78251005F3B0D /* pico_olsr.c in Sources */, + 7CE961191DF78251005F3B0D /* pico_dhcp_client.c in Sources */, + 7CEAF5521DBAC872006585E7 /* InetAddress.cpp in Sources */, + 7CE9612A1DF78251005F3B0D /* pico_mm.c in Sources */, + 7CE961171DF78251005F3B0D /* pico_dev_tun.c in Sources */, + 7CEAF58B1DBAD0BF006585E7 /* DeferredPackets.cpp in Sources */, + 7CEAF55C1DBAC872006585E7 /* Salsa20.cpp in Sources */, + 7CEAF5071DBAC841006585E7 /* Arp.cpp in Sources */, + 7CE961181DF78251005F3B0D /* pico_dev_vde.c in Sources */, + 7C7D52861DBEADD200896C93 /* service.cpp in Sources */, + 7CE961201DF78251005F3B0D /* pico_hotplug_detection.c in Sources */, + 7CEAF5551DBAC872006585E7 /* NetworkConfig.cpp in Sources */, + 7CEAF5541DBAC872006585E7 /* Network.cpp in Sources */, + 7CE960BB1DF78234005F3B0D /* pico_socket.c in Sources */, + 7CE961331DF78251005F3B0D /* pico_tcp.c in Sources */, + 7CEAF5571DBAC872006585E7 /* OutboundMulticast.cpp in Sources */, + 7CE961141DF78251005F3B0D /* pico_dev_ppp.c in Sources */, + 7CE961221DF78251005F3B0D /* pico_icmp6.c in Sources */, + 7C7D52831DBEADD200896C93 /* intercept.c in Sources */, + 7CE9611D1DF78251005F3B0D /* pico_dns_common.c in Sources */, + 7CE961121DF78251005F3B0D /* pico_dev_null.c in Sources */, + 7CE961241DF78251005F3B0D /* pico_ipfilter.c in Sources */, + 7CEAF54B1DBAC872006585E7 /* C25519.cpp in Sources */, + 7C7D52881DBEADD200896C93 /* tap.cpp in Sources */, + 7CE961351DF78251005F3B0D /* pico_udp.c in Sources */, + 7CEAF5841DBACB3E006585E7 /* OneService.cpp in Sources */, + 7CEAF5091DBAC841006585E7 /* Http.cpp in Sources */, + 7CE9611A1DF78251005F3B0D /* pico_dhcp_common.c in Sources */, + 7CE960BD1DF78234005F3B0D /* pico_tree.c in Sources */, + 7CE961231DF78251005F3B0D /* pico_igmp.c in Sources */, + 7CE961321DF78251005F3B0D /* pico_strings.c in Sources */, + 7CEAF50A1DBAC841006585E7 /* OSUtils.cpp in Sources */, + 7CEAF5581DBAC872006585E7 /* Packet.cpp in Sources */, + 7CE961151DF78251005F3B0D /* pico_dev_tap_windows.c in Sources */, + 7C7D52851DBEADD200896C93 /* rpc.c in Sources */, + 7CE9612F1DF78251005F3B0D /* pico_sntp_client.c in Sources */, + 7CE961271DF78251005F3B0D /* pico_ipv6.c in Sources */, + 7CE961301DF78251005F3B0D /* pico_socket_tcp.c in Sources */, + 7C7D52871DBEADD200896C93 /* sockets.c in Sources */, + 7CE960B81DF78234005F3B0D /* pico_md5.c in Sources */, + 7CEAF5561DBAC872006585E7 /* Node.cpp in Sources */, + 7CE9611C1DF78251005F3B0D /* pico_dns_client.c in Sources */, + 7CE9610F1DF78251005F3B0D /* pico_arp.c in Sources */, + 7CE961131DF78251005F3B0D /* pico_dev_pcap.c in Sources */, + 7C7D52841DBEADD200896C93 /* proxy.cpp in Sources */, + 7CE9611E1DF78251005F3B0D /* pico_dns_sd.c in Sources */, + 7C04632B1DE363BA003E2B0E /* ManagedRoute.cpp in Sources */, + 7CC003591D1217A1003E68DC /* http_parser.c in Sources */, + 7CEAF55E1DBAC872006585E7 /* SHA512.cpp in Sources */, + 7CEAF5511DBAC872006585E7 /* IncomingPacket.cpp in Sources */, + 7CEAF5611DBAC872006585E7 /* Utils.cpp in Sources */, + 7CEAF4F61DBAC80C006585E7 /* ControlPlane.cpp in Sources */, + 7CE960B71DF78234005F3B0D /* pico_frame.c in Sources */, + 7CE960BC1DF78234005F3B0D /* pico_stack.c in Sources */, + 7CE961341DF78251005F3B0D /* pico_tftp.c in Sources */, + 7CEAF55A1DBAC872006585E7 /* Peer.cpp in Sources */, + 7CEAF5591DBAC872006585E7 /* Path.cpp in Sources */, + 7CE961291DF78251005F3B0D /* pico_mld.c in Sources */, + 7CE960B91DF78234005F3B0D /* pico_protocol.c in Sources */, + 7CEAF55D1DBAC872006585E7 /* SelfAwareness.cpp in Sources */, + 7CE9612B1DF78251005F3B0D /* pico_nat.c in Sources */, + 7CE961161DF78251005F3B0D /* pico_dev_tap.c in Sources */, + 7CE960B61DF78234005F3B0D /* pico_device.c in Sources */, + 7CEAF54C1DBAC872006585E7 /* CertificateOfMembership.cpp in Sources */, + 7CEAF55B1DBAC872006585E7 /* Poly1305.cpp in Sources */, + 7CE9611B1DF78251005F3B0D /* pico_dhcp_server.c in Sources */, + 7CEAF54D1DBAC872006585E7 /* Cluster.cpp in Sources */, + 7CE961311DF78251005F3B0D /* pico_socket_udp.c in Sources */, + 7CE9612D1DF78251005F3B0D /* pico_posix.c in Sources */, + 7CE961281DF78251005F3B0D /* pico_mdns.c in Sources */, + 7CE961211DF78251005F3B0D /* pico_icmp4.c in Sources */, + 7CC0035C1D1217B2003E68DC /* lz4.c in Sources */, + 7CE9611F1DF78251005F3B0D /* pico_fragments.c in Sources */, + 7CEAF55F1DBAC872006585E7 /* Switch.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7CC0031E1D1216E3003E68DC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7C9D4ED51DF246F200EF20CD /* json.c in Sources */, + 7C2228D51DCC11B8006A2661 /* picotcp.cpp in Sources */, + 7C7F16881DBEB8B300C7AFFD /* lz4.c in Sources */, + 7C7F16891DBEB8B300C7AFFD /* http_parser.c in Sources */, + 7C7F164D1DBEB7AB00C7AFFD /* BackgroundResolver.cpp in Sources */, + 7C7F164E1DBEB7AB00C7AFFD /* DeferredPackets.cpp in Sources */, + 7C7F164F1DBEB7AB00C7AFFD /* OneService.cpp in Sources */, + 7C7F16501DBEB7AB00C7AFFD /* C25519.cpp in Sources */, + 7C7F16511DBEB7AB00C7AFFD /* CertificateOfMembership.cpp in Sources */, + 7C7F16521DBEB7AB00C7AFFD /* Cluster.cpp in Sources */, + 7C7F16541DBEB7AB00C7AFFD /* Identity.cpp in Sources */, + 7C7F16551DBEB7AB00C7AFFD /* IncomingPacket.cpp in Sources */, + 7C7F16561DBEB7AB00C7AFFD /* InetAddress.cpp in Sources */, + 7C7F16571DBEB7AB00C7AFFD /* Multicaster.cpp in Sources */, + 7C7F16581DBEB7AB00C7AFFD /* Network.cpp in Sources */, + 7C7F16591DBEB7AB00C7AFFD /* NetworkConfig.cpp in Sources */, + 7C7F165A1DBEB7AB00C7AFFD /* Node.cpp in Sources */, + 7C7F165B1DBEB7AB00C7AFFD /* OutboundMulticast.cpp in Sources */, + 7C7F165C1DBEB7AB00C7AFFD /* Packet.cpp in Sources */, + 7C7F165D1DBEB7AB00C7AFFD /* Path.cpp in Sources */, + 7C7F165E1DBEB7AB00C7AFFD /* Peer.cpp in Sources */, + 7C7F165F1DBEB7AB00C7AFFD /* Poly1305.cpp in Sources */, + 7C7F16601DBEB7AB00C7AFFD /* Salsa20.cpp in Sources */, + 7C7F16611DBEB7AB00C7AFFD /* SelfAwareness.cpp in Sources */, + 7C7F16621DBEB7AB00C7AFFD /* SHA512.cpp in Sources */, + 7C7F16631DBEB7AB00C7AFFD /* Switch.cpp in Sources */, + 7C7F16641DBEB7AB00C7AFFD /* Topology.cpp in Sources */, + 7C7F16651DBEB7AB00C7AFFD /* Utils.cpp in Sources */, + 7C7F16661DBEB7AB00C7AFFD /* Arp.cpp in Sources */, + 7C7F16671DBEB7AB00C7AFFD /* Http.cpp in Sources */, + 7C7F16681DBEB7AB00C7AFFD /* OSUtils.cpp in Sources */, + 7C7F16691DBEB7AB00C7AFFD /* PortMapper.cpp in Sources */, + 7C7F166B1DBEB7AB00C7AFFD /* ControlPlane.cpp in Sources */, + 7C7F16471DBEB76F00C7AFFD /* intercept.c in Sources */, + 7C7F16481DBEB76F00C7AFFD /* proxy.cpp in Sources */, + 7C7F16491DBEB76F00C7AFFD /* rpc.c in Sources */, + 7C7F164A1DBEB76F00C7AFFD /* service.cpp in Sources */, + 7C7F164B1DBEB76F00C7AFFD /* sockets.c in Sources */, + 7C7F164C1DBEB76F00C7AFFD /* tap.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7CC0032B1D1216F8003E68DC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7CE961451DF782CA005F3B0D /* pico_aodv.c in Sources */, + 7CE961461DF782CA005F3B0D /* pico_arp.c in Sources */, + 7CE961471DF782CA005F3B0D /* pico_dev_loop.c in Sources */, + 7CE961481DF782CA005F3B0D /* pico_dev_mock.c in Sources */, + 7CE961491DF782CA005F3B0D /* pico_dev_null.c in Sources */, + 7CE9614B1DF782CA005F3B0D /* pico_dev_ppp.c in Sources */, + 7CE961501DF782CA005F3B0D /* pico_dhcp_client.c in Sources */, + 7CE961511DF782CA005F3B0D /* pico_dhcp_common.c in Sources */, + 7CE961521DF782CA005F3B0D /* pico_dhcp_server.c in Sources */, + 7CE961531DF782CA005F3B0D /* pico_dns_client.c in Sources */, + 7CE961541DF782CA005F3B0D /* pico_dns_common.c in Sources */, + 7CE961551DF782CA005F3B0D /* pico_dns_sd.c in Sources */, + 7CE961561DF782CA005F3B0D /* pico_fragments.c in Sources */, + 7CE961571DF782CA005F3B0D /* pico_hotplug_detection.c in Sources */, + 7CE961581DF782CA005F3B0D /* pico_icmp4.c in Sources */, + 7CE961591DF782CA005F3B0D /* pico_icmp6.c in Sources */, + 7CE9615A1DF782CA005F3B0D /* pico_igmp.c in Sources */, + 7CE9615B1DF782CA005F3B0D /* pico_ipfilter.c in Sources */, + 7CE9615C1DF782CA005F3B0D /* pico_ipv4.c in Sources */, + 7CE9615D1DF782CA005F3B0D /* pico_ipv6_nd.c in Sources */, + 7CE9615E1DF782CA005F3B0D /* pico_ipv6.c in Sources */, + 7CE9615F1DF782CA005F3B0D /* pico_mdns.c in Sources */, + 7CE961601DF782CA005F3B0D /* pico_mld.c in Sources */, + 7CE961611DF782CA005F3B0D /* pico_mm.c in Sources */, + 7CE961621DF782CA005F3B0D /* pico_nat.c in Sources */, + 7CE961631DF782CA005F3B0D /* pico_olsr.c in Sources */, + 7CE961641DF782CA005F3B0D /* pico_posix.c in Sources */, + 7CE961651DF782CA005F3B0D /* pico_slaacv4.c in Sources */, + 7CE961661DF782CA005F3B0D /* pico_sntp_client.c in Sources */, + 7CE961671DF782CA005F3B0D /* pico_socket_tcp.c in Sources */, + 7CE961681DF782CA005F3B0D /* pico_socket_udp.c in Sources */, + 7CE961691DF782CA005F3B0D /* pico_strings.c in Sources */, + 7CE9616A1DF782CA005F3B0D /* pico_tcp.c in Sources */, + 7CE9616B1DF782CA005F3B0D /* pico_tftp.c in Sources */, + 7CE9616C1DF782CA005F3B0D /* pico_udp.c in Sources */, + 7CE9616D1DF782CA005F3B0D /* pico_device.c in Sources */, + 7CE9616E1DF782CA005F3B0D /* pico_frame.c in Sources */, + 7CE9616F1DF782CA005F3B0D /* pico_md5.c in Sources */, + 7CE961701DF782CA005F3B0D /* pico_protocol.c in Sources */, + 7CE961711DF782CA005F3B0D /* pico_socket_multicast.c in Sources */, + 7CE961721DF782CA005F3B0D /* pico_socket.c in Sources */, + 7CE961731DF782CA005F3B0D /* pico_stack.c in Sources */, + 7CE961741DF782CA005F3B0D /* pico_tree.c in Sources */, + 7C04632C1DE363C9003E2B0E /* ManagedRoute.cpp in Sources */, + 7C0463281DE362D9003E2B0E /* json.c in Sources */, + 7C5B40971DCC14E300C43410 /* picotcp.cpp in Sources */, + 7C7D528B1DBEADE600896C93 /* intercept.c in Sources */, + 7C7D528C1DBEADE600896C93 /* proxy.cpp in Sources */, + 7C7D528D1DBEADE600896C93 /* rpc.c in Sources */, + 7C7D528F1DBEADE600896C93 /* service.cpp in Sources */, + 7C7D52901DBEADE600896C93 /* signatures.h in Sources */, + 7C7D52911DBEADE600896C93 /* sockets.c in Sources */, + 7C7D52921DBEADE600896C93 /* tap.cpp in Sources */, + 7C7D52931DBEADE600896C93 /* tap.hpp in Sources */, + 7CEAF58F1DBAD10A006585E7 /* BackgroundResolver.cpp in Sources */, + 7CEAF58C1DBAD0E1006585E7 /* DeferredPackets.cpp in Sources */, + 7CEAF58D1DBAD0E1006585E7 /* OneService.cpp in Sources */, + 7CEAF5621DBAC975006585E7 /* C25519.cpp in Sources */, + 7CEAF5631DBAC975006585E7 /* CertificateOfMembership.cpp in Sources */, + 7CEAF5641DBAC975006585E7 /* Cluster.cpp in Sources */, + 7CEAF5671DBAC975006585E7 /* Identity.cpp in Sources */, + 7CEAF5681DBAC975006585E7 /* IncomingPacket.cpp in Sources */, + 7CEAF5691DBAC975006585E7 /* InetAddress.cpp in Sources */, + 7CEAF56A1DBAC975006585E7 /* Multicaster.cpp in Sources */, + 7CEAF56B1DBAC975006585E7 /* Network.cpp in Sources */, + 7CEAF56C1DBAC975006585E7 /* NetworkConfig.cpp in Sources */, + 7CEAF56D1DBAC975006585E7 /* Node.cpp in Sources */, + 7CEAF56E1DBAC975006585E7 /* OutboundMulticast.cpp in Sources */, + 7CEAF56F1DBAC975006585E7 /* Packet.cpp in Sources */, + 7CEAF5701DBAC975006585E7 /* Path.cpp in Sources */, + 7CEAF5711DBAC975006585E7 /* Peer.cpp in Sources */, + 7CEAF5721DBAC975006585E7 /* Poly1305.cpp in Sources */, + 7CEAF5731DBAC975006585E7 /* Salsa20.cpp in Sources */, + 7CEAF5741DBAC975006585E7 /* SelfAwareness.cpp in Sources */, + 7CEAF5751DBAC975006585E7 /* SHA512.cpp in Sources */, + 7CEAF5761DBAC975006585E7 /* Switch.cpp in Sources */, + 7CEAF5771DBAC975006585E7 /* Topology.cpp in Sources */, + 7CEAF5781DBAC975006585E7 /* Utils.cpp in Sources */, + 7CEAF5791DBAC975006585E7 /* Arp.cpp in Sources */, + 7CEAF57B1DBAC975006585E7 /* Http.cpp in Sources */, + 7CEAF57C1DBAC975006585E7 /* OSUtils.cpp in Sources */, + 7CEAF57D1DBAC975006585E7 /* PortMapper.cpp in Sources */, + 7CEAF5801DBAC975006585E7 /* ControlPlane.cpp in Sources */, + 7CC004D01D131E37003E68DC /* lz4.c in Sources */, + 7CC004D11D131E37003E68DC /* http_parser.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7CC003381D121741003E68DC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7CC005201D1324B3003E68DC /* lz4.c in Sources */, + 7CC005211D1324B3003E68DC /* http_parser.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 7CC0030B1D12164D003E68DC /* 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; + CURRENT_PROJECT_VERSION = 1; + 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; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 7CC0030C1D12164D003E68DC /* 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; + CURRENT_PROJECT_VERSION = 1; + 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; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 7CC0031C1D1216B0003E68DC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + ENABLE_BITCODE = NO; + HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/../../../zerotierone", + "$(SRCROOT)/../../../ext/lwip/src/include/", + "$(SRCROOT)/../../../ext/lwip/src/include/ipv4/", + ); + INFOPLIST_FILE = ZeroTierSDK_Unity3D_iOS/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Bundles"; + OTHER_CFLAGS = ( + "-D__UNITY_3D__", + "-DSDK", + "-DSDK_DEBUG", + ); + PRODUCT_BUNDLE_IDENTIFIER = "zerotier.ZeroTierSDK-Unity3D-iOS"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; + 7CC0031D1D1216B0003E68DC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + ENABLE_BITCODE = NO; + HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/../../../zerotierone", + "$(SRCROOT)/../../../ext/lwip/src/include/", + "$(SRCROOT)/../../../ext/lwip/src/include/ipv4/", + ); + INFOPLIST_FILE = ZeroTierSDK_Unity3D_iOS/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Bundles"; + OTHER_CFLAGS = ( + "-D__UNITY_3D__", + "-DSDK", + ); + PRODUCT_BUNDLE_IDENTIFIER = "zerotier.ZeroTierSDK-Unity3D-iOS"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; + 7CC003291D1216E3003E68DC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/../../../ext/lwip/src/include/ipv4", + "$(SRCROOT)/../../../ext/lwip/src/include", + "$(SRCROOT)/../../../ext", + "$(SRCROOT)/../../../zerotierone", + "$(SRCROOT)/../../../src/stack_drivers/lwip", + "$(SRCROOT)/../../../src", + ); + INFOPLIST_FILE = ZeroTierSDK_iOS/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.3; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + OTHER_CFLAGS = ( + "-DSDK_DEBUG", + "-DSDK", + "-D__IOS__", + "-DSDK_BUNDLED", + "-DUSING_BRIDGING_HEADER", + "-DSDK_IPV4", + "-D_APP_FRAMEWORK", + "-DSDK_LWIP", + ); + PRODUCT_BUNDLE_IDENTIFIER = "zerotier.ZeroTierSDK-iOS"; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 7CC0032A1D1216E3003E68DC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/../../../ext/lwip/src/include/ipv4", + "$(SRCROOT)/../../../ext/lwip/src/include", + "$(SRCROOT)/../../../ext", + "$(SRCROOT)/../../../zerotierone", + "$(SRCROOT)/../../../src/stack_drivers/lwip", + "$(SRCROOT)/../../../src", + ); + INFOPLIST_FILE = ZeroTierSDK_iOS/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.3; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + ONLY_ACTIVE_ARCH = YES; + OTHER_CFLAGS = ( + "-DSDK", + "-D__IOS__", + "-DSDK_BUNDLED", + "-DUSING_BRIDGING_HEADER", + "-D__APP_FRAMEWORK__", + "-DSDK_IPV4", + "-DSDK_LWIP", + ); + PRODUCT_BUNDLE_IDENTIFIER = "zerotier.ZeroTierSDK-iOS"; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 7CC003361D1216F8003E68DC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_VERSION = A; + HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/../../../zerotierone/", + "$(SRCROOT)/../../../ext/picotcp/include", + "$(SRCROOT)/../../../ext/picotcp/modules", + "$(SRCROOT)/../../../src", + "$(SRCROOT)/../../../ext/picotcp/build/include", + ); + INFOPLIST_FILE = ZeroTierSDK_OSX/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; + OTHER_CFLAGS = ( + "-DSDK", + "-DSDK_SERVICE", + "-DSDK_BUNDLED", + "-DSDK_DEBUG", + "-D__XCODE__", + "-DLWIP_DEBUG", + "-DSDK_IPV4", + "-DUSING_BRIDGING_HEADER", + "-DSDK_PICOTCP", + "-D__APP_FRAMEWORK__", + ); + PRODUCT_BUNDLE_IDENTIFIER = "zerotier.ZeroTierSDK-OSX"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 7CC003371D1216F8003E68DC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_VERSION = A; + HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/../../../zerotierone/", + "$(SRCROOT)/../../../ext/picotcp/include", + "$(SRCROOT)/../../../ext/picotcp/modules", + "$(SRCROOT)/../../../src", + "$(SRCROOT)/../../../ext/picotcp/build/include", + ); + INFOPLIST_FILE = ZeroTierSDK_OSX/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; + ONLY_ACTIVE_ARCH = YES; + OTHER_CFLAGS = ( + "-DSDK", + "-DSDK_SERVICE", + "-DSDK_BUNDLED", + "-D__XCODE__", + "-D__APP_FRAMEWORK__", + "-DSDK_IPV4", + "-DSDK_PICOTCP", + ); + PRODUCT_BUNDLE_IDENTIFIER = "zerotier.ZeroTierSDK-OSX"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + }; + name = Release; + }; + 7CC003401D121742003E68DC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/../../../ext/lwip/src/include/ipv4/", + "$(SRCROOT)/../../../zerotierone", + "$(SRCROOT)/../../../ext/lwip/src/include/", + ); + INFOPLIST_FILE = ZeroTierSDK_Unity3D_OSX/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Bundles"; + OTHER_CFLAGS = ( + "-DSDK_DEBUG", + "-DSDK", + "-D__UNITY_3D__", + "-DSDK_BUNDLED", + ); + PRODUCT_BUNDLE_IDENTIFIER = "zerotier.ZeroTierSDK-Unity3D-OSX"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; + 7CC003411D121742003E68DC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/../../../ext/lwip/src/include/ipv4/", + "$(SRCROOT)/../../../zerotierone", + "$(SRCROOT)/../../../ext/lwip/src/include/", + ); + INFOPLIST_FILE = ZeroTierSDK_Unity3D_OSX/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Bundles"; + ONLY_ACTIVE_ARCH = YES; + OTHER_CFLAGS = ( + "-DSDK", + "-DUSE_SOCKS_PROXY", + "-D__UNITY_3D__", + "-DSDK_BUNDLED", + ); + PRODUCT_BUNDLE_IDENTIFIER = "zerotier.ZeroTierSDK-Unity3D-OSX"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 7CC002FF1D12164D003E68DC /* Build configuration list for PBXProject "ZeroTierSDK_Apple" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7CC0030B1D12164D003E68DC /* Debug */, + 7CC0030C1D12164D003E68DC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 7CC0031B1D1216B0003E68DC /* Build configuration list for PBXNativeTarget "ZeroTierSDK_Unity3D_iOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7CC0031C1D1216B0003E68DC /* Debug */, + 7CC0031D1D1216B0003E68DC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 7CC003281D1216E3003E68DC /* Build configuration list for PBXNativeTarget "ZeroTierSDK_iOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7CC003291D1216E3003E68DC /* Debug */, + 7CC0032A1D1216E3003E68DC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 7CC003351D1216F8003E68DC /* Build configuration list for PBXNativeTarget "ZeroTierSDK_OSX" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7CC003361D1216F8003E68DC /* Debug */, + 7CC003371D1216F8003E68DC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 7CC0033F1D121742003E68DC /* Build configuration list for PBXNativeTarget "ZeroTierSDK_Unity3D_OSX" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7CC003401D121742003E68DC /* Debug */, + 7CC003411D121742003E68DC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 7CC002FC1D12164D003E68DC /* Project object */; +} diff --git a/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_Apple.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_Apple.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..7e32231 --- /dev/null +++ b/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_Apple.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_Apple.xcodeproj/project.xcworkspace/xcshareddata/ZeroTierSDK_Apple.xcscmblueprint b/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_Apple.xcodeproj/project.xcworkspace/xcshareddata/ZeroTierSDK_Apple.xcscmblueprint new file mode 100644 index 0000000..0d8a914 --- /dev/null +++ b/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_Apple.xcodeproj/project.xcworkspace/xcshareddata/ZeroTierSDK_Apple.xcscmblueprint @@ -0,0 +1,30 @@ +{ + "DVTSourceControlWorkspaceBlueprintPrimaryRemoteRepositoryKey" : "E606611F311EBBA46CDC9112D11FA5B7A3480FA9", + "DVTSourceControlWorkspaceBlueprintWorkingCopyRepositoryLocationsKey" : { + + }, + "DVTSourceControlWorkspaceBlueprintWorkingCopyStatesKey" : { + "ABA3617E9F0148F844A82502F0D808DE6591AA97" : 0, + "E606611F311EBBA46CDC9112D11FA5B7A3480FA9" : 0 + }, + "DVTSourceControlWorkspaceBlueprintIdentifierKey" : "0231F1D2-335A-48B9-9ED2-F5EC32297E1C", + "DVTSourceControlWorkspaceBlueprintWorkingCopyPathsKey" : { + "ABA3617E9F0148F844A82502F0D808DE6591AA97" : "zerotiersdk\/zerotierone\/", + "E606611F311EBBA46CDC9112D11FA5B7A3480FA9" : "zerotiersdk\/" + }, + "DVTSourceControlWorkspaceBlueprintNameKey" : "ZeroTierSDK_Apple", + "DVTSourceControlWorkspaceBlueprintVersion" : 204, + "DVTSourceControlWorkspaceBlueprintRelativePathToProjectKey" : "integrations\/apple\/ZeroTierSDK_Apple\/ZeroTierSDK_Apple.xcodeproj", + "DVTSourceControlWorkspaceBlueprintRemoteRepositoriesKey" : [ + { + "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "http:\/\/git.int.zerotier.com\/ZeroTier\/ZeroTierOne.git", + "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git", + "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "ABA3617E9F0148F844A82502F0D808DE6591AA97" + }, + { + "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "http:\/\/git.int.zerotier.com\/zerotier\/zerotiersdk.git", + "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git", + "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "E606611F311EBBA46CDC9112D11FA5B7A3480FA9" + } + ] +} \ No newline at end of file diff --git a/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_Apple.xcodeproj/xcshareddata/xcschemes/ZeroTierSDK_OSX.xcscheme b/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_Apple.xcodeproj/xcshareddata/xcschemes/ZeroTierSDK_OSX.xcscheme new file mode 100644 index 0000000..2347ba1 --- /dev/null +++ b/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_Apple.xcodeproj/xcshareddata/xcschemes/ZeroTierSDK_OSX.xcscheme @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_Apple.xcodeproj/xcshareddata/xcschemes/ZeroTierSDK_Unity3D_OSX.xcscheme b/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_Apple.xcodeproj/xcshareddata/xcschemes/ZeroTierSDK_Unity3D_OSX.xcscheme new file mode 100644 index 0000000..9f39e50 --- /dev/null +++ b/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_Apple.xcodeproj/xcshareddata/xcschemes/ZeroTierSDK_Unity3D_OSX.xcscheme @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_Apple.xcodeproj/xcshareddata/xcschemes/ZeroTierSDK_Unity3D_iOS.xcscheme b/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_Apple.xcodeproj/xcshareddata/xcschemes/ZeroTierSDK_Unity3D_iOS.xcscheme new file mode 100644 index 0000000..70130bd --- /dev/null +++ b/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_Apple.xcodeproj/xcshareddata/xcschemes/ZeroTierSDK_Unity3D_iOS.xcscheme @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_Apple.xcodeproj/xcshareddata/xcschemes/ZeroTierSDK_iOS.xcscheme b/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_Apple.xcodeproj/xcshareddata/xcschemes/ZeroTierSDK_iOS.xcscheme new file mode 100644 index 0000000..ac6a8e6 --- /dev/null +++ b/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_Apple.xcodeproj/xcshareddata/xcschemes/ZeroTierSDK_iOS.xcscheme @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_Apple.xcodeproj/xcuserdata/Joseph.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_Apple.xcodeproj/xcuserdata/Joseph.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 0000000..fe2b454 --- /dev/null +++ b/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_Apple.xcodeproj/xcuserdata/Joseph.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,5 @@ + + + diff --git a/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_Apple.xcodeproj/xcuserdata/Joseph.xcuserdatad/xcschemes/xcschememanagement.plist b/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_Apple.xcodeproj/xcuserdata/Joseph.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..373e0b2 --- /dev/null +++ b/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_Apple.xcodeproj/xcuserdata/Joseph.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,57 @@ + + + + + SchemeUserState + + ZeroTierSDK_OSX.xcscheme_^#shared#^_ + + orderHint + 3 + + ZeroTierSDK_Unity3D_OSX.xcscheme_^#shared#^_ + + orderHint + 4 + + ZeroTierSDK_Unity3D_iOS.xcscheme_^#shared#^_ + + orderHint + 1 + + ZeroTierSDK_iOS.xcscheme_^#shared#^_ + + orderHint + 2 + + + SuppressBuildableAutocreation + + 7CC003041D12164D003E68DC + + primary + + + 7CC003171D1216B0003E68DC + + primary + + + 7CC003221D1216E3003E68DC + + primary + + + 7CC0032F1D1216F8003E68DC + + primary + + + 7CC0033B1D121741003E68DC + + primary + + + + + diff --git a/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_OSX/Info.plist b/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_OSX/Info.plist new file mode 100644 index 0000000..44f4d61 --- /dev/null +++ b/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_OSX/Info.plist @@ -0,0 +1,28 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSHumanReadableCopyright + Copyright © 2016 ZeroTier Inc. All rights reserved. + NSPrincipalClass + + + diff --git a/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_OSX/ZeroTierSDK_OSX.h b/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_OSX/ZeroTierSDK_OSX.h new file mode 100644 index 0000000..ce3efcf --- /dev/null +++ b/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_OSX/ZeroTierSDK_OSX.h @@ -0,0 +1,19 @@ +// +// ZeroTierSDK_OSX.h +// ZeroTierSDK_OSX +// +// Created by Joseph Henry on 6/15/16. +// Copyright © 2016 ZeroTier Inc. All rights reserved. +// + +#import + +//! Project version number for ZeroTierSDK_OSX. +FOUNDATION_EXPORT double ZeroTierSDK_OSXVersionNumber; + +//! Project version string for ZeroTierSDK_OSX. +FOUNDATION_EXPORT const unsigned char ZeroTierSDK_OSXVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import + diff --git a/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_Unity3D_OSX/Info.plist b/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_Unity3D_OSX/Info.plist new file mode 100644 index 0000000..a3ef5c8 --- /dev/null +++ b/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_Unity3D_OSX/Info.plist @@ -0,0 +1,28 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + NSHumanReadableCopyright + Copyright © 2016 ZeroTier Inc. All rights reserved. + NSPrincipalClass + + + diff --git a/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_Unity3D_iOS/Info.plist b/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_Unity3D_iOS/Info.plist new file mode 100644 index 0000000..a3ef5c8 --- /dev/null +++ b/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_Unity3D_iOS/Info.plist @@ -0,0 +1,28 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + NSHumanReadableCopyright + Copyright © 2016 ZeroTier Inc. All rights reserved. + NSPrincipalClass + + + diff --git a/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_iOS/Info.plist b/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_iOS/Info.plist new file mode 100644 index 0000000..d3de8ee --- /dev/null +++ b/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_iOS/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSPrincipalClass + + + diff --git a/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_iOS/ZeroTierSDK_iOS.h b/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_iOS/ZeroTierSDK_iOS.h new file mode 100644 index 0000000..65f44c2 --- /dev/null +++ b/integrations/apple/ZeroTierSDK_Apple_pico/ZeroTierSDK_iOS/ZeroTierSDK_iOS.h @@ -0,0 +1,19 @@ +// +// ZeroTierSDK_iOS.h +// ZeroTierSDK_iOS +// +// Created by Joseph Henry on 6/15/16. +// Copyright © 2016 ZeroTier Inc. All rights reserved. +// + +#import + +//! Project version number for ZeroTierSDK_iOS. +FOUNDATION_EXPORT double ZeroTierSDK_iOSVersionNumber; + +//! Project version string for ZeroTierSDK_iOS. +FOUNDATION_EXPORT const unsigned char ZeroTierSDK_iOSVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/integrations/apple/example_app/OSX/Example_OSX_App.xcodeproj/project.pbxproj b/integrations/apple/example_app/OSX/Example_OSX_App.xcodeproj/project.pbxproj index 8dc2a48..0b56caf 100644 --- a/integrations/apple/example_app/OSX/Example_OSX_App.xcodeproj/project.pbxproj +++ b/integrations/apple/example_app/OSX/Example_OSX_App.xcodeproj/project.pbxproj @@ -124,6 +124,7 @@ TargetAttributes = { 7CFCB42C1D1AFEE800D3E66C = { CreatedOnToolsVersion = 7.3; + LastSwiftMigration = 0810; }; }; }; @@ -286,6 +287,7 @@ SWIFT_OBJC_BRIDGING_HEADER = "$(PROJECT_DIR)/../../../../src/wrappers/swift/Apple-Bridging-Header.h"; "SWIFT_OBJC_BRIDGING_HEADER[arch=*]" = "$(PROJECT_DIR)/../../../../src/wrappers/swift/Apple-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 2.3; }; name = Debug; }; @@ -305,6 +307,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "zerotier.Example-OSX-App"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "$(PROJECT_DIR)/../../../../src/wrappers/swift/Apple-Bridging-Header.h"; + SWIFT_VERSION = 2.3; }; name = Release; }; diff --git a/integrations/apple/example_app/OSX/Example_OSX_App/ViewController.swift b/integrations/apple/example_app/OSX/Example_OSX_App/ViewController.swift index ecee3bd..c677611 100644 --- a/integrations/apple/example_app/OSX/Example_OSX_App/ViewController.swift +++ b/integrations/apple/example_app/OSX/Example_OSX_App/ViewController.swift @@ -95,7 +95,7 @@ class ViewController: NSViewController { // Connect to remote host on ZeroTier virtual network @IBAction func UI_Connect(sender: AnyObject) { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), { - self.connect_thread = NSThread(target:self, selector:"attempt_connect", object:nil) + self.connect_thread = NSThread(target:self, selector:#selector(ViewController.attempt_connect), object:nil) self.connect_thread.start() }); } @@ -134,7 +134,7 @@ class ViewController: NSViewController { // Bind a ZeroTier socket @IBAction func UI_Bind(sender: AnyObject) { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), { - self.bind_thread = NSThread(target:self, selector:"attempt_bind", object:nil) + self.bind_thread = NSThread(target:self, selector:#selector(ViewController.attempt_bind), object:nil) self.bind_thread.start() }); } @@ -181,7 +181,7 @@ class ViewController: NSViewController { { sleep(1) dispatch_async(dispatch_get_main_queue()) { - var str_buf = [Int8](count: 16, repeatedValue: 0) + let str_buf = [Int8](count: 16, repeatedValue: 0) print("addr = ", String.fromCString(str_buf)) } @@ -261,7 +261,7 @@ class ViewController: NSViewController { // Update UI on RX of data dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), { - self.rx_thread = NSThread(target:self, selector:"update_rx", object:nil) + self.rx_thread = NSThread(target:self, selector:#selector(ViewController.update_rx), object:nil) self.rx_thread.start() }); } diff --git a/src/stack_drivers/picotcp/picotcp.cpp b/src/stack_drivers/picotcp/picotcp.cpp index c18e387..00c8332 100644 --- a/src/stack_drivers/picotcp/picotcp.cpp +++ b/src/stack_drivers/picotcp/picotcp.cpp @@ -36,6 +36,7 @@ #include "pico_dev_tap.h" #include "pico_protocol.h" #include "pico_socket.h" +#include "pico_eth.h" namespace ZeroTier { @@ -79,8 +80,8 @@ namespace ZeroTier { if(ip.isV4()) { struct pico_ip4 ipaddr, netmask; - ipaddr.addr = *((u32_t *)ip.rawIpData()); - netmask.addr = *((u32_t *)ip.netmask().rawIpData()); + ipaddr.addr = *((uint32_t *)ip.rawIpData()); + netmask.addr = *((uint32_t *)ip.netmask().rawIpData()); uint8_t mac[PICO_SIZE_ETH]; picotap->_mac.copyTo(mac, PICO_SIZE_ETH); DEBUG_ATTN("mac = %s", picotap->_mac.toString().c_str()); @@ -365,16 +366,16 @@ namespace ZeroTier { int pico_eth_send(struct pico_device *dev, void *buf, int len) { DEBUG_INFO("len=%d", len); - struct eth_hdr *ethhdr; - ethhdr = (struct eth_hdr *)buf; + struct pico_eth_hdr *ethhdr; + ethhdr = (struct pico_eth_hdr *)buf; MAC src_mac; MAC dest_mac; - src_mac.setTo(ethhdr->src.addr, 6); - dest_mac.setTo(ethhdr->dest.addr, 6); + src_mac.setTo(ethhdr->saddr, 6); + dest_mac.setTo(ethhdr->daddr, 6); picotap->_handler(picotap->_arg,picotap->_nwid,src_mac,dest_mac, - Utils::ntoh((uint16_t)ethhdr->type),0, ((char*)buf) + sizeof(struct eth_hdr),len - sizeof(struct eth_hdr)); + Utils::ntoh((uint16_t)ethhdr->proto),0, ((char*)buf) + sizeof(struct pico_eth_hdr),len - sizeof(struct pico_eth_hdr)); return len; } @@ -402,11 +403,11 @@ namespace ZeroTier { //} // assemble new eth header - struct eth_hdr ethhdr; - from.copyTo(ethhdr.src.addr, 6); - to.copyTo(ethhdr.dest.addr, 6); - ethhdr.type = Utils::hton((uint16_t)etherType); - int newlen = len+sizeof(struct eth_hdr); + struct pico_eth_hdr ethhdr; + from.copyTo(ethhdr.saddr, 6); + to.copyTo(ethhdr.daddr, 6); + ethhdr.proto = Utils::hton((uint16_t)etherType); + int newlen = len+sizeof(struct pico_eth_hdr); // memcpy(tap->pico_frame_rxbuf + tap->pico_frame_rxbuf_tot, &newlen, sizeof(newlen)); // size of frame memcpy(tap->pico_frame_rxbuf + tap->pico_frame_rxbuf_tot + sizeof(newlen), ðhdr, sizeof(ethhdr)); // new eth header @@ -743,4 +744,4 @@ namespace ZeroTier { } } -#endif // SDK_PICOTCP \ No newline at end of file +#endif // SDK_PICOTCP diff --git a/src/stack_drivers/picotcp/picotcp.hpp b/src/stack_drivers/picotcp/picotcp.hpp index 871c690..d4fac47 100644 --- a/src/stack_drivers/picotcp/picotcp.hpp +++ b/src/stack_drivers/picotcp/picotcp.hpp @@ -44,7 +44,6 @@ #include "Phy.hpp" #include "debug.h" -#include "tap.hpp" #include "pico_stack.h" #include "pico_ipv4.h" @@ -52,6 +51,10 @@ #include "pico_dev_tap.h" #include "pico_protocol.h" #include "pico_socket.h" +#include "pico_device.h" +#include "pico_ipv6.h" + +#include "tap.hpp" // picoTCP API function signatures #define PICO_IPV4_TO_STRING_SIG char *ipbuf, const uint32_t ip @@ -78,7 +81,6 @@ #define PICO_SOCKET_SHUTDOWN_SIG struct pico_socket *s, int mode #define PICO_SOCKET_ACCEPT_SIG struct pico_socket *s, void *orig, uint16_t *port #define PICO_IPV6_LINK_ADD_SIG struct pico_device *dev, struct pico_ip6 address, struct pico_ip6 netmask -//#define PICO_IPV6_SOURCE_FIND_SIG strut pico_ip6 *dst namespace ZeroTier { @@ -163,7 +165,6 @@ namespace ZeroTier { int (*_pico_socket_shutdown)(PICO_SOCKET_SHUTDOWN_SIG); struct pico_socket *(*_pico_socket_accept)(PICO_SOCKET_ACCEPT_SIG); int (*_pico_ipv6_link_add)(PICO_IPV6_LINK_ADD_SIG); - //struct pico_ip6 *(*pico_ipv6_source_find)(PICO_IPV6_SOURCE_FIND_SIG); Mutex _lock; Mutex _lock_mem; @@ -213,7 +214,7 @@ namespace ZeroTier { _pico_socket_recvfrom = (int32_t(*)(PICO_SOCKET_RECVFROM_SIG))&pico_socket_recvfrom; _pico_socket_open = (struct pico_socket*(*)(PICO_SOCKET_OPEN_SIG))&pico_socket_open; _pico_socket_bind = (int(*)(PICO_SOCKET_BIND_SIG))&pico_socket_bind; - _pico_socket_connect = (int(*)(PICO_SOCKET_CONNECT_SIG))&pico_socket_connect; + _pico_socket_connect = (int(*)(PICO_SOCKET_CONNECT_SIG))xt; _pico_socket_listen = (int(*)(PICO_SOCKET_LISTEN_SIG))&pico_socket_listen; _pico_socket_read = (int(*)(PICO_SOCKET_READ_SIG))&pico_socket_read; _pico_socket_write = (int(*)(PICO_SOCKET_WRITE_SIG))&pico_socket_write; @@ -221,7 +222,6 @@ namespace ZeroTier { _pico_socket_shutdown = (int(*)(PICO_SOCKET_SHUTDOWN_SIG))&pico_socket_shutdown; _pico_socket_accept = (struct pico_socket*(*)(PICO_SOCKET_ACCEPT_SIG))&pico_socket_accept; _pico_ipv6_link_add = (int(*)(PICO_IPV6_LINK_ADD_SIG))&pico_ipv6_link_add; - //_pico_ipv6_source_find = (struct pico_ip6 *(*))(PICO_IPV6_SOURCE_FIND_SIG))&pico_ipv6_source_find; #endif @@ -256,7 +256,6 @@ namespace ZeroTier { _pico_socket_shutdown = (int(*)(PICO_SOCKET_SHUTDOWN_SIG))dlsym(_libref, "pico_socket_shutdown"); _pico_socket_accept = (struct pico_socket*(*)(PICO_SOCKET_ACCEPT_SIG))dlsym(_libref, "pico_socket_accept"); _pico_ipv6_link_add = (int(*)(PICO_IPV6_LINK_ADD_SIG))dlsym(_libref, "pico_ipv6_link_add"); - //_pico_ipv6_source_find = (struct pico_ip6 *(*))(PICO_IPV6_SOURCE_FIND_SIG))dlsym(_libref, "pico_ipv6_source_find"); #endif } @@ -293,7 +292,6 @@ namespace ZeroTier { inline int __pico_socket_shutdown(PICO_SOCKET_SHUTDOWN_SIG) throw() { DEBUG_STACK(); Mutex::Lock _l(_lock); return _pico_socket_shutdown(s, mode); } inline struct pico_socket * __pico_socket_accept(PICO_SOCKET_ACCEPT_SIG) throw() { DEBUG_ATTN(); /*Mutex::Lock _l(_lock);*/ return _pico_socket_accept(s, orig, port); } inline int __pico_ipv6_link_add(PICO_IPV6_LINK_ADD_SIG) throw() { DEBUG_STACK(); Mutex::Lock _l(_lock); return _pico_ipv6_link_add(dev, address, netmask); } - //inline struct pico_ipv6 * __pico_ipv6_source_find(PICO_IPV6_SOURCE_FIND_SIG) throw() { DEBUG_STACK(); Mutex::Lock _l(_lock)l return _pico_ipv6_source_find(dst); } }; } // namespace ZeroTier diff --git a/src/tap.hpp b/src/tap.hpp index 79583b7..78fecb0 100644 --- a/src/tap.hpp +++ b/src/tap.hpp @@ -44,12 +44,13 @@ #include "Thread.hpp" #include "Phy.hpp" -#include "netif/etharp.h" +#if defined(SDK_LWIP) + #include "lwip.hpp" + #include "netif/etharp.h" +#endif #include "defs.h" #include "rpc.h" -#include "lwip.hpp" -// #include "jip.hpp" #if defined(SDK_PICOTCP) #include "picotcp.hpp" @@ -172,6 +173,7 @@ namespace ZeroTier { // lwIP #if defined(SDK_LWIP) + netif interface, interface6; lwIP_stack *lwipstack; #endif // jip @@ -366,12 +368,7 @@ namespace ZeroTier { void closeConnection(PhySocket *sock); std::vector _Connections; - std::map > jobmap; - pid_t rpcCounter; - - netif interface; - netif interface6; Thread _thread; std::string _dev; // path to Unix domain socket diff --git a/src/wrappers/swift/ztsdk.swift b/src/wrappers/swift/ztsdk.swift index 9dc69b4..813bcda 100644 --- a/src/wrappers/swift/ztsdk.swift +++ b/src/wrappers/swift/ztsdk.swift @@ -137,7 +137,7 @@ class ZTSDK : NSObject while(true) { // politely wait until an address is provided. simulates a blocking call var addrbuf = [Int8](count: 16, repeatedValue: 0) self.get_ipv4_address(nwid!, &addrbuf) - var addr_str:String = String.fromCString(addrbuf)! + let addr_str:String = String.fromCString(addrbuf)! if(addr_str != "-1.-1.-1.-1/-1") { return zt_connect(Int32(fd), addr.to_sockaddr_in(), UInt32(addr.len())); } @@ -150,7 +150,7 @@ class ZTSDK : NSObject while(true) { // politely wait until an address is provided. simulates a blocking call var addrbuf = [Int8](count: 16, repeatedValue: 0) self.get_ipv4_address(nwid!, &addrbuf) - var addr_str:String = String.fromCString(addrbuf)! + let addr_str:String = String.fromCString(addrbuf)! if(addr_str != "-1.-1.-1.-1/-1") { return zt_bind(Int32(fd), addr.to_sockaddr_in(), UInt32(addr.len())); }