keepalived-0.5.6 v0.5.6
authorAlexandre Cassen <acassen@freebox.fr>
Sat, 13 Apr 2002 03:52:48 +0000 (05:52 +0200)
committerAlexandre Cassen <acassen@freebox.fr>
Mon, 28 Sep 2009 08:58:54 +0000 (10:58 +0200)
* keepalived-0.5.6 released.
* VRRP : Review in "GOTO_MASTER_STATE" the IP address handling.
  send protocol adverts before registering IP address to the interface.
* VRRP : Review the "LEAVE_MASTER_STATE" to only handle state transition
  if wanted states are BACKUP or FAULT.
* VRRP : Review the BACKUP state to force new protocol election if
  receiving a lower priority advert.
* VRRP : Fixed a BACKUP to MASTER state transition only if interface is
  reported UP.
* VRRP : Fake the "ipvs_syncd_cmd" function if running LVS using a Kernel
  2.2.

57 files changed:
ChangeLog
VERSION
check_api.c
check_api.h
check_http.c
check_http.h
check_misc.c
check_misc.h
check_ssl.c
check_ssl.h
check_tcp.c
check_tcp.h
daemon.c
daemon.h
data.c
data.h
genhash/Makefile [deleted file]
ipfwwrapper.c
ipfwwrapper.h
ipvswrapper.c
ipvswrapper.h
ipwrapper.c
ipwrapper.h
layer4.c
layer4.h
list.c
list.h
main.c
main.h
memory.c
memory.h
parser.c
parser.h
pidfile.c
pidfile.h
scheduler.c
scheduler.h
smtp.c
smtp.h
timer.c
timer.h
utils.c
utils.h
vector.c
vector.h
vrrp.c
vrrp.h
vrrp_if.c
vrrp_if.h
vrrp_ipaddress.c
vrrp_ipaddress.h
vrrp_ipsecah.c
vrrp_ipsecah.h
vrrp_netlink.c
vrrp_netlink.h
vrrp_scheduler.c
vrrp_scheduler.h

index 7f819d7..ae6784a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2002-04-13  Alexandre Cassen  <acassen@linux-vs.org>
+       * keepalived-0.5.6 released.
+       * VRRP : Review in "GOTO_MASTER_STATE" the IP address handling.
+         send protocol adverts before registering IP address to the interface.
+       * VRRP : Review the "LEAVE_MASTER_STATE" to only handle state transition
+         if wanted states are BACKUP or FAULT.
+       * VRRP : Review the BACKUP state to force new protocol election if
+         receiving a lower priority advert.
+       * VRRP : Fixed a BACKUP to MASTER state transition only if interface is
+         reported UP.
+       * VRRP : Fake the "ipvs_syncd_cmd" function if running LVS using a Kernel
+         2.2.
+
 2002-04-10  Alexandre Cassen  <acassen@linux-vs.org>
        * keepalived-0.5.5 released.
        * Fixed a gratuitous ARP porting bug.
diff --git a/VERSION b/VERSION
index d1d899f..b49b253 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.5.5
+0.5.6
index a742fe4..6196bbd 100644 (file)
@@ -5,7 +5,7 @@
  *
  * Part:        Checkers registration.
  *
- * Version:     $Id: check_api.c,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: check_api.c,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *
index 4636457..01fc62a 100644 (file)
@@ -5,7 +5,7 @@
  *
  * Part:        Checkers arguments structures definitions.
  *
- * Version:     $Id: check_api.h,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: check_api.h,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *
index 778daef..2a35a75 100644 (file)
@@ -5,7 +5,7 @@
  *
  * Part:        WEB CHECK. Common HTTP/SSL checker primitives.
  *
- * Version:     $Id: check_http.c,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: check_http.c,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Authors:     Alexandre Cassen, <acassen@linux-vs.org>
  *              Jan Holmberg, <jan@artech.net>
index 97ecb81..61cbb46 100644 (file)
@@ -5,7 +5,7 @@
  *
  * Part:        check_http.c include file.
  *
- * Version:     $Id: check_http.h,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: check_http.h,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Authors:     Alexandre Cassen, <acassen@linux-vs.org>
  *              Jan Holmberg, <jan@artech.net>
index 779b083..146c73f 100644 (file)
@@ -6,7 +6,7 @@
  * Part:        MISC CHECK. Perform a system call to run an extra
  *              system prog or script.
  *
- * Version:     $Id: check_misc.c,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: check_misc.c,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Authors:     Alexandre Cassen, <acassen@linux-vs.org>
  *              Eric Jarman, <ehj38230@cmsu2.cmsu.edu>
index f149d98..fca618e 100644 (file)
@@ -5,7 +5,7 @@
  *
  * Part:        check_misc.c include file.
  *
- * Version:     $Id: check_misc.h,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: check_misc.h,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *              Eric Jarman, <ehj38230@cmsu2.cmsu.edu>
index 4872b02..84e1248 100644 (file)
@@ -7,7 +7,7 @@
  *              url, compute a MD5 over this result and match it to the
  *              expected value.
  *
- * Version:     $Id: check_ssl.c,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: check_ssl.c,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Authors:     Alexandre Cassen, <acassen@linux-vs.org>
  *              Jan Holmberg, <jan@artech.net>
index 40eacb4..62a199e 100644 (file)
@@ -5,7 +5,7 @@
  *
  * Part:        check_http.c include file.
  *
- * Version:     $Id: check_http.h,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: check_http.h,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Authors:     Alexandre Cassen, <acassen@linux-vs.org>
  *              Jan Holmberg, <jan@artech.net>
index db5cfba..956bf86 100644 (file)
@@ -5,7 +5,7 @@
  *
  * Part:        TCP checker.
  *
- * Version:     $Id: check_tcp.c,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: check_tcp.c,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *
index 0504d5a..02eebac 100644 (file)
@@ -5,7 +5,7 @@
  *
  * Part:        check_tcp.c include file.
  *
- * Version:     $Id: check_tcp.h,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: check_tcp.h,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *
index 498a254..42ff690 100644 (file)
--- a/daemon.c
+++ b/daemon.c
@@ -5,7 +5,7 @@
  *
  * Part:        Main program structure.
  *
- * Version:     $Id: main.c,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: main.c,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *
index 9ceb279..732432c 100644 (file)
--- a/daemon.h
+++ b/daemon.h
@@ -5,7 +5,7 @@
  *
  * Part:        Daemon process handling.
  *
- * Version:     $Id: daemon.h,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: daemon.h,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *
diff --git a/data.c b/data.c
index 0e95c51..52dc27c 100644 (file)
--- a/data.c
+++ b/data.c
@@ -5,7 +5,7 @@
  *
  * Part:        Dynamic data structure definition.
  *
- * Version:     $Id: data.c,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: data.c,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *
diff --git a/data.h b/data.h
index dcd2f4e..a216f82 100644 (file)
--- a/data.h
+++ b/data.h
@@ -5,7 +5,7 @@
  *
  * Part:        Dynamic data structure definition.
  *
- * Version:     $Id: data.h,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: data.h,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *
diff --git a/genhash/Makefile b/genhash/Makefile
deleted file mode 100644 (file)
index 3136b6e..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-# Generated automatically from Makefile.in by configure.
-# Makefile
-#
-# Keepalived OpenSource project.
-#
-# Copyright (C) 2001, 2002 Alexandre Cassen, <acassen@linux-vs.org>
-
-EXEC = genhash
-
-prefix = /usr/local
-exec_prefix = ${prefix}
-bindir = ${exec_prefix}/bin
-
-CC = gcc
-CFLAGS = -g -O2 -Wall -Wunused -Wstrict-prototypes
-LDFLAGS = -lpopt -lssl -lcrypto  
-
-OBJS = main.o client.o common.o
-
-all:   $(EXEC)
-       strip $(EXEC)
-       @echo ""
-       @echo "Make complete"
-
-$(EXEC): $(OBJS)
-       $(CC) $(OBJS) -o $(EXEC) $(LDFLAGS)
-
-clean:
-       rm -f core *.o $(EXEC)
-
-clean-dist:
-       rm -f $(bindir)/$(EXEC)
-
-install:       
-       install -m 755 $(EXEC) $(bindir)/
index e8b9e06..ed0f2d8 100644 (file)
@@ -7,7 +7,7 @@
  *              library to add/remove server MASQ rules to the kernel 
  *              firewall framework.
  *
- * Version:     $Id: ipfwwrapper.c,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: ipfwwrapper.c,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *
index 4ff0d15..6bc30b8 100644 (file)
@@ -5,7 +5,7 @@
  *
  * Part:        ipfwwrapper.c include file.
  *
- * Version:     $Id: ipfwwrapper.h,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: ipfwwrapper.h,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *
index 24a48b3..785390b 100644 (file)
@@ -6,7 +6,7 @@
  * Part:        IPVS Kernel wrapper. Use setsockopt call to add/remove
  *              server to/from the loadbalanced server pool.
  *  
- * Version:     $Id: ipvswrapper.c,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: ipvswrapper.c,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  * 
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *              
index 0351f51..deb68b9 100644 (file)
@@ -5,7 +5,7 @@
  *
  * Part:        ipvswrapper.c include file.
  *
- * Version:     $Id: ipvswrapper.h,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: ipvswrapper.h,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *
 #define IPVS_SUCCESS   1
 #define IPVS_CMD_DELAY 3
 
-#define IPVS_STARTDAEMON       IP_VS_SO_SET_STARTDAEMON
-#define IPVS_STOPDAEMON                IP_VS_SO_SET_STOPDAEMON
-#define IPVS_MASTER            IP_VS_STATE_MASTER
-#define IPVS_BACKUP            IP_VS_STATE_BACKUP
+#ifdef _KRNL_2_2_
+  #define IPVS_STARTDAEMON     1
+  #define IPVS_STOPDAEMON      2
+  #define IPVS_MASTER          3
+  #define IPVS_BACKUP          4
+#else
+  #define IPVS_STARTDAEMON     IP_VS_SO_SET_STARTDAEMON
+  #define IPVS_STOPDAEMON      IP_VS_SO_SET_STOPDAEMON
+  #define IPVS_MASTER          IP_VS_STATE_MASTER
+  #define IPVS_BACKUP          IP_VS_STATE_BACKUP
+#endif
 
 extern thread_master *master;
 
index fd233c4..2dbae89 100644 (file)
@@ -5,7 +5,7 @@
  *
  * Part:        Manipulation functions for IPVS & IPFW wrappers.
  *
- * Version:     $id: ipwrapper.c,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $id: ipwrapper.c,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *
index 88bf760..cbf7e73 100644 (file)
@@ -5,7 +5,7 @@
  *
  * Part:        ipwrapper.c include file.
  *
- * Version:     $Id: ipwrapper.h,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: ipwrapper.h,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *
index 5f1be04..49ea8d9 100644 (file)
--- a/layer4.c
+++ b/layer4.c
@@ -6,7 +6,7 @@
  * Part:        Layer4 checkers handling. Register worker threads &
  *              upper layer checkers.
  *
- * Version:     $Id: layer4.c,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: layer4.c,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *
index 658c22c..3dab641 100644 (file)
--- a/layer4.h
+++ b/layer4.h
@@ -5,7 +5,7 @@
  *
  * Part:        layer4.c include file.
  *
- * Version:     $Id: layer4.h,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: layer4.h,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *
diff --git a/list.c b/list.c
index e7ef21d..6af2a3b 100644 (file)
--- a/list.c
+++ b/list.c
@@ -5,7 +5,7 @@
  * 
  * Part:        List structure manipulation.
  *  
- * Version:     $Id: list.c,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: list.c,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  * 
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *              
diff --git a/list.h b/list.h
index df28817..78a97d4 100644 (file)
--- a/list.h
+++ b/list.h
@@ -5,7 +5,7 @@
  * 
  * Part:        list.c include file.
  *  
- * Version:     $Id: list.h,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: list.h,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *
diff --git a/main.c b/main.c
index 1ab7c61..d398db1 100644 (file)
--- a/main.c
+++ b/main.c
@@ -5,7 +5,7 @@
  *
  * Part:        Main program structure.
  *
- * Version:     $Id: main.c,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: main.c,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *
diff --git a/main.h b/main.h
index 5044e74..ba0c1f5 100644 (file)
--- a/main.h
+++ b/main.h
@@ -5,7 +5,7 @@
  *
  * Part:        Main program include file.
  *
- * Version:     $Id: main.h,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: main.h,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *
@@ -52,8 +52,8 @@ extern void register_vrrp_thread(void);
 /* Build version */
 #define PROG    "Keepalived"
 
-#define VERSION_CODE 0x000505
-#define DATE_CODE    0x0a0402
+#define VERSION_CODE 0x000506
+#define DATE_CODE    0x0d0402
 
 #define KEEPALIVED_VERSION(version)    \
        (version >> 16) & 0xFF,         \
index 63cfb31..f587bf0 100644 (file)
--- a/memory.c
+++ b/memory.c
@@ -6,7 +6,7 @@
  * Part:        Memory management framework. This framework is used to
  *              find any memory leak.
  *
- * Version:     $Id: memory.c,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: memory.c,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Authors:     Alexandre Cassen, <acassen@linux-vs.org>
  *              Jan Holmberg, <jan@artech.net>
index 3c6c5c6..7f209a5 100644 (file)
--- a/memory.h
+++ b/memory.h
@@ -5,7 +5,7 @@
  *
  * Part:        memory.c include file.
  *
- * Version:     $Id: memory.h,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: memory.h,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Authors:     Alexandre Cassen, <acassen@linux-vs.org>
  *              Jan Holmberg, <jan@artech.net>
index 60244c7..8aa0840 100644 (file)
--- a/parser.c
+++ b/parser.c
@@ -7,7 +7,7 @@
  *              data structure representation the conf file representing
  *              the loadbalanced server pool.
  *  
- * Version:     $Id: parser.c,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: parser.c,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  * 
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *              
index 0ad2fc3..ca14160 100644 (file)
--- a/parser.h
+++ b/parser.h
@@ -5,7 +5,7 @@
  * 
  * Part:        cfreader.c include file.
  *  
- * Version:     $Id: parser.h,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: parser.h,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *
index 5fb9775..51108d5 100644 (file)
--- a/pidfile.c
+++ b/pidfile.c
@@ -5,7 +5,7 @@
  *
  * Part:        pidfile utility.
  *
- * Version:     $Id: pidfile.c,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: pidfile.c,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *
index 2ec8cc4..bad0258 100644 (file)
--- a/pidfile.h
+++ b/pidfile.h
@@ -5,7 +5,7 @@
  *
  * Part:        pidfile.c include file.
  *
- * Version:     $Id: pidfile.h,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: pidfile.h,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *
index 267fc1a..dc3b5c1 100644 (file)
@@ -7,7 +7,7 @@
  *              the thread management routine (thread.c) present in the 
  *              very nice zebra project (http://www.zebra.org).
  *
- * Version:     $Id: scheduler.c,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: scheduler.c,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *
index e0df99a..f2d7f64 100644 (file)
@@ -5,7 +5,7 @@
  *
  * Part:        scheduler.c include file.
  *
- * Version:     $Id: scheduler.h,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: scheduler.h,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *
diff --git a/smtp.c b/smtp.c
index ebd3911..b82e33f 100644 (file)
--- a/smtp.c
+++ b/smtp.c
@@ -7,7 +7,7 @@
  *              using the smtp protocol according to the RFC 821. A non blocking
  *              timeouted connection is used to handle smtp protocol.
  *
- * Version:     $Id: smtp.c,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: smtp.c,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *
diff --git a/smtp.h b/smtp.h
index c7e9484..2af76a0 100644 (file)
--- a/smtp.h
+++ b/smtp.h
@@ -5,7 +5,7 @@
  *
  * Part:        smtp.c include file.
  *
- * Version:     $Id: smtp.h,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: smtp.h,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *
diff --git a/timer.c b/timer.c
index 3d24ef4..c724d73 100644 (file)
--- a/timer.c
+++ b/timer.c
@@ -5,7 +5,7 @@
  * 
  * Part:        Timer manipulations.
  *  
- * Version:     $Id: timer.c,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: timer.c,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  * 
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *              
diff --git a/timer.h b/timer.h
index 3823a00..8d4e0c9 100644 (file)
--- a/timer.h
+++ b/timer.h
@@ -5,7 +5,7 @@
  * 
  * Part:        timer.c include file.
  *  
- * Version:     $Id: timer.h,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: timer.h,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *
diff --git a/utils.c b/utils.c
index 80faab8..1a43332 100644 (file)
--- a/utils.c
+++ b/utils.c
@@ -5,7 +5,7 @@
  *
  * Part:        General program utils.
  *
- * Version:     $Id: utils.c,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: utils.c,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *
diff --git a/utils.h b/utils.h
index 38424b0..494873d 100644 (file)
--- a/utils.h
+++ b/utils.h
@@ -5,7 +5,7 @@
  *
  * Part:        utils.h include file.
  *
- * Version:     $Id: utils.h,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: utils.h,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *
index c928d2b..1864dea 100644 (file)
--- a/vector.c
+++ b/vector.c
@@ -5,7 +5,7 @@
  * 
  * Part:        Vector structure manipulation.
  *  
- * Version:     $Id: vector.c,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: vector.c,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  * 
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *              
index 9ce4931..ce4e600 100644 (file)
--- a/vector.h
+++ b/vector.h
@@ -5,7 +5,7 @@
  * 
  * Part:        vector.c include file.
  *  
- * Version:     $Id: vector.h,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: vector.h,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *
diff --git a/vrrp.c b/vrrp.c
index 1474d24..a5f7991 100644 (file)
--- a/vrrp.c
+++ b/vrrp.c
@@ -8,7 +8,7 @@
  *              master fails, a backup server takes over.
  *              The original implementation has been made by jerome etienne.
  *
- * Version:     $Id: vrrp.c,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: vrrp.c,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *
@@ -638,7 +638,7 @@ static int vrrp_send_pkt(vrrp_rt *vrrp, char *buffer, int buflen)
 }
 
 /* send VRRP advertissement */
-static int vrrp_send_adv(vrrp_rt *vrrp, int prio)
+int vrrp_send_adv(vrrp_rt *vrrp, int prio)
 {
   int buflen, ret;
   char *buffer;
@@ -742,12 +742,12 @@ void vrrp_send_gratuitous_arp(vrrp_rt *vrrp)
 /* becoming master */
 void vrrp_state_goto_master(vrrp_rt *vrrp)
 {
-  /* add the ip addresses */
-  vrrp_handle_ipaddress(vrrp, VRRP_IPADDRESS_ADD);
-
   /* send an advertisement */
   vrrp_send_adv(vrrp, vrrp->priority);
 
+  /* add the ip addresses */
+  vrrp_handle_ipaddress(vrrp, VRRP_IPADDRESS_ADD);
+
   /* remotes arp tables update */
   syslog(LOG_INFO, "Sending gratuitous ARP on %s"
                  , IF_NAME(vrrp->ifp));
@@ -792,16 +792,6 @@ static void vrrp_restore_interface(vrrp_rt *vrrp, int advF)
 
 void vrrp_state_leave_master(vrrp_rt *vrrp)
 {
-  /* Remove VIPs */
-  vrrp_restore_interface(vrrp, 0);
-
-  if (vrrp->wantstate == VRRP_STATE_BACK)
-    syslog(LOG_INFO, "VRRP_Instance(%s) Entering BACKUP STATE"
-                   , vrrp->iname);
-  if (vrrp->wantstate == VRRP_STATE_GOTO_FAULT)
-    syslog(LOG_INFO, "VRRP_Instance(%s) Entering FAULT STATE"
-                   , vrrp->iname);
-
   /* Check if notify is needed */
   if (vrrp->notify_exec) {
     if (vrrp->wantstate == VRRP_STATE_BACK)
@@ -823,9 +813,15 @@ void vrrp_state_leave_master(vrrp_rt *vrrp)
   /* set the new vrrp state */
   switch (vrrp->wantstate) {
     case VRRP_STATE_BACK:
+      syslog(LOG_INFO, "VRRP_Instance(%s) Entering BACKUP STATE"
+                     , vrrp->iname);
+      vrrp_restore_interface(vrrp, 0);
       vrrp->state = vrrp->wantstate;
       break;
     case VRRP_STATE_GOTO_FAULT:
+      syslog(LOG_INFO, "VRRP_Instance(%s) Entering FAULT STATE"
+                     , vrrp->iname);
+      vrrp_restore_interface(vrrp, 0);
       vrrp->state = VRRP_STATE_FAULT;
       break;
   }
@@ -834,9 +830,9 @@ void vrrp_state_leave_master(vrrp_rt *vrrp)
 /* BACKUP state processing */
 void vrrp_state_backup(vrrp_rt *vrrp, char *buf, int buflen)
 {
-  int ret      = 0;
-  struct iphdr *iph  = (struct iphdr *)buf;
-  vrrp_pkt     *hd   = NULL;
+  struct iphdr *iph = (struct iphdr *)buf;
+  vrrp_pkt     *hd  = NULL;
+  int ret           = 0;
 
   /* Fill the VRRP header */
   switch (iph->protocol) {
@@ -858,8 +854,10 @@ void vrrp_state_backup(vrrp_rt *vrrp, char *buf, int buflen)
     vrrp->ms_down_timer = 3 * vrrp->adver_int + VRRP_TIMER_SKEW(vrrp);
   } else if (hd->priority == 0) {
     vrrp->ms_down_timer = VRRP_TIMER_SKEW(vrrp);
-  } else if( !vrrp->preempt || hd->priority >= vrrp->priority ) {
+  } else if (!vrrp->preempt || hd->priority >= vrrp->priority) {
     vrrp->ms_down_timer = 3 * vrrp->adver_int + VRRP_TIMER_SKEW(vrrp);
+  } else if (hd->priority < vrrp->priority) {
+    vrrp->wantstate = VRRP_STATE_GOTO_MASTER;
   }
 }
 
@@ -913,8 +911,6 @@ int vrrp_state_master_rx(vrrp_rt *vrrp, char *buf, int buflen)
              ntohl(iph->saddr) > IF_ADDR(vrrp->ifp))) {
     syslog(LOG_INFO, "VRRP_Instance(%s) Received higher prio advert"
                    , vrrp->iname);
-    syslog(LOG_INFO, "VRRP_Instance(%s) Entering BACKUP state"
-                   , vrrp->iname);
     vrrp->ms_down_timer = 3 * vrrp->adver_int + VRRP_TIMER_SKEW(vrrp);
     vrrp->state = VRRP_STATE_BACK;
     return 1;
@@ -953,8 +949,6 @@ int vrrp_state_fault_rx(vrrp_rt *vrrp, char *buf, int buflen)
              hd->priority == VRRP_PRIO_OWNER)
     return 1;
 
-printf("Local prio: %d, remote prio: %d\n", vrrp->priority, hd->priority);
-
   return 0;
 }
 
diff --git a/vrrp.h b/vrrp.h
index 9cb8c67..2a3d54f 100644 (file)
--- a/vrrp.h
+++ b/vrrp.h
@@ -6,7 +6,7 @@
  *
  * Part:        vrrp.c program include file.
  *
- * Version:     $Id: vrrp.h,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: vrrp.h,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *              Based on the Jerome Etienne, <jetienne@arobas.net> code.
@@ -166,6 +166,7 @@ extern int open_vrrp_socket(const int proto, const int index);
 extern void new_vrrp_socket(vrrp_rt *vrrp);
 extern void close_vrrp_socket(vrrp_rt *vrrp);
 extern void vrrp_send_gratuitous_arp(vrrp_rt *vrrp);
+extern int vrrp_send_adv(vrrp_rt *vrrp, int prio);
 extern int vrrp_state_fault_rx(vrrp_rt *vrrp, char *buf, int buflen);
 extern int vrrp_state_master_rx(vrrp_rt *vrrp, char *buf, int buflen);
 extern void vrrp_state_master_tx(vrrp_rt *vrrp, const int prio);
index 46e367f..1d74b06 100644 (file)
--- a/vrrp_if.c
+++ b/vrrp_if.c
@@ -5,7 +5,7 @@
  *
  * Part:        Interfaces manipulation.
  *
- * Version:     $Id: vrrp_if.c,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: vrrp_if.c,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *
@@ -283,6 +283,7 @@ void free_interface_queue(void)
 {
   if (!LIST_ISEMPTY(if_queue))
     free_list(if_queue);
+  netlink_close(&nl_kernel);
 }
 void init_interface_queue(void)
 {
index 89b7bb4..9cd07e5 100644 (file)
--- a/vrrp_if.h
+++ b/vrrp_if.h
@@ -5,7 +5,7 @@
  *
  * Part:        vrrp_if.c include file.
  *
- * Version:     $Id: vrrp_if.h,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: vrrp_if.h,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *
index 1d937ad..4bc65f5 100644 (file)
@@ -5,7 +5,7 @@
  *
  * Part:        NETLINK IPv4 address manipulation.
  *
- * Version:     $Id: vrrp_ipaddress.c,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: vrrp_ipaddress.c,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *
@@ -23,9 +23,7 @@
 /* local include */
 #include "vrrp_ipaddress.h"
 #include "vrrp_netlink.h"
-
-/* Check if interface is UP */
-
+#include "utils.h"
 
 /* Add/Delete IP address to a specific interface */
 int netlink_address_ipv4(int ifindex, uint32_t addr, int cmd)
@@ -46,7 +44,7 @@ int netlink_address_ipv4(int ifindex, uint32_t addr, int cmd)
   req.ifa.ifa_family = AF_INET;
   req.ifa.ifa_index  = ifindex;
   req.ifa.ifa_prefixlen  = 32;
-  
+
   addr = htonl(addr);
   addattr_l(&req.n, sizeof(req), IFA_LOCAL, &addr, sizeof(addr));
 
index 55d0f74..cc979a6 100644 (file)
@@ -5,7 +5,7 @@
  *
  * Part:        vrrp_ipaddress.c include file.
  *
- * Version:     $Id: vrrp_ipaddress.h,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: vrrp_ipaddress.h,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *
index 1fc60d1..9ba6d54 100644 (file)
@@ -7,7 +7,7 @@
  *              authentication data encryption using HMAC MD5 according to
  *              RFCs 2085 & 2104.
  *
- * Version:     $Id: vrrp_ipsecah.c,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: vrrp_ipsecah.c,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *
index fe21019..df835cd 100644 (file)
@@ -5,7 +5,7 @@
  *
  * Part:        vrrp_ipsecah.c include file.
  * 
- * Version:     $Id: vrrp_ipsecah.h,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: vrrp_ipsecah.h,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  * 
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *              
index cc08488..b31c85f 100644 (file)
@@ -5,7 +5,7 @@
  *
  * Part:        NETLINK kernel command channel.
  *
- * Version:     $Id: vrrp_netlink.c,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: vrrp_netlink.c,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *
index 7e4f7c7..5665bee 100644 (file)
@@ -5,7 +5,7 @@
  *
  * Part:        vrrp_netlink.c include file.
  *
- * Version:     $Id: vrrp_netlink.h,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: vrrp_netlink.h,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *
index b9c9214..d34e3b7 100644 (file)
@@ -5,7 +5,7 @@
  *
  * Part:        Sheduling framework for vrrp code.
  *
- * Version:     $Id: vrrp_scheduler.c,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: vrrp_scheduler.c,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  *
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *
@@ -403,10 +403,11 @@ static void vrrp_handle_leave_master(vrrp_rt *vrrp
     syslog(LOG_INFO, "Kernel is reporting: interface %s DOWN"
                    , IF_NAME(vrrp->ifp));
     vrrp->wantstate = VRRP_STATE_GOTO_FAULT;
-  } else if (vrrp_state_master_rx(vrrp, vrrp_buffer, len))
+    vrrp_state_leave_master(vrrp);
+  } else if (vrrp_state_master_rx(vrrp, vrrp_buffer, len)) {
     vrrp->wantstate = VRRP_STATE_BACK;
-
-  vrrp_state_leave_master(vrrp);
+    vrrp_state_leave_master(vrrp);
+  }
 }
 
 static void vrrp_handle_leave_fault(vrrp_rt *vrrp
@@ -497,11 +498,11 @@ static int vrrp_handle_state(vrrp_rt *vrrp
 
 static void vrrp_handle_goto_master(vrrp_rt *vrrp)
 {
-//  if (!IF_ISUP(vrrp->ifp)) {
-//    syslog(LOG_INFO, "Kernel is reporting: interface %s DOWN"
-//                   , IF_NAME(vrrp->ifp));
-//    vrrp->state = VRRP_STATE_FAULT;
-//  } else {
+  if (!IF_ISUP(vrrp->ifp)) {
+    syslog(LOG_INFO, "Kernel is reporting: interface %s DOWN"
+                   , IF_NAME(vrrp->ifp));
+    vrrp->state = VRRP_STATE_FAULT;
+  } else {
     /* If becoming MASTER in IPSEC AH AUTH, we reset the anti-replay */
     if (vrrp->ipsecah_counter->cycle) {
       vrrp->ipsecah_counter->cycle      = 0;
@@ -513,7 +514,7 @@ static void vrrp_handle_goto_master(vrrp_rt *vrrp)
 
     /* handle master state transition */
     vrrp_state_goto_master(vrrp);
-//  }
+  }
 }
 
 static void vrrp_handle_master(vrrp_rt *vrrp)
@@ -767,6 +768,25 @@ static int vrrp_dispatcher_read(int fd)
   }
 
   /*
+   * Handle wanted transition to MASTER state.
+   * When Instance not in FAULT state received a remote
+   * lower priotity advert => For a new VRRP election.
+   */
+  if (vrrp->state     == VRRP_STATE_BACK        && 
+      vrrp->wantstate == VRRP_STATE_GOTO_MASTER &&
+      vrrp->isync) {
+    vrrp_isync = vrrp_search_instance_isync(vrrp->isync);
+
+    if (vrrp_isync->state != VRRP_STATE_FAULT) {
+      /* Force a new protocol master election */
+      syslog(LOG_INFO, "VRRP_Instance(%s) forcing a new MASTER election"
+                     , vrrp->iname);
+      vrrp_send_adv(vrrp, vrrp->priority);
+    }
+  }
+
+
+  /*
    * Refresh sands only if found matching instance.
    * Otherwize the packet is simply ignored...
    *
index 6d674ac..dd6a4e1 100644 (file)
@@ -5,7 +5,7 @@
  *
  * Part:        vrrp_scheduler.c include file.
  * 
- * Version:     $Id: vrrp_scheduler.h,v 0.5.5 2002/04/10 02:34:23 acassen Exp $
+ * Version:     $Id: vrrp_scheduler.h,v 0.5.6 2002/04/13 06:21:33 acassen Exp $
  * 
  * Author:      Alexandre Cassen, <acassen@linux-vs.org>
  *