chiark / gitweb /
Templates for scripts. Monitoring script. Do not depend on time of generation at...
[vinegar-ip.git] / Makefile
1 # Makefile for vinegar-ip
2 #
3 # This file is part of vinegar-ip, tools for IP transparency testing.
4 # vinegar-ip is Copyright (C) 2002 Ian Jackson
5 #
6 # This program is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 2, or (at your option)
9 # any later version.
10 #
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 # GNU General Public License for more details.
15 #
16 # You should have received a copy of the GNU General Public License
17 # along with this program; if not, write to the Free Software Foundation,
18 # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 
19 #
20 # $Id$
21
22 #############################################################
23 # You should edit the parameters below for your site
24
25 SOURCE=         172.18.45.35/0:4:76:1a:92:13
26 DEST=           172.18.45.6/0:04:76:1A:8F:C6
27
28 UNIQUE=
29 # set UNIQUE to something random for less observability
30
31 # NB, this MTU is not completely strictly adhered to by the
32 # test packet generator.  Sorry.
33 MTU=            100
34
35 # no of packets in each individual part, including part 1
36 PERPART=        100
37
38 # REST is made of PARTS-1 parts of PERPART packets
39 PARTS=          100
40
41 # You shouldn't need to edit anything beyond this point.
42 #############################################################
43
44 SCRIPT_TARGETS= on-dest.sh monitor.sh
45
46 FEW_TARGETS=    $(SCRIPT_TARGETS) \
47                 send-1.pcap send-1.log send-1.why
48
49 TARGETS=        $(FEW_TARGETS) \
50                 send-all.pcap send-all.log send-all.why
51
52 A_PARTNOS=      $(shell \
53         set -e; i=1; while [ $$i -le $(PARTS) ]; do \
54                 echo $$i; i=$$(( $$i + 1)); done \
55         )
56
57 A_BASES=        $(addprefix send-,$(A_PARTNOS))
58 A_PCAPS=        $(addsuffix .pcap,$(A_BASES))
59 A_WHYS=         $(addsuffix .why,$(A_BASES))
60
61 AN_BASES=       $(basename $(wildcard recv-*.pcap))
62 AN_LOGS=        $(addsuffix .log,$(AN_BASES))
63 AN_DIFFS=       $(addsuffix .diff,$(AN_BASES))
64 AN_TARGETS=     $(AN_LOGS) $(AN_DIFFS)
65
66 INFORM=         @echo ' GENERATED THESE FILES:'; \
67                 echo '          $^'
68
69 SOURCE_IP=      $(shell expr $(SOURCE) : '\([0-9.]*\)/')
70 DEST_IP=        $(shell expr $(DEST) : '\([0-9.]*\)/')
71
72 all:            $(TARGETS)
73                         $(INFORM)
74
75 few:            $(FEW_TARGETS)
76                         $(INFORM)
77
78 scripts:        $(SCRIPT_TARGETS)
79                         $(INFORM)
80
81 anal analyse:   $(AN_TARGETS)
82                         $(INFORM)
83
84 send-all.pcap:  $(A_PCAPS) Makefile
85                 rm -f $@
86                 dd if=$< ibs=24 count=1 of=$@
87                 set -e; for f in $(A_PCAPS); do \
88                         dd ibs=24 skip=1 if=$$f >>$@; done
89
90 send-all.why:   $(A_WHYS) Makefile
91                 cat $(A_WHYS) >$@.1.tmp
92                 nl -bp'^ ? ? ?[0-9]' <$@.1.tmp >$@.2.tmp
93                 @mv -f $@.2.tmp $@
94
95 send-%.pcap send-%.why: ./make-probes.tcl Makefile
96         ./make-probes.tcl --write $@ --mtu $(MTU) --upto $(PERPART) \
97                 --source $(SOURCE) \
98                 --dest $(DEST) \
99                  --xseed "$* $(UNIQUE)" >send-$*.why
100
101 %.log:          %.pcap lnumber-tcpdump.pl Makefile
102                 tcpdump -tnxvvs$$(($(MTU)+500)) -r $< >$@.1.tmp
103                 ./lnumber-tcpdump.pl <$@.1.tmp >$@.2.tmp
104                 @mv -f $@.2.tmp $@
105
106 recv-%.diff:    send-%.log recv-%.log
107                 diff -uI'^[0-9]' $^ >$@ || test $$? == 1
108
109 %.sh:           %.template Makefile
110                 sed <$< >$@.tmp -e ' \
111                         s/@@M/'$$(($(MTU)+500))'/; \
112                         s/@@S/$(SOURCE_IP)/; \
113                         s/@@D/$(DEST_IP)/'
114                 chmod +x $@.tmp
115                 @mv -f $@.tmp $@
116
117 clean:
118                 rm -f *.tmp *~ t u v
119
120 realclean:      clean
121                 rm -f $(TARGETS) *.pcap *.why *.log recv-*.diff
122
123 # $Id$