diff options
author | Stephen Hemminger <stephen.hemminger@vyatta.com> | 2010-11-23 18:38:35 -0800 |
---|---|---|
committer | Stephen Hemminger <stephen.hemminger@vyatta.com> | 2010-11-24 11:51:24 -0800 |
commit | 36a92e3fe4241a6cc51319d7d78f2e732afa5bfc (patch) | |
tree | 045f19352b95d4062d0cdc073c4be647ea01e5ad /scripts | |
parent | ca1b48194cb40286fc361db0a0fe7d8ede1209ae (diff) | |
download | vyatta-cfg-36a92e3fe4241a6cc51319d7d78f2e732afa5bfc.tar.gz vyatta-cfg-36a92e3fe4241a6cc51319d7d78f2e732afa5bfc.zip |
Use exec to get proper exit status
No need to save exit code and then call exit. Use 'exec'
to get tail recursion style optimization of shell functions.
Also, rename the log file for commit for /tmp/bar to something
we might actually want to tell customers about.
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/vyatta-cfg-cmd-wrapper | 82 |
1 files changed, 32 insertions, 50 deletions
diff --git a/scripts/vyatta-cfg-cmd-wrapper b/scripts/vyatta-cfg-cmd-wrapper index 569b68f..a5db7d5 100755 --- a/scripts/vyatta-cfg-cmd-wrapper +++ b/scripts/vyatta-cfg-cmd-wrapper @@ -8,12 +8,12 @@ # 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. @@ -33,71 +33,54 @@ SID=$PPID if [ -n "$CMD_WRAPPER_SESSION_ID" ]; then SID=$CMD_WRAPPER_SESSION_ID fi + # set up the session environment (get it from the unified lib) session_env=$(${vyatta_sbindir}/my_cli_shell_api getSessionEnv $SID) eval "$session_env" -RET_STATUS=0 - case "$1" in - begin) - # set up the session - ${vyatta_sbindir}/my_cli_shell_api setupSession - RET_STATUS=$? + begin) # set up the session + exec ${vyatta_sbindir}/my_cli_shell_api setupSession ;; - end) - # tear down the session - ${vyatta_sbindir}/my_cli_shell_api teardownSession - RET_STATUS=$? + end) # tear down the session + exec ${vyatta_sbindir}/my_cli_shell_api teardownSession ;; cleanup|discard) - /opt/vyatta/sbin/my_discard - RET_STATUS=$? + exec ${vyatta_sbindir}/my_discard ;; set) - /opt/vyatta/sbin/my_set "${@:2}" - RET_STATUS=$? + exec ${vyatta_sbindir}/my_set "${@:2}" ;; delete) - /opt/vyatta/sbin/my_delete "${@:2}" - RET_STATUS=$? + exec ${vyatta_sbindir}/my_delete "${@:2}" ;; deactivate) - /opt/vyatta/sbin/my_deactivate "${@:2}" - RET_STATUS=$? - ;; + exec ${vyatta_sbindir}/my_deactivate "${@:2}" + ;; activate) - /opt/vyatta/sbin/my_activate "${@:2}" - RET_STATUS=$? - ;; + exec ${vyatta_sbindir}/my_activate "${@:2}" + ;; show) - ${vyatta_sbindir}/my_cli_shell_api showCfg - RET_STATUS=$? - ;; + exec ${vyatta_sbindir}/my_cli_shell_api showCfg + ;; comment) - /opt/vyatta/sbin/my_comment "${@:2}" - RET_STATUS=$? - ;; + exec ${vyatta_sbindir}/my_comment "${@:2}" + ;; commit) export COMMIT_VIA=cfg-cmd-wrapper - # debug file /tmp/bar should be deleted before release - /opt/vyatta/sbin/my_commit -a >> /tmp/bar - /opt/vyatta/sbin/my_commit -s >> /tmp/bar - /opt/vyatta/sbin/my_commit -e -d >> /tmp/bar - RET_STATUS=$? - unset COMMIT_VIA + ${vyatta_sbindir}/my_commit -a >> /tmp/vyatta-commit.log + ${vyatta_sbindir}/my_commit -s >> /tmp/vyatta-commit.log + ${vyatta_sbindir}/my_commit -e -d >> /tmp/vyatta-commit.log + exit 0 ;; commit_with_error) - /opt/vyatta/sbin/my_commit - RET_STATUS=$? + exec ${vyatta_sbindir}/my_commit ;; save) - /opt/vyatta/sbin/vyatta-save-config.pl "${@:2}" - RET_STATUS=$? + exec ${vyatta_sbindir}/vyatta-save-config.pl "${@:2}" ;; load) - /opt/vyatta/sbin/vyatta-load-config.pl "${@:2}" - RET_STATUS=$? + exec ${vyatta_sbindir}/vyatta-load-config.pl "${@:2}" ;; rule-rename) # this option is to be used for renaming firewall and nat rules only @@ -107,11 +90,9 @@ case "$1" in # 2 3 4 5 6 7 # rule-rename nat rule $rule_num to rule $rename_rulenum if [ "$2" == "firewall" ]; then - /opt/vyatta/sbin/my_move firewall name "$3" rule "$5" to "$8" - RET_STATUS=$? + exec ${vyatta_sbindir}/my_move firewall name "$3" rule "$5" to "$8" elif [ "$2" == "nat" ]; then - /opt/vyatta/sbin/my_move service nat rule "$4" to "$7" - RET_STATUS=$? + exec ${vyatta_sbindir}/my_move service nat rule "$4" to "$7" fi ;; move) @@ -119,14 +100,15 @@ case "$1" in # e.g., "move interfaces ethernet eth2 vif 100 to 200" # is similar to "edit interfaces ethernet eth2" plus # "rename vif 100 to vif 200". - /opt/vyatta/sbin/my_move "${@:2}" - RET_STATUS=$? + exec ${vyatta_sbindir}/my_move "${@:2}" ;; *) echo "Invalid command \"$1\" for vyatta-cfg-cmd-wrapper" - RET_STATUS=1 + exit 1 ;; esac -exit $RET_STATUS +# Only get here if exec failed. +echo "!!! Missing Vyatta shell infrastructure for $1 !!!!" +exit 1 |