Note
The headline of this release is that interfaces that arrive after smcrouted has started, e.g., WireGuard, 6LoWPAN, late-binding bridges and other tunnels, now activate automatically on Linux.
Changes
- Add JSON output support
smcroutectl -j show [..], issue #198 - Drop pre-v2.0
smcrouteshell wrapper. Anyone still onsmcroute -a/smcroute -j/ etc. should migrate tosmcroute.confor callsmcroutectl(8)directly, issue #199 - Clearer diagnostic messages for unusable phyints (unknown name vs. not multicast capable vs. VIF table exhausted). Promoted the "not multicast capable" log line from
LOG_INFOtoLOG_WARNINGso it shows at the default log level. See discussion #201 mrouteandmgroupdirectives whose inbound or outbound interface does not yet exist are queued on a pending list instead of being dropped with parse error. See list withsmcroutectl show pending
Fixes
- Fix #55: on Linux,
smcroutednow subscribes to kernel netlink link events (RTNLGRP_LINK+ IPv4/IPv6 address groups) and activates any pending routes/groups automatically when their inbound or outbound interface arrives - Fix #71: VIFs and MIFs are now allocated lazily, only for interfaces referenced by
smcroute.confor bysmcroutectl. The old up-front enumeration regularly exhausted the kernel's 32-slot table on hosts with many unrelated interfaces. The-Noption is now a no-op - Fix #143: repair kernel MFC on
IGMPMSG_WRONGVIF/MRT6MSG_WRONGMIFby remapping the(S,G)entry's inbound iif when a(*,G)rule covers the upcall's actual iif