#!/pkg/bin/ksh
#------------------------------------------------------------------
# show tech-support snmp [ifmib | entitymib] command
#
# November 2008, Anuradha C K
#
# Copyright (c) 2008-2015, 2017 by cisco Systems, Inc.
# All rights reserved.
#------------------------------------------------------------------

#
# Include the standard show tech-support functions
#
. /pkg/bin/show_tech_main_fragment

#
# SNMP information
#

snmp1_exec[1]='show snmp'
snmp1__ksh[1]='snmp_command -s'
snmp1_exec[2]='show snmp sub-agent'
snmp1__ksh[2]='snmp_command -B'
snmp1_exec[3]='show snmp traps'
snmp1__ksh[3]='snmp_command -W'
snmp1_exec[4]='show snmp engineid'
snmp1__ksh[4]='snmp_command -e'
snmp1_exec[5]='show snmp users'
snmp1__ksh[5]='snmp_command -u'
snmp1_exec[6]='show snmp group'
snmp1__ksh[6]='snmp_command -g'
snmp1_exec[7]='show snmp view'
snmp1__ksh[7]='snmp_command -v'
snmp1_exec[8]='show snmp host'
snmp1__ksh[8]='snmp_command -t'
snmp1_exec[9]='show snmp context-mapping'
snmp1__ksh[9]='snmp_command -c'
snmp1_exec[10]='show snmp mib access'
snmp1__ksh[10]='snmp_lib_show -a'
snmp1_exec[11]='show snmp mib access time'
snmp1__ksh[11]='snmp_lib_show -a -t'
snmp1_exec[12]='show snmp mib dll state'
snmp1__ksh[12]='snmp_lib_show -d -s'
snmp1_exec[13]='show snmp mib object-name'
snmp1__ksh[13]='snmp_command -n'
snmp1_exec[14]='show snmp queue rx'
snmp1__ksh[14]='snmp_command -x'
snmp1_exec[15]='show snmp context'
snmp1__ksh[15]='snmp_command -b'
snmp1_exec[16]='show snmp correlator buffer all'
snmp1__ksh[16]='snmp_corr_show_buffer -a'
snmp1_exec[17]='show snmp entity'
snmp1__ksh[17]='sh_entity'
snmp1_exec[18]='show snmp mib statistics'
snmp1__ksh[18]='snmp_lib_show -m'
snmp1_exec[19]='show snmp queue trap'
snmp1__ksh[19]='snmp_command -a'
snmp1_exec[20]='show snmp request duplicates'
snmp1__ksh[20]='snmp_command -r'
snmp1_exec[21]='show snmp udp statistics'
snmp1__ksh[21]='snmp_command -U'
snmp1_exec[22]='show watchdog overload state location all'
snmp1__ksh[22]='show_watchdog_overload -n all -s'
snmp1_exec[23]='show snmp request type detail'
snmp1__ksh[23]='snmp_show_statistics -i'
snmp1_exec[24]='show snmp request type summary'
snmp1__ksh[24]='snmp_command -w'
snmp1_exec[25]='show snmp request drop summary'
snmp1__ksh[25]='snmp_command -i'
snmp1_exec[26]='show snmp request incoming-queue detail'
snmp1__ksh[26]='snmp_command -j'
snmp1_exec[27]='show snmp statistics slow oid'
snmp1__ksh[27]='snmp_lib_show -l'
snmp1_exec[28]='show snmp statistics poll oid all'
snmp1__ksh[28]='snmp_command -k'
snmp1_exec[29]='show snmp request overload stats'
snmp1__ksh[29]='snmp_command -q'
snmp1_exec[30]='show snmp statistics oid group interface'
snmp1__ksh[30]='snmp_lib_show -o -g interface'
snmp1_exec[31]='show snmp statistics oid group route'
snmp1__ksh[31]='snmp_lib_show -o -g route'
snmp1_exec[32]='show snmp statistics oid group infra'
snmp1__ksh[32]='snmp_lib_show -o -g infra'
snmp1_exec[33]='show snmp statistics oid group entity'
snmp1__ksh[33]='snmp_lib_show -o -g entity'
snmp1_exec[34]='show snmp statistics pdu'
snmp1__ksh[34]='snmp_command -p'
snmp1_exec[35]='show snmp traps details'
snmp1__ksh[35]='snmp_command -z trap-stats'
snmp1_exec[36]='show snmp informs details'
snmp1__ksh[36]='snmp_command -z inform-stats'
snmp1_exec[37]='show processes snmpd'
snmp1__ksh[37]='sysmgr_show -o -p snmpd'
snmp1_exec[38]='show processes mibd'
snmp1__ksh[38]='sysmgr_show -o -p mibd'

snmp_exec[1]='show snmp trace traps'
snmp__ksh[1]='snmp_show_ltrace -T'
snmp_exec[2]='show snmp trace configuration'
snmp__ksh[2]='snmp_show_ltrace -G'
snmp_exec[3]='show snmp trace requests'
snmp__ksh[3]='snmp_show_ltrace -R'
snmp_exec[4]='show snmp trace client'
snmp__ksh[4]='snmp_show_ltrace -C'
snmp_exec[5]='show snmp trace initialization'
snmp__ksh[5]='snmp_show_ltrace -I'
snmp_exec[6]='show snmp trace stats'
snmp__ksh[6]='snmp_show_ltrace -h -A'
snmp_exec[7]='show sysdb trace notification shared-plane'
snmp__ksh[7]='sysdb_show_ltrace -T nfn -s'
snmp_exec[8]='show sysdb trace verification shared-plane'
snmp__ksh[8]='sysdb_show_ltrace -T vrfn -s'
snmp_exec[9]='show snmp trace lib snmpipc process snmpd'
snmp__ksh[9]='snmpipc_show_ltrace -N snmpd'
snmp_exec[10]='show snmp trace timeout'
snmp__ksh[10]='snmp_show_ltrace -P'
snmp_exec[11]='show snmp trace slow oid'
snmp__ksh[11]='show_snmp_lib_slow_trace -O'
snmp_exec[12]='show snmp trace slow pdu'
snmp__ksh[12]='show_snmp_lib_slow_trace -P'
snmp_exec[13]='show snmp trace udp'
snmp__ksh[13]='snmp_show_ltrace -U'
snmp_exec[14]='show snmp trace overload'
snmp__ksh[14]='snmp_show_ltrace -O'
snmp_exec[15]='show watchdog trace'
snmp__ksh[15]='show_watchdog_trace'
snmp_exec[16]='show snmp trace dupdrop'
snmp__ksh[16]='snmp_show_ltrace -D'
snmp_exec[17]='show snmp trace error'
snmp__ksh[17]='snmp_show_ltrace -E'
snmp_exec[18]='show snmp trace packet'
snmp__ksh[18]='snmp_show_ltrace -B'
snmp_exec[19]='show snmp trace incomingQ'
snmp__ksh[19]='snmp_show_ltrace -Q'
snmp_exec[20]='show snmp trace lib dcm'
snmp__ksh[20]='show_snmp_lib_dcm_trace -d'

sys1_exec[1]='run top_procs -d 2 -i 10 -D'
sys1__ksh[1]='top_procs -d 2 -i 10 -D'
sys1_exec[2]='follow process $PID iteration 1 verbose'
sys1__ksh[2]='attach_process -p $PID -i 1 -v'
sys1_exec[3]='follow process $PID_ENTITY iteration 1 verbose'
sys1__ksh[3]='attach_process -p $PID_ENTITY -i 1 -v'
sys1_exec[4]='follow process $PID_ROUTE iteration 1 verbose'
sys1__ksh[4]='attach_process -p $PID_ROUTE -i 1 -v'
sys1_exec[5]='follow process $PID_INFRA iteration 1 verbose'
sys1__ksh[5]='attach_process -p $PID_INFRA -i 1 -v'
sys1_exec[6]='follow process $PID_INTERFACE iteration 1 verbose'
sys1__ksh[6]='attach_process -p $PID_INTERFACE -i 1 -v'
sys1_exec[7]='run malloc_dump -P $PID -d -A'
sys1__ksh[7]='malloc_dump -P $PID -d -A'
sys1_exec[8]='run malloc_dump -P $PID_ENTITY -d -A'
sys1__ksh[8]='malloc_dump -P $PID_ENTITY -d -A'
sys1_exec[9]='run malloc_dump -P $PID_ROUTE -d -A'
sys1__ksh[9]='malloc_dump -P $PID_ROUTE -d -A'
sys1_exec[10]='run malloc_dump -P $PID_INFRA -d -A'
sys1__ksh[10]='malloc_dump -P $PID_INFRA -d -A'
sys1_exec[11]='run malloc_dump -P $PID_INTERFACE -d -A'
sys1__ksh[11]='malloc_dump -P $PID_INTERFACE -d -A'
sys1_exec[12]='admin show version'
sys1__ksh[12]='show_version -a'
sys1_exec[13]='admin show install'
sys1__ksh[13]='instcmd show -A install active'
sys1_exec[14]='show running-config snmp-server'
sys1__ksh[14]='nvgen -c -q "gl/snmp/;gl/mibs/;gl/udpsnmp/"'
sys1_exec[15]='show logging'
sys1__ksh[15]='show_logging'
sys1_exec[16]='show processes block'
sys1__ksh[16]='show_processes -b'

#admin platform specific traces on CRS
sys_crs_exec[1]='admin show platform'
sys_crs__ksh[1]='shelfmgr_show_hfr -e'

#admin platform specific traces on ASR
sys_asr_exec[1]='admin show platform'
sys_asr__ksh[1]='show_platform_vkg -a'

# NG related CLI's
sys2_exec[1]='follow process $PID iteration 1'
sys2__ksh[1]='attach_process -p $PID -i 1'
sys2_exec[2]='run malloc_dump -d $PID'
sys2__ksh[2]='malloc_dump -d $PID'
sys2_exec[3]='follow process $PID_ENTITY iteration 1'
sys2__ksh[3]='attach_process -p $PID_ENTITY -i 1'
sys2_exec[4]='run malloc_dump -d $PID_ENTITY'
sys2__ksh[4]='malloc_dump -d $PID_ENTITY'
sys2_exec[5]='follow process $PID_ROUTE iteration 1'
sys2__ksh[5]='attach_process -p $PID_ROUTE -i 1'
sys2_exec[6]='run malloc_dump -d $PID_ROUTE'
sys2__ksh[6]='malloc_dump -d $PID_ROUTE'
sys2_exec[7]='follow process $PID_INFRA iteration 1'
sys2__ksh[7]='attach_process -p $PID_INFRA -i 1'
sys2_exec[8]='run malloc_dump -d $PID_INFRA'
sys2__ksh[8]='malloc_dump -d $PID_INFRA'
sys2_exec[9]='follow process $PID_INTERFACE iteration 1'
sys2__ksh[9]='attach_process -p $PID_INTERFACE -i 1'
sys2_exec[10]='run malloc_dump -d $PID_INTERFACE'
sys2__ksh[10]='malloc_dump -d $PID_INTERFACE'
sys2_exec[11]='show processes block'
sys2__ksh[11]='sh_proc_ng_blocked'
sys2_exec[12]='admin show version'
sys2__ksh[12]='ng_show_version'
sys2_exec[13]='admin show install'
sys2__ksh[13]='sdr_instcmd show install active'
sys2_exec[14]='admin show platform'
sys2__ksh[14]='show_platform_sysdb'
sys2_exec[15]='show running-config snmp-server'
sys2__ksh[15]='nvgen -c -q "gl/snmp/;gl/mibs/;gl/udpsnmp/"'
sys2_exec[16]='show logging'
sys2__ksh[16]='show_logging'

#  All MIBD information
interface_exec[1]='show snmp sub-agent group interface'
interface__ksh[1]='snmp_command -B -S interface'
interface_exec[2]='show snmp trace lib snmpipc process mibd_interface'
interface__ksh[2]='snmpipc_show_ltrace -N mibd_interface'
interface_exec[3]='show snmp trace lib group interface mibmgr lib'
interface__ksh[3]='show_mibmgr_trace -G interface -L'

# commented as part of CSCuc68506
#interface_exec[4]='show snmp trace lib group interface mibmgr mib'
#interface__ksh[4]='show_mibmgr_trace -G interface -M'

interface_exec[5]='show snmp trace lib group interface mibmgr error'
interface__ksh[5]='show_mibmgr_trace -G interface -E'

entity_exec[1]='show snmp sub-agent group entity'
entity__ksh[1]='snmp_command -B -S entity'
entity_exec[2]='show snmp trace lib snmpipc process mibd_entity'
entity__ksh[2]='snmpipc_show_ltrace -N mibd_entity'
entity_exec[3]='show snmp trace lib group entity mibmgr lib'
entity__ksh[3]='show_mibmgr_trace -G entity -L'

# commented as part of CSCuc68506
#entity_exec[4]='show snmp trace lib group entity mibmgr mib'
#entity__ksh[4]='show_mibmgr_trace -G entity -M'

entity_exec[5]='show snmp trace lib group entity mibmgr error'
entity__ksh[5]='show_mibmgr_trace -G entity -E'

infra_exec[1]='show snmp sub-agent group infra'
infra__ksh[1]='snmp_command -B -S infra'
infra_exec[2]='show snmp trace lib snmpipc process mibd_infra'
infra__ksh[2]='snmpipc_show_ltrace -N mibd_infra'
infra_exec[3]='show snmp trace lib group infra mibmgr lib'
infra__ksh[3]='show_mibmgr_trace -G infra -L'

# commented as part of CSCuc68506
#infra_exec[4]='show snmp trace lib group infra mibmgr mib'
#infra__ksh[4]='show_mibmgr_trace -G infra -M'

infra_exec[5]='show snmp trace lib group infra mibmgr error'
infra__ksh[5]='show_mibmgr_trace -G infra -E'

route_exec[1]='show snmp sub-agent group route'
route__ksh[1]='snmp_command -B -S route'
route_exec[2]='show snmp trace lib snmpipc process mibd_route'
route__ksh[2]='snmpipc_show_ltrace -N mibd_route'
route_exec[3]='show snmp trace lib group route mibmgr lib'
route__ksh[3]='show_mibmgr_trace -G route -L'

# commented as part of CSCuc68506
#route_exec[4]='show snmp trace lib group route mibmgr mib'
#route__ksh[4]='show_mibmgr_trace -G route -M'

route_exec[5]='show snmp trace lib group route mibmgr error'
route__ksh[5]='show_mibmgr_trace -G route -E'

#ifmib related information
if_exec[1]='show snmp interface'
if__ksh[1]='show_snmp_interface -a'
if_exec[2]='show snmp trace ifindex_provider'
if__ksh[2]='show_ifindex_ltrace'

if_exec[3]='show sysdb trace access shared-plan'
if__ksh[3]='sysdb_show_ltrace -T access -s'
if_exec[4]='show sysdb requests shared-plane'
if__ksh[4]='sysdbshow -s -c requests'
if_exec[5]='show sysdb trace edm shared-plane'
if__ksh[5]='sysdb_show_ltrace -T edm -s'
if_exec[6]='show sysdb trace notification shared-plane'
if__ksh[6]='sysdb_show_ltrace -T nfn -s'
if_exec[7]='show snmp trace mib ifmib'
if__ksh[7]='snmp_show_ltrace_ifmib -A'
if_exec[8]='show snmp mib  ifmib general'
if__ksh[8]='show_snmp_ifmib_stats -g'
if_exec[9]='show snmp mib ifmib cache'
if__ksh[9]='show_snmp_ifmib_stats -c'
if_exec[10]='show snmp mib ifmib statsd'
if__ksh[10]='show_snmp_ifmib_stats -s'
if_exec[11]='show snmp trace ifindex-provider persistence'
if__ksh[11]='show_ifindex_server_ltrace -p'


#ifmib related info that needs to be executed once
sysif_exec[1]='show ipv4 interface brief'
sysif__ksh[1]='show_ip_interface -b -v default'
sysif_exec[2]='show im database detail location all'
sysif__ksh[2]='im_show database -l 0x2 -a'
sysif_exec[3]='show im activity client process-name mibd_interface location all'
sysif__ksh[3]='im_show act-client -n mibd_interface -l 0x1 -a'

ent1_exec[1]='admin show inventory'
ent1__ksh[1]='show_inventory -a'
ent1_exec[2]='admin show diag'
ent1__ksh[2]='show_diag admin'
ent1_exec[3]='admin show sysdb trace edm'
ent1__ksh[3]='sysdb_show_ltrace -T edm -A'
ent1_exec[4]='admin show sysdb trace notification'
ent1__ksh[4]='sysdb_show_ltrace -T nfn -A'


ent_exec[1]='show snmp trace inventoryci build'
ent__ksh[1]='inventoryci_show_ltrace -B'
ent_exec[2]='show snmp trace inventoryci fan'
ent__ksh[2]='inventoryci_show_ltrace -F'
ent_exec[3]='show snmp trace inventoryci error'
ent__ksh[3]='inventoryci_show_ltrace -E'
ent_exec[4]='show snmp trace inventoryci free'
ent__ksh[4]='inventoryci_show_ltrace -R'
ent_exec[5]='show snmp trace inventoryci power'
ent__ksh[5]='inventoryci_show_ltrace -P'
ent_exec[6]='show snmp trace inventoryci oir'
ent__ksh[6]='inventoryci_show_ltrace -O'
ent_exec[7]='show snmp trace inventoryci lr'
ent__ksh[7]='inventoryci_show_ltrace -L'
ent_exec[8]='show snmp trace inventoryci client'
ent__ksh[8]='inventoryci_show_ltrace -C'
ent_exec[9]='show snmp entity mapping path'
ent__ksh[9]='show_entity_map -p'
ent_exec[10]='show snmp entity mapping port'
ent__ksh[10]='show_entity_map -a'

#inventory manager specific traces on CRS
ent_crs_exec[1]='show inventory trace fan'
ent_crs__ksh[1]='inv_show_fan_ltrace'
ent_crs_exec[2]='show inventory trace power'
ent_crs__ksh[2]='inv_show_power_ltrace'
ent_crs_exec[3]='show inventory trace build'
ent_crs__ksh[3]='invmgr_show_ltrace'
ent_crs_exec[4]='show inventory trace sensor'
ent_crs__ksh[4]='inv_show_sensor_ltrace'
ent_crs_exec[5]='show inventory trace free'
ent_crs__ksh[5]='inv_show_free_ltrace'
ent_crs_exec[6]='show inventory trace error'
ent_crs__ksh[6]='inv_show_error_ltrace'
ent_crs_exec[7]='show inventory trace server'
ent_crs__ksh[7]='inv_show_server_ltrace'

#inventory manager specific traces on C12K
ent_c12k_exec[1]='admin show invmgr trace debug'
ent_c12k__ksh[1]='inv_show_ltrace -D'
ent_c12k_exec[2]='admin show invmgr trace errors'
ent_c12k__ksh[2]='inv_show_ltrace -E'
ent_c12k_exec[3]='admin show invmgr trace edmutil'
ent_c12k__ksh[3]='inv_show_ltrace -U'

#inventory manager specific traces on ASR9K
ent_asr_exec[1]='show inventory trace fan'
ent_asr__ksh[1]='inv_show_fan_ltrace'
ent_asr_exec[2]='show inventory trace power'
ent_asr__ksh[2]='inv_show_power_ltrace'
ent_asr_exec[3]='show inventory trace build'
ent_asr__ksh[3]='invmgr_show_ltrace'
ent_asr_exec[4]='show inventory trace free'
ent_asr__ksh[4]='inv_show_free_ltrace'
ent_asr_exec[5]='show inventory trace error'
ent_asr__ksh[5]='inv_show_error_ltrace'

__cardtype="unspecified"
if=0
ent=0
snmp=0
CRS=""
C12K=""
ASR=""
OS_STRING=`uname -s`

while [ "$#" -gt "0" ]; do

    case "$1" in
        -t) __cardtype="$2"; shift 2;;
        -I) if=1;
            if [[ ${OS_STRING} = "QNX" ]]; then
                PID=`sysmgr_show -o -p mibd_interface | grep -e PID | xargs | cut -f 2 -d ":"`;
            else
                PID=`ps -ef | grep mibd_interface | grep -v grep | awk '{print \$2}'`;
            fi
            shift 1;; 
        -E) ent=1; 
            if [[ ${OS_STRING} = "QNX" ]]; then
                PID=`sysmgr_show -o -p mibd_entity | grep -e PID | xargs | cut -f 2 -d ":"`;
            else
                PID=`ps -ef | grep mibd_entity | grep -v grep | awk '{print \$2}'`;
            fi
            shift 1;;
        -S) snmp=1; 
            if [[ ${OS_STRING} = "QNX" ]]; then
                PID=`sysmgr_show -o -p snmpd | grep -e PID | xargs | cut -f 2 -d ":"`;
            else
                PID=`ps -ef | grep snmpd | grep -v grep | awk '{print \$2}'`;
            fi
            if [[ ${OS_STRING} = "QNX" ]]; then
                PID_INTERFACE=`sysmgr_show -o -p mibd_interface | grep -e PID | xargs | cut -f 2 -d ":"`;
            else
                PID_INTERFACE=`ps -ef | grep mibd_interface | grep -v grep | awk '{print \$2}'`;
            fi
            if [[ ${OS_STRING} = "QNX" ]]; then
                PID_INFRA=`sysmgr_show -o -p mibd_infra | grep -e PID | xargs | cut -f 2 -d ":"`;
            else
                PID_INFRA=`ps -ef | grep mibd_infra | grep -v grep | awk '{print \$2}'`;
            fi
            if [[ ${OS_STRING} = "QNX" ]]; then
                PID_ROUTE=`sysmgr_show -o -p mibd_route | grep -e PID | xargs | cut -f 2 -d ":"`;
            else
                PID_ROUTE=`ps -ef | grep mibd_route | grep -v grep | awk '{print \$2}'`;
            fi
            if [[ ${OS_STRING} = "QNX" ]]; then
                PID_ENTITY=`sysmgr_show -o -p mibd_entity | grep -e PID | xargs | cut -f 2 -d ":"`;
            else
                PID_ENTITY=`ps -ef | grep mibd_entity | grep -v grep | awk '{print \$2}'`;
            fi
            shift 1;;
        *)  default_parser_function $@; shift $#;;
    esac
done

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

#
# Get sysmgr trace
#
getsysmgr_trace() {
    
    print_heading "show sysmgr trace | include snmpd" "-"
    sysmgr_show_ltrace | grep -E snmpd 
    print_heading "show sysmgr trace | include mibd" "-"
    sysmgr_show_ltrace | grep -E mibd 
}

#
# Get the CE interfaces list and form the command to get 
# attributes and statics 
#
findce_int() {
    temp=`cemgbl_show -i NULL -n $fq_nodeid -t 0xe`
    if [[ $# -eq 0 ]]; then
        set $temp
        index=1
        while [ "$#" -gt "0" ]; do
            ce1_exec[$index]="Control Ethernet attributes $1"
            ce1__ksh[$index]="cemgbl_show -i $1 -n 0x0 -t 0x1"
            ce2_exec[$index]="Control Ethernet Statistics $1"
            ce2__ksh[$index]="cemgbl_show -i $1 -n 0x0 -t 0x2"
            index=$index+1
            shift
        done
    fi
}

find_platform() {
    version=`show_version`
    CRS=`echo $version | grep CRS`
    C12K=`echo $version | grep 12000`
    ASR=`echo $version | grep ASR`
}
    

#
# Our display function
#
display() {

    if [ "$__cardtype" == "SYS" ]; then
        if [[ ${OS_STRING} = "QNX" ]]; then
            exec_commands sys1
            find_platform
            if [[ -n $CRS ]]; then
                exec_commands sys_crs
            elif [[ -n $ASR ]]; then
                exec_commands sys_asr
            fi
        else
            exec_commands sys2
        fi 
        exec_commands sys     
        getsysmgr_trace
        if [[ $snmp -eq 1 ]]; then
            exec_commands snmp1
        elif [[ $if -eq 1 ]]; then
            exec_commands sysif
        fi
    else
        case "$__cardtype" in
        "DRP"|"RP")
            if [[ $snmp -eq 1 ]]; then
                exec_commands snmp
                exec_commands interface
                exec_commands entity
                exec_commands infra
                exec_commands route
            elif [[ $if -eq 1 ]]; then
                exec_commands interface
                exec_commands if
                
                if [[ -n $CRS ]]; then
                    findce_int
                    exec_commands ce1
                    exec_commands ce2
                fi
            elif [[ $ent -eq 1 ]]; then
                find_platform
                exec_commands entity
                if [[ -n $C12K ]]; then
                    exec_commands ent_c12k
                elif [[ -n $CRS ]]; then
                    exec_commands ent_crs
                elif [[ -n $ASR ]]; then
                    exec_commands ent_asr
                fi
                if [[ ${OS_STRING} = "QNX" ]]; then
                    exec_commands ent1
                fi
                exec_commands ent
            fi
            ;;
        esac
    fi
}


#
# Use the standard show tech-support infra to call our display function and
# send the output to console or file
#
. /pkg/bin/show_tech_file_fragment

