Allow VRRP unicast to be routed.
Fix: Zero out vrrp checksum before calculating.

When running in unicast mode with multiple peers, the checksum was being calculated into itself for consequent peers, causing incorrect checksums.
Merge pull request #45 from gudmundur/unicast_routing

Allow VRRP unicast to be routed.
Merge pull request #46 from gudmundur/unicast_chksum

Zero out VRRP checksum before calculating.
vrrp: Tweak IPv6 VIP install by disabling DAD algo and setting deprecated flag

Lot of discussions have been made around those 2 topics. First idea and initial
patch where provided by Leo Baltus. This patch fix the use case where VRRP VIPv6
are used in conjonction of IPVS healthchecking. If deprecated flag is not set
(which is the default linux behaviour), then VRRP VIP can be used as source address
of healthcheking packet. Since this VIP address is also present, in most use-cases,
on realserver directly so return packets never reach the healthchecker and hence no
realserver was injected in IPVS table.

At the same time, I decided to merge Tore Anderson  suggestion of disabling
Duplicate Address Detection algorithm. Tore's arguments are nice ! Thanks Tore :

Using the nodad flag has the following benefits:

1) The address becomes immediately usable after they're configured.
2) In the case of a temporary layer-2 / split-brain problem we can avoid
that the active VIP transitions into the dadfailed phase and stays there
forever - leaving us without service. HA/VRRP setups have their own
"DAD"-like functionality, so it's not really needed from the IPv6 stack.

Acknowledgements to Mark Schouten and Frank Baalbergen for pushing me by
testing this features !
Merge branch 'master' of github.com:acassen/keepalived
keepalived-1.2.9
Remove unused option character in getopt optstring

Signed-off-by: Jonas Johansson <jonasj76@gmail.com>
Merge pull request #47 from jonasj76/getopt-typo

Remove unused option character in getopt optstring
vrrp: disable TTL sanity check for unicast use-case

In order to protect against any packet injection, VRRP provides
sanity check over IP header TTL. This TTL MUST be equal to 255 and
means both sender and receiver are attached on the same ethernet
segment. Now with unicast extension this protection MUST be disabled
since VRRP adverts will mostly traverse different network segments.

!!! WARNING !!! When using VRRP in unicast use-case in order to protect
against any packet injection the best practice is to use IPSEC-AH auth
method otherwise you are exposed to potential attackers !
fixed minor typo in man page
Merge pull request #50 from albix/patch-1

fixed minor typo in man page
libipvs-2.6: sync with libipvs from ipvsadm 1.27
Reapply: ipvs: don't include linux/types.h or asm/types.h

Those kernel headers should not be included into userland programs. We
redefine kernel types like __u32, __be32 to their userland
counterparts instead. This allows keepalived to compile on RHEL 5.

Conflicts:
	keepalived/libipvs-2.6/ip_vs.h
Reapply: Only define kernel types for ip_vs.h header to avoid problems when loading other headers.
Reapply: Avoid the use of kernel defines in libipvs userland prototypes

* fix libipvs-2.4 ipvs_get_service(...) prototype to use
  ISO types instead of kernel ones...
* fix libipvs-2.6 ipvs_get_service(...) prototype to use
  ISO types instead of kernel ones...

Conflicts:
	keepalived/libipvs-2.6/libipvs.h
libnl >= 3 support

Reference:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=688164
http://article.gmane.org/gmane.linux.keepalived.devel/3522
libipvs: add nlerr2syserr function to translate libnl 3 errors to sys errors

In libnl 3 the return codes have changed. nlerr2syserr translates the
libnl 3 errors to sys errors.

Reference:
https://github.com/tgraf/libnl/commit/8a3efffa5b3fde252675239914118664d36a2c24
Merge pull request #51 from pommi/master

add libnl 3 support
ipvs: if libnl-3 is installed then check for libnl-gen-3

It is mandatory to use generic netlink facilities in new libipvs. This test is
just here to ensure every needed libs are installed !