public inbox for development@lists.ipfire.org
 help / color / mirror / Atom feed
* New Feature: LLDP
@ 2025-11-06 16:46 Michael Tremer
  2025-11-06 16:46 ` [PATCH 1/6] lldpd: New package Michael Tremer
                   ` (5 more replies)
  0 siblings, 6 replies; 8+ messages in thread
From: Michael Tremer @ 2025-11-06 16:46 UTC (permalink / raw)
  To: development

Hello,

this has been request by a customer.

Initially, the requirement was for IPFire to send LLDP packets to the
local network, but I thought that this all would only make sense if
there is an option to see any neighbours on the web UI, too.

Therefore I put this little thing together. It is pretty straight
forward.

Since this is not touching any other code, I believe that is good to go
into Core Update 199. So please review.

All the best,
-Michael



^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 1/6] lldpd: New package
  2025-11-06 16:46 New Feature: LLDP Michael Tremer
@ 2025-11-06 16:46 ` Michael Tremer
  2025-11-06 21:45   ` Adolf Belka
  2025-11-06 16:46 ` [PATCH 2/6] misc-progs: Add lldpdctrl Michael Tremer
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 8+ messages in thread
From: Michael Tremer @ 2025-11-06 16:46 UTC (permalink / raw)
  To: development; +Cc: Michael Tremer

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
---
 config/rootfiles/common/lldpd | 25 ++++++++++
 lfs/lldpd                     | 87 +++++++++++++++++++++++++++++++++++
 make.sh                       |  1 +
 3 files changed, 113 insertions(+)
 create mode 100644 config/rootfiles/common/lldpd
 create mode 100644 lfs/lldpd

diff --git a/config/rootfiles/common/lldpd b/config/rootfiles/common/lldpd
new file mode 100644
index 000000000..7ead3d00b
--- /dev/null
+++ b/config/rootfiles/common/lldpd
@@ -0,0 +1,25 @@
+#etc/lldpd.d
+#etc/lldpd.d/README.conf
+#usr/include/lldp-const.h
+#usr/include/lldpctl.h
+#usr/include/lldpctl.hpp
+#usr/lib/liblldpctl.a
+#usr/lib/liblldpctl.la
+#usr/lib/liblldpctl.so
+usr/lib/liblldpctl.so.4
+usr/lib/liblldpctl.so.4.10.0
+#usr/lib/pkgconfig/lldpctl.pc
+usr/sbin/lldpcli
+usr/sbin/lldpctl
+usr/sbin/lldpd
+#usr/share/bash-completion/completions/lldpcli
+#usr/share/doc/lldpd
+#usr/share/doc/lldpd/CONTRIBUTE.md
+#usr/share/doc/lldpd/ChangeLog
+#usr/share/doc/lldpd/LICENSE
+#usr/share/doc/lldpd/NEWS
+#usr/share/doc/lldpd/README.md
+#usr/share/man/man8/lldpcli.8
+#usr/share/man/man8/lldpctl.8
+#usr/share/man/man8/lldpd.8
+#usr/share/zsh/site-functions/_lldpcli
diff --git a/lfs/lldpd b/lfs/lldpd
new file mode 100644
index 000000000..30302e823
--- /dev/null
+++ b/lfs/lldpd
@@ -0,0 +1,87 @@
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2007-2024  IPFire Team  <info@ipfire.org>                     #
+#                                                                             #
+# 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 3 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, see <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+###############################################################################
+
+###############################################################################
+# Definitions
+###############################################################################
+
+include Config
+
+VER        = 1.0.20
+
+THISAPP    = lldpd-$(VER)
+DL_FILE    = $(THISAPP).tar.gz
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_BLAKE2 = 95743f28d9b3c8ad6f354f7def5f835d9b0668c151ad429dccfc7a249e29234a9ca1fda6b3bcc2890c424053b5adf2d4d9d7c0cb2887e97cc32b42577b91c63a
+
+install : $(TARGET)
+
+check : $(patsubst %,$(DIR_CHK)/%,$(objects))
+
+download :$(patsubst %,$(DIR_DL)/%,$(objects))
+
+b2 : $(subst %,%_BLAKE2,$(objects))
+
+dist:
+	$(PAK)
+
+###############################################################################
+# Downloading, checking, b2sum
+###############################################################################
+
+$(patsubst %,$(DIR_CHK)/%,$(objects)) :
+	@$(CHECK)
+
+$(patsubst %,$(DIR_DL)/%,$(objects)) :
+	@$(LOAD)
+
+$(subst %,%_BLAKE2,$(objects)) :
+	@$(B2SUM)
+
+###############################################################################
+# Installation Details
+###############################################################################
+
+$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
+	@$(PREBUILD)
+	@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
+	cd $(DIR_APP) && ./configure \
+		--prefix=/usr \
+		--sysconfdir=/etc \
+		--localstatedir=/var \
+		--with-seccomp \
+		--with-privsep-user=nobody \
+		--with-privsep-group=nobody \
+		--without-embedded-libevent
+	cd $(DIR_APP) && make $(MAKETUNING)
+	cd $(DIR_APP) && make install
+	@rm -rf $(DIR_APP)
+	@$(POSTBUILD)
diff --git a/make.sh b/make.sh
index b17e90e13..c542c8173 100755
--- a/make.sh
+++ b/make.sh
@@ -2125,6 +2125,7 @@ build_system() {
 	lfsmake2 fort-validator
 	lfsmake2 arpwatch
 	lfsmake2 suricata-reporter
+	lfsmake2 lldpd
 
 	lfsmake2 linux
 	lfsmake2 rtl8812au
-- 
2.47.3



^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 2/6] misc-progs: Add lldpdctrl
  2025-11-06 16:46 New Feature: LLDP Michael Tremer
  2025-11-06 16:46 ` [PATCH 1/6] lldpd: New package Michael Tremer
@ 2025-11-06 16:46 ` Michael Tremer
  2025-11-06 16:46 ` [PATCH 3/6] cfgroot: Create /var/ipfire/lldp/settings Michael Tremer
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 8+ messages in thread
From: Michael Tremer @ 2025-11-06 16:46 UTC (permalink / raw)
  To: development; +Cc: Michael Tremer

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
---
 config/rootfiles/common/misc-progs |  1 +
 src/misc-progs/Makefile            |  2 +-
 src/misc-progs/lldpdctrl.c         | 35 ++++++++++++++++++++++++++++++
 3 files changed, 37 insertions(+), 1 deletion(-)
 create mode 100644 src/misc-progs/lldpdctrl.c

diff --git a/config/rootfiles/common/misc-progs b/config/rootfiles/common/misc-progs
index b92a1e32a..2c846878a 100644
--- a/config/rootfiles/common/misc-progs
+++ b/config/rootfiles/common/misc-progs
@@ -13,6 +13,7 @@ usr/local/bin/getipstat
 #usr/local/bin/iowrap
 usr/local/bin/ipfirereboot
 usr/local/bin/ipsecctrl
+usr/local/bin/lldpdctrl
 usr/local/bin/logwatch
 #usr/local/bin/mpfirectrl
 usr/local/bin/openvpnctrl
diff --git a/src/misc-progs/Makefile b/src/misc-progs/Makefile
index 9d380c158..4c994638a 100644
--- a/src/misc-progs/Makefile
+++ b/src/misc-progs/Makefile
@@ -32,7 +32,7 @@ SUID_PROGS = squidctrl sshctrl ipfirereboot \
 	smartctrl clamavctrl addonctrl pakfire wlanapctrl \
 	setaliases urlfilterctrl updxlratorctrl fireinfoctrl rebuildroutes \
 	getconntracktable wirelessclient torctrl ddnsctrl unboundctrl \
-	captivectrl wireguardctrl
+	captivectrl wireguardctrl lldpdctrl
 
 OBJS = $(patsubst %,%.o,$(PROGS) $(SUID_PROGS))
 
diff --git a/src/misc-progs/lldpdctrl.c b/src/misc-progs/lldpdctrl.c
new file mode 100644
index 000000000..8ae0d9d97
--- /dev/null
+++ b/src/misc-progs/lldpdctrl.c
@@ -0,0 +1,35 @@
+/* This file is part of the IPFire Firewall.
+ *
+ * This program is distributed under the terms of the GNU General Public
+ * Licence.  See the file COPYING for details.
+ *
+ */
+
+#include <stdio.h>
+#include <string.h>
+
+#include "setuid.h"
+
+int main(int argc, char** argv) {
+	// Become root
+	if (!initsetuid())
+		exit(1);
+
+	// Check if we have enough arguments
+	if (argc < 2) {
+		fprintf(stderr, "\nNot enough arguments.\n\n");
+		exit(1);
+	}
+
+	if (strcmp(argv[1], "start") == 0)
+		return run("/etc/rc.d/init.d/lldpd", argv + 1);
+
+	else if (strcmp(argv[1], "stop") == 0)
+		return run("/etc/rc.d/init.d/lldpd", argv + 1);
+
+	else if (strcmp(argv[1], "restart") == 0)
+		return run("/etc/rc.d/init.d/lldpd", argv + 1);
+ 
+	fprintf(stderr, "Invalid command\n");
+	exit(1);
+}
-- 
2.47.3



^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 3/6] cfgroot: Create /var/ipfire/lldp/settings
  2025-11-06 16:46 New Feature: LLDP Michael Tremer
  2025-11-06 16:46 ` [PATCH 1/6] lldpd: New package Michael Tremer
  2025-11-06 16:46 ` [PATCH 2/6] misc-progs: Add lldpdctrl Michael Tremer
@ 2025-11-06 16:46 ` Michael Tremer
  2025-11-06 16:46 ` [PATCH 4/6] web-user-interface: Add lldp.cgi Michael Tremer
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 8+ messages in thread
From: Michael Tremer @ 2025-11-06 16:46 UTC (permalink / raw)
  To: development; +Cc: Michael Tremer

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
---
 config/rootfiles/common/configroot | 2 ++
 lfs/configroot                     | 4 ++--
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/config/rootfiles/common/configroot b/config/rootfiles/common/configroot
index a9c6fb589..b2c4a4930 100644
--- a/config/rootfiles/common/configroot
+++ b/config/rootfiles/common/configroot
@@ -100,6 +100,8 @@ var/ipfire/langs
 #var/ipfire/langs/tr.pl
 #var/ipfire/langs/tw.pl
 #var/ipfire/langs/zh.pl
+var/ipfire/lldp
+#var/ipfire/lldp/settings
 var/ipfire/location-functions.pl
 var/ipfire/logging
 #var/ipfire/logging/settings
diff --git a/lfs/configroot b/lfs/configroot
index 997b4908c..f01a1b686 100644
--- a/lfs/configroot
+++ b/lfs/configroot
@@ -51,7 +51,7 @@ $(TARGET) :
 
 	# Create all directories
 	for i in addon-lang auth backup ca captive certs connscheduler crls ddns dhcp dhcpc dns dnsforward \
-			ethernet extrahd/bin fwlogs fwhosts firewall ipblocklist key langs logging mac main \
+			ethernet extrahd/bin fwlogs fwhosts firewall ipblocklist key langs lldp logging mac main \
 			menu.d modem optionsfw \
 			ovpn patches pakfire portfw ppp private proxy/advanced/cre \
 			proxy/calamaris/bin qos/bin red remote sensors suricata time \
@@ -66,7 +66,7 @@ $(TARGET) :
 	    dhcp/fixleases dhcp/advoptions dhcp/dhcpd.conf.local dns/settings dns/servers dnsforward/config ethernet/aliases ethernet/settings ethernet/known_nics ethernet/scanned_nics \
 	    ethernet/wireless extrahd/scan extrahd/devices extrahd/partitions extrahd/settings firewall/settings firewall/locationblock firewall/input firewall/outgoing \
 	    fwhosts/customnetworks fwhosts/customhosts fwhosts/customgroups fwhosts/customservicegrp fwhosts/customlocationgrp fwlogs/ipsettings fwlogs/portsettings ipblocklist/modified \
-	    ipblocklist/settings mac/settings main/hosts main/routing main/security main/settings optionsfw/settings \
+	    ipblocklist/settings lldp/settings mac/settings main/hosts main/routing main/security main/settings optionsfw/settings \
 	    ovpn/ccd.conf ovpn/ccdroute ovpn/ccdroute2 pakfire/settings portfw/config ppp/settings-1 ppp/settings-2 ppp/settings-3 ppp/settings-4 \
 	    ppp/settings-5 ppp/settings proxy/settings proxy/squid.conf proxy/advanced/settings proxy/advanced/cre/enable remote/settings qos/settings qos/classes qos/subclasses qos/level7config qos/portconfig \
 	    qos/tosconfig suricata/settings vpn/config vpn/settings vpn/ipsec.conf \
-- 
2.47.3



^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 4/6] web-user-interface: Add lldp.cgi
  2025-11-06 16:46 New Feature: LLDP Michael Tremer
                   ` (2 preceding siblings ...)
  2025-11-06 16:46 ` [PATCH 3/6] cfgroot: Create /var/ipfire/lldp/settings Michael Tremer
@ 2025-11-06 16:46 ` Michael Tremer
  2025-11-06 16:46 ` [PATCH 5/6] web-user-interface: Add LLDP to the network menu Michael Tremer
  2025-11-06 16:46 ` [PATCH 6/6] initscripts: Add an initscript for lldpd Michael Tremer
  5 siblings, 0 replies; 8+ messages in thread
From: Michael Tremer @ 2025-11-06 16:46 UTC (permalink / raw)
  To: development; +Cc: Michael Tremer

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
---
 config/rootfiles/common/web-user-interface |   1 +
 doc/language_issues.de                     |   1 -
 doc/language_issues.en                     |   7 +-
 doc/language_issues.es                     |   5 +-
 doc/language_issues.fr                     |   5 +-
 doc/language_issues.it                     |   5 +-
 doc/language_issues.nl                     |   5 +-
 doc/language_issues.pl                     |   5 +-
 doc/language_issues.ru                     |   5 +-
 doc/language_issues.tr                     |   5 +-
 doc/language_issues.tw                     |   5 +-
 doc/language_issues.zh                     |   5 +-
 doc/language_missings                      |  36 ++++
 html/cgi-bin/lldp.cgi                      | 240 +++++++++++++++++++++
 langs/de/cgi-bin/de.pl                     |   6 +-
 langs/en/cgi-bin/en.pl                     |   6 +-
 langs/es/cgi-bin/es.pl                     |   2 +-
 langs/fr/cgi-bin/fr.pl                     |   2 +-
 langs/nl/cgi-bin/nl.pl                     |   2 +-
 langs/pl/cgi-bin/pl.pl                     |   2 +-
 langs/ru/cgi-bin/ru.pl                     |   2 +-
 langs/tr/cgi-bin/tr.pl                     |   2 +-
 22 files changed, 335 insertions(+), 19 deletions(-)
 create mode 100644 html/cgi-bin/lldp.cgi

diff --git a/config/rootfiles/common/web-user-interface b/config/rootfiles/common/web-user-interface
index aa31491d2..29fb52c28 100644
--- a/config/rootfiles/common/web-user-interface
+++ b/config/rootfiles/common/web-user-interface
@@ -29,6 +29,7 @@ srv/web/ipfire/cgi-bin/index.cgi
 srv/web/ipfire/cgi-bin/ipblocklist.cgi
 srv/web/ipfire/cgi-bin/ipinfo.cgi
 srv/web/ipfire/cgi-bin/iptables.cgi
+srv/web/ipfire/cgi-bin/lldp.cgi
 srv/web/ipfire/cgi-bin/location-block.cgi
 srv/web/ipfire/cgi-bin/logs.cgi
 srv/web/ipfire/cgi-bin/logs.cgi/calamaris.dat
diff --git a/doc/language_issues.de b/doc/language_issues.de
index ed9c20449..37be0c63c 100644
--- a/doc/language_issues.de
+++ b/doc/language_issues.de
@@ -218,7 +218,6 @@ WARNING: translation string unused: delete pc
 WARNING: translation string unused: delete share
 WARNING: translation string unused: delete user
 WARNING: translation string unused: deprecated fs warn
-WARNING: translation string unused: description
 WARNING: translation string unused: destination ip bad
 WARNING: translation string unused: destination ip or net
 WARNING: translation string unused: destination net
diff --git a/doc/language_issues.en b/doc/language_issues.en
index e40571450..b2250d8af 100644
--- a/doc/language_issues.en
+++ b/doc/language_issues.en
@@ -548,6 +548,7 @@ WARNING: untranslated string: default IP address = Default IP Address
 WARNING: untranslated string: default lease time = Default lease time (mins):
 WARNING: untranslated string: default renewal time = Default Renewal Time
 WARNING: untranslated string: delete = Delete
+WARNING: untranslated string: description = Description
 WARNING: untranslated string: desired = Desired
 WARNING: untranslated string: dest ip and port = Dest. IP: Port
 WARNING: untranslated string: destination = Destination
@@ -1235,6 +1236,9 @@ WARNING: untranslated string: least preferred = least preferred
 WARNING: untranslated string: legend = Legend
 WARNING: untranslated string: lifetime = Lifetime:
 WARNING: untranslated string: link-layer encapsulation = Link-Layer Encapsulation
+WARNING: untranslated string: lldp = Link Layer Discovery Protocol
+WARNING: untranslated string: lldp neighbors = Neighbors
+WARNING: untranslated string: lldp there are no neighbors = There are currently no neighbors
 WARNING: untranslated string: load average = Load Average
 WARNING: untranslated string: local ip address = Local IP Address
 WARNING: untranslated string: local ntp server specified but not enabled = Local NTP server specified but not enabled
@@ -1558,7 +1562,7 @@ WARNING: untranslated string: profile name = Profile name:
 WARNING: untranslated string: profile name not given = Profile name not given.
 WARNING: untranslated string: profile saved = Profile saved: 
 WARNING: untranslated string: proto = Proto
-WARNING: untranslated string: protocol = Protocol:
+WARNING: untranslated string: protocol = Protocol
 WARNING: untranslated string: proxy admin password = Cache administrator password
 WARNING: untranslated string: proxy cachemgr = Activate cachemanager
 WARNING: untranslated string: proxy errmsg filedescriptors = Wrong amount of filedescriptors
@@ -2140,6 +2144,7 @@ WARNING: untranslated string: version = Version
 WARNING: untranslated string: virtual address = Virtual Address
 WARNING: untranslated string: virtual private networking = Virtual Private Networking
 WARNING: untranslated string: visit us at = Visit us at
+WARNING: untranslated string: vlan = VLAN
 WARNING: untranslated string: vpi number = VPI number:
 WARNING: untranslated string: vpn = VPN
 WARNING: untranslated string: vpn altname syntax = SubjectAltName is a comma separated list of email, dns, uri, rid and ip objects.<br />email:an email address. Syntax email:copy takes the email field from the cert to be used.<br />DNS:a valid domain name.<br />URI:any valid uri.<br />RID:registered object identifier.<br />IP:an IP address.<br />Note:charset is limited and case is significant.<br />Example:<br /><b>email:</b>ipfire@foo.org<b>,email:</b>copy<b>,DNS:</b>www.ipfire.org<b>,IP:</b>127.0.0.1<b>,URI:</b>http://url/to/something
diff --git a/doc/language_issues.es b/doc/language_issues.es
index ffb077eb0..48c69f189 100644
--- a/doc/language_issues.es
+++ b/doc/language_issues.es
@@ -240,7 +240,6 @@ WARNING: translation string unused: delete pc
 WARNING: translation string unused: delete share
 WARNING: translation string unused: delete user
 WARNING: translation string unused: deprecated fs warn
-WARNING: translation string unused: description
 WARNING: translation string unused: destination ip bad
 WARNING: translation string unused: destination ip or net
 WARNING: translation string unused: destination net
@@ -1075,6 +1074,9 @@ WARNING: untranslated string: ids reports weekly = Send a weekly report
 WARNING: untranslated string: ids send email on alert = Send email on alert
 WARNING: untranslated string: indirect target selection = Indirect target selection
 WARNING: untranslated string: info messages = unknown string
+WARNING: untranslated string: lldp = Link Layer Discovery Protocol
+WARNING: untranslated string: lldp neighbors = Neighbors
+WARNING: untranslated string: lldp there are no neighbors = There are currently no neighbors
 WARNING: untranslated string: mdstat = Mdstat
 WARNING: untranslated string: no data = unknown string
 WARNING: untranslated string: offloaded = Offloaded
@@ -1107,6 +1109,7 @@ WARNING: untranslated string: rss = RSS
 WARNING: untranslated string: rss long = Resident Set Size
 WARNING: untranslated string: smt not implemented = Not Implemented
 WARNING: untranslated string: transient sheduler attacks = Transient sheduler attacks
+WARNING: untranslated string: vlan = VLAN
 WARNING: untranslated string: vpn deprecated = Deprecated
 WARNING: untranslated string: wio = unknown string
 WARNING: untranslated string: wio checked = unknown string
diff --git a/doc/language_issues.fr b/doc/language_issues.fr
index 2dbaeb3bc..28408469c 100644
--- a/doc/language_issues.fr
+++ b/doc/language_issues.fr
@@ -240,7 +240,6 @@ WARNING: translation string unused: delete pc
 WARNING: translation string unused: delete share
 WARNING: translation string unused: delete user
 WARNING: translation string unused: deprecated fs warn
-WARNING: translation string unused: description
 WARNING: translation string unused: destination ip bad
 WARNING: translation string unused: destination ip or net
 WARNING: translation string unused: destination net
@@ -1071,6 +1070,9 @@ WARNING: untranslated string: invalid keepalive interval = Invalid Keepalive Int
 WARNING: untranslated string: invalid network = Invalid Network
 WARNING: untranslated string: ips throughput = Throughput
 WARNING: untranslated string: last updated = Last Updated
+WARNING: untranslated string: lldp = Link Layer Discovery Protocol
+WARNING: untranslated string: lldp neighbors = Neighbors
+WARNING: untranslated string: lldp there are no neighbors = There are currently no neighbors
 WARNING: untranslated string: load average = Load Average
 WARNING: untranslated string: local port = Local Port
 WARNING: untranslated string: local subnets = Local Subnets
@@ -1120,6 +1122,7 @@ WARNING: untranslated string: system time = System Time (as of last page load)
 WARNING: untranslated string: timeformat = %Y-%m-%d at %H:%M:%S %Z
 WARNING: untranslated string: total = Total
 WARNING: untranslated string: transient sheduler attacks = Transient sheduler attacks
+WARNING: untranslated string: vlan = VLAN
 WARNING: untranslated string: vpn deprecated = Deprecated
 WARNING: untranslated string: warning = Warning
 WARNING: untranslated string: wg client pool = Client Pool
diff --git a/doc/language_issues.it b/doc/language_issues.it
index 4b1685986..e1a71dea0 100644
--- a/doc/language_issues.it
+++ b/doc/language_issues.it
@@ -208,7 +208,6 @@ WARNING: translation string unused: delete pc
 WARNING: translation string unused: delete share
 WARNING: translation string unused: delete user
 WARNING: translation string unused: deprecated fs warn
-WARNING: translation string unused: description
 WARNING: translation string unused: destination ip bad
 WARNING: translation string unused: destination ip or net
 WARNING: translation string unused: destination net
@@ -1263,6 +1262,9 @@ WARNING: untranslated string: ipsec settings = IPsec Settings
 WARNING: untranslated string: itlb multihit = iTLB MultiHit
 WARNING: untranslated string: last updated = Last Updated
 WARNING: untranslated string: link-layer encapsulation = Link-Layer Encapsulation
+WARNING: untranslated string: lldp = Link Layer Discovery Protocol
+WARNING: untranslated string: lldp neighbors = Neighbors
+WARNING: untranslated string: lldp there are no neighbors = There are currently no neighbors
 WARNING: untranslated string: load average = Load Average
 WARNING: untranslated string: local ip address = Local IP Address
 WARNING: untranslated string: local port = Local Port
@@ -1437,6 +1439,7 @@ WARNING: untranslated string: updxlrtr passive mode = Delivery only/no download
 WARNING: untranslated string: uplink bit rate = Uplink Bit Rate
 WARNING: untranslated string: user management = User Management
 WARNING: untranslated string: version = Version
+WARNING: untranslated string: vlan = VLAN
 WARNING: untranslated string: vpn broken = Broken
 WARNING: untranslated string: vpn connecting = CONNECTING
 WARNING: untranslated string: vpn deprecated = Deprecated
diff --git a/doc/language_issues.nl b/doc/language_issues.nl
index 0857c00ce..2a5f24b9d 100644
--- a/doc/language_issues.nl
+++ b/doc/language_issues.nl
@@ -209,7 +209,6 @@ WARNING: translation string unused: delete share
 WARNING: translation string unused: delete user
 WARNING: translation string unused: demon login script
 WARNING: translation string unused: deprecated fs warn
-WARNING: translation string unused: description
 WARNING: translation string unused: destination ip bad
 WARNING: translation string unused: destination ip or net
 WARNING: translation string unused: destination net
@@ -1270,6 +1269,9 @@ WARNING: untranslated string: ipsec settings = IPsec Settings
 WARNING: untranslated string: itlb multihit = iTLB MultiHit
 WARNING: untranslated string: last updated = Last Updated
 WARNING: untranslated string: link-layer encapsulation = Link-Layer Encapsulation
+WARNING: untranslated string: lldp = Link Layer Discovery Protocol
+WARNING: untranslated string: lldp neighbors = Neighbors
+WARNING: untranslated string: lldp there are no neighbors = There are currently no neighbors
 WARNING: untranslated string: load average = Load Average
 WARNING: untranslated string: local ip address = Local IP Address
 WARNING: untranslated string: local port = Local Port
@@ -1457,6 +1459,7 @@ WARNING: untranslated string: updxlrtr passive mode = Delivery only/no download
 WARNING: untranslated string: uplink bit rate = Uplink Bit Rate
 WARNING: untranslated string: user management = User Management
 WARNING: untranslated string: vendor = Vendor
+WARNING: untranslated string: vlan = VLAN
 WARNING: untranslated string: vpn broken = Broken
 WARNING: untranslated string: vpn connecting = CONNECTING
 WARNING: untranslated string: vpn deprecated = Deprecated
diff --git a/doc/language_issues.pl b/doc/language_issues.pl
index b005b9946..570f4a3d5 100644
--- a/doc/language_issues.pl
+++ b/doc/language_issues.pl
@@ -193,7 +193,6 @@ WARNING: translation string unused: delete cron
 WARNING: translation string unused: delete pc
 WARNING: translation string unused: delete share
 WARNING: translation string unused: delete user
-WARNING: translation string unused: description
 WARNING: translation string unused: destination ip bad
 WARNING: translation string unused: destination ip or net
 WARNING: translation string unused: destination net
@@ -1399,6 +1398,9 @@ WARNING: untranslated string: last updated = Last Updated
 WARNING: untranslated string: least preferred = least preferred
 WARNING: untranslated string: lifetime = Lifetime:
 WARNING: untranslated string: link-layer encapsulation = Link-Layer Encapsulation
+WARNING: untranslated string: lldp = Link Layer Discovery Protocol
+WARNING: untranslated string: lldp neighbors = Neighbors
+WARNING: untranslated string: lldp there are no neighbors = There are currently no neighbors
 WARNING: untranslated string: load average = Load Average
 WARNING: untranslated string: local ip address = Local IP Address
 WARNING: untranslated string: local port = Local Port
@@ -1675,6 +1677,7 @@ WARNING: untranslated string: user management = User Management
 WARNING: untranslated string: vendor = Vendor
 WARNING: untranslated string: version = Version
 WARNING: untranslated string: visit us at = Visit us at
+WARNING: untranslated string: vlan = VLAN
 WARNING: untranslated string: vpn broken = Broken
 WARNING: untranslated string: vpn connecting = CONNECTING
 WARNING: untranslated string: vpn deprecated = Deprecated
diff --git a/doc/language_issues.ru b/doc/language_issues.ru
index 46aa8120f..272998de3 100644
--- a/doc/language_issues.ru
+++ b/doc/language_issues.ru
@@ -192,7 +192,6 @@ WARNING: translation string unused: delete cron
 WARNING: translation string unused: delete pc
 WARNING: translation string unused: delete share
 WARNING: translation string unused: delete user
-WARNING: translation string unused: description
 WARNING: translation string unused: destination ip bad
 WARNING: translation string unused: destination ip or net
 WARNING: translation string unused: destination net
@@ -1398,6 +1397,9 @@ WARNING: untranslated string: last updated = Last Updated
 WARNING: untranslated string: least preferred = least preferred
 WARNING: untranslated string: lifetime = Lifetime:
 WARNING: untranslated string: link-layer encapsulation = Link-Layer Encapsulation
+WARNING: untranslated string: lldp = Link Layer Discovery Protocol
+WARNING: untranslated string: lldp neighbors = Neighbors
+WARNING: untranslated string: lldp there are no neighbors = There are currently no neighbors
 WARNING: untranslated string: load average = Load Average
 WARNING: untranslated string: local ip address = Local IP Address
 WARNING: untranslated string: local port = Local Port
@@ -1674,6 +1676,7 @@ WARNING: untranslated string: user management = User Management
 WARNING: untranslated string: vendor = Vendor
 WARNING: untranslated string: version = Version
 WARNING: untranslated string: visit us at = Visit us at
+WARNING: untranslated string: vlan = VLAN
 WARNING: untranslated string: vpn broken = Broken
 WARNING: untranslated string: vpn connecting = CONNECTING
 WARNING: untranslated string: vpn deprecated = Deprecated
diff --git a/doc/language_issues.tr b/doc/language_issues.tr
index 8e3eb45cb..3b30c7d4c 100644
--- a/doc/language_issues.tr
+++ b/doc/language_issues.tr
@@ -230,7 +230,6 @@ WARNING: translation string unused: delete pc
 WARNING: translation string unused: delete share
 WARNING: translation string unused: delete user
 WARNING: translation string unused: deprecated fs warn
-WARNING: translation string unused: description
 WARNING: translation string unused: destination ip bad
 WARNING: translation string unused: destination ip or net
 WARNING: translation string unused: destination net
@@ -1201,6 +1200,9 @@ WARNING: untranslated string: ipsec settings = IPsec Settings
 WARNING: untranslated string: itlb multihit = iTLB MultiHit
 WARNING: untranslated string: last updated = Last Updated
 WARNING: untranslated string: link-layer encapsulation = Link-Layer Encapsulation
+WARNING: untranslated string: lldp = Link Layer Discovery Protocol
+WARNING: untranslated string: lldp neighbors = Neighbors
+WARNING: untranslated string: lldp there are no neighbors = There are currently no neighbors
 WARNING: untranslated string: load average = Load Average
 WARNING: untranslated string: local ip address = Local IP Address
 WARNING: untranslated string: local port = Local Port
@@ -1334,6 +1336,7 @@ WARNING: untranslated string: transport mode does not support vti = VTI is not s
 WARNING: untranslated string: updxlrtr passive mode = Delivery only/no download mode
 WARNING: untranslated string: user management = User Management
 WARNING: untranslated string: version = Version
+WARNING: untranslated string: vlan = VLAN
 WARNING: untranslated string: vpn deprecated = Deprecated
 WARNING: untranslated string: vpn start action add = Wait for connection initiation
 WARNING: untranslated string: vpn subjectaltname missing = SubjectAlternativeName cannot be emtpy.
diff --git a/doc/language_issues.tw b/doc/language_issues.tw
index 2a058e720..9fe0df551 100644
--- a/doc/language_issues.tw
+++ b/doc/language_issues.tw
@@ -242,7 +242,6 @@ WARNING: translation string unused: delete pc
 WARNING: translation string unused: delete share
 WARNING: translation string unused: delete user
 WARNING: translation string unused: deprecated fs warn
-WARNING: translation string unused: description
 WARNING: translation string unused: destination ip bad
 WARNING: translation string unused: destination ip or net
 WARNING: translation string unused: destination net
@@ -1083,6 +1082,9 @@ WARNING: untranslated string: ids reports weekly = Send a weekly report
 WARNING: untranslated string: ids send email on alert = Send email on alert
 WARNING: untranslated string: indirect target selection = Indirect target selection
 WARNING: untranslated string: info messages = unknown string
+WARNING: untranslated string: lldp = Link Layer Discovery Protocol
+WARNING: untranslated string: lldp neighbors = Neighbors
+WARNING: untranslated string: lldp there are no neighbors = There are currently no neighbors
 WARNING: untranslated string: max bandwidth = Maximum bandwidth
 WARNING: untranslated string: no data = unknown string
 WARNING: untranslated string: offloaded = Offloaded
@@ -1125,6 +1127,7 @@ WARNING: untranslated string: rss = RSS
 WARNING: untranslated string: rss long = Resident Set Size
 WARNING: untranslated string: smt not implemented = Not Implemented
 WARNING: untranslated string: transient sheduler attacks = Transient sheduler attacks
+WARNING: untranslated string: vlan = VLAN
 WARNING: untranslated string: vpn deprecated = Deprecated
 WARNING: untranslated string: wio = unknown string
 WARNING: untranslated string: wio checked = unknown string
diff --git a/doc/language_issues.zh b/doc/language_issues.zh
index 2a058e720..9fe0df551 100644
--- a/doc/language_issues.zh
+++ b/doc/language_issues.zh
@@ -242,7 +242,6 @@ WARNING: translation string unused: delete pc
 WARNING: translation string unused: delete share
 WARNING: translation string unused: delete user
 WARNING: translation string unused: deprecated fs warn
-WARNING: translation string unused: description
 WARNING: translation string unused: destination ip bad
 WARNING: translation string unused: destination ip or net
 WARNING: translation string unused: destination net
@@ -1083,6 +1082,9 @@ WARNING: untranslated string: ids reports weekly = Send a weekly report
 WARNING: untranslated string: ids send email on alert = Send email on alert
 WARNING: untranslated string: indirect target selection = Indirect target selection
 WARNING: untranslated string: info messages = unknown string
+WARNING: untranslated string: lldp = Link Layer Discovery Protocol
+WARNING: untranslated string: lldp neighbors = Neighbors
+WARNING: untranslated string: lldp there are no neighbors = There are currently no neighbors
 WARNING: untranslated string: max bandwidth = Maximum bandwidth
 WARNING: untranslated string: no data = unknown string
 WARNING: untranslated string: offloaded = Offloaded
@@ -1125,6 +1127,7 @@ WARNING: untranslated string: rss = RSS
 WARNING: untranslated string: rss long = Resident Set Size
 WARNING: untranslated string: smt not implemented = Not Implemented
 WARNING: untranslated string: transient sheduler attacks = Transient sheduler attacks
+WARNING: untranslated string: vlan = VLAN
 WARNING: untranslated string: vpn deprecated = Deprecated
 WARNING: untranslated string: wio = unknown string
 WARNING: untranslated string: wio checked = unknown string
diff --git a/doc/language_missings b/doc/language_missings
index 24602b7d1..bb07f3fab 100644
--- a/doc/language_missings
+++ b/doc/language_missings
@@ -179,6 +179,9 @@
 < ids reports weekly
 < ids send email on alert
 < indirect target selection
+< lldp
+< lldp neighbors
+< lldp there are no neighbors
 < mdstat
 < offloaded
 < online
@@ -206,6 +209,7 @@
 < rss long
 < smt not implemented
 < transient sheduler attacks
+< vlan
 < vpn deprecated
 < wlanap 802.11ac
 < wlanap 802.11ac 160mhz
@@ -287,6 +291,9 @@
 < invalid network
 < ips throughput
 < last updated
+< lldp
+< lldp neighbors
+< lldp there are no neighbors
 < load average
 < local port
 < local subnets
@@ -335,6 +342,7 @@
 < total
 < transient sheduler attacks
 < upload fcdsl.o
+< vlan
 < vpn deprecated
 < warning
 < wg
@@ -768,6 +776,9 @@
 < last updated
 < legacy architecture warning
 < link-layer encapsulation
+< lldp
+< lldp neighbors
+< lldp there are no neighbors
 < load average
 < local ip address
 < local port
@@ -952,6 +963,7 @@
 < uplink bit rate
 < user management
 < version
+< vlan
 < vpn broken
 < vpn connecting
 < vpn deprecated
@@ -1461,6 +1473,9 @@
 < last updated
 < legacy architecture warning
 < link-layer encapsulation
+< lldp
+< lldp neighbors
+< lldp there are no neighbors
 < load average
 < local ip address
 < local port
@@ -1662,6 +1677,7 @@
 < uplink bit rate
 < user management
 < vendor
+< vlan
 < vpn broken
 < vpn connecting
 < vpn deprecated
@@ -2464,6 +2480,9 @@
 < legacy architecture warning
 < lifetime
 < link-layer encapsulation
+< lldp
+< lldp neighbors
+< lldp there are no neighbors
 < load average
 < local ip address
 < local port
@@ -2785,6 +2804,7 @@
 < vendor
 < version
 < visit us at
+< vlan
 < vpn broken
 < vpn connecting
 < vpn deprecated
@@ -3626,6 +3646,9 @@
 < legacy architecture warning
 < lifetime
 < link-layer encapsulation
+< lldp
+< lldp neighbors
+< lldp there are no neighbors
 < load average
 < local ip address
 < local port
@@ -3946,6 +3969,7 @@
 < vendor
 < version
 < visit us at
+< vlan
 < vpn broken
 < vpn connecting
 < vpn deprecated
@@ -4363,6 +4387,9 @@
 < last updated
 < legacy architecture warning
 < link-layer encapsulation
+< lldp
+< lldp neighbors
+< lldp there are no neighbors
 < load average
 < local ip address
 < local port
@@ -4500,6 +4527,7 @@
 < updxlrtr passive mode
 < user management
 < version
+< vlan
 < vpn deprecated
 < vpn start action add
 < vpn subjectaltname missing
@@ -4646,6 +4674,9 @@
 < ids reports weekly
 < ids send email on alert
 < indirect target selection
+< lldp
+< lldp neighbors
+< lldp there are no neighbors
 < max bandwidth
 < offloaded
 < online
@@ -4684,6 +4715,7 @@
 < rss long
 < smt not implemented
 < transient sheduler attacks
+< vlan
 < vpn deprecated
 < wlanap 802.11ac
 < wlanap 802.11ac 160mhz
@@ -4741,6 +4773,9 @@
 < ids reports weekly
 < ids send email on alert
 < indirect target selection
+< lldp
+< lldp neighbors
+< lldp there are no neighbors
 < max bandwidth
 < offloaded
 < online
@@ -4779,6 +4814,7 @@
 < rss long
 < smt not implemented
 < transient sheduler attacks
+< vlan
 < vpn deprecated
 < wlanap 802.11ac
 < wlanap 802.11ac 160mhz
diff --git a/html/cgi-bin/lldp.cgi b/html/cgi-bin/lldp.cgi
new file mode 100644
index 000000000..755d3dc46
--- /dev/null
+++ b/html/cgi-bin/lldp.cgi
@@ -0,0 +1,240 @@
+#!/usr/bin/perl
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2025 Michael Tremer <michael.tremer@ipfire.org>               #
+#                                                                             #
+# 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 3 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, see <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+###############################################################################
+
+use strict;
+use JSON::PP;
+
+# enable only the following on debugging purpose
+#use warnings;
+#use CGI::Carp 'fatalsToBrowser';
+
+require "/var/ipfire/general-functions.pl";
+require "${General::swroot}/header.pl";
+
+my %cgiparams = ();
+my @errormessages = ();
+
+# Fetch CGI parameters
+&Header::getcgihash(\%cgiparams, {'wantfile' => 1, 'filevar' => 'FH'});
+
+# Read the settings
+my %settings = ();
+&General::readhash("${General::swroot}/lldp/settings", \%settings);
+
+# Save on main page
+if ($cgiparams{"ACTION"} eq $Lang::tr{'save'}) {
+	# Store whether enabled or not
+	if ($cgiparams{'ENABLED'} =~ m/^(on|off)?$/) {
+		$settings{'ENABLED'} = $cgiparams{'ENABLED'};
+	}
+
+	# XXX Validate the description
+	$settings{"DESCRIPTION"} = $cgiparams{"DESCRIPTION"};
+
+	# Don't continue on error
+	goto MAIN if (scalar @errormessages);
+
+	# Store the configuration file
+	&General::writehash("${General::swroot}/lldp/settings", \%settings);
+
+	# Start if enabled
+	if ($settings{"ENABLED"} eq "on") {
+		&General::system("/usr/local/bin/lldpdctrl", "restart");
+	} else {
+		&General::system("/usr/local/bin/lldpdctrl", "stop");
+	}
+}
+
+# The main page starts here
+MAIN:
+	# Send HTTP Headers
+	&Header::showhttpheaders();
+
+	# Open the page
+	&Header::openpage($Lang::tr{'lldp'}, 1, '');
+
+	# Show any error messages
+	&Header::errorbox(@errormessages);
+
+	# Open a box for Global Settings
+	&Header::openbox('100%', '', $Lang::tr{'global settings'});
+
+	my %checked = (
+		"ENABLED" => ($settings{"ENABLED"} eq "on") ? "checked" : "",
+	);
+
+	print <<END;
+		<form method="POST" action="">
+			<table class="form">
+				<tr>
+					<td>$Lang::tr{'enabled'}</td>
+					<td>
+						<input type="checkbox" name="ENABLED" $checked{'ENABLED'} />
+					</td>
+				</tr>
+
+				<tr>
+					<td>$Lang::tr{'description'}</td>
+					<td>
+						<input type="text" name="DESCRIPTION" value="$settings{'DESCRIPTION'}" />
+					</td>
+				</tr>
+
+				<tr class="action">
+					<td colspan="2">
+						<input type='submit' name='ACTION' value='$Lang::tr{'save'}' />
+					</td>
+				</tr>
+			</table>
+		</form>
+END
+	&Header::closebox();
+
+	# Load data about all peers
+	my @output = &General::system_output("lldpctl", "-f", "json0");
+
+	my $json;
+
+	# Parse the JSON output
+	eval {
+		$json = decode_json join("\n", @output);
+		1;
+	} or do {
+		$json = undef;
+	};
+
+	# Show a list with all peers if the service is enabled
+	if ($settings{"ENABLED"} eq "on") {
+		&Header::opensection($Lang::tr{'lldp neighbors'});
+
+		# Fetch the interface object
+		my $interface = $json->{"lldp"}[0]->{"interface"};
+
+		print <<END;
+			<table class='tbl'>
+				<tr>
+					<th>
+						$Lang::tr{'name'}
+					</th>
+
+					<th>
+						$Lang::tr{'interface'}
+					</th>
+
+					<th>
+						$Lang::tr{'port'}
+					</th>
+
+					<th style="text-align: right;">
+						$Lang::tr{'vlan'}
+					</th>
+
+					<th>
+						$Lang::tr{'protocol'}
+					</th>
+
+					<th>
+						$Lang::tr{'description'}
+					</th>
+				</tr>
+END
+
+				foreach my $peer (@{ $interface }) {
+					my $intf = $peer->{"name"};
+					my $proto = $peer->{"via"};
+					my $name = "";
+					my $descr = "";
+					my $port_name = "";
+					my $vlan_id = "";
+
+					# Fetch the chassis
+					foreach my $chassis (@{ $peer->{"chassis"} }) {
+						$name = &Header::escape(
+							$chassis->{"name"}[0]->{"value"}
+						);;
+						$descr = &Header::escape(
+							$chassis->{"descr"}[0]->{"value"}
+						);
+
+						# Replace any line breaks in the description
+						$descr =~ s/\n/<br>/g;
+					}
+
+					# Fetch the port
+					foreach my $port (@{ $peer->{"port"} }) {
+						$port_name = $port->{"descr"}[0]->{"value"};
+					}
+
+					# Fetch the VLAN
+					foreach my $vlan (@{ $peer->{"vlan"} }) {
+						$vlan_id = $vlan->{"vlan-id"};
+					}
+
+					print <<END;
+						<tr>
+							<th scope="row">
+								$name
+							</th>
+
+							<td>
+								$intf
+							</td>
+
+							<td>
+								$port_name
+							</td>
+
+							<td style="text-align: right;">
+								$vlan_id
+							</td>
+
+							<td>
+								$proto
+							</td>
+
+							<td>
+								$descr
+							</td>
+						</tr>
+END
+				}
+
+				# Show a message if there are no neighbors
+				unless (scalar @{ $interface }) {
+					print <<END;
+						<tr>
+							<td colspan="6" style="text-align: center;">
+								$Lang::tr{'lldp there are no neighbors'}
+							</td>
+						</tr>
+END
+				}
+
+		print <<END;
+			</table>
+END
+
+		&Header::closesection();
+	}
+
+	&Header::closepage();
+
+	exit(0);
diff --git a/langs/de/cgi-bin/de.pl b/langs/de/cgi-bin/de.pl
index 55804a897..132c04ff1 100644
--- a/langs/de/cgi-bin/de.pl
+++ b/langs/de/cgi-bin/de.pl
@@ -1639,6 +1639,9 @@
 'lifetime' => 'Lebensdauer:',
 'line' => 'Leitung',
 'linkq' => 'Antwortzeit',
+'lldp' => 'Link-Layer-Discovery-Protokoll',
+'lldp neighbors' => 'Nachbarn',
+'lldp there are no neighbors' => 'Aktuell gibt es keine Nachbarn',
 'load average' => 'Load Average',
 'load printer' => 'Lade Drucker',
 'loaded modules' => 'Geladene Module:',
@@ -2140,7 +2143,7 @@
 'profile saved' => 'Profil gespeichert: ',
 'profiles' => 'Profile:',
 'proto' => 'Proto',
-'protocol' => 'Protokoll:',
+'protocol' => 'Protokoll',
 'proxy' => 'Proxy',
 'proxy access graphs' => 'Diagramme zur Proxyauslastung',
 'proxy admin password' => 'Cache Administrator Passwort',
@@ -2920,6 +2923,7 @@
 'virtual private networking' => 'Virtuelles Privates Netzwerk',
 'visible in browselist' => 'Sichtbar in der Verzeichnisliste',
 'visit us at' => 'Besuchen Sie uns auf',
+'vlan' => 'VLAN',
 'voldown10' => 'Laustärke um 10 verringern',
 'voldown5' => 'Laustärke um 5 verringern',
 'volup10' => 'Laustärke um 10 erhöhen',
diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl
index 08967bc84..9cef3edd2 100644
--- a/langs/en/cgi-bin/en.pl
+++ b/langs/en/cgi-bin/en.pl
@@ -1705,6 +1705,9 @@
 'line' => 'Line',
 'link-layer encapsulation' => 'Link-Layer Encapsulation',
 'linkq' => 'Link Quality',
+'lldp' => 'Link Layer Discovery Protocol',
+'lldp neighbors' => 'Neighbors',
+'lldp there are no neighbors' => 'There are currently no neighbors',
 'load average' => 'Load Average',
 'load printer' => 'Load Printer',
 'loaded modules' => 'Loaded modules:',
@@ -2227,7 +2230,7 @@
 'profile saved' => 'Profile saved: ',
 'profiles' => 'Profiles:',
 'proto' => 'Proto',
-'protocol' => 'Protocol:',
+'protocol' => 'Protocol',
 'proxy' => 'Proxy',
 'proxy access graphs' => 'Proxy access graphs',
 'proxy admin password' => 'Cache administrator password',
@@ -3032,6 +3035,7 @@
 'virtual private networking' => 'Virtual Private Networking',
 'visible in browselist' => 'visible in browselist',
 'visit us at' => 'Visit us at',
+'vlan' => 'VLAN',
 'voldown10' => 'Decrease volume by 10',
 'voldown5' => 'Decrease volume by 5',
 'volup10' => 'Increase volume by 10',
diff --git a/langs/es/cgi-bin/es.pl b/langs/es/cgi-bin/es.pl
index a4764e6cb..fb529805e 100644
--- a/langs/es/cgi-bin/es.pl
+++ b/langs/es/cgi-bin/es.pl
@@ -2194,7 +2194,7 @@
 'profile saved' => 'Perfil guardado:',
 'profiles' => 'Perfiles:',
 'proto' => 'Proto',
-'protocol' => 'Protocolo:',
+'protocol' => 'Protocolo',
 'proxy' => 'Proxy',
 'proxy access graphs' => 'Gráficas de acceso al proxy',
 'proxy admin password' => 'Contraseña del Administrador del Caché',
diff --git a/langs/fr/cgi-bin/fr.pl b/langs/fr/cgi-bin/fr.pl
index a7085b773..57db1f394 100644
--- a/langs/fr/cgi-bin/fr.pl
+++ b/langs/fr/cgi-bin/fr.pl
@@ -2161,7 +2161,7 @@
 'profile saved' => 'Profil sauvegardé:',
 'profiles' => 'Profils :',
 'proto' => 'Proto',
-'protocol' => 'Protocole :',
+'protocol' => 'Protocole',
 'proxy' => 'Proxy',
 'proxy access graphs' => 'Graphiques des accès proxy',
 'proxy admin password' => 'Mot de passe admnistrateur du cache',
diff --git a/langs/nl/cgi-bin/nl.pl b/langs/nl/cgi-bin/nl.pl
index 17db7389f..c4612da4a 100644
--- a/langs/nl/cgi-bin/nl.pl
+++ b/langs/nl/cgi-bin/nl.pl
@@ -1764,7 +1764,7 @@
 'profile saved' => 'Profiel opgeslagen: ',
 'profiles' => 'Profielen:',
 'proto' => 'Proto',
-'protocol' => 'Protocol:',
+'protocol' => 'Protocol',
 'proxy' => 'Proxy',
 'proxy access graphs' => 'Proxy toegangsgrafieken',
 'proxy admin password' => 'Cache beheerder wachtwoord',
diff --git a/langs/pl/cgi-bin/pl.pl b/langs/pl/cgi-bin/pl.pl
index 0326a37e6..0972de0b3 100644
--- a/langs/pl/cgi-bin/pl.pl
+++ b/langs/pl/cgi-bin/pl.pl
@@ -1429,7 +1429,7 @@
 'profile saved' => 'Zapisano profil: ',
 'profiles' => 'Profile:',
 'proto' => 'Proto',
-'protocol' => 'Protokół:',
+'protocol' => 'Protokół',
 'proxy' => 'Proxy',
 'proxy access graphs' => 'Wykresy dostępu do Proxy',
 'proxy admin password' => 'Hasło administratora Cache',
diff --git a/langs/ru/cgi-bin/ru.pl b/langs/ru/cgi-bin/ru.pl
index ae4450fe3..8472e1fde 100644
--- a/langs/ru/cgi-bin/ru.pl
+++ b/langs/ru/cgi-bin/ru.pl
@@ -1424,7 +1424,7 @@
 'profile saved' => 'Профиль сохранён: ',
 'profiles' => 'Профили:',
 'proto' => 'Proto',
-'protocol' => 'Протокол:',
+'protocol' => 'Протокол',
 'proxy' => 'Proxy',
 'proxy access graphs' => 'Proxy access graphs',
 'proxy admin password' => 'Cache administrator password',
diff --git a/langs/tr/cgi-bin/tr.pl b/langs/tr/cgi-bin/tr.pl
index ad8fec7eb..320ff2018 100644
--- a/langs/tr/cgi-bin/tr.pl
+++ b/langs/tr/cgi-bin/tr.pl
@@ -1935,7 +1935,7 @@
 'profile saved' => 'Kaydedilen profiller: ',
 'profiles' => 'Profiller:',
 'proto' => 'Kural',
-'protocol' => 'Kural ',
+'protocol' => 'Kural',
 'proxy' => 'Vekil sunucu',
 'proxy access graphs' => 'Vekil sunucu erişim grafiği',
 'proxy admin password' => 'Önbellek yönetici parolası',
-- 
2.47.3



^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 5/6] web-user-interface: Add LLDP to the network menu
  2025-11-06 16:46 New Feature: LLDP Michael Tremer
                   ` (3 preceding siblings ...)
  2025-11-06 16:46 ` [PATCH 4/6] web-user-interface: Add lldp.cgi Michael Tremer
@ 2025-11-06 16:46 ` Michael Tremer
  2025-11-06 16:46 ` [PATCH 6/6] initscripts: Add an initscript for lldpd Michael Tremer
  5 siblings, 0 replies; 8+ messages in thread
From: Michael Tremer @ 2025-11-06 16:46 UTC (permalink / raw)
  To: development; +Cc: Michael Tremer

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
---
 config/menu/30-network.menu | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/config/menu/30-network.menu b/config/menu/30-network.menu
index 4ef537ed4..128d346f8 100644
--- a/config/menu/30-network.menu
+++ b/config/menu/30-network.menu
@@ -34,6 +34,11 @@
 				 'title' => "$Lang::tr{'dhcp server'}",
 				 'enabled' => 1,
 				 };
+    $subnetwork->{'31.lldp'} = {'caption' => $Lang::tr{'lldp'},
+				 'uri' => '/cgi-bin/lldp.cgi',
+				 'title' => "$Lang::tr{'lldp'}",
+				 'enabled' => 1,
+				 };
 	$subnetwork->{'32.captive'} = {'caption' => $Lang::tr{'Captive'},
 			        'uri' => '/cgi-bin/captive.cgi',
 			        'title' => $Lang::tr{'Captive'},
-- 
2.47.3



^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 6/6] initscripts: Add an initscript for lldpd
  2025-11-06 16:46 New Feature: LLDP Michael Tremer
                   ` (4 preceding siblings ...)
  2025-11-06 16:46 ` [PATCH 5/6] web-user-interface: Add LLDP to the network menu Michael Tremer
@ 2025-11-06 16:46 ` Michael Tremer
  5 siblings, 0 replies; 8+ messages in thread
From: Michael Tremer @ 2025-11-06 16:46 UTC (permalink / raw)
  To: development; +Cc: Michael Tremer

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
---
 config/rootfiles/common/aarch64/initscripts |  4 ++
 config/rootfiles/common/riscv64/initscripts |  4 ++
 config/rootfiles/common/x86_64/initscripts  |  4 ++
 lfs/initscripts                             |  3 +
 src/initscripts/system/lldpd                | 79 +++++++++++++++++++++
 5 files changed, 94 insertions(+)
 create mode 100755 src/initscripts/system/lldpd

diff --git a/config/rootfiles/common/aarch64/initscripts b/config/rootfiles/common/aarch64/initscripts
index fa43d4fe1..3f0e31f56 100644
--- a/config/rootfiles/common/aarch64/initscripts
+++ b/config/rootfiles/common/aarch64/initscripts
@@ -31,6 +31,7 @@ etc/rc.d/init.d/grub-btrfsd
 etc/rc.d/init.d/halt
 etc/rc.d/init.d/ipsec
 etc/rc.d/init.d/leds
+etc/rc.d/init.d/lldpd
 etc/rc.d/init.d/localnet
 etc/rc.d/init.d/modules
 etc/rc.d/init.d/mountfs
@@ -99,6 +100,7 @@ etc/rc.d/init.d/wlanclient
 etc/rc.d/rc0.d/K01grub-btrfsd
 #etc/rc.d/rc0.d/K01vdradmin
 etc/rc.d/rc0.d/K08fcron
+etc/rc.d/rc0.d/K09lldpd
 etc/rc.d/rc0.d/K10openvpn-rw
 etc/rc.d/rc0.d/K11openvpn-n2n
 etc/rc.d/rc0.d/K28apache
@@ -138,6 +140,7 @@ etc/rc.d/rc3.d/S24cyrus-sasl
 etc/rc.d/rc3.d/S30sshd
 etc/rc.d/rc3.d/S32apache
 etc/rc.d/rc3.d/S40fcron
+etc/rc.d/rc3.d/S41lldpd
 etc/rc.d/rc3.d/S51openvpn-n2n
 etc/rc.d/rc3.d/S50openvpn-rw
 etc/rc.d/rc3.d/S50wireguard
@@ -148,6 +151,7 @@ etc/rc.d/rc3.d/S99grub-btrfsd
 etc/rc.d/rc6.d/K01grub-btrfsd
 #etc/rc.d/rc6.d/K01vdradmin
 etc/rc.d/rc6.d/K08fcron
+etc/rc.d/rc6.d/K09lldpd
 etc/rc.d/rc6.d/K10openvpn-rw
 etc/rc.d/rc6.d/K11openvpn-n2n
 etc/rc.d/rc6.d/K28apache
diff --git a/config/rootfiles/common/riscv64/initscripts b/config/rootfiles/common/riscv64/initscripts
index a31359134..fb7cf4ff4 100644
--- a/config/rootfiles/common/riscv64/initscripts
+++ b/config/rootfiles/common/riscv64/initscripts
@@ -31,6 +31,7 @@ etc/rc.d/init.d/grub-btrfsd
 etc/rc.d/init.d/halt
 etc/rc.d/init.d/ipsec
 etc/rc.d/init.d/leds
+etc/rc.d/init.d/lldpd
 etc/rc.d/init.d/localnet
 etc/rc.d/init.d/modules
 etc/rc.d/init.d/mountfs
@@ -98,6 +99,7 @@ etc/rc.d/init.d/wlanclient
 etc/rc.d/rc0.d/K01grub-btrfsd
 #etc/rc.d/rc0.d/K01vdradmin
 etc/rc.d/rc0.d/K08fcron
+etc/rc.d/rc0.d/K09lldpd
 etc/rc.d/rc0.d/K10openvpn-rw
 etc/rc.d/rc0.d/K11openvpn-n2n
 etc/rc.d/rc0.d/K28apache
@@ -137,6 +139,7 @@ etc/rc.d/rc3.d/S24cyrus-sasl
 etc/rc.d/rc3.d/S30sshd
 etc/rc.d/rc3.d/S32apache
 etc/rc.d/rc3.d/S40fcron
+etc/rc.d/rc3.d/S41lldpd
 etc/rc.d/rc3.d/S51openvpn-n2n
 etc/rc.d/rc3.d/S50openvpn-rw
 etc/rc.d/rc3.d/S50wireguard
@@ -147,6 +150,7 @@ etc/rc.d/rc3.d/S99grub-btrfsd
 etc/rc.d/rc6.d/K01grub-btrfsd
 #etc/rc.d/rc6.d/K01vdradmin
 etc/rc.d/rc6.d/K08fcron
+etc/rc.d/rc6.d/K09lldpd
 etc/rc.d/rc6.d/K10openvpn-rw
 etc/rc.d/rc6.d/K11openvpn-n2n
 etc/rc.d/rc6.d/K28apache
diff --git a/config/rootfiles/common/x86_64/initscripts b/config/rootfiles/common/x86_64/initscripts
index a31359134..fb7cf4ff4 100644
--- a/config/rootfiles/common/x86_64/initscripts
+++ b/config/rootfiles/common/x86_64/initscripts
@@ -31,6 +31,7 @@ etc/rc.d/init.d/grub-btrfsd
 etc/rc.d/init.d/halt
 etc/rc.d/init.d/ipsec
 etc/rc.d/init.d/leds
+etc/rc.d/init.d/lldpd
 etc/rc.d/init.d/localnet
 etc/rc.d/init.d/modules
 etc/rc.d/init.d/mountfs
@@ -98,6 +99,7 @@ etc/rc.d/init.d/wlanclient
 etc/rc.d/rc0.d/K01grub-btrfsd
 #etc/rc.d/rc0.d/K01vdradmin
 etc/rc.d/rc0.d/K08fcron
+etc/rc.d/rc0.d/K09lldpd
 etc/rc.d/rc0.d/K10openvpn-rw
 etc/rc.d/rc0.d/K11openvpn-n2n
 etc/rc.d/rc0.d/K28apache
@@ -137,6 +139,7 @@ etc/rc.d/rc3.d/S24cyrus-sasl
 etc/rc.d/rc3.d/S30sshd
 etc/rc.d/rc3.d/S32apache
 etc/rc.d/rc3.d/S40fcron
+etc/rc.d/rc3.d/S41lldpd
 etc/rc.d/rc3.d/S51openvpn-n2n
 etc/rc.d/rc3.d/S50openvpn-rw
 etc/rc.d/rc3.d/S50wireguard
@@ -147,6 +150,7 @@ etc/rc.d/rc3.d/S99grub-btrfsd
 etc/rc.d/rc6.d/K01grub-btrfsd
 #etc/rc.d/rc6.d/K01vdradmin
 etc/rc.d/rc6.d/K08fcron
+etc/rc.d/rc6.d/K09lldpd
 etc/rc.d/rc6.d/K10openvpn-rw
 etc/rc.d/rc6.d/K11openvpn-n2n
 etc/rc.d/rc6.d/K28apache
diff --git a/lfs/initscripts b/lfs/initscripts
index 49215c0ae..d2ef7ef85 100644
--- a/lfs/initscripts
+++ b/lfs/initscripts
@@ -94,6 +94,7 @@ $(TARGET) :
 	ln -sf ../init.d/grub-btrfsd		/etc/rc.d/rc0.d/K01grub-btrfsd
 	ln -sf ../init.d/vdradmin		/etc/rc.d/rc0.d/K01vdradmin
 	ln -sf ../init.d/fcron			/etc/rc.d/rc0.d/K08fcron
+	ln -sf ../init.d/lldpd			/etc/rc.d/rc0.d/K09lldpd
 	ln -sf ../init.d/apache			/etc/rc.d/rc0.d/K28apache
 	ln -sf ../init.d/openvpn-rw		/etc/rc.d/rc0.d/K10openvpn-rw
 	ln -sf ../init.d/openvpn-n2n		/etc/rc.d/rc0.d/K11openvpn-n2n
@@ -131,6 +132,7 @@ $(TARGET) :
 	ln -sf ../init.d/sshd			/etc/rc.d/rc3.d/S30sshd
 	ln -sf ../init.d/apache			/etc/rc.d/rc3.d/S32apache
 	ln -sf ../init.d/fcron			/etc/rc.d/rc3.d/S40fcron
+	ln -sf ../init.d/lldpd			/etc/rc.d/rc3.d/S41lldpd
 	ln -sf ../init.d/openvpn-n2n		/etc/rc.d/rc3.d/S51openvpn-n2n
 	ln -sf ../init.d/openvpn-rw		/etc/rc.d/rc3.d/S50openvpn-rw
 	ln -sf ../init.d/wireguard		/etc/rc.d/rc3.d/S50wireguard
@@ -141,6 +143,7 @@ $(TARGET) :
 	ln -sf ../init.d/grub-btrfsd		/etc/rc.d/rc6.d/K01grub-btrfsd
 	ln -sf ../init.d/vdradmin		/etc/rc.d/rc6.d/K01vdradmin
 	ln -sf ../init.d/fcron			/etc/rc.d/rc6.d/K08fcron
+	ln -sf ../init.d/lldpd			/etc/rc.d/rc6.d/K09lldpd
 	ln -sf ../init.d/openvpn-rw		/etc/rc.d/rc6.d/K10openvpn-rw
 	ln -sf ../init.d/openvpn-n2n		/etc/rc.d/rc6.d/K11openvpn-n2n
 	ln -sf ../init.d/apache			/etc/rc.d/rc6.d/K28apache
diff --git a/src/initscripts/system/lldpd b/src/initscripts/system/lldpd
new file mode 100755
index 000000000..128115dbb
--- /dev/null
+++ b/src/initscripts/system/lldpd
@@ -0,0 +1,79 @@
+#!/bin/sh
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2007-2022  IPFire Team  <info@ipfire.org>                     #
+#                                                                             #
+# 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 3 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, see <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+###############################################################################
+
+. /etc/sysconfig/rc
+. ${rc_functions}
+
+# Read the configuration
+readhash CONFIG "/var/ipfire/lldp/settings"
+
+generate_config() {
+	# Set the description (if given)
+	if [ -n "${CONFIG["DESCRIPTION"]}" ]; then
+		echo "configure system description ${CONFIG["DESCRIPTION"]}"
+	fi
+
+	return 0
+}
+
+case "${1}" in
+	start)
+		# Do nothing if the service is not enabled
+		if [ "${CONFIG["ENABLED"]}" != "on" ]; then
+			exit 0
+		fi
+
+		# Generate the configuration file
+		if ! generate_config > /etc/lldpd.d/lldpd.conf; then
+			boot_mesg -n "Failed to generate configuration for lldpd" ${WARNING}
+			boot_mesg "" ${NORMAL}
+			exit 1
+		fi
+
+		boot_mesg "Starting Link-Layer Discovery Protocol Daemon..."
+		loadproc /usr/sbin/lldpd
+		;;
+
+	stop)
+		boot_mesg "Stopping Link-Layer Discovery Protocol Daemon..."
+		killproc /usr/sbin/lldpd
+		;;
+
+	reload)
+		boot_mesg "Reloading Link-Layer Discovery Protocol Daemoon..."
+		reloadproc /usr/sbin/lldpd
+		;;
+
+	restart)
+		${0} stop
+		sleep 1
+		${0} start
+		;;
+
+	status)
+		statusproc /usr/sbin/lldpd
+		;;
+
+	*)
+		echo "Usage: ${0} {start|stop|reload|restart|status}"
+		exit 1
+		;;
+esac
-- 
2.47.3



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/6] lldpd: New package
  2025-11-06 16:46 ` [PATCH 1/6] lldpd: New package Michael Tremer
@ 2025-11-06 21:45   ` Adolf Belka
  0 siblings, 0 replies; 8+ messages in thread
From: Adolf Belka @ 2025-11-06 21:45 UTC (permalink / raw)
  To: Michael Tremer; +Cc: IPFire: Development-List

Reviewed-by: Adolf Belka <adolf.belka@ipfire.org>

Hi Michael,

llpd has a configure option --disable-static to remove the .a file from the rootfile.

I am not sure if the doc and man files are doxygen based or not but if they are then there are also --disable-doxygen-doc and --disable-doxygen-man options, which would remove those from the rootfile also.

If you do edit the file then you could update the year for the LFS file from 2024 to 2025.

Regards,

Adolf.

On 06/11/2025 17:46, Michael Tremer wrote:
> Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
> ---
>   config/rootfiles/common/lldpd | 25 ++++++++++
>   lfs/lldpd                     | 87 +++++++++++++++++++++++++++++++++++
>   make.sh                       |  1 +
>   3 files changed, 113 insertions(+)
>   create mode 100644 config/rootfiles/common/lldpd
>   create mode 100644 lfs/lldpd
> 
> diff --git a/config/rootfiles/common/lldpd b/config/rootfiles/common/lldpd
> new file mode 100644
> index 000000000..7ead3d00b
> --- /dev/null
> +++ b/config/rootfiles/common/lldpd
> @@ -0,0 +1,25 @@
> +#etc/lldpd.d
> +#etc/lldpd.d/README.conf
> +#usr/include/lldp-const.h
> +#usr/include/lldpctl.h
> +#usr/include/lldpctl.hpp
> +#usr/lib/liblldpctl.a
> +#usr/lib/liblldpctl.la
> +#usr/lib/liblldpctl.so
> +usr/lib/liblldpctl.so.4
> +usr/lib/liblldpctl.so.4.10.0
> +#usr/lib/pkgconfig/lldpctl.pc
> +usr/sbin/lldpcli
> +usr/sbin/lldpctl
> +usr/sbin/lldpd
> +#usr/share/bash-completion/completions/lldpcli
> +#usr/share/doc/lldpd
> +#usr/share/doc/lldpd/CONTRIBUTE.md
> +#usr/share/doc/lldpd/ChangeLog
> +#usr/share/doc/lldpd/LICENSE
> +#usr/share/doc/lldpd/NEWS
> +#usr/share/doc/lldpd/README.md
> +#usr/share/man/man8/lldpcli.8
> +#usr/share/man/man8/lldpctl.8
> +#usr/share/man/man8/lldpd.8
> +#usr/share/zsh/site-functions/_lldpcli
> diff --git a/lfs/lldpd b/lfs/lldpd
> new file mode 100644
> index 000000000..30302e823
> --- /dev/null
> +++ b/lfs/lldpd
> @@ -0,0 +1,87 @@
> +###############################################################################
> +#                                                                             #
> +# IPFire.org - A linux based firewall                                         #
> +# Copyright (C) 2007-2024  IPFire Team  <info@ipfire.org>                     #
> +#                                                                             #
> +# 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 3 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, see <http://www.gnu.org/licenses/>.       #
> +#                                                                             #
> +###############################################################################
> +
> +###############################################################################
> +# Definitions
> +###############################################################################
> +
> +include Config
> +
> +VER        = 1.0.20
> +
> +THISAPP    = lldpd-$(VER)
> +DL_FILE    = $(THISAPP).tar.gz
> +DL_FROM    = $(URL_IPFIRE)
> +DIR_APP    = $(DIR_SRC)/$(THISAPP)
> +TARGET     = $(DIR_INFO)/$(THISAPP)
> +
> +###############################################################################
> +# Top-level Rules
> +###############################################################################
> +
> +objects = $(DL_FILE)
> +
> +$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
> +
> +$(DL_FILE)_BLAKE2 = 95743f28d9b3c8ad6f354f7def5f835d9b0668c151ad429dccfc7a249e29234a9ca1fda6b3bcc2890c424053b5adf2d4d9d7c0cb2887e97cc32b42577b91c63a
> +
> +install : $(TARGET)
> +
> +check : $(patsubst %,$(DIR_CHK)/%,$(objects))
> +
> +download :$(patsubst %,$(DIR_DL)/%,$(objects))
> +
> +b2 : $(subst %,%_BLAKE2,$(objects))
> +
> +dist:
> +	$(PAK)
> +
> +###############################################################################
> +# Downloading, checking, b2sum
> +###############################################################################
> +
> +$(patsubst %,$(DIR_CHK)/%,$(objects)) :
> +	@$(CHECK)
> +
> +$(patsubst %,$(DIR_DL)/%,$(objects)) :
> +	@$(LOAD)
> +
> +$(subst %,%_BLAKE2,$(objects)) :
> +	@$(B2SUM)
> +
> +###############################################################################
> +# Installation Details
> +###############################################################################
> +
> +$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
> +	@$(PREBUILD)
> +	@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
> +	cd $(DIR_APP) && ./configure \
> +		--prefix=/usr \
> +		--sysconfdir=/etc \
> +		--localstatedir=/var \
> +		--with-seccomp \
> +		--with-privsep-user=nobody \
> +		--with-privsep-group=nobody \
> +		--without-embedded-libevent
> +	cd $(DIR_APP) && make $(MAKETUNING)
> +	cd $(DIR_APP) && make install
> +	@rm -rf $(DIR_APP)
> +	@$(POSTBUILD)
> diff --git a/make.sh b/make.sh
> index b17e90e13..c542c8173 100755
> --- a/make.sh
> +++ b/make.sh
> @@ -2125,6 +2125,7 @@ build_system() {
>   	lfsmake2 fort-validator
>   	lfsmake2 arpwatch
>   	lfsmake2 suricata-reporter
> +	lfsmake2 lldpd
>   
>   	lfsmake2 linux
>   	lfsmake2 rtl8812au



^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2025-11-06 21:45 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-11-06 16:46 New Feature: LLDP Michael Tremer
2025-11-06 16:46 ` [PATCH 1/6] lldpd: New package Michael Tremer
2025-11-06 21:45   ` Adolf Belka
2025-11-06 16:46 ` [PATCH 2/6] misc-progs: Add lldpdctrl Michael Tremer
2025-11-06 16:46 ` [PATCH 3/6] cfgroot: Create /var/ipfire/lldp/settings Michael Tremer
2025-11-06 16:46 ` [PATCH 4/6] web-user-interface: Add lldp.cgi Michael Tremer
2025-11-06 16:46 ` [PATCH 5/6] web-user-interface: Add LLDP to the network menu Michael Tremer
2025-11-06 16:46 ` [PATCH 6/6] initscripts: Add an initscript for lldpd Michael Tremer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox