summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'net-vpn/networkmanager-l2tp')
-rw-r--r--net-vpn/networkmanager-l2tp/files/networkmanager-l2tp-1.20.8-bashism-configure.patch35
-rw-r--r--net-vpn/networkmanager-l2tp/files/networkmanager-l2tp-1.20.8-ppp-2.5.0-1.patch170
-rw-r--r--net-vpn/networkmanager-l2tp/files/networkmanager-l2tp-1.20.8-ppp-2.5.0-2.patch190
-rw-r--r--net-vpn/networkmanager-l2tp/networkmanager-l2tp-1.20.8-r3.ebuild80
-rw-r--r--net-vpn/networkmanager-l2tp/networkmanager-l2tp-1.20.8.ebuild2
5 files changed, 476 insertions, 1 deletions
diff --git a/net-vpn/networkmanager-l2tp/files/networkmanager-l2tp-1.20.8-bashism-configure.patch b/net-vpn/networkmanager-l2tp/files/networkmanager-l2tp-1.20.8-bashism-configure.patch
new file mode 100644
index 000000000000..d4a672815cd3
--- /dev/null
+++ b/net-vpn/networkmanager-l2tp/files/networkmanager-l2tp-1.20.8-bashism-configure.patch
@@ -0,0 +1,35 @@
+https://github.com/nm-l2tp/NetworkManager-l2tp/pull/208
+
+From bf46aec299c58321703f5431ebafcce561a98cef Mon Sep 17 00:00:00 2001
+From: Sam James <sam@gentoo.org>
+Date: Sun, 23 Apr 2023 09:16:24 +0100
+Subject: [PATCH] configure.ac: fix bashisms in configure.ac
+
+configure scripts need to be runnable with a POSIX-compliant /bin/sh.
+
+On many (but not all!) systems, /bin/sh is provided by Bash, so errors
+like this aren't spotted. Notably Debian defaults to /bin/sh provided
+by dash which doesn't tolerate such bashisms as '=='.
+
+This retains compatibility with bash.
+--- a/configure.ac
++++ b/configure.ac
+@@ -197,7 +197,7 @@ fi
+ AM_CONDITIONAL(WITH_GNOME, test "$with_gnome" != no)
+
+ AC_ARG_WITH(gtk4, AS_HELP_STRING([--with-gtk4], [Build NetworkManager-l2tp with libnma-gtk4 support]), [], [with_gtk4_specified=no])
+-if test "$with_gtk4_specified" == no; then
++if test "$with_gtk4_specified" = no; then
+ with_gtk4=no
+ fi
+ if test "$with_gtk4" != yes; then
+@@ -256,7 +256,7 @@ NM_LD_GC
+
+ NM_PLUGIN_DIR="$libdir/NetworkManager"
+ AC_SUBST(NM_PLUGIN_DIR)
+-if test x"$enable_absolute_paths" == x"yes"; then
++if test x"$enable_absolute_paths" = x"yes"; then
+ NM_PLUGIN_DIR_NAME_FILE="$NM_PLUGIN_DIR/"
+ else
+ enable_absolute_paths=no
+
diff --git a/net-vpn/networkmanager-l2tp/files/networkmanager-l2tp-1.20.8-ppp-2.5.0-1.patch b/net-vpn/networkmanager-l2tp/files/networkmanager-l2tp-1.20.8-ppp-2.5.0-1.patch
new file mode 100644
index 000000000000..215ee2e10465
--- /dev/null
+++ b/net-vpn/networkmanager-l2tp/files/networkmanager-l2tp-1.20.8-ppp-2.5.0-1.patch
@@ -0,0 +1,170 @@
+https://bugs.gentoo.org/904843
+https://github.com/nm-l2tp/NetworkManager-l2tp/commit/e6860eb957208a932fb565dd7b5e79fe5a4df662
+
+From e6860eb957208a932fb565dd7b5e79fe5a4df662 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Eivind=20N=C3=A6ss?= <eivnaes@yahoo.com>
+Date: Fri, 3 Mar 2023 05:22:13 +0000
+Subject: [PATCH] Adding support for compiling against pppd-2.5.0 (current
+ master)
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
+---
+ configure.ac | 46 +++++++++++++++++++++++++++++++++++++--
+ src/nm-l2tp-pppd-plugin.c | 20 +++++++++--------
+ 2 files changed, 55 insertions(+), 11 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index baf8d44..b925eb0 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -33,7 +33,10 @@ dnl
+ AC_PROG_CC
+ AM_PROG_CC_C_O
+ AC_PROG_INSTALL
++AC_PROG_CPP
++AC_PROG_EGREP
+ AC_PATH_PROG(GLIB_COMPILE_RESOURCES, glib-compile-resources)
++PKG_PROG_PKG_CONFIG()
+
+ AC_CHECK_PROG([has_file], file, yes, no)
+ if test x$has_file = xno ; then
+@@ -49,24 +52,63 @@ dnl
+ dnl Required headers
+ dnl
+ AC_HEADER_STDC
+-AC_CHECK_HEADERS(fcntl.h paths.h sys/ioctl.h sys/time.h syslog.h unistd.h)
++AC_CHECK_HEADERS([
++ fcntl.h
++ paths.h
++ stdarg.h
++ stdbool.h
++ sys/ioctl.h
++ sys/time.h
++ syslog.h
++ unistd.h
++ ])
+
+ AC_CHECK_HEADERS(pppd/pppd.h,,
+ AC_MSG_ERROR(couldn't find pppd.h. pppd development headers are required.))
+
++dnl
++dnl Check the presense of other pppd/*.h files
++AC_CHECK_HEADERS([
++ pppd/chap.h
++ pppd/chap-new.h
++ pppd/chap_ms.h
++ ])
++
++dnl
++dnl Versions >= 2.5.0 will have pkg-config support
++PKG_CHECK_EXISTS([pppd],
++ [AS_VAR_SET([pppd_pkgconfig_support],[yes])])
++
++dnl
++dnl Get the version of pppd using pkg-config, assume 2.4.9 if not present
++PPPD_VERSION=2.4.9
++if test x"$pppd_pkgconfig_support" = xyes; then
++ PPPD_VERSION=`$PKG_CONFIG --modversion pppd`
++fi
++
+ AC_ARG_WITH([pppd-plugin-dir], AS_HELP_STRING([--with-pppd-plugin-dir=DIR], [path to the pppd plugins directory]))
+
+ if test -n "$with_pppd_plugin_dir" ; then
+ PPPD_PLUGIN_DIR="$with_pppd_plugin_dir"
+ else
+- PPPD_PLUGIN_DIR="${libdir}/pppd/2.4.9"
++ PPPD_PLUGIN_DIR="${libdir}/pppd/$PPPD_VERSION"
+ fi
+ AC_SUBST(PPPD_PLUGIN_DIR)
+
++dnl The version of pppd dictates what code can be included, i.e. enable use of
++dnl #if WITH_PPP_VERSION >= PPP_VERSION(2,5,0) in the code
++AC_DEFINE_UNQUOTED([PPP_VERSION(x,y,z)],
++ [((x & 0xFF) << 16 | (y & 0xFF) << 8 | (z & 0xFF) << 0)],
++ [Macro to help determine the particular version of pppd])
++PPP_VERSION=$(echo $PPPD_VERSION | sed -e "s/\./\,/g")
++AC_DEFINE_UNQUOTED(WITH_PPP_VERSION, PPP_VERSION($PPP_VERSION),
++ [The real version of pppd represented as an int])
++
+ AC_MSG_CHECKING(whether EAP-TLS patch has been applied to pppd)
+ AC_EGREP_CPP(eaptls_passwd_hook, [
+ #define USE_EAPTLS
+ #include <pppd/pppd.h>
++#include <pppd/eap.h>
+ ], [have_eap_tls=yes] , [have_eap_tls=no])
+
+ if test "x${have_eap_tls}" = "xno"; then
+diff --git a/src/nm-l2tp-pppd-plugin.c b/src/nm-l2tp-pppd-plugin.c
+index 71a7878..dd752a1 100644
+--- a/src/nm-l2tp-pppd-plugin.c
++++ b/src/nm-l2tp-pppd-plugin.c
+@@ -9,11 +9,6 @@
+ #include <config.h>
+ #define ___CONFIG_H__
+
+-/* pppd headers *sigh* */
+-#include <pppd/pppd.h>
+-#include <pppd/fsm.h>
+-#include <pppd/ipcp.h>
+-
+ #include "nm-default.h"
+
+ #include <string.h>
+@@ -25,13 +20,14 @@
+
+ #include "nm-l2tp-service.h"
+ #include "nm-ppp-status.h"
++#include "nm-l2tp-pppd-compat.h"
+
+ #include "nm-utils/nm-shared-utils.h"
+ #include "nm-utils/nm-vpn-plugin-macros.h"
+
+ int plugin_init(void);
+
+-char pppd_version[] = VERSION;
++char pppd_version[] = PPPD_VERSION;
+
+ /*****************************************************************************/
+
+@@ -146,7 +142,7 @@ nm_phasechange(void *data, int arg)
+ static void
+ nm_ip_up(void *data, int arg)
+ {
+- guint32 pppd_made_up_address = htonl (0x0a404040 + ifunit);
++ guint32 pppd_made_up_address = htonl (0x0a404040 + ppp_ifunit());
+ ipcp_options opts = ipcp_gotoptions[0];
+ ipcp_options peer_opts = ipcp_hisoptions[0];
+ GVariantBuilder builder;
+@@ -166,7 +162,7 @@ nm_ip_up(void *data, int arg)
+ g_variant_builder_add(&builder,
+ "{sv}",
+ NM_VPN_PLUGIN_IP4_CONFIG_TUNDEV,
+- g_variant_new_string(ifname));
++ g_variant_new_string(ppp_ifname()));
+
+ g_variant_builder_add(&builder,
+ "{sv}",
+@@ -343,12 +339,18 @@ plugin_init(void)
+ chap_check_hook = get_chap_check;
+ pap_passwd_hook = get_credentials;
+ pap_check_hook = get_pap_check;
+-#ifdef USE_EAPTLS
++#if defined(USE_EAPTLS) || defined(PPP_WITH_EAPTLS)
+ eaptls_passwd_hook = get_credentials;
+ #endif
+
++#if WITH_PPP_VERSION < PPP_VERSION(2,5,0)
+ add_notifier(&phasechange, nm_phasechange, NULL);
+ add_notifier(&ip_up_notifier, nm_ip_up, NULL);
+ add_notifier(&exitnotify, nm_exit_notify, NULL);
++#else
++ ppp_add_notify(NF_PHASE_CHANGE, nm_phasechange, NULL);
++ ppp_add_notify(NF_IP_UP, nm_ip_up, NULL);
++ ppp_add_notify(NF_EXIT, nm_exit_notify, NULL);
++#endif
+ return 0;
+ }
+
diff --git a/net-vpn/networkmanager-l2tp/files/networkmanager-l2tp-1.20.8-ppp-2.5.0-2.patch b/net-vpn/networkmanager-l2tp/files/networkmanager-l2tp-1.20.8-ppp-2.5.0-2.patch
new file mode 100644
index 000000000000..e0a83350af44
--- /dev/null
+++ b/net-vpn/networkmanager-l2tp/files/networkmanager-l2tp-1.20.8-ppp-2.5.0-2.patch
@@ -0,0 +1,190 @@
+https://bugs.gentoo.org/904843
+https://github.com/nm-l2tp/NetworkManager-l2tp/commit/36a427c316a8ccd3168606f6e7fd6c8ae2b9bebf
+
+From 36a427c316a8ccd3168606f6e7fd6c8ae2b9bebf Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Eivind=20N=C3=A6ss?= <eivnaes@yahoo.com>
+Date: Fri, 3 Mar 2023 05:22:13 +0000
+Subject: [PATCH] Adding support for compiling against pppd-2.5.0 (current
+ master)
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
+---
+ Makefile.am | 5 +-
+ src/nm-l2tp-pppd-compat.h | 93 +++++++++++++++++++
+ src/nm-l2tp-pppd-plugin.c | 7 +-
+ ...{nm-ppp-status.h => nm-l2tp-pppd-status.h} | 0
+ src/nm-l2tp-service.c | 2 +-
+ 5 files changed, 100 insertions(+), 7 deletions(-)
+ create mode 100644 src/nm-l2tp-pppd-compat.h
+ rename src/{nm-ppp-status.h => nm-l2tp-pppd-status.h} (100%)
+
+diff --git a/Makefile.am b/Makefile.am
+index 8201ca7..1feb9be 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -99,7 +99,7 @@ src_nm_l2tp_service_SOURCES = \
+ shared/nm-l2tp-crypto-nss.c \
+ shared/utils.h \
+ shared/utils.c \
+- src/nm-ppp-status.h \
++ src/nm-l2tp-pppd-status.h \
+ src/nm-l2tp-service.h \
+ src/nm-l2tp-service.c
+ src_nm_l2tp_service_CPPFLAGS = $(src_cppflags) $(NSS_CFLAGS) $(OPENSSL_CFLAGS)
+@@ -118,7 +118,8 @@ pppd_plugin_LTLIBRARIES = src/nm-l2tp-pppd-plugin.la
+ src_nm_l2tp_pppd_plugin_la_SOURCES = \
+ $(shared_sources) \
+ src/nm-l2tp-pppd-plugin.c \
+- src/nm-ppp-status.h
++ src/nm-l2tp-pppd-compat.h \
++ src/nm-l2tp-pppd-status.h
+ src_nm_l2tp_pppd_plugin_la_CPPFLAGS = $(src_cppflags)
+ src_nm_l2tp_pppd_plugin_la_LDFLAGS = \
+ -module -avoid-version
+diff --git a/src/nm-l2tp-pppd-compat.h b/src/nm-l2tp-pppd-compat.h
+new file mode 100644
+index 0000000..80e2891
+--- /dev/null
++++ b/src/nm-l2tp-pppd-compat.h
+@@ -0,0 +1,93 @@
++/* SPDX-License-Identifier: GPL-2.0-or-later */
++/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
++/* nm-sstp-service - sstp (and other pppd) integration with NetworkManager
++ *
++ * Copyright (C) 2023 Eivind Naess, eivnaes@yahoo.com
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License along
++ * with this program; if not, write to the Free Software Foundation, Inc.,
++ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
++ *
++ */
++
++#ifndef __NM_L2TP_PPPD_COMPAT_H__
++#define __NM_L2TP_PPPD_COMPAT_H__
++
++// PPP < 2.5.0 defines and exports VERSION which overlaps with current package VERSION define.
++// this silly macro magic is to work around that.
++
++#define INET6 1
++
++#undef VERSION
++#include <pppd/pppd.h>
++#ifndef PPPD_VERSION
++#define PPPD_VERSION VERSION
++#endif
++
++#include <pppd/fsm.h>
++#include <pppd/ccp.h>
++#include <pppd/eui64.h>
++#include <pppd/ipcp.h>
++#include <pppd/ipv6cp.h>
++#include <pppd/eap.h>
++#include <pppd/upap.h>
++
++#ifdef HAVE_PPPD_CHAP_H
++ #include <pppd/chap.h>
++#endif
++
++#ifdef HAVE_PPPD_CHAP_NEW_H
++ #include <pppd/chap-new.h>
++#endif
++
++#ifdef HAVE_PPPD_CHAP_MS_H
++ #include <pppd/chap_ms.h>
++#endif
++
++#ifndef PPP_PROTO_CHAP
++#define PPP_PROTO_CHAP 0xc223
++#endif
++
++#ifndef PPP_PROTO_EAP
++#define PPP_PROTO_EAP 0xc227
++#endif
++
++#if WITH_PPP_VERSION < PPP_VERSION(2,5,0)
++
++static inline bool debug_on(void)
++{
++ return debug;
++}
++
++static inline const char *ppp_ipparam(void)
++{
++ return ipparam;
++}
++
++static inline int ppp_ifunit(void)
++{
++ return ifunit;
++}
++
++static inline const char *ppp_ifname(void)
++{
++ return ifname;
++}
++
++static inline int ppp_get_mtu(int idx)
++{
++ return netif_get_mtu(idx);
++}
++
++#endif // #if WITH_PPP_VERSION < PPP_VERSION(2,5,0)
++#endif // #ifdef __NM_L2TP_PPPD_COMPAT_H__
+diff --git a/src/nm-l2tp-pppd-plugin.c b/src/nm-l2tp-pppd-plugin.c
+index dd752a1..f1d588e 100644
+--- a/src/nm-l2tp-pppd-plugin.c
++++ b/src/nm-l2tp-pppd-plugin.c
+@@ -9,8 +9,6 @@
+ #include <config.h>
+ #define ___CONFIG_H__
+
+-#include "nm-default.h"
+-
+ #include <string.h>
+ #include <stdlib.h>
+ #include <sys/socket.h>
+@@ -18,10 +16,11 @@
+ #include <arpa/inet.h>
+ #include <dlfcn.h>
+
+-#include "nm-l2tp-service.h"
+-#include "nm-ppp-status.h"
++#include "nm-l2tp-pppd-status.h"
+ #include "nm-l2tp-pppd-compat.h"
+
++#include "nm-default.h"
++#include "nm-l2tp-service.h"
+ #include "nm-utils/nm-shared-utils.h"
+ #include "nm-utils/nm-vpn-plugin-macros.h"
+
+diff --git a/src/nm-ppp-status.h b/src/nm-l2tp-pppd-status.h
+similarity index 100%
+rename from src/nm-ppp-status.h
+rename to src/nm-l2tp-pppd-status.h
+diff --git a/src/nm-l2tp-service.c b/src/nm-l2tp-service.c
+index 55f9542..629923c 100644
+--- a/src/nm-l2tp-service.c
++++ b/src/nm-l2tp-service.c
+@@ -36,7 +36,7 @@
+ #include <arpa/inet.h>
+ #include <netdb.h>
+
+-#include "nm-ppp-status.h"
++#include "nm-l2tp-pppd-status.h"
+ #include "nm-l2tp-pppd-service-dbus.h"
+ #include "nm-utils/nm-shared-utils.h"
+ #include "nm-utils/nm-secret-utils.h"
+
diff --git a/net-vpn/networkmanager-l2tp/networkmanager-l2tp-1.20.8-r3.ebuild b/net-vpn/networkmanager-l2tp/networkmanager-l2tp-1.20.8-r3.ebuild
new file mode 100644
index 000000000000..a8dc957d7e74
--- /dev/null
+++ b/net-vpn/networkmanager-l2tp/networkmanager-l2tp-1.20.8-r3.ebuild
@@ -0,0 +1,80 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+MY_PN="NetworkManager-l2tp"
+MY_P="${MY_PN}-${PV}"
+inherit autotools gnome.org
+
+DESCRIPTION="NetworkManager L2TP plugin"
+HOMEPAGE="https://github.com/nm-l2tp/NetworkManager-l2tp"
+SRC_URI="https://github.com/nm-l2tp/${MY_PN}/releases/download/${PV}/${MY_P}.tar.xz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="gtk"
+
+COMMON_DEPEND="dev-libs/glib:2
+ dev-libs/nspr
+ dev-libs/nss
+ dev-libs/openssl:=
+ net-dialup/ppp:=[eap-tls(+)]
+ net-dialup/xl2tpd
+ >=net-misc/networkmanager-1.20[ppp]
+ || (
+ net-vpn/strongswan
+ net-vpn/libreswan
+ )
+ gtk? (
+ app-crypt/libsecret
+ gnome-extra/nm-applet
+ media-libs/harfbuzz:=
+ net-libs/libnma
+ x11-libs/cairo
+ x11-libs/gdk-pixbuf:2
+ x11-libs/gtk+:3
+ x11-libs/pango
+ )"
+DEPEND="${COMMON_DEPEND}
+ x11-base/xorg-proto"
+RDEPEND="${COMMON_DEPEND}
+ dev-libs/dbus-glib"
+BDEPEND="dev-util/gdbus-codegen
+ dev-util/intltool
+ sys-devel/gettext
+ virtual/pkgconfig"
+
+S="${WORKDIR}/${MY_P}"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-ppp-2.5.0-{1,2}.patch
+ "${FILESDIR}"/${PN}-1.20.8-bashism-configure.patch
+)
+
+src_prepare() {
+ default
+
+ # For ppp-2.5.0 patch & bashism patch
+ eautoreconf
+}
+
+src_configure() {
+ local PPPD_VER=$(best_version net-dialup/ppp)
+ PPPD_VER=${PPPD_VER#*/*-} # reduce it to ${PV}-${PR}
+ PPPD_VER=${PPPD_VER%%[_-]*} # main version without beta/pre/patch/revision
+
+ local myeconfargs=(
+ --localstatedir=/var
+ --with-pppd-plugin-dir=/usr/$(get_libdir)/pppd/${PPPD_VER}
+ $(use_with gtk gnome)
+ )
+
+ econf "${myeconfargs[@]}"
+}
+
+src_install() {
+ default
+ find "${ED}" -name '*.la' -delete || die
+}
diff --git a/net-vpn/networkmanager-l2tp/networkmanager-l2tp-1.20.8.ebuild b/net-vpn/networkmanager-l2tp/networkmanager-l2tp-1.20.8.ebuild
index cfc6b1c20e10..c4c3ee77c566 100644
--- a/net-vpn/networkmanager-l2tp/networkmanager-l2tp-1.20.8.ebuild
+++ b/net-vpn/networkmanager-l2tp/networkmanager-l2tp-1.20.8.ebuild
@@ -21,7 +21,7 @@ COMMON_DEPEND="dev-libs/glib:2
dev-libs/nspr
dev-libs/nss
dev-libs/openssl:=
- net-dialup/ppp:=[eap-tls]
+ net-dialup/ppp:=[eap-tls(+)]
net-dialup/xl2tpd
>=net-misc/networkmanager-1.20[ppp]
|| (