lldpd: move to trunk and add myself as maintainer
authorJo-Philipp Wich <jow@openwrt.org>
Wed, 10 Oct 2012 13:17:14 +0000 (13:17 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Wed, 10 Oct 2012 13:17:14 +0000 (13:17 +0000)
SVN-Revision: 33700

package/network/services/lldpd/Makefile [new file with mode: 0644]
package/network/services/lldpd/files/lldpd.config [new file with mode: 0644]
package/network/services/lldpd/files/lldpd.init [new file with mode: 0644]
package/network/services/lldpd/patches/001-no-multiuser.patch [new file with mode: 0644]
package/network/services/lldpd/patches/002-no-stack-protector.patch [new file with mode: 0644]

diff --git a/package/network/services/lldpd/Makefile b/package/network/services/lldpd/Makefile
new file mode 100644 (file)
index 0000000..0e62e35
--- /dev/null
@@ -0,0 +1,56 @@
+#
+# Copyright (C) 2008-2012 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=lldpd
+PKG_VERSION:=0.6.0
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://media.luffy.cx/files/lldpd
+PKG_MD5SUM:=77279577e3b6d85a33dc0afe7c960b27
+
+PKG_MAINTAINER:=Jo-Philipp Wich <jow@openwrt.org>
+
+PKG_FIXUP:=autoreconf
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/lldpd
+  SECTION:=net
+  CATEGORY:=Network
+  SUBMENU:=Routing and Redirection
+  TITLE:=Link Layer Discovery Protocol daemon
+  URL:=https://github.com/vincentbernat/lldpd/wiki
+  DEPENDS:=+libevent2
+endef
+
+define Package/lldpd/description
+       LLDP (Link Layer Discovery Protocol) is an industry standard protocol designed
+       to supplant proprietary Link-Layer protocols such as
+       Extreme's EDP (Extreme Discovery Protocol) and
+       CDP (Cisco Discovery Protocol).
+       The goal of LLDP is to provide an inter-vendor compatible mechanism to deliver
+       Link-Layer notifications to adjacent network devices.
+endef
+
+define Package/lldpd/install
+       $(INSTALL_DIR) $(1)/etc/init.d
+       $(INSTALL_DIR) $(1)/etc/config
+       $(INSTALL_DIR) $(1)/usr/sbin
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/lldp{ctl,d} $(1)/usr/sbin/
+       $(INSTALL_BIN) ./files/lldpd.init $(1)/etc/init.d/lldpd
+       $(INSTALL_DATA) ./files/lldpd.config $(1)/etc/config/lldpd
+endef
+
+define Package/lldpd/conffiles
+/etc/config/lldpd
+endef
+
+$(eval $(call BuildPackage,lldpd))
diff --git a/package/network/services/lldpd/files/lldpd.config b/package/network/services/lldpd/files/lldpd.config
new file mode 100644 (file)
index 0000000..14ba02f
--- /dev/null
@@ -0,0 +1,8 @@
+config lldpd config
+       option enable_cdp 1
+       option enable_fdp 1
+       option enable_sonmp 1
+       option enable_edp 1
+       
+       option lldp_class 4
+       option lldp_location "2:FR:6:Commercial Rd:3:Roseville:19:4"
diff --git a/package/network/services/lldpd/files/lldpd.init b/package/network/services/lldpd/files/lldpd.init
new file mode 100644 (file)
index 0000000..5d34283
--- /dev/null
@@ -0,0 +1,40 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2008-2012 OpenWrt.org
+
+START=90
+
+SERVICE_USE_PID=1
+
+start() {
+       local enable_cdp
+       local enable_fdp
+       local enable_sonmp
+       local enable_edp
+       local lldp_class
+       local lldp_location
+
+       config_load 'lldpd'
+       config_get_bool enable_cdp 'config' 'enable_cdp' 0
+       config_get_bool enable_fdp 'config' 'enable_fdp' 0
+       config_get_bool enable_sonmp 'config' 'enable_sonmp' 0
+       config_get_bool enable_edp 'config' 'enable_edp' 0
+       config_get lldp_class 'config' 'lldp_class'
+       config_get lldp_location 'config' 'lldp_location'
+
+       [ $enable_cdp -gt 0 ] && append args '-c'
+       [ $enable_fdp -gt 0 ] && append args '-f'
+       [ $enable_sonmp -gt 0 ] && append args '-s'
+       [ $enable_edp -gt 0 ] && append args '-e'
+
+       service_start /usr/sbin/lldpd $args \
+               ${lldp_class:+ -M $lldp_class}
+
+       [ -n "$lldp_location" ] && {
+               sleep 1
+               /usr/sbin/lldpctl -L "$lldp_location" > /dev/null 2>&1
+       }
+}
+
+stop() {
+       service_stop /usr/sbin/lldpd
+}
diff --git a/package/network/services/lldpd/patches/001-no-multiuser.patch b/package/network/services/lldpd/patches/001-no-multiuser.patch
new file mode 100644 (file)
index 0000000..5f216c4
--- /dev/null
@@ -0,0 +1,40 @@
+--- a/src/priv.c
++++ b/src/priv.c
+@@ -518,12 +518,14 @@ priv_init(char *chrootdir)
+               fatal("[priv]: unable to create socket pair for privilege separation");
+       /* Get users */
++      /*
+       if ((user = getpwnam(PRIVSEP_USER)) == NULL)
+               fatal("[priv]: no " PRIVSEP_USER " user for privilege separation");
+       uid = user->pw_uid;
+       if ((group = getgrnam(PRIVSEP_GROUP)) == NULL)
+               fatal("[priv]: no " PRIVSEP_GROUP " group for privilege separation");
+       gid = group->gr_gid;
++      */
+       /* Spawn off monitor */
+       if ((monitored = fork()) < 0)
+@@ -534,17 +536,17 @@ priv_init(char *chrootdir)
+               if (RUNNING_ON_VALGRIND)
+                       LLOG_WARNX("[priv]: running on valgrind, keep privileges");
+               else {
+-                      if (chroot(chrootdir) == -1)
+-                              fatal("[priv]: unable to chroot");
+-                      if (chdir("/") != 0)
++                      /*if (chroot(chrootdir) == -1)
++                              fatal("[priv]: unable to chroot");*/
++                      if (chdir("/tmp") != 0)
+                               fatal("[priv]: unable to chdir");
+                       gidset[0] = gid;
+-                      if (setresgid(gid, gid, gid) == -1)
++                      /*if (setresgid(gid, gid, gid) == -1)
+                               fatal("[priv]: setresgid() failed");
+                       if (setgroups(1, gidset) == -1)
+                               fatal("[priv]: setgroups() failed");
+                       if (setresuid(uid, uid, uid) == -1)
+-                              fatal("[priv]: setresuid() failed");
++                              fatal("[priv]: setresuid() failed");*/
+               }
+               remote = pair[0];
+               close(pair[1]);
diff --git a/package/network/services/lldpd/patches/002-no-stack-protector.patch b/package/network/services/lldpd/patches/002-no-stack-protector.patch
new file mode 100644 (file)
index 0000000..0a0c6fb
--- /dev/null
@@ -0,0 +1,10 @@
+--- a/configure.ac
++++ b/configure.ac
+@@ -48,7 +48,6 @@ AX_CFLAGS_GCC_OPTION([-Wformat])
+ AX_CFLAGS_GCC_OPTION([-Wformat-security])
+ AX_CFLAGS_GCC_OPTION([-Wcast-align])
+ AX_CFLAGS_GCC_OPTION([-Winline])
+-AX_CFLAGS_GCC_OPTION([-fstack-protector])
+ AX_CFLAGS_GCC_OPTION([-D_FORTIFY_SOURCE=2])
+ AX_CFLAGS_GCC_OPTION([-Wdeclaration-after-statement])
+ AX_CFLAGS_GCC_OPTION([-Wno-unused-parameter])