1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
|
DESTDIR =
bindir = /usr/sbin
etcdir = /etc/l2tpns
libdir = /usr/lib/l2tpns
man5dir = /usr/share/man/man5
man8dir = /usr/share/man/man8
statedir = /var/lib/l2tpns
DEFINES =
DEFINES += -DLIBDIR='"$(libdir)"'
DEFINES += -DETCDIR='"$(etcdir)"'
DEFINES += -DSTATEDIR='"$(statedir)"'
OPTIM =
OPTIM += -g
OPTIM += -O3
OPTIM += -funroll-loops
OPTIM += -fomit-frame-pointer
OPTIM += -finline-functions
#OPTIM += -fstrength-reduce
CC = gcc
LD = gcc
INCLUDES = -I.
CPPFLAGS = $(INCLUDES) $(DEFINES)
CFLAGS = -Wall $(OPTIM)
LDFLAGS =
LDLIBS =
INSTALL = install -c -D -o root -g root
l2tpns.LIBS = -lm -lcli -ldl
OBJS = arp.o cli.o cluster.o constants.o control.o icmp.o l2tpns.o \
ll.o md5.o ppp.o radius.o tbf.o util.o
PROGRAMS = l2tpns nsctl
PLUGINS = garden.so throttlectl.so autothrottle.so snoopctl.so \
autosnoop.so stripdomain.so setrxspeed.so
TESTS = generateload bounce
DEFINES += -DSTATISTICS
DEFINES += -DSTAT_CALLS
DEFINES += -DRINGBUFFER
DEFINES += -DBGP
OBJS += bgp.o
all: programs plugins tests
programs: $(PROGRAMS)
plugins: $(PLUGINS)
tests: $(TESTS)
clean:
rm -f *.o test/*.o $(PROGRAMS) $(PLUGINS) $(TESTS) Makefile.tmp Makefile.bak
depend:
(sed -n 'p; /^## Dependencies: (autogenerated) ##/q' Makefile && \
gcc -MM $(CPPFLAGS) $(OBJS:.o=.c) && \
gcc -MM $(CPPFLAGS) $(PLUGINS:.so=.c) | sed 's/\.o/.so/') >Makefile.tmp
mv Makefile Makefile.bak
mv Makefile.tmp Makefile
l2tpns: $(OBJS)
$(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS) $($@.LIBS)
nsctl: nsctl.o control.o
$(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS) $($@.LIBS)
generateload: test/generateload.o
$(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS) $($@.LIBS)
bounce: test/bounce.o
$(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS) $($@.LIBS)
%.o: %.c
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
%.so: %.c
$(CC) -fPIC -shared $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ $<
# install config files only if a startup-config does not exist yet
# this does not interfere when building rpms or debs and makes
# fast upgrading via make install possible
install: all
$(INSTALL) -m 0755 l2tpns $(DESTDIR)$(bindir)/l2tpns
$(INSTALL) -m 0755 nsctl $(DESTDIR)$(bindir)/nsctl
$(INSTALL) -m 0644 Docs/startup-config.5 $(DESTDIR)$(man5dir)/startup-config.5
$(INSTALL) -m 0644 Docs/l2tpns.8 $(DESTDIR)$(man8dir)/l2tpns.8
$(INSTALL) -m 0644 Docs/nsctl.8 $(DESTDIR)$(man8dir)/nsctl.8
gzip --best $(DESTDIR)$(man5dir)/*.5 $(DESTDIR)$(man8dir)/*.8
@if [ -f $(DESTDIR)$(etcdir)/startup-config ]; then \
echo '***' Installing default config files in $(DESTDIR)$(etcdir) as .defaults; \
suffix=.default; \
else \
echo '***' Installing default config files in $(DESTDIR)$(etcdir) - remember to adjust them; \
suffix=; \
fi; \
$(INSTALL) -m 0600 etc/startup-config.default $(DESTDIR)$(etcdir)/startup-config$$suffix; \
$(INSTALL) -m 0644 etc/ip_pool.default $(DESTDIR)$(etcdir)/ip_pool$$suffix; \
$(INSTALL) -m 0600 etc/users.default $(DESTDIR)$(etcdir)/users$$suffix
for plugin in $(PLUGINS); do \
$(INSTALL) -m 0755 $$plugin $(DESTDIR)$(libdir)/$$plugin; \
done
if [ -z $(DESTDIR) ] && [ ! -e /dev/net/tun ]; then \
mkdir /dev/net; \
mknod /dev/net/tun c 10 200; \
fi
.PHONY: all clean depend install
## Dependencies: (autogenerated) ##
arp.o: arp.c l2tpns.h
cli.o: cli.c l2tpns.h util.h cluster.h tbf.h ll.h bgp.h
cluster.o: cluster.c l2tpns.h cluster.h util.h tbf.h bgp.h
constants.o: constants.c constants.h
control.o: control.c l2tpns.h control.h
icmp.o: icmp.c l2tpns.h
l2tpns.o: l2tpns.c md5.h l2tpns.h cluster.h plugin.h ll.h constants.h \
control.h util.h tbf.h bgp.h
ll.o: ll.c ll.h
md5.o: md5.c md5.h
ppp.o: ppp.c l2tpns.h constants.h plugin.h util.h tbf.h cluster.h
radius.o: radius.c md5.h constants.h l2tpns.h plugin.h util.h
tbf.o: tbf.c l2tpns.h util.h tbf.h
util.o: util.c l2tpns.h bgp.h
bgp.o: bgp.c l2tpns.h bgp.h util.h
garden.so: garden.c l2tpns.h plugin.h control.h
throttlectl.so: throttlectl.c l2tpns.h plugin.h control.h
autothrottle.so: autothrottle.c l2tpns.h plugin.h
snoopctl.so: snoopctl.c l2tpns.h plugin.h control.h
autosnoop.so: autosnoop.c l2tpns.h plugin.h
stripdomain.so: stripdomain.c l2tpns.h plugin.h
setrxspeed.so: setrxspeed.c l2tpns.h plugin.h
|