diff options
author | Lubomir Rintel <lkundrak@v3.sk> | 2017-03-20 16:57:58 +0000 |
---|---|---|
committer | Lubomir Rintel <lkundrak@v3.sk> | 2017-03-22 12:09:39 +0100 |
commit | c05befd5aadf9dd2702a888f79b0ed4cdba963f9 (patch) | |
tree | ee44612e6b562ec89e70c4fbcb5e8b5274d0f17b | |
parent | 80dfb8cdab6238dcf1099d4dea9bb396ff0f5ee9 (diff) | |
download | NetworkManager-c05befd5aadf9dd2702a888f79b0ed4cdba963f9.tar.gz |
dns-manager: use libpsl directly
...instead of via libsoup. This makes it possible to do gTLD suffix checking
even if we're building without libsoup support.
-rw-r--r-- | Makefile.am | 2 | ||||
-rw-r--r-- | configure.ac | 14 | ||||
-rw-r--r-- | contrib/fedora/REQUIRED_PACKAGES | 1 | ||||
-rw-r--r-- | contrib/fedora/rpm/NetworkManager.spec | 1 | ||||
-rw-r--r-- | src/dns/nm-dns-manager.c | 15 |
5 files changed, 22 insertions, 11 deletions
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 <libsoup/soup.h> - -#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 <libpsl.h> +#define DOMAIN_IS_VALID(domain) (*(domain) && !psl_is_public_suffix (psl_builtin (), domain)) +#else #define DOMAIN_IS_VALID(domain) (*(domain)) #endif |