From b0f6dc43b4e7450320c76b034d04094a36883e00 Mon Sep 17 00:00:00 2001 From: Joseph Henry Date: Mon, 16 Nov 2015 19:53:59 -0800 Subject: [PATCH] Revised fd RX logic --- netcon/Common.c | 2 +- netcon/Intercept.c | 23 ++++++++++++++++------- netcon/NetconEthernetTap.cpp | 35 ++++++++++++++++------------------- netcon/libintercept.so.1.0 | Bin 57152 -> 57440 bytes 4 files changed, 33 insertions(+), 27 deletions(-) diff --git a/netcon/Common.c b/netcon/Common.c index 0ce048ec0..41a6c2a21 100755 --- a/netcon/Common.c +++ b/netcon/Common.c @@ -39,7 +39,7 @@ #include -#define DEBUG_LEVEL 2 +#define DEBUG_LEVEL 3 #define MSG_ERROR 0 // Errors #define MSG_INFO 1 // Information which is generally useful to any user diff --git a/netcon/Intercept.c b/netcon/Intercept.c index 5b5c56f87..e34b5470f 100755 --- a/netcon/Intercept.c +++ b/netcon/Intercept.c @@ -156,7 +156,7 @@ int checkpid() { if(thispid != getpid()) { printf("clone/fork detected. re-initializing this instance.\n"); set_up_intercept(); - fdret_sock = init_service_connection(); + //fdret_sock = init_service_connection(); thispid = getpid(); } return 0; @@ -226,6 +226,16 @@ int get_retval() return -1; } +/* Reads a new file descriptor from the service */ +int get_new_fd(int oversock) +{ + char buf[BUF_SZ]; + int newfd; + ssize_t size = sock_fd_read(oversock, buf, sizeof(buf), &newfd); + dwr(MSG_DEBUG, "get_new_fd(): RX: fd = %d\n", newfd); + return newfd; +} + /* Check whether the socket is mapped to the service or not. We need to know if this is a regular AF_LOCAL socket or an end of a socketpair that the service uses. We don't want to keep state in the intercept, so @@ -505,9 +515,8 @@ int socket(SOCKET_SIG) /* get new fd */ char rbuf[16]; - ssize_t sz = sock_fd_read(fdret_sock, rbuf, sizeof(rbuf), &newfd); - dwr(MSG_DEBUG,"read %d bytes (%s)\n", sz, &rbuf); - if(sz > 0) + newfd = get_new_fd(fdret_sock); + if(newfd > 0) { dwr(MSG_DEBUG,"sending fd = %d to Service over (%d)\n", newfd, fdret_sock); /* send our local-fd number back to service so @@ -800,8 +809,8 @@ int accept(ACCEPT_SIG) int n = read(sockfd, c, sizeof(c)); // Read signal byte if(n > 0) { - ssize_t size = sock_fd_read(fdret_sock, rbuf, sizeof(rbuf), &new_conn_socket); - if(size > 0) { + new_conn_socket = get_new_fd(fdret_sock); + if(new_conn_socket > 0) { /* Send our local-fd number back to service so it can complete its mapping table */ memset(cmd, '\0', BUF_SZ); cmd[0] = RPC_MAP; @@ -927,7 +936,7 @@ int poll(POLL_SIG) // int fd int close(CLOSE_SIG) { - checkpid(); + checkpid(); // Required for httpd-2.4.17-3.x86_64 -- After clone, some symbols aren't initialized yet dwr(MSG_DEBUG,"close(%d)\n", fd); if(fd == fdret_sock) return 0; // FIXME: Ignore request to shut down our rpc fd, this is *almost always* safe diff --git a/netcon/NetconEthernetTap.cpp b/netcon/NetconEthernetTap.cpp index 568ad1882..ae1604fbd 100644 --- a/netcon/NetconEthernetTap.cpp +++ b/netcon/NetconEthernetTap.cpp @@ -50,10 +50,9 @@ #include "NetconUtilities.hpp" #include "Common.c" -#define APPLICATION_POLL_FREQ 20 +#define APPLICATION_POLL_FREQ 20 #define ZT_LWIP_TCP_TIMER_INTERVAL 5 -#define STATUS_TMR_INTERVAL 2000 // How often we check connection statuses -#define DEBUG_LEVEL 3 +#define STATUS_TMR_INTERVAL 3000 // How often we check connection statuses namespace ZeroTier { @@ -151,13 +150,10 @@ bool NetconEthernetTap::removeIp(const InetAddress &ip) std::vector::iterator i(std::find(_ips.begin(),_ips.end(),ip)); if (i == _ips.end()) return false; - _ips.erase(i); - if (ip.isV4()) { // TODO: dealloc from LWIP } - return true; } @@ -259,11 +255,6 @@ TcpConnection *NetconEthernetTap::getConnectionByTheirFD(PhySocket *sock, int fd void NetconEthernetTap::compact_dump() { /* - // - refresh(); - clear(); - gotoxy(0,0); - */ clearscreen(); gotoxy(0,0); @@ -286,6 +277,14 @@ void NetconEthernetTap::compact_dump() } } } + */ + for(size_t i=0; irpcSock) == _phy.getDescriptor(rpc_sockets[i])) + fprintf(stderr, "\t(%d) ----> (%d)\n\n", _phy.getDescriptor(tcp_connections[j]->dataSock), tcp_connections[j]->perceived_fd); + } + } } /* @@ -301,7 +300,7 @@ void NetconEthernetTap::dump() fprintf(stderr, "*** IF YOU SEE THIS, EMAIL THE DUMP TEXT TO joseph.henry@zerotier.com ***\n"); fprintf(stderr, " tcp_conns = %d, rpc_socks = %d\n", tcp_connections.size(), rpc_sockets.size()); - // TODO: Add logic to detect bad mapping conditions + // TODO: Add logic to detect bad mapping conditions for(size_t i=0; ipcb, _phy.getDescriptor(conn->dataSock)); - //lwipstack->_tcp_sent(conn->pcb, NULL); - //lwipstack->_tcp_recv(conn->pcb, NULL); - //lwipstack->_tcp_err(conn->pcb, NULL); - //lwipstack->_tcp_poll(conn->pcb, NULL, 0); + //lwipstack->_tcp_sent(conn->pcb, NULL); + //lwipstack->_tcp_recv(conn->pcb, NULL); + //lwipstack->_tcp_err(conn->pcb, NULL); + //lwipstack->_tcp_poll(conn->pcb, NULL, 0); //lwipstack->_tcp_arg(conn->pcb, NULL); if(lwipstack->_tcp_close(conn->pcb) != ERR_OK) { dwr(MSG_ERROR, " closeConnection(): Error while calling tcp_close()\n"); @@ -409,7 +408,6 @@ void NetconEthernetTap::closeAll() void NetconEthernetTap::threadMain() throw() { - //initscr(); //signal(SIGPIPE, SIG_IGN); uint64_t prev_tcp_time = 0; uint64_t prev_status_time = 0; @@ -436,7 +434,6 @@ void NetconEthernetTap::threadMain() fprintf(stderr, "- IP_TMR_INTERVAL = %d\n", IP_TMR_INTERVAL); */ - // Main timer loop while (_run) { uint64_t now = OSUtils::now(); @@ -449,7 +446,7 @@ void NetconEthernetTap::threadMain() // Connection prunning if (since_status >= STATUS_TMR_INTERVAL) { - //compact_dump(); + compact_dump(); prev_status_time = now; if(rpc_sockets.size() || tcp_connections.size()) { diff --git a/netcon/libintercept.so.1.0 b/netcon/libintercept.so.1.0 index 30a9a0afccb82f4e8add74d01cee961ec3279597..70418e6268c91cc103225cb2fdf2e57e420533ee 100755 GIT binary patch literal 57440 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