[oe] [meta-networking][PATCH] lldpd: Add recipe

Joe MacDonald Joe_MacDonald at mentor.com
Tue Sep 15 18:04:55 UTC 2015


Hi Fabio,

[[oe] [meta-networking][PATCH] lldpd: Add recipe] On 15.09.15 (Tue 14:54) Fabio Berton wrote:

> From: Fabio Berton <fabio.berton at ossystems.com.br>
> 
> lldpd is a 802.1AB implementation, a L2 network discovery protocol.
> It also supports CDP, EDP and various other protocols.

I haven't looked at this in great detail yet, but it appears like it
would provide the same functionality as lldpad, already in
meta-networking:

commit 6781f9b5dc60bbd39727aeaa74c13dd31eb73838
Author: Qian Lei <qianl.fnst at cn.fujitsu.com>
Date:   Thu Dec 11 17:36:20 2014 +0800

    lldpad: Add new recipe
    
    LLDPAD contains the Linux user space daemon and configuration tool for
    Intel LLDP Agent with Enhanced Ethernet support for the Data Center.
    
    Signed-off-by: Qian Lei <qianl.fnst at cn.fujitsu.com>
    Signed-off-by: Martin Jansa <Martin.Jansa at gmail.com>

I've no objection to carrying two different implementations,
particularly if one is more complete than the other or if one is more
actively developed, but I do have a couple of requests for you given
that you're the second one on the scene.

   - Can we move your recipe to sit beside the other lldp daemon?  (That
     is, in recipes-daemons)

   - Can you update your recipe (and the other, if necessary) to provide
     an appropriate PROVIDES / CONFLICTS variable?

-J.

> 
> Signed-off-by: Fabio Berton <fabio.berton at ossystems.com.br>
> ---
>  .../recipes-connectivity/lldpd/files/lldpd.default |   2 +
>  .../recipes-connectivity/lldpd/files/lldpd.init.d  | 130 +++++++++++++++++++++
>  .../recipes-connectivity/lldpd/lldpd_0.7.15.bb     |  65 +++++++++++
>  3 files changed, 197 insertions(+)
>  create mode 100644 meta-networking/recipes-connectivity/lldpd/files/lldpd.default
>  create mode 100644 meta-networking/recipes-connectivity/lldpd/files/lldpd.init.d
>  create mode 100644 meta-networking/recipes-connectivity/lldpd/lldpd_0.7.15.bb
> 
> diff --git a/meta-networking/recipes-connectivity/lldpd/files/lldpd.default b/meta-networking/recipes-connectivity/lldpd/files/lldpd.default
> new file mode 100644
> index 0000000..3acacfd
> --- /dev/null
> +++ b/meta-networking/recipes-connectivity/lldpd/files/lldpd.default
> @@ -0,0 +1,2 @@
> +# Uncomment to start SNMP subagent and enable CDP, SONMP and EDP protocol
> +#DAEMON_ARGS="-x -c -s -e"
> diff --git a/meta-networking/recipes-connectivity/lldpd/files/lldpd.init.d b/meta-networking/recipes-connectivity/lldpd/files/lldpd.init.d
> new file mode 100644
> index 0000000..2d88d25
> --- /dev/null
> +++ b/meta-networking/recipes-connectivity/lldpd/files/lldpd.init.d
> @@ -0,0 +1,130 @@
> +#! /bin/sh
> +### BEGIN INIT INFO
> +# Provides:          lldpd
> +# Required-Start:    $remote_fs $network $syslog
> +# Required-Stop:     $network $remote_fs $syslog
> +# Default-Start:     2 3 4 5
> +# Default-Stop:      0 1 6
> +# Short-Description: LLDP daemon
> +# Description:       lldpd is a 802.1AB implementation, a L2 network
> +#                    discovery protocol. It also supports CDP, EDP and
> +#                    various other protocols.
> +### END INIT INFO
> +
> +# Do NOT "set -e"
> +
> +log_daemon_msg() {
> +    echo $*
> +}
> +
> +log_end_msg() {
> +    if [ $1 -eq 0 ]; then
> +        success $*
> +    else
> +        failure $*
> +    fi
> +}
> +
> +log_failure_msg() {
> +    echo $*
> +}
> +
> +log_success_msg() {
> +    echo $*
> +}
> +
> +
> +# PATH should only include /usr/* if it runs after the mountnfs.sh script
> +PATH=/sbin:/usr/sbin:/bin:/usr/bin
> +DESC="LLDP daemon"
> +NAME=lldpd
> +DAEMON=/usr/sbin/$NAME
> +DAEMON_ARGS=""
> +PIDFILE=/var/run/$NAME.pid
> +SCRIPTNAME=/etc/init.d/$NAME
> +CHROOT=/var/run/$NAME
> +
> +# Exit if the package is not installed
> +[ -x "$DAEMON" ] || exit 0
> +
> +# Read configuration variable file if it is present
> +[ -r /etc/default/$NAME ] && . /etc/default/$NAME
> +
> +# LSB log_* functions
> +. /etc/init.d/functions
> +
> +do_start()
> +{
> +	start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
> +		|| return 1
> +	start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
> +		$DAEMON_ARGS \
> +		|| return 2
> +}
> +
> +do_stop()
> +{
> +	start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
> +	RETVAL="$?"
> +	[ "$RETVAL" = 2 ] && return 2
> +	start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
> +	[ "$?" = 2 ] && return 2
> +	rm -f $PIDFILE
> +	return "$RETVAL"
> +}
> +
> +do_reload() {
> +	start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
> +	return 0
> +}
> +
> +case "$1" in
> +  start)
> +	[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
> +	do_start
> +	case "$?" in
> +		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
> +		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
> +	esac
> +	;;
> +  stop)
> +	[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
> +	do_stop
> +	case "$?" in
> +		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
> +		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
> +	esac
> +	;;
> +  reload)
> +	log_daemon_msg "Reloading $DESC" "$NAME"
> +	do_reload
> +	log_end_msg $?
> +	;;
> +  restart|force-reload)
> +	log_daemon_msg "Restarting $DESC" "$NAME"
> +	do_stop
> +	case "$?" in
> +	  0|1)
> +		do_start
> +		case "$?" in
> +			0) log_end_msg 0 ;;
> +			1) log_end_msg 1 ;; # Old process is still running
> +			*) log_end_msg 1 ;; # Failed to start
> +		esac
> +		;;
> +	  *)
> +	  	# Failed to stop
> +		log_end_msg 1
> +		;;
> +	esac
> +	;;
> +  status)
> +	status_of_proc $DAEMON $NAME -p $PIDFILE && exit 0 || exit $?
> +	;;
> +  *)
> +	echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload|status}" >&2
> +	exit 3
> +	;;
> +esac
> +
> +:
> diff --git a/meta-networking/recipes-connectivity/lldpd/lldpd_0.7.15.bb b/meta-networking/recipes-connectivity/lldpd/lldpd_0.7.15.bb
> new file mode 100644
> index 0000000..f68dae3
> --- /dev/null
> +++ b/meta-networking/recipes-connectivity/lldpd/lldpd_0.7.15.bb
> @@ -0,0 +1,65 @@
> +SUMMARY = "A 802.1ab implementation (LLDP) to help you locate neighbors of all your equipments"
> +SECTION = "net/misc"
> +LICENSE = "ISC"
> +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/ISC;md5=f3b90e78ea0cffb20bf5cca7947a896d"
> +
> +DEPENDS = "libbsd libevent"
> +
> +SRC_URI = "\
> +    http://media.luffy.cx/files/${PN}/${PN}-${PV}.tar.gz \
> +    file://lldpd.init.d \
> +    file://lldpd.default \
> +"
> +
> +SRC_URI[md5sum] = "46f7ad97fc1d04084ab11b32fc0ed708"
> +SRC_URI[sha256sum] = "c891d6d4480a6a890561ac43d8cc923bd027deb82a3999d65f37d96ca368c246"
> +
> +inherit autotools update-rc.d useradd systemd pkgconfig
> +
> +USERADD_PACKAGES = "${PN}"
> +USERADD_PARAM_${PN} = "--system -g lldpd --shell /bin/false lldpd"
> +GROUPADD_PARAM_${PN} = "--system lldpd"
> +
> +EXTRA_OECONF += "--without-embedded-libevent \
> +                 --disable-oldies \
> +                 --with-privsep-user=lldpd \
> +                 --with-privsep-group=lldpd"
> +
> +PACKAGECONFIG ??= "cdp fdp edp sonmp lldpmed dot1 dot3"
> +PACKAGECONFIG[json] = "--with-json,--without-json,jansson"
> +PACKAGECONFIG[xml] = "--with-xml,--without-xml,libxm2"
> +PACKAGECONFIG[snmp] = "--with-snmp,--without-snmp,net-snmp"
> +PACKAGECONFIG[readline] = "--with-readline,--without-readline,readline"
> +PACKAGECONFIG[seccomp] = "--with-seccomp,--without-seccomp,libseccomp"
> +PACKAGECONFIG[cdp] = "--enable-cdp,--disable-cdp"
> +PACKAGECONFIG[fdp] = "--enable-fdp,--disable-fdp"
> +PACKAGECONFIG[edp] = "--enable-edp,--disable-edp"
> +PACKAGECONFIG[sonmp] = "--enable-sonmp,--disable-sonmp"
> +PACKAGECONFIG[lldpmed] = "--enable-lldpmed,--disable-lldpmed"
> +PACKAGECONFIG[dot1] = "--enable-dot1,--disable-dot1"
> +PACKAGECONFIG[dot3] = "--enable-dot3,--disable-dot3"
> +PACKAGECONFIG[custom] = "--enable-custom,--disable-custom"
> +
> +INITSCRIPT_NAME = "lldpd"
> +INITSCRIPT_PARAMS = "defaults"
> +
> +SYSTEMD_SERVICE_${PN} = "lldpd.service"
> +
> +do_install_append() {
> +    install -Dm 0755 ${WORKDIR}/lldpd.init.d ${D}${sysconfdir}/init.d/lldpd
> +    install -Dm 0644 ${WORKDIR}/lldpd.default ${D}${sysconfdir}/default/lldpd
> +    # Make an empty configuration file
> +    touch ${D}${sysconfdir}/lldpd.conf
> +}
> +
> +PACKAGES =+ "${PN}-bash-completion ${PN}-zsh-completion"
> +
> +FILES_${PN} += "${datadir}/zsh ${libdir}/sysusers.d"
> +RDEPENDS_${PN} += "os-release"
> +
> +FILES_${PN}-bash-completion += "${sysconfdir}/bash_completion.d/"
> +RDEPENDS_${PN}-bash-completion += "bash"
> +
> +FILES_${PN}-zsh-completion += "${datadir}/zsh/vendor-completions/"
> +# FIXME: zsh is broken in meta-oe so this cannot be enabled for now
> +#RDEPENDS_${PN}-zsh-completion += "zsh"
> -- 
> 2.1.4
> 
-- 
-Joe MacDonald.
:wq
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: Digital signature
URL: <http://lists.openembedded.org/pipermail/openembedded-devel/attachments/20150915/da1e1466/attachment-0002.sig>


More information about the Openembedded-devel mailing list