diff options
| author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2015-11-23 13:02:50 -0800 |
|---|---|---|
| committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2015-11-23 13:02:50 -0800 |
| commit | 2a6ea387180e76ae934a9d653adb7aa5f9fa479f (patch) | |
| tree | 2cae267a5431227a6ed218144d18a7513b6d290a /netcon/NetconEthernetTap.cpp | |
| parent | d8d4cfbf0150de930504b02ee0dd8854afa558b0 (diff) | |
| download | infinitytier-2a6ea387180e76ae934a9d653adb7aa5f9fa479f.tar.gz infinitytier-2a6ea387180e76ae934a9d653adb7aa5f9fa479f.zip | |
More code cleanup, just moving some stuff into NetconEthernetTap that is not used elsewhere.
Diffstat (limited to 'netcon/NetconEthernetTap.cpp')
| -rw-r--r-- | netcon/NetconEthernetTap.cpp | 46 |
1 files changed, 39 insertions, 7 deletions
diff --git a/netcon/NetconEthernetTap.cpp b/netcon/NetconEthernetTap.cpp index 7d76b0b9..b722c682 100644 --- a/netcon/NetconEthernetTap.cpp +++ b/netcon/NetconEthernetTap.cpp @@ -30,6 +30,7 @@ #include <algorithm> #include <utility> #include <dlfcn.h> +#include <sys/poll.h> #include "NetconEthernetTap.hpp" @@ -37,17 +38,18 @@ #include "../osdep/OSUtils.hpp" #include "../osdep/Phy.hpp" +#include "Intercept.h" +#include "LWIPStack.hpp" +#include "NetconUtilities.hpp" + #include "lwip/tcp_impl.h" #include "netif/etharp.h" +#include "lwip/api.h" #include "lwip/ip.h" #include "lwip/ip_addr.h" #include "lwip/ip_frag.h" #include "lwip/tcp.h" -#include "LWIPStack.hpp" -#include "NetconService.hpp" -#include "Intercept.h" -#include "NetconUtilities.hpp" #include "Common.c" #include "Sendfd.c" @@ -57,8 +59,6 @@ namespace ZeroTier { -namespace { - static err_t tapif_init(struct netif *netif) { // Actual init functionality is in addIp() of tap @@ -103,7 +103,39 @@ static err_t low_level_output(struct netif *netif, struct pbuf *p) return ERR_OK; } -} // anonymous namespace +/* + * TCP connection administered by service + */ +class TcpConnection +{ +public: + int perceived_fd; + int their_fd; + bool pending; + bool listening; + int pid; + + unsigned long written; + unsigned long acked; + + PhySocket *rpcSock; + PhySocket *dataSock; + struct tcp_pcb *pcb; + + unsigned char buf[DEFAULT_READ_BUFFER_SIZE]; + int idx; +}; + +/* + * A helper class for passing a reference to _phy to LWIP callbacks as a "state" + */ +class Larg +{ +public: + NetconEthernetTap *tap; + TcpConnection *conn; + Larg(NetconEthernetTap *_tap, TcpConnection *conn) : tap(_tap), conn(conn) {} +}; NetconEthernetTap::NetconEthernetTap( const char *homePath, |
