Compare commits

...

11 Commits

Author SHA1 Message Date
openeuler-ci-bot
221c317069
!199 fix CVE-2024-6501
From: @zhongxuan2 
Reviewed-by: @robertxw 
Signed-off-by: @robertxw
2024-10-16 08:44:44 +00:00
Qiumiao Zhang
18fb8c7183 fix CVE-2024-6501 2024-10-16 07:50:08 +00:00
openeuler-ci-bot
b49e8edefb
!187 Add NM to support wifi6(fix dde-network-core build error)
From: @lliuzhi 
Reviewed-by: @weidongkl, @robertxw 
Signed-off-by: @robertxw
2024-04-15 11:43:53 +00:00
liuzhilin
f00eb7a1ea add NM to support wifi6(fix dde-network-core build error) 2024-04-15 16:06:40 +08:00
openeuler-ci-bot
b80e93cedc
!186 update to 1.44.2
From: @tmacbb 
Reviewed-by: @robertxw 
Signed-off-by: @robertxw
2024-02-18 08:30:00 +00:00
tmacbb
c1aa0018e8 update to 1.44.2 2024-02-18 15:20:43 +08:00
openeuler-ci-bot
27ff3cb4c7
!182 [sync] PR-181: sync patch from sp1 and update the method of obtaining the PPP version
From: @openeuler-sync-bot 
Reviewed-by: @sunsuwan 
Signed-off-by: @sunsuwan
2023-09-04 02:21:35 +00:00
gaoxingwang
8b95cf1e88 sync bugfix patch and update the way to get ppp version
(cherry picked from commit bac4bf56a786600349e2832a0e74a98156e27895)
2023-08-31 16:49:13 +08:00
openeuler-ci-bot
18000879e2
!179 解决openEuler-2309分支安装NetworkManager未产生软链接问题
From: @robertxw 
Reviewed-by: @gebidelidaye 
Signed-off-by: @gebidelidaye
2023-08-25 08:22:33 +00:00
gaoxingwang
b8d2ee507f fix issue:NetworkManager-dispatcher.service not enabled when installedduetosystemd_unitsnotdefined
Signed-off-by: gaoxingwang <gaoxingwang1@huawei.com>
2023-08-25 15:31:33 +08:00
openeuler-ci-bot
73202a00c5
!177 [sync]merge ovs into main package
From: @robertxw 
Reviewed-by: @gebidelidaye 
Signed-off-by: @gebidelidaye
2023-08-08 09:21:06 +00:00
7 changed files with 499 additions and 9 deletions

View File

@ -0,0 +1,114 @@
From cf567e3b6cd6b596de9f8e02a8de473eddad5b13 Mon Sep 17 00:00:00 2001
From: liuzhilin <liuzhilin@uniontech.com>
Date: Mon, 15 Apr 2024 10:53:42 +0800
Subject: [PATCH] add-NM-to-support-wifi6
DESC:Support wireless networks connecting WIFI6 encryption methods,
so this demand is achieved in NetworkManager, KF5-NetworkManager-QT,
DDE-Network-Core software package
---
src/core/nm-core-utils.c | 9 ++++++++-
src/core/nm-core-utils.h | 3 ++-
src/core/supplicant/nm-supplicant-interface.c | 7 ++++++-
src/libnm-core-public/nm-dbus-interface.h | 2 ++
4 files changed, 18 insertions(+), 3 deletions(-)
diff --git a/src/core/nm-core-utils.c b/src/core/nm-core-utils.c
index 5442efb..8e030a3 100644
--- a/src/core/nm-core-utils.c
+++ b/src/core/nm-core-utils.c
@@ -4783,13 +4783,15 @@ get_max_rate_vht(const guint8 *bytes, guint len, guint32 *out_maxrate)
#define WLAN_EID_HT_CAPABILITY 45
#define WLAN_EID_VHT_CAPABILITY 191
#define WLAN_EID_VENDOR_SPECIFIC 221
+#define WLAN_EID_EXTENSION 255
void
nm_wifi_utils_parse_ies(const guint8 *bytes,
gsize len,
guint32 *out_max_rate,
gboolean *out_metered,
- gboolean *out_owe_transition_mode)
+ gboolean *out_owe_transition_mode,
+ gboolean *out_he_support)
{
guint8 id, elem_len;
guint32 m;
@@ -4797,6 +4799,7 @@ nm_wifi_utils_parse_ies(const guint8 *bytes,
NM_SET_OUT(out_max_rate, 0);
NM_SET_OUT(out_metered, FALSE);
NM_SET_OUT(out_owe_transition_mode, FALSE);
+ NM_SET_OUT(out_he_support, FALSE);
while (len) {
if (len < 2)
@@ -4835,6 +4838,10 @@ nm_wifi_utils_parse_ies(const guint8 *bytes,
&& bytes[3] == 0x1c) /* OUI type: OWE Transition Mode */
NM_SET_OUT(out_owe_transition_mode, TRUE);
break;
+ case WLAN_EID_EXTENSION:
+ if (elem_len > 0 && bytes[0] == 0x23)
+ NM_SET_OUT(out_he_support, TRUE);
+ break;
}
len -= elem_len;
diff --git a/src/core/nm-core-utils.h b/src/core/nm-core-utils.h
index 5511250..551c6fa 100644
--- a/src/core/nm-core-utils.h
+++ b/src/core/nm-core-utils.h
@@ -456,7 +456,8 @@ void nm_wifi_utils_parse_ies(const guint8 *bytes,
gsize len,
guint32 *out_max_rate,
gboolean *out_metered,
- gboolean *out_owe_transition_mode);
+ gboolean *out_owe_transition_mode,
+ gboolean *out_he_support);
guint8 nm_wifi_utils_level_to_quality(int val);
diff --git a/src/core/supplicant/nm-supplicant-interface.c b/src/core/supplicant/nm-supplicant-interface.c
index 1852572..ddb6b2f 100644
--- a/src/core/supplicant/nm-supplicant-interface.c
+++ b/src/core/supplicant/nm-supplicant-interface.c
@@ -764,10 +764,15 @@ _bss_info_properties_changed(NMSupplicantInterface *self,
if (v_v) {
gboolean p_owe_transition_mode;
gboolean p_metered;
+ gboolean p_he_support;
guint32 rate;
arr_data = g_variant_get_fixed_array(v_v, &arr_len, 1);
- nm_wifi_utils_parse_ies(arr_data, arr_len, &rate, &p_metered, &p_owe_transition_mode);
+ nm_wifi_utils_parse_ies(arr_data, arr_len, &rate, &p_metered, &p_owe_transition_mode, &p_he_support);
+ if (p_he_support)
+ bss_info->rsn_flags |= NM_802_11_AP_FLAGS_He;
+ else
+ bss_info->rsn_flags &= ~NM_802_11_AP_FLAGS_He;
p_max_rate = NM_MAX(p_max_rate, rate);
p_max_rate_has = TRUE;
g_variant_unref(v_v);
diff --git a/src/libnm-core-public/nm-dbus-interface.h b/src/libnm-core-public/nm-dbus-interface.h
index b490e3b..9624618 100644
--- a/src/libnm-core-public/nm-dbus-interface.h
+++ b/src/libnm-core-public/nm-dbus-interface.h
@@ -336,6 +336,7 @@ typedef enum /*< flags >*/ {
* @NM_802_11_AP_FLAGS_WPS: access point supports some WPS method
* @NM_802_11_AP_FLAGS_WPS_PBC: access point supports push-button WPS
* @NM_802_11_AP_FLAGS_WPS_PIN: access point supports PIN-based WPS
+ * @NM_802_11_AP_FLAGS_He: access point support high efficiency (new feature in 802.11ax)
*
* 802.11 access point flags.
**/
@@ -345,6 +346,7 @@ typedef enum /*< underscore_name=nm_802_11_ap_flags, flags >*/ {
NM_802_11_AP_FLAGS_WPS = 0x00000002,
NM_802_11_AP_FLAGS_WPS_PBC = 0x00000004,
NM_802_11_AP_FLAGS_WPS_PIN = 0x00000008,
+ NM_802_11_AP_FLAGS_He = 0x00000010,
} NM80211ApFlags;
/**
--
2.39.3

Binary file not shown.

Binary file not shown.

View File

@ -1,6 +1,6 @@
%global wireless_tools_version 1:28-0pre9
%global wpa_supplicant_version 1:1.1
%global ppp_version %(sed -n 's/^#define\\s*VERSION\\s*"\\([^\\s]*\\)"$/\\1/p' %{_includedir}/pppd/patchlevel.h 2>/dev/null | grep . || echo bad)
%global ppp_version %(pkg-config --modeversion pppd 2>/dev/null || sed -n 's/^#define\\s*VERSION\\s*"\\([^\\s]*\\)"$/\\1/p' %{_includedir}/pppd/patchlevel.h 2>/dev/null | grep . || echo bad)
%global glib2_version %(pkg-config --modversion glib-2.0 2>/dev/null || echo bad)
%global real_version 1.42.8
%global snapshot %{nil}
@ -18,6 +18,8 @@
%global snap %{?snapshot_dot}%{?git_sha_dot}
%global real_version_major %(printf '%s' '%{real_version}' | sed -n 's/^\\([1-9][0-9]*\\.[1-9][0-9]*\\)\\.[0-9][0-9]*$/\\1/p')
%global systemd_units NetworkManager.service NetworkManager-wait-online.service NetworkManager-dispatcher.service nm-priv-helper.service
%global systemd_units_cloud_setup nm-cloud-setup.service nm-cloud-setup.timer
%bcond_without adsl
%bcond_without bluetooth
@ -47,10 +49,10 @@
%global dhcp_default dhclient
Name: NetworkManager
Version: 1.42.8
Version: 1.44.2
Epoch: 1
Release: 2
Summary: Network Link Manager and User Applications
Release: 3
Summary: 4
License: GPLv2+
URL: https://networkmanager.dev/
Source: https://download.gnome.org/sources/NetworkManager/%{real_version_major}/%{name}-%{version}.tar.xz
@ -59,9 +61,12 @@ Source2: 00-server.conf
Patch1: fix-wants-and-add-requires.patch
Patch2: bugfix-use-PartOf-replace-Requires-in-service.patch
Patch3: bugfix-recover-to-30s-timeout-in-NetworkManager-wait-online.patch
Patch4: NetworkManager-Add-sw64-architecture.patch
Patch5: delete-lease-file-when-connection-deleted.patch
Patch6: 0001-add-NM-to-support-wifi6.patch
Patch6005: NetworkManager-Add-sw64-architecture.patch
#Patch6006: delete-lease-file-when-connection-deleted.patch
Patch6000: backport-lldp-fix-crash-dereferencing-NULL-pointer-during-deb.patch
Patch6001: backport-lldp-fix-multiple-access-to-argument-in-logging-macr.patch
BuildRequires: gcc libtool pkgconfig automake autoconf intltool gettext-devel ppp-devel gnutls-devel
BuildRequires: dbus-devel glib2-devel gobject-introspection-devel jansson-devel
@ -409,7 +414,7 @@ fi
/usr/bin/udevadm control --reload-rules || :
/usr/bin/udevadm trigger --subsystem-match=net || :
%systemd_postun NetworkManager.service NetworkManager-wait-online.service NetworkManager-dispatcher.service nm-priv-helper.service
%systemd_postun %{systemd_units}
%ldconfig_scriptlets glib
%ldconfig_scriptlets libnm
@ -481,6 +486,7 @@ fi
%{systemd_dir}/nm-cloud-setup.timer
%{_prefix}/lib/%{name}/dispatcher.d/90-nm-cloud-setup.sh
%{_prefix}/lib/%{name}/dispatcher.d/no-wait.d/90-nm-cloud-setup.sh
%{_prefix}/lib/%{name}/dispatcher.d/pre-up.d/90-nm-cloud-setup.sh
%endif
%if %{with team}
@ -545,6 +551,40 @@ fi
%{_datadir}/gtk-doc/html/NetworkManager/*
%changelog
* Wed Oct 16 2024 zhongxuan <zhongxuan2@huawei.com> - 1:1.44.2-3
- Type:CVE
- CVE:CVE-2024-6501
- SUG:NA
- DESC:fix CVE-2024-6501
* Tue Apr 9 2024 liuzhilin <liuzhilin@uniontech.com> - 1:1.44.2-2
- add NM to support wifi6(fix dde-network-core build error)
- Type:requirement
- CVE:NA
- SUG:NA
- DESC:Support wireless networks connecting WIFI6 encryption methods,
so this demand is achieved in NetworkManager, KF5-NetworkManager-QT,
DDE-Network-Core software package
* Mon Feb 5 2024 liubo <liubo335@huawei.com> - 1:1.44.2-1
- Type:requirement
- CVE:NA
- SUG:NA
- DESC:update to 1.44.2
* Tue Aug 29 2023 gaoxingwang <gaoxingwang1@huawei.com> - 1:1.42.8-4
- Type:bugfix
- CVE:NA
- SUG:NA
- DESC:sync bugfix patch: delete lease file when connection deleted and
update the way to get ppp version because patchlevel.h no more provided in ppp-2.5.0
* Thu Aug 24 2023 gaoxingwang <gaoxingwang1@huawei.com> - 1:1.42.8-3
- Type:bugfix
- CVE:NA
- SUG:NA
- DESC:NetworkManager-dispatcher.service not enabled when installed due to systemd_units not defined
* Tue Aug 8 2023 gaoxingwang <gaoxingwang1@huawei.com> - 1:1.42.8-2
- Type:requirement
- CVE:NA

View File

@ -0,0 +1,306 @@
From c2cddd3241349c0d5612d7603261c182fbc6d7c3 Mon Sep 17 00:00:00 2001
From: Thomas Haller <thaller@redhat.com>
Date: Fri, 31 May 2024 10:34:28 +0200
Subject: [PATCH] lldp: fix crash dereferencing NULL pointer during debug
logging
During nm_lldp_neighbor_parse(), the NMLldpNeighbor is not yet added to
the NMLldpRX instance. Consequently, n->lldp_rx is NULL.
Note how we use lldp_x for logging, because we need it for the context
for which interface the logging statement is.
Thus, those debug logging statements will follow a NULL pointer and lead
to a crash.
Fixes: 630de288d2e4 ('lldp: add libnm-lldp as fork of systemd's sd_lldp_rx')
Reference:https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/1550
Conflict:no
---
src/core/devices/nm-lldp-listener.c | 15 ++++++++-
src/libnm-lldp/nm-lldp-neighbor.c | 47 +++++++++++++++--------------
src/libnm-lldp/nm-lldp-neighbor.h | 4 ++-
src/libnm-lldp/nm-lldp-rx.c | 2 +-
src/libnm-lldp/nm-lldp-rx.h | 2 +-
5 files changed, 44 insertions(+), 26 deletions(-)
diff --git a/src/core/devices/nm-lldp-listener.c b/src/core/devices/nm-lldp-listener.c
index ac7e97f0c2..59c8f54c01 100644
--- a/src/core/devices/nm-lldp-listener.c
+++ b/src/core/devices/nm-lldp-listener.c
@@ -704,9 +704,16 @@ lldp_neighbor_to_variant(LldpNeighbor *neigh)
/*****************************************************************************/
+static void
+nmtst_lldp_event_handler(NMLldpRX *lldp, NMLldpRXEvent event, NMLldpNeighbor *n, void *user_data)
+{
+ g_assert_not_reached();
+}
+
GVariant *
nmtst_lldp_parse_from_raw(const guint8 *raw_data, gsize raw_len)
{
+ nm_auto(nm_lldp_rx_unrefp) NMLldpRX *lldp_rx = NULL;
nm_auto(nm_lldp_neighbor_unrefp) NMLldpNeighbor *neighbor_nm = NULL;
nm_auto(lldp_neighbor_freep) LldpNeighbor *neigh = NULL;
GVariant *variant;
@@ -714,7 +721,13 @@ nmtst_lldp_parse_from_raw(const guint8 *raw_data, gsize raw_len)
g_assert(raw_data);
g_assert(raw_len > 0);
- neighbor_nm = nm_lldp_neighbor_new_from_raw(raw_data, raw_len);
+ lldp_rx = nm_lldp_rx_new(&((NMLldpRXConfig){
+ .ifindex = 1,
+ .neighbors_max = MAX_NEIGHBORS,
+ .callback = nmtst_lldp_event_handler,
+ }));
+
+ neighbor_nm = nm_lldp_neighbor_new_from_raw(lldp_rx, raw_data, raw_len);
g_assert(neighbor_nm);
neigh = lldp_neighbor_new(neighbor_nm);
diff --git a/src/libnm-lldp/nm-lldp-neighbor.c b/src/libnm-lldp/nm-lldp-neighbor.c
index 0379cf3844..3a76ea317e 100644
--- a/src/libnm-lldp/nm-lldp-neighbor.c
+++ b/src/libnm-lldp/nm-lldp-neighbor.c
@@ -65,6 +65,7 @@ parse_string(NMLldpRX *lldp_rx, char **s, const void *q, size_t n)
const char *p = q;
char *k;
+ nm_assert(lldp_rx);
nm_assert(s);
nm_assert(p || n == 0);
@@ -99,31 +100,33 @@ parse_string(NMLldpRX *lldp_rx, char **s, const void *q, size_t n)
}
int
-nm_lldp_neighbor_parse(NMLldpNeighbor *n)
+nm_lldp_neighbor_parse(NMLldpRX *lldp_rx, NMLldpNeighbor *n)
{
struct ether_header h;
const uint8_t *p;
size_t left;
int r;
+ nm_assert(lldp_rx);
nm_assert(n);
+ nm_assert(!n->lldp_rx);
if (n->raw_size < sizeof(struct ether_header)) {
- _LOG2D(n->lldp_rx, "Received truncated packet, ignoring.");
+ _LOG2D(lldp_rx, "Received truncated packet, ignoring.");
return -NME_UNSPEC;
}
memcpy(&h, NM_LLDP_NEIGHBOR_RAW(n), sizeof(h));
if (h.ether_type != htobe16(NM_ETHERTYPE_LLDP)) {
- _LOG2D(n->lldp_rx, "Received packet with wrong type, ignoring.");
+ _LOG2D(lldp_rx, "Received packet with wrong type, ignoring.");
return -NME_UNSPEC;
}
if (h.ether_dhost[0] != 0x01 || h.ether_dhost[1] != 0x80 || h.ether_dhost[2] != 0xc2
|| h.ether_dhost[3] != 0x00 || h.ether_dhost[4] != 0x00
|| !NM_IN_SET(h.ether_dhost[5], 0x00, 0x03, 0x0e)) {
- _LOG2D(n->lldp_rx, "Received packet with wrong destination address, ignoring.");
+ _LOG2D(lldp_rx, "Received packet with wrong destination address, ignoring.");
return -NME_UNSPEC;
}
@@ -138,7 +141,7 @@ nm_lldp_neighbor_parse(NMLldpNeighbor *n)
uint16_t length;
if (left < 2) {
- _LOG2D(n->lldp_rx, "TLV lacks header, ignoring.");
+ _LOG2D(lldp_rx, "TLV lacks header, ignoring.");
return -NME_UNSPEC;
}
@@ -147,14 +150,14 @@ nm_lldp_neighbor_parse(NMLldpNeighbor *n)
p += 2, left -= 2;
if (left < length) {
- _LOG2D(n->lldp_rx, "TLV truncated, ignoring datagram.");
+ _LOG2D(lldp_rx, "TLV truncated, ignoring datagram.");
return -NME_UNSPEC;
}
switch (type) {
case NM_LLDP_TYPE_END:
if (length != 0) {
- _LOG2D(n->lldp_rx, "End marker TLV not zero-sized, ignoring datagram.");
+ _LOG2D(lldp_rx, "End marker TLV not zero-sized, ignoring datagram.");
return -NME_UNSPEC;
}
@@ -166,12 +169,12 @@ nm_lldp_neighbor_parse(NMLldpNeighbor *n)
case NM_LLDP_TYPE_CHASSIS_ID:
if (length < 2 || length > 256) {
/* includes the chassis subtype, hence one extra byte */
- _LOG2D(n->lldp_rx, "Chassis ID field size out of range, ignoring datagram.");
+ _LOG2D(lldp_rx, "Chassis ID field size out of range, ignoring datagram.");
return -NME_UNSPEC;
}
if (n->id.chassis_id) {
- _LOG2D(n->lldp_rx, "Duplicate chassis ID field, ignoring datagram.");
+ _LOG2D(lldp_rx, "Duplicate chassis ID field, ignoring datagram.");
return -NME_UNSPEC;
}
@@ -182,12 +185,12 @@ nm_lldp_neighbor_parse(NMLldpNeighbor *n)
case NM_LLDP_TYPE_PORT_ID:
if (length < 2 || length > 256) {
/* includes the port subtype, hence one extra byte */
- _LOG2D(n->lldp_rx, "Port ID field size out of range, ignoring datagram.");
+ _LOG2D(lldp_rx, "Port ID field size out of range, ignoring datagram.");
return -NME_UNSPEC;
}
if (n->id.port_id) {
- _LOG2D(n->lldp_rx, "Duplicate port ID field, ignoring datagram.");
+ _LOG2D(lldp_rx, "Duplicate port ID field, ignoring datagram.");
return -NME_UNSPEC;
}
@@ -197,12 +200,12 @@ nm_lldp_neighbor_parse(NMLldpNeighbor *n)
case NM_LLDP_TYPE_TTL:
if (length != 2) {
- _LOG2D(n->lldp_rx, "TTL field has wrong size, ignoring datagram.");
+ _LOG2D(lldp_rx, "TTL field has wrong size, ignoring datagram.");
return -NME_UNSPEC;
}
if (n->has_ttl) {
- _LOG2D(n->lldp_rx, "Duplicate TTL field, ignoring datagram.");
+ _LOG2D(lldp_rx, "Duplicate TTL field, ignoring datagram.");
return -NME_UNSPEC;
}
@@ -211,26 +214,26 @@ nm_lldp_neighbor_parse(NMLldpNeighbor *n)
break;
case NM_LLDP_TYPE_PORT_DESCRIPTION:
- r = parse_string(n->lldp_rx, &n->port_description, p, length);
+ r = parse_string(lldp_rx, &n->port_description, p, length);
if (r < 0)
return r;
break;
case NM_LLDP_TYPE_SYSTEM_NAME:
- r = parse_string(n->lldp_rx, &n->system_name, p, length);
+ r = parse_string(lldp_rx, &n->system_name, p, length);
if (r < 0)
return r;
break;
case NM_LLDP_TYPE_SYSTEM_DESCRIPTION:
- r = parse_string(n->lldp_rx, &n->system_description, p, length);
+ r = parse_string(lldp_rx, &n->system_description, p, length);
if (r < 0)
return r;
break;
case NM_LLDP_TYPE_SYSTEM_CAPABILITIES:
if (length != 4) {
- _LOG2D(n->lldp_rx, "System capabilities field has wrong size.");
+ _LOG2D(lldp_rx, "System capabilities field has wrong size.");
return -NME_UNSPEC;
}
@@ -241,13 +244,13 @@ nm_lldp_neighbor_parse(NMLldpNeighbor *n)
case NM_LLDP_TYPE_PRIVATE:
if (length < 4) {
- _LOG2D(n->lldp_rx, "Found private TLV that is too short, ignoring.");
+ _LOG2D(lldp_rx, "Found private TLV that is too short, ignoring.");
return -NME_UNSPEC;
}
/* RFC 8520: MUD URL */
if (memcmp(p, NM_LLDP_OUI_IANA_MUD, sizeof(NM_LLDP_OUI_IANA_MUD)) == 0) {
- r = parse_string(n->lldp_rx,
+ r = parse_string(lldp_rx,
&n->mud_url,
p + sizeof(NM_LLDP_OUI_IANA_MUD),
length - sizeof(NM_LLDP_OUI_IANA_MUD));
@@ -262,7 +265,7 @@ nm_lldp_neighbor_parse(NMLldpNeighbor *n)
end_marker:
if (!n->id.chassis_id || !n->id.port_id || !n->has_ttl) {
- _LOG2D(n->lldp_rx, "One or more mandatory TLV missing in datagram. Ignoring.");
+ _LOG2D(lldp_rx, "One or more mandatory TLV missing in datagram. Ignoring.");
return -NME_UNSPEC;
}
@@ -741,7 +744,7 @@ nm_lldp_neighbor_new(size_t raw_size)
}
NMLldpNeighbor *
-nm_lldp_neighbor_new_from_raw(const void *raw, size_t raw_size)
+nm_lldp_neighbor_new_from_raw(NMLldpRX *lldp_rx, const void *raw, size_t raw_size)
{
nm_auto(nm_lldp_neighbor_unrefp) NMLldpNeighbor *n = NULL;
int r;
@@ -752,7 +755,7 @@ nm_lldp_neighbor_new_from_raw(const void *raw, size_t raw_size)
nm_memcpy(NM_LLDP_NEIGHBOR_RAW(n), raw, raw_size);
- r = nm_lldp_neighbor_parse(n);
+ r = nm_lldp_neighbor_parse(lldp_rx, n);
if (r < 0)
return NULL;
diff --git a/src/libnm-lldp/nm-lldp-neighbor.h b/src/libnm-lldp/nm-lldp-neighbor.h
index 1adc967e7e..038591a066 100644
--- a/src/libnm-lldp/nm-lldp-neighbor.h
+++ b/src/libnm-lldp/nm-lldp-neighbor.h
@@ -75,11 +75,13 @@ NM_LLDP_NEIGHBOR_TLV_DATA(const NMLldpNeighbor *n)
return ((uint8_t *) NM_LLDP_NEIGHBOR_RAW(n)) + n->rindex + 2;
}
+struct _NMLldpRX;
+
int nm_lldp_neighbor_prioq_compare_func(const void *a, const void *b);
void nm_lldp_neighbor_unlink(NMLldpNeighbor *n);
NMLldpNeighbor *nm_lldp_neighbor_new(size_t raw_size);
-int nm_lldp_neighbor_parse(NMLldpNeighbor *n);
+int nm_lldp_neighbor_parse(struct _NMLldpRX *lldp_rx, NMLldpNeighbor *n);
void nm_lldp_neighbor_start_ttl(NMLldpNeighbor *n);
#endif /* __NM_LLDP_NEIGHBOR_H__ */
diff --git a/src/libnm-lldp/nm-lldp-rx.c b/src/libnm-lldp/nm-lldp-rx.c
index 345c6d5661..90414b3ee7 100644
--- a/src/libnm-lldp/nm-lldp-rx.c
+++ b/src/libnm-lldp/nm-lldp-rx.c
@@ -255,7 +255,7 @@ lldp_rx_receive_datagram(int fd, GIOCondition condition, gpointer user_data)
} else
n->timestamp_usec = nm_utils_get_monotonic_timestamp_usec();
- r = nm_lldp_neighbor_parse(n);
+ r = nm_lldp_neighbor_parse(lldp_rx, n);
if (r < 0) {
_LOG2D(lldp_rx, "Failure parsing invalid LLDP datagram.");
return G_SOURCE_CONTINUE;
diff --git a/src/libnm-lldp/nm-lldp-rx.h b/src/libnm-lldp/nm-lldp-rx.h
index a3f3805376..d96ffcd888 100644
--- a/src/libnm-lldp/nm-lldp-rx.h
+++ b/src/libnm-lldp/nm-lldp-rx.h
@@ -68,7 +68,7 @@ NMLldpNeighbor **nm_lldp_rx_get_neighbors(NMLldpRX *lldp_rx, guint *out_len);
/*****************************************************************************/
-NMLldpNeighbor *nm_lldp_neighbor_new_from_raw(const void *raw, size_t raw_size);
+NMLldpNeighbor *nm_lldp_neighbor_new_from_raw(NMLldpRX *lldp_rx, const void *raw, size_t raw_size);
NMLldpNeighbor *nm_lldp_neighbor_ref(NMLldpNeighbor *n);
NMLldpNeighbor *nm_lldp_neighbor_unref(NMLldpNeighbor *n);
--
2.33.0

View File

@ -0,0 +1,29 @@
From 4365de5226aa80c01181a11988a731913e97b264 Mon Sep 17 00:00:00 2001
From: Thomas Haller <thaller@redhat.com>
Date: Fri, 31 May 2024 10:49:50 +0200
Subject: [PATCH] lldp: fix multiple access to argument in logging macro
Fixes: 630de288d2e4 ('lldp: add libnm-lldp as fork of systemd's sd_lldp_rx')
Reference:https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/1550
Conflict:no
---
src/libnm-lldp/nm-lldp-rx-internal.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/libnm-lldp/nm-lldp-rx-internal.h b/src/libnm-lldp/nm-lldp-rx-internal.h
index 47d063ae70..1296a9d33f 100644
--- a/src/libnm-lldp/nm-lldp-rx-internal.h
+++ b/src/libnm-lldp/nm-lldp-rx-internal.h
@@ -34,7 +34,7 @@ struct _NMLldpRX {
NMLldpRX *_lldp_rx = (lldp_rx); \
\
if (_NMLOG2_ENABLED(_level)) { \
- _nm_log(level, \
+ _nm_log(_level, \
_NMLOG2_DOMAIN, \
0, \
_lldp_rx->config.log_ifname, \
--
2.33.0

View File

@ -11,7 +11,7 @@ diff --git a/data/NetworkManager.service.in b/data/NetworkManager.service.in
index e23b3a5..b29b634 100644
--- a/data/NetworkManager.service.in
+++ b/data/NetworkManager.service.in
@@ -1,9 +1,10 @@
@@ -1,10 +1,10 @@
[Unit]
Description=Network Manager
Documentation=man:NetworkManager(8)
@ -20,11 +20,12 @@ index e23b3a5..b29b634 100644
+Wants=network.target dbus.socket
+After=network-pre.target dbus.service dbus.socket
Before=network.target @DISTRO_NETWORK_SERVICE@
-BindsTo=dbus.service
+Requires=dbus.service
[Service]
Type=dbus
@@ -12,6 +13,8 @@ ExecReload=/usr/bin/busctl call org.freedesktop.NetworkManager /org/freedesktop/
@@ -13,6 +13,8 @@ ExecReload=/usr/bin/busctl call org.freedesktop.NetworkManager /org/freedesktop/
#ExecReload=/bin/kill -HUP $MAINPID
ExecStart=@sbindir@/NetworkManager --no-daemon
Restart=on-failure