From patchwork Sun Jun 10 12:05:58 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [v1,1/4] fff-macnock: new package From: Tim Niemeyer X-Patchwork-Id: 850 Message-Id: <20180610120601.21151-2-tim@tn-x.org> To: franken-dev@freifunk.net Date: Sun, 10 Jun 2018 14:05:58 +0200 Fixes #68 Signed-off-by: Tim Niemeyer Acked-by: Adrian Schmutzler Reviewed-by: Robert Langhammer --- Changes in v1: - change repo URL to FreifunkFranken Repo - macnock is started w/o hood (instead mac is used) - use quotes - add depends to fff-network src/packages/fff/fff-hoods/Makefile | 2 +- src/packages/fff/fff-macnock/Makefile | 40 ++++++++++++++ .../fff/fff-macnock/files/etc/init.d/macnock | 64 ++++++++++++++++++++++ .../files/etc/uci-defaults/52-fff-macnock | 6 ++ 4 files changed, 111 insertions(+), 1 deletion(-) create mode 100644 src/packages/fff/fff-macnock/Makefile create mode 100755 src/packages/fff/fff-macnock/files/etc/init.d/macnock create mode 100644 src/packages/fff/fff-macnock/files/etc/uci-defaults/52-fff-macnock diff --git a/src/packages/fff/fff-hoods/Makefile b/src/packages/fff/fff-hoods/Makefile index f36d268..b565ac7 100644 --- a/src/packages/fff/fff-hoods/Makefile +++ b/src/packages/fff/fff-hoods/Makefile @@ -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 diff --git a/src/packages/fff/fff-macnock/Makefile b/src/packages/fff/fff-macnock/Makefile new file mode 100644 index 0000000..359c45d --- /dev/null +++ b/src/packages/fff/fff-macnock/Makefile @@ -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))) diff --git a/src/packages/fff/fff-macnock/files/etc/init.d/macnock b/src/packages/fff/fff-macnock/files/etc/init.d/macnock new file mode 100755 index 0000000..41fc9f1 --- /dev/null +++ b/src/packages/fff/fff-macnock/files/etc/init.d/macnock @@ -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 +} diff --git a/src/packages/fff/fff-macnock/files/etc/uci-defaults/52-fff-macnock b/src/packages/fff/fff-macnock/files/etc/uci-defaults/52-fff-macnock new file mode 100644 index 0000000..5c0b788 --- /dev/null +++ b/src/packages/fff/fff-macnock/files/etc/uci-defaults/52-fff-macnock @@ -0,0 +1,6 @@ +#!/bin/sh + +if ! grep -q u32 /etc/iproute2/ematch_map; +then + echo "3 u32" > /etc/iproute2/ematch_map +fi