# 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