diff options
author | Joseph Henry <joseph.henry@zerotier.com> | 2015-10-09 15:41:16 -0400 |
---|---|---|
committer | Joseph Henry <joseph.henry@zerotier.com> | 2015-10-09 15:41:16 -0400 |
commit | e3ec000e93f0eeb365633d36d1a9ce0b139c75b5 (patch) | |
tree | fdb429cb7ad16c4038ab9e2e0af8d161f27e5f94 /netcon/common.c | |
parent | 769bad332041fd707533c086dc0d2c2f4a57befe (diff) | |
download | infinitytier-e3ec000e93f0eeb365633d36d1a9ce0b139c75b5.tar.gz infinitytier-e3ec000e93f0eeb365633d36d1a9ce0b139c75b5.zip |
Added intercept build file and sources
Diffstat (limited to 'netcon/common.c')
-rwxr-xr-x | netcon/common.c | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/netcon/common.c b/netcon/common.c new file mode 100755 index 00000000..f6487cd5 --- /dev/null +++ b/netcon/common.c @@ -0,0 +1,130 @@ +/* + * ZeroTier One - Network Virtualization Everywhere + * Copyright (C) 2011-2015 ZeroTier, Inc. + * + * 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 <http://www.gnu.org/licenses/>. + * + * -- + * + * ZeroTier may be used and distributed under the terms of the GPLv3, which + * are available at: http://www.gnu.org/licenses/gpl-3.0.html + * + * If you would like to embed ZeroTier into a commercial application or + * redistribute it in a modified binary form, please contact ZeroTier Networks + * LLC. Start here: http://www.zerotier.com/ + */ + +#include <stdio.h> +#include <netdb.h> +#include <stdarg.h> +#include <errno.h> +#include <stdlib.h> +#include <string.h> +#include <time.h> +#include <unistd.h> +#include <arpa/inet.h> +#include <netinet/in.h> +#include <pthread.h> + +#include "common.h" + +void dwr(const char *fmt, ...); + +/* defined in intercept and service */ +extern FILE* logfile; +extern char* logfilename; +//extern flog = -1; + +extern pthread_mutex_t loglock; + + + +#ifdef NETCON_SERVICE + void dwr(int, const char *fmt, ...); + + void dwr(const char *fmt, ...) + { + int saveerr; + va_list ap; + va_start(ap, fmt); + saveerr = errno; + dwr(-1, fmt, ap); + errno = saveerr; + va_end(ap); + } + + void dwr(int pid, const char *fmt, ...) +#endif +#ifdef NETCON_INTERCEPT + void dwr(const char *fmt, ...) +#endif +{ + va_list ap; + int saveerr; + char timestring[20]; + time_t timestamp; + + timestamp = time(NULL); + strftime(timestring, sizeof(timestring), "%H:%M:%S", localtime(×tamp)); + + if(logfile) + fprintf(logfile, "%s ", timestring); + fprintf(stderr, "%s ", timestring); + +#ifdef NETCON_SERVICE + if(ns != NULL) + { + size_t num_intercepts = ns->intercepts.size(); + size_t num_connections = ns->connections.size(); + if(logfile) + fprintf(logfile, "[i/c/tid=%3lu|%3lu|%7d]", num_intercepts, num_connections, pid); + fprintf(stderr, "[i/c/tid=%3lu|%3lu|%7d]", num_intercepts, num_connections, pid); + } + else { + if(logfile) + fprintf(logfile, "[i/c/tid=%3d|%3d|%7d]", 0, 0, -1); + fprintf(stderr, "[i/c/tid=%3d|%3d|%7d]", 0, 0, -1); + } + +#endif + +#ifdef NETCON_INTERCEPT + //pthread_mutex_lock(&loglock); + int pid = getpid(); + if(logfile) + fprintf(logfile, "[tid=%7d]", pid); + fprintf(stderr, "[tid=%7d]", pid); + //pthread_mutex_unlock(&loglock); +#endif + + if(logfile) + fputs(" ", logfile); + fputs(" ", stderr); + + /* logfile */ + va_start(ap, fmt); + saveerr = errno; + if(logfile){ + vfprintf(logfile, fmt, ap); + fflush(logfile); + } + va_end(ap); + + /* console */ + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + fflush(stderr); + errno = saveerr; + va_end(ap); +} |