Skip to content

Releases: troglobit/smcroute

SMCRoute v2.6.0

Choose a tag to compare

@github-actions github-actions released this 27 Jun 06:32
2.6.0
b5cde07

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 smcroute shell wrapper. Anyone still on smcroute -a / smcroute -j / etc. should migrate to smcroute.conf or call smcroutectl(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_INFO to LOG_WARNING so it shows at the default log level. See discussion #201
  • mroute and mgroup directives whose inbound or outbound interface does not yet exist are queued on a pending list instead of being dropped with parse error. See list with smcroutectl show pending

Fixes

  • Fix #55: on Linux, smcrouted now 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.conf or by smcroutectl. The old up-front enumeration regularly exhausted the kernel's 32-slot table on hosts with many unrelated interfaces. The -N option is now a no-op
  • Fix #143: repair kernel MFC on IGMPMSG_WRONGVIF / MRT6MSG_WRONGMIF by remapping the (S,G) entry's inbound iif when a (*,G) rule covers the upcall's actual iif

SMCRoute v2.5.7

Choose a tag to compare

@github-actions github-actions released this 09 May 17:09

Fixes

  • Fix #207: crash when adding IPv6 multicast route on a kernel without
    IPv6 multicast support

SMCRoute v2.5.6

Choose a tag to compare

@github-actions github-actions released this 28 Nov 07:05

Despite the new smcroutectl batch mode feature, this is primarily a
bug fix release. Most notably #183 and #187.

Changes

  • Add smcroutectl batch 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 native utimensat() 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

Choose a tag to compare

@github-actions github-actions released this 21 Nov 08:43

Changes

  • Revert extraction of version from GIT tag. Incompatible with systems
    that do autoreconf on a dist. tarball

Fixes

  • Fix #175: Parse error in /etc/smcroute.conf. SMCRoute fails to
    start on interfaces with mrdisc disabled, when built with mrdisc
    support and -N passed on command line

SMCRoute v2.5.4

Choose a tag to compare

@github-actions github-actions released this 13 Nov 15:08

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

Choose a tag to compare

@github-actions github-actions released this 23 Sep 11:01

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-mrdisc configure 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

Choose a tag to compare

@github-actions github-actions released this 27 Aug 16:13

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
    . Skip setsockopt() for IPC sockets. This fixes warnings in syslog about failing to disable MULTICAST_LOOP and MULTICAST_ALL

SMCRoute v2.5.1

Choose a tag to compare

@github-actions github-actions released this 22 Aug 07:41

Changes

  • Add .sha256 checksum to dist files, useful for packagers

Fixes

  • Fix #155: systemd Notify integration, restore NotifyAccess=main
  • Fix #165: ftbfs on older compilers, e.g. gcc 4.8.3, use -std=gnu99
  • Fix Documentation refs in systemd unit file, new man pages

SMCRoute v2.5.0

Choose a tag to compare

@troglobit troglobit released this 19 Aug 13:15

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 .conf files 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:
    • (*,G/LEN), issue #135 (IPv4), and issue #162 (IPv6)
    • (S/LEN,G), issue #81
    • (S/LEN,G/LEN)
  • Full SSM/ASM group join support, for both IPv4 and IPv6. Including joining group ranges from both smcroutectl and .conf, issue #118
    Please note, no SSM support on FreeBSD, only Linux
  • New command line option, -F file.conf to verify file syntax, issue #100
  • The -I NAME command line option has changed to -i NAME, compat support for the previous option remains
  • The mrdisc flag to the phyint directive 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 smcroutectl has been extensively changed. E.g, new /LEN support means wider columns, but heading have also changed
  • The .tar.xz archive has been has been dropped as distribution format, keeping only tar.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 show does not show IPv6 routes
  • Fix stochastic timer behavior, e.g. mrdisc announcements experienced interference with the (*,G) cache timer

SMCRoute v2.4.4

Choose a tag to compare

@troglobit troglobit released this 11 Feb 19:43

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 stop does not stop smcrouted
  • Fix #109: ifindex in UNIX/POSIX is an interger, not unsigned short