diff options
author | Thomas Haller <thaller@redhat.com> | 2023-06-14 14:14:31 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2023-06-28 13:25:09 +0200 |
commit | de39f67d723253c7ac6d2021f2236eb8afab475b (patch) | |
tree | 85c9e9d0f1536d30e7a285c30a074df1d5a5069b | |
parent | 2695396939d2a867145f7db569aaf5cc6b0d742c (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.meson | 3 | ||||
-rw-r--r-- | configure.ac | 3 | ||||
-rw-r--r-- | meson.build | 3 | ||||
-rw-r--r-- | src/core/ppp/nm-pppd-compat.c | 4 |
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); |