From patchwork Mon Oct 31 18:21:20 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [1/1] Temporarily added tunneldigger package as a fff package. From: Steffen Pankratz X-Patchwork-Id: 236 Message-Id: <20161031182120.16191-1-kratz00@gmx.de> To: franken-dev@freifunk.net Date: Mon, 31 Oct 2016 19:21:20 +0100 Because we want to test this tunneldigger version in order to move on with https://github.com/wlanslovenija/firmware-packages-opkg/pull/10 Signed-off-by: Steffen Pankratz Tested-by: Christian Dresel Tested-by: Robert Langhammer rlanghammer@web.de Reviewed-by: Jan Kraus --- buildscript | 7 +- src/packages/fff/tunneldigger/Makefile | 47 +++++++++++++ src/packages/fff/tunneldigger/files/config.default | 8 +++ .../fff/tunneldigger/files/tunneldigger.init | 80 ++++++++++++++++++++++ 4 files changed, 136 insertions(+), 6 deletions(-) create mode 100644 src/packages/fff/tunneldigger/Makefile create mode 100644 src/packages/fff/tunneldigger/files/config.default create mode 100755 src/packages/fff/tunneldigger/files/tunneldigger.init diff --git a/buildscript b/buildscript index 0205bd0..03c7d23 100755 --- a/buildscript +++ b/buildscript @@ -39,15 +39,10 @@ ROUTING=(routing e870c3373eea80df852d42fac3f40aaffd7a0f58) ROUTING_PKGS="alfred" -WLANSLOVENIJA=(wlanslovenija - https://github.com/wlanslovenija/firmware-packages-opkg - fec592e0540ef883bc8b27b77e7ff45d93ed3f24) -WLANSLOVENIJA_PKGS="tunneldigger" - FFF=(fff) FFF_PKGS="-a" -FEEDS=(OPENWRT ROUTING GLUON WLANSLOVENIJA FFF) +FEEDS=(OPENWRT ROUTING GLUON FFF) checkout_git(){ local DIRECTORY=$1 diff --git a/src/packages/fff/tunneldigger/Makefile b/src/packages/fff/tunneldigger/Makefile new file mode 100644 index 0000000..a8838f1 --- /dev/null +++ b/src/packages/fff/tunneldigger/Makefile @@ -0,0 +1,47 @@ +include $(TOPDIR)/rules.mk + +PKG_NAME:=tunneldigger +PKG_VERSION:=0.4.5 +PKG_RELEASE:=1 +PKG_REV:=0bae1419da12de64d1c7571c5f6649d39d682052 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 +PKG_SOURCE_URL:=git://github.com/wlanslovenija/tunneldigger.git +PKG_SOURCE_PROTO:=git +PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) +PKG_SOURCE_VERSION:=$(PKG_REV) + +include $(INCLUDE_DIR)/package.mk + +define Package/tunneldigger + SECTION:=net + CATEGORY:=Network + DEPENDS:=+libnl-tiny +kmod-l2tp +kmod-l2tp-ip +kmod-l2tp-eth +librt +libpthread + TITLE:=tunneldigger +endef + +TARGET_CFLAGS += \ + -I$(STAGING_DIR)/usr/include/libnl-tiny \ + -I$(STAGING_DIR)/usr/include \ + -DLIBNL_TINY + +define Build/Prepare + $(call Build/Prepare/Default) + mv $(PKG_BUILD_DIR)/client/* $(PKG_BUILD_DIR) + sed -i s/-lnl/-lnl-tiny/g $(PKG_BUILD_DIR)/Makefile +endef + +define Package/tunneldigger/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/l2tp_client $(1)/usr/bin/tunneldigger + $(INSTALL_DIR) $(1)/etc/init.d + $(INSTALL_BIN) ./files/tunneldigger.init $(1)/etc/init.d/tunneldigger + $(INSTALL_DIR) $(1)/etc/config + $(INSTALL_DATA) ./files/config.default $(1)/etc/config/tunneldigger +endef + +define Package/tunneldigger/conffiles +/etc/config/tunneldigger +endef + +$(eval $(call BuildPackage,tunneldigger)) diff --git a/src/packages/fff/tunneldigger/files/config.default b/src/packages/fff/tunneldigger/files/config.default new file mode 100644 index 0000000..571621a --- /dev/null +++ b/src/packages/fff/tunneldigger/files/config.default @@ -0,0 +1,8 @@ +config broker + list address 'x.y.z.w:8942' + list address 'x.y.z.w:53' + list address 'x.y.z.w:123' + option uuid 'abcd' + option interface 'l2tp0' + option limit_bw_down '1024' + option enabled '0' diff --git a/src/packages/fff/tunneldigger/files/tunneldigger.init b/src/packages/fff/tunneldigger/files/tunneldigger.init new file mode 100755 index 0000000..875ecba --- /dev/null +++ b/src/packages/fff/tunneldigger/files/tunneldigger.init @@ -0,0 +1,80 @@ +#!/bin/sh /etc/rc.common + +. $IPKG_INSTROOT/lib/functions/network.sh + +START=90 + +PIDPATH=/var/run +tunnel_id=1 + +missing() { + echo "Not starting tunneldigger - missing $1" >&2 +} + +config_cb() { + local cfg="$CONFIG_SECTION" + config_get configname "$cfg" TYPE + case "$configname" in + broker) + config_get_bool enabled "$cfg" enabled 1 + config_get addresses "$cfg" address + config_get uuid "$cfg" uuid + config_get interface "$cfg" interface + config_get limit_bw_down "$cfg" limit_bw_down + config_get hook_script "$cfg" hook_script + config_get bind_interface "$cfg" bind_interface + + [ $enabled -eq 0 ] && return + + local broker_opts="" + for address in $addresses; do + append broker_opts "-b ${address}" + done + + [ ! -z "${limit_bw_down}" ] && append broker_opts "-L ${limit_bw_down}" + [ ! -z "${hook_script}" ] && append broker_opts "-s ${hook_script}" + [ ! -z "${bind_interface}" ] && { + # Resolve logical interface name. + unset _bind_interface + network_get_device _bind_interface "${bind_interface}" || _bind_interface="${bind_interface}" + append broker_opts "-I ${_bind_interface}" + } + + if [ -z "$uuid" ]; then + missing uuid + return + elif [ -z "$interface" ]; then + missing interface + return + fi + + echo "Starting tunneldigger on ${interface}" + /sbin/start-stop-daemon -S -q -b -m -p ${PIDPATH}/tunneldigger.${interface}.pid -x /usr/bin/tunneldigger -- -u ${uuid} -i ${interface} -t ${tunnel_id} ${broker_opts} + + let tunnel_id++ + ;; + esac +} + +start() { + config_load tunneldigger +} + +stop() { + for PIDFILE in `find ${PIDPATH}/ -name "tunneldigger\.*\.pid"`; do + PID="$(cat ${PIDFILE})" + IFACE="$(echo ${PIDFILE} | awk -F\/tunneldigger '{print $2}' | cut -d'.' -f2)" + echo "Stopping tunneldigger for interface ${IFACE}" + start-stop-daemon -K -q -p $PIDFILE + while test -d "/proc/${PID}"; do + echo " waiting for tunneldigger to stop" + sleep 1 + done + echo " tunneldigger stopped" + done +} + +restart() { + stop + start +}