From d7d6bfea594067550c4ae96142ec7265651338b7 Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Wed, 11 Feb 2009 16:33:15 -0800 Subject: Handle reload of interface properties Need to handle ospf and rip property on reload. Since script is no longer general, make it just for quagga. --- scripts/vyatta-protocol | 2 +- scripts/vyatta-reload-proto-config | 66 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+), 1 deletion(-) create mode 100755 scripts/vyatta-reload-proto-config (limited to 'scripts') diff --git a/scripts/vyatta-protocol b/scripts/vyatta-protocol index 0e76f8c2..ba68e9e9 100755 --- a/scripts/vyatta-protocol +++ b/scripts/vyatta-protocol @@ -52,7 +52,7 @@ case "$1" in --chdir $log_dir --exec $exe_file \ -- -d -P 0 -i $pid_dir/${daemon}.pid - sudo /opt/vyatta/sbin/vyatta-cfg-reload protocols ${daemon/%d/} + sudo /opt/vyatta/sbin/vyatta-reload-proto-config ${daemon/%d/} ;; *) usage;; diff --git a/scripts/vyatta-reload-proto-config b/scripts/vyatta-reload-proto-config new file mode 100755 index 00000000..7fa75cc4 --- /dev/null +++ b/scripts/vyatta-reload-proto-config @@ -0,0 +1,66 @@ +#! /bin/bash +# Author: Stephen Hemminger +# Date: 2009 +# Description: reload portion of configuration + +# **** License **** +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# This code was originally developed by Vyatta, Inc. +# Portions created by Vyatta are Copyright (C) 2006, 2007, 2008 Vyatta, Inc. +# All Rights Reserved. +# **** End License **** + +if [ $# -eq 0 ]; then + echo "Usage: $0 {bgp|ospf|rip|ripng}" + exit 1 +fi + +if [ $EUID -ne 0 ]; then + echo "Must be root" + exit 1 +fi + +vyatta_cfg=/opt/vyatta/config/active +daemon=$1 +path=$vyatta_cfg/protocols/$daemon + +# No point in reloading if that portion of config doesn't exist +if [ ! -d $path ]; then + echo "$path does not exist" + exit 1 +fi + +# Begin reloading transaction +/opt/vyatta/sbin/vyatta-cfg-cmd-wrapper begin || exit 1 + +# In case of error undo +trap "/opt/vyatta/sbin/vyatta-cfg-cmd-wrapper end" EXIT HUP INT QUIT TERM + +# Save current configuration +tmp=/tmp/${daemon}-restart.$$ +/opt/vyatta/sbin/vyatta-save-config.pl $tmp || exit 1 + +# Erase portion of active configuration for that protocol +rm -fr $path + +# special case for interface configuration +case $daemon in + rip|ospf) find $vyatta_cfg/interfaces -type d -name $daemon \ + -exec rm -fr '{}' \; + ;; +esac + +# Reload causing configuration to activate - implies commit +/opt/vyatta/sbin/vyatta-load-config.pl $tmp || exit 1 + +# remove tmp file if successful +rm $tmp + -- cgit v1.2.3