Releases: troglobit/smcroute
Releases · troglobit/smcroute
Release list
SMCRoute v2.6.0
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
SMCRoute v2.5.7
Fixes
- Fix #207: crash when adding IPv6 multicast route on a kernel without
IPv6 multicast support
SMCRoute v2.5.6
Despite the new smcroutectl batch mode feature, this is primarily a
bug fix release. Most notably #183 and #187.
Changes
-
Add
smcroutectlbatch support, issue #189. Based on the IPC support
added in issue #185, by Alexey Smirnov:~$ sudo smcroutectl -b <<-EOF join eth0 225.1.2.3 add eth0 192.168.1.42 225.1.2.3 eth1 eth2 rem eth1 225.3.4.5 eth3 leave eth1 225.3.4.5 EOF ~$
Fixes
- Fix #178: invalid systemd daemon type Simple/Notify vs simple/notify
- Fix #179: typo in wildcard routes section of README
- Fix #180: minor typo in file and directory names in documentation
- Fix #183: casting in IPC code hides error handling of
recv() - Fix #186: NULL pointer dereference in
utimensat()replacement
function. Found accidentally by Alexey Smirnov. Only triggered on
systems that don't have a nativeutimensat()in their C-library, or
if you try to build SMCRoute without using its own build system ... - Fix #187: strange behavior joining/leaving the same group
- Fix #192: typo in README
SMCRoute v2.5.5
Changes
- Revert extraction of version from GIT tag. Incompatible with systems
that doautoreconfon a dist. tarball
Fixes
- Fix #175: Parse error in
/etc/smcroute.conf. SMCRoute fails to
start on interfaces withmrdiscdisabled, when built with mrdisc
support and-Npassed on command line
SMCRoute v2.5.4
Changes
- Automatically extract new version from GIT tag
Fixes
- Avoid trying to delete inactive VIFs. Fixing an annoying bogus error:
"Failed deleting VIF for iface lo: Resource temporarily unavailable" - Fix #171: too small string buffer for IPv6 address causing garbled
output in periodic expiry callback - Fix too small buffer for IPv6 address in mroute display functions
SMCRoute v2.5.3
Changes
- New tests to verify add/del of IPv4/IPv6 routes in kernel MFC
Fixes
- Fix #166: build warning with gcc 10.2.1: "comparison is always true due to limited range of data type"
- Fix build warning with
--disable-mrdiscconfigure option - Fix #167: cannot remove routes added with
smcroutectl add, only affects add/del at runtime with smcroutectl, not .conf reload - Fix #168: build problem on Debian/kFreeBSD, used wrong queue.h
SMCRoute v2.5.2
Changes
- Allow installing routes with no outbound interfaces
- Reinitialize VIFs on reload in case of new interfaces
- Handle cases when interfaces change ifindex, i.e. they've first been removed and then re-added with the same name
Fixes
- Fix VIF leak when deleting interfaces with MRDISC enabled
- Fix handling when an (S,G) moves to another IIF. This fixes issues where the SMCRoute kernel cache was out of sync with the kernel MFC
- Fix handling of lost/disabled interfaces at reload. This fixes a couple of issues where routes were not updated properly at runtime
- Update interface flags on reload, this fixes issues when SMCRoute failed to detect interfaces that had their MULTICAST flag set or cleared at runtime
. Skipsetsockopt()for IPC sockets. This fixes warnings in syslog about failing to disableMULTICAST_LOOPandMULTICAST_ALL
SMCRoute v2.5.1
SMCRoute v2.5.0
Highlights: native /etc/smcroute.d/*.conf support and seamless update/removal of routes and groups by reloading .conf files or using smcroutectl.
Tested on Linux 5.11 and FreeBSD 12.2
Changes
- Fully automated test suite with 15 tests covering many use cases
- Support for
/etc/smcroute.d/*.conf, issue #103 - Support for applying changes to
.conffiles without disturbing established flows -- i.e., seamless addition or removal of outbound interfaces in existing rules, or add/remove routes, without ever affecting other routes, issue #103 - Support for route replacement/update
smcroutectl, issue #115 - Full
(*,G)wildcard route matching, for IPv4 and IPv6, issue #31 - Variant wildcard route matching with source and group range matching. This may of course waste a lot of resources, so handle with care:
- Full SSM/ASM group join support, for both IPv4 and IPv6. Including joining group ranges from both
smcroutectland.conf, issue #118
Please note, no SSM support on FreeBSD, only Linux - New command line option,
-F file.confto verify file syntax, issue #100 - The
-I NAMEcommand line option has changed to-i NAME, compat support for the previous option remains - The
mrdiscflag to thephyintdirective is now what solely controls the functionality per interface. Previously a mechanism to enable/disable the functionality (if enabled) if active routes were in place. However, this did not cover(*,G)routes so that has been removed to simplify and guarantee full function - Output format from
smcroutectlhas been extensively changed. E.g, new/LENsupport means wider columns, but heading have also changed - The
.tar.xzarchive has been has been dropped as distribution format, keeping onlytar.gz
Fixes
- Fix #120: failed ASM/SSM IGMP join if interface has no address
- Fix #130: dynamic IPv6 routes are not flushed (like IPv4
(*,G)) - Fix #149:
(*,G)cache timeout callback stops, or never starts - Fix #151: same log entries
- Fix #156:
smcruotectl showdoes not show IPv6 routes - Fix stochastic timer behavior, e.g. mrdisc announcements experienced interference with the
(*,G)cache timer
SMCRoute v2.4.4
Changes
- Allow same outbound interface as inbound for routes, only warn user
- systemd unit file hardening, recommended by Debian
- Discontinued GPG signing, unused and signed with only one dev key
Fixes
- Fix #104: IGMP header checksum missing from mrdisc frames
- Fix #105: Unblock all matching, and currently blocked, (S,G) to a
newly installed (*,G) route, only the first know was unblocked - Fix #106: Timer nanosecond bug causing loss of address refresh on DHCP
interfaces. Interface monitoring feature introduced in v2.4.3 - Fix #108: Calling init script with
stopdoes not stopsmcrouted - Fix #109: ifindex in UNIX/POSIX is an interger, not unsigned short