Improve thread-safety of finding local Interfaces

Signed-off-by: Joe Stringer <joestringernz@gmail.com>
Fix routemod include

Signed-off-by: Joe Stringer <joestringernz@gmail.com>
Add Forwarding Path Manager header from Quagga

This adds the version 1 FPM header from the following Quagga commit:
443b993777e3e86fceb988f647d1c5b57661a182. This was included in the
Quagga 0.99.22 release.

Signed-off-by: Joe Stringer <joestringernz@gmail.com>
Add support for FPM interface

Forwarding Path Manager (FPM) interface is a new protocol for allowing
routing engines to send RIB updates in a platform independent way. This
is an alternative to NetLink.

This patch adds a new thread to liaise with software that supports
having an external Forwarding Path Manager (FPM). To compile with FPM
support, see the Makefile in rfclient. FPM is disabled by default.
Add experimental FPM NHLFE support

This patch expands the previous FPM support by defining structures for
sharing Next-Hop Label-Forwarding Entries (NHLFE) between FPM entities.
Initially, this supports push, pop, swap operations for MPLS paths.
Matching incoming IP addresses is not supported. Forwarding Equivalence
Class To NHLFE (FTN) support is considered future work, and is stubbed
in this patch.
Log NHLFEs when they are received

Signed-off-by: Joe Stringer <joestringernz@gmail.com>