summaryrefslogtreecommitdiff
path: root/net-vpn/networkmanager-fortisslvpn/files/networkmanager-fortisslvpn-1.4.0-ppp-2.5.0-3.patch
diff options
context:
space:
mode:
Diffstat (limited to 'net-vpn/networkmanager-fortisslvpn/files/networkmanager-fortisslvpn-1.4.0-ppp-2.5.0-3.patch')
-rw-r--r--net-vpn/networkmanager-fortisslvpn/files/networkmanager-fortisslvpn-1.4.0-ppp-2.5.0-3.patch191
1 files changed, 191 insertions, 0 deletions
diff --git a/net-vpn/networkmanager-fortisslvpn/files/networkmanager-fortisslvpn-1.4.0-ppp-2.5.0-3.patch b/net-vpn/networkmanager-fortisslvpn/files/networkmanager-fortisslvpn-1.4.0-ppp-2.5.0-3.patch
new file mode 100644
index 000000000000..30092c021bd3
--- /dev/null
+++ b/net-vpn/networkmanager-fortisslvpn/files/networkmanager-fortisslvpn-1.4.0-ppp-2.5.0-3.patch
@@ -0,0 +1,191 @@
+https://gitlab.gnome.org/GNOME/NetworkManager-fortisslvpn/-/merge_requests/27
+https://bugs.gentoo.org/904842
+
+From d59819b5d26db44f51bfbb76be3b373c419e408d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Eivind=20N=C3=A6ss?= <eivnaes@yahoo.com>
+Date: Wed, 8 Mar 2023 04:30:13 +0000
+Subject: [PATCH] Improve compatibility with pppd-2.5.0 release
+
+This allows compiling against the older pppd 2.4 series while still
+using the new API in the plugin code. It does so by adding a static
+inline function ppp_add_notify().
+
+Additional formatting changes to the nm-fortisslvpn-pppd-compat.h based
+on review from Lubomir.
+--- a/src/nm-fortisslvpn-pppd-compat.h
++++ b/src/nm-fortisslvpn-pppd-compat.h
+@@ -1,32 +1,15 @@
+-/* -*- 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) Eivind Næss, 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.
+- *
+- */
++/* Copyright (C) 2023 Eivind Naess, eivnaes@yahoo.com */
++/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+ #ifndef __NM_FORTISSLVPN_PPPD_COMPAT_H__
+ #define __NM_FORTISSLVPN_PPPD_COMPAT_H__
+
+-#define INET6 1
+-
+-// 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 to compile with IPv6 support against older pppd headers,
++ * pppd >= 2.5.0 use WITH_PPP_IPV6 and is defined in pppdconf.h */
++#define INET6 1
+
++/* PPP < 2.5.0 defines and exports VERSION which overlaps with current package VERSION define.
++ * this silly macro magic is to work around that. */
+ #undef VERSION
+ #include <pppd/pppd.h>
+
+@@ -43,51 +26,98 @@
+ #include <pppd/upap.h>
+
+ #ifdef HAVE_PPPD_CHAP_H
+- #include <pppd/chap.h>
++#include <pppd/chap.h>
+ #endif
+
+ #ifdef HAVE_PPPD_CHAP_NEW_H
+- #include <pppd/chap-new.h>
++#include <pppd/chap-new.h>
+ #endif
+
+ #ifdef HAVE_PPPD_CHAP_MS_H
+- #include <pppd/chap_ms.h>
++#include <pppd/chap_ms.h>
+ #endif
+
+ #ifndef PPP_PROTO_CHAP
+-#define PPP_PROTO_CHAP 0xc223
++#define PPP_PROTO_CHAP 0xc223
+ #endif
+
+ #ifndef PPP_PROTO_EAP
+-#define PPP_PROTO_EAP 0xc227
++#define PPP_PROTO_EAP 0xc227
+ #endif
+
++
+ #if WITH_PPP_VERSION < PPP_VERSION(2,5,0)
+
+-static inline bool debug_on(void)
++static inline bool
++debug_on (void)
++{
++ return debug;
++}
++
++static inline const char
++*ppp_ipparam (void)
+ {
+- return debug;
++ return ipparam;
+ }
+
+-static inline const char *ppp_ipparam(void)
++static inline int
++ppp_ifunit (void)
+ {
+- return ipparam;
++ return ifunit;
+ }
+
+-static inline int ppp_ifunit(void)
++static inline const char *
++ppp_ifname (void)
+ {
+- return ifunit;
++ return ifname;
+ }
+
+-static inline const char *ppp_ifname(void)
++static inline int
++ppp_get_mtu (int idx)
+ {
+- return ifname;
++ return netif_get_mtu(idx);
+ }
+
+-static inline int ppp_get_mtu(int idx)
++typedef enum ppp_notify
++{
++ NF_PID_CHANGE,
++ NF_PHASE_CHANGE,
++ NF_EXIT,
++ NF_SIGNALED,
++ NF_IP_UP,
++ NF_IP_DOWN,
++ NF_IPV6_UP,
++ NF_IPV6_DOWN,
++ NF_AUTH_UP,
++ NF_LINK_DOWN,
++ NF_FORK,
++ NF_MAX_NOTIFY
++} ppp_notify_t;
++
++typedef void (ppp_notify_fn) (void *ctx, int arg);
++
++static inline void
++ppp_add_notify (ppp_notify_t type, ppp_notify_fn *func, void *ctx)
+ {
+- return netif_get_mtu(idx);
++ struct notifier **list[NF_MAX_NOTIFY] = {
++ [NF_PID_CHANGE ] = &pidchange,
++ [NF_PHASE_CHANGE] = &phasechange,
++ [NF_EXIT ] = &exitnotify,
++ [NF_SIGNALED ] = &sigreceived,
++ [NF_IP_UP ] = &ip_up_notifier,
++ [NF_IP_DOWN ] = &ip_down_notifier,
++ [NF_IPV6_UP ] = &ipv6_up_notifier,
++ [NF_IPV6_DOWN ] = &ipv6_down_notifier,
++ [NF_AUTH_UP ] = &auth_up_notifier,
++ [NF_LINK_DOWN ] = &link_down_notifier,
++ [NF_FORK ] = &fork_notifier,
++ };
++
++ struct notifier **notify = list[type];
++ if (notify) {
++ add_notifier(notify, func, ctx);
++ }
+ }
+
+-#endif // #if WITH_PPP_VERSION < PPP_VERSION(2,5,0)
+-#endif // #ifdef __NM_FORTISSLVPN_PPPD_COMPAT_H__
++#endif /* #if WITH_PPP_VERSION < PPP_VERSION(2,5,0) */
++#endif /* #ifdef __NM_FORTISSLVPN_PPPD_COMPAT_H__ */
+--- a/src/nm-fortisslvpn-pppd-plugin.c
++++ b/src/nm-fortisslvpn-pppd-plugin.c
+@@ -438,14 +438,8 @@ plugin_init (void)
+ return -1;
+ }
+
+-#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;
+ }
+--
+GitLab