Relay multicast and broadcast packets between interfaces.
Roll up some SSDP fixes and a broadcast fix.
Rolls up the following bug fixes:
Add the concept of an interface that is receive-only (suggested by @juliodiz).
Add IP filtering ability (suggested by @juliodiz).
Bug fix for sending packets into TUN interfaces.
Implement the ability to specify multiple --remote relays to connect to.
Implement the ability to accept connections from multiple remote relays.
For systems that do not have checksum-offloading enabled, make sure that we actually do the UDP checksum calculation.
For UDP packets that require fragmentation, write correct values into the IPv4 header. Previously large packets would be dropped due to fields being incorrect.
Implement masquerading.
Implement remote connectivity, plus ability to encrypt that remote connection.
Fragment colossal packets where necessary.
Add self-implementation of netifaces for systems that cannot load the python package.
Add support for OpenWRT.
Various tidy-ups etc.
Merge support for setting TTL (although actually this should not be required since we don't decrement the TTL when relaying us performed).
Add support for relaying broadcast packets between interfaces.
Add relaying of broadcast UDP packets on port 6969 to support Sonos Discovery (i.e. the mechanism where by the app can find new speakers when you push the "connect" button on the back of the speaker).
Add support for python 3. Use netifaces rather than fnctl() hackery. Add support for interface aliases. Add support for zeroshell.
Refactor the code to allow several multicast addresses to be relayed.
Enable mDNS (as well as SSDP) relaying by default. Add --relay 224.X.Y.Z:P flag so that the user can specify any additional multicast addresses that ought to be relayed.