git: 3437a65039c6 - main - net/avahi-app: Add Netlink support

From: Gleb Popov <arrowd_at_FreeBSD.org>
Date: Sat, 22 Feb 2025 11:58:09 UTC
The branch main has been updated by arrowd:

URL: https://cgit.FreeBSD.org/ports/commit/?id=3437a65039c6414376e2018349fa896a1f03c66c

commit 3437a65039c6414376e2018349fa896a1f03c66c
Author:     Жунёва Мария Михайловна <zhunyova@mts.ru>
AuthorDate: 2025-02-20 14:19:21 +0000
Commit:     Gleb Popov <arrowd@FreeBSD.org>
CommitDate: 2025-02-22 11:58:03 +0000

    net/avahi-app: Add Netlink support
    
    Sponsored by:   Future Crew, LLC
    Pull Request:   https://github.com/freebsd/freebsd-ports/pull/349
---
 net/avahi-app/Makefile                         |  8 ++--
 net/avahi-app/files/patch-avahi-core_netlink.c | 57 ++++++++++++++++++++++++++
 net/avahi-app/files/patch-avahi-core_netlink.h | 21 ++++++++++
 net/avahi-app/files/patch-configure.ac         | 18 ++++++++
 4 files changed, 101 insertions(+), 3 deletions(-)

diff --git a/net/avahi-app/Makefile b/net/avahi-app/Makefile
index 9914a245e923..11b5d513fa28 100644
--- a/net/avahi-app/Makefile
+++ b/net/avahi-app/Makefile
@@ -1,6 +1,6 @@
 PORTNAME=	avahi
 PORTVERSION=	0.8
-PORTREVISION?=	2	# don't delete, reset to 0, check slave ports
+PORTREVISION?=	3	# don't delete, reset to 0, check slave ports
 CATEGORIES?=	net dns
 MASTER_SITES=	http://www.avahi.org/download/
 PKGNAMESUFFIX?=	-app
@@ -25,12 +25,11 @@ LIB_DEPENDS?=	libexpat.so:textproc/expat2 \
 USERS?=		${PORTNAME}
 GROUPS?=	${USERS}
 
-USES+=		alias cpe gettext gmake gnome libtool pathfix pkgconfig
+USES+=		autoreconf alias cpe gettext gmake gnome libtool pathfix pkgconfig
 USE_GNOME+=	glib20 intltool introspection:build
 USE_GNOME_SUBR=	yes
 USE_LDCONFIG=	yes
 GNU_CONFIGURE=	yes
-GNU_CONFIGURE_MANPREFIX=${PREFIX}/share
 CONFIGURE_ARGS?=--with-distro=freebsd \
 		--with-dbus-system-socket=unix:path=/var/run/dbus/system_bus_socket \
 		--enable-introspection=yes \
@@ -132,6 +131,9 @@ avahi-pre-su-install:
 post-install: avahi-post-install
 
 avahi-post-install:
+	@${RMDIR} ${STAGEDIR}/run
+	${MV} ${STAGEDIR}${PREFIX}/etc/rc.d/avahi-daemon.sh ${STAGEDIR}${PREFIX}/etc/rc.d/avahi-daemon
+	${MV} ${STAGEDIR}${PREFIX}/etc/rc.d/avahi-dnsconfd.sh ${STAGEDIR}${PREFIX}/etc/rc.d/avahi-dnsconfd
 .if defined(MANPAGES) && ${AVAHI_SLAVE} != gtk
 .for f in ${MANPAGES}
 	${INSTALL_DATA} ${WRKSRC}/man/${f} ${STAGEDIR}${PREFIX}/share/man/man${f:E}/${f}
diff --git a/net/avahi-app/files/patch-avahi-core_netlink.c b/net/avahi-app/files/patch-avahi-core_netlink.c
new file mode 100644
index 000000000000..e223080f20c5
--- /dev/null
+++ b/net/avahi-app/files/patch-avahi-core_netlink.c
@@ -0,0 +1,57 @@
+--- avahi-core/netlink.c.orig	2015-10-10 00:20:03 UTC
++++ avahi-core/netlink.c
+@@ -50,8 +50,9 @@ int avahi_netlink_work(AvahiNetlink *nl, int block) {
+     struct ucred *cred;
+     struct iovec iov;
+     struct nlmsghdr *p;
++#ifdef SO_PASSCRED
+     char cred_msg[CMSG_SPACE(sizeof(struct ucred))];
+-
++#endif
+     assert(nl);
+ 
+     iov.iov_base = nl->buffer;
+@@ -61,8 +62,10 @@ int avahi_netlink_work(AvahiNetlink *nl, int block) {
+     smsg.msg_namelen = 0;
+     smsg.msg_iov = &iov;
+     smsg.msg_iovlen = 1;
++#ifdef SO_PASSCRED
+     smsg.msg_control = cred_msg;
+     smsg.msg_controllen = sizeof(cred_msg);
++#endif
+     smsg.msg_flags = (block ? 0 : MSG_DONTWAIT);
+ 
+     if ((bytes = recvmsg(nl->fd, &smsg, 0)) < 0) {
+@@ -74,7 +77,7 @@ int avahi_netlink_work(AvahiNetlink *nl, int block) {
+     }
+ 
+     cmsg = CMSG_FIRSTHDR(&smsg);
+-
++#ifdef SO_PASSCRED
+     if (!cmsg || cmsg->cmsg_type != SCM_CREDENTIALS) {
+         avahi_log_warn("No sender credentials received, ignoring data.");
+         return -1;
+@@ -84,7 +87,7 @@ int avahi_netlink_work(AvahiNetlink *nl, int block) {
+ 
+     if (cred->pid != 0)
+         return -1;
+-
++#endif
+     p = (struct nlmsghdr *) nl->buffer;
+ 
+     assert(nl->callback);
+@@ -134,12 +137,12 @@ AvahiNetlink *avahi_netlink_new(const AvahiPoll *poll_
+         avahi_log_error(__FILE__": bind(): %s", strerror(errno));
+         goto fail;
+     }
+-
++#ifdef SO_PASSCRED
+     if (setsockopt(fd, SOL_SOCKET, SO_PASSCRED, &on, sizeof(on)) < 0) {
+         avahi_log_error(__FILE__": SO_PASSCRED: %s", strerror(errno));
+         goto fail;
+     }
+-
++#endif
+     if (!(nl = avahi_new(AvahiNetlink, 1))) {
+         avahi_log_error(__FILE__": avahi_new() failed.");
+         goto fail;
diff --git a/net/avahi-app/files/patch-avahi-core_netlink.h b/net/avahi-app/files/patch-avahi-core_netlink.h
new file mode 100644
index 000000000000..1ba13d3c00d5
--- /dev/null
+++ b/net/avahi-app/files/patch-avahi-core_netlink.h
@@ -0,0 +1,21 @@
+--- avahi-core/netlink.h.orig	2015-04-01 04:58:14 UTC
++++ avahi-core/netlink.h
+@@ -19,13 +19,17 @@
+   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+   USA.
+ ***/
+-
++#ifdef __linux__
+ #include <sys/socket.h>
+ #include <asm/types.h>
+ #include <inttypes.h>
+ 
+ #include <linux/netlink.h>
+ #include <linux/rtnetlink.h>
++#else
++#include <netlink/netlink.h>
++#include <netlink/netlink_route.h>
++#endif
+ 
+ #include <avahi-common/watch.h>
+ 
diff --git a/net/avahi-app/files/patch-configure.ac b/net/avahi-app/files/patch-configure.ac
new file mode 100644
index 000000000000..27e0edf9e67f
--- /dev/null
+++ b/net/avahi-app/files/patch-configure.ac
@@ -0,0 +1,18 @@
+--- configure.ac.orig	2020-02-18 07:01:15 UTC
++++ configure.ac
+@@ -166,6 +166,15 @@ AC_DEFINE([HAVE_NETLINK],[],[Support for Linux netlink
+ #include <asm/types.h>
+ ])
+ 
++
++#
++# Check for freebsd netlink.h
++#
++AC_CHECK_HEADER(netlink/netlink.h,
++HAVE_NETLINK=yes
++AC_DEFINE([HAVE_NETLINK],[],[Support for FreeBSD netlink])
++, [], [])
++
+ AM_CONDITIONAL(HAVE_NETLINK, [ test x"$HAVE_NETLINK" = xyes ])
+ 
+ #