mirror of https://github.com/sipwise/rtpengine.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
231 lines
3.9 KiB
231 lines
3.9 KiB
#!/bin/bash
|
|
#
|
|
# rtpengine Startup script for NGCP rtpengine
|
|
#
|
|
# chkconfig: 345 84 16
|
|
# description: NGCP rtpengine
|
|
#
|
|
# processname: rtpengine
|
|
# config: /etc/sysconfig/rtpengine
|
|
# pidfile: /var/run/rtpengine.pid
|
|
#
|
|
### BEGIN INIT INFO
|
|
# Provides: rtpengine
|
|
# Required-Start: $local_fs $network
|
|
# Short-Description: NGCP rtpengine
|
|
# Description: NGCP rtpengine
|
|
### END INIT INFO
|
|
|
|
# Source function library.
|
|
. /etc/rc.d/init.d/functions
|
|
|
|
if [ -f /etc/sysconfig/rtpengine ]
|
|
then
|
|
. /etc/sysconfig/rtpengine
|
|
else
|
|
echo "Error: /etc/sysconfig/mediproxy-ng not present"
|
|
exit -1
|
|
fi
|
|
|
|
rtpengine=/usr/sbin/rtpengine
|
|
prog=rtpengine
|
|
pidfile=${PIDFILE-/var/run/rtpengine.pid}
|
|
lockfile=${LOCKFILE-/var/lock/subsys/rtpengine}
|
|
cachefile=/var/lib/rtpengine/rtpengine.cfg
|
|
RETVAL=0
|
|
|
|
OPTS="--pidfile $pidfile"
|
|
MODULE=0
|
|
IP6=0
|
|
|
|
build_opts() {
|
|
shopt -s nocasematch
|
|
RPMS=`rpm -qa | grep ngcp-rtpengine-kernel`
|
|
if [[ "$KERNEL" == "yes" && -n "$TABLE" && -n "$RPMS" ]]
|
|
then
|
|
MODULE=1
|
|
OPTS+=" --table=$TABLE"
|
|
else
|
|
MODULE=0
|
|
OPTS+=" --table=-1"
|
|
fi
|
|
|
|
if [[ "$FALLBACK" != "yes" ]]
|
|
then
|
|
OPTS+=" --no-fallback"
|
|
fi
|
|
shopt -u nocasematch
|
|
|
|
if [[ -n "$RTP_IP" ]]
|
|
then
|
|
OPTS+=" --interface=$RTP_IP"
|
|
fi
|
|
|
|
if [[ -n "$RTP_ADV_IP" ]]
|
|
then
|
|
OPTS+="!$RTP_ADV_IP"
|
|
fi
|
|
|
|
if [[ -n "$RTP_IP6" ]]
|
|
then
|
|
OPTS+=" --interface=$RTP_IP6"
|
|
IP6=1
|
|
fi
|
|
|
|
if [[ -n "$RTP_ADV_IP6" ]]
|
|
then
|
|
OPTS+="!$RTP_ADV_IP6"
|
|
fi
|
|
|
|
if [[ -n "$LISTEN_TCP" ]]
|
|
then
|
|
OPTS+=" --listen-tcp=$LISTEN_TCP"
|
|
fi
|
|
|
|
if [[ -n "$LISTEN_UDP" ]]
|
|
then
|
|
OPTS+=" --listen-udp=$LISTEN_UDP"
|
|
fi
|
|
|
|
if [[ -n "$LISTEN_NG" ]]
|
|
then
|
|
OPTS+=" --listen-ng=$LISTEN_NG"
|
|
fi
|
|
|
|
if [[ -n "$TOS" ]]
|
|
then
|
|
OPTS+=" --tos=$TOS"
|
|
fi
|
|
|
|
if [[ -n "$TIMEOUT" ]]
|
|
then
|
|
OPTS+=" --timeout=$TIMEOUT"
|
|
fi
|
|
|
|
if [[ -n "$SILENT_TIMEOUT" ]]
|
|
then
|
|
OPTS+=" --silent-timeout=$SILENT_TIMEOUT"
|
|
fi
|
|
|
|
if [[ -n "$PORT_MIN" ]]
|
|
then
|
|
OPTS+=" --port-min=$PORT_MIN"
|
|
fi
|
|
|
|
if [[ -n "$PORT_MAX" ]]
|
|
then
|
|
OPTS+=" --port-max=$PORT_MAX"
|
|
fi
|
|
|
|
if [[ -n "$REDIS" ]]
|
|
then
|
|
OPTS+=" --redis=$REDIS"
|
|
fi
|
|
|
|
if [[ -n "$REDIS_DB" ]]
|
|
then
|
|
OPTS+=" --redis-db=$REDIS_DB"
|
|
fi
|
|
|
|
if [[ -n "$B2B_URL" ]]
|
|
then
|
|
OPTS+=" --b2b-url=$B2B_URL"
|
|
fi
|
|
|
|
if [[ -n "$LOG_LEVEL" ]]
|
|
then
|
|
OPTS+=" --log-level=$LOG_LEVEL"
|
|
fi
|
|
|
|
if [[ -n "$LOG_FACILITY" ]]
|
|
then
|
|
OPTS+=" --log-facility=$LOG_FACILITY"
|
|
fi
|
|
|
|
if [[ -n "$NUM_THREADS" ]]
|
|
then
|
|
OPTS+=" --num-threads=$NUM_THREADS"
|
|
fi
|
|
}
|
|
|
|
start() {
|
|
build_opts
|
|
if [[ $MODULE == 1 ]]
|
|
then
|
|
echo "Loading module for in-kernel packet forwarding"
|
|
rmmod xt_MEDIAPROXY 2> /dev/null
|
|
modprobe xt_RTPENGINE
|
|
iptables -N rtpengine
|
|
iptables -t filter -A INPUT -j rtpengine
|
|
iptables -I rtpengine -p udp -j RTPENGINE --id $TABLE
|
|
if [[ $IP6 == 1 ]]
|
|
then
|
|
ip6tables -I rtpengine -p udp -j RTPENGINE --id $TABLE
|
|
fi
|
|
|
|
cat <<EOF > "$cachefile"
|
|
CUR_TABLE=$TABLE
|
|
CUR_IP6=$IP6
|
|
EOF
|
|
fi
|
|
echo -n $"Starting $prog: "
|
|
daemon --pidfile=${pidfile} $rtpengine $OPTS
|
|
RETVAL=$?
|
|
echo
|
|
[ $RETVAL = 0 ] && touch ${lockfile}
|
|
return $RETVAL
|
|
}
|
|
|
|
stop() {
|
|
echo -n $"Stopping $prog: "
|
|
killproc -p ${pidfile} $rtpengine
|
|
RETVAL=$?
|
|
echo
|
|
if [ -f "$cachefile" ]
|
|
then
|
|
. "$cachefile"
|
|
echo "Unloading module for in-kernel packet forwarding"
|
|
echo "del $TABLE" > /proc/rtpengine/control
|
|
iptables -D rtpengine -p udp -j RTPENGINE --id $CUR_TABLE
|
|
if [[ $CUR_IP6 == 1 ]]
|
|
then
|
|
ip6tables -D rtpengine -p udp -j RTPENGINE --id $CUR_TABLE
|
|
fi
|
|
iptables -t filter -D INPUT -j rtpengine
|
|
iptables -X rtpengine
|
|
# rmmod xt_RTPENGINE
|
|
rm -f $cachefile
|
|
fi
|
|
|
|
[ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
|
|
}
|
|
|
|
# See how we were called.
|
|
case "$1" in
|
|
start)
|
|
start
|
|
;;
|
|
stop)
|
|
stop
|
|
;;
|
|
status)
|
|
status -p ${pidfile} $rtpengine
|
|
RETVAL=$?
|
|
;;
|
|
restart)
|
|
stop
|
|
start
|
|
;;
|
|
condrestart|try-restart)
|
|
if status -p ${pidfile} $rtpengine >&/dev/null; then
|
|
stop
|
|
start
|
|
fi
|
|
;;
|
|
*)
|
|
echo $"Usage: $prog {start|stop|restart|condrestart|try-restart|status}"
|
|
RETVAL=2
|
|
esac
|
|
|
|
exit $RETVAL
|