standardization pass: conditional statement spacing, removed NULL shorthand making checks more explicit

This commit is contained in:
Joseph Henry
2017-09-14 13:17:37 -07:00
parent 476f162a19
commit 7c586471f4
10 changed files with 603 additions and 634 deletions

View File

@@ -77,7 +77,6 @@
#if defined(NS_DEBUG)
#define DEBUG_LWIP(fmt, args...) fprintf(stderr, ZT_YEL "LWIP : %17s:%5d:%25s: " fmt \
ZT_RESET, ZT_FILENAME, __LINE__, __FUNCTION__, ##args)
#define DEBUG_STACK(fmt, args...) fprintf(stderr, ZT_YEL "STACK: %17s:%5d:%25s: " fmt \
ZT_RESET, ZT_FILENAME, __LINE__, __FUNCTION__, ##args)
#else
@@ -116,8 +115,6 @@
"INFO : %17s:%5d:%25s: " fmt "\n", ZT_FILENAME, __LINE__, __FUNCTION__, ##args)
#define DEBUG_ATTN(fmt, args...) fprintf(stderr, ZT_CYN \
"ATTN : %17s:%5d:%25s: " fmt "\n" ZT_RESET, ZT_FILENAME, __LINE__, __FUNCTION__, ##args)
#define DEBUG_STACK(fmt, args...) fprintf(stderr, ZT_YEL \
"STACK: %17s:%5d:%25s: " fmt "\n" ZT_RESET, ZT_FILENAME, __LINE__, __FUNCTION__, ##args)
#define DEBUG_BLANK(fmt, args...) fprintf(stderr, \
"INFO : %17s:%5d:" fmt "\n", ZT_FILENAME, __LINE__, ##args)
#endif

View File

@@ -43,7 +43,6 @@
* will be set to standard values. Override anything you dont like!
*/
#include "lwip/debug.h"
#include "Debug.hpp"
// IP Protocol version
#if defined(LIBZT_IPV6)

View File

@@ -27,13 +27,12 @@
#include <netinet/in.h>
#include <net/if_arp.h>
#include <arpa/inet.h>
#include <errno.h>
#include <algorithm>
#include <utility>
#include <sys/poll.h>
#include <stdint.h>
#include <utility>
#include <string>
#include "VirtualTap.hpp"
#include "libzt.h"
@@ -196,12 +195,14 @@ namespace ZeroTier {
const void *data,unsigned int len)
{
#if defined(STACK_PICO)
if(picostack)
if (picostack) {
picostack->pico_eth_rx(this,from,to,etherType,data,len);
}
#endif
#if defined(STACK_LWIP)
if(lwipstack)
if (lwipstack) {
lwipstack->lwip_eth_rx(this,from,to,etherType,data,len);
}
#endif
}
@@ -286,18 +287,20 @@ namespace ZeroTier {
{
if (sock) {
VirtualSocket *vs = (VirtualSocket*)uptr;
if(vs)
if (vs) {
Close(vs);
}
}
}
void VirtualTap::phyOnUnixData(PhySocket *sock, void **uptr, void *data, ssize_t len)
{
//DEBUG_ATTN("sock->fd=%d", _phy.getDescriptor(sock));
VirtualSocket *vs = (VirtualSocket*)*uptr;
if(!vs)
if (vs == NULL) {
return;
if(len){
}
if (len > 0) {
Write(vs, data, len);
}
return;
@@ -561,7 +564,7 @@ namespace ZeroTier {
// respective protocol control structures
int VirtualTap::Close(VirtualSocket *vs) {
int err = 0;
if(!vs) {
if (vs == NULL) {
DEBUG_ERROR("invalid VirtualSocket");
return -1;
}
@@ -631,8 +634,8 @@ namespace ZeroTier {
found=true;
}
}
if(!found) {
if(!via_addr.ipsEqual(null_addr)) {
if (found == false) {
if (via_addr.ipsEqual(null_addr) == false) {
DEBUG_INFO("adding route <target=%s, nm=%s, via=%s>", target_addr.toString(ipbuf), nm.toString(ipbuf2), via_addr.toString(ipbuf3));
routes.push_back(std::pair<ZeroTier::InetAddress,ZeroTier::InetAddress>(target_addr, nm));
routeAdd(target_addr, nm, via_addr);
@@ -650,7 +653,7 @@ namespace ZeroTier {
found=true;
}
}
if(!found) {
if (found == false) {
DEBUG_INFO("removing route to <target=%s>", routes[i].first.toString(ipbuf), routes[i].second.toString(ipbuf2));
routes.erase(routes.begin() + i);
routeDelete(routes[i].first, routes[i].second);

View File

@@ -35,6 +35,7 @@
#include <utility>
#include <stdexcept>
#include <stdint.h>
#include <errno.h>
#include "Constants.hpp"
#include "MulticastGroup.hpp"
@@ -58,7 +59,8 @@
#include "pico_ipv6.h"
#endif
#if defined(STACK_LWIP)
#include "lwIP.hpp"
#include "lwip/netif.h"
struct netif;
#endif
namespace ZeroTier {

View File

@@ -116,11 +116,13 @@ namespace ZeroTier {
void zts_start(const char *path)
{
if(ZeroTier::zt1Service)
if (ZeroTier::zt1Service) {
return;
}
#if defined(STACK_PICO)
if(ZeroTier::picostack)
if (ZeroTier::picostack) {
return;
}
ZeroTier::picostack = new ZeroTier::picoTCP();
pico_stack_init();
#endif
@@ -128,8 +130,9 @@ void zts_start(const char *path)
ZeroTier::lwipstack = new ZeroTier::lwIP();
lwip_init();
#endif
if(path)
if (path) {
ZeroTier::homeDir = path;
}
pthread_t service_thread;
pthread_create(&service_thread, NULL, zts_start_service, NULL);
}
@@ -137,10 +140,10 @@ void zts_start(const char *path)
void zts_simple_start(const char *path, const char *nwid)
{
zts_start(path);
while(!zts_running()) {
while(zts_running() == false) {
nanosleep((const struct timespec[]) {{0, (ZT_API_CHECK_INTERVAL * 1000000)}}, NULL);
}
while(1) {
while(true) {
try {
zts_join(nwid);
break;
@@ -150,7 +153,7 @@ void zts_simple_start(const char *path, const char *nwid)
handle_general_failure();
}
}
while(!zts_has_address(nwid)) {
while(zts_has_address(nwid) == false) {
nanosleep((const struct timespec[]) {{0, (ZT_API_CHECK_INTERVAL * 1000000)}}, NULL);
}
}
@@ -165,11 +168,11 @@ void zts_stop() {
void zts_join(const char * nwid) {
if (ZeroTier::zt1Service) {
std::string confFile = ZeroTier::zt1Service->givenHomePath() + "/networks.d/" + nwid + ".conf";
if(!ZeroTier::OSUtils::mkdir(ZeroTier::netDir)) {
if (ZeroTier::OSUtils::mkdir(ZeroTier::netDir) == false) {
DEBUG_ERROR("unable to create: %s", ZeroTier::netDir.c_str());
handle_general_failure();
}
if(!ZeroTier::OSUtils::writeFile(confFile.c_str(), "")) {
if (ZeroTier::OSUtils::writeFile(confFile.c_str(), "") == false) {
DEBUG_ERROR("unable to write network conf file: %s", confFile.c_str());
handle_general_failure();
}
@@ -186,12 +189,12 @@ void zts_join(const char * nwid) {
void zts_join_soft(const char * filepath, const char * nwid) {
std::string net_dir = std::string(filepath) + "/networks.d/";
std::string confFile = net_dir + std::string(nwid) + ".conf";
if(!ZeroTier::OSUtils::mkdir(net_dir)) {
if (ZeroTier::OSUtils::mkdir(net_dir) == false) {
DEBUG_ERROR("unable to create: %s", net_dir.c_str());
handle_general_failure();
}
if(!ZeroTier::OSUtils::fileExists(confFile.c_str(),false)) {
if(!ZeroTier::OSUtils::writeFile(confFile.c_str(), "")) {
if (ZeroTier::OSUtils::fileExists(confFile.c_str(), false) == false) {
if (ZeroTier::OSUtils::writeFile(confFile.c_str(), "") == false) {
DEBUG_ERROR("unable to write network conf file: %s", confFile.c_str());
handle_general_failure();
}
@@ -199,9 +202,10 @@ void zts_join_soft(const char * filepath, const char * nwid) {
}
void zts_leave(const char * nwid) {
if(ZeroTier::zt1Service)
if (ZeroTier::zt1Service) {
ZeroTier::zt1Service->leave(nwid);
}
}
void zts_leave_soft(const char * filepath, const char * nwid) {
std::string net_dir = std::string(filepath) + "/networks.d/";
@@ -236,7 +240,6 @@ int zts_get_device_id(char *devID) {
{
std::string fname("identity.public");
std::string fpath(ZeroTier::homeDir);
if (ZeroTier::OSUtils::fileExists((fpath + ZT_PATH_SEPARATOR_S + fname).c_str(),false)) {
std::string oldid;
ZeroTier::OSUtils::readFile((fpath + ZT_PATH_SEPARATOR_S + fname).c_str(),oldid);
@@ -248,7 +251,7 @@ int zts_get_device_id(char *devID) {
}
int zts_running() {
return !ZeroTier::zt1Service ? false : ZeroTier::zt1Service->isRunning();
return ZeroTier::zt1Service == NULL ? false : ZeroTier::zt1Service->isRunning();
}
int zts_has_ipv4_address(const char *nwid)
@@ -333,11 +336,13 @@ void zts_get_rfc4193_addr(char *addr, const char *nwid, const char *devID)
}
unsigned long zts_get_peer_count() {
if(ZeroTier::zt1Service)
if (ZeroTier::zt1Service) {
return ZeroTier::zt1Service->getNode()->peers()->peerCount;
else
}
else {
return 0;
}
}
int zts_get_peer_address(char *peer, const char *devID) {
if (ZeroTier::zt1Service) {
@@ -393,7 +398,7 @@ int zts_socket(ZT_SOCKET_SIG) {
errno = EINVAL;
return -1;
}
if(!ZeroTier::zt1Service) {
if (ZeroTier::zt1Service == NULL) {
DEBUG_ERROR("cannot create socket, no service running. call zts_start() first.");
errno = EMFILE; // could also be ENFILE
return -1;
@@ -415,7 +420,7 @@ int zts_socket(ZT_SOCKET_SIG) {
#if defined(STACK_PICO)
struct pico_socket *p;
err = ZeroTier::picostack->pico_Socket(&p, socket_family, socket_type, protocol);
if(!err && p) {
if (err == false && p) {
ZeroTier::VirtualSocket *vs = new ZeroTier::VirtualSocket();
vs->socket_family = socket_family;
vs->socket_type = socket_type;
@@ -513,18 +518,18 @@ int zts_connect(ZT_CONNECT_SIG) {
errno = EBADF;
return -1;
}
if(!ZeroTier::zt1Service) {
if (ZeroTier::zt1Service == NULL) {
DEBUG_ERROR("service not started. call zts_start(path) first");
errno = EBADF;
return -1;
}
ZeroTier::VirtualSocket *vs = get_virtual_socket(fd);
if(!vs) {
if (vs == NULL) {
DEBUG_ERROR("invalid socket, unable to locate VirtualSocket for fd=%d", fd);
errno = EBADF;
return -1;
}
if(!addr) {
if (addr == NULL) {
DEBUG_ERROR("invalid address for fd=%d", fd);
errno = EINVAL;
return -1;
@@ -541,7 +546,7 @@ int zts_connect(ZT_CONNECT_SIG) {
ZeroTier::InetAddress inet;
sockaddr2inet(vs->socket_family, addr, &inet);
ZeroTier::VirtualTap *tap = getTapByAddr(&inet);
if(!tap) {
if (tap == NULL) {
DEBUG_ERROR("no route to host, could not find appropriate VirtualTap for fd=%d", fd);
errno = ENETUNREACH;
return -1;
@@ -586,20 +591,18 @@ int zts_connect(ZT_CONNECT_SIG) {
return -1;
}
blocking = !(f_err & O_NONBLOCK);
if(!blocking) {
if (blocking == false) {
errno = EINPROGRESS; // can't connect immediately
err = -1;
}
if(blocking) {
if (blocking == true) {
bool complete = false;
while(true)
{
while(true) {
// FIXME: locking and unlocking so often might cause significant performance overhead while outgoing VirtualSockets
// are being established (also applies to accept())
nanosleep((const struct timespec[]) {{0, (ZT_CONNECT_RECHECK_DELAY * 1000000)}}, NULL);
tap->_tcpconns_m.lock();
for(int i=0; i<tap->_VirtualSockets.size(); i++)
{
for(int i=0; i<tap->_VirtualSockets.size(); i++) {
#if defined(STACK_PICO)
if (tap->_VirtualSockets[i]->state == PICO_ERR_ECONNRESET) {
errno = ECONNRESET;
@@ -644,21 +647,19 @@ int zts_bind(ZT_BIND_SIG) {
errno = EBADF;
return -1;
}
if(!ZeroTier::zt1Service) {
if (ZeroTier::zt1Service == NULL) {
DEBUG_ERROR("service not started. call zts_start(path) first");
errno = EBADF;
return -1;
}
ZeroTier::VirtualSocket *vs = get_virtual_socket(fd);
if(!vs) {
if (vs == NULL) {
DEBUG_ERROR("no VirtualSocket for fd=%d", fd);
errno = ENOTSOCK;
return -1;
}
// detect local interface binds
ZeroTier::VirtualTap *tap = NULL;
if (vs->socket_family == AF_INET) {
struct sockaddr_in *in4 = (struct sockaddr_in *)addr;
if (in4->sin_addr.s_addr == INADDR_ANY) {
@@ -687,10 +688,10 @@ int zts_bind(ZT_BIND_SIG) {
ZeroTier::InetAddress inet;
sockaddr2inet(vs->socket_family, addr, &inet);
if(!tap)
if (tap == NULL) {
tap = getTapByAddr(&inet);
if(!tap) {
}
if (tap == NULL) {
DEBUG_ERROR("no matching interface to bind to, could not find appropriate VirtualTap for fd=%d", fd);
errno = ENETUNREACH;
return -1;
@@ -701,8 +702,8 @@ int zts_bind(ZT_BIND_SIG) {
#endif
tap->addVirtualSocket(vs);
err = tap->Bind(vs, addr, addrlen);
vs->tap = tap;
if (err == 0) { // success
vs->tap = tap;
del_unassigned_virtual_socket(fd);
add_assigned_virtual_socket(tap, vs, fd);
}
@@ -734,21 +735,21 @@ int zts_listen(ZT_LISTEN_SIG) {
errno = EBADF;
return -1;
}
if(!ZeroTier::zt1Service) {
if (ZeroTier::zt1Service == NULL) {
DEBUG_ERROR("service not started. call zts_start(path) first");
errno = EACCES;
return -1;
}
std::pair<ZeroTier::VirtualSocket*, ZeroTier::VirtualTap*> *p = get_assigned_virtual_pair(fd);
ZeroTier::_multiplexer_lock.lock();
if(!p) {
if (p == NULL) {
DEBUG_ERROR("unable to locate VirtualSocket pair. did you bind?");
errno = EDESTADDRREQ;
return -1;
}
ZeroTier::VirtualSocket *vs = p->first;
ZeroTier::VirtualTap *tap = p->second;
if(!tap || !vs) {
if (tap == NULL || vs == NULL) {
DEBUG_ERROR("unable to locate tap interface for file descriptor");
errno = EBADF;
return -1;
@@ -786,13 +787,13 @@ int zts_accept(ZT_ACCEPT_SIG) {
errno = EINVAL; // TODO, not actually a valid error for this function
return -1;
}
if(!can_provision_new_socket(SOCK_STREAM)) {
if (can_provision_new_socket(SOCK_STREAM) == false) {
DEBUG_ERROR("cannot provision additional socket due to limitation of network stack");
errno = EMFILE;
return -1;
}
std::pair<ZeroTier::VirtualSocket*, ZeroTier::VirtualTap*> *p = get_assigned_virtual_pair(fd);
if(!p) {
if (p == NULL) {
DEBUG_ERROR("unable to locate VirtualSocket pair (did you zts_bind())?");
errno = EBADF;
err = -1;
@@ -800,7 +801,6 @@ int zts_accept(ZT_ACCEPT_SIG) {
else {
ZeroTier::VirtualSocket *vs = p->first;
ZeroTier::VirtualTap *tap = p->second;
// BLOCKING: loop and keep checking until we find a newly accepted VirtualSocket
int f_err, blocking = 1;
if ((f_err = fcntl(fd, F_GETFL, 0)) < 0) {
@@ -811,8 +811,8 @@ int zts_accept(ZT_ACCEPT_SIG) {
blocking = !(f_err & O_NONBLOCK);
}
ZeroTier::VirtualSocket *accepted_vs;
if(!err) {
if(!blocking) { // non-blocking
if (err == false) {
if (blocking == false) { // non-blocking
DEBUG_EXTRA("EWOULDBLOCK, assuming non-blocking mode");
errno = EWOULDBLOCK;
err = -1;
@@ -920,7 +920,7 @@ int zts_setsockopt(ZT_SETSOCKOPT_SIG)
}
#if defined(STACK_PICO)
ZeroTier::VirtualSocket *vs = get_virtual_socket(fd);
if(!vs) {
if (vs == NULL) {
DEBUG_ERROR("invalid fd=%d", fd);
errno = EBADF;
return -1;
@@ -942,7 +942,7 @@ int zts_setsockopt(ZT_SETSOCKOPT_SIG)
return err;
#endif
#if defined(STACK_LWIP)
// TODO
#endif
return 0;
}
@@ -1009,7 +1009,7 @@ int zts_getpeername(ZT_GETPEERNAME_SIG)
return -1;
}
ZeroTier::VirtualSocket *vs = get_virtual_socket(fd);
if(!vs) {
if (vs == NULL) {
errno = ENOTCONN;
return -1;
}
@@ -1078,13 +1078,13 @@ int zts_close(ZT_CLOSE_SIG)
errno = EBADF;
return -1;
}
if(!ZeroTier::zt1Service) {
if (ZeroTier::zt1Service == NULL) {
DEBUG_ERROR("cannot close socket. service not started. call zts_start(path) first");
errno = EBADF;
return -1;
}
ZeroTier::VirtualSocket *vs = get_virtual_socket(fd);
if(!vs) {
if (vs == NULL) {
DEBUG_ERROR("no vs found for fd=%d", fd);
handle_general_failure();
errno = EBADF;
@@ -1097,25 +1097,6 @@ int zts_close(ZT_CLOSE_SIG)
delete vs;
vs = NULL;
return err;
/*
// check if socket is blocking
int f_err, blocking = 1;
if ((f_err = fcntl(fd, F_GETFL, 0)) < 0) {
DEBUG_ERROR("fcntl error, err = %s, errno = %d", f_err, errno);
err = -1;
}
else {
blocking = !(f_err & O_NONBLOCK);
}
if(blocking) {
for(int i=0; i<ZT_SDK_CLTIME; i++) {
if(vs->TXbuf->count() == 0)
break;
usleep(ZT_API_CHECK_INTERVAL * 1000);
}
}
*/
}
int zts_poll(ZT_POLL_SIG)
@@ -1163,7 +1144,7 @@ int zts_ioctl(ZT_IOCTL_SIG)
{
struct ifreq *ifr = (struct ifreq *)argp;
ZeroTier::VirtualTap *tap = getTapByName(ifr->ifr_name);
if(!tap) {
if (tap == NULL) {
DEBUG_ERROR("unable to locate tap interface with that name");
err = -1;
errno = EINVAL;
@@ -1185,8 +1166,7 @@ int zts_ioctl(ZT_IOCTL_SIG)
err = 0;
}
}
else
{
else {
DEBUG_INFO("!argp");
}
#else
@@ -1246,24 +1226,22 @@ ssize_t zts_sendto(ZT_SENDTO_SIG)
errno = EMSGSIZE;
return -1;
}
if(!buf) {
if (buf == NULL) {
DEBUG_ERROR("msg buf is null");
errno = EINVAL;
return -1;
}
ZeroTier::VirtualSocket *vs = get_virtual_socket(fd);
if(!vs) {
if (vs == NULL) {
DEBUG_ERROR("no vs found for fd=%x", fd);
handle_general_failure();
errno = EBADF;
return -1;
}
ZeroTier::InetAddress iaddr;
ZeroTier::VirtualTap *tap;
if(vs->socket_type == SOCK_DGRAM)
{
if (vs->socket_type == SOCK_DGRAM) {
if (vs->socket_family == AF_INET)
{
char ipstr[INET_ADDRSTRLEN];
@@ -1285,7 +1263,7 @@ ssize_t zts_sendto(ZT_SENDTO_SIG)
}
// get tap
tap = getTapByAddr(&iaddr);
if(!tap) {
if (tap == NULL) {
DEBUG_INFO("SOCK_DGRAM, tap not found");
errno = EDESTADDRREQ; // TODO: double check this is the best errno to report
return -1;
@@ -1378,9 +1356,8 @@ ssize_t zts_send(ZT_SEND_SIG)
errno = EMSGSIZE;
return -1;
}
ZeroTier::VirtualSocket *vs = get_virtual_socket(fd);
if(!vs) {
if (vs == NULL) {
DEBUG_ERROR("invalid vs for fd=%d", fd);
errno = EBADF;
return -1;
@@ -1429,7 +1406,6 @@ ssize_t zts_send(ZT_SEND_SIG)
#endif
err = write(fd, buf, len);
// restore "per-call" flags
if (flags & MSG_DONTWAIT) {
@@ -1493,7 +1469,7 @@ ssize_t zts_recv(ZT_RECV_SIG)
return -1;
}
ZeroTier::VirtualSocket *vs = get_virtual_socket(fd);
if(!vs) {
if (vs == NULL) {
DEBUG_ERROR("invalid vs for fd=%d", fd);
errno = EBADF;
return -1;
@@ -1591,7 +1567,7 @@ ssize_t zts_recvfrom(ZT_RECVFROM_SIG)
if (len == 0) {
return 0;
}
if(!buf) {
if (buf == NULL) {
DEBUG_ERROR("buf is null");
errno = EINVAL;
return -1;
@@ -1696,7 +1672,7 @@ int zts_shutdown(ZT_SHUTDOWN_SIG)
return -1;
}
ZeroTier::VirtualSocket *vs = get_virtual_socket(fd);
if(!vs) {
if (vs == NULL) {
DEBUG_ERROR("invalid vs for fd=%d", fd);
errno = EBADF;
return -1;
@@ -1752,9 +1728,10 @@ namespace ZeroTier {
}
// Shuts down ZeroTier service and SOCKS5 Proxy server
JNIEXPORT void JNICALL Java_zerotier_ZeroTier_ztjni_1stop(JNIEnv *env, jobject thisObj) {
if(ZeroTier::zt1Service)
if (ZeroTier::zt1Service) {
zts_stop();
}
}
// Returns whether the ZeroTier service is running
JNIEXPORT jboolean JNICALL Java_zerotier_ZeroTier_ztjni_1running(
@@ -2085,7 +2062,7 @@ ZeroTier::VirtualTap *getTapByAddr(ZeroTier::InetAddress *addr)
}
}
// check managed routes
if(!tap) {
if (tap == NULL) {
std::vector<ZT_VirtualNetworkRoute> *managed_routes = ZeroTier::zt1Service->getRoutes(s->_nwid);
ZeroTier::InetAddress target, nm, via;
for(int i=0; i<managed_routes->size(); i++) {
@@ -2110,7 +2087,7 @@ ZeroTier::VirtualTap *getTapByName(char *ifname)
ZeroTier::VirtualTap *s, *tap = nullptr;
for(int i=0; i<ZeroTier::vtaps.size(); i++) {
s = (ZeroTier::VirtualTap*)ZeroTier::vtaps[i];
if(!strcmp(s->_dev.c_str(), ifname)) {
if (strcmp(s->_dev.c_str(), ifname) == false) {
tap = s;
}
}
@@ -2152,7 +2129,7 @@ ZeroTier::VirtualSocket *get_virtual_socket(int fd)
ZeroTier::_multiplexer_lock.lock();
// try to locate in unmapped set
ZeroTier::VirtualSocket *vs = ZeroTier::unmap[fd];
if(!vs) {
if (vs == NULL) {
// if not, try to find in mapped set (bind to vtap has been performed)
std::pair<ZeroTier::VirtualSocket*, ZeroTier::VirtualTap*> *p = ZeroTier::fdmap[fd];
if (p) {
@@ -2296,7 +2273,6 @@ void dismantleTaps()
int zts_get_device_id_from_file(const char *filepath, char *devID) {
std::string fname("identity.public");
std::string fpath(filepath);
if (ZeroTier::OSUtils::fileExists((fpath + ZT_PATH_SEPARATOR_S + fname).c_str(),false)) {
std::string oldid;
ZeroTier::OSUtils::readFile((fpath + ZT_PATH_SEPARATOR_S + fname).c_str(),oldid);
@@ -2307,26 +2283,26 @@ int zts_get_device_id_from_file(const char *filepath, char *devID) {
}
// Starts a ZeroTier service in the background
void *zts_start_service(void *thread_id) {
void *zts_start_service(void *thread_id)
{
DEBUG_INFO("homeDir=%s", ZeroTier::homeDir.c_str());
// Where network .conf files will be stored
ZeroTier::netDir = ZeroTier::homeDir + "/networks.d";
ZeroTier::zt1Service = (ZeroTier::OneService *)0;
// Construct path for network config and supporting service files
if (ZeroTier::homeDir.length()) {
std::vector<std::string> hpsp(ZeroTier::OSUtils::split(ZeroTier::homeDir.c_str(),
ZT_PATH_SEPARATOR_S,"",""));
std::vector<std::string> hpsp(ZeroTier::OSUtils::split(ZeroTier::homeDir.c_str(), ZT_PATH_SEPARATOR_S,"",""));
std::string ptmp;
if (ZeroTier::homeDir[0] == ZT_PATH_SEPARATOR)
if (ZeroTier::homeDir[0] == ZT_PATH_SEPARATOR) {
ptmp.push_back(ZT_PATH_SEPARATOR);
}
for(std::vector<std::string>::iterator pi(hpsp.begin());pi!=hpsp.end();++pi) {
if (ptmp.length() > 0)
if (ptmp.length() > 0) {
ptmp.push_back(ZT_PATH_SEPARATOR);
}
ptmp.append(*pi);
if ((*pi != ".")&&(*pi != "..")) {
if (!ZeroTier::OSUtils::mkdir(ptmp)) {
if (ZeroTier::OSUtils::mkdir(ptmp) == false) {
DEBUG_ERROR("home path does not exist, and could not create");
handle_general_failure();
perror("error\n");

View File

@@ -307,7 +307,7 @@ namespace ZeroTier
const void *data, unsigned int len)
{
struct pbuf *p,*q;
if (!tap->_enabled){
if (tap->_enabled == false) {
return;
}
struct eth_hdr ethhdr;
@@ -364,7 +364,7 @@ namespace ZeroTier
int lwIP::lwip_Socket(void **pcb, int socket_family, int socket_type, int protocol)
{
if(!can_provision_new_socket(socket_type)) {
if (can_provision_new_socket(socket_type) == false) {
DEBUG_ERROR("unable to create socket due to limitation of network stack, PCBs=%d", lwip_num_total_pcbs());
errno = ENOMEM;
return -1;
@@ -507,7 +507,7 @@ namespace ZeroTier
VirtualSocket* lwIP::lwip_Accept(VirtualSocket *vs)
{
if(!vs) {
if (vs == NULL) {
DEBUG_ERROR("invalid virtual socket");
handle_general_failure();
return NULL;
@@ -526,11 +526,11 @@ namespace ZeroTier
{
DEBUG_EXTRA("vs=%p", vs);
int err = 0;
if(!vs) {
if (vs == NULL) {
DEBUG_ERROR("no virtual socket");
return -1;
}
if(!lwip_invoked) {
if (lwip_invoked == false) {
DEBUG_INFO("!lwip_invoked");
vs->tap->_tcpconns_m.lock();
vs->_rx_m.lock();
@@ -548,7 +548,7 @@ namespace ZeroTier
if (vs->RXbuf->count() == 0) {
vs->tap->_phy.setNotifyWritable(vs->sock, false); // nothing else to send to the app
}
if(!lwip_invoked) {
if (lwip_invoked == false) {
vs->tap->_tcpconns_m.unlock();
vs->_rx_m.unlock();
}
@@ -558,7 +558,7 @@ namespace ZeroTier
int lwIP::lwip_Write(VirtualSocket *vs, void *data, ssize_t len)
{
int err = 0;
if(!vs) {
if (vs == NULL) {
DEBUG_ERROR("no virtual socket");
return -1;
}
@@ -568,7 +568,7 @@ namespace ZeroTier
// TODO: Packet re-assembly hasn't yet been tested with lwIP so UDP packets are limited to MTU-sized chunks
int udp_trans_len = std::min(len, (ssize_t)ZT_MAX_MTU);
struct pbuf * pb = pbuf_alloc(PBUF_TRANSPORT, udp_trans_len, PBUF_POOL);
if(!pb) {
if (pb == NULL) {
DEBUG_ERROR("unable to allocate new pbuf of len=%d", udp_trans_len);
return -1;
}
@@ -590,7 +590,7 @@ namespace ZeroTier
if (vs->socket_type == SOCK_STREAM) {
// How much we are currently allowed to write to the VirtualSocket
ssize_t sndbuf = ((struct tcp_pcb*)vs->pcb)->snd_buf;
if(!sndbuf) {
if (sndbuf == 0) {
// PCB send buffer is full, turn off readability notifications for the
// corresponding PhySocket until lwip_cb_sent() is called and confirms that there is
// now space on the buffer
@@ -608,7 +608,7 @@ namespace ZeroTier
if (vs->TXbuf->count() <= 0) {
err = -1; // nothing to write
}
if(!err) {
if (err == ERR_OK) {
int r = std::min((ssize_t)vs->TXbuf->count(), sndbuf);
// Writes data pulled from the client's socket buffer to LWIP. This merely sends the
// data to LWIP to be enqueued and eventually sent to the network.
@@ -643,7 +643,7 @@ namespace ZeroTier
int lwIP::lwip_Close(VirtualSocket *vs)
{
if(!vs) {
if (vs == NULL) {
DEBUG_ERROR("invalid vs");
handle_general_failure();
return -1;
@@ -732,7 +732,7 @@ namespace ZeroTier
//DEBUG_INFO();
VirtualSocket *vs = (VirtualSocket *)arg;
int tot = 0;
if(!vs) {
if (vs == NULL) {
DEBUG_ERROR("no virtual socket");
handle_general_failure();
return ERR_OK;
@@ -827,12 +827,12 @@ namespace ZeroTier
{
//DEBUG_EXTRA("arg(vs)=%p, pcb=%p, port=%d)", arg, upcb, port);
VirtualSocket *vs = (VirtualSocket *)arg;
if(!vs) {
if (vs == NULL) {
DEBUG_ERROR("invalid virtual socket");
return;
}
if(!p) {
DEBUG_ERROR("!p");
if (p == NULL) {
DEBUG_ERROR("p == NULL");
return;
}
struct pbuf* q = p;
@@ -851,10 +851,8 @@ namespace ZeroTier
char udp_payload_buf[ZT_SOCKET_MSG_BUF_SZ];
char *msg_ptr = udp_payload_buf;
int tot_len = 0;
while(p != NULL)
{
while(p != NULL) {
if (p->len <= 0) {
break;
}
@@ -887,10 +885,10 @@ namespace ZeroTier
{
//DEBUG_EXTRA("pcb=%p", PCB);
VirtualSocket *vs = (VirtualSocket *)arg;
if(!vs){
if (vs == NULL) {
DEBUG_ERROR("invalid vs for PCB=%p, len=%d", PCB, len);
}
if(!(vs->copymode & TCP_WRITE_FLAG_COPY)) {
if ((vs->copymode & TCP_WRITE_FLAG_COPY) == false) {
/*
From lwIP docs:
@@ -926,7 +924,7 @@ namespace ZeroTier
{
DEBUG_ATTN("pcb=%p", PCB);
VirtualSocket *vs = (VirtualSocket *)arg;
if(!vs) {
if (vs == NULL) {
DEBUG_ERROR("invalid virtual socket");
return -1;
}
@@ -941,7 +939,7 @@ namespace ZeroTier
err_t lwIP::lwip_cb_poll(void* arg, struct tcp_pcb *PCB)
{
VirtualSocket *vs = (VirtualSocket *)arg;
if(!vs) {
if (vs == NULL) {
DEBUG_ERROR("invalid vs");
handle_general_failure();
return ERR_OK; // TODO: determine appropriate error value, if any
@@ -999,7 +997,7 @@ namespace ZeroTier
void lwIP::lwip_cb_err(void *arg, err_t err)
{
VirtualSocket *vs = (VirtualSocket *)arg;
if(!vs) {
if (vs == NULL) {
DEBUG_ERROR("err=%d, invalid virtual socket", err);
errno = -1;
}

View File

@@ -31,6 +31,7 @@
#include <stdio.h>
#include <dlfcn.h>
#include <errno.h>
#include "lwip/mem.h"
#include "lwip/pbuf.h"

View File

@@ -101,7 +101,7 @@ namespace ZeroTier {
_picostack_driver_lock.lock();
// give right to vtap to start the stack
// only one stack loop is permitted
if(!picodev_initialized) {
if (picodev_initialized == false) {
tap->should_start_stack = true;
picodev.send = pico_eth_tx; // tx
picodev.poll = pico_eth_poll; // calls pico_eth_rx
@@ -247,19 +247,18 @@ namespace ZeroTier {
void picoTCP::pico_cb_tcp_read(ZeroTier::VirtualTap *tap, struct pico_socket *s)
{
VirtualSocket *vs = (VirtualSocket*)(((VirtualBindingPair*)s->priv)->vs);
if(!vs) {
if (vs == NULL) {
DEBUG_ERROR("s->priv yielded no valid vs");
handle_general_failure();
return;
}
Mutex::Lock _l(vs->_rx_m);
if(!tap) {
if (tap == NULL) {
DEBUG_ERROR("invalid tap");
handle_general_failure();
return;
}
if(!vs) {
if (vs == NULL) {
DEBUG_ERROR("invalid vs");
handle_general_failure();
return;
@@ -306,19 +305,18 @@ namespace ZeroTier {
{
// DEBUG_INFO();
VirtualSocket *vs = (VirtualSocket*)(((VirtualBindingPair*)s->priv)->vs);
if(!vs) {
if (vs == NULL) {
DEBUG_ERROR("s->priv yielded no valid vs");
handle_general_failure();
return;
}
Mutex::Lock _l(vs->_rx_m);
if(!tap) {
if (tap == NULL) {
DEBUG_ERROR("invalid tap");
handle_general_failure();
return;
}
if(!vs) {
if (vs == NULL) {
DEBUG_ERROR("invalid vs");
handle_general_failure();
return;
@@ -376,13 +374,13 @@ namespace ZeroTier {
void picoTCP::pico_cb_tcp_write(VirtualTap *tap, struct pico_socket *s)
{
VirtualSocket *vs = (VirtualSocket*)(((VirtualBindingPair*)s->priv)->vs);
if(!vs) {
if (vs == NULL) {
DEBUG_ERROR("s->priv yielded no valid vs");
handle_general_failure();
return;
}
Mutex::Lock _l(vs->_tx_m);
if(!vs) {
if (vs == NULL) {
DEBUG_ERROR("invalid VirtualSocket");
handle_general_failure();
return;
@@ -454,14 +452,14 @@ namespace ZeroTier {
// --- handle non-error events ---
VirtualBindingPair *vbp = (VirtualBindingPair*)(s->priv);
if(!vbp) {
if (vbp == NULL) {
DEBUG_ERROR("s->priv yielded no valid VirtualBindingPair");
handle_general_failure();
return;
}
VirtualTap *tap = static_cast<VirtualTap*>(vbp->tap);
VirtualSocket *vs = static_cast<VirtualSocket*>(vbp->vs);
if(!vs) {
if (vs == NULL) {
DEBUG_ERROR("invalid VirtualSocket");
handle_general_failure();
return;
@@ -472,24 +470,21 @@ namespace ZeroTier {
// may now be issued in order to accept the incoming VirtualSocket from a remote host.
if (ev & PICO_SOCK_EV_CONN) {
DEBUG_EXTRA("PICO_SOCK_EV_CONN");
if(vs->state == ZT_SOCK_STATE_LISTENING)
{
if (vs->state == ZT_SOCK_STATE_LISTENING) {
uint16_t port;
struct pico_socket *client_psock = nullptr;
struct pico_ip4 orig4;
struct pico_ip6 orig6;
if (vs->socket_family == AF_INET) { // NOTE: p->net->proto_number == PICO_PROTO_IPV4
client_psock = pico_socket_accept(s, &orig4, &port);
}
if (vs->socket_family == AF_INET6) { // NOTE: p->net->proto_number == PICO_PROTO_IPV4
client_psock = pico_socket_accept(s, &orig6, &port);
}
if(!client_psock) {
if (client_psock == NULL) {
DEBUG_ERROR("pico_socket_accept(): pico_socket=%p, pico_err=%d, %s", s, pico_err, beautify_pico_error(pico_err));
return;
}
// Create a new VirtualSocket and add it to the queue,
// some time in the future a call to zts_multiplex_accept() will pick up
// this new VirtualSocket, add it to the VirtualSocket list and return its
@@ -497,7 +492,6 @@ namespace ZeroTier {
VirtualSocket *new_vs = new VirtualSocket();
new_vs->socket_type = SOCK_STREAM;
new_vs->picosock = client_psock;
// TODO: Condense this
if (vs->socket_family == AF_INET) {
char addrstr[INET_ADDRSTRLEN];
@@ -524,7 +518,7 @@ namespace ZeroTier {
inet.fromString(addrstr);
new_vs->tap = getTapByAddr(&inet); // assign to tap based on incoming address
}
if(!new_vs->tap) {
if (new_vs->tap == NULL) {
DEBUG_ERROR("no valid VirtualTap could be found");
handle_general_failure();
return;
@@ -559,7 +553,7 @@ namespace ZeroTier {
{
//_picostack_driver_lock.lock();
VirtualTap *tap = static_cast<VirtualTap*>(dev->tap);
if(!tap) {
if (tap == NULL) {
DEBUG_ERROR("invalid dev->tap");
handle_general_failure();
return ZT_ERR_GENERAL_FAILURE;
@@ -632,7 +626,7 @@ namespace ZeroTier {
const void *data,unsigned int len)
{
//_picostack_driver_lock.lock();
if(!tap) {
if (tap == NULL) {
DEBUG_ERROR("invalid tap");
handle_general_failure();
return;
@@ -707,7 +701,7 @@ namespace ZeroTier {
int pico_eth_poll(struct pico_device *dev, int loop_score)
{
VirtualTap *tap = static_cast<VirtualTap*>(dev->tap);
if(!tap) {
if (tap == NULL) {
DEBUG_ERROR("invalid dev->tap");
handle_general_failure();
return ZT_ERR_GENERAL_FAILURE;
@@ -743,13 +737,12 @@ namespace ZeroTier {
int picoTCP::pico_Socket(struct pico_socket **p, int socket_family, int socket_type, int protocol)
{
int err = 0;
if(!can_provision_new_socket(socket_type)) {
if (can_provision_new_socket(socket_type) == false) {
DEBUG_ERROR("cannot create additional socket, see PICO_MAX_TIMERS. current=%d", pico_ntimers());
errno = EMFILE;
err = -1;
}
else
{
else {
int protocol_version = 0;
struct pico_socket *psock;
if (socket_family == AF_INET)
@@ -799,7 +792,7 @@ namespace ZeroTier {
int picoTCP::pico_Connect(VirtualSocket *vs, const struct sockaddr *addr, socklen_t addrlen)
{
if(!vs || !vs->picosock) {
if (vs == NULL || vs->picosock == NULL) {
DEBUG_ERROR("invalid vs or vs->picosock");
handle_general_failure();
return ZT_ERR_GENERAL_FAILURE;
@@ -841,7 +834,7 @@ namespace ZeroTier {
int picoTCP::pico_Bind(VirtualSocket *vs, const struct sockaddr *addr, socklen_t addrlen)
{
if(!vs || !vs->picosock) {
if (vs == NULL || vs->picosock == NULL) {
DEBUG_ERROR("invalid vs or vs->picosock");
handle_general_failure();
return ZT_ERR_GENERAL_FAILURE;
@@ -879,7 +872,7 @@ namespace ZeroTier {
int picoTCP::pico_Listen(VirtualSocket *vs, int backlog)
{
if(!vs || !vs->picosock) {
if (vs == NULL || vs->picosock == NULL) {
DEBUG_ERROR("invalid vs or vs->picosock");
handle_general_failure();
return ZT_ERR_GENERAL_FAILURE;
@@ -896,7 +889,7 @@ namespace ZeroTier {
VirtualSocket* picoTCP::pico_Accept(VirtualSocket *vs)
{
if(!vs) {
if (vs == NULL) {
DEBUG_ERROR("invalid vs");
handle_general_failure();
return NULL;
@@ -922,7 +915,7 @@ namespace ZeroTier {
int err = 0;
// TODO: Add RingBuffer overflow checks
// DEBUG_INFO("vs=%p, len=%d", vs, len);
if(!vs) {
if (vs == NULL) {
DEBUG_ERROR("invalid vs");
handle_general_failure();
return ZT_ERR_GENERAL_FAILURE;
@@ -937,7 +930,7 @@ namespace ZeroTier {
DEBUG_ERROR("socket is CLOSED, this wrpico_cb_tcp_writeite() will fail");
return -1;
}
if(!vs) {
if (vs == NULL) {
DEBUG_ERROR("invalid VirtualSocket (len=%d)", len);
handle_general_failure();
return -1;
@@ -993,13 +986,13 @@ namespace ZeroTier {
int picoTCP::pico_Close(VirtualSocket *vs)
{
if(!vs) {
if (vs == NULL) {
DEBUG_ERROR("invalid vs");
handle_general_failure();
return ZT_ERR_GENERAL_FAILURE;
}
DEBUG_EXTRA("vs=%p, picosock=%p, fd=%d", vs, vs->picosock, vs->app_fd);
if(!vs || !vs->picosock)
if (vs == NULL || vs->picosock == NULL)
return ZT_ERR_GENERAL_FAILURE;
int err = 0;
Mutex::Lock _l(vs->tap->_tcpconns_m);