From 30625ff9925e85dfd581378867a18cfade11b315 Mon Sep 17 00:00:00 2001 From: Philip Prindeville Date: Tue, 24 Nov 2020 13:50:31 -0700 Subject: [PATCH] avahi: incorrectly requires IFF_MULTICAST on point-to-point (tunnel) interfaces Signed-off-by: Philip Prindeville --- libs/avahi/Makefile | 2 +- .../100-p2p-no-iff_multicast-required.patch | 49 +++++++++++++++++++ 2 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 libs/avahi/patches/100-p2p-no-iff_multicast-required.patch diff --git a/libs/avahi/Makefile b/libs/avahi/Makefile index 023af27bc..d8e23cff3 100644 --- a/libs/avahi/Makefile +++ b/libs/avahi/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=avahi PKG_VERSION:=0.8 -PKG_RELEASE:=6 +PKG_RELEASE:=7 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://github.com/lathiat/avahi/releases/download/v$(PKG_VERSION) \ diff --git a/libs/avahi/patches/100-p2p-no-iff_multicast-required.patch b/libs/avahi/patches/100-p2p-no-iff_multicast-required.patch new file mode 100644 index 000000000..45aace5e1 --- /dev/null +++ b/libs/avahi/patches/100-p2p-no-iff_multicast-required.patch @@ -0,0 +1,49 @@ +commit 2b6bccca5d9d8ab7f11219a639707b325910a0b1 +Author: Philip Prindeville +Date: Thu Sep 17 00:27:55 2020 +0000 + + Logic for p2p on tunnels incorrectly requires IFF_MULTICAST (#305) + + Signed-off-by: Philip Prindeville + +diff --git a/avahi-core/iface-linux.c b/avahi-core/iface-linux.c +index e116c7b..75089c4 100644 +--- a/avahi-core/iface-linux.c ++++ b/avahi-core/iface-linux.c +@@ -105,8 +105,8 @@ static void netlink_callback(AvahiNetlink *nl, struct nlmsghdr *n, void* userdat + (ifinfomsg->ifi_flags & IFF_UP) && + (!m->server->config.use_iff_running || (ifinfomsg->ifi_flags & IFF_RUNNING)) && + ((ifinfomsg->ifi_flags & IFF_LOOPBACK) || +- (ifinfomsg->ifi_flags & IFF_MULTICAST)) && +- (m->server->config.allow_point_to_point || !(ifinfomsg->ifi_flags & IFF_POINTOPOINT)); ++ (ifinfomsg->ifi_flags & IFF_MULTICAST) || ++ ((ifinfomsg->ifi_flags & IFF_POINTOPOINT) && m->server->config.allow_point_to_point)); + + /* Handle interface attributes */ + l = NLMSG_PAYLOAD(n, sizeof(struct ifinfomsg)); +diff --git a/avahi-core/iface-pfroute.c b/avahi-core/iface-pfroute.c +index 45fd970..4eafce0 100644 +--- a/avahi-core/iface-pfroute.c ++++ b/avahi-core/iface-pfroute.c +@@ -81,8 +81,8 @@ static void rtm_info(struct rt_msghdr *rtm, AvahiInterfaceMonitor *m) + (ifm->ifm_flags & IFF_UP) && + (!m->server->config.use_iff_running || (ifm->ifm_flags & IFF_RUNNING)) && + ((ifm->ifm_flags & IFF_LOOPBACK) || +- (ifm->ifm_flags & IFF_MULTICAST)) && +- (m->server->config.allow_point_to_point || !(ifm->ifm_flags & IFF_POINTOPOINT)); ++ (ifm->ifm_flags & IFF_MULTICAST) || ++ ((ifm->ifm_flags & IFF_POINTOPOINT) && m->server->config.allow_point_to_point)); + + avahi_free(hw->name); + hw->name = avahi_strndup(sdl->sdl_data, sdl->sdl_nlen); +@@ -428,8 +428,8 @@ static void if_add_interface(struct lifreq *lifreq, AvahiInterfaceMonitor *m, in + (flags & IFF_UP) && + (!m->server->config.use_iff_running || (flags & IFF_RUNNING)) && + ((flags & IFF_LOOPBACK) || +- (flags & IFF_MULTICAST)) && +- (m->server->config.allow_point_to_point || !(flags & IFF_POINTOPOINT)); ++ (flags & IFF_MULTICAST) || ++ ((flags & IFF_POINTOPOINT) && m->server->config.allow_point_to_point)); + hw->name = avahi_strdup(lifreq->lifr_name); + hw->mtu = mtu; + /* TODO get mac address */