forked from acassen/keepalived
-
Notifications
You must be signed in to change notification settings - Fork 1
/
ChangeLog
2008 lines (1937 loc) · 104 KB
/
ChangeLog
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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
2012-08-20 Alexandre Cassen <[email protected]>
* keepalived-1.2.6 released.
* Rename global config data variable 'global_data'.
From Ryan O'Hara :
This patch renames the global configuration data
variable from 'data' to 'global_data'. Three reasons for
renaming this varibale:
- Fixes shadow declaration of 'data' in several locations.
- Is more consistent with other global data variables
(ie. vrrp_data, check_data).
- Functions like free_global_data and dump_global_data were
ignoring conf_data_t argument and using global variable
instead.
* Ryan O'Hara: Fix shadow declaration of 'vrrp_data' variable.
* Ryan O'Hara: Fix shadow declaration of 'check_data' variable.
* Ryan O'Hara: Remove shadow declaration of 'element e' in
vrrp_init_state.
* check: Avoid the use of kernel defines in libipvs userland
prototypes.
* vrrp: Correctly handle macvlan interface when config file is
re-loaded. From Bob Gilligan :
Testing with the 1.2.0 branch, bring keepalived up with a
vrrp_instance that is configured with use_vmac. Then delete
that vrrp_instance from the config file. Then tell keepalived
to re-read its config file with SIGHUP. The vrrp_instance will
be stopped, but the macvlan interface will remain. The obvious
fix would be to add code to call netlink_link_del_vmac() in
clear_diff_vrrp(). There's one problem with that: the code
needs the ifindex of the macvlan interface to delete it, but
that resides in the interface structure that was freed earlier
in the reload process. My fix is to add a field to the
vrrp_rt struct to remember the macvlan ifindex. This patch
addresses this problem plus two others that can occur in
reloading the config file: 1) If the vrrp_instance
configuration is kept, but the use_vmac entry is removed, the
macvlan interface will not be deleted; 2) If a vrrp_instance
with use_vmac is left unchanged, the code will attempt to
re-create the macvlan interface, but this will fail and the
program will end up not using the macvlan interface.
* vrrp: VRRP should notify other routers before it does any
action that effects traffic flow. From John Southworth:
Move the shutdown_vrrp_instances code to before the deletion
of sock_pool. Move sending priority 0 adverts to before address
removal occurs
* vrrp: From John Southworth: Stop timers before shutting down
vrrp instances. This is to avoid a possible condition where
a priority 0 advertisement is sent and before the master
thread is killed another advertisement can be generated and sent.
* vrrp: Change when socket fd's are freed.
From John Southworth:
Priority 0 advertisements were not being sent as desired on
config reload. This was causing long delays on manually failed
over instances. The socket pool was being freed too early, as a
result the file descriptor for the socket was no longer valid at
the time the priority 0 advertisment was attempted.
* vrrp: Added a separate timeout parameter for vrrp_script checks
From Jonathan Harden:
I've added a timeout parameter to the vrrp check scripts which
allow you to have the check timeout different to the interval.
When no timeout has been specified the interval is used (which
mimics the current behaviour). To explain the reasoning: We
wanted to have check scripts time out faster than our check
interval. Doing the check we need to perform is a little load
intensive and so we don't want to perform it every few seconds.
With this patch we set an interval of 60 seconds but a timeout
of 5 seconds (if the check takes more than a few seconds then
the service is not working correctly).
* Extended vector lib for futur work
* some cosmetics.
2012-08-13 Alexandre Cassen <[email protected]>
* keepalived-1.2.5 released.
* Merge SNMP support from Vincent Bernat.
* SNMP is not compiled nor activated by default.
* Updated autoconf script
* Created Keepalived MIB
* Integration of NetSNMP into main scheduling loop
* vrrp: Most internal data can be queried with SNMP.
* check: Most internal values can be queried using SNMP.
The main exception is the ability to query checkers
which is not present.
* check: SNMP support for IPVS stats. IPVS stats are
exported with SNMP. A cache is used to avoid to query
the kernel too much.
* Created core framework for SNMP trap
* vrrp: SNMP traps are sent when instance state changes
and when sync group state changes
* check: SNMP traprs are sent when real server state changes
and when virtual server quorum state changes
* vrrp: add support to write/update operations from SNMP.
Write/update support is available for changing the base priority
and for changing instance preemption.
* check: add support to write/update operations from SNMP.
Write support is available for changing the weight of a real
server.
* workaround for AgentX ping blocking Keepalived. When establishing
AgentX session with the master agent, we setup low timeout and
retries values. If the master agent is blocked, we will wait for
less than 1 second for them and therefore, there will be no
disruption for VRRP.
* Copyright update
* some cosmetics.
2012-07-27 Alexandre Cassen <[email protected]>
* keepalived-1.2.4 released.
* Please look at git repo for credits.
* remove CR from manpage
* check: fix pid display in syslog messages
* vrrp: better documentation of the limitation on password
length
* cosmetics to be pleasant with GCC4
* Update autoconf script to properly detect VRRP VMAC
support
* security: Fix exploitable issue in sighandler !
* Add datarootdir to Makefile.in files.
* Fix logging to console.
* Remove newlines from log_message calls.
2012-07-13 Alexandre Cassen <[email protected]>
* keepalived-1.2.3 released.
* Please look at git repo for credits.
* VRRP : allow group to use priority with 'global_tracking'
group keyword
* VRRP : Adjust TOS values. The TOS value used by other
vendors is ip precedence 6, so change that. Use socket
priority option to force packets into band 0 of pfifo_fast.
* VRRP : Fix sync-group thrashing.The sync group implementation
was not very robust. If one synced instance lost communication
without going to fault state then all synced intances would
transition to master. Following this all instances would
transition back to backup because they heard higher priority
advertisements. This thrashing would continue indefinitely.
To fix this the sync-group code was made to prefer backup state.
That is, the sync-groups don't sync to master state unless
every instance wants to be master.
* VRRP : Fix dst lladdr in IPv6 Unsollicited NA.
* VRRP : fix pid display in syslog messages.
* Fix configure script to correctly identify kernel version.
* check : handle unspecified sockaddr_storage when comparing
* VRRP : ensure VRRP script interval and GARP delay is not 0.
* check: ensure non 0 default values for timeouts.
* VRRP : Fix priority not changing on reload.
* check : Fix IPv4 address comparison routine.
* Don't use bind() with AF_UNSPEC.
* check : enable the use of fwmark with IPv6 virtual servers.
* Fix modprobe arguments.
* Fix double ntohs() in SMTP checker.
* Pretty-print IP:port as [%s]:%d.
* check : keep retry in case of early TCP failures in checks.
* when specifying an IPv6 range, range is hexadecimal value.
* Only define kernel types for ip_vs.h header to avoid problems
when loading other headers.
* When respawning VRRP or check process, use LOG_ALERT.
* Do not set reload flag in the main process.
* Set correct rights on PID file.
* fix 'gratuitous' typos.
* ipvs: don't include linux/types.h or asm/types.h.
* configure: check for nl_socket_modify_cb for libnl.
* configure: don't check for IPVS support with kernel 2.6.x.
* VRRP : On shutdown, release sockets later to be able to send
shutdown packet.
* fix documentation on linkbeat_use_polling keyword.
* Fix a typo for healthchecker.
* fix syslog message if bogous vrrp packet (wrong auth type)
received.
* manpage update.
2011-01-09 Alexandre Cassen <[email protected]>
* keepalived-1.2.2 released.
* IPv6 : extended autoconf script to support libnl detection.
IPv6 IPVS kernel subsystem is reachable through
generic netlink configuration interface.
* IPv6 : Enhanced libipvs-2.6 to support generic netlink
configuration interface. If generic netlink is
available with kernel then it will be the
prefered path to configure IPVS.
* IPv6 : Enhanced the whole checker API to use
sockaddr_storage.
* IPv6 : Enhanced the whole core framework to use
sockaddr_storage.
* IPv6 : Enhanced all checkers to use sockaddr_storage.
* fixed a long time pending issue in all checkers. If
first connection attempt to remote peer was failing
no more check was performed to service... Up on error
connecting remote peer simply register a new timer for
next check. This is specially needed in IPv6 context
where a unreachable host can be reached at delayed time.
* code clean-up: revisited the code to use more POSIX
compliant declaration. thread typedef to use thread_t
instead. revisisted checker framework to use POSIX typdef
declaration.
2010-12-08 Alexandre Cassen <[email protected]>
* keepalived-1.2.1 released.
* Vincent Bernat <bernat <at> luffy.cx>:
VRRP: Fix incorrect computation for packet size
* Vincent Bernat <bernat <at> luffy.cx>:
VRRP: handle passwords up to 8 characters
* Vincent Bernat <bernat <at> luffy.cx>:
When updating weight, check quorum state.
MISC check can update the weight of a real server. This
can lead to a change in quorum state.
We factor out quorum handling from perform_svr_state()
into a new function update_quorum_state() that will check if
the quorum state changed and if yes, update sorry server status,
exec quorum commands and add back or remove alive real servers
(with existing function perform_quorum_state()).
This patch is mostly cut'n'paste and adding a call to
update_quorum_state() in update_svr_wgt(). We also make
perform_svr_state() and update_quorum_state() almost symmetric.
* Vincent Bernat <bernat <at> luffy.cx>:
Fix an infinite loop in master transition with sync groups.
This patch is from Arjan Filius. See:
http://marc.info/?l=keepalived-devel&m=128212278218825&w=2
When transitioning to master state, keepalived might try to
force transition to master state of other VRRP instances into
the same group before their transition is complete. This leads
to an infinite loop with huge VRRP trafic.
* Vincent Bernat <bernat <at> luffy.cx>:
VRRP : Use VRRP_PRIO_DFL instead of 100 for default priority.
* Vincent Bernat <bernat <at> luffy.cx>:
Use netpacket/packet.h instead of linux/if_packet.h to get
sockaddr_ll.
linux/if_packet.h pulls linux/types.h that should not be used
by a userland program since types defined here can conflict
with stdint.h. We use netpacket/packet.h which is a GNU LibC
header.
* Vincent Bernat <bernat <at> luffy.cx>:
Keep current weight on reload when initial weight is not
altered.
Weight can be changed by MISC_CHECK when using dynamic option.
In case of reload, the change is lost until the script runs
again. We record the initial weight in a separate variable and
use it to check if a real server has changed instead of using
the actual weight.
* Vincent Bernat <bernat <at> luffy.cx>:
VRRP : disabled scripts and initially good scripts should be
considered as OK.
When a script is not weighted, its failure will lead to a
failure of the associated VRRP instance. However, disabled
script and scripts that are initially good (after a reload)
should be considered as successful and not make the instance
fail. Moreover, a disabled script should not be used when
computing script weights.
* Vincent Bernat <bernat <at> luffy.cx>:
VRRP : more informative message when disabling a script due
to use of weights.
When using a weight for a tracked script, the script is
disabled. However, the warning message said that the weight
was ignored. We change the message to tell that the script is
ignored. Moreover, we don't change its weight since it can be
used in another instance, not in a SYNC group.
* Vincent Bernat <bernat <at> luffy.cx>:
check : include missing virtual server group name in a log
message
* Vincent Bernat <bernat <at> luffy.cx>:
configure: add a check for ETHERTYPE_IPV6.
ETHERTYPE_IPV6 defined in net/ethernet.h is pretty recent.
If absent, we hard-code the value into CFLAGS. This patch
requires regeneration of configure.
* Vincent Bernat <bernat <at> luffy.cx>:
check : update server weight in IPVS only if server is alive
and in the pool.
With inhibit_on_failure, a server can be in the pool and not
alive. We don't want to set the weight of an inhibited server
or a server in a virtual server whose qorum is not met yet.
* Vincent Bernat <bernat <at> luffy.cx>:
check: really add back inhibited server when quorum is gained
A previous change contained an erroneous check to add back
alive servers when quorum state was gained. This check was
incompatible with inhibit_on_failure. When servers were added
back in the pool, the weight was not updated accordingly.
* Vincent Bernat <bernat <at> luffy.cx>:
check : update server weight despite quorum when no sorry
server.
In absence of a sorry server, the logic is to not use quorum
except to run commands when quorum is gained or lost. This
means that if a MISC check modifies the weight of a server
and there is no sorry server, we do not consider quorum.
2010-05-31 Alexandre Cassen <[email protected]>
* Branch 1.2.0 created. This branch will host all new
developments on Keepalived. New code will be added
in here only.
* VRRP : Add support to IPv6 protocol. The global framework
has been extended to support this branch new family !
* VRRP : Implement IPv6 Neighbour Discovery protocol (NDISC).
In IPv6 gratuitous ARP doesnt exist since ARP is IPv4 only.
NDISC can provide the same feature by sending so called
Unsolicited Neighbour Advertisement. A node can send such a
protocol datagram in order to (unreliable) propagate new
information quickly (rfc4861.4.4). NDISC build an ICMPv6
message with taget link-layer address option, this option is
set icmp6_override flag to indicate that advertisement should
override an existing cache entry and update the cached
link-layer.
* VRRP : Extend ip address framework to be IPv4 and IPv6
independant. An ip address, as defined in framework, is
now {IPv4,broadcast} or {IPv6}. Use struct ifaddrmsg to
store and prepare netlink related operation. This clean-
-up the code.
* VRRP : Extend parser to support IPv6 declarations. IPv6
and IPv4 addresses can be configured inside the same
configuration block (eg: virtual_ipaddress or
virtual_ipaddress_excluded). An instance can run IPv4 and
IPv6 addresses at a time, this can be useful in dual-stack
env (since this will become certainly the most common use
case in the next years).
* VRRP : Extend netlink framwork to support IPv6 addresses
interactions (reflection/addition/deletion).
* VRRP : Extend finite state machine support IPv4 & IPv6
at a time.
* VRRP : Extend protocol helpers to support IPv6 multicast
related. AF_INET6 SOCK_RAW tweaking it done through
socket API instead of PF_PACKET header building... This
makes code cleaner.
* VRRP : Set default VRRP instance protocol to be IPv4.
you can use configuration keyword "native_ipv6" inside
vrrp_instance configuration block to specify that you
want to use IPv6 for VRRP multicasting protocol instead.
* VRRP : Extend socket option related helpers to support
IPv6 specifics.
* VRRP : Extend protocol scheduler and dispatcher to
support IPv6.
* VRRP : Extend socket pool to keep track of socket
family.
* VRRP : Cleanup protocol offset pointer by removing
duplication code...
* VRRP : some code clean-up...
2010-05-06 Alexandre Cassen <[email protected]>
* keepalived-1.1.20 released.
* Vincent Bernat <bernat <at> luffy.cx> extended ip/route
framework to be able to add route or ip address if they
already exist.
* Vincent Bernat <bernat <at> luffy.cx> fixed broadcast
address display.
* Vincent Bernat <bernat <at> luffy.cx> extended genhash to
display an error when giving an incorrect IP address.
* Vincent Bernat <bernat <at> luffy.cx>: When parsing
"blackhole" route, also parse IP mask.
* Vincent Bernat <bernat <at> luffy.cx>:
On reload, destroy signal pipes before recreating them.
* Vincent Bernat <bernat <at> luffy.cx>:
Fix SMTP checker adding himself repeatedly in the list of
failed checkers.
* Vincent Bernat <bernat <at> luffy.cx>:
Handle non-existant default interface in VIP definition.
* Vincent Bernat <bernat <at> luffy.cx>:
Remove alive real servers when quorum is lost.
* Vincent Bernat <bernat <at> luffy.cx>:
Fix a segfault when a virtual_server is empty.
* Vincent Bernat <bernat <at> luffy.cx>:
Add real servers to new member of a virtual server group
on reload.
* Vincent Bernat <bernat <at> luffy.cx>:
Keep previous effective VRRP priority on reload.
* Vincent Bernat <bernat <at> luffy.cx>:
Fix VRRP script not running any more after reload.
* Vincent Bernat <bernat <at> luffy.cx>:
On reload, keep status for all VRRP scripts.
* Removed IPVS Kernel 2.2 support
2009-10-01 Alexandre Cassen <[email protected]>
* keepalived-1.1.19 released.
* Cosmetics changes.
* Vincent Bernat <bernat <at> luffy.cx> fix a segfault
when there is no real server for a virtual server.
* Vincent Bernat <bernat <at> luffy.cx>, Willy Tarreau
and I finally fixed SIGCHLD handling upon reload.
* Vincent Bernat <bernat <at> luffy.cx> fix VS_ISEQ macro.
* VRRP : Kimitoshi Takahashi <ktaka <at> clustcom.com>
fixed nopreempt from FAULT state. The owner of higher
priority in FAULT state shouldn't preempt current MASTER
when it's recovering, if the nopreempt option is set.
2009-09-24 Alexandre Cassen <[email protected]>
* keepalived-1.1.18 released.
* Fixed compilation warnings
* Updated autoconf kernel version detection. Created a new
configuration option to force kernel versioni selection.
This option can be useful for crosscompilation:
--with-kernel-version={2.2|2.4|2.6}
* Updated media link failure detection strategy. Kernel
linkwatch has been around for long time so set it as
default strategy. Alternatively you can choose to use
MII BSMR polling strategy by adding new keyword
'linkbeat_use_polling' in your configuration file.
* Vincent Bernat <bernat <at> luffy.cx> fixed ip_vs.h includes.
* Removed vrrp_running and check_running test since it is
already performed by keepalived_running.
* Properly handle father pidfile handling.
* fixed reload handler to properly print out PID.
* Willy and I fixed a signal handling issue while reloading
daemon. A dereferencing master thread issue leading to a
segfault, so that reload was seen as a restart because it
was respawned by keepalived father process.
* Willy fixed a missing UNSET_RELOAD declaration leading to
a potential infinite loop while performing reload.
* Vincent Bernat <bernat <at> luffy.cx> fixed initial value
of quorum state on startup and reload. Fixed sorry server
removal to consider quorum state.
* VRRP : Add missing notify calls while entering FAULT state.
* VRRP : Willy added support to delayed script check launch
(up and down). It defines "rise" and "fall" keywords. "fall"
defines the required number of failures to switch in KO mode,
"rise" defines the number of sucesses to switch in OK mode.
* VRRP : Fixed an IP_DROP_MEMBERSHIP issue while performing
reload. vrrp socket pool is released at first.
2009-03-05 Alexandre Cassen <[email protected]>
* keepalived-1.1.17 released.
* Fixed low-level scheduler timer computation to take care to
monothonic computation. Select returns if timer is null!
* VRRP : Fixed vrrp script initialization to use event thread
instead of timer thread so that script no longer need to
wait until first polling timer fired.
* VRRP : Willy and I fixed MII media link failure detection
to test SIOCGMIIREG call before fetching BMSR.
* VRRP : Resurected VRRP_STATE_GOTO_FAULT. This state is
really needed to speed-up convergence and prevent against
any issue while using vrrp_sync_group.
2009-02-15 Alexandre Cassen <[email protected]>
* keepalived-1.1.16 released.
* Code clean-up.
* Stefan Rompf, <[email protected]> extended scheduler to
synchronize signal handling by sending the signal number through
a self pipe, making signals select()able. Child reaping has been
moved to a simple signal synchronous signal handler. Signal
shutdown handling has been centralized.
* Denis Ovsienko, <[email protected]> extended healthchecker
framework to support alpha/omega design. It provides virtual
service control in a more fine-graned maner. You may have a
look to the SYNOPSIS file to have full picture on configation.
It addresses the following issues :
- A virtual service is considered up even with an empty RS pool.
- There is no reliable mean to avoid service regression, when
the server pool becomes too small.
- There is no mean to escalate any of the above fault/recovery
events.
- Real servers are assumed alive initially. This leads to
unnecessary state flap on keepalived start.
- notify_down isn't executed for working real servers on
keepalived shutdown.
- There is no reliable mean to handle keepalived stop to move
the virtual service over another load balancer.
* Stephan Mayr, <[email protected]> fixed default value for
checker loop... a missing TIMER_HZ.
* Merge keepalived.init.suse.
* Robin Garner, <[email protected]> added support to
--log-console facility.
* Tobias Klausmann, <[email protected]> fixed an openfile
leak while performing reload.
* Leo Baltus, <[email protected]> extended pidfile handling
to allow keepalived to start using configurated pidfile.
* VRRP : Siim Poder, <[email protected]> fixed IPSEC AH auth
to skip IPv4 id field of zero. If zeroed kernel will fill it
and lead to an unwanted protocol re-election.
* VRRP : Siim Poder, <[email protected]> fixed reloading issue.
New ip addresses are added (from configuration). State is kept
instead of starting from whatever is in configuration file.
If prios are changed in such a way, state change can occur after
reload.
* VRRP : Vincent Bernat, <[email protected]> extended virtual_route
to support virtual "black hole" route as well as multihop route.
* VRRP : Stig Thormodsrud, <[email protected]> fixed a crash while
using virtual_router_id set to 255.
* VRRP: Jon DeVree, <[email protected]> fixed arp handling to
to initialize the target hardware address, using 0xff as found
in arping. Let scripts work without dealing with weight, if the
script fails, VRRP fails.
* VRRP : Pierre-Yves Ritschard, <[email protected]> removed
the GOTO_FAULT state from FSM.
* VRRP : Willy Tarreau, <[email protected]> fixed link detection handling
to support right ioctl values for recent kernel ! It can lead
to issue while running instance on a bonding interface.
* VRRP : Willy Tarreau, <[email protected]> extended scheduler to catch
time drift. It implements an internal monotonic clock. It
maintains an offset between sysclock and monotonic clock, if
computed time if anterior to monotonic time then just update
offset. If time computed if fare away into the future then
limit delay and recompute offset.
* VRRP : Willy Tarreau, <[email protected]> fixed autoconf issues.
2007-09-15 Alexandre Cassen <[email protected]>
* keepalived-1.1.15 released.
* Matthias Saou, <matthias at rpmforge.net> fixed genhash
Makefile for man page installation.
* Casey Zacek, <keepalived at bogleg.org> provided a patch
to check_http to remove buffer minimization while processing
stream. It appears some webserver cause healthchecker crash.
* Chris Marchesi, <chris.marchesi at canadawebhosting.com> provided
a patch for better handling of SSL handshake errors.
* Shinji Tanaka, <stanaka at hatena.ne.jp> fixed parser "include"
directive to support declaration inside configuration directives,
like including file inside vrrp_instance declaration.
* Andreas Kotes, <count at flatline.de> fixed HTTP healthchecker
while handling MD5SUM result. It appears checker never removed
realserver on MD5SUM mismatch !!! whats that crap.
* VRRP : Willy Tarreau, <w at 1wt.eu> fixed a missing notifications
upon transition from fault to backup.
* VRRP : Add support to route metric in virtual_routes definition.
2007-09-13 Alexandre Cassen <[email protected]>
* keepalived-1.1.14 released.
* Shinji Tanaka, <stanaka at hatena.ne.jp> extended parsing
framework to support "include" directives. For more
informations and documentation please refer to Shinji
website :
http://misccs.dyndns.org/index.php?keepalived%20include%20patch
* Tobias Klausmann, <klausman at schwarzvogel.de> add error loggin
while parsing configuration file.
* Merged patches from rpmforge.net on Makefile and redhat specfile.
* Create a goodies directory to store nice scripts received from
users. Add Steve Milton (milton AT isomedia.com) arpreset script
to delete a single ARP entry from a CISCO router.
* VRRP : David Woodhouse, <dwmw2 at redhat.com> fixed vrrp_arp
includes.
* VRRP : Pierre-Yves Ritschard, <pyr at spootnik.org> fixed negative
weights in script.
* VRRP : Michael Smith, <msmith at cbnco.com> extended
virtual_ipaddress setting to support Old-style Linux interface
aliases like eth0:1.
* VRRP : Ward Wouts, <ward.wouts at gmail.com> add support to
vrrp_script logging.
2006-10-11 Alexandre Cassen <[email protected]>
* keepalived-1.1.13 released.
* VRRP : Added a new notify script to be launch during vrrp
instances shutdown. This new notify hook is configured
using notify_stop keyword inside vrrp_instance block.
* VRRP : Willy Tarreau <w at 1wt.eu> fixed an errno issue in
thread_fetch(), errno is lost during set_time_now(). This
patch saves it across the call to set_time_now() in order
to get the valid error.
* VRRP : Willy Tarreau <w at 1wt.eu> extended timer framework
to save errno in timer_now() and set_time_now() just in
case other functions do not expect these functions to modify
it. This is a safer approach than the initial patch to
thread_fetch(), while still compatible.
* VRRP : Willy Tarreau <w at 1wt.eu> fixed an FSM silent issue.
By default, the VRRP daemon stops sending during new MASTER
elections. This causes 3 to 4 seconds of silence depending on
the local priority, and sometimes causes flapping when the
differences in priorities are very low, due to the kernel timer's
resolution : sometimes, the old master receives a first
advertisement, enters backup, waits 3 seconds, sees nothing and
finally becomes master again, which forces a new reelection on
the other one.
* VRRP : Willy Tarreau <w at 1wt.eu> extended VRRP framework to
support floating priority. Replace the priority in each
vrrp_instance with a base priority and an effective priority,
to prepare the support for floating priorities. The configuration
sets the base_priority, and all comparisons use the new
effective_priority value. This one is computed in the
vrrp_update_priority() thread by adding an offset to base_priority,
based on the result of various checks.
* VRRP : Willy Tarreau <w at 1wt.eu> extended notify script to add
the priority in "$4" when calling a notify script. This is
important in labs and datacenters when systems can display the
priority on a front LCD, because it allows workers to carefully
operate without causing unexpected reelections.
* VRRP : Willy Tarreau <w at 1wt.eu> extended interface tracking
framework to let interface tracking change the priority by adding
a "weight" parameter. If the weight is positive, it will be added
to the priority when the interface is UP. If the weight is negative,
it will be subtracted from the priority when the interface is down.
If the weight is zero (default), a down interface will switch the
instance to the FAULT state.
* VRRP : Willy Tarreau <w at 1wt.eu> added a new "vrrp_script" section
to monitor local processes or do any type of local processing to
decide whether the machine is in good enough health to be elected
as master. A same script will be run once for all instances which
monitor it. If no instance use it, it will not be run, so that it's
safe to declare a lot of useful scripts. A weight is associated to
the script result. If the weight is positive, it will be added to
the priority when the result is OK (exit 0). If the weight is
negative, it will be subtracted from the priority when the result
is KO (exit != 0). If the weight is zero, the script will not be
monitored. The default value is 2.
* VRRP : Willy Tarreau <w at 1wt.eu> extended vrrp scheduler so that
when a VRRP is part of a SYNC group, it must not use floating
priorities, otherwise this may lead to infinite re-election after
every advertisement because some VRRPs will announce higher prios
than the peer, while others will announce lower prios. The solution
is to set all weights to 0 to enable standard interface tracking,
and to disable the update prio thread if VRRP SYNC is enabled on a
VRRP.
* VRRP : Willy Tarreau <w at 1wt.eu> added some documentation and
examples for the brand new VRRP tracking mechanisms.
* VRRP : Ranko Zivojnovic, <ranko at spidernet.net> fixed vrrp
scheduler to execute notify* scripts in transition from the
failed state to the backup state.
* Nick Couchman, <nick.couchman at seakr.com>, added support for
real server upper and lower thresholds. This allows you to set
a minimum and maximum number of connections to each real server
using the "uthreshold" (maximum) and "lthreshold" (minimum)
options in the real_server section of the configuration file.
* Chris Caputo, <ccaputo at alt.net> extended autoconf script
to support recent move of UTS_RELEASE from linux/version.h to
linux/utsrelease.h.
* Chris Caputo, <ccaputo at alt.net> extended ipvswrapper 2.4
code to support misc_dynamic weight.
2006-03-09 Alexandre Cassen <[email protected]>
* keepalived-1.1.12 released.
* VRRP : Christophe Varoqui, <[email protected]> extended
VRRP framework to use virtual_router_id as syncid in LVS mcast
datagram while using LVS syncd in VRRP instance.
* Kevin Lindsay, <[email protected]> and Christophe Varoqui,
<[email protected]> fixed SSL checker to properly
use openssl when dealing with asynchronous stream handling.
Kevin fixed asynchronous handling during connection stage
while Christophe fixed stream handling after connection stage.
* Kjetil Torgrim Homme, <[email protected]> extended keepalived
spec file to cleanly compile on RedHat enterprise 3 and 4.
* Heinz Knutzen, <[email protected]> fixed SMTP checker
to overwrite default_host while parsing configuration file.
A SMTP_CHECK without a "host" section should use the ip of the
current real server as default.
2005-03-01 Alexandre Cassen <[email protected]>
* keepalived-1.1.11 released.
* Asier Llano Palacios, <[email protected]> extended
autoconf script to support cross-compilation.
* Kevin Lindsay, <[email protected]> and I fixed a
missing bitwise negation while removing signal from
global signal mask. Set this operation before handler
is called. This assume that bitwise negation is an
atomic code generated from compiler. Since gcc 3.3
this is true.
* VRRP : extended ipaddress and iproutes code to return
if vip or vroutes is referencing an unknown interface.
2005-02-15 Alexandre Cassen <[email protected]>
* keepalived-1.1.10 released.
* VRRP : While restoring interface, release iproutes
before ipaddresses. Routing daemons needs that order
for netlink reflection channel.
* VRRP : Bin Guo, <[email protected]> fixed a memory
leak while calling script_open.
* Kevin Lindsay, <[email protected]> fixed some buffer
overruns, NULL pointer and dangling pointer references.
* Kevin Lindsay, <[email protected]> redisigned signal
handling. When a signal occurs, a global signal_mask is
modified. In the main loop there is a checked to see if
the signal_mask has any pending signals. The appropriate
signal handler is then run at this time. This is to prevent
races when modifying linked lists.
* Kevin Lindsay, <[email protected]> fixed shadowed
declarations.
* Christophe Varoqui, <[email protected]> and I
Extended libipvs-2.6 to support syncd zombies handling.
Since ip_vs_sync.c kernel code no longer handle waitpid()
we fork a child before any ipvs syncd operation in order
to workaround zombies generation.
* John Ferlito, <[email protected]> and I Fixed a scheduling
race condition while working with low timers.
* Updated check_http and check_ssl to use non-blocking
socket.
* Fixed some race conditions while reloading configuration.
Prevent against list gardening if list is empty !
* Fixed recursive configuration parsing function to be clean
with stack. Only one recursion level.
* Some cosmetics cleanup in Makefiles.
2005-02-07 Alexandre Cassen <[email protected]>
* keepalived-1.1.9 released.
* VRRP : Chris Caputo, <[email protected]> updated keepalived manpage
for nopreempt and preempt_delay.
* VRRP : Fixed an issue while releasing vrrp socket pool... Just
release pool one time !
* VRRP : Fixed netlink framework to properly save netlink socket flags
while setting blocking flags.
* VRRP : Fixed a regression introduced with previous release while
hashing vrrp fd bucket into fd hash index.
* Patrick Boutilier, <[email protected]> fixed an issue in the
extract_html function. Read the full html header.
* Chris Caputo, <[email protected]> and I fixed compilation issue
while using --enable-debug configuration option.
* Extended both VRRP and Healthchecker framework to support
debugging flags.
* Removed the watchdog framework. Since scheduling framework
support child, we register a child thread for both process
VRRP & Healthcheck. When child die or stop prematuraly this
launch scheduling callback previously registered. Watchdog
is now handled by signaling.
(credit goes to Kevin Lindsay, <[email protected]> for nice
idea).
* Some cosmetics cleanup.
2005-01-25 Alexandre Cassen <[email protected]>
* keepalived-1.1.8 released.
* VRRP : Chris Caputo, <[email protected]> added "dont_track_primary"
vrrp_instance keyword which tells keepalived to ignore VRRP
interface faults. Can be useful on setup where two routers
are connected directly to each other on the interface used
for VRRP. Without this feature the link down caused
by one router crashing would also inspire the other router to lose
(or not gain) MASTER state, since it was also tracking link status.
* VRRP : Chris Caputo, <[email protected]> added "nopreempt" which
overrides the VRRP RFC preemption default. This replaces the
"preempt" keyword which was not fully implemented. "preempt" is
kept around for backward compatibility but is deprecated.
* VRRP : Chris Caputo, <[email protected]> added "preempt_delay" which
allows one to specify number of seconds after startup until VRRP
preemption. (range 0 to 1,000 seconds) this is useful because
sometimes when a machine recovers it takes a while for it to become
usable, such as when it is a router and BGP sessions need to come
back up.
* Chris Caputo, <[email protected]> made it so there is a useful "Date:"
in SMTP alert emails.
* VRRP : Chris Caputo, <[email protected]>. In debug output log
gratuitous ARPs with actual IP addresses being ARPed.
* VRRP : Chris Caputo, <[email protected]>. If started with
"--dont-release-vrrp" then try to remove addresses even if we didn't
add them during the current run, when it makes sense to do so.
* VRRP : Chris Caputo, <[email protected]> added a missing
free_vrrp_buffer() during VRRP stop.
* VRRP : Kees Bos, <[email protected]> fixed VRRP sanity check to perform
checksum computation over incoming packet and not local router
instance memory representation => Better to log 'invalid vip
count' instead of 'Invalid vrrp checksum' when the number of
configured vips differ in the master and backup server :)
* VRRP : Release socket pool during daemon stop and reload
* VRRP : Refresh socket pool during reload
* VRRP : Extended netlink framework to support blocking
operation. During initialization, set blocking netlink channel
to wait responses from kernel while parsing result. Kernel netlink
reflection are still handled using non-blocking.
* Jeremy Rumpf, <[email protected]> added SMTP checker. It take
a special care of smtp server return code.
* Merged genhash man page
* Chris Caputo, <[email protected]> added "misc_dynamic" to a
MISC_CHECK which makes it so a script can adjust the weight of
a real server.
* Fixed some assertion issue in memory framework.
* Use router_id instead of lvs_id in the global_def configuration
block (lvs_id kept for backward compatibility).
* Ronald Wahl <[email protected]>, fixed declarations to be only
in includes files.
* Ronald Wahl <[email protected]>, moved the definition of variables
to C files
* Ronald Wahl <[email protected]> and I fixed scanning for header/body
separator in HTTP protocol
* Ronald Wahl <[email protected]> replaced memcpy by memmove where source
& destination may overlap
* Extended checker API to only register checkers when checker callback
is defined.
* Jacob Rief, <[email protected]> fixed openlog to take care
of configured log facility.
* Move in_csum to util file.
* Extended libraries to support some new facilities (list and vector).
* Extended scheduler I/O to use timer decalred on the stack.
* Some cosmetics changes.
2004-04-05 Alexandre Cassen <[email protected]>
* keepalived-1.1.7 released.
* Jacob Rief, <[email protected]> added target tarball into
root Makefile to facilitate packaging (rpm & tarball).
* Jacob Rief, <[email protected]> and I unified version
handling. Now only the root file VERSION is used by configure
to add VERSION_STRING via config.h.in. Added VERSION_DATE
included into the VERSION_STRING that reflect the building
date into the version banner.
* Andres Salomon, <[email protected]> wrote the genhash manpage.
* VRRP : Added ipvs_start() and ipvs_stop() calls during vrrp child
start and stop stage.
* Added some assertion test in memory framework to not allocate
bucket if no more place. This option is only used if compiled
with debug flags.
* Some cosmetics patch in Makefiles and autoconf script.
2004-02-23 Alexandre Cassen <[email protected]>
* keepalived-1.1.6 released.
* VRRP : Fixed scheduling timer update. Global scheduling timer is
updated before each thread registering and after scheduling I/O MUX.
Since is needed to take care of scheduling jitter introduced by
overhead (VRRP is using low low timer so more sensitive to overhead).
Thanks to Nathan Neulinger, <[email protected]> for his quick feedback
debugging time.
* VRRP : Nathan Neulinger, <[email protected]> updated vrrp dropping
strategy to not reply to incoming bogus adverts. Since this can
introduce flooding loop, bogus adverts are now simply silently
dropped.
* VRRP : Fixed a linkbeat issue while polling NIC flags.
* Updated autoconf and Makefile to support 2.6 kernel IPVS code. For
code readability, created 2 differents libipvs for 2.4 and 2.6 kernel
. Fixed autoconf generated warning.
* Extended ipvswrapper to support shared buffer user rule. This
increase performances by limiting memory allocation. OTOH, created
two new ipvs helpers ipvs_start & ipvs_stop to initialize ipvs
subsystem.
* Andres Salomon, <[email protected]> made some cosmetics update
in Makefiles to support $(DESTDIR) and $(BIN)/$(EXEC) path split.
2004-01-25 Alexandre Cassen <[email protected]>
* keepalived-1.1.5 released.
* Joseph Mack, <[email protected]> wrote keeplived manpages
in doc/man/man5/keepalived.conf.5 and doc/man/man8/keepalived.8.
* VRRP : Tsuji Akira, <[email protected]> fixed a length
issue while testing password field for auth_pass method.
* VRRP : Willy Tarreau, <[email protected]> fixed a quick loop
in the watchdog timer thread.
* VRRP : Willy Tarreau, <[email protected]> extended scheduler
to support stable scheduling time. There is now, only one
time source updated before and after scheduling event. This
solve sliding timer observed on some env, also known as
periodically flapping issue (sometime a VRRP election is
forced).
* VRRP : Willy Tarreau, <[email protected]> updated the default
media link failure detection strategy to perform a ioctl
ifflags even if NIC driver are supporting MII or ETHTOOL.
Some buggy drivers need this. Anyway the linkwatch patch
still the best solution to support efficient and scalable
media link failure detection.
* Some cosmetics clean-up, removed some dead files, updated
autoconf and Makefile prototypes to support dependencies
libs like kerberos for RedHat/Fedora distro. To compile
keepalived properly on redhat 9 box, for example, run :
export CPPFLAGS="-I/usr/kerberos/include" && ./configure
Renamed keywords lb_kind to lvs_method and ld_algo to
lvs_sched. For compatibility reasons, old keywords are still
available.
2003-12-29 Alexandre Cassen <[email protected]>
* keepalived-1.1.4 released.
* Refresh autoconf script to use autoconf 2.5.
* Extended the autoconf script to support linkwatch kernel
detection.
* To work-around the SMP forking bug, added support to two
new daemon starting options :
--vrrp -P Only run with VRRP subsystem.
--check -C Only run with Health-checker
subsystem.
Those options extend daemon design to support VRRP &
heathchecking subsystem selection. You can now run
two Keepalived daemon one invoqued with --vrrp and
the other with --check. That way we workaround the
forking issue by running one daemon per subsystem.
* Tiddy cleanup in the daemon code.
* VRRP : Extended the link media failure detection to support
asynchronous NIC MII polling. The design use now, one
dedicated polling thread per NIC. This reduce scheduling
jitter by this way.
* VRRP : Added support to kernel linkwatch subsystem. This
patch that you will find a copy on the Keepalived website
for the kernel 2.4 branch, provides kernel netlink broadcast
events drived by NIC link media state event. That way
we move from a polling design to an event design. Link
events are received throught a kernel netlink broadcast
socket in the userspace land. So, NIC media link failure
detection is now provided by kernel netlink reflection.
You can read the paper attached with the patch for
indepth explanations.
* VRRP : fixed timer computation to prevent against negative
value.
2003-09-29 Alexandre Cassen <[email protected]>
* keepalived-1.1.3 released.
* Stephan von Krawczynski, <[email protected]> extended ip
address framework to support broadcast address selection.
* Extended the scheduling framework to support plain 'long'
timer. Visited the layer4 framework to support this new
scheduling scheme. Reviewed the checkers and VRRP framework
to support long timer.
* VRRP : Removed the timer micro adjust call. Its use is
obsolete with the new scheduling 'long' timer support.
* Jacob Rief, <[email protected]> and I added support
log level selection for main daemon. A new command line
argument has been created :
--log-facility -S 0-7 Set syslog facility to
LOG_LOCAL[0-7]. (default=LOG_DAEMON)
* Extended the HTTP checker to support non blocking read
while processing stream. NONBLOCK flags is set before
read operation to catch EAGAIN error.
* VRRP : Diego Rivera, <[email protected]> and I fixed a
notify issue while building notify exec string.
* VRRP : Diego Rivera, <[email protected]> and I extended
FSM to support BACKUP state notifiers and smtp_alert call
during VRRP initialization.
* Jan Vanhercke, <[email protected]> and I extended
scheduling timer computation to support micro-sec second
overlap. Extended the whole scheduling framework to support
this scheduling scheme while computing thread timers.
* Fixed scheduling framework to support child thread timers
while computing global scheduling timer.
2003-09-07 Alexandre Cassen <[email protected]>
* keepalived-1.1.2 released.
* Dominik Vogt, <[email protected]> and I extended checker
framework to support multiple checkers per realserver.
Each checker own a uniq id, each realserver own a list
of checkers id. Realserver is considered down if one of the
checkers fails.
* Dominik Vogt, <[email protected]> extended list library to
support free_list_element.
* Dominik Vogt, <[email protected]> and I extended ipwrapper
to support multiple checkers test. Created a checker state
updater helper function to perform realserver state according
to checker state.
* Dominik Vogt, <[email protected]> extended all checkers
code to support multiple checker design (to not perform
server state according a single checkers test).
* Tobias Klausmann, <[email protected]> and I extended
layer4 framework to support socket binding to a specific
ip address before calling connect(). Extended the TCP, HTTP
and SSL checker to support binding selection, creating
a new checker keyword named "bindto".
look at doc/keepalived.conf.SYNOPSIS for more informations.
* VRRP : Extended the ethtool code to be selected only if
ETHTOOL_GLINK is available. This is useful for s/390 zSeries
users :) since zSerie 2.4 kernel doesn't support ethtool
extension.
* VRRP : Gatis Peisenieks, <[email protected]> fixed IPSEC-AH
code to exclude ip header id filed while computing AH digest.
Fixed AH sequence number to be set in network byte order.
* VRRP : Fixed a bug in the static_ipaddress block that caused
a noisy crashing startup.
* VRRP : Kjetil Torgrim Homme, <[email protected]> and I
fixed a daemon crash while reloading configuration due to a
vrrp_buffer not freed.
* VRRP : Review the watchdog calling location. watchdog listener
is reinitialized during a daemon reload.
* VRRP : Diego Rivera, <[email protected]> extended notify
framework to support simple notify script call. Created a new
keyword "notify", for both vrrp_instance and vrrp_sync_group.
If configured, this notify script is called after FSM state
transition notify scripts.
look at doc/keepalived.conf.SYNOPSIS for more informations.
* Review the checker watchdog calling location like VRRP.
* Fixed code selection to exclude VRRP dependencies if code is
configured without VRRP framework.
* Extended memory lib free function to reset memory location to
NULL.
* Diego Rivera, <[email protected]> extended global parser
to support default handlers for lvs_id, smtp_server,
smtp_connection_timeout and email_from. default values are :
o lvs_id : box local name
o smtp_server : localhost
o email_from : uid@box_local_name
o smtp_connection_timeout : 30s
2003-07-24 Alexandre Cassen <[email protected]>
* keepalived-1.1.1 released.
* VRRP : Fixed an issue while reloading configuration. Fixed
a dereferencing pointer.
* Fixed misc checker to perform server state according to
checker result !!!
2003-07-22 Alexandre Cassen <[email protected]>
* keepalived-1.1.0 released.
* The release focus is : "High Performance"
* Name cleanup for the healthchecking directory. use check
instead of healthcheck to be in conformance with watchdog and
global software architecture.
* updated the SYNOPSIS file for documenting the table arg inside
virtual/static_routes declaration. You can set routes refering
to a specific TABLE-ID.
* Added a dummy debug var in the genhash declaration code to
support compilation when compilation is done with debug flag.
* Added a set flag inside the real_server declaration correctly
relfect the IPVS topology when inhibit_on_failure is used.
* fixed a daemon.h include depandency on signal.h
* VRRP : Added support to a global shared buffer for incoming
advert handling. A new buffer is no longer allocated each time
processing incoming advert, instead a shared room is used.
* VRRP : Added support to pre-allocated shared buffer for
outgoing adverts. Each vrrp instance use a 'one time'
allocated buffer instead of a 'all time' one.
* VRRP : Extended the socket pool design to support shared fd
for the outbound channel. Now, socket pool create a sending
socket and affect the fd returned to vrrp instances. This
forces instances to use a shared socket instead of creating
new socket for each outgoing adverts. The error detection
is based on the incoming socket, so that outgoing socket is
not created as long as incoming socket can not be created.
* Added support to netlink ipaddress as global keyword
"static_ipaddress".
look at doc/samples/keepalived.conf.static_ipaddress.
IP addresses specified into this block will be added during
daemon bootstrap and removed during daemon shutdown.
Differential conf parsing is enabled for this block,
removing/adding static_ipaddress can be done on the fly
sending SIGHUP signal to daemon.
* VRRP : Extended track_interface to support multiple interface
tracking. For those familiar with Nokia monitored circuit,
this extention provide the same functionality.
look at doc/samples/keepalived.conf.track_interface.
* VRRP : The VRRP instance lookup framework has been extended
to use a o(1) scheduling design. Rewrote the whole instance
lookup to use o(1) lookup instead of previous o(n^2). When
receiving incoming adverts vrrp_scheduler performs a lookup
over the VRID received to get local instance representation.
Since the internal instance representation is an non-sorted
linked list, then we run a lookup at o(n^2) complexity that
introduce lantency and scheduling jitter side effect when
runing large number of instances. To avoid this limitation
a static hash table of 255 buckets were created. Since