3 # ucarp Start/stop the UCARP daemon.
5 # chkconfig: 2345 11 89
7 # description: UCARP is Common Address Redundancy Protocol (CARP) \
12 [ -f /etc/sysconfig/ucarp ] && . /etc/sysconfig/ucarp
14 CONFIG_VIRTUAL_IPS=$VIRTUAL_IPS
16 [ -n "$2" ] && VIRTUAL_IPS="$2"
18 # no virtual IPs. exit silently
19 if [ -z "$VIRTUAL_IPS" ]; then
21 start|stop|restart|reload|force-reload)
27 # Source function library
28 . /etc/rc.d/init.d/functions
30 # Source networking configuration.
31 . /etc/sysconfig/network
33 # Check that networking is up.
34 if is_yes "${NETWORKING}"; then
35 if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status ]; then
36 msg_network_down UCARP
43 # check if the virtual ip $1 s up
46 local pidfile=/var/run/ucarp/$vip.pid
47 local pid=$(cat $pidfile 2>/dev/null)
48 kill -0 $pid 2>/dev/null
52 # check if all the configured virtual IPs are up
55 for vip in $CONFIG_VIRTUAL_IPS; do
56 vipup $vip && continue
62 # check if any of the configured interfaces is up
65 for vip in $CONFIG_VIRTUAL_IPS; do
66 vipup $vip && return 0
72 # Check if the service is already running?
74 msg_starting "UCARP"; started
75 for vip in $VIRTUAL_IPS; do
76 config="/etc/ucarp/$vip.conf"
77 if [ ! -f "$config" ]; then
78 nls "Invalid virtual IP \`%s': missing config: %s" $vip "$config"
84 show "Starting UCARP for virtual IP %s" "$vip"
89 # Needed for makepid work
91 daemon --makepid --fork --pidfile /var/run/ucarp/$vip.pid \
92 /usr/sbin/ucarp --addr=${vip} ${UCARP_OPTS}
95 [ $RETVAL -eq 0 ] && RETVAL=$RET
97 [ $RETVAL -eq 0 ] && touch /var/lock/subsys/ucarp
99 msg_already_running "UCARP"
106 msg_stopping "UCARP"; started
107 for vip in $VIRTUAL_IPS; do
108 pidfile=/var/run/ucarp/$vip.pid
109 [ -f "$pidfile" ] || continue
111 show "Stopping UCARP for virtual IP %s" "$vip"; busy
112 killproc --pidfile "$pidfile" || err=1
113 rm -f "$pidfile" >/dev/null 2>&1
115 anyvipsup || rm -f /var/lock/subsys/ucarp >/dev/null 2>&1
117 msg_not_running "UCARP"
122 # See how we were called.
132 msg_reloading "UCARP"; started
133 for vip in $VIRTUAL_IPS; do
134 show "Reloading UCARP for virtual IP %s" "$vip"
135 killproc --pidfile ucarp/$vip.pid ucarp -HUP
136 [ $? -ne 0 -a $RETVAL -eq 0 ] && RETVAL=7
139 msg_not_running "UCARP"
150 nls "Configured virtual IPs:"
152 nls "Currently active virtual IPs:"
153 for pidfile in /var/run/ucarp/*.pid; do
154 [ -f "$pidfile" ] || continue
155 vip=${pidfile#/var/run/ucarp/}
157 vipup $vip && echo -n " $vip($(cat $pidfile))"
164 msg_usage "$0 {start|stop|restart|reload|force-reload|status}"