1# 2# SI6 Networks' IPv6 toolkit Makefile 3# 4# Notes to package developers: 5# 6# By default, binaries will be installed in /usr/local/bin, manual pages in 7# /usr/local/man, data files in /usr/local/share/ipv6toolkit, and configuration 8# files in /etc 9# 10# The path of the binaries and data files can be overriden by setting "PREFIX" 11# variable accordingly. The path of the manual pages can be overriden by setting 12# the MANPREFIX variable. Typically, packages will set these variables as follows: 13# 14# PREFIX=/usr 15# MANPREFIX=/usr/share 16# 17# Finally, please note that this makefile supports the DESTDIR variable, as 18# typically employed by package developers. 19 20 21CC?=gcc 22CFLAGS+= -Wall 23LDFLAGS+= -lpcap -lm 24 25.ifndef(PREFIX) 26PREFIX=/usr/local 27.ifndef(MANPREFIX) 28MANPREFIX=/usr/local 29.endif 30.else 31.ifndef(MANPREFIX) 32MANPREFIX=/usr/share 33.endif 34.endif 35 36ETCPATH= $(DESTDIR)/etc 37MANPATH= $(DESTDIR)$(MANPREFIX)/man 38DATAPATH= $(DESTDIR)$(PREFIX)/share/ipv6toolkit 39BINPATH= $(DESTDIR)$(PREFIX)/bin 40SBINPATH= $(DESTDIR)$(PREFIX)/sbin 41SRCPATH= tools 42 43 44SBINTOOLS= blackhole6 flow6 frag6 icmp6 jumbo6 na6 ni6 ns6 path6 ra6 rd6 rs6 scan6 script6 tcp6 udp6 45BINTOOLS= addr6 46TOOLS= $(BINTOOLS) $(SBINTOOLS) 47LIBS= libipv6.o 48 49all: $(TOOLS) data/ipv6toolkit.conf 50 51addr6: $(SRCPATH)/addr6.c $(SRCPATH)/addr6.h $(SRCPATH)/ipv6toolkit.h $(LIBS) $(SRCPATH)/libipv6.h 52 $(CC) $(CPPFLAGS) $(CFLAGS) -o addr6 $(SRCPATH)/addr6.c $(LIBS) $(LDFLAGS) 53 54blackhole6: $(SRCPATH)/blackhole6 55 cp $(SRCPATH)/blackhole6 ./ 56 57flow6: $(SRCPATH)/flow6.c $(SRCPATH)/flow6.h $(SRCPATH)/ipv6toolkit.h $(LIBS) $(SRCPATH)/libipv6.h 58 $(CC) $(CPPFLAGS) $(CFLAGS) -o flow6 $(SRCPATH)/flow6.c $(LIBS) $(LDFLAGS) 59 60frag6: $(SRCPATH)/frag6.c $(SRCPATH)/frag6.h $(SRCPATH)/ipv6toolkit.h $(LIBS) $(SRCPATH)/libipv6.h 61 $(CC) $(CPPFLAGS) $(CFLAGS) -o frag6 $(SRCPATH)/frag6.c $(LIBS) $(LDFLAGS) 62 63icmp6: $(SRCPATH)/icmp6.c $(SRCPATH)/icmp6.h $(SRCPATH)/ipv6toolkit.h $(LIBS) $(SRCPATH)/libipv6.h 64 $(CC) $(CPPFLAGS) $(CFLAGS) -o icmp6 $(SRCPATH)/icmp6.c $(LIBS) $(LDFLAGS) 65 66jumbo6: $(SRCPATH)/jumbo6.c $(SRCPATH)/jumbo6.h $(SRCPATH)/ipv6toolkit.h $(LIBS) $(SRCPATH)/libipv6.h 67 $(CC) $(CPPFLAGS) $(CFLAGS) -o jumbo6 $(SRCPATH)/jumbo6.c $(LIBS) $(LDFLAGS) 68 69na6: $(SRCPATH)/na6.c $(SRCPATH)/na6.h $(SRCPATH)/ipv6toolkit.h $(LIBS) $(SRCPATH)/libipv6.h 70 $(CC) $(CPPFLAGS) $(CFLAGS) -o na6 $(SRCPATH)/na6.c $(LIBS) $(LDFLAGS) 71 72ni6: $(SRCPATH)/ni6.c $(SRCPATH)/ni6.h $(SRCPATH)/ipv6toolkit.h $(LIBS) $(SRCPATH)/libipv6.h 73 $(CC) $(CPPFLAGS) $(CFLAGS) -o ni6 $(SRCPATH)/ni6.c $(LIBS) $(LDFLAGS) 74 75ns6: $(SRCPATH)/ns6.c $(SRCPATH)/ns6.h $(SRCPATH)/ipv6toolkit.h $(LIBS) $(SRCPATH)/libipv6.h 76 $(CC) $(CPPFLAGS) $(CFLAGS) -o ns6 $(SRCPATH)/ns6.c $(LIBS) $(LDFLAGS) 77 78path6: $(SRCPATH)/path6.c $(SRCPATH)/path6.h $(SRCPATH)/ipv6toolkit.h $(LIBS) $(SRCPATH)/libipv6.h 79 $(CC) $(CPPFLAGS) $(CFLAGS) -o path6 $(SRCPATH)/path6.c $(LIBS) $(LDFLAGS) 80 81ra6: $(SRCPATH)/ra6.c $(SRCPATH)/ra6.h $(SRCPATH)/ipv6toolkit.h $(LIBS) $(SRCPATH)/libipv6.h 82 $(CC) $(CPPFLAGS) $(CFLAGS) -o ra6 $(SRCPATH)/ra6.c $(LIBS) $(LDFLAGS) 83 84rd6: $(SRCPATH)/rd6.c $(SRCPATH)/rd6.h $(SRCPATH)/ipv6toolkit.h $(LIBS) $(SRCPATH)/libipv6.h 85 $(CC) $(CPPFLAGS) $(CFLAGS) -o rd6 $(SRCPATH)/rd6.c $(LIBS) $(LDFLAGS) 86 87rs6: $(SRCPATH)/rs6.c $(SRCPATH)/rs6.h $(SRCPATH)/ipv6toolkit.h $(LIBS) $(SRCPATH)/libipv6.h 88 $(CC) $(CPPFLAGS) $(CFLAGS) -o rs6 $(SRCPATH)/rs6.c $(LIBS) $(LDFLAGS) 89 90scan6: $(SRCPATH)/scan6.c $(SRCPATH)/scan6.h $(SRCPATH)/ipv6toolkit.h $(LIBS) $(SRCPATH)/libipv6.h 91 $(CC) $(CPPFLAGS) $(CFLAGS) -o scan6 $(SRCPATH)/scan6.c $(LIBS) $(LDFLAGS) 92 93script6: $(SRCPATH)/script6 94 cp $(SRCPATH)/script6 ./ 95 96tcp6: $(SRCPATH)/tcp6.c $(SRCPATH)/tcp6.h $(SRCPATH)/ipv6toolkit.h $(LIBS) $(SRCPATH)/libipv6.h 97 $(CC) $(CPPFLAGS) $(CFLAGS) -o tcp6 $(SRCPATH)/tcp6.c $(LIBS) $(LDFLAGS) 98 99udp6: $(SRCPATH)/udp6.c $(SRCPATH)/udp6.h $(SRCPATH)/ipv6toolkit.h $(LIBS) $(SRCPATH)/libipv6.h 100 $(CC) $(CPPFLAGS) $(CFLAGS) -o udp6 $(SRCPATH)/udp6.c $(LIBS) $(LDFLAGS) 101 102libipv6.o: $(SRCPATH)/libipv6.c $(SRCPATH)/libipv6.h 103 $(CC) $(CPPFLAGS) $(CFLAGS) -c -o libipv6.o $(SRCPATH)/libipv6.c 104 105data/ipv6toolkit.conf: 106 echo "# SI6 Networks' IPv6 Toolkit Configuration File" > \ 107 data/ipv6toolkit.conf 108 echo OUI-Database=$(PREFIX)/share/ipv6toolkit/oui.txt >> \ 109 data/ipv6toolkit.conf 110 echo Ports-Database=$(PREFIX)/share/ipv6toolkit/service-names-port-numbers.csv >> \ 111 data/ipv6toolkit.conf 112 113clean: 114 rm -f $(TOOLS) $(LIBS) 115 rm -f data/ipv6toolkit.conf 116 117install: all 118 # Install the binaries 119 install -m0755 -d $(BINPATH) 120 install -m0755 -d $(SBINPATH) 121 install -m0755 $(BINTOOLS) $(BINPATH) 122 install -m0755 $(SBINTOOLS) $(SBINPATH) 123 124 # Install the configuration file 125 install -m0755 -d $(ETCPATH) 126 install -m0644 data/ipv6toolkit.conf $(ETCPATH) 127 128 # Install the IEEE OUI database 129 install -m0755 -d $(DATAPATH) 130 install -m0644 data/oui.txt $(DATAPATH) 131 132 # Install the port numbers database 133 install -m0644 data/service-names-port-numbers.csv $(DATAPATH) 134 135 # Install the manual pages 136 install -m0755 -d $(MANPATH)/man1 137 install -m0644 manuals/*.1 $(MANPATH)/man1 138 install -m0755 -d $(MANPATH)/man5 139 install -m0644 manuals/*.5 $(MANPATH)/man5 140 install -m0755 -d $(MANPATH)/man7 141 install -m0644 manuals/*.7 $(MANPATH)/man7 142 143uninstall: 144 # Remove the binaries 145 rm -f $(BINPATH)/addr6 146 rm -f $(SBINPATH)/blackhole6 147 rm -f $(SBINPATH)/flow6 148 rm -f $(SBINPATH)/frag6 149 rm -f $(SBINPATH)/icmp6 150 rm -f $(SBINPATH)/jumbo6 151 rm -f $(SBINPATH)/na6 152 rm -f $(SBINPATH)/ni6 153 rm -f $(SBINPATH)/ns6 154 rm -f $(SBINPATH)/path6 155 rm -f $(SBINPATH)/ra6 156 rm -f $(SBINPATH)/rd6 157 rm -f $(SBINPATH)/rs6 158 rm -f $(SBINPATH)/scan6 159 rm -f $(SBINPATH)/script6 160 rm -f $(SBINPATH)/tcp6 161 rm -f $(SBINPATH)/udp6 162 163 # Remove the configuration file 164 rm -f $(ETCPATH)/ipv6toolkit.conf 165 166 # Remove the IEEE OUI database 167 rm -rf $(DATAPATH) 168 169 # Remove the manual pages 170 rm -f $(MANPATH)/man1/addr6.1 171 rm -f $(MANPATH)/man1/blackhole.1 172 rm -f $(MANPATH)/man1/flow6.1 173 rm -f $(MANPATH)/man1/frag6.1 174 rm -f $(MANPATH)/man1/icmp6.1 175 rm -f $(MANPATH)/man1/jumbo6.1 176 rm -f $(MANPATH)/man1/na6.1 177 rm -f $(MANPATH)/man1/ni6.1 178 rm -f $(MANPATH)/man1/ns6.1 179 rm -f $(MANPATH)/man1/path6.1 180 rm -f $(MANPATH)/man1/ra6.1 181 rm -f $(MANPATH)/man1/rd6.1 182 rm -f $(MANPATH)/man1/rs6.1 183 rm -f $(MANPATH)/man1/scan6.1 184 rm -f $(MANPATH)/man1/script6.1 185 rm -f $(MANPATH)/man1/tcp6.1 186 rm -f $(MANPATH)/man1/udp6.1 187 rm -f $(MANPATH)/man5/ipv6toolkit.conf.5 188 rm -f $(MANPATH)/man7/ipv6toolkit.7 189 190