# ipvs: IP Virtual Server Module for the NetFilter framework # uncomment the following line for debugging DEBUGFLAGS = -DCONFIG_IP_VS_DEBUG -g # need to specify the path of kernel source KERNELSOURCE = /usr/src/linux KERNELRELEASE = $(shell grep UTS_RELEASE \ $(KERNELSOURCE)/include/linux/version.h | \ cut -d '"' -f 2 | tail -1) KERNELSYMS = /boot/System.map-$(KERNELRELEASE) # As per the Linux Kernel's Makefile: # INSTALL_MOD_PATH specifies a prefix to MODLIB for module directory # relocations required by build roots. This is not defined in the # makefile but the arguement can be passed to make if needed. MODLIB = $(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE)/kernel/net/ipv4/ipvs/ # Set DEPMOD_OPTS if INSTALL_MOD_PATH is not null ifneq (, $(INSTALL_MOD_PATH)) DEPMOD_OPTS = -b $(INSTALL_MOD_PATH) endif CC = gcc CFLAGS = -D__KERNEL__ -DMODULE -DEXPORT_SYMTAB -DMODVERSIONS \ $(DEBUGFLAGS) -O2 -Wall -Wstrict-prototypes \ -I$(KERNELSOURCE)/include \ -include $(KERNELSOURCE)/include/linux/modversions.h CORE = ip_vs.o CORE_OBJS = ip_vs_conn.o ip_vs_core.o ip_vs_ctl.o ip_vs_sched.o \ ip_vs_timer.o ip_vs_app.o ip_vs_sync.o ip_vs_est.o SCHEDULERS = ip_vs_lc.o ip_vs_rr.o ip_vs_wlc.o ip_vs_wrr.o \ ip_vs_lblc.o ip_vs_lblcr.o ip_vs_dh.o ip_vs_sh.o APPMODS = ip_vs_ftp.o all: $(CORE) $(SCHEDULERS) $(APPMODS) ip_vs.o: $(CORE_OBJS) $(LD) -r $^ -o $@ install: ip_vs.o -rmmod ip_vs insmod ip_vs.o lsmod modules_install: if [ ! -d "$(MODLIB)" ]; then mkdir -p "$(MODLIB)"; fi install -m 600 -c $(CORE) $(SCHEDULERS) $(APPMODS) "$(MODLIB)" depmod -ae -F $(KERNELSYMS) $(DEPMOD_OPTS) $(KERNELRELEASE) modules_uninstall: (cd "$(MODLIB)"; rm -f $(CORE) $(SCHEDULERS) $(APPMODS)) rmdir "$(MODLIB)" clean: rm -f *.o *~ *.bak *.orig *.rej distclean: clean make -C ipvsadm distclean rm -f TAGS tags