[Buildroot] [PATCH v2] igd2-for-linux: new package
Romain Naour
romain.naour at gmail.com
Mon Jul 18 21:44:46 UTC 2016
Hi Fabrice,
Thanks for this new version.
Le 18/07/2016 à 17:30, Fabrice Fontaine a écrit :
> This is The Linux UPnP Internet Gateway Device 2. It is
> modified from the original Linux UPnP Internet Gateway Device
> [http://linux-igd.sourceforge.net/] according to UPnP
> InternetGatewayDevice:2 specifications.
>
> It implements the UPnP Internet Gateway Device version 2
> specification (IGDv2) and allows UPnP aware clients, such as
> MSN Messenger, Azureus or Miranda to work properly from behind
> a NAT firewall.
>
> Please edit /etc/upnpd.conf before using upnpd!
>
> https://github.com/ffontaine/igd2-for-linux
>
> Signed-off-by: Fabrice Fontaine <fabrice.fontaine at orange.com>
> ---
> Changes v1 -> v2 (after review of Romain Naour):
> - Do not use HAVE_LIBIPTC as it doesn't work with musl toolchain due to
> mixed userspace and kernel headers and some undeclared
> IPPROTO_TCP/IPPROTO_UDP variables. libiptc is not a public and stable
> API for iptables:
> http://www.netfilter.org/documentation/FAQ/netfilter-faq-4.html
Indeed, the build for musl toolchain is "fixed".
>
> package/Config.in | 1 +
> package/igd2-for-linux/Config.in | 25 ++++++++++++++
> package/igd2-for-linux/S99upnpd | 42 +++++++++++++++++++++++
> package/igd2-for-linux/igd2-for-linux.hash | 2 ++
> package/igd2-for-linux/igd2-for-linux.mk | 53 ++++++++++++++++++++++++++++++
> package/igd2-for-linux/upnpd.service | 12 +++++++
> 6 files changed, 135 insertions(+)
> create mode 100644 package/igd2-for-linux/Config.in
> create mode 100644 package/igd2-for-linux/S99upnpd
> create mode 100644 package/igd2-for-linux/igd2-for-linux.hash
> create mode 100644 package/igd2-for-linux/igd2-for-linux.mk
> create mode 100644 package/igd2-for-linux/upnpd.service
>
> diff --git a/package/Config.in b/package/Config.in
> index f86e1ef..8062437 100644
> --- a/package/Config.in
> +++ b/package/Config.in
> @@ -1443,6 +1443,7 @@ menu "Networking applications"
> source "package/ifplugd/Config.in"
> source "package/iftop/Config.in"
> source "package/ifupdown/Config.in"
> + source "package/igd2-for-linux/Config.in"
> source "package/igh-ethercat/Config.in"
> source "package/igmpproxy/Config.in"
> source "package/inadyn/Config.in"
> diff --git a/package/igd2-for-linux/Config.in b/package/igd2-for-linux/Config.in
> new file mode 100644
> index 0000000..9022536
> --- /dev/null
> +++ b/package/igd2-for-linux/Config.in
> @@ -0,0 +1,25 @@
> +config BR2_PACKAGE_IGD2_FOR_LINUX
> + bool "igd2-for-linux"
> + depends on BR2_USE_MMU # fork()
> + depends on BR2_TOOLCHAIN_HAS_THREADS
> + depends on BR2_USE_WCHAR
> + select BR2_PACKAGE_IPTABLES # runtime
> + select BR2_PACKAGE_LIBUPNP
> + help
> + This is The Linux UPnP Internet Gateway Device 2. It is
> + modified from the original Linux UPnP Internet Gateway Device
> + [http://linux-igd.sourceforge.net/] according to UPnP
> + InternetGatewayDevice:2 specifications.
> +
> + It implements the UPnP Internet Gateway Device version 2
> + specification (IGDv2) and allows UPnP aware clients, such as
> + MSN Messenger, Azureus or Miranda to work properly from behind
> + a NAT firewall.
> +
> + Please edit /etc/upnpd.conf before using upnpd!
> +
> + https://github.com/ffontaine/igd2-for-linux
> +
> +comment "igd2-for-linux needs a toolchain w/ threads and wchar"
> + depends on BR2_USE_MMU
> + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR
> diff --git a/package/igd2-for-linux/S99upnpd b/package/igd2-for-linux/S99upnpd
> new file mode 100644
> index 0000000..3a5b20a
> --- /dev/null
> +++ b/package/igd2-for-linux/S99upnpd
> @@ -0,0 +1,42 @@
> +#!/bin/sh
> +
> +NAME=upnpd
> +PIDFILE=/var/run/$NAME.pid
> +DAEMON=/usr/sbin/$NAME
> +LAN=eth0
> +WAN=eth0
> +DAEMON_ARGS="-f $WAN $LAN"
> +
> +start() {
> + printf "Starting $NAME: "
> + route add -net 239.0.0.0 netmask 255.0.0.0 $LAN
> + start-stop-daemon -S -q -m -b -p $PIDFILE --exec $DAEMON -- $DAEMON_ARGS
> + [ $? = 0 ] && echo "OK" || echo "FAIL"
> +}
> +stop() {
> + printf "Stopping $NAME: "
> + start-stop-daemon -K -q -p $PIDFILE
> + route del -net 239.0.0.0 netmask 255.0.0.0 $LAN
> + [ $? = 0 ] && echo "OK" || echo "FAIL"
> +}
> +restart() {
> + stop
> + start
> +}
> +
> +case "$1" in
> + start)
> + start
> + ;;
> + stop)
> + stop
> + ;;
> + restart|reload)
> + restart
> + ;;
> + *)
> + echo "Usage: $0 {start|stop|restart|reload}"
> + exit 1
> +esac
> +
> +exit $?
> diff --git a/package/igd2-for-linux/igd2-for-linux.hash b/package/igd2-for-linux/igd2-for-linux.hash
> new file mode 100644
> index 0000000..a46fe5f
> --- /dev/null
> +++ b/package/igd2-for-linux/igd2-for-linux.hash
> @@ -0,0 +1,2 @@
> +# Locally computed:
> +sha256 a8edc4c14aa104dcffa79d1f3057b8b9c5cef0f8f43901f61e306120a4efe01f igd2-for-linux-v1.1.tar.gz
> diff --git a/package/igd2-for-linux/igd2-for-linux.mk b/package/igd2-for-linux/igd2-for-linux.mk
> new file mode 100644
> index 0000000..2e4d987
> --- /dev/null
> +++ b/package/igd2-for-linux/igd2-for-linux.mk
> @@ -0,0 +1,53 @@
> +################################################################################
> +#
> +# igd2-for-linux
> +#
> +################################################################################
> +
> +IGD2_FOR_LINUX_VERSION = v1.1
> +IGD2_FOR_LINUX_SITE = \
> + $(call github,ffontaine,igd2-for-linux,$(IGD2_FOR_LINUX_VERSION))
> +
> +IGD2_FOR_LINUX_LICENSE = GPLv2
> +IGD2_FOR_LINUX_LICENSE_FILES = linuxigd2/doc/LICENSE
> +
> +IGD2_FOR_LINUX_DEPENDENCIES = iptables libupnp
Since iptables is a runtime dependency, it should be removed from
IGD2_FOR_LINUX_DEPENDENCIES
> +
> +IGD2_FOR_LINUX_BUILD_DIR = $(@D)/linuxigd2
> +
> +define IGD2_FOR_LINUX_BUILD_CMDS
> + $(TARGET_MAKE_ENV) $(MAKE) -C $(IGD2_FOR_LINUX_BUILD_DIR) \
> + $(TARGET_CONFIGURE_OPTS) \
> + CFLAGS="$(TARGET_CFLAGS)" \
> + BINDIR="/usr/sbin" \
> + MANDIR="/usr/man" \
It seems you missed some comments on the previous review.
http://lists.busybox.net/pipermail/buildroot/2016-July/167777.html
> + LIBUPNP_PREFIX="$(STAGING_DIR)/usr" \
> + all
> +endef
> +
> +define IGD2_FOR_LINUX_INSTALL_TARGET_CMDS
> + $(INSTALL) -m 0755 $(IGD2_FOR_LINUX_BUILD_DIR)/bin/upnpd \
> + $(TARGET_DIR)/usr/sbin/
same here
Best regards,
Romain
> + $(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/linuxigd
> + $(INSTALL) -m 0644 $(IGD2_FOR_LINUX_BUILD_DIR)/configs/*.png \
> + $(TARGET_DIR)/etc/linuxigd/
> + $(INSTALL) -m 0644 $(IGD2_FOR_LINUX_BUILD_DIR)/configs/*.xml \
> + $(TARGET_DIR)/etc/linuxigd/
> + $(INSTALL) -m 0644 $(IGD2_FOR_LINUX_BUILD_DIR)/configs/upnpd.conf \
> + $(TARGET_DIR)/etc/
> +endef
> +
> +define IGD2_FOR_LINUX_INSTALL_INIT_SYSV
> + $(INSTALL) -D -m 0755 package/igd2-for-linux/S99upnpd \
> + $(TARGET_DIR)/etc/init.d/S99upnpd
> +endef
> +
> +define IGD2_FOR_LINUX_INSTALL_INIT_SYSTEMD
> + $(INSTALL) -D -m 0644 package/domoticz/upnpd.service \
> + $(TARGET_DIR)/usr/lib/systemd/system/upnpd.service
> + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants
> + ln -sf ../../../../usr/lib/systemd/system/upnpd.service \
> + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/upnpd.service
> +endef
> +
> +$(eval $(generic-package))
> diff --git a/package/igd2-for-linux/upnpd.service b/package/igd2-for-linux/upnpd.service
> new file mode 100644
> index 0000000..479f5b2
> --- /dev/null
> +++ b/package/igd2-for-linux/upnpd.service
> @@ -0,0 +1,12 @@
> +[Unit]
> +Description=UPnP Internet Gateway Device version 2 daemon
> +After=network.target
> +
> +[Service]
> +ExecStartPre=/sbin/route add -net 239.0.0.0 netmask 255.0.0.0 eth0
> +ExecStart=/usr/sbin/upnpd -f eth0 eth0
> +Restart=always
> +ExecStopPost=/sbin/route del -net 239.0.0.0 netmask 255.0.0.0 eth0
> +
> +[Install]
> +WantedBy=multi-user.target
>
More information about the buildroot
mailing list