# ipvs: IP Virtual Server Module for the NetFilter framework

# uncomment the following line on an SMP system
#SMPFLAGS = -D__SMP__

# uncomment the following line for DEBUG
DEBUGFLAGS = -DCONFIG_IP_VS_DEBUG -g

# need to specify the path of kernel source
KERNELSOURCE	= /usr/src/linux

KERNELRELEASE	= $(shell uname -r)

# 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/

CC		= gcc
CFLAGS		= -D__KERNEL__ -DMODULE -DEXPORT_SYMTAB -DMODVERSIONS	\
		  $(SMPFLAGS) $(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_xmit.o ip_vs_timer.o ip_vs_app.o ip_vs_sync.o	   \
		  ip_vs_est.o ip_vs_proto.o ip_vs_proto_tcp.o		   \
		  ip_vs_proto_udp.o ip_vs_proto_icmp.o ip_vs_proto_ahesp.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 -a

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