diff -Nru smcroute-2.4.2/debian/changelog smcroute-2.4.2/debian/changelog --- smcroute-2.4.2/debian/changelog 2018-09-23 20:40:04.000000000 +0000 +++ smcroute-2.4.2/debian/changelog 2019-03-07 05:40:19.000000000 +0000 @@ -1,3 +1,17 @@ +smcroute (2.4.2-4) unstable; urgency=medium + + * Import upstream fix for malfunctioning 'stop' command to init script, + closes: #924044 + * Import upstream fix to allow same outbound interface as inbound when + routing. This is slightly hairy, but previous releases of SMCRoute + supported this and the unit tests rely on this to work + * Fix unit tests, with upstream and test setup fixes, closes: #921577 + * Bump Standards-Version to 4.3.0, no changes needed + * Use debhelper maintscript to relocate old /etc/startup.sh script + to /etc/smcroute. Fixes an outstanding lintian warning + + -- Joachim Nilsson Thu, 07 Mar 2019 06:40:19 +0100 + smcroute (2.4.2-3) unstable; urgency=medium * Add missing Build-Depends for systemd, needed for unit file path diff -Nru smcroute-2.4.2/debian/control smcroute-2.4.2/debian/control --- smcroute-2.4.2/debian/control 2018-09-21 19:54:23.000000000 +0000 +++ smcroute-2.4.2/debian/control 2019-03-07 05:40:19.000000000 +0000 @@ -3,7 +3,7 @@ Priority: optional Maintainer: Joachim Nilsson Build-Depends: debhelper (>= 10), libcap-dev, systemd, pkg-config -Standards-Version: 4.2.1 +Standards-Version: 4.3.0 Homepage: http://troglobit.com/smcroute.html Vcs-Browser: https://salsa.debian.org/debian/smcroute Vcs-Git: https://salsa.debian.org/debian/smcroute.git diff -Nru smcroute-2.4.2/debian/gitlab-ci.yml smcroute-2.4.2/debian/gitlab-ci.yml --- smcroute-2.4.2/debian/gitlab-ci.yml 1970-01-01 00:00:00.000000000 +0000 +++ smcroute-2.4.2/debian/gitlab-ci.yml 2019-03-07 05:40:19.000000000 +0000 @@ -0,0 +1,9 @@ +image: registry.salsa.debian.org/salsa-ci-team/ci-image-git-buildpackage:latest + +build: + artifacts: + paths: + - "*.deb" + expire_in: 1 day + script: + - gitlab-ci-git-buildpackage-all diff -Nru smcroute-2.4.2/debian/patches/0004-Allow-same-outbound-interface-as-inbound.patch smcroute-2.4.2/debian/patches/0004-Allow-same-outbound-interface-as-inbound.patch --- smcroute-2.4.2/debian/patches/0004-Allow-same-outbound-interface-as-inbound.patch 1970-01-01 00:00:00.000000000 +0000 +++ smcroute-2.4.2/debian/patches/0004-Allow-same-outbound-interface-as-inbound.patch 2019-03-07 05:40:19.000000000 +0000 @@ -0,0 +1,96 @@ +commit 802d82eb5c571afe2a294fd302745bf37cc13a1d +Author: Joachim Nilsson +Date: Sun Feb 10 13:56:17 2019 +0100 + + Allow same outbound interface as inbound, only warn user + + Routing back multicast to the same interface it ingressed on is + quite a bit dangerous, but there may be use-cases where this is + a requirement so we should not artificially limit the user. + + Also, allowing this means enabling unit testing on systems with + only one interface. + + Signed-off-by: Joachim Nilsson + +diff --git a/src/conf.c b/src/conf.c +index 974871a..d1fbeed 100644 +--- a/src/conf.c ++++ b/src/conf.c +@@ -31,6 +31,8 @@ + #define MAX_LINE_LEN 512 + #define DEBUG(fmt, args...) \ + smclog(LOG_DEBUG, "%s:%02d: " fmt, conf, lineno, ##args) ++#define INFO(fmt, args...) \ ++ smclog(LOG_INFO, "%s:%02d: " fmt, conf, lineno, ##args) + #define WARN(fmt, args...) \ + smclog(LOG_WARNING, "%s:%02d: " fmt, conf, lineno, ##args) + +@@ -166,13 +168,9 @@ static int add_mroute(int lineno, char *ifname, char *group, char *source, char + iface_match_init(&state_out); + while ((mif = iface_match_mif_by_name(outbound[i], &state_out, &iface)) >= 0) { + if (mif == mroute.inbound) { +- state_out.match_count--; +- /* In case of wildcard matches, in==out is +- * quite normal, so don't complain +- */ ++ /* In case of wildcard match in==out is normal, so don't complain */ + if (!ifname_is_wildcard(ifname) && !ifname_is_wildcard(outbound[i])) +- WARN("Same outbound IPv6 interface (%s) as inbound (%s)?", outbound[i], ifname); +- continue; ++ INFO("Same outbound IPv6 interface (%s) as inbound (%s) may cause routing loops.", outbound[i], ifname); + } + + /* Use a TTL threshold to indicate the list of outbound interfaces. */ +@@ -237,13 +235,9 @@ static int add_mroute(int lineno, char *ifname, char *group, char *source, char + iface_match_init(&state_out); + while ((vif = iface_match_vif_by_name(outbound[i], &state_out, &iface)) >= 0) { + if (vif == mroute.inbound) { +- state_out.match_count--; ++ /* In case of wildcard match in==out is normal, so don't complain */ + if (!ifname_is_wildcard(ifname) && !ifname_is_wildcard(outbound[i])) +- /* In case of wildcard matches, in==out is +- * quite normal, so don't complain +- */ +- WARN("Same outbound IPv4 interface (%s) as inbound (%s)?", outbound[i], ifname); +- continue; ++ INFO("Same outbound IPv4 interface (%s) as inbound (%s) may cause routing loops.", outbound[i], ifname); + } + + /* Use a TTL threshold to indicate the list of outbound interfaces. */ +diff --git a/src/msg.c b/src/msg.c +index ea3f03b..1dcb459 100644 +--- a/src/msg.c ++++ b/src/msg.c +@@ -179,13 +179,9 @@ static int do_mroute4(struct ipc_msg *msg) + iface_match_init(&state_out); + while ((vif = iface_match_vif_by_name(ifname_out, &state_out, NULL)) >= 0) { + if (vif == mroute.inbound) { +- state_out.match_count--; +- /* In case of wildcard matches, in==out is +- * quite normal, so don't complain +- */ ++ /* In case of wildcard match in==out is normal, so don't complain */ + if (!ifname_is_wildcard(ifname_in) && !ifname_is_wildcard(ifname_out) && !errmsg++) +- smclog(LOG_WARNING, "Same outbound interface (%s) as inbound (%s)?", ifname_out, ifname_in); +- continue; ++ smclog(LOG_WARNING, "Same outbound interface (%s) as inbound (%s) may cause routing loops.", ifname_out, ifname_in); + } + mroute.ttl[vif] = 1; /* Use a TTL threshold */ + total++; +@@ -267,13 +263,9 @@ static int do_mroute6(struct ipc_msg *msg) + iface_match_init(&state_out); + while ((mif = iface_match_mif_by_name(ifname_out, &state_out, NULL)) >= 0) { + if (mif == mroute.inbound) { +- state_out.match_count--; +- /* In case of wildcard matches, in==out is +- * quite normal, so don't complain +- */ ++ /* In case of wildcard match in==out is normal, so don't complain */ + if (!ifname_is_wildcard(ifname_in) && !ifname_is_wildcard(ifname_out) && !errmsg++) +- smclog(LOG_WARNING, "Same outbound interface (%s) as inbound (%s)?", ifname_out, ifname_in); +- continue; ++ smclog(LOG_INFO, "Same outbound interface (%s) as inbound (%s) may cause routing loops.", ifname_out, ifname_in); + } + mroute.ttl[mif] = 1; /* Use a TTL threshold */ + total++; diff -Nru smcroute-2.4.2/debian/patches/0005-fix-init-script-stop-command.patch smcroute-2.4.2/debian/patches/0005-fix-init-script-stop-command.patch --- smcroute-2.4.2/debian/patches/0005-fix-init-script-stop-command.patch 1970-01-01 00:00:00.000000000 +0000 +++ smcroute-2.4.2/debian/patches/0005-fix-init-script-stop-command.patch 2019-03-07 05:40:19.000000000 +0000 @@ -0,0 +1,29 @@ +commit 6f4e2c1ce8e0f6821e5254000ed43a4fd7744782 +Author: hn +Date: Mon Jan 28 09:56:33 2019 +0100 + + fix init script 'stop' command + +diff --git a/smcroute.init b/smcroute.init +old mode 100644 +new mode 100755 +index 00411b8..d0c7752 +--- a/smcroute.init ++++ b/smcroute.init +@@ -18,6 +18,7 @@ + + PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin + DAEMON=/usr/sbin/smcrouted ++DAEMONCTL=/usr/sbin/smcroutectl + DAEMON_OPTS= + NAME=smcrouted + DESC="static multicast router daemon" +@@ -50,7 +51,7 @@ stop() { + local error + local result + log_begin_msg "Stopping $DESC: $NAME" +- error=$($DAEMON -k 2>&1) ++ error=$($DAEMONCTL kill 2>&1) + result=$? + log_progress_msg ${error#ERRO: } + log_end_msg $result diff -Nru smcroute-2.4.2/debian/patches/series smcroute-2.4.2/debian/patches/series --- smcroute-2.4.2/debian/patches/series 2018-09-23 18:57:23.000000000 +0000 +++ smcroute-2.4.2/debian/patches/series 2019-03-07 05:40:19.000000000 +0000 @@ -1,3 +1,5 @@ 0001-Minor-fix-spelling-found-by-lintian.patch 0002-Add-missing-status-command-to-SysV-init-script-found.patch 0003-Fix-too-long-unbreakable-line.patch +0004-Allow-same-outbound-interface-as-inbound.patch +0005-fix-init-script-stop-command.patch diff -Nru smcroute-2.4.2/debian/smcroute.maintscript smcroute-2.4.2/debian/smcroute.maintscript --- smcroute-2.4.2/debian/smcroute.maintscript 1970-01-01 00:00:00.000000000 +0000 +++ smcroute-2.4.2/debian/smcroute.maintscript 2019-03-07 05:40:19.000000000 +0000 @@ -0,0 +1 @@ +mv_conffile /etc/startup.sh /etc/smcroute/startup.sh 2.0.0-4 diff -Nru smcroute-2.4.2/debian/smcroute.postinst smcroute-2.4.2/debian/smcroute.postinst --- smcroute-2.4.2/debian/smcroute.postinst 2018-09-12 20:10:12.000000000 +0000 +++ smcroute-2.4.2/debian/smcroute.postinst 1970-01-01 00:00:00.000000000 +0000 @@ -1,8 +0,0 @@ -#! /bin/sh -set -e - -if dpkg-maintscript-helper supports mv_conffile 2>/dev/null; then - dpkg-maintscript-helper mv_conffile /etc/startup.sh /etc/smcroute/startup.sh 2.0.0-4 -- "$@" -fi - -#DEBHELPER# diff -Nru smcroute-2.4.2/debian/smcroute.postrm smcroute-2.4.2/debian/smcroute.postrm --- smcroute-2.4.2/debian/smcroute.postrm 2018-09-12 20:10:12.000000000 +0000 +++ smcroute-2.4.2/debian/smcroute.postrm 1970-01-01 00:00:00.000000000 +0000 @@ -1,8 +0,0 @@ -#! /bin/sh -set -e - -if dpkg-maintscript-helper supports mv_conffile 2>/dev/null; then - dpkg-maintscript-helper mv_conffile /etc/startup.sh /etc/smcroute/startup.sh 2.0.0-4 -- "$@" -fi - -#DEBHELPER# diff -Nru smcroute-2.4.2/debian/smcroute.preinst smcroute-2.4.2/debian/smcroute.preinst --- smcroute-2.4.2/debian/smcroute.preinst 2018-09-12 20:10:12.000000000 +0000 +++ smcroute-2.4.2/debian/smcroute.preinst 1970-01-01 00:00:00.000000000 +0000 @@ -1,8 +0,0 @@ -#! /bin/sh -set -e - -if dpkg-maintscript-helper supports mv_conffile 2>/dev/null; then - dpkg-maintscript-helper mv_conffile /etc/startup.sh /etc/smcroute/startup.sh 2.0.0-4 -- "$@" -fi - -#DEBHELPER# diff -Nru smcroute-2.4.2/debian/tests/daemon-init-scripts smcroute-2.4.2/debian/tests/daemon-init-scripts --- smcroute-2.4.2/debian/tests/daemon-init-scripts 2018-09-12 20:10:12.000000000 +0000 +++ smcroute-2.4.2/debian/tests/daemon-init-scripts 2019-03-07 05:40:19.000000000 +0000 @@ -8,7 +8,11 @@ INIT_SCRIPT => '/etc/init.d/smcroute', }; -plan tests => 10; +plan tests => 11; + +# Work around test harness, start smcrouted if not already running +my $startup = capture EXIT_ANY, INIT_SCRIPT, 'start'; +pass($startup); # Verify that smcroute is running my $initial_smcroute_pid = capture EXIT_ANY, 'pgrep', 'smcroute'; chomp $initial_smcroute_pid;