diff options
Diffstat (limited to 'netcon')
-rwxr-xr-x | netcon/intercept.c | 1 | ||||
-rwxr-xr-x | netcon/libintercept.so.1.0 | bin | 52880 -> 0 bytes | |||
-rw-r--r-- | netcon/make-intercept.mk | 29 | ||||
-rw-r--r-- | netcon/make-liblwip.mk | 106 | ||||
-rw-r--r-- | netcon/utils.c | 93 |
5 files changed, 135 insertions, 94 deletions
diff --git a/netcon/intercept.c b/netcon/intercept.c index 074f92d2..cd321044 100755 --- a/netcon/intercept.c +++ b/netcon/intercept.c @@ -72,7 +72,6 @@ char *progname = ""; #include "intercept.h" #include "common.h" #include "defs.h" -#include "utils.c" /* Global Declarations */ #ifdef USE_SOCKS_DNS diff --git a/netcon/libintercept.so.1.0 b/netcon/libintercept.so.1.0 Binary files differdeleted file mode 100755 index f315f777..00000000 --- a/netcon/libintercept.so.1.0 +++ /dev/null diff --git a/netcon/make-intercept.mk b/netcon/make-intercept.mk new file mode 100644 index 00000000..071fdda9 --- /dev/null +++ b/netcon/make-intercept.mk @@ -0,0 +1,29 @@ +SHCC=gcc + +# intercept-specific +intercept_CFLAGS = -c -fPIC -g -O2 -Wall -std=c99 -D_GNU_SOURCE -DNETCON_INTERCEPT +LIB_NAME = intercept +SHLIB_EXT=dylib +SHLIB_MAJOR = 1 +SHLIB_MINOR = 8 +COMMON = common +OBJS= intercept.o +SHLIB = ${LIB_NAME}.${SHLIB_EXT}.${SHLIB_MAJOR}.${SHLIB_MINOR} +SHLDFLAGS = -g -O2 -Wall -I. -nostdlib -shared +LIBS = -ldl -lc -lrt -lpthread + +lib: + ${SHCC} $(intercept_CFLAGS) -I. intercept.c -o intercept.o + ${SHCC} $(intercept_CFLAGS) -I. common.c -o common.o + ${SHCC} $(intercept_CFLAGS) -I. sendfd.c -o sendfd.o + ${SHCC} $(SHLDFLAGS) intercept.o common.o sendfd.o -o libintercept.so.1.0 $(LIBS) + +install: + cp libintercept.so.1.0 /lib/libintercept.so.1.0 + ln -sf /lib/libintercept.so.1.0 /lib/libintercept + /usr/bin/install -c netcon/intercept /usr/bin + +uninstall: + rm -r /lib/libintercept.so.1.0 + rm -r /lib/libintercept + rm -r /usr/bin/intercept diff --git a/netcon/make-liblwip.mk b/netcon/make-liblwip.mk new file mode 100644 index 00000000..9f16b483 --- /dev/null +++ b/netcon/make-liblwip.mk @@ -0,0 +1,106 @@ +# +# Copyright (c) 2001, 2002 Swedish Institute of Computer Science. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# 3. The name of the author may not be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT +# SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT +# OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +# OF SUCH DAMAGE. +# +# This file is part of the lwIP TCP/IP stack. +# +# Author: Adam Dunkels <adam@sics.se> +# + +CONTRIBDIR=../ext/contrib +LWIPARCH=$(CONTRIBDIR)/ports/unix + +#Set this to where you have the lwip core module checked out from CVS +#default assumes it's a dir named lwip at the same level as the contrib module +LWIPDIR=../ext/lwip/src + + +CCDEP=gcc +CC=gcc +CFLAGS=-O3 -g -Wall -DIPv4 -fPIC + +CFLAGS:=$(CFLAGS) \ + -I$(LWIPDIR)/include -I$(LWIPARCH)/include -I$(LWIPDIR)/include/ipv4 \ + -I$(LWIPDIR) -I. + + +# COREFILES, CORE4FILES: The minimum set of files needed for lwIP. +COREFILES=$(LWIPDIR)/core/mem.c $(LWIPDIR)/core/memp.c $(LWIPDIR)/core/netif.c \ + $(LWIPDIR)/core/pbuf.c $(LWIPDIR)/core/raw.c $(LWIPDIR)/core/stats.c \ + $(LWIPDIR)/core/sys.c $(LWIPDIR)/core/tcp.c $(LWIPDIR)/core/tcp_in.c \ + $(LWIPDIR)/core/tcp_out.c $(LWIPDIR)/core/udp.c $(LWIPDIR)/core/dhcp.c \ + $(LWIPDIR)/core/init.c $(LWIPDIR)/core/timers.c $(LWIPDIR)/core/def.c +CORE4FILES=$(wildcard $(LWIPDIR)/core/ipv4/*.c) $(LWIPDIR)/core/ipv4/inet.c \ + $(LWIPDIR)/core/ipv4/inet_chksum.c + +# SNMPFILES: Extra SNMPv1 agent +SNMPFILES=$(LWIPDIR)/core/snmp/asn1_dec.c $(LWIPDIR)/core/snmp/asn1_enc.c \ + $(LWIPDIR)/core/snmp/mib2.c $(LWIPDIR)/core/snmp/mib_structs.c \ + $(LWIPDIR)/core/snmp/msg_in.c $(LWIPDIR)/core/snmp/msg_out.c + +# APIFILES: The files which implement the sequential and socket APIs. +APIFILES=$(LWIPDIR)/api/api_lib.c $(LWIPDIR)/api/api_msg.c $(LWIPDIR)/api/tcpip.c \ + $(LWIPDIR)/api/err.c $(LWIPDIR)/api/sockets.c $(LWIPDIR)/api/netbuf.c $(LWIPDIR)/api/netdb.c + +# NETIFFILES: Files implementing various generic network interface functions.' +NETIFFILES=$(LWIPDIR)/netif/etharp.c $(LWIPDIR)/netif/slipif.c + +# NETIFFILES: Add PPP netif +NETIFFILES+=$(LWIPDIR)/netif/ppp/auth.c $(LWIPDIR)/netif/ppp/chap.c \ + $(LWIPDIR)/netif/ppp/chpms.c $(LWIPDIR)/netif/ppp/fsm.c \ + $(LWIPDIR)/netif/ppp/ipcp.c $(LWIPDIR)/netif/ppp/lcp.c \ + $(LWIPDIR)/netif/ppp/magic.c $(LWIPDIR)/netif/ppp/md5.c \ + $(LWIPDIR)/netif/ppp/pap.c $(LWIPDIR)/netif/ppp/ppp.c \ + $(LWIPDIR)/netif/ppp/randm.c $(LWIPDIR)/netif/ppp/vj.c + +# ARCHFILES: Architecture specific files. +ARCHFILES=$(wildcard $(LWIPARCH)/*.c $(LWIPARCH)tapif.c $(LWIPARCH)/netif/list.c $(LWIPARCH)/netif/tcpdump.c) + + +# LWIPFILES: All the above. +LWIPFILES=$(COREFILES) $(CORE4FILES) $(SNMPFILES) $(APIFILES) $(NETIFFILES) $(ARCHFILES) +LWIPFILESW=$(wildcard $(LWIPFILES)) +LWIPOBJS=$(notdir $(LWIPFILESW:.c=.o)) + +LWIPLIB=liblwip.so + +%.o: + $(CC) $(CFLAGS) -c $(<:.o=.c) + +all: $(LWIPLIB) +.PHONY: all + +clean: + rm -f *.o $(LWIPLIB) *.s .depend* *.core core + +depend dep: .depend + +include .depend + +$(LWIPLIB): $(LWIPOBJS) + $(CC) -g -nostartfiles -shared -o $@ $^ + +.depend: $(LWIPFILES) + $(CCDEP) $(CFLAGS) -MM $^ > .depend || rm -f .depend diff --git a/netcon/utils.c b/netcon/utils.c deleted file mode 100644 index 8192e10e..00000000 --- a/netcon/utils.c +++ /dev/null @@ -1,93 +0,0 @@ -/* - * 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/ - */ - -void get_path_from_pid(char* dest, int pid) -{ - char ppath[50]; - sprintf(ppath, "/proc/%d/exe", pid); - if (readlink (ppath, dest, 50) != -1){ - } -} - -void print_ip(int ip) -{ - unsigned char bytes[4]; - bytes[0] = ip & 0xFF; - bytes[1] = (ip >> 8) & 0xFF; - bytes[2] = (ip >> 16) & 0xFF; - bytes[3] = (ip >> 24) & 0xFF; - printf("%d.%d.%d.%d\n", bytes[0], bytes[1], bytes[2], bytes[3]); - //return buf; -} - - -/* --- */ - - -#ifdef NETCON_SERVICE -ip_addr_t convert_ip(struct sockaddr_in * addr) -{ - ip_addr_t conn_addr; - struct sockaddr_in *ipv4 = addr; - short a = ip4_addr1(&(ipv4->sin_addr)); - short b = ip4_addr2(&(ipv4->sin_addr)); - short c = ip4_addr3(&(ipv4->sin_addr)); - short d = ip4_addr4(&(ipv4->sin_addr)); - IP4_ADDR(&conn_addr, a,b,c,d); - return conn_addr; -} - -ip_addr_t ip_addr_sin(register struct sockaddr_in *sin) { - ip_addr_t ip; - *((struct sockaddr_in*) &ip) = *sin; - return ip; -} -#endif - - -/* --- */ - - -#ifdef NETCON_INTERCEPT - -typedef unsigned char u8_t; - -#define ip4_addr1(ipaddr) (((u8_t*)(ipaddr))[0]) -#define ip4_addr2(ipaddr) (((u8_t*)(ipaddr))[1]) -#define ip4_addr3(ipaddr) (((u8_t*)(ipaddr))[2]) -#define ip4_addr4(ipaddr) (((u8_t*)(ipaddr))[3]) - -int is_local(struct sockaddr_in* addr) -{ - struct sockaddr_in *ipv4 = addr; - short a = ip4_addr1(&(ipv4->sin_addr)); - short b = ip4_addr2(&(ipv4->sin_addr)); - short c = ip4_addr3(&(ipv4->sin_addr)); - short d = ip4_addr4(&(ipv4->sin_addr)); - return (a==127 && b == 0 && c == 0 && d == 1); -} -#endif |