* pppd was upgraded in:
  
https://git.openembedded.org/openembedded-core/commit/?id=5512bf4dfd299b8d5d474d9f26c2146b3e53514a

* connman fails to build with pptp or l2tp PACKAGECONFIG is enabled

Signed-off-by: Martin Jansa <martin.ja...@gmail.com>
---
 ...upport-for-latest-pppd-2.5.0-release.patch | 274 ++++++++++++++++++
 .../connman/connman_1.41.bb                   |   1 +
 2 files changed, 275 insertions(+)
 create mode 100644 
meta/recipes-connectivity/connman/connman/0001-vpn-Adding-support-for-latest-pppd-2.5.0-release.patch

diff --git 
a/meta/recipes-connectivity/connman/connman/0001-vpn-Adding-support-for-latest-pppd-2.5.0-release.patch
 
b/meta/recipes-connectivity/connman/connman/0001-vpn-Adding-support-for-latest-pppd-2.5.0-release.patch
new file mode 100644
index 0000000000..83343fdda5
--- /dev/null
+++ 
b/meta/recipes-connectivity/connman/connman/0001-vpn-Adding-support-for-latest-pppd-2.5.0-release.patch
@@ -0,0 +1,274 @@
+From 5f373f373f5baccc282dce257b7b16c8bb4a82c4 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Eivind=20N=C3=A6ss?= <eivn...@yahoo.com>
+Date: Sat, 25 Mar 2023 20:51:52 +0000
+Subject: [PATCH] vpn: Adding support for latest pppd 2.5.0 release
+
+The API has gone through a significant overhaul, and this change fixes any 
compile issues.
+1) Fixes to configure.ac itself
+2) Cleanup in pppd plugin itself
+
+Adding a libppp-compat.h file to mask for any differences in the version.
+
+Upstream-Status: Backport 
[https://git.kernel.org/pub/scm/network/connman/connman.git/commit/?id=a48864a2e5d2a725dfc6eef567108bc13b43857f]
+Signed-off-by: Martin Jansa <martin.ja...@gmail.com>
+---
+ configure.ac            |  42 ++++++++-----
+ scripts/libppp-compat.h | 127 ++++++++++++++++++++++++++++++++++++++++
+ scripts/libppp-plugin.c |  15 +++--
+ 3 files changed, 161 insertions(+), 23 deletions(-)
+ create mode 100644 scripts/libppp-compat.h
+
+diff --git a/configure.ac b/configure.ac
+index a573cef..f34bb38 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -135,14 +135,6 @@ AC_ARG_ENABLE(l2tp,
+       AC_HELP_STRING([--enable-l2tp], [enable l2tp support]),
+                       [enable_l2tp=${enableval}], [enable_l2tp="no"])
+ if (test "${enable_l2tp}" != "no"); then
+-      if (test -z "${path_pppd}"); then
+-              AC_PATH_PROG(PPPD, [pppd], [/usr/sbin/pppd], 
$PATH:/sbin:/usr/sbin)
+-      else
+-              PPPD="${path_pppd}"
+-              AC_SUBST(PPPD)
+-      fi
+-      AC_CHECK_HEADERS(pppd/pppd.h, dummy=yes,
+-                      AC_MSG_ERROR(ppp header files are required))
+       if (test -z "${path_l2tp}"); then
+               AC_PATH_PROG(L2TP, [xl2tpd], [/usr/sbin/xl2tpd], 
$PATH:/sbin:/usr/sbin)
+       else
+@@ -160,6 +152,18 @@ AC_ARG_ENABLE(pptp,
+       AC_HELP_STRING([--enable-pptp], [enable pptp support]),
+                       [enable_pptp=${enableval}], [enable_pptp="no"])
+ if (test "${enable_pptp}" != "no"); then
++      if (test -z "${path_pptp}"); then
++              AC_PATH_PROG(PPTP, [pptp], [/usr/sbin/pptp], 
$PATH:/sbin:/usr/sbin)
++      else
++              PPTP="${path_pptp}"
++              AC_SUBST(PPTP)
++      fi
++fi
++AM_CONDITIONAL(PPTP, test "${enable_pptp}" != "no")
++AM_CONDITIONAL(PPTP_BUILTIN, test "${enable_pptp}" = "builtin")
++
++if (test "${enable_pptp}" != "no" || test "${enable_l2tp}" != "no"); then
++
+       if (test -z "${path_pppd}"); then
+               AC_PATH_PROG(PPPD, [pppd], [/usr/sbin/pppd], 
$PATH:/sbin:/usr/sbin)
+       else
+@@ -168,15 +172,23 @@ if (test "${enable_pptp}" != "no"); then
+       fi
+       AC_CHECK_HEADERS(pppd/pppd.h, dummy=yes,
+                       AC_MSG_ERROR(ppp header files are required))
+-      if (test -z "${path_pptp}"); then
+-              AC_PATH_PROG(PPTP, [pptp], [/usr/sbin/pptp], 
$PATH:/sbin:/usr/sbin)
+-      else
+-              PPTP="${path_pptp}"
+-              AC_SUBST(PPTP)
++      AC_CHECK_HEADERS([pppd/chap.h pppd/chap-new.h pppd/chap_ms.h])
++
++      PKG_CHECK_EXISTS([pppd],
++          [AS_VAR_SET([pppd_pkgconfig_support],[yes])])
++
++      PPPD_VERSION=2.4.9
++      if test x"$pppd_pkgconfig_support" = xyes; then
++          PPPD_VERSION=`$PKG_CONFIG --modversion pppd`
+       fi
++
++      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])
+ fi
+-AM_CONDITIONAL(PPTP, test "${enable_pptp}" != "no")
+-AM_CONDITIONAL(PPTP_BUILTIN, test "${enable_pptp}" = "builtin")
+ 
+ AC_CHECK_HEADERS(resolv.h, dummy=yes,
+       AC_MSG_ERROR(resolver header files are required))
+diff --git a/scripts/libppp-compat.h b/scripts/libppp-compat.h
+new file mode 100644
+index 0000000..eee1d09
+--- /dev/null
++++ b/scripts/libppp-compat.h
+@@ -0,0 +1,127 @@
++/* Copyright (C) Eivind Naess, eivn...@yahoo.com */
++/* SPDX-License-Identifier: GPL-2.0-or-later */
++
++#ifndef __LIBPPP_COMPAT_H__
++#define __LIBPPP_COMPAT_H__
++
++/* Define USE_EAPTLS compile with EAP TLS support against older pppd headers,
++ * pppd >= 2.5.0 use PPP_WITH_EAPTLS and is defined in pppdconf.h */
++#define USE_EAPTLS 1
++
++/* Define INET6 to compile with IPv6 support against older pppd headers,
++ * pppd >= 2.5.0 use PPP_WITH_IPV6CP 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>
++
++#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);
++}
++
++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)
++{
++      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 /* #if__LIBPPP_COMPAT_H__ */
+diff --git a/scripts/libppp-plugin.c b/scripts/libppp-plugin.c
+index 0dd8b47..61641b5 100644
+--- a/scripts/libppp-plugin.c
++++ b/scripts/libppp-plugin.c
+@@ -29,14 +29,13 @@
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <fcntl.h>
+-#include <pppd/pppd.h>
+-#include <pppd/fsm.h>
+-#include <pppd/ipcp.h>
+ #include <netinet/in.h>
+ #include <arpa/inet.h>
+ 
+ #include <dbus/dbus.h>
+ 
++#include "libppp-compat.h"
++
+ #define INET_ADDRES_LEN (INET_ADDRSTRLEN + 5)
+ #define INET_DNS_LEN  (2*INET_ADDRSTRLEN + 9)
+ 
+@@ -47,7 +46,7 @@ static char *path;
+ static DBusConnection *connection;
+ static int prev_phase;
+ 
+-char pppd_version[] = VERSION;
++char pppd_version[] = PPPD_VERSION;
+ 
+ int plugin_init(void);
+ 
+@@ -170,7 +169,7 @@ static void ppp_up(void *data, int arg)
+                       DBUS_TYPE_STRING_AS_STRING DBUS_TYPE_STRING_AS_STRING
+                       DBUS_DICT_ENTRY_END_CHAR_AS_STRING, &dict);
+ 
+-      append(&dict, "INTERNAL_IFNAME", ifname);
++      append(&dict, "INTERNAL_IFNAME", ppp_ifname());
+ 
+       inet_ntop(AF_INET, &ipcp_gotoptions[0].ouraddr, buf, INET_ADDRSTRLEN);
+       append(&dict, "INTERNAL_IP4_ADDRESS", buf);
+@@ -309,9 +308,9 @@ int plugin_init(void)
+       chap_check_hook = ppp_have_secret;
+       pap_check_hook = ppp_have_secret;
+ 
+-      add_notifier(&ip_up_notifier, ppp_up, NULL);
+-      add_notifier(&phasechange, ppp_phase_change, NULL);
+-      add_notifier(&exitnotify, ppp_exit, connection);
++      ppp_add_notify(NF_IP_UP, ppp_up, NULL);
++      ppp_add_notify(NF_PHASE_CHANGE, ppp_phase_change, NULL);
++      ppp_add_notify(NF_EXIT, ppp_exit, connection);
+ 
+       return 0;
+ }
diff --git a/meta/recipes-connectivity/connman/connman_1.41.bb 
b/meta/recipes-connectivity/connman/connman_1.41.bb
index 3f2e29820f..d8ac1f5cde 100644
--- a/meta/recipes-connectivity/connman/connman_1.41.bb
+++ b/meta/recipes-connectivity/connman/connman_1.41.bb
@@ -9,6 +9,7 @@ SRC_URI = 
"${KERNELORG_MIRROR}/linux/network/${BPN}/${BP}.tar.xz \
            file://CVE-2022-32293_p2.patch \
            file://CVE-2022-32292.patch \
            file://0001-gdhcp-Verify-and-sanitize-packet-length-first.patch \
+           file://0001-vpn-Adding-support-for-latest-pppd-2.5.0-release.patch \
            "
 
 SRC_URI:append:libc-musl = " 
file://0002-resolve-musl-does-not-implement-res_ninit.patch"
-- 
2.40.1

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#181811): 
https://lists.openembedded.org/g/openembedded-core/message/181811
Mute This Topic: https://lists.openembedded.org/mt/99178058/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to