solaris: fix SMF manifest dependency model and start method

Resolves an issue where quagga daemons restart in an infinite loop.
Quagga daemons declare a dependency on zebra that requires a restart
of the daemon when zebra restarts and they explicitly restart zebra,
which again triggers their own restart.

Restarting zebra when other daemons are started is explicitly removed,
leaving dependency management up to SMF rather than handling it in the
start method.

solaris/quagga.init.in: Remove calls to routeadm_zebra_enable, and the
    routeadm_zebra_enable function.
solaris/quagga.xml.in: Set dependency zebra grouping to require_all.

Fixes: #818
Signed-off-by: Greg Troxel <gdt@ir.bbn.com>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
(cherry picked from commit 75a3cf6cf69f6ab940f8421b0f79b2b1f689b904)
This commit is contained in:
Brian Bennett 2015-02-17 23:26:12 +00:00 committed by Daniel Walton
parent 373ba5cd5d
commit a99d18507c
2 changed files with 7 additions and 31 deletions

View File

@ -146,31 +146,6 @@ routeadm_daemon_args () {
echo ${args}
}
# certain daemons need zebra
routeadm_zebra_enable () {
if [ "$DAEMON" = "zebra" ]; then
return
fi
enable_zebra=`/usr/bin/svcprop -p \
routing/enable_zebra $SMF_FMRI 2> /dev/null`
if [ "$enable_zebra" != "false" ]; then
zenabled=`/usr/bin/svcprop -p general/enabled zebra:quagga`
zenabledt=`/usr/bin/svcprop -p general_ovr/enabled zebra:quagga`
if [ "$zenabled" = "true" -o "$zenabledt" = "true" ]; then
/usr/sbin/svcadm disable zebra:quagga
/usr/sbin/svcadm enable -st zebra:quagga
else
/usr/sbin/svcadm enable -st zebra:quagga
fi
if [ "$?" != "0" ]; then
echo "Could not enable zebra:quagga"
exit $SMF_EXIT_ERR_FATAL
fi
fi
}
# Include smf functions, if available. If not, define smf_present to indicate
# there is no SMF. Should allow this script to work pre-S10.
if [ -f "$SMFINCLUDE" ] ; then
@ -247,7 +222,6 @@ esac
if [ smf_present -a -f "$ROUTEADMINCLUDE" ]; then
handle_routeadm_upgrade $DAEMON;
DAEMON_ARGS=`routeadm_daemon_args`;
routeadm_zebra_enable $DAEMON;
else
if [ $# -gt 0 ] ; then
shift

View File

@ -21,6 +21,8 @@
Copyright 2007 Sun Microsystems, Inc. All rights reserved.
Use is subject to license terms.
Copyright 2015 Joyent, Inc.
ident "@(#)quagga.xml 1.0 05/03/15 SMI"
-->
@ -189,7 +191,7 @@
<!-- ensure that restart of zebra is propogated to daemon -->
<dependency
name='zebra'
grouping='optional_all'
grouping='require_all'
restart_on='restart'
type='service'>
<service_fmri value='svc:/network/routing/zebra:quagga' />
@ -320,7 +322,7 @@
<!-- ensure that restart of zebra is propogated to daemon -->
<dependency
name='zebra'
grouping='optional_all'
grouping='require_all'
restart_on='restart'
type='service'>
<service_fmri value='svc:/network/routing/zebra:quagga' />
@ -449,7 +451,7 @@
<!-- ensure that restart of zebra is propogated to daemon -->
<dependency
name='zebra'
grouping='optional_all'
grouping='require_all'
restart_on='restart'
type='service'>
<service_fmri value='svc:/network/routing/zebra:quagga' />
@ -580,7 +582,7 @@
<!-- ensure that restart of zebra is propogated to daemon -->
<dependency
name='zebra'
grouping='optional_all'
grouping='require_all'
restart_on='restart'
type='service'>
<service_fmri value='svc:/network/routing/zebra:quagga' />
@ -715,7 +717,7 @@
<!-- ensure that restart of zebra is propogated to daemon -->
<dependency
name='zebra'
grouping='optional_all'
grouping='require_all'
restart_on='restart'
type='service'>
<service_fmri value='svc:/network/routing/zebra:quagga' />