diff --git a/attic/SysUtils.cpp b/attic/SysUtils.cpp
deleted file mode 100644
index 767f0cf..0000000
--- a/attic/SysUtils.cpp
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * ZeroTier SDK - Network Virtualization Everywhere
- * Copyright (C) 2011-2018 ZeroTier, Inc. https://www.zerotier.com/
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- * --
- *
- * You can be released from the requirements of the license by purchasing
- * a commercial license. Buying such a license is mandatory as soon as you
- * develop commercial closed-source software that incorporates or links
- * directly against ZeroTier software without disclosing the source code
- * of your own application.
- */
-
-/**
- * @file
- *
- * Platform-specific implementations of common functions
- */
-
-/*
-#if defined(__linux__) || defined(__APPLE__)
-#include
-#include
-#endif
-
-#include
-
-#ifdef __linux__
-#include
-#include
-#endif
-*/
\ No newline at end of file
diff --git a/attic/SysUtils.h b/attic/SysUtils.h
deleted file mode 100644
index 6ff0855..0000000
--- a/attic/SysUtils.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * ZeroTier SDK - Network Virtualization Everywhere
- * Copyright (C) 2011-2018 ZeroTier, Inc. https://www.zerotier.com/
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- * --
- *
- * You can be released from the requirements of the license by purchasing
- * a commercial license. Buying such a license is mandatory as soon as you
- * develop commercial closed-source software that incorporates or links
- * directly against ZeroTier software without disclosing the source code
- * of your own application.
- */
-
-/**
- * @file
- *
- * Platform-specific implementations of common functions
- */
-
-#ifndef LIBZT_SYSUTILS_H
-#define LIBZT_SYSUTILS_H
-
-#include
-
-#ifdef _WIN32
-#include
-#else
-#include
-#endif
-
-/**
- * @brief Current time in milliseconds since epoch, platform-aware convenience function.
- *
- * @usage For internal use only.
- * @return Current time in integer form
- */
-inline uint64_t time_now()
-{
-#ifdef _WIN32
- FILETIME ft;
- SYSTEMTIME st;
- ULARGE_INTEGER tmp;
- GetSystemTime(&st);
- SystemTimeToFileTime(&st,&ft);
- tmp.LowPart = ft.dwLowDateTime;
- tmp.HighPart = ft.dwHighDateTime;
- return (uint64_t)( ((tmp.QuadPart - 116444736000000000LL) / 10000L) + st.wMilliseconds );
-#else
- struct timeval tv;
-#ifdef __LINUX__
- syscall(SYS_gettimeofday,&tv,0); /* fix for musl libc broken gettimeofday bug */
-#else
- gettimeofday(&tv,(struct timezone *)0);
-#endif
- return ( (1000LL * (uint64_t)tv.tv_sec) + (uint64_t)(tv.tv_usec / 1000) );
-#endif
-}
-
-#endif // _H
diff --git a/attic/Utilities.cpp b/attic/Utilities.cpp
deleted file mode 100644
index 6c7daee..0000000
--- a/attic/Utilities.cpp
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
- * ZeroTier SDK - Network Virtualization Everywhere
- * Copyright (C) 2011-2018 ZeroTier, Inc. https://www.zerotier.com/
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- * --
- *
- * You can be released from the requirements of the license by purchasing
- * a commercial license. Buying such a license is mandatory as soon as you
- * develop commercial closed-source software that incorporates or links
- * directly against ZeroTier software without disclosing the source code
- * of your own application.
- */
-
-/**
- * @file
- *
- * Misc utilities
- */
-
-/*
-#include "Utilities.h"
-
-#if defined(_WIN32_FALSE)
-
-#include
-#include
-#include
-
-int inet_pton4(const char *src, void *dst)
-{
- uint8_t tmp[NS_INADDRSZ], *tp;
-
- int saw_digit = 0;
- int octets = 0;
- *(tp = tmp) = 0;
-
- int ch;
- while ((ch = *src++) != '\0')
- {
- if (ch >= '0' && ch <= '9')
- {
- uint32_t n = *tp * 10 + (ch - '0');
-
- if (saw_digit && *tp == 0)
- return 0;
-
- if (n > 255)
- return 0;
-
- *tp = n;
- if (!saw_digit)
- {
- if (++octets > 4)
- return 0;
- saw_digit = 1;
- }
- }
- else if (ch == '.' && saw_digit)
- {
- if (octets == 4)
- return 0;
- *++tp = 0;
- saw_digit = 0;
- }
- else
- return 0;
- }
- if (octets < 4)
- return 0;
-
- memcpy(dst, tmp, NS_INADDRSZ);
-
- return 1;
-}
-*/
-
-/*
-int inet_pton6(const char *src, void *dst)
-{
- static const char xdigits[] = "0123456789abcdef";
- uint8_t tmp[NS_IN6ADDRSZ];
-
- uint8_t *tp = (uint8_t*) memset(tmp, '\0', NS_IN6ADDRSZ);
- uint8_t *endp = tp + NS_IN6ADDRSZ;
- uint8_t *colonp = NULL;
-
- // Leading :: requires some special handling.
- if (*src == ':')
- {
- if (*++src != ':')
- return 0;
- }
-
- const char *curtok = src;
- int saw_xdigit = 0;
- uint32_t val = 0;
- int ch;
- while ((ch = tolower(*src++)) != '\0')
- {
- const char *pch = strchr(xdigits, ch);
- if (pch != NULL)
- {
- val <<= 4;
- val |= (pch - xdigits);
- if (val > 0xffff)
- return 0;
- saw_xdigit = 1;
- continue;
- }
- if (ch == ':')
- {
- curtok = src;
- if (!saw_xdigit)
- {
- if (colonp)
- return 0;
- colonp = tp;
- continue;
- }
- else if (*src == '\0')
- {
- return 0;
- }
- if (tp + NS_INT16SZ > endp)
- return 0;
- *tp++ = (uint8_t) (val >> 8) & 0xff;
- *tp++ = (uint8_t) val & 0xff;
- saw_xdigit = 0;
- val = 0;
- continue;
- }
- if (ch == '.' && ((tp + NS_INADDRSZ) <= endp) &&
- inet_pton4(curtok, (char*) tp) > 0)
- {
- tp += NS_INADDRSZ;
- saw_xdigit = 0;
- break; // '\0' was seen by inet_pton4().
- }
- return 0;
- }
- if (saw_xdigit)
- {
- if (tp + NS_INT16SZ > endp)
- return 0;
- *tp++ = (uint8_t) (val >> 8) & 0xff;
- *tp++ = (uint8_t) val & 0xff;
- }
- if (colonp != NULL)
- {
- //
- // Since some memmove()'s erroneously fail to handle
- // overlapping regions, we'll do the shift by hand.
- //
- const int n = tp - colonp;
-
- if (tp == endp)
- return 0;
-
- for (int i = 1; i <= n; i++)
- {
- endp[-i] = colonp[n - i];
- colonp[n - i] = 0;
- }
- tp = endp;
- }
- if (tp != endp)
- return 0;
-
- memcpy(dst, tmp, NS_IN6ADDRSZ);
-
- return 1;
-}
-*/
-
-/*
-int inet_pton(int af, const char *src, void *dst)
-{
- switch (af)
- {
- case AF_INET:
- return inet_pton4(src, dst);
- case AF_INET6:
- return inet_pton6(src, dst);
- default:
- return -1;
- }
-}
-
-#endif
-
-char *beautify_eth_proto_nums(int proto)
-{
- if (proto == 0x0800) return (char*)"IPv4";
- if (proto == 0x0806) return (char*)"ARP";
- if (proto == 0x0842) return (char*)"Wake-on-LAN";
- if (proto == 0x22F3) return (char*)"IETF TRILL Protocol";
- if (proto == 0x22EA) return (char*)"Stream Reservation Protocol";
- if (proto == 0x6003) return (char*)"DECnet Phase IV";
- if (proto == 0x8035) return (char*)"Reverse Address Resolution Protocol";
- if (proto == 0x809B) return (char*)"AppleTalk (Ethertalk)";
- if (proto == 0x80F3) return (char*)"AppleTalk Address Resolution Protocol (AARP)";
- if (proto == 0x8100) return (char*)"VLAN-tagged frame (IEEE 802.1Q) and Shortest Path Bridging IEEE 802.1aq with NNI compatibility";
- if (proto == 0x8137) return (char*)"IPX";
- if (proto == 0x8204) return (char*)"QNX Qnet";
- if (proto == 0x86DD) return (char*)"IPv6";
- if (proto == 0x8808) return (char*)"Ethernet flow control";
- if (proto == 0x8809) return (char*)"Ethernet Slow Protocols";
- if (proto == 0x8819) return (char*)"CobraNet";
- if (proto == 0x8847) return (char*)"MPLS unicast";
- if (proto == 0x8848) return (char*)"MPLS multicast";
- if (proto == 0x8863) return (char*)"PPPoE Discovery Stage";
- if (proto == 0x8864) return (char*)"PPPoE Session Stage";
- if (proto == 0x886D) return (char*)"Intel Advanced Networking Services";
- if (proto == 0x8870) return (char*)"Jumbo Frames (Obsoleted draft-ietf-isis-ext-eth-01)";
- if (proto == 0x887B) return (char*)"HomePlug 1.0 MME";
- if (proto == 0x888E) return (char*)"EAP over LAN (IEEE 802.1X)";
- if (proto == 0x8892) return (char*)"PROFINET Protocol";
- if (proto == 0x889A) return (char*)"HyperSCSI (SCSI over Ethernet)";
- if (proto == 0x88A2) return (char*)"ATA over Ethernet";
- if (proto == 0x88A4) return (char*)"EtherCAT Protocol";
- if (proto == 0x88A8) return (char*)"Provider Bridging (IEEE 802.1ad) & Shortest Path Bridging IEEE 802.1aq";
- if (proto == 0x88AB) return (char*)"Ethernet Powerlink[citation needed]";
- if (proto == 0x88B8) return (char*)"GOOSE (Generic Object Oriented Substation event)";
- if (proto == 0x88B9) return (char*)"GSE (Generic Substation Events) Management Services";
- if (proto == 0x88BA) return (char*)"SV (Sampled Value Transmission)";
- if (proto == 0x88CC) return (char*)"Link Layer Discovery Protocol (LLDP)";
- if (proto == 0x88CD) return (char*)"SERCOS III";
- if (proto == 0x88DC) return (char*)"WSMP, WAVE Short Message Protocol";
- if (proto == 0x88E1) return (char*)"HomePlug AV MME[citation needed]";
- if (proto == 0x88E3) return (char*)"Media Redundancy Protocol (IEC62439-2)";
- if (proto == 0x88E5) return (char*)"MAC security (IEEE 802.1AE)";
- if (proto == 0x88E7) return (char*)"Provider Backbone Bridges (PBB) (IEEE 802.1ah)";
- if (proto == 0x88F7) return (char*)"Precision Time Protocol (PTP) over Ethernet (IEEE 1588)";
- if (proto == 0x88FB) return (char*)"Parallel Redundancy Protocol (PRP)";
- if (proto == 0x8902) return (char*)"IEEE 802.1ag Connectivity Fault Management (CFM) Protocol / ITU-T Recommendation Y.1731 (OAM)";
- if (proto == 0x8906) return (char*)"Fibre Channel over Ethernet (FCoE)";
- if (proto == 0x8914) return (char*)"FCoE Initialization Protocol";
- if (proto == 0x8915) return (char*)"RDMA over Converged Ethernet (RoCE)";
- if (proto == 0x891D) return (char*)"TTEthernet Protocol Control Frame (TTE)";
- if (proto == 0x892F) return (char*)"High-availability Seamless Redundancy (HSR)";
- if (proto == 0x9000) return (char*)"Ethernet Configuration Testing Protocol";
- if (proto == 0x9100) return (char*)"VLAN-tagged (IEEE 802.1Q) frame with double tagging";
- return (char*)"UNKNOWN";
-}
-*/
-
-/*
-void mac2str(char *macbuf, int len, unsigned char* addr)
-{
- snprintf(macbuf, len, "%02x:%02x:%02x:%02x:%02x:%02x",
- addr[0], addr[1], addr[2], addr[3], addr[4], addr[5]);
-}
-*/
diff --git a/attic/Utilities.h b/attic/Utilities.h
deleted file mode 100644
index 12601bd..0000000
--- a/attic/Utilities.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * ZeroTier SDK - Network Virtualization Everywhere
- * Copyright (C) 2011-2018 ZeroTier, Inc. https://www.zerotier.com/
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- * --
- *
- * You can be released from the requirements of the license by purchasing
- * a commercial license. Buying such a license is mandatory as soon as you
- * develop commercial closed-source software that incorporates or links
- * directly against ZeroTier software without disclosing the source code
- * of your own application.
- */
-
-/**
- * @file
- *
- * Misc utilities
- */
-
-#ifndef LIBZT_UTILITIES_H
-#define LIBZT_UTILITIES_H
-
-#include
-
-namespace ZeroTier {
- struct InetAddress;
-}
-
-#if defined(_WIN32_FALSE)
-
-#define NS_INADDRSZ 4
-#define NS_IN6ADDRSZ 16
-#define NS_INT16SZ 2
-
-int inet_pton4(const char *src, void *dst);
-int inet_pton6(const char *src, void *dst);
-int inet_pton(int af, const char *src, void *dst);
-#endif
-
-/**
- * @brief Convert protocol numbers to human-readable strings
- *
- * @usage For internal use only.
- * @param proto
- * @return
- */
-char *beautify_eth_proto_nums(int proto);
-
-/**
- * @brief Convert a raw MAC address byte array into a human-readable string
- *
- * @usage For internal use only.
- * @param macbuf
- * @param len
- * @param addr
- * @return
- */
-void mac2str(char *macbuf, int len, unsigned char* addr);
-
-#endif // _H
diff --git a/attic/VirtualBindingPair.h b/attic/VirtualBindingPair.h
deleted file mode 100644
index c852278..0000000
--- a/attic/VirtualBindingPair.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * ZeroTier SDK - Network Virtualization Everywhere
- * Copyright (C) 2011-2018 ZeroTier, Inc. https://www.zerotier.com/
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- * --
- *
- * You can be released from the requirements of the license by purchasing
- * a commercial license. Buying such a license is mandatory as soon as you
- * develop commercial closed-source software that incorporates or links
- * directly against ZeroTier software without disclosing the source code
- * of your own application.
- */
-
-/**
- * @file
- *
- *
- */
-
-#ifndef LIBZT_VIRTUALBINDINGPAIR_H
-#define LIBZT_VIRTUALBINDINGPAIR_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * A helper object for passing VirtualTap(s) and VirtualSocket(s) through the stack
- */
-struct VirtualBindingPair
-{
- VirtualTap *tap;
- VirtualSocket *vs;
- VirtualBindingPair(VirtualTap *_tap, VirtualSocket *_vs) : tap(_tap), vs(_vs) {}
-};
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // _H
diff --git a/attic/VirtualSocket.cpp b/attic/VirtualSocket.cpp
deleted file mode 100644
index dc287df..0000000
--- a/attic/VirtualSocket.cpp
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * ZeroTier SDK - Network Virtualization Everywhere
- * Copyright (C) 2011-2018 ZeroTier, Inc. https://www.zerotier.com/
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- * --
- *
- * You can be released from the requirements of the license by purchasing
- * a commercial license. Buying such a license is mandatory as soon as you
- * develop commercial closed-source software that incorporates or links
- * directly against ZeroTier software without disclosing the source code
- * of your own application.
- */
-
-/**
- * @file
- *
- * Platform- and stack-agnostic implementation of a socket-like object
- */
-
-#include "libztDefs.h"
-
-#ifdef ZT_VIRTUAL_SOCKET
-
-#include
-#include
-
-#include "Phy.hpp"
-
-#include "libzt.h"
-#include "libztDebug.h"
-#include "VirtualSocket.h"
-#include "VirtualTap.h"
-#include "RingBuffer.h"
-
-class VirtualTap;
-
-void VirtualSocket::apply_state(int state) {
- // states may be set by application or by stack callbacks, thus this must be guarded
- _op_m.lock();
- _state &= state;
- _op_m.unlock();
-}
-
-void VirtualSocket::set_state(int state) {
- _op_m.lock();
- _state = state;
- _op_m.unlock();
-}
-
-int VirtualSocket::get_state() {
- return _state;
-}
-
-VirtualSocket::VirtualSocket() {
- DEBUG_EXTRA("this=%p",this);
- memset(&local_addr, 0, sizeof(sockaddr_storage));
- memset(&peer_addr, 0, sizeof(sockaddr_storage));
-
- // ringbuffer used for incoming and outgoing traffic between app, stack, stack drivers, and ZT
- TXbuf = new RingBuffer(ZT_TCP_TX_BUF_SZ);
- RXbuf = new RingBuffer(ZT_TCP_RX_BUF_SZ);
-
- // socketpair, I/O channel between app and stack drivers
- ZT_PHY_SOCKFD_TYPE fdpair[2];
- if (socketpair(PF_LOCAL, SOCK_STREAM, 0, fdpair) < 0) {
- if (errno < 0) {
- DEBUG_ERROR("unable to create socketpair, errno=%d", errno);
- return;
- }
- }
- sdk_fd = fdpair[0];
- app_fd = fdpair[1];
-
- // set to non-blocking since these are used as the primary I/O channel
- if (fcntl(sdk_fd, F_SETFL, O_NONBLOCK) < 0) {
- DEBUG_ERROR("error while setting virtual socket to NONBLOCKING. exiting", errno);
- exit(0);
- }
-}
-
-VirtualSocket::~VirtualSocket() {
- DEBUG_EXTRA("this=%p",this);
- close(app_fd);
- close(sdk_fd);
- delete TXbuf;
- delete RXbuf;
- TXbuf = RXbuf = NULL;
- //picosock->priv = NULL;
- pcb = NULL;
-}
-
-#endif // ZT_VIRTUAL_SOCKET
diff --git a/attic/VirtualSocket.h b/attic/VirtualSocket.h
deleted file mode 100644
index 1b7fc0e..0000000
--- a/attic/VirtualSocket.h
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * ZeroTier SDK - Network Virtualization Everywhere
- * Copyright (C) 2011-2018 ZeroTier, Inc. https://www.zerotier.com/
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- * --
- *
- * You can be released from the requirements of the license by purchasing
- * a commercial license. Buying such a license is mandatory as soon as you
- * develop commercial closed-source software that incorporates or links
- * directly against ZeroTier software without disclosing the source code
- * of your own application.
- */
-
-/**
- * @file
- *
- * Platform- and stack-agnostic implementation of a socket-like object
- */
-
-#ifndef LIBZT_VIRTUALSOCKET_H
-#define LIBZT_VIRTUALSOCKET_H
-
-#include
-
-#include "RingBuffer.h"
-#include "libztDefs.h"
-#include "VirtualTap.h"
-#include "Mutex.hpp"
-
-#define VS_STATE_INACTIVE 0x000000u // Default value for newly created VirtualSocket
-#define VS_STATE_ACTIVE 0x000001u // VirtualSocket is RX'ing or TX'ing without issue
-#define VS_STATE_SHOULD_SHUTDOWN 0x000002u // Application, stack driver, or stack marked this VirtualSocket for death
-#define VS_STATE_SHUTDOWN 0x000004u // VirtualSocket and underlying protocol control structures will not RX/TX
-#define VS_STATE_CLOSED 0x000008u // VirtualSocket and underlying protocol control structures are closed
-#define VS_STATE_UNHANDLED_CONNECTED 0x000010u // stack callback has received a connection but we haven't dealt with it
-#define VS_STATE_CONNECTED 0x000020u // stack driver has akwnowledged new connection
-#define VS_STATE_LISTENING 0x000040u // virtual socket is listening for incoming connections
-
-#define VS_OPT_TCP_NODELAY 0x000000u // Nagle's algorithm
-#define VS_OPT_SO_LINGER 0x000001u // VirtualSocket waits for data transmission before closure
-/*
-#define VS_RESERVED 0x000002u //
-#define VS_RESERVED 0x000004u //
-#define VS_RESERVED 0x000008u //
-#define VS_RESERVED 0x000010u //
-#define VS_RESERVED 0x000020u //
-#define VS_RESERVED 0x000040u //
-*/
-#define VS_OPT_FD_NONBLOCKING 0x000080u // Whether the VirtualSocket exhibits non-blocking behaviour
-/*
-#define VS_RESERVED 0x000100u //
-#define VS_RESERVED 0x000200u //
-#define VS_RESERVED 0x000400u //
-#define VS_RESERVED 0x000800u //
-#define VS_RESERVED 0x001000u //
-#define VS_RESERVED 0x002000u //
-#define VS_RESERVED 0x004000u //
-#define VS_RESERVED 0x008000u //
-#define VS_RESERVED 0x010000u //
-#define VS_RESERVED 0x020000u //
-#define VS_RESERVED 0x040000u //
-#define VS_RESERVED 0x080000u //
-#define VS_RESERVED 0x100000u //
-#define VS_RESERVED 0x200000u //
-#define VS_RESERVED 0x400000u //
-#define VS_RESERVED 0x800000u //
-*/
-
-#define vs_is_nonblocking(vs) (((vs)->optflags & VS_OPT_FD_NONBLOCKING) != 0)
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * An abstraction of a socket that operates between the application-exposed platform-sockets
- * and the network stack's representation of a protocol control structure. This object is used by
- * the POSIX socket emulation layer and stack drivers.
- */
-class VirtualSocket
-{
- private:
- int _state = VS_STATE_INACTIVE;
- public:
- RingBuffer *TXbuf, *RXbuf;
- ZeroTier::Mutex _tx_m, _rx_m, _op_m;
- ZeroTier::PhySocket *sock = NULL;
-
- void *pcb = NULL; // Protocol Control Block
-
-#if defined(STACK_LWIP)
- int32_t optflags = 0;
- int linger;
- /*
- - TCP_WRITE_FLAG_COPY: indicates whether the new memory should be allocated
- for the data to be copied into. If this flag is not given, no new memory
- should be allocated and the data should only be referenced by pointer. This
- also means that the memory behind dataptr must not change until the data is
- ACKed by the remote host
- - TCP_WRITE_FLAG_MORE: indicates that more data follows. If this is omitted,
- the PSH flag is set in the last segment created by this call to tcp_write.
- If this flag is given, the PSH flag is not set.
- */
- // copy as default, processed via pointer reference if set to 0. See notes in lwip_cb_sent() and lwip_Write()
- int8_t copymode = 1; // TCP_WRITE_FLAG_COPY;
-#endif
- struct sockaddr_storage local_addr; // address we've bound to locally
- struct sockaddr_storage peer_addr; // address of connection call to remote host
- int socket_family = 0;
- int socket_type = 0;
- int protocol = 0;
- int app_fd = 0; // used by app for I/O
- int sdk_fd = 0; // used by lib for I/O
- std::queue _AcceptedConnections;
- VirtualTap *tap = NULL;
-
- /**
- * Sets the VirtualSocket's state value
- */
- void apply_state(int state);
-
- /**
- * Sets the VirtualSocket's state value
- */
- void set_state(int state);
- /**
- * Gets the VirtualSocket's state value
- */
- int get_state();
-
- /**
- * default ctor
- */
- VirtualSocket();
-
- /**
- * dtor
- */
- ~VirtualSocket();
-};
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // _H
diff --git a/attic/VirtualSocketLayer.cpp b/attic/VirtualSocketLayer.cpp
deleted file mode 100644
index 02bee0a..0000000
--- a/attic/VirtualSocketLayer.cpp
+++ /dev/null
@@ -1,1250 +0,0 @@
-/*
- * ZeroTier SDK - Network Virtualization Everywhere
- * Copyright (C) 2011-2018 ZeroTier, Inc. https://www.zerotier.com/
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- *
- * --
- *
- * You can be released from the requirements of the license by purchasing
- * a commercial license. Buying such a license is mandatory as soon as you
- * develop commercial closed-source software that incorporates or links
- * directly against ZeroTier software without disclosing the source code
- * of your own application.
- */
-
-/**
- * @file
- *
- * VirtualSocket management layer
- */
-
-#include "libztDefs.h"
-
-#ifdef ZT_VIRTUAL_SOCKET
-
-#ifdef __linux__
-#include
-#include
-#include
-#endif
-
-extern int errno;
-
-#include "libzt.h"
-#include "VirtualTap.h"
-#include "RingBuffer.h"
-#include "VirtualSocket.h"
-#include "VirtualSocketLayer.h"
-#include "VirtualBindingPair.h"
-#include "ZT1Service.h"
-#include "Utilities.h"
-
-#ifdef STACK_LWIP
-#include "lwIP.h"
-//#include "lwip/sockets.h"
-#endif
-
-#ifdef STACK_PICO
-#include "picoTCP.h"
-#include "pico_stack.h"
-#include "pico_socket.h"
-#endif
-
-#include