diff -ruN ipvs-0.9.16-2.2.17/ipvsadm/Makefile ipvs-0.9.16-2.2.17.new/ipvsadm/Makefile
--- ipvs-0.9.16-2.2.17/ipvsadm/Makefile	Thu Jul  6 08:21:46 2000
+++ ipvs-0.9.16-2.2.17.new/ipvsadm/Makefile	Fri Oct 13 15:34:40 2000
@@ -21,21 +21,31 @@
 #                     :   Added autodetection of libpot
 #                     :   Added BUILD_ROOT support
 #      Wensong        :   Changed the OBJS according to detection
+#      Horms          :   Moved ipvsadm back into /sbin where it belongs
+#                         as it is more or less analogous to both route 
+#                         and ipchains both of which reside in /sbin.
+#                         Added rpm target whose only dependancy is 
+#                         the rpms target
 #
 
 NAME	= ipvsadm
-VERSION	= 1.11
-RELEASE	= 4
+VERSION	= 1.12
+RELEASE	= 1
 
 CC	= gcc
 CFLAGS	= -Wall -Wunused -g -O2
-SBIN    = $(BUILD_ROOT)/usr/sbin
+SBIN    = $(BUILD_ROOT)/sbin
 MAN     = $(BUILD_ROOT)/usr/man/man8
 MKDIR   = mkdir
 INSTALL = install
 INCLUDE = -I/usr/src/linux/include
 LIB_SEARCH = /lib /usr/lib /usr/local/lib
 
+# Where to install INIT scripts
+# Will only install files here if these directories already exist
+# as if the directories don't exist then the system is unlikely to
+# use the files
+INIT = $(BUILD_ROOT)/etc/rc.d/init.d
 
 #####################################
 # No servicable parts below this line
@@ -63,15 +73,19 @@
 all:            ipvsadm
 
 ipvsadm:	$(OBJS)
-		echo $(LIBS)
 		$(CC) $(CFLAGS) -o ipvsadm $(OBJS) $(LIBS)
 
 install:        ipvsadm
 		strip ipvsadm
 		if [ ! -d $(SBIN) ]; then $(MKDIR) -p $(SBIN); fi
 		$(INSTALL) -m 0755 ipvsadm $(SBIN)
+		$(INSTALL) -m 0755 ipvsadm-save $(SBIN)
+		$(INSTALL) -m 0755 ipvsadm-restore $(SBIN)
 		if [ ! -d $(MAN) ]; then $(MKDIR) -p $(MAN); fi
 		$(INSTALL) -m 0644 ipvsadm.8 $(MAN)
+		if [ -d $(INIT) ]; then \
+		  $(INSTALL) -m 0755 ipvsadm.sh $(INIT)/ipvsadm ;\
+		fi
 
 clean:
 		rm -f ipvsadm *.o core *~ $(NAME).spec \
@@ -86,6 +100,8 @@
 			--exclude $(NAME)-$(VERSION).tar.gz \
 			ipvsadm ; \
 			mv $(NAME)-$(VERSION).tar.gz ipvsadm )
+
+rpm:		rpms
 
 rpms:		dist
 		cp $(NAME)-$(VERSION).tar.gz /usr/src/redhat/SOURCES/
diff -ruN ipvs-0.9.16-2.2.17/ipvsadm/ipvsadm-restore ipvs-0.9.16-2.2.17.new/ipvsadm/ipvsadm-restore
--- ipvs-0.9.16-2.2.17/ipvsadm/ipvsadm-restore	Wed Dec 31 19:00:00 1969
+++ ipvs-0.9.16-2.2.17.new/ipvsadm/ipvsadm-restore	Fri Oct 13 15:34:03 2000
@@ -0,0 +1,27 @@
+#!/bin/bash
+#      ipvsadm-save - Save IPVS rules
+#
+#      A very simple wrapper to save IPVS rules
+#      Inspired by ipchains-save.
+#
+#      Version: $Id: Exp $
+#
+#      Script Author: Horms <horms@vergenet.net>
+#
+#      This file:
+#
+#      ChangeLog
+#
+#
+
+# The path is fixed, this should probably be generated at
+# compile time but since the Makefile isn't autogenereated
+# having static values is ok. /sbin is the default location
+# for ipvsadm, /usr/sbin is where some distributions like
+# to put it
+
+PATH=/sbin:/usr/sbin
+
+# All the work is actually done in ipvsadm, horay
+
+ipvsadm -R
diff -ruN ipvs-0.9.16-2.2.17/ipvsadm/ipvsadm-save ipvs-0.9.16-2.2.17.new/ipvsadm/ipvsadm-save
--- ipvs-0.9.16-2.2.17/ipvsadm/ipvsadm-save	Wed Dec 31 19:00:00 1969
+++ ipvs-0.9.16-2.2.17.new/ipvsadm/ipvsadm-save	Fri Oct 13 15:34:03 2000
@@ -0,0 +1,27 @@
+#!/bin/bash
+#      ipvsadm-save - Save IPVS rules
+#
+#      A very simple wrapper to save IPVS rules
+#      Inspired by ipchains-save.
+#
+#      Version: $Id: Exp $
+#
+#      Script Author: Horms <horms@vergenet.net>
+#
+#      This file:
+#
+#      ChangeLog
+#
+#
+
+# The path is fixed, this should probably be generated at
+# compile time but since the Makefile isn't autogenereated
+# having static values is ok. /sbin is the default location
+# for ipvsadm, /usr/sbin is where some distributions like
+# to put it
+
+PATH=/sbin:/usr/sbin
+
+# All the work is actually done in ipvsadm, horay
+
+ipvsadm -S
diff -ruN ipvs-0.9.16-2.2.17/ipvsadm/ipvsadm.c ipvs-0.9.16-2.2.17.new/ipvsadm/ipvsadm.c
--- ipvs-0.9.16-2.2.17/ipvsadm/ipvsadm.c	Fri Jun 16 21:39:02 2000
+++ ipvs-0.9.16-2.2.17.new/ipvsadm/ipvsadm.c	Sun Oct 15 14:43:26 2000
@@ -44,6 +44,10 @@
  *                                with popt problem fixed.
  *        Wensong Zhang       :   split the process_options and make
  *                                two versions of parse_options.
+ *        Horms               :   attempting to save or restore when
+ *        		      :   compiled against getopt_long now results
+ *        		          in an informative error message rather
+ *        		          than the usage information
  *
  *
  *      ippfvsadm - Port Fowarding & Virtual Server ADMinistration program
@@ -116,7 +120,7 @@
 #define IPVS_OPTION_PROCESSING          "getopt_long"
 #endif
 
-#define IPVSADM_VERSION_NO              "v1.11"
+#define IPVSADM_VERSION_NO              "v1.13"
 #define IPVSADM_VERSION_DATE            "2000/06/16"
 #define IPVSADM_VERSION         IPVSADM_VERSION_NO " " IPVSADM_VERSION_DATE
 
@@ -578,6 +582,8 @@
         	{"edit-server", 0, 0, 'e'},
         	{"delete-server", 0, 0, 'd'},
         	{"help", 0, 0, 'h'},
+        	{"save", 0, 0, 'S'},
+        	{"restore", 0, 0, 'R'},
         	{"tcp-service", 1, 0, 't'},
         	{"udp-service", 1, 0, 'u'},
         	{"fwmark-service", 1, 0, 'f'},
@@ -602,7 +608,7 @@
 	/* Re-process the arguments each time options is called*/
 	optind = 1;
 
-	if ((cmd = getopt_long(argc, argv, "AEDCaedlLh",
+	if ((cmd = getopt_long(argc, argv, "AEDCSRaedlLh",
                                long_options, NULL)) == EOF)
 		usage_exit(argv[0], -1);
 
@@ -642,6 +648,20 @@
                 break;
 	case 'h':
                 usage_exit(argv[0], 0);
+		break;
+        case 'S': 
+		fprintf(stderr, 
+			"ipvsadm: Invalid option: -S or --save\n"
+			"  Saving of ipvsadm rules is only supported when\n"
+			"  ipvsadm is compiled against libpopt.\n");
+		exit(-1);
+		break;
+	case 'R':
+		fprintf(stderr, 
+			"ipvsadm: Invalid option: -R or --restore\n"
+			"Restoring ipvsadm rules is only supported when \n"
+			"ipvsadm is compiled against libpopt.\n");
+		exit(-1);
 		break;
         default:
                 usage_exit(argv[0], -1);
diff -ruN ipvs-0.9.16-2.2.17/ipvsadm/ipvsadm.sh ipvs-0.9.16-2.2.17.new/ipvsadm/ipvsadm.sh
--- ipvs-0.9.16-2.2.17/ipvsadm/ipvsadm.sh	Wed Dec 31 19:00:00 1969
+++ ipvs-0.9.16-2.2.17.new/ipvsadm/ipvsadm.sh	Fri Oct 13 15:34:03 2000
@@ -0,0 +1,83 @@
+#!/bin/sh
+#
+# Startup script handle the initialisation of IPVS
+#
+# chkconfig: - 08 92
+#
+# description: Initialise the Linux Virtual Server
+#              http://www.linuxvirtualserver.org/
+#
+# Script Author: Horms <horms@vergenet.net>
+#
+# Based on init script for ipchains by Joshua Jensen <joshua@redhat.com>
+#
+# config: /etc/sysconfig/ipvsadm
+
+
+IPVSADM_CONFIG=/etc/sysconfig/ipvsadm
+
+# Exit silently if there is no configuration file
+if [ ! -f $IPVSADM_CONFIG ]; then
+  exit
+fi
+
+# Use the funtions provided by Red Hat
+# This should be made distribution agnostic
+. /etc/rc.d/init.d/functions
+
+# Check for ipvsadm in both /sbin and /usr/sbin
+# The default install puts it in /sbin, as it is analogos to commands such
+# as route and ipchains that live in /sbin.  Some vendors, most notibly 
+# Red Hat insist on movint it to /usr/sbin
+if [ ! -x /sbin/ipvsadm -a  ! -x /usr/sbin/ipvsadm ]; then
+    exit 0
+fi
+
+case "$1" in
+  start)
+    # If we don't clear these first, we might be adding to
+    #  pre-existing rules.
+    action "Clearing the current IPVS table:" ipvsadm -C
+    echo -n "Applying IPVS configuration: "
+      grep -v "^#" $IPVSADM_CONFIG | ipvsadm-restore -p -f && \
+      success "Applying IPVS configuration" || \
+      failure "Applying IPVS configuration"
+    echo
+    touch /var/lock/subsys/ipvsadm
+  ;;
+
+  stop)
+        action "Clearing the current IPVS table:" ipvsadm -C
+	rm -f /var/lock/subsys/ipvsadm
+	;;
+
+  restart)
+	#Start should flush everything
+	$0 start
+	;;
+
+  panic)
+	# I'm not sure what panic does but in the case of IPVS	
+        # it makes sense just to clear everything
+        action "Clearing the current IPVS table:" ipvsadm -C
+	;;
+
+  status)
+	ipvsadm -L -n
+	;;
+
+  save)
+	echo -n "Saving IPVS table to $IPVSADM_CONFIG: "
+	ipvsadm-save > $IPVSADM_CONFIG  2>/dev/null && \
+	  success "Saving IPVS table to $IPVSADM_CONFIG" || \
+	  failure "Saving IPVS table to $IPVSADM_CONFIG"
+        echo
+	;;
+
+  *)
+	echo "Usage: $0 {start|stop|restart|status|panic|save}"
+	exit 1
+esac
+
+exit 0
+
diff -ruN ipvs-0.9.16-2.2.17/ipvsadm/ipvsadm.spec.in ipvs-0.9.16-2.2.17.new/ipvsadm/ipvsadm.spec.in
--- ipvs-0.9.16-2.2.17/ipvsadm/ipvsadm.spec.in	Thu Jul  6 08:21:46 2000
+++ ipvs-0.9.16-2.2.17.new/ipvsadm/ipvsadm.spec.in	Fri Oct 13 15:34:03 2000
@@ -12,7 +12,6 @@
 BuildRoot: /var/tmp/%name-%{PACKAGE_VERSION}-root
 Docdir: %{prefix}/doc
 Provides: %{name}-%{version}
-Obsoletes: ipvsadm <= 1.10
 Conflicts: piranha <= 0.4.14
 
 %description
@@ -30,7 +29,7 @@
 
 %install
 rm -rf $RPM_BUILD_ROOT
-mkdir -p ${RPM_BUILD_ROOT}/{sbin,usr/man/man8}
+mkdir -p ${RPM_BUILD_ROOT}/{sbin,usr/man/man8,etc/rc.d/init.d}
 BUILD_ROOT=${RPM_BUILD_ROOT} make install
 
 #File finding code thanks to Samuel Flory of VA Linux Systems
@@ -39,7 +38,7 @@
 find . -type d | sed '1,2d;s,^\.,\%attr(-\,root\,root) \%dir ,' \
   > ${RPM_BUILD_DIR}/%{name}-%{version}-%{release}.files
 # Files
-find . -type f | sed "s,^\.\(.*\),%attr (-\,root\,root) \1*," \
+find . -type f | sed "s,^\.\(.*\),%attr (-\,root\,root) \1," \
   >> ${RPM_BUILD_DIR}/%{name}-%{version}-%{release}.files
 # Symbolic links
 find . -type l | sed 's,^\.,\%attr(-\,root\,root) ,' \
@@ -57,6 +56,13 @@
 
 
 %changelog
+* Wed Aug 9 2000 Horms <horms@vergenet.net>
+- Removed Obseletes tag as ipvsadm is back in /sbin where it belongs 
+  as it is more or less analogous to both route and ipchains both of
+  which reside in /sbin.
+- Create directory to install init script into. Init scripts won't install
+  into build directory unless this is done
+
 * Thu Jul  6 2000 Wensong Zhang <wensong@linuxvirtualserver.org>
 - Changed to build rpms on the ipvsadm tar ball directly
 
