#!/pkg/bin/ksh
#
# Created by Danny Prairie, June 2003
#
# Copyright (c) 2003-2017, 2019 by cisco Systems, Inc. 
# All rights reserved.
#
# This scripts expects 1 or three arguments
#
# -L <level> where level is 0x1, 0x2 or 0x3
#
# -f <device> <filename> These two arguments are used to redirect
#                        output to a file system, ex: disk, 
#                        tftp, ftp etc..
#----------------------------------------------------------------------

# This script fragment contains the code for the following functions
# - print_main_heading
# - print_command_heading
# - run_single_command
# - run_commands
# - run_single_command_on_all_nodes
# - run_commands_on_all_nodes
# - default_parser_function
. /pkg/bin/show_tech_main_fragment

# List each set of show commands to be run. Each set must finish with an empty
# string. Note that it is important to use single quotes rather than double 
# quotes for the strings containing your commands; showtech infra expects the command
# exactly the way it was entered.
# Use "\" ahead of any special character (eg. |) used in the command line.
i=1
j=1
Common_exec[$((i++))]='show running-config'
Common__ksh[$((j++))]='nvgen -c -l 1 -t 1 -o 1'

Common_exec[$((i++))]='show version'
Common_exec[$((i++))]='show process blocked location $location'
Common_exec[$((i++))]='show install active'
Common_exec[$((i++))]='show memory heap summary all'
if [[ "$platform" = "panini" ]]; then
    Common__ksh[$((j++))]='ng_show_version'
    Common__ksh[$((j++))]='sh_proc_ng_blocked -l $fq_nodeid'
    Common__ksh[$((j++))]='sdr_instcmd show install active'
    Common__ksh[$((j++))]='malloc_dump_wrapper -A -s'
elif [[ "$platform" = "viking" ]]; then
    Common__ksh[$((j++))]='show_version'
    Common__ksh[$((j++))]='show_processes -b -n $fq_nodeid'
    Common__ksh[$((j++))]='instcmd show install active'
    Common__ksh[$((j++))]='malloc_dump -A -s'
elif [[ "$platform" = "hfr" ]]; then
    Common__ksh[$((j++))]='show_version'
    Common__ksh[$((j++))]='show_processes -b -n $location'
    Common__ksh[$((j++))]='instcmd show install active'
    Common__ksh[$((j++))]='malloc_dump -A -s'
else
    Common__ksh[$((j++))]='show_version'
    Common__ksh[$((j++))]='show_processes -b -n $location'
    Common__ksh[$((j++))]='sdr_instcmd show install active'
    Common__ksh[$((j++))]='malloc_dump_wrapper -A -s'
fi

Common_exec[$((i++))]='show logging process rsvp location $location'
Common__ksh[$((j++))]='show_logging -p rsvp -n $location'
Common_exec[$((i++))]='show process rsvp location all'
Common__ksh[$((j++))]='sysmgr_show -o -p rsvp -n all'
Common_exec[$((i++))]='show process rsvp txgroup txlist detail location $location'
Common__ksh[$((j++))]='txlib_show -N $fq_nodeid -E rsvp -L -d'
Common_exec[$((i++))]='show route ipv4 $standby_exec'
Common__ksh[$((j++))]='show_ipv4_rib -X 0x1 -Y 0x1 -Z ________ -V ________ -s $standby_ipv4__ksh ipv4 ________'
Common_exec[$((i++))]='show redundancy location $location'
Common__ksh[$((j++))]='show_rmf_sysdb -n $fq_nodeid'
Common_exec[$((i++))]='show rsvp nsr status $standby_exec'
Common__ksh[$((j++))]='rsvp_command -o 0x1b $standby_rsvp__ksh'
Common_exec[$((i++))]='show rsvp issu status'
Common__ksh[$((j++))]='rsvp_command -o 0x1a'
Common_exec[$((i++))]='show mpls traffic-eng tunnels summary $standby_exec'
Common__ksh[$((j++))]='mpls_te_show 0x1 $standby_te__ksh ipv4 unicast -s'
Common_exec[$((i++))]='show mpls traffic-eng igp-areas $standby_exec'
Common__ksh[$((j++))]='mpls_te_show 0x7 $standby_te__ksh'
Common_exec[$((i++))]='show mpls traffic-eng counters signaling all $standby_exec'
Common__ksh[$((j++))]='mpls_te_show 0xc $standby_te__ksh -t 0x0'
Common_exec[$((i++))]='show rsvp summary $standby_exec'
Common__ksh[$((j++))]='rsvp_command -o 0x12 $standby_rsvp__ksh'
Common_exec[$((i++))]='show rsvp proc-fsm $standby_exec'
Common__ksh[$((j++))]='rsvp_command -o 0x1c $standby_rsvp__ksh'
Common_exec[$((i++))]='show rsvp interface summary $standby_exec'
Common__ksh[$((j++))]='rsvp_command -o 0x4 -s $standby_rsvp__ksh'
Common_exec[$((i++))]='show rsvp controller summary $standby_exec'
Common__ksh[$((j++))]='rsvp_command -o 0x13 -s $standby_rsvp__ksh'
Common_exec[$((i++))]='show rsvp interface  $standby_exec'
Common__ksh[$((j++))]='rsvp_command -o 0x4 $standby_rsvp__ksh'
Common_exec[$((i++))]='show rsvp interface detail $standby_exec'
Common__ksh[$((j++))]='rsvp_command -o 0x4 -d $standby_rsvp__ksh'
Common_exec[$((i++))]='show rsvp counters nsr $standby_exec'
Common__ksh[$((j++))]='rsvp_command -o 0xa -c 0x12 $standby_rsvp__ksh'
Common_exec[$((i++))]='show rsvp counters issu'
Common__ksh[$((j++))]='rsvp_command -o 0xa -c 0x13 '
Common_exec[$((i++))]='show rsvp counters pak $standby_exec'
Common__ksh[$((j++))]='rsvp_command -o 0xa -c 0xb $standby_rsvp__ksh'
Common_exec[$((i++))]='show rsvp counters handles $standby_exec'
Common__ksh[$((j++))]='rsvp_command -o 0xa -c 0x1 $standby_rsvp__ksh'
Common_exec[$((i++))]='show rsvp counters database private $standby_exec'
Common__ksh[$((j++))]='rsvp_command -o 0xa -c 0x2 -h $standby_rsvp__ksh'
Common_exec[$((i++))]='show rsvp counters messages private $standby_exec'
Common__ksh[$((j++))]='rsvp_command -o 0xa -c 0x3 -h $standby_rsvp__ksh'
Common_exec[$((i++))]='show rsvp counters memory $standby_exec'
Common__ksh[$((j++))]='rsvp_command -o 0xa -c 0x4 $standby_rsvp__ksh'
Common_exec[$((i++))]='show rsvp counters events $standby_exec'
Common__ksh[$((j++))]='rsvp_command -o 0xa -c 0x5 $standby_rsvp__ksh'
Common_exec[$((i++))]='show rsvp counters notifications-client $standby_exec'
Common__ksh[$((j++))]='rsvp_command -o 0xa -c 0x6 $standby_rsvp__ksh'
Common_exec[$((i++))]='show rsvp counters destroy-reasons $standby_exec'
Common__ksh[$((j++))]='rsvp_command -o 0xa -c 0x8 $standby_rsvp__ksh'
Common_exec[$((i++))]='show rsvp counters prefix-filtering access-list $standby_exec'
Common__ksh[$((j++))]='rsvp_command -o 0xa -c 0xe $standby_rsvp__ksh'
Common_exec[$((i++))]='show rsvp counters prefix-filtering interface $standby_exec'
Common__ksh[$((j++))]='rsvp_command -o 0xa -c 0xf $standby_rsvp__ksh'
Common_exec[$((i++))]='show rsvp counters chkpt $standby_exec'
Common__ksh[$((j++))]='rsvp_command -o 0xa -c 0xc $standby_rsvp__ksh'
Common_exec[$((i++))]='show rsvp counters chunks $standby_exec'
Common__ksh[$((j++))]='rsvp_command -o 0xa -c 0xa -s $standby_rsvp__ksh'
Common_exec[$((i++))]='show rsvp counters mib $standby_exec'
Common__ksh[$((j++))]='rsvp_command -o 0xa -c 0x11 $standby_rsvp__ksh'
Common_exec[$((i++))]='show rsvp counters oor $standby_exec'
Common__ksh[$((j++))]='rsvp_command -o 0xa -c 0xd -d $standby_rsvp__ksh'
Common_exec[$((i++))]='show rsvp graceful-restart $standby_exec'
Common__ksh[$((j++))]='rsvp_command -o 0xe $standby_rsvp__ksh'
Common_exec[$((i++))]='show rsvp graceful-restart neighbors detail $standby_exec'
Common__ksh[$((j++))]='rsvp_command -o 0xf -d $standby_rsvp__ksh'
Common_exec[$((i++))]='show rsvp fast-reroute $standby_exec'
Common__ksh[$((j++))]='rsvp_command -o 0x11 $standby_rsvp__ksh'
Common_exec[$((i++))]='show rsvp hello instance detail $standby_exec'
Common__ksh[$((j++))]='rsvp_command -o 0x10 -d $standby_rsvp__ksh'
Common_exec[$((i++))]='show rsvp routes first-hop $standby_exec'
Common__ksh[$((j++))]='rsvp_command -o 0x18 $standby_rsvp__ksh'
Common_exec[$((i++))]='show rsvp neighbors detail $standby_exec'
Common__ksh[$((j++))]='rsvp_command -o 0x5 -d $standby_rsvp__ksh'
Common_exec[$((i++))]='show rsvp session private $standby_exec'
Common__ksh[$((j++))]='rsvp_command -o 0x7 -h $standby_rsvp__ksh'
Common_exec[$((i++))]='show rsvp interface private $standby_exec'
Common__ksh[$((j++))]='rsvp_command -o 0x4 -h $standby_rsvp__ksh'
Common_exec[$((i++))]='show rsvp controller private $standby_exec'
Common__ksh[$((j++))]='rsvp_command -o 0x13 -h $standby_rsvp__ksh'
Common_exec[$((i++))]='show rsvp neighbors private $standby_exec'
Common__ksh[$((j++))]='rsvp_command -o 0x5 -h $standby_rsvp__ksh'
Common_exec[$((i++))]='show rsvp sync stats $standby_exec'
Common__ksh[$((j++))]='rsvp_command -o 0x1e $standby_rsvp__ksh'
Common_exec[$((i++))]='show rsvp sync stats $standby_exec'
Common__ksh[$((j++))]='rsvp_command -o 0x1e $standby_rsvp__ksh'
Common_exec[$((i++))]='show rsvp pending-msg $standby_exec'
Common__ksh[$((j++))]='rsvp_command -o 0x1d $standby_rsvp__ksh'
Common_exec[$((i++))]='show rsvp authentication private $standby_exec'
Common__ksh[$((j++))]='rsvp_command -o 0x17 -h $standby_rsvp__ksh'
Common_exec[$((i++))]='show rsvp trace unique location $location'
Common__ksh[$((j++))]='rsvp_show_ltrace -u -i $fq_nodeid -T 0x8'
Common_exec[$((i++))]='show rsvp trace common location $location'
Common__ksh[$((j++))]='rsvp_show_ltrace -i $fq_nodeid -T 0x2'
Common_exec[$((i++))]='show rsvp trace debug-error location $location'
Common__ksh[$((j++))]='rsvp_show_ltrace -i $fq_nodeid -T 0x6'
Common_exec[$((i++))]='show rsvp trace interface location $location'
Common__ksh[$((j++))]='rsvp_show_ltrace -i $fq_nodeid -T 0x5'
Common_exec[$((i++))]='show rsvp trace rare location $location'
Common__ksh[$((j++))]='rsvp_show_ltrace -i $fq_nodeid -T 0x1'
Common_exec[$((i++))]='show rsvp trace signalling location $location'
Common__ksh[$((j++))]='rsvp_show_ltrace -i $fq_nodeid -T 0x3'
Common_exec[$((i++))]='show rsvp trace signalling-err location $location'
Common__ksh[$((j++))]='rsvp_show_ltrace -i $fq_nodeid -T 0x4'
Common_exec[$((i++))]='show rsvp trace sync-updates location $location'
Common__ksh[$((j++))]='rsvp_show_ltrace -i $fq_nodeid -T 0x7'
Common_exec[$((i++))]='show rsvp api trace unique location $location'
Common__ksh[$((j++))]='rsvp_ng_api_show -u -i $fq_nodeid -p 0x0 -T 0x5'
Common_exec[$((i++))]='show rsvp api trace errors location $location'
Common__ksh[$((j++))]='rsvp_ng_api_show -i $fq_nodeid -p 0x0 -T 0x3'
Common_exec[$((i++))]='show rsvp api trace warnings location $location'
Common__ksh[$((j++))]='rsvp_ng_api_show -i $fq_nodeid -p 0x0 -T 0x2'
Common_exec[$((i++))]='show rsvp api trace events location $location'
Common__ksh[$((j++))]='rsvp_ng_api_show -i $fq_nodeid -p 0x0 -T 0x1'
Common_exec[$((i++))]='show rsvp api trace history location $location'
Common__ksh[$((j++))]='rsvp_ng_api_show -i $fq_nodeid -p 0x0 -T 0x4'
Common_exec[$((i++))]='show rsvp per-call $standby_exec'

if [[ $standby_exec = "standby" ]];then
    Common__ksh[$((j++))]='percall_show rsvp /oper/ip_rsvp/gl/standby/'
else
    Common__ksh[$((j++))]='percall_show rsvp /oper/ip_rsvp/gl/active/'
fi

Common_exec[$((i++))]='show rsvp api summary $standby_exec'
Common__ksh[$((j++))]='rsvp_ng_api_show -p 0x0 -s $standby_rsvp__ksh'
Common_exec[$((i++))]='show rsvp api ctx psrid all $standby_exec'
Common__ksh[$((j++))]='rsvp_ng_api_show -p 0x0 -R 0x1 $standby_rsvp__ksh'
Common_exec[$((i++))]='show rsvp api ctx csrid only $standby_exec'
Common__ksh[$((j++))]='rsvp_ng_api_show -p 0x0 -R 0x2 -O $standby_rsvp__ksh'
Common_exec[$((i++))]='show place prog rsvp'
Common__ksh[$((j++))]='placed_show -p rsvp'
Common_exec[$((i++))]='show rsvp chkpt $standby_exec'
Common__ksh[$((j++))]='rsvp_command -o 0x19 -j 0x0 $standby_rsvp__ksh'
Common_exec[$((i++))]='show rsvp chkpt summary $standby_exec'
Common__ksh[$((j++))]='rsvp_command -o 0x19 -s $standby_rsvp__ksh'
Common_exec[$((i++))]='show processes rsvp waipc service detail'
Common__ksh[$((j++))]='waipc_show -e rsvp -o 0x1 -d'
Common_exec[$((i++))]='show processes rsvp waipc trace location all'
Common__ksh[$((j++))]='waipc_show_ltrace -i all -e rsvp -b 0x2'
Common_exec[$((i++))]='show process rsvp waipc service detail location $location'
Common__ksh[$((j++))]='waipc_show -e rsvp -o 0x1 -d -n $fq_nodeid'
Common_exec[$((i++))]='show process rsvp waipc trace location $location'
Common__ksh[$((j++))]='waipc_show_ltrace -i $fq_nodeid -e rsvp -b 0x2'
Common_exec[$((i++))]=''
Common__ksh[$((j++))]=''


# Initialise any variables used. 
standby_exec=""
standby_te__ksh=""
standby_rsvp__ksh=""
standby_ipv4__ksh=""


# Parse the arguments to the script.
# Usage: 
# 
#    rsvp_show_tech [-L <level>] [-f <file>][-N]
while [ "$#" -gt "0" ]; do
  case "$1" in
     -N) stdby="standby";shift 1;;
     *)  default_parser_function "$@"; shift $#;;
  esac
done

# Find if the current location is active or standby RP.
. /pkg/bin/mpls_te_show_tech_helper

# A function called display() must be provided that calls the functions to 
# run the required show commands. The display() function is called in 
# /pkg/bin/show_tech_comp_file_frag

display() {

    # Print the output heading 
    print_main_heading "show tech-support mpls rsvp"

    if is_standby "rsvp" $ext_node_name; then
        standby_exec="standby"
        standby_te__ksh="--standby"
        standby_rsvp__ksh="-S"
        standby_ipv4__ksh="-t"
    fi

	exec_commands Common

    # Print the closing heading. 
    print_main_heading "show tech-support mpls rsvp complete"
}


# This function calls the display() function and sends the output to file if
# the file option has been set. 
. /pkg/bin/show_tech_file_fragment
