fff-macnock: new package

Fixes #68

Signed-off-by: Tim Niemeyer <tim@tn-x.org>
Acked-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
Reviewed-by: Robert Langhammer <rlanghammer@web.de>
This commit is contained in:
Tim Niemeyer 2018-06-10 14:05:58 +02:00
parent a7544befc5
commit 00767f92ad
4 changed files with 111 additions and 1 deletions

View File

@ -13,7 +13,7 @@ define Package/$(PKG_NAME)
CATEGORY:=Freifunk
TITLE:= Freifunk-Franken hoods
URL:=http://www.freifunk-franken.de
DEPENDS:=+fff-hoodutils
DEPENDS:=+fff-hoodutils +fff-macnock
endef
define Package/$(PKG_NAME)/description

View File

@ -0,0 +1,40 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=fff-macnock
PKG_VERSION:=0.1
PKG_RELEASE:=1
PKG_REV:=ffd1a64515709d75afaab0f990308fd164dc4cc6
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://github.com/FreifunkFranken/macnocker.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_VERSION:=$(PKG_REV)
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/cmake.mk
CMAKE_OPTIONS:=-DMACNOCK_DEBUG=ON
define Package/$(PKG_NAME)
SECTION:=base
CATEGORY:=Freifunk
TITLE:= Freifunk-Franken mac nocker
URL:=http://www.freifunk-franken.de
KCONFIG:= \
CONFIG_NET_EMATCH=y \
CONFIG_NET_EMATCH_U32=y \
CONFIG_NET_CLS_BASIC=y \
CONFIG_NET_CLS_ACT=y \
CONFIG_NET_ACT_GACT=y \
CONFIG_NET_CLS_U32=y
DEPENDS:=+fff-network
endef
define Package/$(PKG_NAME)/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/macnock $(1)/usr/sbin/macnock
$(CP) ./files/* $(1)/
endef
$(eval $(call BuildPackage,$(PKG_NAME)))

View File

@ -0,0 +1,64 @@
#!/bin/sh /etc/rc.common
START=99
USE_PROCD=1
PROCD_DEBUG=9
validate_hood_section() {
if [ -z "$(uci -q get network.ethmesh.ifname)" ]; then
# false
return 1
fi
if [ -n "$(uci -q get system.@system[0].hood)" -o -n "$(uci -q get network.mesh.macaddr)" ]; then
# true
return 0
fi
# false
return 1
}
service_triggers()
{
local script name
script=$(readlink -f "$initscript")
name=$(basename ${script:-$initscript})
procd_add_config_trigger "config.change" "system" /etc/init.d/$name reload
procd_add_interface_trigger "interface.*" "ethmesh" /etc/init.d/$name reload
procd_add_validation validate_hood_section
}
reload_service()
{
echo "Explicitly restarting macnocker"
stop
start
}
start_service() {
validate_hood_section || {
echo "validation failed"
return 1
}
local IFACE="$(uci -q get network.ethmesh.ifname)"
local HOOD="$(uci -q get system.@system[0].hood)"
if [ -z "$HOOD" ]; then
HOOD="$(uci -q get network.mesh.macaddr)"
fi
procd_open_instance macnock
procd_set_param command /usr/sbin/macnock $IFACE $HOOD
procd_set_param respawn 10 10 0
procd_set_param file /etc/config/system
procd_set_param netdev $IFACE
procd_set_param stdout 1
procd_set_param stderr 1
procd_set_param user root
procd_close_instance
}

View File

@ -0,0 +1,6 @@
#!/bin/sh
if ! grep -q u32 /etc/iproute2/ematch_map;
then
echo "3 u32" > /etc/iproute2/ematch_map
fi