#!/pkg/bin/ksh
# ---------------------------------------------------------------------
# show_tech_ip_static - Show tech-support script for Ip-static
#
# April 2017, Ayush Singhal
#
# Copyright (c) 2017-2019 by cisco Systems, Inc.
# All rights reserved.
#--------------------------------------------------------------------


# This script fragment contains the code for the following functions
# - print_main_heading
# - print_command_heading
# - show commands for ipv4 static, local, connected
# - show commands for ipv6 static, local connected
. /pkg/bin/show_tech_main_fragment

# Initialise any variables used. 
                                                       
ipv4=0
ipv6=0
trace_only="0"
__cardtype="unspecified"

# Parse the arguments to the script.
# Usage: 
# It takes one argument after static Keyword <ipv4/ipv6>
# Run commands that display ip-static information
while [ $# -gt 0 ]; do
  case "$1" in
     -B) ipv4=1; shift 1;;
     -C) ipv6=1; shift 1;;
     -t) __cardtype="$2"; shift 2;;
     *)  default_parser_function "$@"; shift $#;;
  esac
done 

int_node_name=$showtech_node_name
ext_node_name=`node_conversion -E $int_node_name`
fq_nodeid=`node_conversion -i $int_node_name`
location=$ext_node_name

# Get Job ID of ipv4/ipv6 static/local/connected process
function get_jid {
    jid=`sysmgr_show -p $1 | grep Job |  cut -f 2 -d ":" | cut -f 2 -d " "`
    echo ${jid}  
}  

jid_ipv4_static=`get_jid ipv4_static`
jid_ipv6_static=`get_jid ipv6_static`
jid_ipv4_local=`get_jid ipv4_local`
jid_ipv6_local=`get_jid ipv6_local`
jid_ipv4_conn=`get_jid ipv4_connected`
jid_ipv6_conn=`get_jid ipv6_connected`

if [ "$__cardtype" == "unspecified" ]; then
     __cardtype=`node_type`
fi

# 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. 


#Show commands 
sys_show_exec[1]='show running-config'
sys_show__ksh[1]="nvgen -c -l 1 -t 1 -o 1"

sys_show_exec[2]='show logging'                                          
sys_show__ksh[2]="show_logging"

sys_show_exec[3]='show version'      
if [[ "$platform" == "panini" ]]; then
    sys_show__ksh[3]="ng_show_version"
else
    sys_show__ksh[3]="show_version"
fi

sys_show_exec[4]='show processes blocked'      
if [[ "$platform" == "panini" ]]; then
    sys_show__ksh[4]="sh_proc_ng_blocked"
else
    sys_show__ksh[4]="show_processes -b"
fi

sys_show_exec[5]='show redundancy'                                          
sys_show__ksh[5]='show_rmf_sysdb'

sys_show_exec[6]='show processes ipv4_rib'                                          
sys_show__ksh[6]='sysmgr_show -o -p ipv4_rib'

sys_show_exec[7]='show processes ipv6_rib'                                          
sys_show__ksh[7]='sysmgr_show -o -p ipv6_rib'

sys_show_exec[8]='show processes ipv4_static'                                          
sys_show__ksh[8]='sysmgr_show -o -p ipv4_static'

sys_show_exec[9]='show processes ipv4_local'                                          
sys_show__ksh[9]='sysmgr_show -o -p ipv4_local'

sys_show_exec[10]='show processes ipv4_connected'                                          
sys_show__ksh[10]='sysmgr_show -o -p ipv4_connected'

sys_show_exec[11]='show processes ipv6_static'                                          
sys_show__ksh[11]='sysmgr_show -o -p ipv6_static'

sys_show_exec[12]='show processes ipv6_local'                                          
sys_show__ksh[12]='sysmgr_show -o -p ipv6_local'

sys_show_exec[13]='show processes ipv6_connected'                                          
sys_show__ksh[13]='sysmgr_show -o -p ipv6_connected'

sys_show_exec[14]='show cli history detail'
sys_show__ksh[14]="show_parser_history -h 0x2"

sys_show_exec[15]='show route vrf all'
sys_show__ksh[15]="show_ipv4_rib -X 0x1 -Y 0x1 -Z all -V ________ -s ipv4 all"

sys_show_exec[16]='show route vrf all ipv6'
sys_show__ksh[16]="show_ipv6_rib -X 0x2 -Y 0x1 -Z all -V ________ -s ipv6 all"

sys_show_exec[17]='show route'
sys_show__ksh[17]="show_ipv4_rib -X 0x1 -Y 0x1 -Z ________ -V ________ -s ipv4 ________"

sys_show_exec[18]='show route ipv6'
sys_show__ksh[18]="show_ipv6_rib -X 0x2 -Y 0x1 -Z ________ -V ________ -s ipv6 ________"

sys_show_exec[19]=''
sys_show__ksh[19]=""

#Command - RPv4Static only
#ipv4 static commands

rpv4static_exec[1]="show static vrf all ipv4 topology detail"
rpv4static__ksh[1]="ipv4_static_show -A 0x1 -S 0x1 -Z all -T ________ -H -V -D"

rpv4static_exec[2]="show static vrf all ipv4 topology status"
rpv4static__ksh[2]="ipv4_static_show -A 0x1 -S 0x1 -Z all -T ________ -H -V -C"

rpv4static_exec[3]="show static vrf all ipv4 interfaces"
rpv4static__ksh[3]="ipv4_static_show -A 0x1 -S 0x1 -Z all -T ________ -H -I"

rpv4static_exec[4]="show static vrf all ipv4 next-hops"
rpv4static__ksh[4]="ipv4_static_show -A 0x1 -S 0x1 -Z all -T ________ -H -N"

rpv4static_exec[5]="show static vrf all ipv4 bfd"
rpv4static__ksh[5]="ipv4_static_show -A 0x1 -S 0x1 -Z all -T ________ -H -O"

rpv4static_exec[6]="show static ipv4 trace"
rpv4static__ksh[6]="ipv4_static_show -A 0x1 -S 0x1 -Z ________ -T ________ -H -L"

rpv4static_exec[7]="show system statistics component ip-static"
rpv4static__ksh[7]="ship_show -c ip-static"

rpv4static_exec[8]="show im registrations all detail job $jid_ipv4_static location all"
rpv4static__ksh[8]="im_show registrations -t 0x8 -l 0x3 -a -j $jid_ipv4_static"
                     
rpv4static_exec[9]="show rsi clients process ipv4_static"
rpv4static__ksh[9]="show_rsi_agent -c 0x29 -p ipv4_static"

#Command - RPv4Local only
#ipv4 local commands
rpv4local_exec[1]="show local vrf all ipv4 topology detail"
rpv4local__ksh[1]="ipv4_static_show -A 0x1 -S 0x1 -Z all -T ________ -G -V -D"

rpv4local_exec[2]="show local vrf all ipv4 topology status"
rpv4local__ksh[2]="ipv4_static_show -A 0x1 -S 0x1 -Z all -T ________ -G -V -C"

rpv4local_exec[3]="show local vrf all ipv4 interfaces"
rpv4local__ksh[3]="ipv4_static_show -A 0x1 -S 0x1 -Z all -T ________ -G -I"

rpv4local_exec[4]="show local vrf all ipv4 next-hops"
rpv4local__ksh[4]="ipv4_static_show -A 0x1 -S 0x1 -Z all -T ________ -G -N"

rpv4local_exec[5]="show local vrf all ipv4 bfd"
rpv4local__ksh[5]="ipv4_static_show -A 0x1 -S 0x1 -Z all -T ________ -G -O"

rpv4local_exec[6]="show local ipv4 trace"
rpv4local__ksh[6]="ipv4_static_show -A 0x1 -S 0x1 -Z ________ -T ________ -G -L"

rpv4local_exec[7]="show system statistics component ip-static"
rpv4local__ksh[7]="ship_show -c ip-static"

rpv4local_exec[8]="show im registrations all detail job $jid_ipv4_local location all"
rpv4local__ksh[8]="im_show registrations -t 0x8 -l 0x3 -a -j $jid_ipv4_local"

rpv4local_exec[9]="show rsi clients process ipv4_local"
rpv4local__ksh[9]="show_rsi_agent -c 0x29 -p ipv4_local"

rpv4local_exec[10]="show local vrf all ipv4 fwd-ref"
rpv4local__ksh[10]="ipv4_static_show -A 0x1 -S 0x1 -Z all -T ________ -G -x"

#Command - RPv4Connected only
#ipv4 connected commands
rpv4conn_exec[1]="show connected vrf all ipv4 topology detail"
rpv4conn__ksh[1]="ipv4_static_show -A 0x1 -S 0x1 -Z all -T ________ -F -V -D"

rpv4conn_exec[2]="show connected vrf all ipv4 topology status"
rpv4conn__ksh[2]="ipv4_static_show -A 0x1 -S 0x1 -Z all -T ________ -F -V -C"

rpv4conn_exec[3]="show connected vrf all ipv4 interfaces"
rpv4conn__ksh[3]="ipv4_static_show -A 0x1 -S 0x1 -Z all -T ________ -F -I"

rpv4conn_exec[4]="show connected vrf all ipv4 next-hops"
rpv4conn__ksh[4]="ipv4_static_show -A 0x1 -S 0x1 -Z all -T ________ -F -N"

rpv4conn_exec[5]="show connected vrf all ipv4 bfd"
rpv4conn__ksh[5]="ipv4_static_show -A 0x1 -S 0x1 -Z all -T ________ -F -O"

rpv4conn_exec[6]="show connected ipv4 trace"
rpv4conn__ksh[6]="ipv4_static_show -A 0x1 -S 0x1 -Z ________ -T ________ -F -L"

rpv4conn_exec[7]="show system statistics component ip-static"
rpv4conn__ksh[7]="ship_show -c ip-static"

rpv4conn_exec[8]="show im registrations all detail job $jid_ipv4_conn location all"
rpv4conn__ksh[8]="im_show registrations -t 0x8 -l 0x3 -a -j $jid_ipv4_conn"

rpv4conn_exec[9]="show rsi clients process ipv4_connected"
rpv4conn__ksh[9]="show_rsi_agent -c 0x29 -p ipv4_connected"

rpv4conn_exec[10]="show connected vrf all ipv4 fwd-ref"
rpv4conn__ksh[10]="ipv4_static_show -A 0x1 -S 0x1 -Z all -T ________ -F -x"

#Command - RPv6Static only
#ipv6 static commands

rpv6static_exec[1]="show static vrf all ipv6 topology detail"
rpv6static__ksh[1]="ipv6_static_show -A 0x2 -S 0x1 -Z all -T ________ -H -V -D"

rpv6static_exec[2]="show static vrf all ipv6 topology status"
rpv6static__ksh[2]="ipv6_static_show -A 0x2 -S 0x1 -Z all -T ________ -H -V -C"

rpv6static_exec[3]="show static vrf all ipv6 interfaces"
rpv6static__ksh[3]="ipv6_static_show -A 0x2 -S 0x1 -Z all -T ________ -H -I"

rpv6static_exec[4]="show static vrf all ipv6 next-hops"
rpv6static__ksh[4]="ipv6_static_show -A 0x2 -S 0x1 -Z all -T ________ -H -N"

rpv6static_exec[5]="show static vrf all ipv6 bfd"
rpv6static__ksh[5]="ipv6_static_show -A 0x2 -S 0x1 -Z all -T ________ -H -O"

rpv6static_exec[6]="show static ipv6 trace"
rpv6static__ksh[6]="ipv6_static_show -A 0x2 -S 0x1 -Z ________ -T ________ -H -L"

rpv6static_exec[7]="show system statistics component ip-static"
rpv6static__ksh[7]="ship_show -c ip-static"

rpv6static_exec[8]="show im registrations all detail job $jid_ipv6_static location all"
rpv6static__ksh[8]="im_show registrations -t 0x8 -l 0x3 -a -j $jid_ipv6_static"

rpv6static_exec[9]="show rsi clients process ipv6_static"
rpv6static__ksh[9]="show_rsi_agent -c 0x29 -p ipv6_static"

#Command - RPv6Local only
#ipv6 local commands

rpv6local_exec[1]="show local vrf all ipv6 topology detail"
rpv6local__ksh[1]="ipv6_static_show -A 0x2 -S 0x1 -Z all -T ________ -G -V -D"

rpv6local_exec[2]="show local vrf all ipv6 topology status"
rpv6local__ksh[2]="ipv6_static_show -A 0x2 -S 0x1 -Z all -T ________ -G -V -C"

rpv6local_exec[3]="show local vrf all ipv6 interfaces"
rpv6local__ksh[3]="ipv6_static_show -A 0x2 -S 0x1 -Z all -T ________ -G -I"

rpv6local_exec[4]="show local vrf all ipv6 next-hops"
rpv6local__ksh[4]="ipv6_static_show -A 0x2 -S 0x1 -Z all -T ________ -G -N"

rpv6local_exec[5]="show local vrf all ipv6 bfd"
rpv6local__ksh[5]="ipv6_static_show -A 0x2 -S 0x1 -Z all -T ________ -G -O"

rpv6local_exec[6]="show local ipv6 trace"
rpv6local__ksh[6]="ipv6_static_show -A 0x2 -S 0x1 -Z ________ -T ________ -G -L"

rpv6local_exec[7]="show system statistics component ip-static"
rpv6local__ksh[7]="ship_show -c ip-static"

rpv6local_exec[8]="show im registrations all detail job $jid_ipv6_local location all"
rpv6local__ksh[8]="im_show registrations -t 0x8 -l 0x3 -a -j $jid_ipv6_local"

rpv6local_exec[9]="show rsi clients process ipv6_local"
rpv6local__ksh[9]="show_rsi_agent -c 0x29 -p ipv6_local"

rpv6local_exec[10]="show local vrf all ipv6 fwd-ref"
rpv6local__ksh[10]="ipv6_static_show -A 0x2 -S 0x1 -Z all -T ________ -G -x"

#Command - RPv6Connected only
#ipv6 connected commands

rpv6conn_exec[1]="show connected vrf all ipv6 topology detail"
rpv6conn__ksh[1]="ipv6_static_show -A 0x2 -S 0x1 -Z all -T ________ -F -V -D"

rpv6conn_exec[2]="show connected vrf all ipv6 topology status"
rpv6conn__ksh[2]="ipv6_static_show -A 0x2 -S 0x1 -Z all -T ________ -F -V -C"

rpv6conn_exec[3]="show connected vrf all ipv6 interfaces"
rpv6conn__ksh[3]="ipv6_static_show -A 0x2 -S 0x1 -Z all -T ________ -F -I"

rpv6conn_exec[4]="show connected vrf all ipv6 next-hops"
rpv6conn__ksh[4]="ipv6_static_show -A 0x2 -S 0x1 -Z all -T ________ -F -N"

rpv6conn_exec[5]="show connected vrf all ipv6 bfd"
rpv6conn__ksh[5]="ipv6_static_show -A 0x2 -S 0x1 -Z all -T ________ -F -O"

rpv6conn_exec[6]="show connected ipv6 trace"
rpv6conn__ksh[6]="ipv6_static_show -A 0x2 -S 0x1 -Z ________ -T ________ -F -L"

rpv6conn_exec[7]="show system statistics component ip-static"
rpv6conn__ksh[7]="ship_show -c ip-static"

rpv6conn_exec[8]="show im registrations all detail job $jid_ipv6_conn location all"
rpv6conn__ksh[8]="im_show registrations -t 0x8 -l 0x3 -a -j $jid_ipv6_conn"

rpv6conn_exec[9]="show rsi clients process ipv6_connected"
rpv6conn__ksh[9]="show_rsi_agent -c 0x29 -p ipv6_connected"

rpv6conn_exec[3]="show connected vrf all ipv6 fwd-ref"
rpv6conn__ksh[3]="ipv6_static_show -A 0x2 -S 0x1 -Z all -T ________ -F -x"


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

display() {

    # Print the output heading 
    print_main_heading "show tech-support ip-static"

    echo $__cardtype
    
    if [ "$__cardtype" == "SYS" ]; then
          exec_commands sys_show
    fi  

    if [ "$__cardtype" == "RP" ]; then
            if [ $ipv4 -eq  1 ]; then
                exec_commands rpv4static
                exec_commands rpv4local
		exec_commands rpv4conn
            fi
            if [ $ipv6 -eq  1 ]; then
                exec_commands rpv6static
		exec_commands rpv6local
                exec_commands rpv6conn
            fi
            if [ $ipv4 -eq  0 ] && [ $ipv6 -eq  0 ]; then
                exec_commands rpv4static
                exec_commands rpv4local
                exec_commands rpv4conn
		exec_commands rpv6static
                exec_commands rpv6local
                exec_commands rpv6conn
            fi
	fi      
    
    print_main_heading "show tech-support ip-static 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

