#! /pkg/bin/ksh
# ----------------------------------------------------------------------
# show_tech_acl_pd_util -- ACL PD tech-support utilities
#
# June 2016, Jeff Taylor
#
# Copyright (c) 2016-2021 by cisco Systems, Inc.
# All rights reserved.
#-----------------------------------------------------------------------

enable_techs "" ofa

################################################################
# Commands that should run in parallel on all applicable nodes
################################################################
display_platform_rplc_acl_pd() {
    i=1
    j=1

    acl_rplc_fretta_exec[i++]='show im database brief location $location'
    acl_rplc_fretta__ksh[j++]='im_show database -l 0x0 -h $fq_nodeid'

    acl_rplc_fretta__ksh[j++]=''

    exec_commands acl_rplc_fretta
}

################################################################
# Commands that should run in parallel on all LCs only
################################################################

# Common (for all AFIs) commands
display_platform_lc_acl_pd() {
    i=1
    j=1

    acl_lc_fretta_exec[i++]='show feature-mgr client pfilter-ea trace all location $location'
    acl_lc_fretta__ksh[j++]='dpa_fm_show_ltrace -A -C 0x0'

    acl_lc_fretta_exec[i++]='show dpa resources all location $location'
    acl_lc_fretta__ksh[j++]='ofa_sysdb_show_resources -t 0x270f -l $fq_nodeid'

    acl_lc_fretta_exec[i++]='show feature-mgr client pfilter-ea feature-info summary location $location'
    acl_lc_fretta__ksh[j++]='dpa_fm_show -c 0 -S -R -n $fq_nodeid'

    acl_lc_fretta_exec[i++]='show feature-mgr client pfilter-ea idb summary location $location'
    acl_lc_fretta__ksh[j++]='dpa_fm_show -c 0 -S -I -n $fq_nodeid'

    acl_lc_fretta_exec[i++]='show controllers npu internaltcam location $location'
    acl_lc_fretta__ksh[j++]='fia_sysdb_show_internal_tcam_resources -l $fq_nodeid -t 0'

    acl_lc_fretta_exec[i++]='show controllers npu externaltcam location $location'
    acl_lc_fretta__ksh[j++]='fia_sysdb_show_internal_tcam_resources -l $fq_nodeid -t 1'

    acl_lc_fretta_exec[i++]='dpa show global object count'
    acl_lc_fretta__ksh[j++]='ofa_show_client -t global -c'

    acl_lc_fretta_exec[i++]='dpa show global'
    acl_lc_fretta__ksh[j++]='ofa_show_client -t global -D'

    acl_lc_fretta_exec[i++]='dpa show extlif object count'
    acl_lc_fretta__ksh[j++]='ofa_show_client -t extlif -c'

    acl_lc_fretta_exec[i++]='dpa show extlif'
    acl_lc_fretta__ksh[j++]='ofa_show_client -t extlif -D'

    acl_lc_fretta_exec[i++]='dpa show dnx_port_range'
    acl_lc_fretta__ksh[j++]='dpa_show port_range'

    acl_lc_fretta_exec[i++]='show controllers npu resources stats instance all location $location'
    acl_lc_fretta__ksh[j++]='bcmdpa_sysdb_show_hw_resources -s -i 0x10 -l $fq_nodeid'

    acl_lc_fretta_exec[i++]='dpa show ingaclstats object count'
    acl_lc_fretta__ksh[j++]='ofa_show_client -t ingaclstats -c'

    acl_lc_fretta_exec[i++]='dpa show ingaclstats'
    acl_lc_fretta__ksh[j++]='ofa_show_client -t ingaclstats -D'

    acl_lc_fretta_exec[i++]='dpa show egraclstats object count'
    acl_lc_fretta__ksh[j++]='ofa_show_client -t egraclstats -c'

    acl_lc_fretta_exec[i++]='dpa show egraclstats'
    acl_lc_fretta__ksh[j++]='ofa_show_client -t egraclstats -D'

    acl_lc_fretta_exec[i++]='show dnx stat-rm'
    acl_lc_fretta__ksh[j++]='show_dpa_statrm -A'

    exec_commands acl_lc_fretta
}

# AFI-specific commands
display_platform_lc_acl_ipv4_pd() {
    i=1
    j=1

    ipv4_acl_lc_fretta_exec[i++]='show pfilter-ea ipv4 trace all location $location'
    ipv4_acl_lc_fretta__ksh[j++]='pfilter_ea_show_ltrace ipv4 -J'

    ipv4_acl_lc_fretta_exec[i++]='dpa show ipacl object count'
    ipv4_acl_lc_fretta__ksh[j++]='ofa_show_client -t ipacl -c'

    ipv4_acl_lc_fretta_exec[i++]='dpa show ipacl formatted table'
    ipv4_acl_lc_fretta__ksh[j++]='dpa_show ipacl'

    ipv4_acl_lc_fretta_exec[i++]='dpa show ipacl'
    ipv4_acl_lc_fretta__ksh[j++]='ofa_show_client -t ipacl -D'

    ipv4_acl_lc_fretta_exec[i++]='dpa show ipaclprefix object count'
    ipv4_acl_lc_fretta__ksh[j++]='ofa_show_client -t ipaclprefix -c'

    ipv4_acl_lc_fretta_exec[i++]='dpa show ipaclprefix formatted table'
    ipv4_acl_lc_fretta__ksh[j++]='dpa_show ipaclprefix'

    ipv4_acl_lc_fretta_exec[i++]='dpa show ipaclprefix'
    ipv4_acl_lc_fretta__ksh[j++]='ofa_show_client -t ipaclprefix -D'

    ipv4_acl_lc_fretta_exec[i++]='dpa show ipaclport object count'
    ipv4_acl_lc_fretta__ksh[j++]='ofa_show_client -t ipaclport -c'

    ipv4_acl_lc_fretta_exec[i++]='dpa show ipaclport formatted table'
    ipv4_acl_lc_fretta__ksh[j++]='dpa_show ipaclport'

    ipv4_acl_lc_fretta_exec[i++]='dpa show ipaclport'
    ipv4_acl_lc_fretta__ksh[j++]='ofa_show_client -t ipaclport -D'

    ipv4_acl_lc_fretta_exec[i++]='dpa show scaleacl object count'
    ipv4_acl_lc_fretta__ksh[j++]='ofa_show_client -t scaleacl -c'

    ipv4_acl_lc_fretta_exec[i++]='dpa show scaleacl formatted table'
    ipv4_acl_lc_fretta__ksh[j++]='dpa_show scaleacl'

    ipv4_acl_lc_fretta_exec[i++]='dpa show scaleacl'
    ipv4_acl_lc_fretta__ksh[j++]='ofa_show_client -t scaleacl -D'

    ipv4_acl_lc_fretta_exec[i++]='show cef ipv4 ext-client summary location $location'
    ipv4_acl_lc_fretta__ksh[j++]='fib_show_command -t -O 0x0 -e -C summary'

    ipv4_acl_lc_fretta_exec[i++]='show cef ipv4 ext-client hardware egress detail loc $location'
    ipv4_acl_lc_fretta__ksh[j++]='fib_show_command -t -O 0x0 -e -H egress -d'

    ipv4_acl_lc_fretta_exec[i++]='dpa show vrfredirect object count'
    ipv4_acl_lc_fretta__ksh[j++]='ofa_show_client -t redirectvrf -c'

    ipv4_acl_lc_fretta_exec[i++]='dpa show vrfredirect'
    ipv4_acl_lc_fretta__ksh[j++]='ofa_show_client -t redirectvrf -D'

    ipv4_acl_lc_fretta_exec[i++]='show rsi table ipv4 unicast location $location'
    ipv4_acl_lc_fretta__ksh[j++]='show_rsi_agent -c 0x1f -u 0x1 -v 0x1'

    exec_commands ipv4_acl_lc_fretta

    # common LC ACL PD commands (shared by all AFIs)
    display_platform_lc_acl_pd
}

display_platform_lc_acl_ipv6_pd() {
    i=1
    j=1

    ipv6_acl_lc_fretta_exec[i++]='show pfilter-ea ipv6 trace all location $location'
    ipv6_acl_lc_fretta__ksh[j++]='pfilter_ea_show_ltrace ipv6 -J'

    ipv6_acl_lc_fretta_exec[i++]='dpa show ip6acl object count'
    ipv6_acl_lc_fretta__ksh[j++]='ofa_show_client -t ip6acl -c'

    ipv6_acl_lc_fretta_exec[i++]='dpa show ip6acl formatted table'
    ipv6_acl_lc_fretta__ksh[j++]='dpa_show ip6acl'

    ipv6_acl_lc_fretta_exec[i++]='dpa show ip6acl'
    ipv6_acl_lc_fretta__ksh[j++]='ofa_show_client -t ip6acl -D'

    ipv6_acl_lc_fretta_exec[i++]='dpa show ip6aclprefix object count'
    ipv6_acl_lc_fretta__ksh[j++]='ofa_show_client -t ip6aclprefix -c'

    ipv6_acl_lc_fretta_exec[i++]='dpa show ip6aclprefix formatted table'
    ipv6_acl_lc_fretta__ksh[j++]='dpa_show ip6aclprefix'

    ipv6_acl_lc_fretta_exec[i++]='dpa show ip6aclprefix'
    ipv6_acl_lc_fretta__ksh[j++]='ofa_show_client -t ip6aclprefix -D'

    ipv6_acl_lc_fretta_exec[i++]='dpa show ipaclport object count'
    ipv6_acl_lc_fretta__ksh[j++]='ofa_show_client -t ipaclport -c'

    ipv6_acl_lc_fretta_exec[i++]='dpa show ipaclport formatted table'
    ipv6_acl_lc_fretta__ksh[j++]='dpa_show ipaclport'

    ipv6_acl_lc_fretta_exec[i++]='dpa show ipaclport'
    ipv6_acl_lc_fretta__ksh[j++]='ofa_show_client -t ipaclport -D'

    ipv6_acl_lc_fretta_exec[i++]='dpa show scaleacl object count'
    ipv6_acl_lc_fretta__ksh[j++]='ofa_show_client -t scaleacl -c'

    ipv6_acl_lc_fretta_exec[i++]='dpa show scaleacl formatted table'
    ipv6_acl_lc_fretta__ksh[j++]='dpa_show scaleacl'

    ipv6_acl_lc_fretta_exec[i++]='dpa show scaleacl'
    ipv6_acl_lc_fretta__ksh[j++]='ofa_show_client -t scaleacl -D'

    ipv6_acl_lc_fretta_exec[i++]='show cef ipv6 ext-client summary location $location'
    ipv6_acl_lc_fretta__ksh[j++]='fib_show_command -t -O 0x1 -e -C summary'

    ipv6_acl_lc_fretta_exec[i++]='show cef ipv6 ext-client hardware egress detail loc $location'
    ipv6_acl_lc_fretta__ksh[j++]='fib_show_command -t -O 0x1 -e -H egress -d'

    ipv6_acl_lc_fretta_exec[i++]='dpa show vrfredirect object count'
    ipv6_acl_lc_fretta__ksh[j++]='ofa_show_client -t redirectvrf -c'

    ipv6_acl_lc_fretta_exec[i++]='dpa show vrfredirect'
    ipv6_acl_lc_fretta__ksh[j++]='ofa_show_client -t redirectvrf -D'

    ipv6_acl_lc_fretta_exec[i++]='show rsi table ipv6 unicast location $location'
    ipv6_acl_lc_fretta__ksh[j++]='show_rsi_agent -c 0x1f -u 0x2 -v 0x1'

    exec_commands ipv6_acl_lc_fretta

    # common LC ACL PD commands (shared by all AFIs)
    display_platform_lc_acl_pd
}

display_platform_lc_acl_es_pd() {
    i=1
    j=1

    es_acl_lc_fretta_exec[i++]='show pfilter-ea ethernet-services trace all location $location'
    es_acl_lc_fretta__ksh[j++]='pfilter_ea_show_ltrace es -J'

    es_acl_lc_fretta_exec[i++]='dpa show l2acl object count'
    es_acl_lc_fretta__ksh[j++]='ofa_show_client -t l2acl -c'

    es_acl_lc_fretta_exec[i++]='dpa show l2acl'
    es_acl_lc_fretta__ksh[j++]='ofa_show_client -t l2acl -D'

    exec_commands es_acl_lc_fretta

    # common LC ACL PD commands (shared by all AFIs)
    display_platform_lc_acl_pd

#    display_dpa_lc
}
