teamd: move ethtool link watcher to a separate file

All ethtool specific code is moved to teamd_lw_ethtool.c,
and the generic link watcher types and functions are moved
to a common header file, teamd_link_watch.h

Signed-off-by: Erik Hugne <erik.hugne@ericsson.com>
Signed-off-by: Jiri Pirko <jiri@resnulli.us>
teamd: move psr template link watcher to a separate file

The periodic send/receive code is the parts common to the arp/icmp6
watchers. We move all of this to teamd_lw_psr.c and declare the psr
types/functions in the common teamd_link_watch.h.

Signed-off-by: Erik Hugne <erik.hugne@ericsson.com>
Signed-off-by: Jiri Pirko <jiri@resnulli.us>
teamd: move arp ping link watcher to a separate file

All ARP ping link watcher specific code is moved to teamd_lw_arp_ping.c.

Signed-off-by: Erik Hugne <erik.hugne@ericsson.com>
Signed-off-by: Jiri Pirko <jiri@resnulli.us>
teamd: move icmp6 NS/NA ping link watcher to a separate file

All ICMPv6 NS/NA ping link watcher specific code is moved
to teamd_lw_nsna_ping.c.

Signed-off-by: Erik Hugne <erik.hugne@ericsson.com>
Signed-off-by: Jiri Pirko <jiri@resnulli.us>
teamd: add TIPC link watcher

The TIPC link watcher provides a teaming failover mechanism that
use the logical link availability to all other peer nodes in a
cluster. When the last logical link over a bearer device fails,
teamd will be notified of the path failure an initiate a failover.

An active-backup setup in a single-switch configuration, or
configurations that involve ISL/Crosslink between multiple
switches, TIPC plane separation is normally accomplished through
vlans, the link_watchers would then normally be assigned to be the
TIPC bearer devices directly attached to the physical interface.
(activebackup_tipc.conf)

 tipc bearer A              tipc bearer B
  |                          |
  |          teamd           |
  |            |             |
  |            |             |
  |      +---team0---+       |
 vlan0   |           |     vlan1
  |      |           |       |
  |      |           |       |
  +-----eth0----+---eth1-----+
                |
              switch

For setups where the physical devices are in separate broadcast
domains, the TIPC bearer interface is normally the same as the
teaming port.

Signed-off-by: Erik Hugne <erik.hugne@ericsson.com>
Signed-off-by: Jiri Pirko <jiri@resnulli.us>
teamd: Add support for TIPC link watcher

From: Erik Hugne <erik.hugne@ericsson.com>

The first 4 patches moves the arp/ethtool/icmp/icmpv6 link watchers to
separate files, leaving the generic link watcher code in teamd_link_watch.c.
The last patch adds support for the TIPC link watcher. There is a build-time
check that checks if AF_TIPC/SIOCGETLINKNAME are available (kernel 3.15+),
and only builds in TIPC support in that case.