diff --git a/Makefile.am b/Makefile.am index 8ee15b5be5..6d2df51c57 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1034,6 +1034,7 @@ src_cppflags = \ $(GUDEV_CFLAGS) \ $(LIBNL_CFLAGS) \ $(LIBNDP_CFLAGS) \ + $(LIBPSL_CFLAGS) \ $(LIBSOUP_CFLAGS) \ $(SELINUX_CFLAGS) \ $(LIBAUDIT_CFLAGS) \ @@ -1470,6 +1471,7 @@ src_libNetworkManager_la_LIBADD = \ $(LIBM) \ $(SELINUX_LIBS) \ $(LIBAUDIT_LIBS) \ + $(LIBPSL_LIBS) \ $(LIBSOUP_LIBS) ############################################################################### diff --git a/configure.ac b/configure.ac index 3af9c4a22c..d42489d8c9 100644 --- a/configure.ac +++ b/configure.ac @@ -965,6 +965,19 @@ fi AC_DEFINE_UNQUOTED(KERNEL_FIRMWARE_DIR, "$KERNEL_FIRMWARE_DIR", [Define to path of the kernel firmware directory]) AC_SUBST(KERNEL_FIRMWARE_DIR) +PKG_CHECK_MODULES(LIBPSL, [libpsl >= 0.1], [have_libpsl=yes],[have_libpsl=no]) +AC_ARG_WITH(libpsl, AS_HELP_STRING([--with-libpsl=yes|no], [Link against libpsl]), [], [with_libpsl=${have_libpsl}]) +if test "$with_libpsl" != "no"; then + if test "$have_libpsl" != "yes"; then + AC_MSG_ERROR(libpsl library not found) + fi + with_libpsl='yes' + AC_DEFINE(WITH_LIBPSL, 1, [Define if you have libpsl]) +else + AC_DEFINE(WITH_LIBPSL, 0, [Define if you have libpsl]) +fi +AM_CONDITIONAL(WITH_LIBPSL, test "$with_libpsl" != "no") + PKG_CHECK_MODULES(LIBSOUP, [libsoup-2.4 >= 2.40], [have_libsoup=yes],[have_libsoup=no]) AC_ARG_WITH(libsoup, AS_HELP_STRING([--with-libsoup=yes|no], [Link against libsoup]), [], [with_libsoup=${have_libsoup}]) if test "$with_libsoup" != "no"; then @@ -1296,4 +1309,5 @@ echo " LTO: $enable_lto" echo " linker garbage collection: $enable_ld_gc" echo " JSON validation for libnm: $enable_json_validation" echo " sanitizers: $sanitizers" +echo " Mozilla Public Suffix List: $with_libpsl" echo diff --git a/contrib/fedora/REQUIRED_PACKAGES b/contrib/fedora/REQUIRED_PACKAGES index 14d15d2b8b..4cc39995f2 100644 --- a/contrib/fedora/REQUIRED_PACKAGES +++ b/contrib/fedora/REQUIRED_PACKAGES @@ -35,6 +35,7 @@ yum install \ dbus-x11 \ wireless-tools-devel \ polkit-devel \ + libpsl-devel \ libsoup-devel \ readline-devel \ teamd-devel \ diff --git a/contrib/fedora/rpm/NetworkManager.spec b/contrib/fedora/rpm/NetworkManager.spec index 7e02cdac58..f0bcc53fd4 100644 --- a/contrib/fedora/rpm/NetworkManager.spec +++ b/contrib/fedora/rpm/NetworkManager.spec @@ -137,6 +137,7 @@ BuildRequires: libxslt BuildRequires: bluez-libs-devel %endif BuildRequires: systemd >= 200-3 systemd-devel +BuildRequires: libpsl-devel >= 0.1 BuildRequires: libsoup-devel BuildRequires: libndp-devel >= 1.0 %if 0%{?with_modem_manager_1} diff --git a/src/dns/nm-dns-manager.c b/src/dns/nm-dns-manager.c index 5b83eeba65..25876e5ef4 100644 --- a/src/dns/nm-dns-manager.c +++ b/src/dns/nm-dns-manager.c @@ -52,17 +52,10 @@ #include "introspection/org.freedesktop.NetworkManager.DnsManager.h" -#if WITH_LIBSOUP -#include - -#ifdef SOUP_CHECK_VERSION -#if SOUP_CHECK_VERSION (2, 40, 0) -#define DOMAIN_IS_VALID(domain) (*(domain) && !soup_tld_domain_is_public_suffix (domain)) -#endif -#endif -#endif - -#ifndef DOMAIN_IS_VALID +#if WITH_LIBPSL +#include +#define DOMAIN_IS_VALID(domain) (*(domain) && !psl_is_public_suffix (psl_builtin (), domain)) +#else #define DOMAIN_IS_VALID(domain) (*(domain)) #endif