From e6a5282e5d8d25f7fc54a7111e9082b21afb46fc Mon Sep 17 00:00:00 2001 From: mikecarper Date: Sat, 8 Aug 2026 00:02:34 +0000 Subject: [PATCH] deploy: 5b0af29ad1ce89f617c8e476310cbfd9e6c5ec4d --- cli_commands/index.html | 28 ++++++++---- filter_tool/index.html | 66 ++++++++++++++++++++++++--- flood_filtering/index.html | 76 +++++++++++++++++++------------ halo_keymind_settings/index.html | 8 ++-- search/search_index.json | 2 +- sitemap.xml | 50 ++++++++++---------- sitemap.xml.gz | Bin 448 -> 447 bytes 7 files changed, 158 insertions(+), 72 deletions(-) diff --git a/cli_commands/index.html b/cli_commands/index.html index 89bb30ab..bd16e003 100644 --- a/cli_commands/index.html +++ b/cli_commands/index.html @@ -5690,13 +5690,18 @@ reduce false recoveries when no traffic is expected.

Default: flood.channel.data on; flood.channel.data.hops h=all

Forwarding behavior: Repeater firmware only. The repeater still receives and logs the packet when logging is enabled; this only blocks retransmission. -This is checked before FPF7 and applies to flood GRP_DATA packets regardless -of channel key. Flood group text (GRP_TXT) is unaffected by this setting.

+On generalized repeaters these commands manage an ordinary visible FPF7 +type=grp_data drop row. off with all maps to hops=all; off with N +maps to hops=N+1+. The 240 KB compact FPF6 profiles retain the legacy hard +gate. Because it is an ordinary FPF7 row, a matching higher-priority stop +rule can exempt traffic from it. The compact get flood.filter list marks the +managed row with ~data. Flood group text (GRP_TXT) is unaffected by this +setting.

get flood.channel.data includes the active hop gate as h=all or h>N.


Block selected flood channels with FPF7

The separate flood.channel.block command and 15-row table have been retired. -Generalized repeaters use the 31-row FPF7 table for authenticated channel +Generalized repeaters use the 32-row FPF7 forward phase for authenticated channel blocks:

set flood.rule type=any channel=#test hops=all drop
 set flood.rule.2 type=any channel=#wardriving hops=5+ drop
@@ -5959,8 +5964,8 @@ for remote changes. It does not have the repeater's passive path blacklist, so
 ordered prefix= match on a room server. Standard room-server profiles do not
 compile this table.

Parameters: -- n: Rule slot in the build's compiled table (normally 1-31; some - constrained profiles use fewer slots). +- n: Forward-rule slot in the build's compiled table (1-32 on generalized + repeaters and 1-31 on FULL room servers; compact profiles may use fewer). - type: Payload type name, full PAYLOAD_TYPE_* name, decimal value 0-15, hexadecimal value 0x00-0x0F, or any. - hops: Optional; omitted means all. @@ -6123,7 +6128,7 @@ against the same immutable receive-time packet, before any rule changes its scope. Matching rows are processed in descending priority, with lower slot number winning a tie. The first matching stop row is included and all lower-order FPF7 matches are discarded. A stop cannot undo an earlier drop or -bypass hard forwarding gates and separate forwarding tables. A row with +bypass hard forwarding gates or the other policy phases. A row with path=blacklist must meet the path condition as well as its other conditions; blacklist IDs can occur anywhere in the received path and their configured order is irrelevant. In contrast, prefix= begins at the first received path @@ -6195,11 +6200,18 @@ means prefix=, i=*|n|s|a|u|s:<scope>|r:<region>s) with temporary-radio suspension (t). Packet type is shown numerically in that fallback. Normal-sized rows keep the descriptive spelling above.

-

The blacklist and filter rows are persisted separately. Replacing or deleting +

On generalized repeaters, filter rows, scope-rewrite rows, the shared +blacklist, and flood.channel.data compatibility state are committed in one +atomic FPF7 image. Compact FPF6 profiles retain separate files. Replacing or deleting the blacklist does not delete rows containing path=blacklist; such rows remain dormant while the list is empty. Path hashes are truncated routing identifiers, not authenticated identities, so this is a forwarding signal rather than proof that a particular repeater handled a packet.

+

A common use is containment of bulk internet-to-mesh dumping: list the path +IDs associated with the offending gateways, then add a broad +type=any hops=all path=blacklist drop row. This prevents this repeater from +retransmitting matching floods; it does not delete them from local logs or +prove who originated them.

The unnumbered blacklist set replaces the whole list and accepts up to 18 IDs so it fits every CLI transport. Numbered set writes up to 18 consecutive entries beginning at an existing slot or exactly the next slot, allowing an @@ -6240,7 +6252,7 @@ and adds #BlackHole86 only when no scope was present. The second re exact incoming #usa scope. The third demonstrates a two-byte pbyte source prefix and a global per-row rate cap. The fourth authenticates #rgdata at zero through two hops, applies no FPF7 action of its own, and stops lower-order -FPF7 rows; hard gates and separate tables still apply.

+FPF7 forward rows; hard gates and the rewrite/moderation phases still apply.

The fixed 240 KB STM32WL profiles leave MESH_ENABLE_FLOOD_RULE_ENGINE=0 and retain the compact, persistent FPF6 flood.filter and blacklist commands. They still filter floods, but do not diff --git a/filter_tool/index.html b/filter_tool/index.html index 4b8b3623..d1c0494b 100644 --- a/filter_tool/index.html +++ b/filter_tool/index.html @@ -525,6 +525,17 @@ + + +

  • + + + + Current FPF7 command mapping + + + +
  • @@ -1024,6 +1035,17 @@ +
  • + +
  • + + + + Current FPF7 command mapping + + + +
  • @@ -1069,12 +1091,13 @@ such as dropping, scoping, rate-limiting, or retrying a flood.

    Everything runs locally in this browser. Channel keys, packet facts, and policy drafts are not uploaded anywhere.

    - Engine design preview + Policy design preview

    - This page targets the new policy-engine idea, not today's FPF7 file or - existing set flood.* commands. Its readable policy language, - JSON, and Base64 bundle are a prototype for design testing. Current - firmware cannot install these policies yet. + The phases and core conditions model current FPF7 behavior, including its + forward rows, scope rewrites, and shared blacklist. The readable policy + language, JSON, and Base64 bundle are still a prototype: current firmware + is configured with set flood.* commands and cannot install a + bundle from this page.

    @@ -1165,7 +1188,7 @@ in the simulator below. The examples draw from when type=grp_txt hops=all channel=public sender="Noisy User" do rate=5/min burst=5
  • -

    flood.rule is an alias for flood.filter, not another table. The -The generalized FPF7 table has 31 persistent slots; compact target profiles -may compile fewer FPF6 filter slots. flood.moderation has 16 slots. A new +

    flood.rule is an alias for flood.filter, not another table. Generalized +repeater FPF7 has 32 forward-rule slots plus scope-rewrite and shared-blacklist +sections in the same atomic policy file. FULL room servers have 31 forward +slots and empty repeater-only sections. Compact target profiles retain their +separate FPF6-era controls. flood.moderation has 16 slots. A new repeater FPF7 table starts with ota all suspend=tempradio in slot 1 and an authenticated #wardriving hops=5+ drop in slot 2; FULL room servers seed only the OTA row. flood.moderation starts empty. A row can opt into @@ -1513,15 +1516,14 @@ actually active temporary-radio window, even if the seeded row is deleted or replaced.

    Capacity is selected at build time:

    Each rule retains its 36-byte record. A separate table holds 32-byte normalized @@ -1529,6 +1531,9 @@ names for up to the smaller of the rule count or 32 distinct regionless targets, except that very-tight STM32WL builds retain one reusable direct target. Both configured regions and regionless targets can be reused by any number of rules.

    +

    On generalized builds these records are the FPF7 rewrite phase, and the file +stores only through the highest occupied slot. Compact FPF6 builds retain the +standalone FCS5 file and the file sizes described by their build profile.

    Require valid incoming scopes only on selected channels

    flood.channel.scope.require changes region enforcement for received flood GRP_TXT and GRP_DATA packets from a global policy to a channel opt-in @@ -1602,9 +1607,17 @@ open. A row saved by the extended engine uses FPF7.

    The former flood.channel.block table is now represented by ordinary FPF7 rows. On a generalized repeater, an existing FCB2 file is imported once into free FPF7 slots and then removed. For example, an old #wardriving h=4 row -becomes type=any channel=#wardriving hops=5+ drop. The 31 FPF7 slots replace -the former 16 general-filter plus 15 channel-block slots. Compact STM32WL FPF6 -builds cannot match authenticated channels.

    +becomes type=any channel=#wardriving hops=5+ drop. The 32nd forward slot +guarantees room to migrate the old global flood.channel.data gate even when +all 31 former general/channel slots were occupied. Compact STM32WL FPF6 builds +cannot match authenticated channels and retain the older separate gate.

    +

    On generalized repeaters, flood.channel.data* is a compatibility view over +one ordinary visible FPF7 type=grp_data ... drop row. Turning it off creates +or updates that row; turning it on removes the row. Its hop setting maps to +hops=all or hops=N+1+. There is no hidden GRP_DATA forwarding check ahead +of FPF7. Normal ordering applies, so a matching higher-priority stop row can +exempt selected traffic. The compact rule list marks the managed row with +~data.

    FPF7 binds in=region:<name> and region=<name> to canonical region names, not numeric region IDs. Removing, reordering, or reusing a region ID cannot silently redirect a rule. If the saved name is missing, an input-region match @@ -1624,11 +1637,11 @@ Every row is matched against the same immutable packet state captured on receive, before any rule rewrites its scope. Matching rows are then processed by descending priority; lower slot number wins a priority tie. Priority defaults to 0.

    -

    The first matching stop row ends FPF7 processing after that row. Higher-order +

    The first matching stop row ends the FPF7 forward phase after that row. Higher-order matches and the stop row still apply; lower-order matches do not. A stop-only row is therefore an exception to lower-priority FPF7 rows. It cannot undo a -higher-priority drop and it does not bypass hard forwarding gates or separate -forwarding tables. Without a stop row, matching drop and rate rows remain +higher-priority drop and it does not bypass hard forwarding gates or the +scope-rewrite and moderation phases. Without a stop row, matching drop and rate rows remain independent and the highest-order matching scope or region rewrite wins.

    Match fields: