]> git.99rst.org Git - openwrt-packages.git/commitdiff
mesh11sd: add new package
authorJosef Schlehofer <redacted>
Thu, 6 Aug 2026 12:35:02 +0000 (14:35 +0200)
committerJosef Schlehofer <redacted>
Tue, 18 Aug 2026 06:40:07 +0000 (08:40 +0200)
Mesh11sd autonomously manages all aspects of an 802.11s mesh
network, with dynamic mesh parameters across all nodes and point to
multi-point vxlan tunneling.

Moved from the openwrt/routing feed, as discussed in
https://github.com/openwrt/routing/issues/184.

Carries three backports on top of the routing feed's copy, all from
the 7.2.0 development cycle and all pointed out by upstream:

443cdb4c handles the informational options before get_current_setup()
  runs. The setup pass waits for br-lan through wait_for_interface(),
  so on a host without that bridge "mesh11sd -v" took the full
  interface_timeout, ten seconds by default. That is invisible on a
  running router and fatal in the package CI, which kills each version
  probe after ten seconds.
9d18091f makes the script header agree with the LICENSE file the
  project ships. It claimed GPL version 3 or later while the file is
  GPL version 2, so PKG_LICENSE follows it to GPL-2.0-or-later.
d0db5353 fixes a typo in get_current_setup(): the length came from
  $apmon_cgi_dir, which is never set, so strlen was always 0 and the
  trailing slash check read the wrong character.

The submenu is Mesh rather than the Network top level the feed copy
used; the other mesh packages follow once the move from the routing
feed is complete.

Signed-off-by: Josef Schlehofer <redacted>
net/mesh11sd/Makefile [new file with mode: 0644]
net/mesh11sd/patches/100-do-not-run-get_current_setup-until-after-version-argument.patch [new file with mode: 0644]
net/mesh11sd/patches/101-fix-licence-discrepancy.patch [new file with mode: 0644]
net/mesh11sd/patches/102-fix-typo-in-get_current_setup-apmond_cgi_dir.patch [new file with mode: 0644]

diff --git a/net/mesh11sd/Makefile b/net/mesh11sd/Makefile
new file mode 100644 (file)
index 0000000..2b10b51
--- /dev/null
@@ -0,0 +1,60 @@
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# Copyright (C) 2022 - 2026 BlueWave Projects and Services  <licence@blue-wave.net>
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=mesh11sd
+PKG_VERSION:=6.2.1
+PKG_RELEASE:=2
+
+PKG_MAINTAINER:=Rob White <rob@blue-wave.net>
+PKG_LICENSE:=GPL-2.0-or-later
+PKG_LICENSE_FILES:=LICENSE
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/opennds/mesh11sd/tar.gz/v$(PKG_VERSION)?
+PKG_HASH:=8ee36f12873a4648edc0ba5ac991a93ae79c6cd48940d9b7e999bb845cf78471
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/mesh11sd
+  SUBMENU:=Mesh
+  SECTION:=net
+  CATEGORY:=Network
+  TITLE:=Dynamic 802.11s Mesh Management Daemon
+  PKGARCH:=all
+  URL:=https://github.com/opennds/mesh11sd
+endef
+
+define Package/mesh11sd/description
+  Mesh11sd autonomously manages all aspects of an 802.11s mesh network.
+  It acts as a service daemon.
+  Mesh parameters are dynamically set across all nodes.
+  Point to multi-point vxlan tunneling is provided by default.
+  Custom vlan trunking over the vxlan tunnel is fully supported.
+  Cabled sections of backhaul are fully supported.
+  Access Point usage data is collected in a central database.
+  A command line interface is provided for many functions.
+  An optional Customer/Client Premises Equipment (CPE) mode is provided
+  CPE mode greatly simplifies rollout of community WISP projects.
+endef
+
+define Package/mesh11sd/install
+       $(INSTALL_DIR) $(1)/usr/sbin
+       $(INSTALL_DIR) $(1)/etc/config
+       $(INSTALL_DIR) $(1)/etc/init.d
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/mesh11sd $(1)/usr/sbin
+       $(INSTALL_CONF) $(PKG_BUILD_DIR)/linux_openwrt/mesh11sd/files/etc/config/mesh11sd $(1)/etc/config/
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/linux_openwrt/mesh11sd/files/etc/init.d/mesh11sd $(1)/etc/init.d/
+endef
+
+define Package/mesh11sd/conffiles
+/etc/config/mesh11sd
+endef
+
+define Build/Compile
+endef
+
+$(eval $(call BuildPackage,mesh11sd))
diff --git a/net/mesh11sd/patches/100-do-not-run-get_current_setup-until-after-version-argument.patch b/net/mesh11sd/patches/100-do-not-run-get_current_setup-until-after-version-argument.patch
new file mode 100644 (file)
index 0000000..6fb80fd
--- /dev/null
@@ -0,0 +1,51 @@
+From 443cdb4c9f0ca20466f6ae31a81047bfeb95825c Mon Sep 17 00:00:00 2001
+From: Rob White <rob@blue-wave.net>
+Date: Thu, 6 Aug 2026 21:57:14 +0000
+Subject: [PATCH] Fix - do not run get_current_setup until after version
+ argument
+
+get_current_setup() runs before any argument is parsed, so mesh11sd -v
+and mesh11sd -h collect the whole runtime environment first. That
+includes refresh_bridgemac(), which calls wait_for_interface() for
+br-lan; when that interface is not up, the poll loop runs for the full
+interface_timeout, ten seconds by default.
+
+On a running router br-lan is up, the loop exits on its first iteration
+and the delay is invisible. It shows up wherever the interface is absent
+or still coming up, such as the OpenWrt package CI, which probes every
+installed executable for its version with a ten second timeout.
+
+Handle the informational options first and exit, then run the setup for
+the options that need it.
+
+Upstream-Status: Backport [https://github.com/openNDS/mesh11sd/commit/443cdb4c9f0ca20466f6ae31a81047bfeb95825c]
+---
+--- a/src/mesh11sd
++++ b/src/mesh11sd
+@@ -5976,8 +5976,6 @@ else
+       mesh11sdpid=$(pgrep -f "/bin/sh /usr/sbin/mesh11sd")
+ fi
+-get_current_setup 2> /dev/null
+-
+ if [ -z "$1" ] || [ "$1" = "-h" ] || [ $1 = "--help" ] || [ $1 = "help" ]; then
+       echo "
+   Usage: mesh11sd [option] [argument...]]
+@@ -6153,11 +6151,16 @@ if [ -z "$1" ] || [ "$1" = "-h" ] || [ $
+   For further documentation, see: https://github.com/openNDS/mesh11sd#readme
+ "
++      exit 0
+ elif [ "$1" = "-v" ] || [ $1 = "--version" ] || [ $1 = "version" ]; then
+       echo "mesh11sd version $version"
++      exit 0
++fi
++
++get_current_setup 2> /dev/null
+-elif [ "$1" = "debuglevel" ]; then
++if [ "$1" = "debuglevel" ]; then
+       if [ -z "$2" ];then
+               echo "$debuglevel"
diff --git a/net/mesh11sd/patches/101-fix-licence-discrepancy.patch b/net/mesh11sd/patches/101-fix-licence-discrepancy.patch
new file mode 100644 (file)
index 0000000..87a6ccd
--- /dev/null
@@ -0,0 +1,24 @@
+From 9d18091f27e5fdd9406c6ac03267199a059fc8f5 Mon Sep 17 00:00:00 2001
+From: Rob White <rob@blue-wave.net>
+Date: Thu, 6 Aug 2026 21:46:37 +0000
+Subject: [PATCH] Fix -licence discrepancy
+
+The script header claimed GPL version 3 or later, while the LICENSE file
+the project ships is GPL version 2. Make the header agree with it.
+
+Upstream-Status: Backport [https://github.com/openNDS/mesh11sd/commit/9d18091f27e5fdd9406c6ac03267199a059fc8f5]
+---
+--- a/src/mesh11sd
++++ b/src/mesh11sd
+@@ -1,9 +1,9 @@
+ #!/bin/sh
+ # Copyright (C) BlueWave Projects and Services 2015-2026
+ #
+-#     This software is released under the GNU General Public License version 3 or any later version.
++#     This software is released under the GNU General Public License version 2 or any later version.
+ #     This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation,
+-#     either version 3 of the License, or (at your option) any later version.
++#     either version 2 of the License, or (at your option) any later version.
+ #
+ #     This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ #     See the GNU General Public License for more details.
diff --git a/net/mesh11sd/patches/102-fix-typo-in-get_current_setup-apmond_cgi_dir.patch b/net/mesh11sd/patches/102-fix-typo-in-get_current_setup-apmond_cgi_dir.patch
new file mode 100644 (file)
index 0000000..1fd0123
--- /dev/null
@@ -0,0 +1,21 @@
+From d0db5353ffc8574c30620fae1f54b13f7f873c6f Mon Sep 17 00:00:00 2001
+From: Rob White <rob@blue-wave.net>
+Date: Thu, 6 Aug 2026 22:05:02 +0000
+Subject: [PATCH] Fix - typo in get_current_setup() getting apmond_cgi_dir
+
+The length was taken from $apmon_cgi_dir, which is never set, so strlen
+was always 0 and the trailing slash check read the wrong character.
+
+Upstream-Status: Backport [https://github.com/openNDS/mesh11sd/commit/d0db5353ffc8574c30620fae1f54b13f7f873c6f]
+---
+--- a/src/mesh11sd
++++ b/src/mesh11sd
+@@ -989,7 +989,7 @@ get_current_setup() {
+               apmond_cgi_dir="/www/cgi-bin"
+       fi
+-      strlen=$((${#apmon_cgi_dir}));
++      strlen=$((${#apmond_cgi_dir}));
+       lastchar=${apmond_cgi_dir:$strlen -1 :1}
+       if [ "$lastchar" != "/" ]; then
git clone https://git.99rst.org/PROJECT