#!/pkg/bin/ksh
###############################################
# 
# mcast_ltrace_resize
# Utility to increase size of ltrace files
# This tool is based on steps given @
# http://wiki-eng.cisco.com/engwiki/IOX_2dLTRACE_2dDYNAMIC
# 
# Currently catered for multicast related processes
# on the ASR9k platform
#
# Kiran Prakash, kiprakas@cisco.com
#
# Copyright (c) 2013, 2015-2016 by cisco Systems, Inc.
###############################################

#
# Sample usage:
# 
# For RSP process:
#
# router> run
# ksh# mcast_ltrace_resize mgid 1024000
#
# For LC process:
#
# router> run attach 0/0/cpu0
# ksh# mcast_ltrace_resize mfibv4 1024000
#

print_usage() {
    print "Usage: ./mcast_ltrace_resize.pl <proc name> <additional entries>"; 
    print "Proc name options: mfibv4 mfibv6 mrib mrib6 mgid snoop\n";
}

if [[ $# -lt 2 ]]; then
    print "Missing arguments";
    print_usage
    exit
else
    if [[ $2 -lt 1 ]]; then
        print "Invalid size";
        print_usage
        exit
    fi
    if [[ $1 = "mfibv4" ]]; then
        cd /tmp/ltrace/mfwd_ipv4_hw
        ltrace_ctrl -e error $2 102400
        ltrace_ctrl -e event $2 102400
        ltrace_ctrl -e fevent $2 102400 
        ltrace_ctrl -e init $2 102400
        ltrace_ctrl -e netio $2 102400
        exit
    fi
    if [[ $1 = "mfibv6" ]]; then
        cd /tmp/ltrace/mfwd_ipv6_hw
        ltrace_ctrl -e error $2 102400
        ltrace_ctrl -e event $2 102400
        ltrace_ctrl -e fevent $2 102400 
        ltrace_ctrl -e init $2 102400
        ltrace_ctrl -e netio $2 102400
        exit
    fi
    if [[ $1 = "mrib" ]]; then
        cd /tmp/ltrace/mrib
        ltrace_ctrl -e plat_mrib_main $2 102400
        ltrace_ctrl -e plat_mrib_main_err $2 102400
        ltrace_ctrl -e plat_lmrib_enc_rpf $2 102400
        ltrace_ctrl -e plat_lmrib_enc_rpf_err $2 102400
        ltrace_ctrl -e plat_mrib_cluster $2 102400
        ltrace_ctrl -e plat_mrib_cluster_err $2 102400
        ltrace_ctrl -e plat_other $2 102400
        ltrace_ctrl -e plat_other_err $2 102400
        exit
    fi
    if [[ $1 = "mrib6" ]]; then
        cd /tmp/ltrace/mrib6
        ltrace_ctrl -e plat_mrib_main $2 102400
        ltrace_ctrl -e plat_mrib_main_err $2 102400
        ltrace_ctrl -e plat_lmrib_enc_rpf $2 102400
        ltrace_ctrl -e plat_lmrib_enc_rpf_err $2 102400
        ltrace_ctrl -e plat_mrib_cluster $2 102400
        ltrace_ctrl -e plat_mrib_cluster_err $2 102400
        ltrace_ctrl -e plat_other $2 102400
        ltrace_ctrl -e plat_other_err $2 102400
        exit
    fi
    if [[ $1 = "mgid" ]]; then
        cd /tmp/ltrace/mgid
        ltrace_ctrl -e error $2 102400
        ltrace_ctrl -e event $2 102400
        ltrace_ctrl -e fevent $2 102400 
        exit
    fi
    if [[ $1 = "snoop" ]]; then
        cd /tmp/ltrace/asr9k-l2fib/l2mc-snoop
        ltrace_ctrl -e error $2 102400
        ltrace_ctrl -e event $2 102400
        ltrace_ctrl -e critical $2 102400 
        ltrace_ctrl -e verbose $2 102400
        exit
    fi
    print "Invalid proc name";
    print_usage
    exit
fi

