* 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...
VRRP: Fix incorrect computation for packet size

Ternary conditional operator has lower precedence than addition. The
size of the VRRP packet was incorrectly computed and there was not
enough room for plain authentication string.
VRRP: handle passwords up to 8 characters

A fix in keepalived 1.1.18 was truncating the password len for VRRP to
7 characters. We restore the limit to 8 characters.

vrrp->auth_data is only handled using memcpy and sizeof. Therefore, we
keep the current size to 8 chars and add the null character only when
we need to display it.

Also, we ensure that vrrp->auth_data is blanked before putting a new
value in it, just for safety.
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.
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.
Use VRRP_PRIO_DFL instead of 100 for default priority.
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.
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.
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.
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.
check: include missing virtual server group name in a log message
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.
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.
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.
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.

Also see aee615d961414d46247b15ae851cdc565b0e6b23.
keepalived-1.2.1

* 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.
VERSION update
check: remove old kernel 2.2 ipfw stuff.
keepalived-1.2.2

* IPv6 duty ;)
* 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.
Add missing files !