summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2023-06-14 14:14:31 +0200
committerThomas Haller <thaller@redhat.com>2023-06-28 13:25:09 +0200
commitde39f67d723253c7ac6d2021f2236eb8afab475b (patch)
tree85c9e9d0f1536d30e7a285c30a074df1d5a5069b
parent2695396939d2a867145f7db569aaf5cc6b0d742c (diff)
ppp: detect the ppp version in the configure script
Previously, the ppp version was only detected (and used) at one place, in "nm-pppd-compat.c", after including the ppp headers. That was nice and easy. However, with that way, we could only detect it after including ppp headers, and given the ugliness of ppp headers, we only want to include them in "nm-pppd-compat.c" (and nowhere else). In particular, 'nm-pppd-compat.c" uses symbols from the ppp daemon, it thus can only be linked into a ppp plugin, not in NetworkManager core itself. But at some places we will need to know the ppp version, outside of the ppp plugin and "nm-pppd-compat.c". Additionally, detect it at configure time and place it in "config.h". There is a static assert that we are in agreement with the two ways of detection. (cherry picked from commit 3e66c0bde1472489dfafe53f25fbe252d5a4bcad) (cherry picked from commit 65756dca7f865be16f4c1d29b0782e270dd83c8e)
-rw-r--r--config.h.meson3
-rw-r--r--configure.ac3
-rw-r--r--meson.build3
-rw-r--r--src/core/ppp/nm-pppd-compat.c4
4 files changed, 13 insertions, 0 deletions
diff --git a/config.h.meson b/config.h.meson
index 7337165082..bda542035b 100644
--- a/config.h.meson
+++ b/config.h.meson
@@ -239,6 +239,9 @@
/* Define to path of pppd binary */
#mesondefine PPPD_PATH
+/* The detected ppp API version */
+#mesondefine NM_PPP_VERSION_2_5_OR_NEWER
+
/* Define if you have iwd support */
#mesondefine WITH_IWD
diff --git a/configure.ac b/configure.ac
index 8757257fae..445cd6fb02 100644
--- a/configure.ac
+++ b/configure.ac
@@ -754,10 +754,12 @@ fi
AC_SUBST(DBUS_SYS_DIR)
# pppd
+NM_PPP_VERSION_2_5_OR_NEWER=0
PPPD_VERSION=2.4.9
PKG_CHECK_EXISTS([pppd], [
PPPD_VERSION=`$PKG_CONFIG --modversion pppd`
PPPD_CFLAGS=`$PKG_CONFIG --cflags pppd`
+ NM_PPP_VERSION_2_5_OR_NEWER=1
])
AC_ARG_ENABLE(ppp,
@@ -783,6 +785,7 @@ else
PPPD_PLUGIN_DIR="${libdir}/pppd/$PPPD_VERSION"
fi
AC_SUBST(PPPD_PLUGIN_DIR)
+AC_DEFINE_UNQUOTED(NM_PPP_VERSION_2_5_OR_NEWER, $NM_PPP_VERSION_2_5_OR_NEWER, [The detected ppp API version])
AC_ARG_WITH(pppd, AS_HELP_STRING([--with-pppd=/path/to/pppd], [path to pppd binary]))
if test "x${with_pppd}" = x; then
diff --git a/meson.build b/meson.build
index a8ec64be69..64350e1cfe 100644
--- a/meson.build
+++ b/meson.build
@@ -560,10 +560,12 @@ config_h.set10('WITH_FIREWALLD_ZONE', enable_firewalld_zone)
# pppd
enable_ppp = get_option('ppp')
+NM_PPP_VERSION_2_5_OR_NEWER = 0
if enable_ppp
pppd_dep = dependency('pppd', required: false)
if (pppd_dep.found())
pppd_version = pppd_dep.version()
+ NM_PPP_VERSION_2_5_OR_NEWER = 1
else
assert(cc.has_header('pppd/pppd.h'), 'couldn\'t find pppd.h. pppd development headers are required')
pppd_version = '2.4.9'
@@ -584,6 +586,7 @@ if enable_ppp
endif
endif
config_h.set10('WITH_PPP', enable_ppp)
+config_h.set10('NM_PPP_VERSION_2_5_OR_NEWER', NM_PPP_VERSION_2_5_OR_NEWER)
# ModemManager1 with libmm-glib
enable_modem_manager = get_option('modem_manager')
diff --git a/src/core/ppp/nm-pppd-compat.c b/src/core/ppp/nm-pppd-compat.c
index fd67eb3493..f7940c5501 100644
--- a/src/core/ppp/nm-pppd-compat.c
+++ b/src/core/ppp/nm-pppd-compat.c
@@ -75,6 +75,10 @@ _NM_PRAGMA_WARNING_REENABLE;
/*****************************************************************************/
+G_STATIC_ASSERT(PPP_VERSION_2_5_OR_NEWER == NM_PPP_VERSION_2_5_OR_NEWER);
+
+/*****************************************************************************/
+
G_STATIC_ASSERT((gint64) NM_PPP_STATUS_DEAD == PHASE_DEAD);
G_STATIC_ASSERT((gint64) NM_PPP_STATUS_INITIALIZE == PHASE_INITIALIZE);
G_STATIC_ASSERT((gint64) NM_PPP_STATUS_SERIALCONN == PHASE_SERIALCONN);