From c1d7a52552cc0a7922990aad8c0b95cf3bda104f Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Wed, 17 Sep 2014 15:19:26 -0400 Subject: [PATCH] MT#9065 daemon: don't restart if kernel is needed but not yet installed Squashed commit of the following: commit 29560cc3dca2d5f3220cb2032088035a086bee12 Author: Richard Fuchs Date: Wed Sep 17 15:15:48 2014 -0400 fix shell quoting commit 3085b78377463225c52abc1a7c6d367924c2cb05 Author: Richard Fuchs Date: Wed Sep 17 13:52:26 2014 -0400 silence modinfo stderr commit f275f3dbb1d52113ece74132ac29ae2473b354bd Author: Richard Fuchs Date: Wed Sep 17 13:52:09 2014 -0400 s/MEDIAPROXY/RTPENGINE/ commit ff6b7db25d439eae69f561e71c5dd513cb061e57 Author: Richard Fuchs Date: Wed Sep 17 11:28:26 2014 -0400 MT#9065 use modinfo/lsmod to probe for kernel module instead of dkms commit 7d1841294ec26a5e685675a2bcd861aa3269a3c4 Author: Victor Seva Date: Tue Sep 16 20:56:57 2014 +0200 MT#9065 daemon: don't restart if kernel is needed but not yet installed --- debian/ngcp-rtpengine-daemon.init | 26 ++++++++++---------- debian/ngcp-rtpengine-daemon.postinst | 35 +++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 13 deletions(-) create mode 100644 debian/ngcp-rtpengine-daemon.postinst diff --git a/debian/ngcp-rtpengine-daemon.init b/debian/ngcp-rtpengine-daemon.init index 521ffe0d7..0fa309cca 100755 --- a/debian/ngcp-rtpengine-daemon.init +++ b/debian/ngcp-rtpengine-daemon.init @@ -90,7 +90,7 @@ case "$1" in esac fi echo -n "Starting $DESC: $NAME" - if [ $TABLE -ge 0 ] && [ "$VIRT" != "yes" ]; then + if [ "$TABLE" -ge 0 ] && [ "$VIRT" != "yes" ]; then set +e modprobe xt_MEDIAPROXY if [ -e /proc/mediaproxy/control ]; then @@ -99,13 +99,13 @@ case "$1" in iptables -N mediaproxy 2> /dev/null iptables -D INPUT -j mediaproxy 2> /dev/null iptables -I INPUT -j mediaproxy - iptables -D mediaproxy -p udp -j MEDIAPROXY --id $TABLE 2>/dev/null - iptables -I mediaproxy -p udp -j MEDIAPROXY --id $TABLE + iptables -D mediaproxy -p udp -j MEDIAPROXY --id "$TABLE" 2>/dev/null + iptables -I mediaproxy -p udp -j MEDIAPROXY --id "$TABLE" ip6tables -N mediaproxy 2> /dev/null ip6tables -D INPUT -j mediaproxy 2> /dev/null ip6tables -I INPUT -j mediaproxy - ip6tables -D mediaproxy -p udp -j MEDIAPROXY --id $TABLE 2>/dev/null - ip6tables -I mediaproxy -p udp -j MEDIAPROXY --id $TABLE + ip6tables -D mediaproxy -p udp -j MEDIAPROXY --id "$TABLE" 2>/dev/null + ip6tables -I mediaproxy -p udp -j MEDIAPROXY --id "$TABLE" set -e fi start-stop-daemon --start --quiet --pidfile $PIDFILE \ @@ -119,15 +119,15 @@ case "$1" in if [ "$?" -ne 0 ]; then return $? fi - if [ $TABLE -ge 0 ] && [ "$VIRT" != "yes" ]; then + if [ "$TABLE" -ge 0 ] && [ "$VIRT" != "yes" ]; then set +e if [ -e /proc/mediaproxy/control ]; then echo "del $TABLE" > /proc/mediaproxy/control 2>/dev/null fi iptables -D INPUT -j mediaproxy 2> /dev/null - iptables -D mediaproxy -p udp -j MEDIAPROXY --id $TABLE 2>/dev/null + iptables -D mediaproxy -p udp -j MEDIAPROXY --id "$TABLE" 2>/dev/null ip6tables -D INPUT -j mediaproxy 2> /dev/null - ip6tables -D mediaproxy -p udp -j MEDIAPROXY --id $TABLE 2>/dev/null + ip6tables -D mediaproxy -p udp -j MEDIAPROXY --id "$TABLE" 2>/dev/null rmmod xt_MEDIAPROXY 2>/dev/null set -e fi @@ -156,24 +156,24 @@ case "$1" in ;; esac fi - if [ $TABLE -ge 0 ] && [ "$VIRT" != "yes" ]; then + if [ "$TABLE" -ge 0 ] && [ "$VIRT" != "yes" ]; then sleep 1 set +e if [ -e /proc/mediaproxy/control ]; then echo "del $TABLE" > /proc/mediaproxy/control 2>/dev/null fi iptables -D INPUT -j mediaproxy 2> /dev/null - iptables -D mediaproxy -p udp -j MEDIAPROXY --id $TABLE 2>/dev/null + iptables -D mediaproxy -p udp -j MEDIAPROXY --id "$TABLE" 2>/dev/null ip6tables -D INPUT -j mediaproxy 2> /dev/null - ip6tables -D mediaproxy -p udp -j MEDIAPROXY --id $TABLE 2>/dev/null + ip6tables -D mediaproxy -p udp -j MEDIAPROXY --id "$TABLE" 2>/dev/null rmmod xt_MEDIAPROXY 2>/dev/null modprobe xt_MEDIAPROXY iptables -N mediaproxy 2> /dev/null iptables -I INPUT -j mediaproxy - iptables -I mediaproxy -p udp -j MEDIAPROXY --id $TABLE + iptables -I mediaproxy -p udp -j MEDIAPROXY --id "$TABLE" ip6tables -N mediaproxy 2> /dev/null ip6tables -I INPUT -j mediaproxy - ip6tables -I mediaproxy -p udp -j MEDIAPROXY --id $TABLE + ip6tables -I mediaproxy -p udp -j MEDIAPROXY --id "$TABLE" set -e fi start-stop-daemon --start --quiet --pidfile \ diff --git a/debian/ngcp-rtpengine-daemon.postinst b/debian/ngcp-rtpengine-daemon.postinst new file mode 100644 index 000000000..5af0f86f6 --- /dev/null +++ b/debian/ngcp-rtpengine-daemon.postinst @@ -0,0 +1,35 @@ +#!/bin/sh + +set -e + +default=/etc/default/ngcp-rtpengine-daemon +modname=xt_MEDIAPROXY + +if [ -x /usr/sbin/ngcp-virt-identify ]; then + if /usr/sbin/ngcp-virt-identify --type container; then + VIRT="yes" + fi +fi + +if [ "$VIRT" = "yes" ]; then + echo "Container environment detected. Skip kernel module check" +else + if [ -f $default ]; then + . $default || true + fi + + if [ "$TABLE" -ge 0 -a -n "$NO_FALLBACK" -a \( "$NO_FALLBACK" = "1" -o "$NO_FALLBACK" = "yes" \) ]; then + if lsmod | grep -q $modname || modinfo $modname > /dev/null 2> /dev/null; then + true + else + echo "Kernel module $modname not found and NO_FALLBACK is set." + echo "Daemon restart not performed." + exit 0 + fi + fi +fi + +#DEBHELPER# + +exit 0 +