This file maps common error messages from smcrouted to their root
cause and recommended fix. Run with -l debug for the most detailed
log output, but most of the messages below are visible at the default
log level.
The interface X is not present in the kernel at the time smcrouted
read the configuration.
- Cause: the interface is created later than
smcroutedstarts (typical for WireGuard, 6LoWPAN, late-binding bridges, etc.). - Fix: delay startup with
smcrouted -d SEC, or sendSIGHUPto the daemon (orsmcroutectl reload) once the interface is up.
The interface exists, but the kernel reports it without the
IFF_MULTICAST flag.
- Cause: the interface type does not support multicast (
dummywithoutmulticast on), or a bridge that has no forwarding ports yet, or a driver that masks the flag. - Fix: verify with
ip -d link show X. For bridges, attach a port and ensure multicast snooping/flooding is configured correctly. Fordummyinterfaces,ip link set X multicast on.
The interface is multicast capable but smcrouted could not allocate a
kernel VIF/MIF for it. The kernel supports a fixed number of VIFs
(usually 32 on Linux).
-
Cause: the host has more multicast-capable interfaces than the kernel can map. By default
smcroutedallocates a VIF for every multicast-capable interface, which exhausts the table before the configuredphyintlines are reached. Tracked in #71. -
Fix: start
smcroutedwith-Nand list only the interfaces you actually need insmcroute.conf:phyint eth0 enable phyint eth1 enable
Only one process per network namespace and routing table can hold the kernel multicast routing API.
- Cause: another multicast routing daemon (
igmpproxy,mcpd,pimd, ...) is already running. Reported on asuswrt-merlin in discussion #201. - Fix: stop the other daemon, or on Linux use a separate routing
table with
smcrouted -t N.
Same as the first entry above, but for an mgroup line. Same fixes
apply.
smcrouted does not yet listen for kernel link events, so it will not
notice when an interface comes up after startup. Workarounds:
- Use
-d SECto delay startup until interfaces are expected. - Send
SIGHUP(or runsmcroutectl reload) from a script triggered by your network manager /udev/ similar.
Native runtime re-enumeration is tracked in #55.