From 988c80db65f5b990cc0bfd2efa34ec9590c71e39 Mon Sep 17 00:00:00 2001 From: Jeff Hykin Date: Fri, 9 Jan 2026 19:42:17 -0500 Subject: [PATCH 1/4] fix tests --- dimos/protocol/service/test_lcmservice.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/dimos/protocol/service/test_lcmservice.py b/dimos/protocol/service/test_lcmservice.py index faf50a945e..3fc0b351b9 100644 --- a/dimos/protocol/service/test_lcmservice.py +++ b/dimos/protocol/service/test_lcmservice.py @@ -78,7 +78,7 @@ def test_check_multicast_missing_multicast_flag() -> None: result = check_multicast() sudo = get_sudo_prefix() - assert result == [f"{sudo}ifconfig lo multicast"] + assert result == [f"{sudo}ip l set lo multicast on"] def test_check_multicast_missing_route() -> None: @@ -127,7 +127,7 @@ def test_check_multicast_all_missing() -> None: result = check_multicast() sudo = get_sudo_prefix() expected = [ - f"{sudo}ifconfig lo multicast", + f"{sudo}ip l set lo multicast on", f"{sudo}route add -net 224.0.0.0 netmask 240.0.0.0 dev lo", ] assert result == expected @@ -143,7 +143,7 @@ def test_check_multicast_subprocess_exception() -> None: result = check_multicast() sudo = get_sudo_prefix() expected = [ - f"{sudo}ifconfig lo multicast", + f"{sudo}ip l set lo multicast on", f"{sudo}route add -net 224.0.0.0 netmask 240.0.0.0 dev lo", ] assert result == expected @@ -466,7 +466,7 @@ def test_autoconf_with_config_needed_success() -> None: # Command execution calls type( "MockResult", (), {"stdout": "success", "returncode": 0} - )(), # ifconfig lo multicast + )(), # ip l set lo multicast on type( "MockResult", (), {"stdout": "success", "returncode": 0} )(), # route add... @@ -487,7 +487,7 @@ def test_autoconf_with_config_needed_success() -> None: # Verify the expected log calls expected_info_calls = [ call("System configuration required. Executing commands..."), - call(f" Running: {sudo}ifconfig lo multicast"), + call(f" Running: {sudo}ip l set lo multicast on"), call(" ✓ Success"), call(f" Running: {sudo}route add -net 224.0.0.0 netmask 240.0.0.0 dev lo"), call(" ✓ Success"), @@ -532,7 +532,7 @@ def test_autoconf_with_command_failures() -> None: # Command execution calls - first succeeds, second fails type( "MockResult", (), {"stdout": "success", "returncode": 0} - )(), # ifconfig lo multicast + )(), # ip l set lo multicast on subprocess.CalledProcessError( 1, [ From cb9da2480a6b81f2da5d3bba268595e31fbdf616 Mon Sep 17 00:00:00 2001 From: Jeff Hykin Date: Fri, 9 Jan 2026 19:39:36 -0500 Subject: [PATCH 2/4] stop using deprecated "ifconfig" (fails on fresh ubuntu install) --- dimos/protocol/service/lcmservice.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dimos/protocol/service/lcmservice.py b/dimos/protocol/service/lcmservice.py index a0ca8c4796..955ab9693c 100644 --- a/dimos/protocol/service/lcmservice.py +++ b/dimos/protocol/service/lcmservice.py @@ -60,9 +60,9 @@ def check_multicast() -> list[str]: ["ip", "link", "show", loopback_interface], capture_output=True, text=True ) if "MULTICAST" not in result.stdout: - commands_needed.append(f"{sudo}ifconfig {loopback_interface} multicast") + commands_needed.append(f"{sudo}ip l set {loopback_interface} multicast on") except Exception: - commands_needed.append(f"{sudo}ifconfig {loopback_interface} multicast") + commands_needed.append(f"{sudo}ip l set {loopback_interface} multicast on") # Check if multicast route exists try: From b3ac0abddf904053a4801bfcfac215a1db8aedcf Mon Sep 17 00:00:00 2001 From: Jeff Hykin Date: Mon, 12 Jan 2026 17:20:40 -0800 Subject: [PATCH 3/4] switch to `ip route` instead of deprecated `route` command --- dimos/protocol/service/lcmservice.py | 8 ++++---- dimos/protocol/service/test_lcmservice.py | 13 ++++++++----- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/dimos/protocol/service/lcmservice.py b/dimos/protocol/service/lcmservice.py index 955ab9693c..14741289df 100644 --- a/dimos/protocol/service/lcmservice.py +++ b/dimos/protocol/service/lcmservice.py @@ -71,11 +71,11 @@ def check_multicast() -> list[str]: ) if not result.stdout.strip(): commands_needed.append( - f"{sudo}route add -net 224.0.0.0 netmask 240.0.0.0 dev {loopback_interface}" + f"{sudo}ip route add -net 224.0.0.0 netmask 240.0.0.0 dev {loopback_interface}" ) except Exception: commands_needed.append( - f"{sudo}route add -net 224.0.0.0 netmask 240.0.0.0 dev {loopback_interface}" + f"{sudo}ip route add -net 224.0.0.0 netmask 240.0.0.0 dev {loopback_interface}" ) elif system == "Darwin": # macOS @@ -86,11 +86,11 @@ def check_multicast() -> list[str]: route_exists = "224.0.0.0/4" in result.stdout or "224.0.0/4" in result.stdout if not route_exists: commands_needed.append( - f"{sudo}route add -net 224.0.0.0/4 -interface {loopback_interface}" + f"{sudo}ip route add -net 224.0.0.0/4 -interface {loopback_interface}" ) except Exception: commands_needed.append( - f"{sudo}route add -net 224.0.0.0/4 -interface {loopback_interface}" + f"{sudo}ip route add -net 224.0.0.0/4 -interface {loopback_interface}" ) else: diff --git a/dimos/protocol/service/test_lcmservice.py b/dimos/protocol/service/test_lcmservice.py index 3fc0b351b9..abd13daf54 100644 --- a/dimos/protocol/service/test_lcmservice.py +++ b/dimos/protocol/service/test_lcmservice.py @@ -102,7 +102,7 @@ def test_check_multicast_missing_route() -> None: result = check_multicast() sudo = get_sudo_prefix() - assert result == [f"{sudo}route add -net 224.0.0.0 netmask 240.0.0.0 dev lo"] + assert result == [f"{sudo}ip route add -net 224.0.0.0 netmask 240.0.0.0 dev lo"] def test_check_multicast_all_missing() -> None: @@ -128,7 +128,7 @@ def test_check_multicast_all_missing() -> None: sudo = get_sudo_prefix() expected = [ f"{sudo}ip l set lo multicast on", - f"{sudo}route add -net 224.0.0.0 netmask 240.0.0.0 dev lo", + f"{sudo}ip route add -net 224.0.0.0 netmask 240.0.0.0 dev lo", ] assert result == expected @@ -144,7 +144,7 @@ def test_check_multicast_subprocess_exception() -> None: sudo = get_sudo_prefix() expected = [ f"{sudo}ip l set lo multicast on", - f"{sudo}route add -net 224.0.0.0 netmask 240.0.0.0 dev lo", + f"{sudo}ip route add -net 224.0.0.0 netmask 240.0.0.0 dev lo", ] assert result == expected @@ -167,7 +167,7 @@ def test_check_multicast_macos() -> None: result = check_multicast() sudo = get_sudo_prefix() - expected = [f"{sudo}route add -net 224.0.0.0/4 -interface lo0"] + expected = [f"{sudo}ip route add -net 224.0.0.0/4 -interface lo0"] assert result == expected @@ -489,7 +489,9 @@ def test_autoconf_with_config_needed_success() -> None: call("System configuration required. Executing commands..."), call(f" Running: {sudo}ip l set lo multicast on"), call(" ✓ Success"), - call(f" Running: {sudo}route add -net 224.0.0.0 netmask 240.0.0.0 dev lo"), + call( + f" Running: {sudo}ip route add -net 224.0.0.0 netmask 240.0.0.0 dev lo" + ), call(" ✓ Success"), call(f" Running: {sudo}sysctl -w net.core.rmem_max={TARGET_RMEM_SIZE}"), call(" ✓ Success"), @@ -537,6 +539,7 @@ def test_autoconf_with_command_failures() -> None: 1, [ *get_sudo_prefix().split(), + "ip", "route", "add", "-net", From 2b10efdcd51b85dac63b7f4fe32b9e4e7a03c4c2 Mon Sep 17 00:00:00 2001 From: Jeff Hykin Date: Mon, 12 Jan 2026 17:25:42 -0800 Subject: [PATCH 4/4] fix syntax --- dimos/protocol/service/lcmservice.py | 16 ++++------------ dimos/protocol/service/test_lcmservice.py | 17 ++++++----------- 2 files changed, 10 insertions(+), 23 deletions(-) diff --git a/dimos/protocol/service/lcmservice.py b/dimos/protocol/service/lcmservice.py index 14741289df..ec2db16006 100644 --- a/dimos/protocol/service/lcmservice.py +++ b/dimos/protocol/service/lcmservice.py @@ -70,13 +70,9 @@ def check_multicast() -> list[str]: ["ip", "route", "show", "224.0.0.0/4"], capture_output=True, text=True ) if not result.stdout.strip(): - commands_needed.append( - f"{sudo}ip route add -net 224.0.0.0 netmask 240.0.0.0 dev {loopback_interface}" - ) + commands_needed.append(f"{sudo}ip route add 224.0.0.0/4 dev {loopback_interface}") except Exception: - commands_needed.append( - f"{sudo}ip route add -net 224.0.0.0 netmask 240.0.0.0 dev {loopback_interface}" - ) + commands_needed.append(f"{sudo}ip route add 224.0.0.0/4 dev {loopback_interface}") elif system == "Darwin": # macOS loopback_interface = "lo0" @@ -85,13 +81,9 @@ def check_multicast() -> list[str]: result = subprocess.run(["netstat", "-nr"], capture_output=True, text=True) route_exists = "224.0.0.0/4" in result.stdout or "224.0.0/4" in result.stdout if not route_exists: - commands_needed.append( - f"{sudo}ip route add -net 224.0.0.0/4 -interface {loopback_interface}" - ) + commands_needed.append(f"{sudo}ip route add 224.0.0.0/4 dev {loopback_interface}") except Exception: - commands_needed.append( - f"{sudo}ip route add -net 224.0.0.0/4 -interface {loopback_interface}" - ) + commands_needed.append(f"{sudo}ip route add 224.0.0.0/4 dev {loopback_interface}") else: # For other systems, skip multicast configuration diff --git a/dimos/protocol/service/test_lcmservice.py b/dimos/protocol/service/test_lcmservice.py index abd13daf54..977a441676 100644 --- a/dimos/protocol/service/test_lcmservice.py +++ b/dimos/protocol/service/test_lcmservice.py @@ -102,7 +102,7 @@ def test_check_multicast_missing_route() -> None: result = check_multicast() sudo = get_sudo_prefix() - assert result == [f"{sudo}ip route add -net 224.0.0.0 netmask 240.0.0.0 dev lo"] + assert result == [f"{sudo}ip route add 224.0.0.0/4 dev lo"] def test_check_multicast_all_missing() -> None: @@ -128,7 +128,7 @@ def test_check_multicast_all_missing() -> None: sudo = get_sudo_prefix() expected = [ f"{sudo}ip l set lo multicast on", - f"{sudo}ip route add -net 224.0.0.0 netmask 240.0.0.0 dev lo", + f"{sudo}ip route add 224.0.0.0/4 dev lo", ] assert result == expected @@ -144,7 +144,7 @@ def test_check_multicast_subprocess_exception() -> None: sudo = get_sudo_prefix() expected = [ f"{sudo}ip l set lo multicast on", - f"{sudo}ip route add -net 224.0.0.0 netmask 240.0.0.0 dev lo", + f"{sudo}ip route add 224.0.0.0/4 dev lo", ] assert result == expected @@ -167,7 +167,7 @@ def test_check_multicast_macos() -> None: result = check_multicast() sudo = get_sudo_prefix() - expected = [f"{sudo}ip route add -net 224.0.0.0/4 -interface lo0"] + expected = [f"{sudo}ip route add 224.0.0.0/4 dev lo0"] assert result == expected @@ -489,9 +489,7 @@ def test_autoconf_with_config_needed_success() -> None: call("System configuration required. Executing commands..."), call(f" Running: {sudo}ip l set lo multicast on"), call(" ✓ Success"), - call( - f" Running: {sudo}ip route add -net 224.0.0.0 netmask 240.0.0.0 dev lo" - ), + call(f" Running: {sudo}ip route add 224.0.0.0/4 dev lo"), call(" ✓ Success"), call(f" Running: {sudo}sysctl -w net.core.rmem_max={TARGET_RMEM_SIZE}"), call(" ✓ Success"), @@ -542,10 +540,7 @@ def test_autoconf_with_command_failures() -> None: "ip", "route", "add", - "-net", - "224.0.0.0", - "netmask", - "240.0.0.0", + "224.0.0.0/4", "dev", "lo", ],