# Makefile for vinegar-ip # # This file is part of vinegar-ip, tools for IP transparency testing. # vinegar-ip is Copyright (C) 2002 Ian Jackson # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software Foundation, # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # $Id$ ############################################################# # You should edit the parameters below for your site SOURCE= 172.18.45.35 DEST= 172.18.45.6 UNIQUE= # set UNIQUE to something random for less observability # NB, this MTU is not completely strictly adhered to by the # test packet generator. Sorry. MTU= 100 # no of packets in each individual part, including part 1 PERPART= 100 # REST is made of PARTS-1 parts of PERPART packets PARTS= 100 # You shouldn't need to edit anything beyond this point. ############################################################# FEW_TARGETS= on-dest.sh \ send-1.pcap send-1.log send-1.why TARGETS= $(FEW_TARGETS) \ send-all.pcap send-all.log send-all.why A_PARTNOS= $(shell \ set -e; i=1; while [ $$i -le $(PARTS) ]; do \ echo $$i; i=$$(( $$i + 1)); done \ ) A_BASES= $(addprefix send-,$(A_PARTNOS)) A_PCAPS= $(addsuffix .pcap,$(A_BASES)) A_WHYS= $(addsuffix .why,$(A_BASES)) AN_BASES= $(basename $(wildcard recv-*.pcap)) AN_LOGS= $(addsuffix .log,$(AN_BASES)) AN_DIFFS= $(addsuffix .diff,$(AN_BASES)) AN_TARGETS= $(AN_LOGS) $(AN_DIFFS) INFORM= @echo ' GENERATED THESE FILES:'; \ echo ' $^' all: $(TARGETS) $(INFORM) few: $(FEW_TARGETS) $(INFORM) anal analyse: $(AN_TARGETS) $(INFORM) send-all.pcap: $(A_PCAPS) Makefile rm -f $@ dd if=$< ibs=24 count=1 of=$@ set -e; for f in $(A_PCAPS); do \ dd ibs=24 skip=1 if=$$f >>$@; done send-all.why: $(A_WHYS) Makefile cat $(A_WHYS) >$@.1.tmp nl -bp'^ ? ? ?[0-9]' <$@.1.tmp >$@.2.tmp @mv -f $@.2.tmp $@ send-%.pcap send-%.why: ./make-probes.tcl Makefile ./make-probes.tcl --write $@ --mtu $(MTU) --upto $(PERPART) \ --source $(SOURCE) --dest $(DEST) --xseed "$* $(UNIQUE)" \ >send-$*.why %.log: %.pcap lnumber-tcpdump.pl Makefile tcpdump -tnxvvs$$(($(MTU)+500)) -r $< >$@.1.tmp ./lnumber-tcpdump.pl <$@.1.tmp >$@.2.tmp @mv -f $@.2.tmp $@ recv-%.diff: send-%.log recv-%.log diff -uI'^[0-9]' $^ >$@ || test $$? == 1 on-dest.sh: Makefile @rm -f $@ echo >$@ "#!/bin/sh" @echo >>$@ "# run this script on $(DEST) as root, saying:" @echo >>$@ "# ./on-dest.sh PART" @echo >>$@ "# where PART ranges from 1 to $(PARTS)" @echo >>$@ "if ! [ \$$# = 1 ]; then echo >&2 'PART?'; exit 1; fi" @echo >>$@ "exec tcpdump -s$$(($(MTU)+500)) -w recv-\$$1.pcap \\" @echo >>$@ " src host $(SOURCE) and dst host $(DEST)" chmod +x $@ clean: rm -f *.tmp *~ t u v realclean: clean rm -f $(TARGETS) *.pcap *.why *.log # $Id$