[RFC,v1,1/4] fff-macnock: new package

Submitted by Tim Niemeyer on April 3, 2018, 7:27 p.m.

Details

Message ID 20180403192749.28637-2-tim@tn-x.org
State Superseded
Headers show

Commit Message

Tim Niemeyer April 3, 2018, 7:27 p.m.
Fixes #68

Signed-off-by: Tim Niemeyer <tim@tn-x.org>
---

 src/packages/fff/fff-hoods/Makefile                |  2 +-
 src/packages/fff/fff-macnock/Makefile              | 39 +++++++++++++++++
 .../fff/fff-macnock/files/etc/init.d/macnock       | 49 ++++++++++++++++++++++
 .../files/etc/uci-defaults/52-fff-macnock          |  6 +++
 4 files changed, 95 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

Patch hide | download patch | download mbox

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..fb89155
--- /dev/null
+++ b/src/packages/fff/fff-macnock/Makefile
@@ -0,0 +1,39 @@ 
+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/RedDog99/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
+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..2bb34ed
--- /dev/null
+++ b/src/packages/fff/fff-macnock/files/etc/init.d/macnock
@@ -0,0 +1,49 @@ 
+#!/bin/sh /etc/rc.common
+
+START=99
+
+USE_PROCD=1
+PROCD_DEBUG=9
+
+validate_hood_section() {
+    test -n "$(uci -q get system.@system[0].hood)"
+}
+
+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)
+    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

Comments

Christian Dresel June 10, 2018, 7:10 a.m.
Hi

den Macnocker kann ich mir aufgrund mangelten C Kenntnisse nicht genauer
angucken, möchte aber anmerken das er bitte in Freifunk Franken Git
landen sollte.

Ansonsten, soweit das Ding das tut, was du immer wieder erklärt hast,
bin ich unbedingt dafür ihn mit einzubauen, möglichst noch vor dem Release.

mfg

Christian

On 03.04.2018 21:27, Tim Niemeyer wrote:
> Fixes #68
> 
> Signed-off-by: Tim Niemeyer <tim@tn-x.org>
> ---
> 
>  src/packages/fff/fff-hoods/Makefile                |  2 +-
>  src/packages/fff/fff-macnock/Makefile              | 39 +++++++++++++++++
>  .../fff/fff-macnock/files/etc/init.d/macnock       | 49 ++++++++++++++++++++++
>  .../files/etc/uci-defaults/52-fff-macnock          |  6 +++
>  4 files changed, 95 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..fb89155
> --- /dev/null
> +++ b/src/packages/fff/fff-macnock/Makefile
> @@ -0,0 +1,39 @@
> +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/RedDog99/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
> +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..2bb34ed
> --- /dev/null
> +++ b/src/packages/fff/fff-macnock/files/etc/init.d/macnock
> @@ -0,0 +1,49 @@
> +#!/bin/sh /etc/rc.common
> +
> +START=99
> +
> +USE_PROCD=1
> +PROCD_DEBUG=9
> +
> +validate_hood_section() {
> +    test -n "$(uci -q get system.@system[0].hood)"
> +}
> +
> +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)
> +    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
>