Skip to content

Commit 36ce524

Browse files
committed
import.. I don't appear to have access to the old CVS repo. Sad.
0 parents  commit 36ce524

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+12216
-0
lines changed

.gitignore

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
configure
2+
config.log
3+
config.cache
4+
Makefile
5+
config.status
6+
config.h
7+
lex.wack.c
8+
y.tab.c
9+
y.tab.h
10+
wackamole
11+
wackatrl
12+
*.exp
13+
*.lib
14+
autom4te.cache

ChangeLog

+109
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
August 8th, 2001 (08.08.2001) -- wackamole -- 1.0.0
2+
==========================================
3+
* Added this ChangeLog file.
4+
* Initial release.
5+
* Now supports Linux platform.
6+
7+
September 14th, 2001 (09.14.2001) -- wackamole -- 1.0.1
8+
==========================================
9+
* Now brings down all its virtual interfaces when when it dies.
10+
* Now tries to reconnect to spread if it looses connection.
11+
12+
November 5th, 2001 (11.01.2001) -- wackamole -- 1.2.0
13+
===========================================
14+
* Added autoconf support (./configure)
15+
* Now supports FreeBSD platform.
16+
* Now supports Solaris 8 platform.
17+
* Now supports MacOSX platform.
18+
* Now daemonizes unless "-d" flag is given.
19+
* Write a PID file now.
20+
* Modified so that number of vitual ip's can be less than
21+
number of machines if some machines have config vip 0.0.0.0
22+
* Writes IP release/acquire information to syslog
23+
24+
November 15th, 2002 (11.15.2002) -- wackamole -- 2.0.0
25+
===========================================
26+
* Revamped configuration file completely. New format described in sample.
27+
* Allows/requires all interfaces to be named excplicitly to support machines
28+
with multiple interface cards on different VLANs and/or subnets.
29+
* Notifications are not to "a" router anymore. An arbitrary list of CIDR form
30+
addresses can be specified explicitly by interface.
31+
All will receive ARP notifications of the MAC address change.
32+
* ARP cache is collected (FreeBSD and Linux supported) and that pool can be
33+
used as a notification destination for ARP updates. (i.e. arp-spoof
34+
everyone in my arp cache). ARP caches are announced and merged, so
35+
you wil hit every IP in the collective ARP cache of the cluster.
36+
* Added multi-threaded updates. Each VIP that is started will spawn an
37+
arp-spoofing notification thread that will run through the list of
38+
recipients.
39+
* Allow for "no threading" via --with-threads=no configure option.
40+
* Notifications can be throttled so that notifications to larger networks will
41+
not cause ARP storms. Notification lists are processed in a piecemeal
42+
fashion such that large throttled notifications will not starve other
43+
notifications.
44+
* A unix domain control socket was added and a simple control procotol was
45+
defined for out-of-band daemon control.
46+
* A standalone control program was stubbed (wackatrl) that can instruct
47+
the running wackamole instance to drop VIPs and disconnect from Spread.
48+
This isn't the ideal method of releasing responsibility, but it is a
49+
proof-of-concept.
50+
* Made reconnections to spread more robust and configurable.
51+
* Awful, awful, awful hack to fetch IPs from the system ARP cache on Solaris.
52+
* The failure and success causes perpetual reconnect attempts. These attempts
53+
have been moved from their old blocking loop into the main loop.
54+
* Arp Spoofing is now done using the Spread event system
55+
* Now links correctly with Spread 3.17 (lib[t]spread.a) or
56+
older versions (lib[t]sp.a)
57+
58+
July 28th, 2004 (07.28.2004) -- wackamole -- 2.1.0
59+
===========================================
60+
* Allow for both non-threaded and threaded code. Proper ifdefs.
61+
* non-threaded by default, there are problems with the threads.
62+
* RunDynamic directives to call loadable modules and embedder perl.
63+
* Fixed rampant endian problems.
64+
* Fixed CIDR form ranged arp notifications.
65+
* Shared arp cache is now IP and MAC -- includes fixes to buffer overruns
66+
triggered during collecting local ARP info on Solaris.
67+
* When arp-spoofing to IPs in the shared arp cache, both broadcast and
68+
directed ARP responses are done.
69+
* Hack for Linux to post process the VIF table after a balance that performs
70+
an if_down to make sure no other interfaces were casualties of that
71+
operation.
72+
* Added ping support so in addition to ARP spoofing, ICMP packets can be
73+
sent.
74+
75+
July 28th, 2004 (08.31.2004) -- wackamole -- 2.1.1
76+
===========================================
77+
* No code changes. Messed up distribution roll. Fixed here.
78+
79+
September 9th, 2004 (09.07.2004) -- wackamole -- 2.1.2
80+
===========================================
81+
* Fixed Linux ping construction (compile error)
82+
* Fixed double close in wackatrl
83+
* Fixed argument parsing
84+
85+
February 6th, 2007 (02.06.2007) -- wackamole -- 2.1.3
86+
===========================================
87+
* Win32 support
88+
* patch for perl up and down invocations from Glenn Nielsen < glenn at mail
89+
dot more dot net >
90+
* patch from < pete at more dot net > and < anderson at more dot net >
91+
regarding uninitialized stack variable usable. Fixes occasional
92+
interface operations on FreeBSD.
93+
* wrong string length of static strings, off-by-one. from Glenn Nielsen
94+
< glenn at maildot more dot net >
95+
* fork/setsid/fork now exits with 0 as it should
96+
* memcpy argument fix in Solaris DLIP ife driver
97+
* fixed Makefile to add LDFLAGS and LIBS for the arptest tool
98+
99+
December 28th, 2007 (12.28.2007) -- wackamole -- 2.1.4
100+
===========================================
101+
* Fix interfaces with numbers in them on Solaris (e1000g0)
102+
* Get config.w32.h into the distribution (thanks Wez)
103+
104+
-- wackamole -- devel
105+
===========================================
106+
* Warning and compile fixes on FreeBSD from Marcin Cieslak < saper at
107+
saper dot info >
108+
* Corrected 1.11 fix regarding interface instance numbers on Solaris from
109+
< todd at messagesystems dot com >

Makefile.in

+156
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,156 @@
1+
.SUFFIXES: .lo
2+
3+
prefix=@prefix@
4+
exec_prefix=@exec_prefix@
5+
bindir=@bindir@
6+
sbindir=@sbindir@
7+
libdir=@libdir@
8+
mandir=@mandir@
9+
mansubdir=@mansubdir@
10+
sysconfdir=@sysconfdir@
11+
piddir=@piddir@
12+
srcdir=@srcdir@
13+
top_srcdir=@top_srcdir@
14+
15+
DESTDIR=
16+
VPATH=@srcdir@
17+
WACKAMOLE_PROGRAM=@sbindir@/wackamole
18+
19+
PATHS= -DETCDIR=\"$(sysconfdir)\" \
20+
-D_PATH_WACKAMOLE_PIDDIR=\"$(piddir)\" \
21+
-DBUNDLEEXT=\"$(BUNDLEEXT)\"
22+
23+
CC=@CC@
24+
CFLAGS=@CFLAGS@
25+
LEX=@LEX@
26+
YACC=@YACC@
27+
CPPFLAGS=-I. -I$(srcdir) @CPPFLAGS@ $(PATHS) @DEFS@
28+
LD=@LD@
29+
LDFLAGS=@LDFLAGS@
30+
LIBS=@LIBS@
31+
AR=@AR@
32+
SHCC=@SHCC@
33+
SHLD=@SHLD@
34+
SHCFLAGS=@SHCFLAGS@
35+
SHCPPFLAGS=@SHCPPFLAGS@
36+
SHLDFLAGS=@SHLDFLAGS@
37+
SHLIBS=@SHLIBS@
38+
BUNDLEEXT=@BUNDLEEXT@
39+
RANLIB=@RANLIB@
40+
INSTALL=@INSTALL@
41+
SOFTLINK=@LN_S@
42+
PERL=@PERL@
43+
ENT=@ENT@
44+
45+
46+
TARGETS=wackamole wackatrl t/arptest
47+
48+
WACKOBJS=wackamole.o alarm.o lex.wack.o y.tab.o arpcache.o spoofmanager.o \
49+
abt.o control.o apue.o configuration.o userloader.o @IFE_OBJ@ \
50+
ife-icmp-support.o @PERLOBJS@
51+
52+
WACKATRLOBJS=wackatrl.o alarm.o lex.wack.o y.tab.o apue.o \
53+
configuration.o userloader.o @PERLOBJS@
54+
55+
PATHSUBS = \
56+
-D/etc/wackamole.conf=$(sysconfdir)/wackamole.conf \
57+
-D/var/run/wackamole.pid=$(piddir)/wackamole.pid
58+
59+
FIXPATHSCMD = $(PERL) $(srcdir)/fixpaths $(PATHSUBS)
60+
61+
all: $(CONFIGFILES) $(TARGETS)
62+
63+
parser: lex.wack.c y.tab.c y.tab.h
64+
65+
$(WACKOBJS): config.h
66+
67+
$(WACKATRLOBJS): config.h
68+
69+
.c.o: defines.h config.h
70+
$(CC) $(CFLAGS) $(CPPFLAGS) -c $<
71+
72+
.c.lo: defines.h config.h
73+
$(SHCC) $(SHCFLAGS) $(SHCPPFLAGS) -c $< -o $*.lo
74+
75+
lex.wack.c: config_gram.l
76+
$(LEX) -Pwack config_gram.l
77+
y.tab.c y.tab.h: config_gram.y
78+
$(YACC) -p wack -d config_gram.y
79+
lex.wack.o: lex.wack.c y.tab.h
80+
$(CC) $(CFLAGS) $(CPPFLAGS) -c lex.wack.c
81+
y.tab.o: y.tab.c config.h
82+
$(CC) $(CFLAGS) $(CPPFLAGS) -c y.tab.c
83+
perlxsi.c:
84+
$(PERL) -MExtUtils::Embed -e xsinit -- -o perlxsi.c
85+
86+
none:
87+
echo "Skipping shared library creation."
88+
89+
install-none:
90+
echo "Skipping shared library installation."
91+
92+
wackamole: $(WACKOBJS)
93+
$(LD) -o $@ $(WACKOBJS) $(LDFLAGS) $(LIBS)
94+
95+
wackatrl: $(WACKATRLOBJS)
96+
$(LD) -o $@ $(WACKATRLOBJS) $(LDFLAGS) $(LIBS)
97+
98+
ife: ife.o ife-icmp-support.o arpcache.o abt.o alarm.o @IFE_OBJ@
99+
$(LD) -o $@ ife.o ife-icmp-support.o arpcache.o abt.o alarm.o @IFE_OBJ@ $(LDFLAGS) $(LIBS)
100+
101+
arptest.o: t/arptest.c
102+
$(CC) $(CFLAGS) $(CPPFLAGS) -c t/arptest.c
103+
104+
t/arptest: arptest.o alarm.o arpcache.o abt.o
105+
$(LD) -o $@ arptest.o alarm.o arpcache.o abt.o $(LDFLAGS) $(LIBS)
106+
107+
clean:
108+
rm -f *.lo *.tlo *.to *.o *.a $(TARGETS) *.so ife
109+
rm -f config.cache config.log *.out core *~
110+
111+
distclean: clean parserclean
112+
rm -f Makefile config.h config.status *~
113+
114+
parserclean:
115+
rm -f lex.wack.c y.tab.c y.tab.h
116+
117+
mrproper: distclean
118+
119+
veryclean: distclean
120+
rm -f configure config.h.in *.0
121+
122+
distprep:
123+
autoreconf
124+
125+
install: $(TARGETS) install-files
126+
127+
install-files:
128+
$(srcdir)/mkinstalldirs $(DESTDIR)$(bindir)
129+
$(srcdir)/mkinstalldirs $(DESTDIR)$(sbindir)
130+
$(srcdir)/mkinstalldirs $(DESTDIR)$(mandir)
131+
$(srcdir)/mkinstalldirs $(DESTDIR)$(mandir)/$(mansubdir)5
132+
$(srcdir)/mkinstalldirs $(DESTDIR)$(mandir)/$(mansubdir)8
133+
$(srcdir)/mkinstalldirs $(DESTDIR)$(libdir)
134+
$(INSTALL) -m 0755 -s wackamole $(DESTDIR)$(sbindir)/wackamole
135+
$(INSTALL) -m 0755 -s wackatrl $(DESTDIR)$(sbindir)/wackatrl
136+
$(INSTALL) -m 0644 wackamole.8 $(DESTDIR)$(mandir)/$(mansubdir)8/wackamole.8
137+
$(INSTALL) -m 0644 wackatrl.8 $(DESTDIR)$(mandir)/$(mansubdir)8/wackatrl.8
138+
$(INSTALL) -m 0644 wackamole.conf.5 $(DESTDIR)$(mandir)/$(mansubdir)5/wackamole.conf.5
139+
if [ ! -d $(DESTDIR)$(sysconfdir) ]; then \
140+
$(srcdir)/mkinstalldirs $(DESTDIR)$(sysconfdir); \
141+
fi
142+
$(INSTALL) -m 644 wackamole.conf $(DESTDIR)$(sysconfdir)/wackamole.conf.sample
143+
144+
uninstallall: uninstall
145+
-rm -f $(DESTDIR)$(sysconfdir)/wackamole.conf.sample
146+
-rmdir $(DESTDIR)$(sysconfdir)
147+
-rmdir $(DESTDIR)$(bindir)
148+
-rmdir $(DESTDIR)$(sbindir)
149+
-rmdir $(DESTDIR)$(mandir)/$(mansubdir)8
150+
-rmdir $(DESTDIR)$(mandir)/$(mansubdir)8
151+
-rmdir $(DESTDIR)$(mandir)
152+
-rmdir $(DESTDIR)$(libdir)
153+
154+
uninstall:
155+
-rm -f $(DESTDIR)$(sbindir)/wackamole
156+
-rm -f $(DESTDIR)$(sbindir)/wackatrl

NMakefile

+61
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
2+
# path to your winpcap developers kit
3+
WPDPACK=..\WpdPack
4+
5+
# path to your spread developers kit
6+
SPREAD=..\spread-bin-3.17.3
7+
8+
LEX=flex
9+
YACC=bison -y
10+
11+
ETCDIR=/opt/wackamole/etc
12+
PIDDIR=/opt/wackamole/var/run/
13+
14+
# no user config below this point
15+
16+
CC=$(CC) /nologo
17+
18+
LIBS=$(SPREAD)\win\libtspread.lib $(WPDPACK)\Lib\wpcap.lib ws2_32.lib kernel32.lib user32.lib advapi32.lib iphlpapi.lib mprapi.lib
19+
CFLAGS=/MT -DETCDIR="\"$(ETCDIR)\"" -I$(SPREAD)\include -I$(WPDPACK)\Include -D_PATH_WACKAMOLE_PIDDIR="\"$(PIDDIR)\"" -DHAVE_CONFIG_H=1
20+
21+
TARGETS=wackamole.exe wackatrl.exe ife.exe
22+
23+
WACKOBJS=wackamole.obj alarm.obj lex.wack.obj y.tab.obj arpcache.obj spoofmanager.obj \
24+
abt.obj control.obj apue.obj configuration.obj userloader.obj ife-win32.obj \
25+
ife-icmp-support.obj win32.obj getopt_long.obj
26+
27+
WACKATRLOBJS=wackatrl.obj alarm.obj lex.wack.obj y.tab.obj apue.obj \
28+
configuration.obj userloader.obj win32.obj getopt_long.obj
29+
30+
IFEOBJS=ife.obj ife-win32.obj arpcache.obj abt.obj alarm.obj ife-icmp-support.obj
31+
32+
CONFIGFILES=config.h defines.h
33+
34+
all: $(CONFIGFILES) $(TARGETS)
35+
36+
parser: lex.wack.c y.tab.c y.tab.h
37+
38+
$(WACKOBJS): config.h
39+
40+
$(WACKATRLOBJS): config.h
41+
42+
config.h: config.w32.h
43+
copy /y config.w32.h config.h
44+
45+
lex.wack.c: config_gram.l y.tab.h
46+
$(LEX) -Pwack config_gram.l
47+
48+
y.tab.c y.tab.h: config_gram.y
49+
$(YACC) -p wack -d config_gram.y
50+
51+
wackamole.exe: $(WACKOBJS)
52+
$(CC) -o wackamole.exe $(WACKOBJS) $(LIBS)
53+
54+
wackatrl.exe: $(WACKATRLOBJS)
55+
$(CC) -o wackatrl.exe $(WACKATRLOBJS) $(LIBS)
56+
57+
ife.exe: $(IFEOBJS)
58+
$(CC) -o ife.exe $(IFEOBJS) $(LIBS)
59+
60+
clean:
61+
-del /q *.obj *.exe *.exp *.lib

NOTICE

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
This is the NOTICE file that hold all of the acknowledgements and other
2+
stuff that couldn't be put anywhere else.
3+
4+
Creators:
5+
Yair Amir
6+
Ryan Caudy
7+
Aashima Munjal
8+
Theo Schlossnagle
9+
10+
Individual Participants:
11+
12+
Contributors:
13+
14+
Participating Entities:
15+
The Center for Networking and Distributed Systems & Yair Amir @ JHU
16+
(for providing a productive stimulating environment
17+
in which great projects like this can happen)
18+
19+
wackamole development was partially funded by a grant from the Defense
20+
Advanced Research Projects Agency (DARPA) to Johns Hopkins University. The U.S.
21+
Government retains certain rights in this software.

0 commit comments

Comments
 (0)