From e7426f06db5830a90a240dddd421345b98b2463a Mon Sep 17 00:00:00 2001
From: Steve-7acc <dave_doubledecks@yahoo.com>
Date: Sun, 26 Apr 2026 14:51:48 +0100
Subject: [PATCH 1/4] Update CommonCLI.h

Add advert_max_hops
---
 src/helpers/CommonCLI.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/helpers/CommonCLI.h b/src/helpers/CommonCLI.h
index ffdc7c6536..648fbb1f68 100644
--- a/src/helpers/CommonCLI.h
+++ b/src/helpers/CommonCLI.h
@@ -40,6 +40,7 @@ struct NodePrefs { // persisted to file
   uint8_t multi_acks;
   float bw;
   uint8_t flood_max;
+  uint8_t advert_max_hops;     
   uint8_t interference_threshold;
   uint8_t agc_reset_interval; // secs / 4
   // Bridge settings

From 9865d9ddc7bbe84227e479d14b1676a4bc8f2eca Mon Sep 17 00:00:00 2001
From: Steve-7acc <dave_doubledecks@yahoo.com>
Date: Sun, 26 Apr 2026 14:56:30 +0100
Subject: [PATCH 2/4] Update CommonCLI.cpp

Added advert.max.hops
---
 src/helpers/CommonCLI.cpp | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/src/helpers/CommonCLI.cpp b/src/helpers/CommonCLI.cpp
index d495aada5f..a0b8026be9 100644
--- a/src/helpers/CommonCLI.cpp
+++ b/src/helpers/CommonCLI.cpp
@@ -88,7 +88,7 @@ void CommonCLI::loadPrefsInt(FILESYSTEM* fs, const char* filename) {
     file.read((uint8_t *)&_prefs->adc_multiplier, sizeof(_prefs->adc_multiplier));                 // 166
     file.read((uint8_t *)_prefs->owner_info, sizeof(_prefs->owner_info));                          // 170
     file.read((uint8_t *)&_prefs->rx_boosted_gain, sizeof(_prefs->rx_boosted_gain));              // 290
-    // next: 291
+    file.read((uint8_t *)&_prefs->advert_max_hops, sizeof(_prefs->advert_max_hops));              // 291
 
     // sanitise bad pref values
     _prefs->rx_delay_base = constrain(_prefs->rx_delay_base, 0, 20.0f);
@@ -179,7 +179,7 @@ void CommonCLI::savePrefs(FILESYSTEM* fs) {
     file.write((uint8_t *)&_prefs->adc_multiplier, sizeof(_prefs->adc_multiplier));                 // 166
     file.write((uint8_t *)_prefs->owner_info, sizeof(_prefs->owner_info));                          // 170
     file.write((uint8_t *)&_prefs->rx_boosted_gain, sizeof(_prefs->rx_boosted_gain));              // 290
-    // next: 291
+    file.write((uint8_t *)&_prefs->advert_max_hops, sizeof(_prefs->advert_max_hops                 // 291
 
     file.close();
   }
@@ -605,6 +605,15 @@ void CommonCLI::handleSetCmd(uint32_t sender_timestamp, char* command, char* rep
     } else {
       strcpy(reply, "Error, max 64");
     }
+  } else if (memcmp(config, "advert.max.hops ", 16) == 0) {
+    uint8_t m = atoi(&config[16]);
+    if (m <= 64) {
+      _prefs->advert_max_hops = m;
+      savePrefs();
+      strcpy(reply, "OK");
+    } else {
+      strcpy(reply, "Error, max 64");
+    }
   } else if (memcmp(config, "direct.txdelay ", 15) == 0) {
     float f = atof(&config[15]);
     if (f >= 0) {
@@ -781,6 +790,8 @@ void CommonCLI::handleGetCmd(uint32_t sender_timestamp, char* command, char* rep
     sprintf(reply, "> %s", StrHelper::ftoa(_prefs->tx_delay_factor));
   } else if (memcmp(config, "flood.max", 9) == 0) {
     sprintf(reply, "> %d", (uint32_t)_prefs->flood_max);
+  } else if (memcmp(config, "advert.max.hops", 15) == 0) {
+    sprintf(reply, "> %d", (uint32_t)_prefs->advert_max_hops);
   } else if (memcmp(config, "direct.txdelay", 14) == 0) {
     sprintf(reply, "> %s", StrHelper::ftoa(_prefs->direct_tx_delay_factor));
   } else if (memcmp(config, "owner.info", 10) == 0) {

From 1e4e27bc69cb27762276efbc47690730f8368bed Mon Sep 17 00:00:00 2001
From: Steve-7acc <dave_doubledecks@yahoo.com>
Date: Sun, 26 Apr 2026 15:01:44 +0100
Subject: [PATCH 3/4] Update MyMesh.cpp

Added condition for advert.max.hops
---
 examples/simple_repeater/MyMesh.cpp | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/examples/simple_repeater/MyMesh.cpp b/examples/simple_repeater/MyMesh.cpp
index 666f79fc5c..e8ef93d1af 100644
--- a/examples/simple_repeater/MyMesh.cpp
+++ b/examples/simple_repeater/MyMesh.cpp
@@ -429,6 +429,9 @@ void MyMesh::sendFloodReply(mesh::Packet* packet, unsigned long delay_millis, ui
 bool MyMesh::allowPacketForward(const mesh::Packet *packet) {
   if (_prefs.disable_fwd) return false;
   if (packet->isRouteFlood() && packet->getPathHashCount() >= _prefs.flood_max) return false;
+  if (packet->isRouteFlood()
+     && packet->getPayloadType() == PAYLOAD_TYPE_ADVERT
+     && packet->getPathHashCount() >=_prefs.advert_max_hops) return false;
   if (packet->isRouteFlood() && recv_pkt_region == NULL) {
     MESH_DEBUG_PRINTLN("allowPacketForward: unknown transport code, or wildcard not allowed for FLOOD packet");
     return false;
@@ -887,6 +890,7 @@ MyMesh::MyMesh(mesh::MainBoard &board, mesh::Radio &radio, mesh::MillisecondCloc
   _prefs.flood_advert_interval = 12; // 12 hours
   _prefs.flood_max = 64;
   _prefs.interference_threshold = 0; // disabled
+  _prefs.advert_max_hops = 64;
 
   // bridge defaults
   _prefs.bridge_enabled = 1;    // enabled

From f1b2bab40184068722ff1c3d3dd1a3b6f722d32b Mon Sep 17 00:00:00 2001
From: Steve-7acc <dave_doubledecks@yahoo.com>
Date: Sun, 26 Apr 2026 15:07:08 +0100
Subject: [PATCH 4/4] Update CommonCLI.cpp

Fixed typo
---
 src/helpers/CommonCLI.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/helpers/CommonCLI.cpp b/src/helpers/CommonCLI.cpp
index a0b8026be9..0a209e7000 100644
--- a/src/helpers/CommonCLI.cpp
+++ b/src/helpers/CommonCLI.cpp
@@ -179,7 +179,7 @@ void CommonCLI::savePrefs(FILESYSTEM* fs) {
     file.write((uint8_t *)&_prefs->adc_multiplier, sizeof(_prefs->adc_multiplier));                 // 166
     file.write((uint8_t *)_prefs->owner_info, sizeof(_prefs->owner_info));                          // 170
     file.write((uint8_t *)&_prefs->rx_boosted_gain, sizeof(_prefs->rx_boosted_gain));              // 290
-    file.write((uint8_t *)&_prefs->advert_max_hops, sizeof(_prefs->advert_max_hops                 // 291
+    file.write((uint8_t *)&_prefs->advert_max_hops, sizeof(_prefs->advert_max_hops));               // 291
 
     file.close();
   }
