diff --git a/Makefile.am b/Makefile.am index 16586af4d1..0c0265588b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3227,6 +3227,12 @@ src_core_ppp_libnm_ppp_plugin_la_LIBADD = \ $(src_core_ppp_libnm_ppp_plugin_la_OBJECTS): $(src_libnm_core_public_mkenums_h) +check-local-ppp-plugin: src/core/NetworkManager src/core/ppp/libnm-ppp-plugin.la + $(srcdir)/tools/check-exports.sh $(builddir)/src/core/ppp/.libs/libnm-ppp-plugin.so "$(srcdir)/src/core/ppp/nm-ppp-plugin.ver" + $(call check_so_symbols,$(builddir)/src/core/ppp/.libs/libnm-ppp-plugin.so) + +check_local += check-local-ppp-plugin + endif EXTRA_DIST += \ 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-ppp-manager.c b/src/core/ppp/nm-ppp-manager.c index e5fcb6aa2b..c58513f85c 100644 --- a/src/core/ppp/nm-ppp-manager.c +++ b/src/core/ppp/nm-ppp-manager.c @@ -842,7 +842,7 @@ create_pppd_cmd_line(NMPPPManager *self, const char *pppoe_service; nm_strv_ptrarray_add_string_dup(cmd, "plugin"); - nm_strv_ptrarray_add_string_dup(cmd, "rp-pppoe.so"); + nm_strv_ptrarray_add_string_dup(cmd, NM_PPPOE_PLUGIN_NAME); nm_strv_ptrarray_add_string_concat(cmd, "nic-", priv->parent_iface); @@ -871,7 +871,7 @@ create_pppd_cmd_line(NMPPPManager *self, } else if (!strcmp(protocol, NM_SETTING_ADSL_PROTOCOL_PPPOE)) { nm_strv_ptrarray_add_string_dup(cmd, "plugin"); - nm_strv_ptrarray_add_string_dup(cmd, "rp-pppoe.so"); + nm_strv_ptrarray_add_string_dup(cmd, NM_PPPOE_PLUGIN_NAME); nm_strv_ptrarray_add_string_dup(cmd, priv->parent_iface); } diff --git a/src/core/ppp/nm-ppp-status.h b/src/core/ppp/nm-ppp-status.h index 57b48fe922..a2576e9cc0 100644 --- a/src/core/ppp/nm-ppp-status.h +++ b/src/core/ppp/nm-ppp-status.h @@ -29,4 +29,10 @@ typedef enum { NM_PPP_STATUS_INTERN_DEAD, } NMPPPStatus; +/*****************************************************************************/ + +/* The plugin name "(rp-)pppoe.so" depends on the ppp version. */ + +#define NM_PPPOE_PLUGIN_NAME (NM_PPP_VERSION_2_5_OR_NEWER ? "pppoe.so" : "rp-pppoe.so") + #endif /* __NM_PPP_STATUS_H__ */ 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);