Package: release.debian.org
Severity: normal
User: release.debian....@packages.debian.org
Usertags: unblock

Please unblock package netscript-2.4

2 serious bugs have been fixed in 5.4.8:

#717871  netscript: fails to install due to insserv rejecting the script
header: There is a loop between service networking and netscript if started

This is due to the ifupdown providing insserv support for $network, and
netscript-2.4 also doing the same.  Both packages configure networking.  The
setting for $network is configured in /etc/insserv/insserv.conf, but there is
no way of overriding that, is there?

This is fixed by removing init.d support for insserv/sysvinit, and depending on
systemd-sysv

#773772/#773773  netscript-2.4: Interace names with '-' in them cannot be set
up, and network configuration fails.

Netscript overloads variable names by adding the interface name at the start.
'-' are not acceptable parts of /bin/bash environment variable names.  The
changes for this convert '-' in interface names to '_', which also should be
done to interface names in /etc/netscript/network.conf

This bug was fixed in 5.4.7 and I forgot to put a 'Closes' in the changelog and
had to close #773772/3 via the bugs.debian.org control interface.

A small fix involving quoting misplacement to do with bridge configuration is
also in 5.4.8.  I know this is a minor change that fixes an 'Important' level
bug I found.

I am the upstream author for Netscript and a Debian Developer (since the early
2000s), and upstream is actually released directly into Debian, hence no -1 -2
package release levels. It was one of my first Debian packages.  I would
release it differently now.  It has functional heurestics that would be nice to
have in ifupdown.  The useful iptables handling is available as a seperate
package netscript-ipfilter, which is better than iptables-persistent as it has
history, and 'helper' chains.

The above fixes are all minor 5.4.x version bug fixes. Note that new 5.x
functionality has been added.  Please unblock the package, even though it has
the bridge handling quoting fixes.

All the above has been tested on an openstack server on Jessie/unstable I am
setting up to learn about Openstack

Changlog entries for 5.4.7 and 5.4.8

(include/attach the debdiff against the package in testing)

unblock netscript-2.4/5.4.8

-- System Information:
Debian Release: 8.0
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 3.16.0-4-amd64 (SMP w/8 CPU cores)
Locale: LANG=en_NZ.utf8, LC_CTYPE=en_NZ.utf8 (charmap=UTF-8)
diff -Nru netscript-2.4-5.4.6/debian/changelog netscript-2.4-5.4.8/debian/changelog
--- netscript-2.4-5.4.6/debian/changelog	2014-12-22 19:48:40.000000000 +1300
+++ netscript-2.4-5.4.8/debian/changelog	2014-12-23 18:05:08.000000000 +1300
@@ -1,6 +1,21 @@
+netscript-2.4 (5.4.8) unstable; urgency=medium
+
+  * Remove sysvint/inserv support for package. (Closes: #771871)
+    Revert totally removing ifupdown emulation/Provides as this breaks too
+    many things.  This just removes the dependency loop in /etc/init.d files 
+    which is unfixable.
+
+ -- Matthew Grant <m...@mattgrant.net.nz>  Tue, 23 Dec 2014 17:50:04 +1300
+
+netscript-2.4 (5.4.7) unstable; urgency=medium
+
+  * Convert '-' in interface names to '_' (Closes: #773772)
+
+ -- Matthew Grant <m...@mattgrant.net.nz>  Mon, 22 Dec 2014 21:10:30 +1300
+
 netscript-2.4 (5.4.6) unstable; urgency=medium
 
-  * Remove ifupdown emulation (Closes: #771871)
+  * Remove ifupdown emulation
 
  -- Matthew Grant <m...@mattgrant.net.nz>  Mon, 22 Dec 2014 19:48:20 +1300
 
diff -Nru netscript-2.4-5.4.6/debian/control netscript-2.4-5.4.8/debian/control
--- netscript-2.4-5.4.6/debian/control	2014-12-22 19:50:08.000000000 +1300
+++ netscript-2.4-5.4.8/debian/control	2014-12-23 18:06:20.000000000 +1300
@@ -7,8 +7,8 @@
 
 Package: netscript-2.4
 Architecture: all
-Depends: iproute2 | iproute (>= 20001007), bridge-utils (>= 0.9.3), iptables, netbase, bash (>= 2.03), isc-dhcp-client | dhcpcd | pump, ${misc:Depends}
-Provides: netscript
+Depends: iproute2 | iproute (>= 20001007), bridge-utils (>= 0.9.3), iptables, netbase, bash (>= 2.03), isc-dhcp-client | dhcpcd | pump, systemd-sysv, ${misc:Depends}
+Provides: netscript, ifupdown
 Conflicts: netscript, netscript-2.2, ifupdown, netscript-ipfilter
 Replaces: netscript, ifupdown
 Suggests: whereami, dnsmasq, resolvconf, wpasupplicant, wicd, quagga, radvd, bird
diff -Nru netscript-2.4-5.4.6/debian/netscript-2.4.links netscript-2.4-5.4.8/debian/netscript-2.4.links
--- netscript-2.4-5.4.6/debian/netscript-2.4.links	2014-12-22 19:46:26.000000000 +1300
+++ netscript-2.4-5.4.8/debian/netscript-2.4.links	2014-12-23 17:43:57.000000000 +1300
@@ -2,3 +2,7 @@
 usr/share/man/man5/netscript-2.4.conf.5.gz usr/share/man/man5/if.conf.5.gz
 usr/share/man/man5/netscript-2.4.conf.5.gz usr/share/man/man5/qos.conf.5.gz
 usr/share/man/man5/netscript-2.4.conf.5.gz usr/share/man/man5/ipfilter.conf.5.gz
+usr/share/man/man8/netscript.8.gz usr/share/man/man8/ifup.8.gz
+usr/share/man/man8/netscript.8.gz usr/share/man/man8/ifdown.8.gz
+sbin/netscript sbin/ifup
+sbin/netscript sbin/ifdown
diff -Nru netscript-2.4-5.4.6/debian/README.Debian netscript-2.4-5.4.8/debian/README.Debian
--- netscript-2.4-5.4.6/debian/README.Debian	2014-12-22 18:00:21.000000000 +1300
+++ netscript-2.4-5.4.8/debian/README.Debian	2014-12-23 18:39:52.000000000 +1300
@@ -1,21 +1,7 @@
 netscript-2.4 for Debian
 ----------------------
 
-This package is still experimental, and under rapid evolution so it does not 
-come with much documentation.  It is designed to work best with a router
-software like zebra.
-
-Install a router flavour kernel, or one generated from the accompanying 
-kernel configuration.
-
-To configure kernel run:
-
-make mrproper
-cp /usr/share/doc/2.2.x-kernel.config .config
-make menuconfig
-
-and configure your kernel, save configuration, make dep; make bzImage; 
-make modules as usual.
+It is designed to work best with a router software like quagga or bird.
 
 Most of the interface level configuration you will need will be found in
 /etc/netscript/network.conf including lower level protocol
@@ -35,12 +21,8 @@
 CONFIGURATION
 -------------
 
-NB:  To get this package working, for sysvinit:
-
-you will HAVE to edit /etc/network/interfaces removing/commenting out all
-interfacesi (or declaure as inet/inet6 manual'), and edit
-/etc/default/networking by inserting 'exit 0' near the top before the first
-commands in the file.
+Sysvinit is no longer supported, thanks to ome irresolvable boot order
+dependency loops with the ifupdown package.
 
 For systemd:
 
@@ -48,11 +30,16 @@
 systemctl mask ifupdown
 systemctl mask ifup\@.service
 
+Or saving /etc/network/interfaces and purging ifupdown should suffice. 
+A lot cleaner.
+
+cp /etc/network/interfaces /tmp
+dpkg --purge ifupdown
+cp /tmp/interfaces /etc/network
+
 You may also want to mask all the NetworkManager services as well, it likes
 configuring things that are not in /etc/network/interfaces.
 
-should suffice. A lot cleaner.
-
 You may also want to disable inetd and/or portmap from starting up, but check
 that you have something like ssh setup to run in daemon mode first before doing
 inetd!  The commands would be:
diff -Nru netscript-2.4-5.4.6/if.conf netscript-2.4-5.4.8/if.conf
--- netscript-2.4-5.4.6/if.conf	2014-12-22 18:34:08.000000000 +1300
+++ netscript-2.4-5.4.8/if.conf	2014-12-22 21:06:59.000000000 +1300
@@ -9,7 +9,7 @@
 #
 ###############################################################################
 
-SED_IFSTR='s/\([A-Za-z]*\)[0-9]*$/\1/'
+SED_IFSTR='s/\([-A-Za-z]*\)[0-9]*$/\1/'
 SED_IPV4STR='s/^.*inet \([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+[/0-9]\+\) .*$/\1/'
 SED_IPV6STR='s/^.*inet6 \([0-9a-f]\+\:.*\:[0-9a-f]\+[/0-9]\+\) .*$/\1/'
 SED_IPV6ADDR="sed -e 's/:0\+\([0-9a-fA-F]\+\)/:\1/g' | sed -e 's/^0\+\([0-9a-fA-F]\+\)/\1/'| sed -e 's/\(:0\)\+:\(:0\)*\|\(:0\)*:\(:0\)\+/:/'"
@@ -116,36 +116,37 @@
 
 if_up () {
 	local ADDR
+	local IF_NODASH=`echo "$1" | sed -e 's/\-/_/g'`
 
         # sort out a few things to make life easier - here so that you
         # can see what is done and so that you can add anything if needed
-        eval IPADDR=\${"$1"_IPADDR:-""}     # I am also a good genius
-	eval MASKLEN=\${"$1"_MASKLEN:-""}
-	eval BROADCAST=\${"$1"_BROADCAST:-""}
-        eval PTPADDR=\${"$1"_PTPADDR:-""}
-        eval IP_EXTRA_ADDRS=\${"$1"_IP_EXTRA_ADDRS:-""}
-        eval MTU=\${"$1"_MTU:-""}
-        eval MULTICAST=\${"$1"_MULTICAST:-""}
-	eval HB_TICKLE=\${"$1"_HB_TICKLE:-""}
-	eval BRIDGE=\${"$1"_BRIDGE:-""}
-	eval RESOLVCONF=\${"$1"_RESOLVCONF:-""}
-	eval local DEFAULT_GW=\${"$1"_DEFAULT_GW:-""}
-        eval local FAIRQ=\${"$1"_FAIRQ:-""}
-        eval local TXQLEN=\${"$1"_TXQLEN:-""}
-        eval local IP_SPOOF=\${"$1"_IP_SPOOF:-""}
-        eval local IP_KRNL_LOGMARTIANS=\${"$1"_IP_KRNL_LOGMARTIANS:-""}
-        eval local IP_SHARED_MEDIA=\${"$1"_IP_SHARED_MEDIA:-""}
-        eval local IP_SEND_REDIRECTS=\${"$1"_IP_SEND_REDIRECTS:-""}
-        eval local PROXY_ARP=\${"$1"_PROXY_ARP:-""}
-	eval IPV6_ACCEPT_REDIRECTS=\${"$1"_IPV6_ACCEPT_REDIRECTS:-""}
-	eval IPV6_ACCEPT_RA=\${"$1"_IPV6_ACCEPT_RA:-""}
-	eval IPV6_ACCEPT_RA_PINFO=\${"$1"_IPV6_ACCEPT_RA_PINFO:-""}
-	eval IPV6_ACCEPT_RA_RT_INFO_MAX_PLEN=\${"$1"_IPV6_ACCEPT_RA_RT_INFO_MAX_PLEN:-""}
-	eval IPV6_DISABLE=\${"$1"_IPV6_DISABLE:-""}
-	eval IPV6_FWDING=\${"$1"_IPV6_FWDING:-""}
-	eval IPV6_PRIVACY=\${"$1"_IPV6_PRIVACY:-""}
-	eval IPV6_ROUTER_SOLICITATIONS=\${"$1"_IPV6_ROUTER_SOLICITATIONS:-""}
-	eval IPV6_MTU=\${"$1"_IPV6_MTU:-""}
+        eval IPADDR=\${"${IF_NODASH}"_IPADDR:-""}     # I am also a good genius
+	eval MASKLEN=\${"${IF_NODASH}"_MASKLEN:-""}
+	eval BROADCAST=\${"${IF_NODASH}"_BROADCAST:-""}
+        eval PTPADDR=\${"${IF_NODASH}"_PTPADDR:-""}
+        eval IP_EXTRA_ADDRS=\${"${IF_NODASH}"_IP_EXTRA_ADDRS:-""}
+        eval MTU=\${"${IF_NODASH}"_MTU:-""}
+        eval MULTICAST=\${"${IF_NODASH}"_MULTICAST:-""}
+	eval HB_TICKLE=\${"${IF_NODASH}"_HB_TICKLE:-""}
+	eval BRIDGE=\${"${IF_NODASH}"_BRIDGE:-""}
+	eval RESOLVCONF=\${"${IF_NODASH}"_RESOLVCONF:-""}
+	eval local DEFAULT_GW=\${"${IF_NODASH}"_DEFAULT_GW:-""}
+        eval local FAIRQ=\${"${IF_NODASH}"_FAIRQ:-""}
+        eval local TXQLEN=\${"${IF_NODASH}"_TXQLEN:-""}
+        eval local IP_SPOOF=\${"${IF_NODASH}"_IP_SPOOF:-""}
+        eval local IP_KRNL_LOGMARTIANS=\${"${IF_NODASH}"_IP_KRNL_LOGMARTIANS:-""}
+        eval local IP_SHARED_MEDIA=\${"${IF_NODASH}"_IP_SHARED_MEDIA:-""}
+        eval local IP_SEND_REDIRECTS=\${"${IF_NODASH}"_IP_SEND_REDIRECTS:-""}
+        eval local PROXY_ARP=\${"${IF_NODASH}"_PROXY_ARP:-""}
+	eval IPV6_ACCEPT_REDIRECTS=\${"${IF_NODASH}"_IPV6_ACCEPT_REDIRECTS:-""}
+	eval IPV6_ACCEPT_RA=\${"${IF_NODASH}"_IPV6_ACCEPT_RA:-""}
+	eval IPV6_ACCEPT_RA_PINFO=\${"${IF_NODASH}"_IPV6_ACCEPT_RA_PINFO:-""}
+	eval IPV6_ACCEPT_RA_RT_INFO_MAX_PLEN=\${"${IF_NODASH}"_IPV6_ACCEPT_RA_RT_INFO_MAX_PLEN:-""}
+	eval IPV6_DISABLE=\${"${IF_NODASH}"_IPV6_DISABLE:-""}
+	eval IPV6_FWDING=\${"${IF_NODASH}"_IPV6_FWDING:-""}
+	eval IPV6_PRIVACY=\${"${IF_NODASH}"_IPV6_PRIVACY:-""}
+	eval IPV6_ROUTER_SOLICITATIONS=\${"${IF_NODASH}"_IPV6_ROUTER_SOLICITATIONS:-""}
+	eval IPV6_MTU=\${"${IF_NODASH}"_IPV6_MTU:-""}
 	if [ -n "DEFAULT_GW" -a -z "$IPV4_DEFAULT_GW" ]; then
 		IPV4_DEFAULT_GW="$DEFAULT_GW"
 		IPV4_DEFAULT_GWDEV="$1"
diff -Nru netscript-2.4-5.4.6/netscript netscript-2.4-5.4.8/netscript
--- netscript-2.4-5.4.6/netscript	2014-12-22 18:34:08.000000000 +1300
+++ netscript-2.4-5.4.8/netscript	2014-12-22 21:06:59.000000000 +1300
@@ -326,7 +326,8 @@
 		return 0
 		;;
 	esac
-	eval local IF_CHAIN_AUTO=\"\${"$1"_IF_CHAIN_AUTO:-""}\"
+	local IF_NODASH=`echo "$1" | sed -e 's/\-/_/g'`
+	eval local IF_CHAIN_AUTO=\"\${"${IF_NODASH}"_IF_CHAIN_AUTO:-""}\"
 	if_up $1 && vb echo -n " $1"
 	for IF in $IF_CHAIN_AUTO; do
 	    if_up $IF && vb echo -n " $IF"
@@ -366,8 +367,9 @@
 		;;
 	esac
 	local REV_IF_CHAIN
-	eval local IF_CHAIN=\"\${"$1"_IF_CHAIN:-""}\"
-	eval local IF_CHAIN_AUTO=\"\${"$1"_IF_CHAIN_AUTO:-""}\"
+	local IF_NODASH=`echo "$1" | sed -e 's/\-/_/g'`
+	eval local IF_CHAIN=\"\${"${IF_NODASH}"_IF_CHAIN:-""}\"
+	eval local IF_CHAIN_AUTO=\"\${"${IF_NODASH}"_IF_CHAIN_AUTO:-""}\"
 	IF_CHAIN="$IF_CHAIN_AUTO $IF_CHAIN" 
 	for IF in $IF_CHAIN; do
 		REV_IF_CHAIN="$REV_IF_CHAIN $IF"
@@ -543,16 +545,15 @@
 	esac
 
 	BRG_DEVLIST=`brctl show | sed -e '1d' | grep '^[-a-zA-Z0-9_]' | sed -e 's/^\([a-zA-Z0-9_\-]\+\)[ 	].*$/\1/'`
-
 	for BRG in $BRG_DEVLIST; do
-		ANS=`echo $BRG_LIST | grep $BRG`
+		ANS=`echo "$BRG_LIST" | grep "$BRG"`
 		if [ -z "$ANS" ]; then
-			qt ip link set dev $BRG down
-			brctl delbr $BRG
+			qt ip link set dev "$BRG" down
+			brctl delbr "$BRG"
 		fi
 	done
 	for BRG in $BRG_LIST; do
-		brctl addbr $BRG > /dev/null 2>&1
+		brctl addbr "$BRG" > /dev/null 2>&1
 	done
 
 	brg_unbind_netfilter
@@ -574,9 +575,9 @@
 			BRG=$3
 		fi
 		[ -z "$BRG" ] && return 0
-		ANS="echo $BRG_LIST | grep $BRG"
+		ANS=`echo "$BRG_LIST" | grep "$BRG"`
 		if [ -n "$ANS" ]; then
-			brctl addif $BRG $1 > /dev/null 2>&1
+			brctl addif "$BRG" $1 > /dev/null 2>&1
 			[ -z "$4" ] && ifv6_setproc $1 disable_ipv6 YES
 		fi
 		;;
diff -Nru netscript-2.4-5.4.6/netscript.ppp.ip-down netscript-2.4-5.4.8/netscript.ppp.ip-down
--- netscript-2.4-5.4.6/netscript.ppp.ip-down	2014-12-22 18:34:08.000000000 +1300
+++ netscript-2.4-5.4.8/netscript.ppp.ip-down	2014-12-22 21:06:59.000000000 +1300
@@ -12,8 +12,9 @@
 . /etc/netscript/qos.conf
 
 REV_PPP_CHAIN=''
-eval PPP_CHAIN=\"\${"$PPP_IFACE"_PPP_CHAIN:-""}\"
-eval PPP_CHAIN_AUTO=\"\${"$PPP_IFACE"_PPP_CHAIN_AUTO:-""}\"
+IF_NODASH=`echo "$PPP_IFACE" | sed -e 's/\-/_/g'`
+eval PPP_CHAIN=\"\${"${IF_NODASH}"_PPP_CHAIN:-""}\"
+eval PPP_CHAIN_AUTO=\"\${"${IF_NODASH}"_PPP_CHAIN_AUTO:-""}\"
 PPP_CHAIN="$PPP_CHAIN_AUTO $PPP_CHAIN" 
 for IF in $PPP_CHAIN; do
 	REV_PPP_CHAIN="$REV_PPP_CHAIN $IF"
diff -Nru netscript-2.4-5.4.6/netscript.ppp.ip-up netscript-2.4-5.4.8/netscript.ppp.ip-up
--- netscript-2.4-5.4.6/netscript.ppp.ip-up	2014-12-22 18:34:08.000000000 +1300
+++ netscript-2.4-5.4.8/netscript.ppp.ip-up	2014-12-22 21:06:59.000000000 +1300
@@ -16,7 +16,9 @@
 	ip_QoS $PPP_IFACE
 fi
 
-eval TXQLEN=\${"$PPP_IFACE"_TXQLEN:-""}
+IF_NODASH=`echo "$PPP_IFACE" | sed -e 's/\-/_/g'`
+
+eval TXQLEN=\${"${IF_NODASH}"_TXQLEN:-""}
 [ -z "$TXQLEN" ] && eval TXQLEN=\${ppp_TXQLEN:-""}
 [ -n "$TXQLEN" ] \
 	&& ip link set dev $PPP_IFACE txqlen $TXQLEN
@@ -28,7 +30,7 @@
         ${PPP_IFACE}_network_ppp $PPP_IFACE
 fi
 
-eval PPP_CHAIN_AUTO=\"\${"$PPP_IFACE"_PPP_CHAIN_AUTO:-""}\"
+eval PPP_CHAIN_AUTO=\"\${"${IF_NODASH}"_PPP_CHAIN_AUTO:-""}\"
 for IF in $PPP_CHAIN_AUTO; do
     if_up $IF
 done
diff -Nru netscript-2.4-5.4.6/qos.conf netscript-2.4-5.4.8/qos.conf
--- netscript-2.4-5.4.6/qos.conf	2014-12-22 18:34:08.000000000 +1300
+++ netscript-2.4-5.4.8/qos.conf	2014-12-22 21:06:59.000000000 +1300
@@ -57,19 +57,20 @@
 }
  
 ip_QoS () {
+	local IF_NODASH=`echo "$1" | sed -e 's/\-/_/g'`
 
         # Set some vaiables
-        eval local HNDL1=\${"$1"_HNDL1:-""}
-        eval local HNDL2=\${"$1"_HNDL2:-""}
-        eval local FAIRQ=\${"$1"_FAIRQ:-""}
-        eval local BNDWIDTH=\${"$1"_BNDWIDTH:-""}
-        eval local PXMTU=\${"$1"_PXMTU:-""}
-        eval local CARATE=\${"$1"_CARATE:-""}
-        eval local IARATE=\${"$1"_IARATE:-""}
-        eval local IABURST=\${"$1"_IABURST:-""}
-	eval local SPQUEUE=\${"$1"_SPQUEUE:-""}
-	eval local PEAKRATE=\${"$1"_PEAKRATE:-"$BNDWIDTH"}
-	eval local BULKRATE=\${"$1"_BULKRATE:-"$CARATE"}
+        eval local HNDL1=\${"${IF_NODASH}"_HNDL1:-""}
+        eval local HNDL2=\${"${IF_NODASH}"_HNDL2:-""}
+        eval local FAIRQ=\${"${IF_NODASH}"_FAIRQ:-""}
+        eval local BNDWIDTH=\${"${IF_NODASH}"_BNDWIDTH:-""}
+        eval local PXMTU=\${"${IF_NODASH}"_PXMTU:-""}
+        eval local CARATE=\${"${IF_NODASH}"_CARATE:-""}
+        eval local IARATE=\${"${IF_NODASH}"_IARATE:-""}
+        eval local IABURST=\${"${IF_NODASH}"_IABURST:-""}
+	eval local SPQUEUE=\${"${IF_NODASH}"_SPQUEUE:-""}
+	eval local PEAKRATE=\${"${IF_NODASH}"_PEAKRATE:-"$BNDWIDTH"}
+	eval local BULKRATE=\${"${IF_NODASH}"_BULKRATE:-"$CARATE"}
 
         if [ ! -x /sbin/tc ]; then
                 return 1

Reply via email to