mesh11sd: add new package

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 <pepe.schlehofer@gmail.com>
pull/30296/head
Josef Schlehofer 2026-08-06 14:35:02 +02:00
parent 2312f86f7e
commit cf71e9d2b3
4 changed files with 156 additions and 0 deletions

View File

@ -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))

View File

@ -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"

View File

@ -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.

View File

@ -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