44 changed files with 703 additions and 703 deletions
@ -1,418 +0,0 @@
|
||||
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 |
||||
@ -1,139 +0,0 @@
|
||||
ZeroTier Network Containers |
||||
====== |
||||
|
||||
### Functional Overview: |
||||
|
||||
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 |
||||
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. |
||||
|
||||
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. |
||||
|
||||
### Building from Source (and Installing) |
||||
|
||||
Build zerotier-intercept library: |
||||
|
||||
make -f make-intercept.mk |
||||
|
||||
Install: |
||||
|
||||
make -f make-intercept.mk install |
||||
|
||||
Build LWIP library: |
||||
|
||||
make -f make-liblwip.mk |
||||
|
||||
Run automated tests (from netcon/docker-test/ directory): |
||||
|
||||
./build.sh |
||||
./test.sh |
||||
|
||||
|
||||
|
||||
|
||||
### Running |
||||
|
||||
To intercept a specific application (requires an already running instance of Zerotier-One with Network Containers enabled): |
||||
|
||||
zerotier-intercept my_app |
||||
|
||||
|
||||
### Unit Tests |
||||
|
||||
To run unit tests: |
||||
|
||||
1) Set up your own network, use its network id as follows: |
||||
|
||||
2) Place a blank network config file in this directory (e.g. "e5cd7a9e1c5311ab.conf") |
||||
- This will be used to inform test-specific scripts what network to use for testing |
||||
|
||||
3) run build.sh |
||||
- Builds ZeroTier-One with Network Containers enabled |
||||
- Builds LWIP library |
||||
- Builds intercept library |
||||
- Copies all aformentioned files into unit test directory to be used for building docker files |
||||
|
||||
4) run test.sh |
||||
- Will execute each unit test's (test.sh) one at a time and populate _results/ |
||||
|
||||
|
||||
### Anatomy of a unit test |
||||
|
||||
A) Each unit test's test.sh will: |
||||
- temporarily copy all built files into local directory |
||||
- build test container |
||||
- build monitor container |
||||
- remove temporary files |
||||
- run each container and perform test and monitoring specified in netcon_entrypoint.sh and monitor_entrypoint.sh |
||||
|
||||
B) Results will be written to the 'netcon/docker-test/_results/' directory |
||||
- Results will be a combination of raw and formatted dumps to files whose names reflect the test performed |
||||
- In the event of failure, 'FAIL.' will be appended to the result file's name |
||||
- (e.g. FAIL.my_application_1.0.2.x86_64) |
||||
- In the event of success, 'OK.' will be appended |
||||
|
||||
|
||||
### Compatibility |
||||
|
||||
Network Containers have been tested with the following: |
||||
|
||||
sshd [ WORKS as of 20151112] |
||||
ssh [ WORKS as of 20151112] |
||||
sftp [ WORKS as of 20151022] |
||||
curl [ WORKS as of 20151021] |
||||
apache (debug mode) [ WORKS as of 20150810] |
||||
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 [ WORKS as of 20151123] Broken on Centos 7, unreliable on Fedora 23 |
||||
nodejs [ WORKS as of 20151123] |
||||
java [ WORKS as of 20151010] |
||||
MongoDB [ WORKS as of 20151028] |
||||
Redis-server [ WORKS as of 20151123] |
||||
|
||||
Future: |
||||
|
||||
GET many different files via HTTP (web stress) |
||||
LARGE continuous transfer (e.g. /dev/urandom all night) |
||||
Open and close many TCP connections constantly |
||||
Simulate packet loss (can be done with iptables) |
||||
Many parallel TCP transfers |
||||
Multithreaded software (e.g. apache in thread mode) |
||||
UDP support |
||||
|
||||
|
||||
|
||||
### Extended Version Notes |
||||
|
||||
20151028 Added MongoDB support: |
||||
|
||||
- Added logic (RPC_MAP_REQ) to check whether a given AF_LOCAL socket is mapped to anything |
||||
inside the service instance. |
||||
|
||||
20151027 Added Redis-server support: |
||||
|
||||
- Added extra logic to detect socket re-issuing and consequent service-side double mapping. |
||||
Redis appears to try to set its initial listen socket to IPV6 only, this currently fails. As |
||||
a result, Redis will close the socket and re-open it. The server will now test for closures |
||||
during mapping and will eliminate any mappings to broken pipes. |
||||
|
||||
20151021 Added Node.js support: |
||||
|
||||
- syscall(long number, ...) is now intercepted and re-directs the __NR_accept4 call to our intercepted accept4() function |
||||
|
||||
- accept() now returns -EAGAIN in the case that we cannot read a signal byte from the descriptor linked to the service. This |
||||
is because the uv__server_io() function in libuv used by Node.js looks for this return value upon failure, without it we |
||||
were observing an innfinite loop in the I/O polling code in libuv. |
||||
|
||||
- accept4() now correctly sets given flags for descriptor returned by accept() |
||||
|
||||
- setsockopt() was modified to return success on any call with the following conditions: |
||||
level == IPPROTO_TCP || (level == SOL_SOCKET && option_name == SO_KEEPALIVE) |
||||
This might be unnecessary or might need a better workaround |
||||
|
||||
- Careful attention should be given to how arguments are passed in the intercepted syscall() function, this differs for |
||||
32/64-bit systems |
||||
@ -0,0 +1,5 @@
|
||||
#!/bin/bash |
||||
# Delete all containers |
||||
docker rm $(docker ps -a -q) |
||||
# Delete all images |
||||
docker rmi $(docker images -q) |
||||
@ -0,0 +1,24 @@
|
||||
# ZT Network Containers Test Monitor |
||||
FROM fedora:23 |
||||
MAINTAINER https://www.zerotier.com/ |
||||
|
||||
EXPOSE 9993/udp |
||||
|
||||
# Add ZT files |
||||
RUN mkdir -p /var/lib/zerotier-one/networks.d |
||||
ADD monitor_identity.public /var/lib/zerotier-one/identity.public |
||||
ADD monitor_identity.secret /var/lib/zerotier-one/identity.secret |
||||
ADD *.conf /var/lib/zerotier-one/networks.d/ |
||||
ADD *.conf / |
||||
ADD *.name / |
||||
|
||||
# Install LWIP library used by service |
||||
ADD liblwip.so /var/lib/zerotier-one/liblwip.so |
||||
|
||||
ADD zerotier-one / |
||||
ADD zerotier-cli / |
||||
|
||||
# Start ZeroTier-One |
||||
ADD monitor_entrypoint.sh /monitor_entrypoint.sh |
||||
RUN chmod -v +x /monitor_entrypoint.sh |
||||
CMD ["./monitor_entrypoint.sh"] |
||||
@ -0,0 +1,80 @@
|
||||
#!/bin/bash |
||||
|
||||
export PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/ |
||||
|
||||
|
||||
# --- Test Parameters --- |
||||
test_namefile=$(ls *.name) |
||||
test_name="${test_namefile%.*}" # test network id |
||||
nwconf=$(ls *.conf) # blank test network config file |
||||
nwid="${nwconf%.*}" # test network id |
||||
netcon_wait_time=35 # wait for test container to come online |
||||
app_timeout_time=25 # app-specific timeout |
||||
file_path=/opt/results/ # test result output file path (fs shared between host and containers) |
||||
file_base="$test_name".txt # test result output file |
||||
fail=FAIL. # appended to result file in event of failure |
||||
ok=OK. # appended to result file in event of success |
||||
tmp_ext=.tmp # temporary filetype used for sharing test data between containers |
||||
address_file="$file_path$test_name"_addr"$tmp_ext" # file shared between host and containers for sharing address (optional) |
||||
bigfile_name=bigfile # large, random test transfer file |
||||
rx_md5sumfile="$file_path"rx_"$bigfile_name"_md5sum"$tmp_ext" |
||||
tx_md5sumfile="$file_path"tx_"$bigfile_name"_md5sum"$tmp_ext" |
||||
|
||||
|
||||
# --- Network Config --- |
||||
echo '*** ZeroTier Network Containers Test Monitor' |
||||
chown -R daemon /var/lib/zerotier-one |
||||
chgrp -R daemon /var/lib/zerotier-one |
||||
su daemon -s /bin/bash -c '/zerotier-one -d -U -p9993 >>/tmp/zerotier-one.out 2>&1' |
||||
virtip4="" |
||||
while [ -z "$virtip4" ]; do |
||||
sleep 0.2 |
||||
virtip4=`/zerotier-cli listnetworks | grep -F $nwid | cut -d ' ' -f 9 | sed 's/,/\n/g' | grep -F '.' | cut -d / -f 1` |
||||
done |
||||
echo '*** Starting Test...' |
||||
echo '*** Up and running at' $virtip4 ' on network: ' $nwid |
||||
echo '*** Sleeping for (' "$netcon_wait_time" 's ) while we wait for the Network Container to come online...' |
||||
sleep "$netcon_wait_time"s |
||||
ncvirtip=$(<$address_file) |
||||
|
||||
|
||||
# --- Test section --- |
||||
echo '*** Curling from intercepted server at' $ncvirtip |
||||
rm -rf "$file_path"*."$file_base" |
||||
touch "$bigfile_name" |
||||
|
||||
# Perform test |
||||
# curl --connect-timeout "$app_timeout_time" -v -o "$file_path$file_base" http://"$ncvirtip"/index.html |
||||
# Large transfer test |
||||
curl --connect-timeout "$app_timeout_time" -v -o "$bigfile_name" http://"$ncvirtip"/"$bigfile_name" |
||||
|
||||
# Check md5 |
||||
md5sum < "$bigfile_name" > "$rx_md5sumfile" |
||||
rx_md5sum=$(<$rx_md5sumfile) |
||||
tx_md5sum=$(<$tx_md5sumfile) |
||||
|
||||
echo '*** Comparing md5: ' "$rx_md5sum" ' and ' "$tx_md5sum" |
||||
|
||||
if [ "$rx_md5sum" != "$tx_md5sum" ]; |
||||
then |
||||
echo 'MD5 FAIL' |
||||
touch "$file_path$fail$test_name.txt" |
||||
printf 'Test: md5 sum did not match!\n' >> "$file_path$fail$test_name.txt" |
||||
else |
||||
echo 'MD5 OK' |
||||
touch "$file_path$ok$test_name.txt" |
||||
printf 'Test: md5 sum ok!\n' >> "$file_path$ok$test_name.txt" |
||||
cat "$rx_md5sumfile" >> "$file_path$ok$test_name.txt" |
||||
cat "$tx_md5sumfile" >> "$file_path$ok$test_name.txt" |
||||
fi |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,40 @@
|
||||
# ZT Network Containers Test |
||||
FROM ubuntu:14.04 |
||||
MAINTAINER https://www.zerotier.com/ |
||||
|
||||
RUN \ |
||||
sed -i 's/# \(.*multiverse$\)/\1/g' /etc/apt/sources.list && \ |
||||
apt-get update && \ |
||||
apt-get -y upgrade && \ |
||||
apt-get -y install apache2 |
||||
|
||||
EXPOSE 9993/udp 80/udp |
||||
|
||||
# Add ZT files |
||||
RUN mkdir -p /var/lib/zerotier-one/networks.d |
||||
ADD netcon_identity.public /var/lib/zerotier-one/identity.public |
||||
ADD netcon_identity.secret /var/lib/zerotier-one/identity.secret |
||||
ADD *.conf /var/lib/zerotier-one/networks.d/ |
||||
ADD *.conf / |
||||
ADD *.name / |
||||
|
||||
# Install LWIP library used by service |
||||
ADD liblwip.so /var/lib/zerotier-one/liblwip.so |
||||
|
||||
# Install syscall intercept library |
||||
ADD zerotier-intercept / |
||||
ADD libzerotierintercept.so / |
||||
RUN cp libzerotierintercept.so lib/libzerotierintercept.so |
||||
RUN ln -sf /lib/libzerotierintercept.so /lib/libzerotierintercept |
||||
RUN /usr/bin/install -c zerotier-intercept /usr/bin |
||||
|
||||
ADD zerotier-one / |
||||
ADD zerotier-cli / |
||||
ADD zerotier-netcon-service / |
||||
|
||||
# Install test scripts |
||||
ADD netcon_entrypoint.sh /netcon_entrypoint.sh |
||||
RUN chmod -v +x /netcon_entrypoint.sh |
||||
|
||||
# Start ZeroTier-One |
||||
CMD ["./netcon_entrypoint.sh"] |
||||
@ -0,0 +1,46 @@
|
||||
#!/bin/bash |
||||
|
||||
export PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/ |
||||
|
||||
|
||||
# --- Test Parameters --- |
||||
test_namefile=$(ls *.name) |
||||
test_name="${test_namefile%.*}" # test network id |
||||
nwconf=$(ls *.conf) # blank test network config file |
||||
nwid="${nwconf%.*}" # test network id |
||||
file_path=/opt/results/ # test result output file path (fs shared between host and containers) |
||||
file_base="$test_name".txt # test result output file |
||||
tmp_ext=.tmp # temporary filetype used for sharing test data between containers |
||||
address_file="$file_path$test_name"_addr"$tmp_ext" # file shared between host and containers for sharing address (optional) |
||||
bigfile_name=bigfile |
||||
bigfile_size=10M # size of file we want to use for the test |
||||
tx_md5sumfile="$file_path"tx_"$bigfile_name"_md5sum"$tmp_ext" |
||||
|
||||
# --- Network Config --- |
||||
echo '*** ZeroTier Network Containers Test: ' "$test_name" |
||||
chown -R daemon /var/lib/zerotier-one |
||||
chgrp -R daemon /var/lib/zerotier-one |
||||
su daemon -s /bin/bash -c '/zerotier-netcon-service -d -U -p9993 >>/tmp/zerotier-netcon-service.out 2>&1' |
||||
virtip4="" |
||||
while [ -z "$virtip4" ]; do |
||||
sleep 0.2 |
||||
virtip4=`/zerotier-cli listnetworks | grep -F $nwid | cut -d ' ' -f 9 | sed 's/,/\n/g' | grep -F '.' | cut -d / -f 1` |
||||
dev=`/zerotier-cli listnetworks | grep -F "" | cut -d ' ' -f 8 | cut -d "_" -f 2 | sed "s/^<dev>//" | tr '\n' '\0'` |
||||
done |
||||
echo '--- Up and running at' $virtip4 ' on network: ' $nwid |
||||
echo '*** Writing address to ' "$address_file" |
||||
echo $virtip4 > "$address_file" |
||||
|
||||
export ZT_NC_NWID=$dev |
||||
|
||||
# --- Test section --- |
||||
# Generate large random file for transfer test, share md5sum for monitor container to check |
||||
echo '*** Generating ' "$bigfile_size" ' file' |
||||
dd if=/dev/urandom of=/var/www/html/"$bigfile_name" bs="$bigfile_size" count=1 |
||||
md5sum < /var/www/html/"$bigfile_name" > "$tx_md5sumfile" |
||||
echo '*** Wrote MD5 sum to ' "$tx_md5sumfile" |
||||
|
||||
echo '*** Starting application...' |
||||
sleep 0.5 |
||||
rm -rf /run/httpd/* /tmp/httpd* |
||||
zerotier-intercept /usr/sbin/httpd -X |
||||
@ -1,17 +0,0 @@
|
||||
#!/bin/bash |
||||
|
||||
# Runs test image and monitor image as daemons |
||||
|
||||
test_name=${PWD##*/} |
||||
echo 'Building dockerfiles for test: ' "$test_name" |
||||
touch "$test_name".name |
||||
|
||||
# Start netcon container to be tested |
||||
test_container=$(docker run -d -it -v $PWD/../../_results:/opt/results --device=/dev/net/tun "$test_name":latest) |
||||
monitor_container=$(docker run -d -it -v $PWD/../../_results:/opt/results --device=/dev/net/tun "$test_name"_monitor:latest) |
||||
|
||||
echo "waiting $netcon_test_wait_time for test to complete." |
||||
sleep $netcon_test_wait_time |
||||
docker stop $(docker ps -a -q) |
||||
docker rm $test_container |
||||
docker rm $monitor_container |
||||
@ -0,0 +1,24 @@
|
||||
# ZT Network Containers Test Monitor |
||||
FROM fedora:23 |
||||
MAINTAINER https://www.zerotier.com/ |
||||
|
||||
EXPOSE 9993/udp |
||||
|
||||
# Add ZT files |
||||
RUN mkdir -p /var/lib/zerotier-one/networks.d |
||||
ADD monitor_identity.public /var/lib/zerotier-one/identity.public |
||||
ADD monitor_identity.secret /var/lib/zerotier-one/identity.secret |
||||
ADD *.conf /var/lib/zerotier-one/networks.d/ |
||||
ADD *.conf / |
||||
ADD *.name / |
||||
|
||||
# Install LWIP library used by service |
||||
ADD liblwip.so /var/lib/zerotier-one/liblwip.so |
||||
|
||||
ADD zerotier-one / |
||||
ADD zerotier-cli / |
||||
|
||||
# Start ZeroTier-One |
||||
ADD monitor_entrypoint.sh /monitor_entrypoint.sh |
||||
RUN chmod -v +x /monitor_entrypoint.sh |
||||
CMD ["./monitor_entrypoint.sh"] |
||||
@ -0,0 +1,80 @@
|
||||
#!/bin/bash |
||||
|
||||
export PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/ |
||||
|
||||
|
||||
# --- Test Parameters --- |
||||
test_namefile=$(ls *.name) |
||||
test_name="${test_namefile%.*}" # test network id |
||||
nwconf=$(ls *.conf) # blank test network config file |
||||
nwid="${nwconf%.*}" # test network id |
||||
netcon_wait_time=35 # wait for test container to come online |
||||
app_timeout_time=25 # app-specific timeout |
||||
file_path=/opt/results/ # test result output file path (fs shared between host and containers) |
||||
file_base="$test_name".txt # test result output file |
||||
fail=FAIL. # appended to result file in event of failure |
||||
ok=OK. # appended to result file in event of success |
||||
tmp_ext=.tmp # temporary filetype used for sharing test data between containers |
||||
address_file="$file_path$test_name"_addr"$tmp_ext" # file shared between host and containers for sharing address (optional) |
||||
bigfile_name=bigfile # large, random test transfer file |
||||
rx_md5sumfile="$file_path"rx_"$bigfile_name"_md5sum"$tmp_ext" |
||||
tx_md5sumfile="$file_path"tx_"$bigfile_name"_md5sum"$tmp_ext" |
||||
|
||||
|
||||
# --- Network Config --- |
||||
echo '*** ZeroTier Network Containers Test Monitor' |
||||
chown -R daemon /var/lib/zerotier-one |
||||
chgrp -R daemon /var/lib/zerotier-one |
||||
su daemon -s /bin/bash -c '/zerotier-one -d -U -p9993 >>/tmp/zerotier-one.out 2>&1' |
||||
virtip4="" |
||||
while [ -z "$virtip4" ]; do |
||||
sleep 0.2 |
||||
virtip4=`/zerotier-cli listnetworks | grep -F $nwid | cut -d ' ' -f 9 | sed 's/,/\n/g' | grep -F '.' | cut -d / -f 1` |
||||
done |
||||
echo '*** Starting Test...' |
||||
echo '*** Up and running at' $virtip4 ' on network: ' $nwid |
||||
echo '*** Sleeping for (' "$netcon_wait_time" 's ) while we wait for the Network Container to come online...' |
||||
sleep "$netcon_wait_time"s |
||||
ncvirtip=$(<$address_file) |
||||
|
||||
|
||||
# --- Test section --- |
||||
echo '*** Curling from intercepted server at' $ncvirtip |
||||
rm -rf "$file_path"*."$file_base" |
||||
touch "$bigfile_name" |
||||
|
||||
# Perform test |
||||
# curl --connect-timeout "$app_timeout_time" -v -o "$file_path$file_base" http://"$ncvirtip"/index.html |
||||
# Large transfer test |
||||
curl --connect-timeout "$app_timeout_time" -v -o "$bigfile_name" http://"$ncvirtip"/"$bigfile_name" |
||||
|
||||
# Check md5 |
||||
md5sum < "$bigfile_name" > "$rx_md5sumfile" |
||||
rx_md5sum=$(<$rx_md5sumfile) |
||||
tx_md5sum=$(<$tx_md5sumfile) |
||||
|
||||
echo '*** Comparing md5: ' "$rx_md5sum" ' and ' "$tx_md5sum" |
||||
|
||||
if [ "$rx_md5sum" != "$tx_md5sum" ]; |
||||
then |
||||
echo 'MD5 FAIL' |
||||
touch "$file_path$fail$test_name.txt" |
||||
printf 'Test: md5 sum did not match!\n' >> "$file_path$fail$test_name.txt" |
||||
else |
||||
echo 'MD5 OK' |
||||
touch "$file_path$ok$test_name.txt" |
||||
printf 'Test: md5 sum ok!\n' >> "$file_path$ok$test_name.txt" |
||||
cat "$rx_md5sumfile" >> "$file_path$ok$test_name.txt" |
||||
cat "$tx_md5sumfile" >> "$file_path$ok$test_name.txt" |
||||
fi |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,44 @@
|
||||
# ZT Network Containers Test |
||||
FROM ubuntu:14.04 |
||||
MAINTAINER https://www.zerotier.com/ |
||||
|
||||
|
||||
# Install |
||||
RUN \ |
||||
sed -i 's/# \(.*multiverse$\)/\1/g' /etc/apt/sources.list && \ |
||||
apt-get update && \ |
||||
apt-get -y upgrade && \ |
||||
apt-get -y install nginx |
||||
|
||||
EXPOSE 9993/udp 80/udp |
||||
|
||||
# Add ZT files |
||||
RUN mkdir -p /var/lib/zerotier-one/networks.d |
||||
ADD netcon_identity.public /var/lib/zerotier-one/identity.public |
||||
ADD netcon_identity.secret /var/lib/zerotier-one/identity.secret |
||||
ADD *.conf /var/lib/zerotier-one/networks.d/ |
||||
ADD *.conf / |
||||
ADD *.name / |
||||
|
||||
# Install LWIP library used by service |
||||
ADD liblwip.so /var/lib/zerotier-one/liblwip.so |
||||
|
||||
# Install syscall intercept library |
||||
ADD zerotier-intercept / |
||||
ADD libzerotierintercept.so / |
||||
RUN cp libzerotierintercept.so lib/libzerotierintercept.so |
||||
RUN ln -sf /lib/libzerotierintercept.so /lib/libzerotierintercept |
||||
RUN /usr/bin/install -c zerotier-intercept /usr/bin |
||||
|
||||
ADD zerotier-one / |
||||
ADD zerotier-cli / |
||||
ADD zerotier-netcon-service / |
||||
|
||||
# Install test scripts |
||||
ADD netcon_entrypoint.sh /netcon_entrypoint.sh |
||||
RUN chmod -v +x /netcon_entrypoint.sh |
||||
|
||||
ADD nginx.conf_ / |
||||
|
||||
# Start ZeroTier-One |
||||
CMD ["./netcon_entrypoint.sh"] |
||||
@ -0,0 +1,49 @@
|
||||
#!/bin/bash |
||||
|
||||
export PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/ |
||||
|
||||
|
||||
# --- Test Parameters --- |
||||
test_namefile=$(ls *.name) |
||||
test_name="${test_namefile%.*}" # test network id |
||||
nwconf=$(ls {*.conf,}) # blank test network config file |
||||
nwid="${nwconf%.*}" # test network id |
||||
file_path=/opt/results/ # test result output file path (fs shared between host and containers) |
||||
file_base="$test_name".txt # test result output file |
||||
tmp_ext=.tmp # temporary filetype used for sharing test data between containers |
||||
address_file="$file_path$test_name"_addr"$tmp_ext" # file shared between host and containers for sharing address (optional) |
||||
bigfile_name=bigfile |
||||
bigfile_size=10M # size of file we want to use for the test |
||||
tx_md5sumfile="$file_path"tx_"$bigfile_name"_md5sum"$tmp_ext" |
||||
|
||||
|
||||
# --- Network Config --- |
||||
echo '*** ZeroTier Network Containers Test: ' "$test_name" |
||||
chown -R daemon /var/lib/zerotier-one |
||||
chgrp -R daemon /var/lib/zerotier-one |
||||
su daemon -s /bin/bash -c '/zerotier-netcon-service -d -U -p9993 >>/tmp/zerotier-netcon-service.out 2>&1' |
||||
virtip4="" |
||||
while [ -z "$virtip4" ]; do |
||||
sleep 0.2 |
||||
virtip4=`/zerotier-cli listnetworks | grep -F $nwid | cut -d ' ' -f 9 | sed 's/,/\n/g' | grep -F '.' | cut -d / -f 1` |
||||
dev=`/zerotier-cli listnetworks | grep -F "" | cut -d ' ' -f 8 | cut -d "_" -f 2 | sed "s/^<dev>//" | tr '\n' '\0'` |
||||
done |
||||
echo '*** Up and running at' $virtip4 ' on network: ' $nwid |
||||
echo '*** Writing address to ' "$address_file" |
||||
echo $virtip4 > "$address_file" |
||||
|
||||
export ZT_NC_NWID=$dev |
||||
|
||||
# --- Test section --- |
||||
cp -f nginx.conf_ /etc/nginx/nginx.conf |
||||
nginx_html_path=/usr/share/nginx/html/ |
||||
# Generate large random file for transfer test, share md5sum for monitor container to check |
||||
echo '*** Generating ' "$bigfile_size" ' file' |
||||
dd if=/dev/urandom of="$nginx_html_path$bigfile_name" bs="$bigfile_size" count=1 |
||||
#md5sum /var/www/html/"$bigfile_name" >> "$tx_md5sumfile" |
||||
md5sum < "$nginx_html_path$bigfile_name" > "$tx_md5sumfile" |
||||
echo '*** Wrote MD5 sum to ' "$tx_md5sumfile" |
||||
|
||||
echo '*** Starting application...' |
||||
sleep 0.5 |
||||
zerotier-intercept nginx |
||||
@ -0,0 +1,55 @@
|
||||
# For more information on configuration, see: |
||||
# * Official English Documentation: http://nginx.org/en/docs/ |
||||
# * Official Russian Documentation: http://nginx.org/ru/docs/ |
||||
|
||||
user nginx; |
||||
worker_processes auto; |
||||
error_log /var/log/nginx/error.log; |
||||
pid /run/nginx.pid; |
||||
|
||||
events { |
||||
worker_connections 1024; |
||||
} |
||||
|
||||
http { |
||||
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' |
||||
'$status $body_bytes_sent "$http_referer" ' |
||||
'"$http_user_agent" "$http_x_forwarded_for"'; |
||||
|
||||
access_log /var/log/nginx/access.log main; |
||||
|
||||
sendfile on; |
||||
tcp_nopush on; |
||||
tcp_nodelay on; |
||||
keepalive_timeout 65; |
||||
types_hash_max_size 2048; |
||||
|
||||
include /etc/nginx/mime.types; |
||||
default_type application/octet-stream; |
||||
|
||||
# Load modular configuration files from the /etc/nginx/conf.d directory. |
||||
# See http://nginx.org/en/docs/ngx_core_module.html#include |
||||
# for more information. |
||||
include /etc/nginx/conf.d/*.conf; |
||||
|
||||
server { |
||||
listen 80 default_server; |
||||
#listen [::]:80 default_server; |
||||
server_name _; |
||||
root /usr/share/nginx/html; |
||||
|
||||
# Load configuration files for the default server block. |
||||
include /etc/nginx/default.d/*.conf; |
||||
|
||||
location / { |
||||
} |
||||
|
||||
error_page 404 /404.html; |
||||
location = /40x.html { |
||||
} |
||||
|
||||
error_page 500 502 503 504 /50x.html; |
||||
location = /50x.html { |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,55 @@
|
||||
# For more information on configuration, see: |
||||
# * Official English Documentation: http://nginx.org/en/docs/ |
||||
# * Official Russian Documentation: http://nginx.org/ru/docs/ |
||||
|
||||
user nginx; |
||||
worker_processes auto; |
||||
error_log /var/log/nginx/error.log; |
||||
pid /run/nginx.pid; |
||||
|
||||
events { |
||||
worker_connections 1024; |
||||
} |
||||
|
||||
http { |
||||
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' |
||||
'$status $body_bytes_sent "$http_referer" ' |
||||
'"$http_user_agent" "$http_x_forwarded_for"'; |
||||
|
||||
access_log /var/log/nginx/access.log main; |
||||
|
||||
sendfile on; |
||||
tcp_nopush on; |
||||
tcp_nodelay on; |
||||
keepalive_timeout 65; |
||||
types_hash_max_size 2048; |
||||
|
||||
include /etc/nginx/mime.types; |
||||
default_type application/octet-stream; |
||||
|
||||
# Load modular configuration files from the /etc/nginx/conf.d directory. |
||||
# See http://nginx.org/en/docs/ngx_core_module.html#include |
||||
# for more information. |
||||
include /etc/nginx/conf.d/*.conf; |
||||
|
||||
server { |
||||
listen 80 default_server; |
||||
#listen [::]:80 default_server; |
||||
server_name _; |
||||
root /usr/share/nginx/html; |
||||
|
||||
# Load configuration files for the default server block. |
||||
include /etc/nginx/default.d/*.conf; |
||||
|
||||
location / { |
||||
} |
||||
|
||||
error_page 404 /404.html; |
||||
location = /40x.html { |
||||
} |
||||
|
||||
error_page 500 502 503 504 /50x.html; |
||||
location = /50x.html { |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,55 @@
|
||||
# For more information on configuration, see: |
||||
# * Official English Documentation: http://nginx.org/en/docs/ |
||||
# * Official Russian Documentation: http://nginx.org/ru/docs/ |
||||
|
||||
user nginx; |
||||
worker_processes auto; |
||||
error_log /var/log/nginx/error.log; |
||||
pid /run/nginx.pid; |
||||
|
||||
events { |
||||
worker_connections 1024; |
||||
} |
||||
|
||||
http { |
||||
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' |
||||
'$status $body_bytes_sent "$http_referer" ' |
||||
'"$http_user_agent" "$http_x_forwarded_for"'; |
||||
|
||||
access_log /var/log/nginx/access.log main; |
||||
|
||||
sendfile on; |
||||
tcp_nopush on; |
||||
tcp_nodelay on; |
||||
keepalive_timeout 65; |
||||
types_hash_max_size 2048; |
||||
|
||||
include /etc/nginx/mime.types; |
||||
default_type application/octet-stream; |
||||
|
||||
# Load modular configuration files from the /etc/nginx/conf.d directory. |
||||
# See http://nginx.org/en/docs/ngx_core_module.html#include |
||||
# for more information. |
||||
include /etc/nginx/conf.d/*.conf; |
||||
|
||||
server { |
||||
listen 80 default_server; |
||||
#listen [::]:80 default_server; |
||||
server_name _; |
||||
root /usr/share/nginx/html; |
||||
|
||||
# Load configuration files for the default server block. |
||||
include /etc/nginx/default.d/*.conf; |
||||
|
||||
location / { |
||||
} |
||||
|
||||
error_page 404 /404.html; |
||||
location = /40x.html { |
||||
} |
||||
|
||||
error_page 500 502 503 504 /50x.html; |
||||
location = /50x.html { |
||||
} |
||||
} |
||||
} |
||||
@ -1,17 +0,0 @@
|
||||
#!/bin/bash |
||||
|
||||
# Runs test image and monitor image as daemons |
||||
|
||||
test_name=${PWD##*/} |
||||
echo 'Building dockerfiles for test: ' "$test_name" |
||||
touch "$test_name".name |
||||
|
||||
# Start netcon container to be tested |
||||
test_container=$(docker run -d -it -v $PWD/../../_results:/opt/results --device=/dev/net/tun "$test_name":latest) |
||||
monitor_container=$(docker run -d -it -v $PWD/../../_results:/opt/results --device=/dev/net/tun "$test_name"_monitor:latest) |
||||
|
||||
echo "waiting $netcon_test_wait_time for test to complete." |
||||
sleep $netcon_test_wait_time |
||||
docker stop $(docker ps -a -q) |
||||
docker rm $test_container |
||||
docker rm $monitor_container |
||||
Loading…
Reference in new issue