Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 6 additions & 14 deletions dimos/protocol/service/lcmservice.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,23 +60,19 @@ 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:
result = subprocess.run(
["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"
Expand All @@ -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
Expand Down
28 changes: 13 additions & 15 deletions dimos/protocol/service/test_lcmservice.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -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:
Expand All @@ -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

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

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


Expand Down Expand Up @@ -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...
Expand All @@ -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"),
Expand Down Expand Up @@ -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",
],
Expand Down
Loading