Updated README, fixed node.js test bug

This commit is contained in:
Joseph Henry 2015-11-23 05:59:05 -08:00
parent 8b9b593256
commit b83aefcf8f
6 changed files with 468 additions and 96 deletions

418
netcon/.depend Normal file
View File

@ -0,0 +1,418 @@
mem.o: ../ext/lwip/src/core/mem.c ../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h
memp.o: ../ext/lwip/src/core/memp.c ../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h ../ext/lwip/src/include/lwip/memp.h \
../ext/lwip/src/include/lwip/memp_std.h \
../ext/lwip/src/include/lwip/mem.h ../ext/lwip/src/include/lwip/pbuf.h \
../ext/lwip/src/include/lwip/err.h ../ext/lwip/src/include/lwip/udp.h \
../ext/lwip/src/include/lwip/netif.h \
../ext/lwip/src/include/ipv4/lwip/ip_addr.h \
../ext/lwip/src/include/lwip/def.h ../ext/lwip/src/include/lwip/ip.h \
../ext/lwip/src/include/lwip/raw.h \
../ext/lwip/src/include/lwip/tcp_impl.h \
../ext/lwip/src/include/lwip/tcp.h ../ext/lwip/src/include/lwip/mem.h \
../ext/lwip/src/include/ipv4/lwip/icmp.h \
../ext/lwip/src/include/ipv4/lwip/igmp.h \
../ext/lwip/src/include/lwip/api.h \
../ext/lwip/src/include/lwip/api_msg.h \
../ext/lwip/src/include/lwip/tcpip.h ../ext/lwip/src/include/lwip/sys.h \
../ext/lwip/src/include/lwip/timers.h \
../ext/lwip/src/include/lwip/stats.h \
../ext/lwip/src/include/netif/etharp.h \
../ext/lwip/src/include/ipv4/lwip/ip_frag.h \
../ext/lwip/src/include/lwip/snmp_structs.h \
../ext/lwip/src/include/lwip/snmp_msg.h \
../ext/lwip/src/include/lwip/snmp.h ../ext/lwip/src/include/lwip/dns.h \
../ext/lwip/src/include/netif/ppp_oe.h
netif.o: ../ext/lwip/src/core/netif.c ../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h ../ext/lwip/src/include/lwip/def.h \
../ext/lwip/src/include/ipv4/lwip/ip_addr.h \
../ext/lwip/src/include/lwip/netif.h ../ext/lwip/src/include/lwip/err.h \
../ext/lwip/src/include/lwip/pbuf.h \
../ext/lwip/src/include/lwip/tcp_impl.h \
../ext/lwip/src/include/lwip/tcp.h ../ext/lwip/src/include/lwip/mem.h \
../ext/lwip/src/include/lwip/ip.h \
../ext/lwip/src/include/ipv4/lwip/icmp.h \
../ext/lwip/src/include/lwip/snmp.h \
../ext/lwip/src/include/ipv4/lwip/igmp.h \
../ext/lwip/src/include/netif/etharp.h \
../ext/lwip/src/include/lwip/stats.h ../ext/lwip/src/include/lwip/memp.h \
../ext/lwip/src/include/lwip/memp_std.h \
../ext/lwip/src/include/lwip/mem.h
pbuf.o: ../ext/lwip/src/core/pbuf.c ../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h ../ext/lwip/src/include/lwip/stats.h \
../ext/lwip/src/include/lwip/mem.h ../ext/lwip/src/include/lwip/memp.h \
../ext/lwip/src/include/lwip/memp_std.h \
../ext/lwip/src/include/lwip/mem.h ../ext/lwip/src/include/lwip/def.h \
../ext/lwip/src/include/lwip/pbuf.h ../ext/lwip/src/include/lwip/err.h \
../ext/lwip/src/include/lwip/sys.h ../ext/lwip/src/include/arch/perf.h \
../ext/lwip/src/include/lwip/tcp_impl.h \
../ext/lwip/src/include/lwip/tcp.h ../ext/lwip/src/include/lwip/ip.h \
../ext/lwip/src/include/ipv4/lwip/ip_addr.h \
../ext/lwip/src/include/lwip/netif.h \
../ext/lwip/src/include/ipv4/lwip/icmp.h
raw.o: ../ext/lwip/src/core/raw.c ../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h ../ext/lwip/src/include/lwip/def.h \
../ext/lwip/src/include/lwip/memp.h \
../ext/lwip/src/include/lwip/memp_std.h \
../ext/lwip/src/include/lwip/mem.h \
../ext/lwip/src/include/ipv4/lwip/ip_addr.h \
../ext/lwip/src/include/lwip/netif.h ../ext/lwip/src/include/lwip/err.h \
../ext/lwip/src/include/lwip/pbuf.h ../ext/lwip/src/include/lwip/raw.h \
../ext/lwip/src/include/lwip/ip.h ../ext/lwip/src/include/lwip/stats.h \
../ext/lwip/src/include/lwip/mem.h ../ext/lwip/src/include/arch/perf.h
stats.o: ../ext/lwip/src/core/stats.c ../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h
sys.o: ../ext/lwip/src/core/sys.c ../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h ../ext/lwip/src/include/lwip/sys.h
tcp.o: ../ext/lwip/src/core/tcp.c ../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h ../ext/lwip/src/include/lwip/def.h \
../ext/lwip/src/include/lwip/mem.h ../ext/lwip/src/include/lwip/memp.h \
../ext/lwip/src/include/lwip/memp_std.h \
../ext/lwip/src/include/lwip/mem.h ../ext/lwip/src/include/lwip/snmp.h \
../ext/lwip/src/include/ipv4/lwip/ip_addr.h \
../ext/lwip/src/include/lwip/tcp.h ../ext/lwip/src/include/lwip/pbuf.h \
../ext/lwip/src/include/lwip/err.h ../ext/lwip/src/include/lwip/ip.h \
../ext/lwip/src/include/lwip/netif.h \
../ext/lwip/src/include/ipv4/lwip/icmp.h \
../ext/lwip/src/include/lwip/tcp_impl.h \
../ext/lwip/src/include/lwip/stats.h
tcp_in.o: ../ext/lwip/src/core/tcp_in.c \
../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h \
../ext/lwip/src/include/lwip/tcp_impl.h \
../ext/lwip/src/include/lwip/tcp.h ../ext/lwip/src/include/lwip/mem.h \
../ext/lwip/src/include/lwip/pbuf.h ../ext/lwip/src/include/lwip/err.h \
../ext/lwip/src/include/lwip/ip.h ../ext/lwip/src/include/lwip/def.h \
../ext/lwip/src/include/ipv4/lwip/ip_addr.h \
../ext/lwip/src/include/lwip/netif.h \
../ext/lwip/src/include/ipv4/lwip/icmp.h \
../ext/lwip/src/include/lwip/memp.h \
../ext/lwip/src/include/lwip/memp_std.h \
../ext/lwip/src/include/lwip/mem.h \
../ext/lwip/src/include/ipv4/lwip/inet_chksum.h \
../ext/lwip/src/include/lwip/stats.h ../ext/lwip/src/include/lwip/snmp.h \
../ext/lwip/src/include/arch/perf.h
tcp_out.o: ../ext/lwip/src/core/tcp_out.c \
../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h \
../ext/lwip/src/include/lwip/tcp_impl.h \
../ext/lwip/src/include/lwip/tcp.h ../ext/lwip/src/include/lwip/mem.h \
../ext/lwip/src/include/lwip/pbuf.h ../ext/lwip/src/include/lwip/err.h \
../ext/lwip/src/include/lwip/ip.h ../ext/lwip/src/include/lwip/def.h \
../ext/lwip/src/include/ipv4/lwip/ip_addr.h \
../ext/lwip/src/include/lwip/netif.h \
../ext/lwip/src/include/ipv4/lwip/icmp.h \
../ext/lwip/src/include/lwip/memp.h \
../ext/lwip/src/include/lwip/memp_std.h \
../ext/lwip/src/include/lwip/mem.h \
../ext/lwip/src/include/ipv4/lwip/inet_chksum.h \
../ext/lwip/src/include/lwip/stats.h ../ext/lwip/src/include/lwip/snmp.h
udp.o: ../ext/lwip/src/core/udp.c ../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h ../ext/lwip/src/include/lwip/udp.h \
../ext/lwip/src/include/lwip/pbuf.h ../ext/lwip/src/include/lwip/err.h \
../ext/lwip/src/include/lwip/netif.h \
../ext/lwip/src/include/ipv4/lwip/ip_addr.h \
../ext/lwip/src/include/lwip/def.h ../ext/lwip/src/include/lwip/ip.h \
../ext/lwip/src/include/lwip/memp.h \
../ext/lwip/src/include/lwip/memp_std.h \
../ext/lwip/src/include/lwip/mem.h \
../ext/lwip/src/include/ipv4/lwip/inet_chksum.h \
../ext/lwip/src/include/ipv4/lwip/icmp.h \
../ext/lwip/src/include/lwip/stats.h ../ext/lwip/src/include/lwip/mem.h \
../ext/lwip/src/include/lwip/snmp.h ../ext/lwip/src/include/arch/perf.h \
../ext/lwip/src/include/lwip/dhcp.h
dhcp.o: ../ext/lwip/src/core/dhcp.c ../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h
init.o: ../ext/lwip/src/core/init.c ../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h ../ext/lwip/src/include/lwip/init.h \
../ext/lwip/src/include/lwip/stats.h ../ext/lwip/src/include/lwip/mem.h \
../ext/lwip/src/include/lwip/memp.h \
../ext/lwip/src/include/lwip/memp_std.h \
../ext/lwip/src/include/lwip/mem.h ../ext/lwip/src/include/lwip/sys.h \
../ext/lwip/src/include/lwip/pbuf.h ../ext/lwip/src/include/lwip/err.h \
../ext/lwip/src/include/lwip/netif.h \
../ext/lwip/src/include/ipv4/lwip/ip_addr.h \
../ext/lwip/src/include/lwip/def.h \
../ext/lwip/src/include/lwip/sockets.h ../ext/lwip/src/include/lwip/ip.h \
../ext/lwip/src/include/lwip/raw.h ../ext/lwip/src/include/lwip/udp.h \
../ext/lwip/src/include/lwip/tcp_impl.h \
../ext/lwip/src/include/lwip/tcp.h \
../ext/lwip/src/include/ipv4/lwip/icmp.h \
../ext/lwip/src/include/lwip/snmp_msg.h \
../ext/lwip/src/include/lwip/snmp.h \
../ext/lwip/src/include/lwip/snmp_structs.h \
../ext/lwip/src/include/ipv4/lwip/autoip.h \
../ext/lwip/src/include/ipv4/lwip/igmp.h \
../ext/lwip/src/include/lwip/dns.h ../ext/lwip/src/include/lwip/timers.h \
../ext/lwip/src/include/netif/etharp.h \
../ext/lwip/src/include/lwip/api.h
timers.o: ../ext/lwip/src/core/timers.c \
../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h ../ext/lwip/src/include/lwip/timers.h \
../ext/lwip/src/include/lwip/tcp_impl.h \
../ext/lwip/src/include/lwip/tcp.h ../ext/lwip/src/include/lwip/mem.h \
../ext/lwip/src/include/lwip/pbuf.h ../ext/lwip/src/include/lwip/err.h \
../ext/lwip/src/include/lwip/ip.h ../ext/lwip/src/include/lwip/def.h \
../ext/lwip/src/include/ipv4/lwip/ip_addr.h \
../ext/lwip/src/include/lwip/netif.h \
../ext/lwip/src/include/ipv4/lwip/icmp.h
def.o: ../ext/lwip/src/core/def.c ../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h ../ext/lwip/src/include/lwip/def.h
ip_frag.o: ../ext/lwip/src/core/ipv4/ip_frag.c \
../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h \
../ext/lwip/src/include/ipv4/lwip/ip_frag.h \
../ext/lwip/src/include/lwip/err.h ../ext/lwip/src/include/lwip/pbuf.h \
../ext/lwip/src/include/lwip/netif.h \
../ext/lwip/src/include/ipv4/lwip/ip_addr.h \
../ext/lwip/src/include/lwip/def.h ../ext/lwip/src/include/lwip/ip.h \
../ext/lwip/src/include/ipv4/lwip/inet_chksum.h \
../ext/lwip/src/include/lwip/snmp.h ../ext/lwip/src/include/lwip/stats.h \
../ext/lwip/src/include/lwip/mem.h ../ext/lwip/src/include/lwip/memp.h \
../ext/lwip/src/include/lwip/memp_std.h \
../ext/lwip/src/include/lwip/mem.h \
../ext/lwip/src/include/ipv4/lwip/icmp.h
inet.o: ../ext/lwip/src/core/ipv4/inet.c \
../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h \
../ext/lwip/src/include/ipv4/lwip/inet.h \
../ext/lwip/src/include/lwip/def.h \
../ext/lwip/src/include/ipv4/lwip/ip_addr.h
ip_addr.o: ../ext/lwip/src/core/ipv4/ip_addr.c \
../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h \
../ext/lwip/src/include/ipv4/lwip/ip_addr.h \
../ext/lwip/src/include/lwip/def.h ../ext/lwip/src/include/lwip/netif.h \
../ext/lwip/src/include/lwip/err.h ../ext/lwip/src/include/lwip/pbuf.h
igmp.o: ../ext/lwip/src/core/ipv4/igmp.c \
../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h
ip.o: ../ext/lwip/src/core/ipv4/ip.c ../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h ../ext/lwip/src/include/lwip/ip.h \
../ext/lwip/src/include/lwip/def.h ../ext/lwip/src/include/lwip/pbuf.h \
../ext/lwip/src/include/lwip/err.h \
../ext/lwip/src/include/ipv4/lwip/ip_addr.h \
../ext/lwip/src/include/lwip/netif.h ../ext/lwip/src/include/lwip/mem.h \
../ext/lwip/src/include/ipv4/lwip/ip_frag.h \
../ext/lwip/src/include/ipv4/lwip/inet_chksum.h \
../ext/lwip/src/include/ipv4/lwip/icmp.h \
../ext/lwip/src/include/ipv4/lwip/igmp.h \
../ext/lwip/src/include/lwip/raw.h ../ext/lwip/src/include/lwip/udp.h \
../ext/lwip/src/include/lwip/tcp_impl.h \
../ext/lwip/src/include/lwip/tcp.h ../ext/lwip/src/include/lwip/snmp.h \
../ext/lwip/src/include/lwip/dhcp.h \
../ext/lwip/src/include/ipv4/lwip/autoip.h \
../ext/lwip/src/include/lwip/stats.h ../ext/lwip/src/include/lwip/memp.h \
../ext/lwip/src/include/lwip/memp_std.h \
../ext/lwip/src/include/lwip/mem.h ../ext/lwip/src/include/arch/perf.h
autoip.o: ../ext/lwip/src/core/ipv4/autoip.c \
../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h
inet_chksum.o: ../ext/lwip/src/core/ipv4/inet_chksum.c \
../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h \
../ext/lwip/src/include/ipv4/lwip/inet_chksum.h \
../ext/lwip/src/include/lwip/pbuf.h ../ext/lwip/src/include/lwip/err.h \
../ext/lwip/src/include/ipv4/lwip/ip_addr.h \
../ext/lwip/src/include/lwip/def.h
icmp.o: ../ext/lwip/src/core/ipv4/icmp.c \
../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h \
../ext/lwip/src/include/ipv4/lwip/icmp.h \
../ext/lwip/src/include/lwip/pbuf.h ../ext/lwip/src/include/lwip/err.h \
../ext/lwip/src/include/ipv4/lwip/ip_addr.h \
../ext/lwip/src/include/lwip/def.h ../ext/lwip/src/include/lwip/netif.h \
../ext/lwip/src/include/ipv4/lwip/inet_chksum.h \
../ext/lwip/src/include/lwip/ip.h ../ext/lwip/src/include/lwip/stats.h \
../ext/lwip/src/include/lwip/mem.h ../ext/lwip/src/include/lwip/memp.h \
../ext/lwip/src/include/lwip/memp_std.h \
../ext/lwip/src/include/lwip/mem.h ../ext/lwip/src/include/lwip/snmp.h
asn1_dec.o: ../ext/lwip/src/core/snmp/asn1_dec.c \
../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h
asn1_enc.o: ../ext/lwip/src/core/snmp/asn1_enc.c \
../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h
mib2.o: ../ext/lwip/src/core/snmp/mib2.c \
../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h
mib_structs.o: ../ext/lwip/src/core/snmp/mib_structs.c \
../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h
msg_in.o: ../ext/lwip/src/core/snmp/msg_in.c \
../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h
msg_out.o: ../ext/lwip/src/core/snmp/msg_out.c \
../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h
api_lib.o: ../ext/lwip/src/api/api_lib.c \
../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h
api_msg.o: ../ext/lwip/src/api/api_msg.c \
../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h
tcpip.o: ../ext/lwip/src/api/tcpip.c ../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h
err.o: ../ext/lwip/src/api/err.c ../ext/lwip/src/include/lwip/err.h \
../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h
sockets.o: ../ext/lwip/src/api/sockets.c \
../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h
netbuf.o: ../ext/lwip/src/api/netbuf.c ../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h
netdb.o: ../ext/lwip/src/api/netdb.c ../ext/lwip/src/include/lwip/netdb.h \
../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h
etharp.o: ../ext/lwip/src/netif/etharp.c \
../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h \
../ext/lwip/src/include/ipv4/lwip/ip_addr.h \
../ext/lwip/src/include/lwip/def.h ../ext/lwip/src/include/lwip/ip.h \
../ext/lwip/src/include/lwip/pbuf.h ../ext/lwip/src/include/lwip/err.h \
../ext/lwip/src/include/lwip/netif.h \
../ext/lwip/src/include/lwip/stats.h ../ext/lwip/src/include/lwip/mem.h \
../ext/lwip/src/include/lwip/memp.h \
../ext/lwip/src/include/lwip/memp_std.h \
../ext/lwip/src/include/lwip/mem.h ../ext/lwip/src/include/lwip/snmp.h \
../ext/lwip/src/include/lwip/dhcp.h \
../ext/lwip/src/include/ipv4/lwip/autoip.h \
../ext/lwip/src/include/netif/etharp.h
slipif.o: ../ext/lwip/src/netif/slipif.c \
../ext/lwip/src/include/netif/slipif.h \
../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h ../ext/lwip/src/include/lwip/netif.h \
../ext/lwip/src/include/lwip/err.h \
../ext/lwip/src/include/ipv4/lwip/ip_addr.h \
../ext/lwip/src/include/lwip/def.h ../ext/lwip/src/include/lwip/pbuf.h
auth.o: ../ext/lwip/src/netif/ppp/auth.c \
../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h
chap.o: ../ext/lwip/src/netif/ppp/chap.c \
../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h
chpms.o: ../ext/lwip/src/netif/ppp/chpms.c \
../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h
fsm.o: ../ext/lwip/src/netif/ppp/fsm.c ../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h
ipcp.o: ../ext/lwip/src/netif/ppp/ipcp.c \
../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h
lcp.o: ../ext/lwip/src/netif/ppp/lcp.c ../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h
magic.o: ../ext/lwip/src/netif/ppp/magic.c \
../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h
md5.o: ../ext/lwip/src/netif/ppp/md5.c ../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h
pap.o: ../ext/lwip/src/netif/ppp/pap.c ../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h
ppp.o: ../ext/lwip/src/netif/ppp/ppp.c ../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h
randm.o: ../ext/lwip/src/netif/ppp/randm.c \
../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h
vj.o: ../ext/lwip/src/netif/ppp/vj.c ../ext/lwip/src/include/lwip/opt.h \
../ext/lwip/src/include/../../../lwipopts.h \
../ext/lwip/src/include/lwip/debug.h ../ext/lwip/src/include/lwip/arch.h \
../ext/lwip/src/include/arch/cc.h

View File

@ -269,20 +269,12 @@ int init_service_connection()
memset(&addr, 0, sizeof(addr)); memset(&addr, 0, sizeof(addr));
addr.sun_family = AF_UNIX; addr.sun_family = AF_UNIX;
strncpy(addr.sun_path, af_sock_name, sizeof(addr.sun_path)-1); strncpy(addr.sun_path, af_sock_name, sizeof(addr.sun_path)-1);
dwr(MSG_DEBUG, "init(): pre-realsocket\n");
if ( (tfd = realsocket(AF_UNIX, SOCK_STREAM, 0)) == -1) { if ( (tfd = realsocket(AF_UNIX, SOCK_STREAM, 0)) == -1) {
perror("socket error"); perror("socket error");
exit(-1); exit(-1);
} }
dwr(MSG_DEBUG, "init(): post-realsocket, conn_err = %d, attempts = %d\n", conn_err, attempts);
while(conn_err < 0 && attempts < SERVICE_CONNECT_ATTEMPTS) { while(conn_err < 0 && attempts < SERVICE_CONNECT_ATTEMPTS) {
dwr(MSG_DEBUG, "init(): Attempting!\n");
conn_err = realconnect(tfd, (struct sockaddr*)&addr, sizeof(addr)); conn_err = realconnect(tfd, (struct sockaddr*)&addr, sizeof(addr));
dwr(MSG_DEBUG, "init(): post-realconnect\n");
if(conn_err < 0) { if(conn_err < 0) {
dwr(MSG_DEBUG,"re-attempting connection in %ds\n", 1+attempts); dwr(MSG_DEBUG,"re-attempting connection in %ds\n", 1+attempts);
sleep(1); sleep(1);
@ -399,7 +391,7 @@ int setsockopt(SETSOCKOPT_SIG)
dwr(MSG_ERROR, "setsockopt(): SYMBOL NOT FOUND.\n"); dwr(MSG_ERROR, "setsockopt(): SYMBOL NOT FOUND.\n");
return -1; return -1;
} }
dwr(MSG_DEBUG,"\nsetsockopt(%d)\n", socket); dwr(MSG_DEBUG,"setsockopt(%d)\n", socket);
/* /*
if(is_mapped_to_service(socket) < 0) { // First, check if the service manages this if(is_mapped_to_service(socket) < 0) { // First, check if the service manages this
return realsetsockopt(socket, level, option_name, option_value, option_len); return realsetsockopt(socket, level, option_name, option_value, option_len);
@ -434,7 +426,7 @@ int getsockopt(GETSOCKOPT_SIG)
dwr(MSG_ERROR, "getsockopt(): SYMBOL NOT FOUND.\n"); dwr(MSG_ERROR, "getsockopt(): SYMBOL NOT FOUND.\n");
return -1; return -1;
} }
dwr(MSG_DEBUG,"\ngetsockopt(%d)\n", sockfd); dwr(MSG_DEBUG,"getsockopt(%d)\n", sockfd);
/* /*
if(is_mapped_to_service(sockfd) < 0) { // First, check if the service manages this if(is_mapped_to_service(sockfd) < 0) { // First, check if the service manages this
return realgetsockopt(sockfd, level, optname, optval, optlen); return realgetsockopt(sockfd, level, optname, optval, optlen);
@ -468,26 +460,26 @@ int socket(SOCKET_SIG)
dwr(MSG_ERROR, "socket(): SYMBOL NOT FOUND.\n"); dwr(MSG_ERROR, "socket(): SYMBOL NOT FOUND.\n");
return -1; return -1;
} }
dwr(MSG_DEBUG,"\nsocket():\n"); dwr(MSG_DEBUG,"socket():\n");
int err; int err;
#ifdef CHECKS #ifdef CHECKS
/* Check that type makes sense */ /* Check that type makes sense */
int flags = socket_type & ~SOCK_TYPE_MASK; int flags = socket_type & ~SOCK_TYPE_MASK;
if (flags & ~(SOCK_CLOEXEC | SOCK_NONBLOCK)) { if (flags & ~(SOCK_CLOEXEC | SOCK_NONBLOCK)) {
errno = EINVAL; errno = EINVAL;
handle_error("socket1", "", -1); handle_error("socket", "", -1);
return -1; return -1;
} }
socket_type &= SOCK_TYPE_MASK; socket_type &= SOCK_TYPE_MASK;
/* Check protocol is in range */ /* Check protocol is in range */
if (socket_family < 0 || socket_family >= NPROTO){ if (socket_family < 0 || socket_family >= NPROTO){
errno = EAFNOSUPPORT; errno = EAFNOSUPPORT;
handle_error("socket2", "", -1); handle_error("socket", "", -1);
return -1; return -1;
} }
if (socket_type < 0 || socket_type >= SOCK_MAX) { if (socket_type < 0 || socket_type >= SOCK_MAX) {
errno = EINVAL; errno = EINVAL;
handle_error("socket3", "", -1); handle_error("socket", "", -1);
return -1; return -1;
} }
/* Check that we haven't hit the soft-limit file descriptors allowed */ /* Check that we haven't hit the soft-limit file descriptors allowed */
@ -505,7 +497,7 @@ int socket(SOCKET_SIG)
fdret_sock = !is_initialized ? init_service_connection() : fdret_sock; fdret_sock = !is_initialized ? init_service_connection() : fdret_sock;
if(fdret_sock < 0) { if(fdret_sock < 0) {
dwr(MSG_DEBUG,"BAD service connection. exiting.\n"); dwr(MSG_DEBUG,"BAD service connection. exiting.\n");
handle_error("socket4", "", -1); handle_error("socket", "", -1);
exit(-1); exit(-1);
} }
if(socket_family == AF_LOCAL if(socket_family == AF_LOCAL
@ -513,7 +505,7 @@ int socket(SOCKET_SIG)
|| socket_family == AF_UNIX) { || socket_family == AF_UNIX) {
int err = realsocket(socket_family, socket_type, protocol); int err = realsocket(socket_family, socket_type, protocol);
dwr(MSG_DEBUG,"realsocket, err = %d\n", err); dwr(MSG_DEBUG,"realsocket, err = %d\n", err);
handle_error("socket5", "", err); handle_error("socket", "", err);
return err; return err;
} }
/* Assemble and send RPC */ /* Assemble and send RPC */
@ -543,14 +535,14 @@ int socket(SOCKET_SIG)
send_command(fdret_sock, cmd); send_command(fdret_sock, cmd);
pthread_mutex_unlock(&lock); pthread_mutex_unlock(&lock);
errno = ERR_OK; /* OK */ errno = ERR_OK; /* OK */
handle_error("socket6", "", newfd); handle_error("socket", "", newfd);
return newfd; return newfd;
} }
else { /* Try to read retval+errno since we RXed a bad fd */ else { /* Try to read retval+errno since we RXed a bad fd */
dwr(MSG_DEBUG,"Error, service sent bad fd.\n"); dwr(MSG_DEBUG,"Error, service sent bad fd.\n");
err = get_retval(); err = get_retval();
pthread_mutex_unlock(&lock); pthread_mutex_unlock(&lock);
handle_error("socket7", "", -1); handle_error("socket", "", -1);
return err; return err;
} }
@ -559,7 +551,7 @@ int socket(SOCKET_SIG)
dwr(MSG_DEBUG,"Error while receiving new FD.\n"); dwr(MSG_DEBUG,"Error while receiving new FD.\n");
err = get_retval(); err = get_retval();
pthread_mutex_unlock(&lock); pthread_mutex_unlock(&lock);
handle_error("socket8", "", -1); handle_error("socket", "", -1);
return err; return err;
} }
} }
@ -576,7 +568,7 @@ int connect(CONNECT_SIG)
dwr(MSG_ERROR, "connect(): SYMBOL NOT FOUND.\n"); dwr(MSG_ERROR, "connect(): SYMBOL NOT FOUND.\n");
return -1; return -1;
} }
dwr(MSG_DEBUG,"\nconnect(%d):\n", __fd); dwr(MSG_DEBUG,"connect(%d):\n", __fd);
/* print_addr(__addr); */ /* print_addr(__addr); */
struct sockaddr_in *connaddr; struct sockaddr_in *connaddr;
connaddr = (struct sockaddr_in *) __addr; connaddr = (struct sockaddr_in *) __addr;
@ -677,7 +669,7 @@ int bind(BIND_SIG)
dwr(MSG_ERROR, "bind(): SYMBOL NOT FOUND.\n"); dwr(MSG_ERROR, "bind(): SYMBOL NOT FOUND.\n");
return -1; return -1;
} }
dwr(MSG_DEBUG,"\nbind(%d):\n", sockfd); dwr(MSG_DEBUG,"bind(%d):\n", sockfd);
/* print_addr(addr); */ /* print_addr(addr); */
#ifdef CHECKS #ifdef CHECKS
/* Check that this is a valid fd */ /* Check that this is a valid fd */
@ -743,7 +735,7 @@ int accept4(ACCEPT4_SIG)
dwr(MSG_ERROR, "accept4(): SYMBOL NOT FOUND.\n"); dwr(MSG_ERROR, "accept4(): SYMBOL NOT FOUND.\n");
return -1; return -1;
} }
dwr(MSG_DEBUG,"\naccept4(%d):\n", sockfd); dwr(MSG_DEBUG,"accept4(%d):\n", sockfd);
#ifdef CHECKS #ifdef CHECKS
if (flags & ~(SOCK_CLOEXEC | SOCK_NONBLOCK)) { if (flags & ~(SOCK_CLOEXEC | SOCK_NONBLOCK)) {
errno = EINVAL; errno = EINVAL;
@ -774,7 +766,7 @@ int accept(ACCEPT_SIG)
dwr(MSG_ERROR, "accept(): SYMBOL NOT FOUND.\n"); dwr(MSG_ERROR, "accept(): SYMBOL NOT FOUND.\n");
return -1; return -1;
} }
dwr(MSG_DEBUG,"\naccept(%d):\n", sockfd); dwr(MSG_DEBUG,"accept(%d):\n", sockfd);
#ifdef CHECKS #ifdef CHECKS
/* Check that this is a valid fd */ /* Check that this is a valid fd */
if(fcntl(sockfd, F_GETFD) < 0) { if(fcntl(sockfd, F_GETFD) < 0) {
@ -899,7 +891,7 @@ int listen(LISTEN_SIG)
dwr(MSG_ERROR, "listen(): SYMBOL NOT FOUND.\n"); dwr(MSG_ERROR, "listen(): SYMBOL NOT FOUND.\n");
return -1; return -1;
} }
dwr(MSG_DEBUG,"\nlisten(%d):\n", sockfd); dwr(MSG_DEBUG,"listen(%d):\n", sockfd);
int sock_type; int sock_type;
socklen_t sock_type_len = sizeof(sock_type); socklen_t sock_type_len = sizeof(sock_type);
@ -995,7 +987,7 @@ int close(CLOSE_SIG)
dwr(MSG_ERROR, "close(): SYMBOL NOT FOUND.\n"); dwr(MSG_ERROR, "close(): SYMBOL NOT FOUND.\n");
return -1; return -1;
} }
dwr(MSG_DEBUG,"close(%d)\n", fd); /* dwr(MSG_DEBUG,"close(%d)\n", fd); */
if(fd == fdret_sock) if(fd == fdret_sock)
return -1; /* TODO: Ignore request to shut down our rpc fd, this is *almost always* safe */ return -1; /* TODO: Ignore request to shut down our rpc fd, this is *almost always* safe */
if(fd != STDIN_FILENO && fd != STDOUT_FILENO && fd != STDERR_FILENO) if(fd != STDIN_FILENO && fd != STDOUT_FILENO && fd != STDERR_FILENO)

View File

@ -5,72 +5,49 @@ ZeroTier Network Containers
This system exists as a dynamically-linked library, and a service/IP-stack built into ZeroTier This system exists as a dynamically-linked library, and a service/IP-stack built into ZeroTier
If you care about the technicals,
The intercept is compiled as a shared library and installed in some user-accessible directory. When you want to intercept The intercept is compiled as a shared library and installed in some user-accessible directory. When you want to intercept
a user application you dynamically link the shared library to the application during runtime. When the application starts, the a user application you dynamically link the shared library to the application during runtime. When the application starts, the
intercept's global constructor is called which sets up a hidden pipe which is used to communicate remote procedure calls (RPC) to the host Netcon service running in the background. intercept's global constructor is called which sets up a hidden pipe which is used to communicate remote procedure calls (RPC) to the host Netcon service running in the background.
When an RPC for a socket() is received by the Netcon service from the harnessed application, the Netcon service will ask the lwIP stack for a new PCB structure (used to represent a connection), if the system permits its allocation, it will be passed to Netcon where a PCB/socket table entry will be created. The table is used for mapping [callbacks from lwIP] and [RPCs from the intercept] to the correct connections. When an RPC for a socket() is received by the Netcon service from the intercepted application, the Netcon service will ask the lwIP stack for a new PCB structure (used to represent a connection), if the system permits its allocation, it will be passed to Netcon where a PCB/socket table entry will be created. The table is used for mapping [callbacks from lwIP] and [RPCs from the intercept] to the correct connections.
Upon the first call to a intercept-overriden system call, a Unix-domain socket is opened between the Netcon service and the application's intercept. This socket provides us the ability to pass file descriptors of newly-created socketpairs to the intercept (used as the read/write buffer). More specifically, after the socketpair creation, one end is kept in a table entry in Netcon and one end is sent to the intercept. Upon the first call to a intercept-overriden system call, a Unix-domain socket is opened between the Netcon service and the application's intercept. This socket provides us the ability to pass file descriptors of newly-created socketpairs to the intercept (used as the read/write buffer). More specifically, after the socketpair creation, one end is kept in a table entry in Netcon and one end is sent to the intercept.
### Reading and Writing from application
When the application reads or writes data to a socket, the intercept will override the call and read/write from one end of the socketpair created for that specific connection. The Netcon service is continually polling the file descriptors for the opposite end of the socketpair. When an available event is detected (such as the presence of data on the buffer), Netcon will consult the routing table and determine which PCB should receive this new data. A call is then made to lwIP's tcp_write().
### How Netcon receives data ### How Netcon receives data
When data is received by lwIP, a callback in the Netcon service is called which then consults the internal routing table and maps the data to the correct socketpair. From here, it's up to the harnessed application to either poll() the opposite end of the socketpair, or read from it. No notification is sent to the intercept. When data is received by lwIP, a callback in the Netcon service is called which then consults the TCP connection list the data to the correct socketpair. From here, it's up to the harnessed application to either poll() the opposite end of the socketpair, or read from it. No notification is sent to the intercept.
### Building from Source (and Installing) ### Building from Source (and Installing)
Build library: Build library zerotier-intercept:
make lib make -f make-intercept.mk
Build service:
make service
Build test applications (linked with library):
make tests
Install: Install:
make install make -f make-intercept install
Build LWIP library:
make -f make-liblwip.mk
Run automated tests:
/netcon/docker-test/build.sh
/netcon/docker-test/test.sh
### Running ### Running
To start a service and automatically intercept an application: To intercept a specific application (requires an already running instance of Zerotier-One with Network Containers enabled):
./service my_app
Alternatively, to intercept a specific application (requires an already running service):
zerotier-intercept ./my_app
To start the Network Containers service:
./service
To monitor lwIP network I/O:
tcpdump -l -n -i tap0
Show what dynamic libraries are set for inclusion:
intercept show
Start example server (with harness):
intercept ./test_tx.o
Start example client (with intercept) to communicate with server:
intercept ./test_rx.o 127.0.0.1
zerotier-intercept my_app
### Testing ### Testing
@ -92,25 +69,19 @@ To run a simple RX/TX test:
Network Containers have been tested with the following: Network Containers have been tested with the following:
sshd [ WORKS as of 20151112] Long ~15-20s delay for client during connect sshd [ WORKS as of 20151112]
ssh [ WORKS as of 20151112] ssh [ WORKS as of 20151112]
sftp [ WORKS as of 20151022] sftp [ WORKS as of 20151022]
curl [ WORKS as of 20151021] curl [ WORKS as of 20151021]
apache (debug mode) [ WORKS as of 20150810] apache (debug mode) [ WORKS as of 20150810]
apache (prefork MPM) [ WORKS as of 20151112] (2.4.6-31.x86-64 on Centos 7), (2.4.16-1.x84-64 on F22), (2.4.17-3.x86-64 on F22) apache (prefork MPM) [ WORKS as of 20151123] (2.4.6-31.x86-64 on Centos 7), (2.4.16-1.x84-64 on F22), (2.4.17-3.x86-64 on F22)
nginx [BROKEN as of 20151022] 1.8.0-3 and 1.8.0-4 both suffer from lost intercept connections nginx [ WORKS as of 20151123] Broken on Centos 7, unreliable on Fedora 23
nodejs [ WORKS as of 20151021] nodejs [ WORKS as of 20151123]
java [ WORKS as of 20151010] java [ WORKS as of 20151010]
tomcat [ WORKS as of 2015xxxx]
thttpd [ WORKS as of 2015xxxx]
vsftpd [BROKEN as of 20151021] Server sends 500 when 220 is expected
mysql [BROKEN as of 20151021]
postresql [BROKEN as of 20151021]
MongoDB [ WORKS as of 20151028] MongoDB [ WORKS as of 20151028]
Redis-server [ WORKS as of 20151027] Redis-server [ WORKS as of 20151123]
pure-ftpd [BROKEN as of 20151021] Socket operation on non-socket
To Test: Future:
GET many different files via HTTP (web stress) GET many different files via HTTP (web stress)
LARGE continuous transfer (e.g. /dev/urandom all night) LARGE continuous transfer (e.g. /dev/urandom all night)
@ -118,6 +89,7 @@ To Test:
Simulate packet loss (can be done with iptables) Simulate packet loss (can be done with iptables)
Many parallel TCP transfers Many parallel TCP transfers
Multithreaded software (e.g. apache in thread mode) Multithreaded software (e.g. apache in thread mode)
UDP support
@ -155,17 +127,4 @@ To Test:
32/64-bit systems 32/64-bit systems
### Alpha Unaddressed bug log
- Possible CPU max-out during sshd kill or multiple ssh connect/disconnects
- sshd will enter an infinite accept loop maxing out CPU if service dies
### Speed Notes
http://lwip.100.n7.nabble.com/Performance-question-td4545.html
- 120-140Mbps, erroneous reports of 300-400 Mbps, claims linux stack is capable of 180Mbps

View File

@ -1,3 +0,0 @@
Test: nodejs server did NOT respond!
Test: nodejs server did NOT respond!
Test: nodejs server did NOT respond!

View File

@ -1,7 +1,7 @@
var http = require('http'); var http = require('http');
var server = http.createServer(function (request, response) { var server = http.createServer(function (request, response) {
response.writeHead(200, {"Content-Type": "text/plain"}); response.writeHead(200, {"Content-Type": "text/plain"});
response.end("Welcome to the machine!\n"); response.end("welcome to the machine!\n");
}); });
server.listen(8080); server.listen(8080);
console.log("Server running!"); console.log("Server running!");

View File

@ -1,5 +1,7 @@
#./build.sh #./build.sh
# Relative paths are used in each test script, hence the need to change directories
# httpd # httpd
cd httpd cd httpd
cd httpd-2.4.16-1.fc23.x86_64 cd httpd-2.4.16-1.fc23.x86_64
@ -28,5 +30,9 @@ cd redis-3.0.4-1.fc23.x86_64
./test.sh ./test.sh
cd .. cd ..
#node.js
cd nodejs-0.10.36-4.fc23
./test.sh
cd ..
cd .. cd ..