###############################################################################
name = lldpd
-version = 0.5.2
-release = 5
+version = 0.5.4
+release = 1
groups = Networking/Tools
url = https://trac.luffy.cx/lldpd/
summary = Utilities for the Link Layer Discovery Protocol.
description
- The LLDPD project aims to provide a comprehensive implementation of \
+ The LLDPD project aims to provide a comprehensive implementation of
the IEEE standard 802.1AB Link Layer Discovery Protocol.
end
requires
libxml2-devel
pkg-config
+ shadow-utils
zlib-devel
end
--with-xml \
--with-privsep-user=lldpd \
--with-privsep-group=lldpd
+
+ prepare_cmds
+ %{create_user}
+ end
+
+ install_cmds
+ # Create tmp directory.
+ mkdir -pv -m 700 %{BUILDROOT}/run/lldpd
+ chown -v lldpd.lldpd %{BUILDROOT}/run/lldpd
+ end
+end
+
+create_user
+ getent group lldpd >/dev/null || groupadd -r lldpd
+ getent passwd lldpd >/dev/null || \
+ useradd -r -g lldpd -d / -s /sbin/nologin lldpd
end
packages
package %{name}
+ prerequires = shadow-utils systemd-units
+
+ script prein
+ %{create_user}
+ end
+
+ script postin
+ /bin/systemctl daemon-reload >/dev/null 2>&1 || :
+ end
+
+ script preun
+ /bin/systemctl --no-reload disable lldpd.service >/dev/null 2>&1 || :
+ /bin/systemctl stop lldpd.service >/dev/null 2>&1 || :
+ end
+
+ script postun
+ /bin/systemctl daemon-reload >/dev/null 2>&1 || :
+ end
+
+ script postup
+ /bin/systemctl daemon-reload >/dev/null 2>&1 || :
+ /bin/systemctl try-restart lldpd.service >/dev/null 2>&1 || :
+ end
end
end
+++ /dev/null
-commit ae87586a12eaf4e8329b88f6e0c629e7b14f27bc
-Author: Michael Tremer <michael.tremer@ipfire.org>
-Date: Sat May 28 14:29:33 2011 +0200
-
- Add support to read /etc/os-release for system information.
-
- /etc/os-release is introduced with systemd which will be in all the
- major distributions, soon. For backwards-compatibility, the lsb_release
- method is still there and will be used if no /etc/os-release is available.
-
-diff --git a/src/lldpd.c b/src/lldpd.c
-index b19af11..1641f13 100644
---- a/src/lldpd.c
-+++ b/src/lldpd.c
-@@ -89,6 +89,7 @@ static void lldpd_decode(struct lldpd *, char *, int,
- static void lldpd_update_chassis(struct lldpd_chassis *,
- const struct lldpd_chassis *);
- static char *lldpd_get_lsb_release(void);
-+static char *lldpd_get_os_release(void);
- #ifdef ENABLE_LLDPMED
- static void lldpd_med(struct lldpd_chassis *);
- #endif
-@@ -553,6 +554,46 @@ lldpd_get_lsb_release() {
- return NULL;
- }
-
-+/* Same like lldpd_get_lsb_release but reads /etc/os-release for PRETTY_NAME=. */
-+static char *
-+lldpd_get_os_release() {
-+ static char release[1024];
-+
-+ FILE *fp = fopen("/etc/os-release", "r");
-+ if (!fp) {
-+ LLOG_WARN("Could not open /etc/os-release to read system information");
-+ return NULL;
-+ }
-+
-+ char line[1024];
-+ char *key, *val;
-+
-+ while ((fgets(line, 1024, fp) != NULL)) {
-+ key = strtok(line, "=");
-+ val = strtok(NULL, "=");
-+
-+ if (strncmp(key, "PRETTY_NAME", 1024) == 0) {
-+ strncpy(release, val, 1024);
-+ break;
-+ }
-+ }
-+ fclose(fp);
-+
-+ /* Remove trailing newline and all " in the string. */
-+ char *ptr1 = release;
-+ char *ptr2 = release;
-+ while (*ptr1 != 0) {
-+ if ((*ptr1 == '"') || (*ptr1 == '\n')) {
-+ ++ptr1;
-+ } else {
-+ *ptr2++ = *ptr1++;
-+ }
-+ }
-+ *ptr2 = 0;
-+
-+ return release;
-+}
-+
- int
- lldpd_callback_add(struct lldpd *cfg, int fd, void(*fn)(CALLBACK_SIG), void *data)
- {
-@@ -889,7 +930,7 @@ lldpd_update_localchassis(struct lldpd *cfg)
- fatal("failed to set full system description");
- } else {
- if (cfg->g_advertise_version) {
-- if (asprintf(&LOCAL_CHASSIS(cfg)->c_descr, "%s%s %s %s",
-+ if (asprintf(&LOCAL_CHASSIS(cfg)->c_descr, "%s %s %s %s",
- cfg->g_lsb_release?cfg->g_lsb_release:"",
- un.sysname, un.release, un.machine)
- == -1)
-@@ -1189,7 +1230,12 @@ lldpd_main(int argc, char *argv[])
- close(pid);
- }
-
-- lsb_release = lldpd_get_lsb_release();
-+ /* Try to read system information from /etc/os-release if possible.
-+ Fall back to lsb_release for compatibility. */
-+ lsb_release = lldpd_get_os_release();
-+ if (!lsb_release) {
-+ lsb_release = lldpd_get_lsb_release();
-+ }
-
- priv_init(PRIVSEP_CHROOT);
-