Update to 1.1.1-4
lldpad: do not remove config when stopping lldpad Resolves: RHEL-61874 Signed-off-by: Hangbin Liu <haliu@redhat.com>
This commit is contained in:
parent
51168c37e7
commit
0b4644d36a
101
0002-do-not-remove-config.patch
Normal file
101
0002-do-not-remove-config.patch
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
From cfef0032247f9a3950a9909d59db88e948741ee3 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Hangbin Liu <liuhangbin@gmail.com>
|
||||||
|
Date: Wed, 9 Oct 2024 03:53:16 +0000
|
||||||
|
Subject: [PATCH 2/2] lldpad: do not remove config when stopping lldpad
|
||||||
|
|
||||||
|
When lldpad is terminated by systemd or kill, the remove_all_adapters()
|
||||||
|
function is called. However, this function is intended to release port
|
||||||
|
resources, and the configuration file should not be destroyed. We only
|
||||||
|
need to remove the port when it is explicitly deleted. Otherwise, all
|
||||||
|
configurations will be lost when lldpad is stopped.
|
||||||
|
|
||||||
|
Fixes: a75e35a0cb36 ("lldpad: remove device from config file when ports are removed")
|
||||||
|
Reported-by: Fei Liu <feliu@redhat.com>
|
||||||
|
Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
|
||||||
|
Signed-off-by: Aaron Conole <aconole@redhat.com>
|
||||||
|
---
|
||||||
|
config.c | 2 +-
|
||||||
|
event_iface.c | 2 +-
|
||||||
|
lldp/ports.c | 5 +++--
|
||||||
|
lldp/ports.h | 2 +-
|
||||||
|
lldpad.c | 2 +-
|
||||||
|
5 files changed, 7 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/config.c b/config.c
|
||||||
|
index 13ee7aa7ba47..e046f94fe911 100644
|
||||||
|
--- a/config.c
|
||||||
|
+++ b/config.c
|
||||||
|
@@ -135,7 +135,7 @@ void scan_port(UNUSED void *eloop_data, UNUSED void *user_ctx)
|
||||||
|
}
|
||||||
|
next = port->next;
|
||||||
|
if (!found)
|
||||||
|
- remove_port(port->ifname);
|
||||||
|
+ remove_port(port->ifname, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Walk port list looking for devices that should have been added
|
||||||
|
diff --git a/event_iface.c b/event_iface.c
|
||||||
|
index 916bf4b4cbe8..65f1f83bf8e7 100644
|
||||||
|
--- a/event_iface.c
|
||||||
|
+++ b/event_iface.c
|
||||||
|
@@ -297,7 +297,7 @@ static void event_if_decode_nlmsg(int route_type, void *data, int len)
|
||||||
|
if (route_type == RTM_DELLINK) {
|
||||||
|
LLDPAD_INFO("%s: %s: device removed!\n",
|
||||||
|
__func__, device_name);
|
||||||
|
- remove_port(device_name);
|
||||||
|
+ remove_port(device_name, true);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case IF_OPER_DORMANT:
|
||||||
|
diff --git a/lldp/ports.c b/lldp/ports.c
|
||||||
|
index 3eab71f8eff1..284f8f6c7108 100644
|
||||||
|
--- a/lldp/ports.c
|
||||||
|
+++ b/lldp/ports.c
|
||||||
|
@@ -297,7 +297,7 @@ fail:
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
-int remove_port(const char *ifname)
|
||||||
|
+int remove_port(const char *ifname, bool remove_config)
|
||||||
|
{
|
||||||
|
int ifindex = get_ifidx(ifname);
|
||||||
|
struct port *port; /* Pointer to port to remove */
|
||||||
|
@@ -356,7 +356,8 @@ int remove_port(const char *ifname)
|
||||||
|
|
||||||
|
LIST_REMOVE(agent, entry);
|
||||||
|
|
||||||
|
- remove_config_device(ifname, agent->type);
|
||||||
|
+ if (remove_config)
|
||||||
|
+ remove_config_device(ifname, agent->type);
|
||||||
|
|
||||||
|
free(agent);
|
||||||
|
}
|
||||||
|
diff --git a/lldp/ports.h b/lldp/ports.h
|
||||||
|
index 21280e0ef0e2..a5006fa86a74 100644
|
||||||
|
--- a/lldp/ports.h
|
||||||
|
+++ b/lldp/ports.h
|
||||||
|
@@ -97,7 +97,7 @@ extern struct port *porthead;
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
struct port *add_port(int ifindex, const char *);
|
||||||
|
-int remove_port(const char *);
|
||||||
|
+int remove_port(const char *, bool remove_config);
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
diff --git a/lldpad.c b/lldpad.c
|
||||||
|
index 65e92c703c42..ddc8b631e0e5 100644
|
||||||
|
--- a/lldpad.c
|
||||||
|
+++ b/lldpad.c
|
||||||
|
@@ -167,7 +167,7 @@ static void remove_all_adapters(void)
|
||||||
|
|
||||||
|
for (port = porthead; port; port = next) {
|
||||||
|
next = port->next;
|
||||||
|
- remove_port(port->ifname);
|
||||||
|
+ remove_port(port->ifname, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
--
|
||||||
|
2.39.5 (Apple Git-154)
|
||||||
|
|
@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
Name: lldpad
|
Name: lldpad
|
||||||
Version: 1.1.1
|
Version: 1.1.1
|
||||||
Release: 3.git%{shortcommit}%{?dist}
|
Release: 4.git%{shortcommit}%{?dist}
|
||||||
Summary: Intel LLDP Agent
|
Summary: Intel LLDP Agent
|
||||||
%forgemeta
|
%forgemeta
|
||||||
|
|
||||||
@ -22,6 +22,7 @@ Source0: %{forgesource}#/%{name}-%{version}.tar.gz
|
|||||||
# When 1.1.2 or later is released, simply remove this
|
# When 1.1.2 or later is released, simply remove this
|
||||||
# patch and generate a new one.
|
# patch and generate a new one.
|
||||||
Patch1: 0001-patch-to-latest.patch
|
Patch1: 0001-patch-to-latest.patch
|
||||||
|
Patch2: 0002-do-not-remove-config.patch
|
||||||
|
|
||||||
BuildRequires: automake autoconf
|
BuildRequires: automake autoconf
|
||||||
BuildRequires: flex
|
BuildRequires: flex
|
||||||
@ -96,6 +97,9 @@ rm -f %{buildroot}%{_libdir}/liblldp_clif.la
|
|||||||
%{_libdir}/liblldp_clif.so
|
%{_libdir}/liblldp_clif.so
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Jan 20 2025 Hangbin Liu <haliu@redhat.com> - 1.1.1-4.gitf1dd9eb
|
||||||
|
- do not remove config when stopping lldpad (RHEL-61874)
|
||||||
|
|
||||||
* Mon Sep 9 2024 Hangbin Liu <haliu@redhat.com> - 1.1.1-3.gitf1dd9eb
|
* Mon Sep 9 2024 Hangbin Liu <haliu@redhat.com> - 1.1.1-3.gitf1dd9eb
|
||||||
- Rebase to latest upstream code
|
- Rebase to latest upstream code
|
||||||
- Remove interface configure if the interface deleted (RHEL-13242)
|
- Remove interface configure if the interface deleted (RHEL-13242)
|
||||||
|
Loading…
Reference in New Issue
Block a user