diff --git a/dimos/protocol/service/lcmservice.py b/dimos/protocol/service/lcmservice.py index a0ca8c4796..ec2db16006 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: @@ -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}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}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}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}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 faf50a945e..977a441676 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: @@ -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 224.0.0.0/4 dev lo"] def test_check_multicast_all_missing() -> None: @@ -127,8 +127,8 @@ def test_check_multicast_all_missing() -> None: result = check_multicast() sudo = get_sudo_prefix() expected = [ - f"{sudo}ifconfig lo multicast", - f"{sudo}route add -net 224.0.0.0 netmask 240.0.0.0 dev lo", + f"{sudo}ip l set lo multicast on", + f"{sudo}ip route add 224.0.0.0/4 dev lo", ] assert result == expected @@ -143,8 +143,8 @@ def test_check_multicast_subprocess_exception() -> None: result = check_multicast() sudo = get_sudo_prefix() expected = [ - f"{sudo}ifconfig lo multicast", - f"{sudo}route add -net 224.0.0.0 netmask 240.0.0.0 dev lo", + f"{sudo}ip l set lo multicast on", + 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}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 @@ -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,9 +487,9 @@ 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(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"), @@ -532,17 +532,15 @@ 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, [ *get_sudo_prefix().split(), + "ip", "route", "add", - "-net", - "224.0.0.0", - "netmask", - "240.0.0.0", + "224.0.0.0/4", "dev", "lo", ],