lldpd: update to v0.7.15 and add support for parsing /etc/openwrt_release

Also drop superseded patches.

Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>

SVN-Revision: 45810
This commit is contained in:
Jo-Philipp Wich 2015-05-28 16:19:38 +00:00
parent 7d44f7630f
commit 8df45565e9
4 changed files with 44 additions and 88 deletions

View File

@ -8,12 +8,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=lldpd
PKG_VERSION:=0.7.13
PKG_RELEASE:=2
PKG_VERSION:=0.7.15
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://media.luffy.cx/files/lldpd
PKG_MD5SUM:=13e8be761753eac9a8e12128acba40b4
PKG_MD5SUM:=46f7ad97fc1d04084ab11b32fc0ed708
PKG_MAINTAINER:=Jo-Philipp Wich <jow@openwrt.org>
PKG_LICENSE:=ISC
@ -92,6 +92,7 @@ CONFIGURE_ARGS += \
,--disable-privsep) \
--with-readline=no \
--with-embedded-libevent=no \
--disable-hardening \
$(if $(CONFIG_LLDPD_WITH_CDP),,--disable-cdp) \
$(if $(CONFIG_LLDPD_WITH_FDP),,--disable-fdp) \
$(if $(CONFIG_LLDPD_WITH_EDP),,--disable-edp) \
@ -99,7 +100,7 @@ CONFIGURE_ARGS += \
$(if $(CONFIG_LLDPD_WITH_DOT1),,--disable-dot1) \
$(if $(CONFIG_LLDPD_WITH_DOT3),,--disable-dot3) \
$(if $(CONFIG_LLDPD_WITH_SONMP),,--disable-sonmp) \
$(if $(CONFIG_LLDPD_WITH_JSON),--with-json=json-c)
$(if $(CONFIG_LLDPD_WITH_JSON),--with-json=json-c,--with-json=no)
$(eval $(call BuildPackage,lldpd))

View File

@ -1,73 +0,0 @@
From 28bf40220840c277d70ed66f6d58729ebb975de8 Mon Sep 17 00:00:00 2001
From: Vincent Bernat <vincent@bernat.im>
Date: Thu, 12 Feb 2015 08:07:43 +0100
Subject: [PATCH] priv: don't lookup for _lldpd when privsep is disabled
Closes #95
---
src/daemon/lldpd.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/src/daemon/lldpd.c b/src/daemon/lldpd.c
index f868fc7..6a3a160 100644
--- a/src/daemon/lldpd.c
+++ b/src/daemon/lldpd.c
@@ -1335,11 +1335,13 @@ lldpd_main(int argc, char *argv[], char *envp[])
int receiveonly = 0;
int ctl;
+#ifdef ENABLE_PRIVSEP
/* Non privileged user */
struct passwd *user;
struct group *group;
uid_t uid;
gid_t gid;
+#endif
saved_argv = argv;
@@ -1493,12 +1495,14 @@ lldpd_main(int argc, char *argv[], char *envp[])
log_debug("main", "lldpd starting...");
/* Grab uid and gid to use for priv sep */
+#ifdef ENABLE_PRIVSEP
if ((user = getpwnam(PRIVSEP_USER)) == NULL)
fatal("main", "no " PRIVSEP_USER " user for privilege separation");
uid = user->pw_uid;
if ((group = getgrnam(PRIVSEP_GROUP)) == NULL)
fatal("main", "no " PRIVSEP_GROUP " group for privilege separation");
gid = group->gr_gid;
+#endif
/* Create and setup socket */
int retry = 1;
@@ -1526,12 +1530,14 @@ lldpd_main(int argc, char *argv[], char *envp[])
log_warn("main", "unable to create control socket");
fatalx("giving up");
}
+#ifdef ENABLE_PRIVSEP
if (chown(ctlname, uid, gid) == -1)
log_warn("main", "unable to chown control socket");
if (chmod(ctlname,
S_IRUSR | S_IWUSR | S_IXUSR |
S_IRGRP | S_IWGRP | S_IXGRP) == -1)
log_warn("main", "unable to chmod control socket");
+#endif
/* Disable SIGPIPE */
signal(SIGPIPE, SIG_IGN);
@@ -1576,7 +1582,11 @@ lldpd_main(int argc, char *argv[], char *envp[])
}
log_debug("main", "initialize privilege separation");
+#ifdef ENABLE_PRIVSEP
priv_init(PRIVSEP_CHROOT, ctl, uid, gid);
+#else
+ priv_init(PRIVSEP_CHROOT, ctl, 0, 0);
+#endif
/* Initialization of global configuration */
if ((cfg = (struct lldpd *)
--
2.1.2

View File

@ -1,11 +0,0 @@
--- a/configure.ac
+++ b/configure.ac
@@ -75,8 +75,6 @@ AX_CFLAGS_GCC_OPTION([-Wformat-security]
AX_CFLAGS_GCC_OPTION([-Wfatal-errors])
AX_CFLAGS_GCC_OPTION([-Wcast-align])
AX_CFLAGS_GCC_OPTION([-Winline])
-AX_CFLAGS_GCC_OPTION([-fstack-protector])
-AX_CFLAGS_GCC_OPTION([-fstack-protector-strong])
AX_CFLAGS_GCC_OPTION([-fno-omit-frame-pointer])
AX_CFLAGS_GCC_OPTION([-D_FORTIFY_SOURCE=2])
AX_CFLAGS_GCC_OPTION([-Wno-unused-parameter])

View File

@ -0,0 +1,39 @@
Index: lldpd-0.7.15/src/daemon/lldpd.c
===================================================================
--- lldpd-0.7.15.orig/src/daemon/lldpd.c
+++ lldpd-0.7.15/src/daemon/lldpd.c
@@ -736,6 +736,10 @@ lldpd_get_os_release() {
fp = fopen("/usr/lib/os-release", "r");
}
if (!fp) {
+ log_debug("localchassis", "could not open /usr/lib/os-release");
+ fp = fopen("/etc/openwrt_release", "r");
+ }
+ if (!fp) {
log_info("localchassis",
"could not open either /etc/os-release or /usr/lib/os-release");
return NULL;
@@ -745,7 +749,8 @@ lldpd_get_os_release() {
key = strtok(line, "=");
val = strtok(NULL, "=");
- if (strncmp(key, "PRETTY_NAME", sizeof(line)) == 0) {
+ if (strncmp(key, "PRETTY_NAME", sizeof(line)) == 0 ||
+ strncmp(key, "DISTRIB_DESCRIPTION", sizeof(line)) == 0) {
strlcpy(release, val, sizeof(line));
break;
}
@@ -755,11 +760,11 @@ lldpd_get_os_release() {
/* Remove trailing newline and all " in the string. */
ptr1 = release + strlen(release) - 1;
while (ptr1 != release &&
- ((*ptr1 == '"') || (*ptr1 == '\n'))) {
+ ((*ptr1 == '"') || (*ptr1 == '\n') || (*ptr1 == '\''))) {
*ptr1 = '\0';
ptr1--;
}
- if (release[0] == '"')
+ if (release[0] == '"' || release[0] == '\'')
return release+1;
return release;
}