mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
Signed-off-by: Chip Childers <chip.childers@gmail.com> I've assumed that Gavin's commit is appropriate, based on an assumption that we will keep these files in the source tree. If https://issues.apache.org/jira/browse/LEGAL-146 results in a different opionion from the members, then we will end up having to do something more drastic anyway.
127 lines
3.4 KiB
Plaintext
127 lines
3.4 KiB
Plaintext
# Licensed to the Apache Software Foundation (ASF) under one
|
|
# or more contributor license agreements. See the NOTICE file
|
|
# distributed with this work for additional information
|
|
# regarding copyright ownership. The ASF licenses this file
|
|
# to you under the Apache License, Version 2.0 (the
|
|
# "License"); you may not use this file except in compliance
|
|
# with the License. You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing,
|
|
# software distributed under the License is distributed on an
|
|
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
# KIND, either express or implied. See the License for the
|
|
# specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
CONNTRACKD_BIN=/usr/sbin/conntrackd
|
|
CONNTRACKD_LOCK=/var/lock/conntrack.lock
|
|
CONNTRACKD_CONFIG=/etc/conntrackd/conntrackd.conf
|
|
CONNTRACKD_LOG=[RROUTER_LOG]
|
|
|
|
case "$1" in
|
|
primary)
|
|
#
|
|
# commit the external cache into the kernel table
|
|
#
|
|
$CONNTRACKD_BIN -C $CONNTRACKD_CONFIG -c
|
|
if [ $? -eq 1 ]
|
|
then
|
|
logger "ERROR: failed to invoke conntrackd -c"
|
|
fi
|
|
|
|
#
|
|
# flush the internal and the external caches
|
|
#
|
|
$CONNTRACKD_BIN -C $CONNTRACKD_CONFIG -f
|
|
if [ $? -eq 1 ]
|
|
then
|
|
logger "ERROR: failed to invoke conntrackd -f"
|
|
fi
|
|
|
|
#
|
|
# resynchronize my internal cache to the kernel table
|
|
#
|
|
$CONNTRACKD_BIN -C $CONNTRACKD_CONFIG -R
|
|
if [ $? -eq 1 ]
|
|
then
|
|
logger "ERROR: failed to invoke conntrackd -R"
|
|
fi
|
|
|
|
#
|
|
# send a bulk update to backups
|
|
#
|
|
$CONNTRACKD_BIN -C $CONNTRACKD_CONFIG -B
|
|
if [ $? -eq 1 ]
|
|
then
|
|
logger "ERROR: failed to invoke conntrackd -B"
|
|
fi
|
|
echo Conntrackd switch to primary done >> $CONNTRACKD_LOG
|
|
;;
|
|
backup)
|
|
#
|
|
# is conntrackd running? request some statistics to check it
|
|
#
|
|
$CONNTRACKD_BIN -C $CONNTRACKD_CONFIG -s
|
|
if [ $? -eq 1 ]
|
|
then
|
|
#
|
|
# something's wrong, do we have a lock file?
|
|
#
|
|
if [ -f $CONNTRACKD_LOCK ]
|
|
then
|
|
logger "WARNING: conntrackd was not cleanly stopped."
|
|
logger "If you suspect that it has crashed:"
|
|
logger "1) Enable coredumps"
|
|
logger "2) Try to reproduce the problem"
|
|
logger "3) Post the coredump to netfilter-devel@vger.kernel.org"
|
|
rm -f $CONNTRACKD_LOCK
|
|
fi
|
|
$CONNTRACKD_BIN -C $CONNTRACKD_CONFIG -d
|
|
if [ $? -eq 1 ]
|
|
then
|
|
logger "ERROR: cannot launch conntrackd"
|
|
exit 1
|
|
fi
|
|
fi
|
|
#
|
|
# shorten kernel conntrack timers to remove the zombie entries.
|
|
#
|
|
$CONNTRACKD_BIN -C $CONNTRACKD_CONFIG -t
|
|
if [ $? -eq 1 ]
|
|
then
|
|
logger "ERROR: failed to invoke conntrackd -t"
|
|
fi
|
|
|
|
#
|
|
# request resynchronization with master firewall replica (if any)
|
|
# Note: this does nothing in the alarm approach.
|
|
#
|
|
$CONNTRACKD_BIN -C $CONNTRACKD_CONFIG -n
|
|
if [ $? -eq 1 ]
|
|
then
|
|
logger "ERROR: failed to invoke conntrackd -n"
|
|
fi
|
|
echo Conntrackd switch to backup done >> $CONNTRACKD_LOG
|
|
;;
|
|
fault)
|
|
#
|
|
# shorten kernel conntrack timers to remove the zombie entries.
|
|
#
|
|
$CONNTRACKD_BIN -C $CONNTRACKD_CONFIG -t
|
|
if [ $? -eq 1 ]
|
|
then
|
|
logger "ERROR: failed to invoke conntrackd -t"
|
|
fi
|
|
echo Conntrackd switch to fault done >> $CONNTRACKD_LOG
|
|
;;
|
|
*)
|
|
logger "conntrackd: ERROR: unknown state transition: " $1
|
|
echo "Usage: primary-backup.sh {primary|backup|fault}"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
exit 0
|