New feature: support for Linux NL802.11 wireless link information in cost calculation.

Signed-off-by: Frank de Brabander <brabander@fox-it.com>
mDNS: Fixing loops for mDNS packets when mDNS plugin is misconfigured

If two mDNS plug-in enabled OLSR routers are attached to the same HNA network, then mDNS packets will loop back and forth between the two, also flooding the whole OLSR network. For the moment the temporary solution to this problem was to enable the plug-in on one router at a time on the same HNA. A real implemented here is  the following:

    usually mDNS packets have a TTL != 1, so:
    capture only mDNS packets with TTL != 1
    when decapsulating mDNS packets, set TTL = 1
    where TTL is the IP Time-to-live field or the IPv6 HopLimit field

 * Modified code to forward mdns packet from HNA into OLSRd network changing TTL/Hlim to 1
 * Now the mDns plugin discard all packet from HNA that have TTL/Hlim equals to 1
mDNS: Skeleton code for new host filter feature in mDNS plugin

Skeleton code of the new feature of mDNS to filter
out some hosts to prevent forwarding of services
we dont want to propagate in the mesh

In the configuration file we can write which IP address we want to discard
and do not propagate in the mDNS flooding.

For example if I have Apple AirPort at home, do not giving out any service
I dont want those mDNS packets travelling in the all mesh network.
mDNS: Upgrading the container_of.h that was backported from src/common in master

A newer version is present in master and this commit makes the upgrade
mDNS: review of Alessandro Gnagni patch, inserted a config value to enable or disable TTL check and change, default is enabled.
mDNS: Implemented router election mechansim to have only 1 active mDNS OLSR router in 1 LAN

Implemented IPv4 and IPv6 socket that should
capture the router election signalling packets (hellos)

Hellos are sent out with a timer

A second time triggers the router to decide if he is master
mDNS: Fix most of the warnings from the compiler
mDNS: Implemented Host Filtering for ipv4 and ipv6, writing in the config file which hosts to ignore. The mDNS packets from the ignored hosts will be ignored and not propagated in the network
mDNS: Updated README file for mDNS plugin
mDNS: Reworked logic of router Election. The election is now handled on interface basis, because the router could have one interface where it needs to be master and another interface where it needs to be disabled. There was a logical bug in the earlier implementation.
mDNS: Update checksum field of the IPv4 Header after altering TTL
mDNS: BUGFIX, mDNS plugin, hello message of router election not sent if debug = 0
mDNS: trivial debug print fix and code readibility improvement
mDNS: Change version of mdns plugin to 1.0.1 after GSoC 2012 work by Alessandro Gnagni
mDNS: init ListOfFilteredHosts in the proper place and not at every received packet
mDNS: trivial, removed TODO from code for something that was implemented
mDNS: better debug support for filtered hosts feature
mDNS: Fixed typo in README
Revert "mDNS: init ListOfFilteredHosts in the proper place and not at every received packet"

This reverts commit 0b0ddb77c04ca8f490ede4438acf7073f5a47be1.

Conflicts:

	lib/mdns/src/mdns.c

It caused a segfault
gateway: export refresh_smartgw_netmask function

we need it when we adjust the uplink and/or downlink speeds

Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl>