Last active
October 19, 2022 13:32
-
-
Save nmicic/c6e2d38de4ff119c07ed0624320e80f5 to your computer and use it in GitHub Desktop.
UcadCryptoMon.sh
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| ### Ver 4.4 # 17th Oct 2022 | |
| ###Contact: nmicic@cisco.com | |
| ### NOTE script monitor for the following errors on DPC only | |
| ### ucam_cavecreek_dh_p1_sync()[2995]: cpaCyDhKeyGenPhase1() Failed with Status: -2! | |
| ### | |
| ### NOTE: Please copy/paste script from begin #!/bin/bash to the ###END | |
| ### NOTE: Please copy/paste script from begin #!/bin/bash to the ###END | |
| ### NOTE: Please copy/paste script from begin #!/bin/bash to the ###END | |
| read -r -d '' HELP_README << README_BEGIN_END | |
| # get to debug shell after cli test-commands password ... | |
| To run: | |
| cd /var/tmp | |
| cat > UcadCryptoMon_script.sh | |
| <copy/paste this script> | |
| CTRL+D | |
| ... then: | |
| chmod +x UcadCryptoMon_script.sh | |
| ./UcadCryptoMon_script.sh | |
| exit | |
| NOTE: To stop get in debug shell run in debug shell on Active MIO: | |
| /var/tmp/UcadCryptoMon_script.sh -r | |
| exit | |
| NOTE: To restart script after stopping, please wait couple of minutes! Stopping depends on time $SleepIntervalDPC and $SleepIntervalMIO | |
| NOTE: To Check if script is running on cards: | |
| /var/tmp/UcadCryptoMon_script.sh -c | |
| NOTE: Always check if script is running after starting it, if script re-run is too fast after stopping may not be running on all cards. | |
| # | |
| README_BEGIN_END | |
| ### Script start | |
| RebootEnabled="No" # Yes/No | |
| ScheduledReboot=Yes # Yes/No | |
| ScheduledHour=0 # 0=Midnight, 1=1h, 2=2h, ... etc | |
| MinimumActiveCardsAllowingReboot=7 | |
| MinimumOfflineCardsAllowingReboot=0 | |
| # Please don't change anything below this line! | |
| # Please don't change anything below this line! | |
| # Please don't change anything below this line! | |
| # Please don't change anything below this line! | |
| # Please don't change anything below this line! | |
| UCADDIR="/mnt/hd-raid/data/ucad" | |
| DEBUG=0 | |
| DPCDEBUG1=0 | |
| DPCDEBUG2=0 | |
| LastAction="enableReboot" | |
| TriggerRebootNow="No" | |
| FuncRebootCardCNT=0 | |
| FuncRebootCard1stTime="" | |
| DPCRandomTest="No" # Yes/No | |
| SimulateProcUcad="No" # Yes/No | |
| mySLOT=`sn-dlutil --my-slot` | |
| myCPU=`sn-dlutil --my-cpu` | |
| ActiveMIO=$( sn-dlutil --master-spc-slot ) | |
| myCARDCPU="card"$mySLOT"-cpu"$myCPU | |
| #CmdMatchingString="(ucad|ucam).*Failed with Status: -2" | |
| CmdMatchingString="(ucad|ucam).*(Failed with Status: -2|Packet Processing Failed with Status)" | |
| CmdExec="dmesg" | |
| SleepIntervalMIO=10 # Please don't change this - it may mess up Minute check in _func_main_mio | |
| SleepIntervalDPC=60 # Changing may impact on Scheduled Reboot Minutee check. | |
| CaseNotMatcheched=0 | |
| MaxUcadMinutesDeletion=120 | |
| MaxInd=60 | |
| deltaUPTIME=0 | |
| MEMMAX=8196 | |
| MEMINIT=0 | |
| j=0 | |
| i=0 | |
| Count=0 | |
| Index=0 | |
| PrevDay=0 | |
| Day=0 | |
| _DayWeek=0 | |
| PrevHour=0 | |
| Hour=0 | |
| PrevMinute=0 | |
| Minute=0 | |
| CntDay=0 | |
| CntHour=0 | |
| SCRIPTNAME="UcadCryptoMon" | |
| SCRIPTFILENAME="$SCRIPTNAME"_script.sh | |
| SCRIPTPATH="/var/tmp" | |
| SCRIPTFULLPATH="$SCRIPTPATH"/"$SCRIPTFILENAME" | |
| KEEPRUNNINGFILE="/var/tmp/keeprunning_"$SCRIPTNAME"_script_sh.txt" | |
| LASTRUNFILE="/var/tmp/lastrun_"$SCRIPTNAME"_script_sh.txt" | |
| STOPPEDFILE="/var/tmp/stopped_"$SCRIPTNAME"_script_sh.txt" | |
| CARDEXECUTEDFILE="/var/tmp/cardexecute_"$SCRIPTNAME"_script_sh.txt" | |
| CARDREMOVEDFILE="/var/tmp/cardremoved_"$SCRIPTNAME"_script_sh.txt" | |
| ERRORFILE="/var/tmp/error_"$SCRIPTNAME"_script_sh.txt" | |
| MEMORYCHECKFILE="/var/tmp/memorycheck_"$SCRIPTNAME"_script_sh.txt" | |
| DISABLEREBOOTFILE="/var/tmp/disableReboot_"$SCRIPTNAME"_script_sh.txt" | |
| #begin _icp_qat_stats | |
| ICP_DIR="" | |
| QatHang=0 | |
| QatWC="" | |
| QatStats="" | |
| QatInfo="" | |
| TotalHangQat=0 | |
| FirstHangQat="" | |
| CollectedFirstQat=0 | |
| #end _icp_qat_stats | |
| #begin _ucad_buffers_delta_icp | |
| PREVALLOC1=0 | |
| PREVALLOC2=0 | |
| PREVALLOC3=0 | |
| PREVALLOC4=0 | |
| PREVFREE1=0 | |
| PREVFREE2=0 | |
| PREVFREE3=0 | |
| PREVFREE4=0 | |
| MAX_ICP_COLL=2 | |
| SLEEP_ICP_COLL=0.5 | |
| IcpInflights="" | |
| ESPpkts="" | |
| #end _ucad_buffers_delta_icp | |
| for ((i=0;i<32;i++)); do DebugCondition["$i"]=0;done | |
| ARGV1=$1 | |
| Threshold_LastCollection[1]=64 | |
| Threshold_LastCollection[2]=65 | |
| Threshold_TotalALL[1]=10000 | |
| Threshold_TotalALL[2]=10001 | |
| Threshold_PerDayOfWeek[1]=2048 | |
| Threshold_PerDayOfWeek[2]=2049 | |
| Threshold_PerHour[1]=256 | |
| Threshold_PerHour[2]=257 | |
| Threshold_LastPeriod[1]=128 | |
| Threshold_LastPeriod[2]=129 | |
| test $DPCDEBUG1 -ne 0 && echo ThresholdCounter ErrStatus1 ${Threshold_LastCollection[1]} ${Threshold_TotalALL[1]} ${Threshold_PerDayOfWeek[1]} ${Threshold_PerHour[1]} ${Threshold_LastPeriod[1]} > /dev/kmsg | |
| test $DPCDEBUG1 -ne 0 && echo ThresholdCounter ErrStatus2 ${Threshold_LastCollection[2]} ${Threshold_TotalALL[2]} ${Threshold_PerDayOfWeek[2]} ${Threshold_PerHour[2]} ${Threshold_LastPeriod[2]} > /dev/kmsg | |
| # cat /proc/ucad/debug/stats_raw | awk 'BEGIN{printf "BEGIN /proc/ucad/debug/stats_raw::%d::",systime()} {printf "%s;" substr($0,25)} END{printf ";END\n"}' | tr -d " " > /dev/kmsg | |
| ### Init counters BEGIN | |
| PrevCounterDay=0 | |
| PrevHourCounter=0 | |
| PrevIndexCounter=0 | |
| CounterNames=( "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" ) | |
| ErrStatus1=0 | |
| ErrStatus2=0 | |
| ### | |
| for cntName in "${CounterNames[@]}";do | |
| CntPrevUnixTime[$cntName]=0 | |
| CntCurrUnixTime[$cntName]=0 | |
| CntDeltUnixTime[$cntName]=0 | |
| Counter[$cntName]=0 | |
| PrevCounter[$cntName]=0 | |
| DeltaCounter[$cntName]=0 | |
| TotalALL[$cntName]=0 | |
| TotalPerDayOfWeek[$cntName]=0 | |
| TotalPerHour[$cntName]=0 | |
| TotalLastPeriod[$cntName]=0 | |
| if [ $cntName == "1" ] ;then | |
| for ((i=0;i<=7;i++)); do CounterPerDayOfWeek1[$i]=0;done | |
| for ((i=0;i<24;i++)); do CounterIndexValuePerHour1[$i]=0;done | |
| for ((i=0;i<$MaxInd;i++)); do CounterIndexsValueA[$i]=0;CounterIndexsUptimeA[$i]=0;done | |
| fi | |
| if [ $cntName == "2" ] ;then | |
| for ((i=0;i<=7;i++)); do CounterPerDayOfWeek2[$i]=0;done | |
| for ((i=0;i<24;i++)); do CounterIndexValuePerHour2[$i]=0;done | |
| for ((i=0;i<$MaxInd;i++)); do CounterIndexsValueB[$i]=0;CounterIndexsUptimeB[$i]=0;done | |
| fi | |
| if [ $cntName == "3" ];then | |
| # for ((i=0;i<=7;i++)); do CounterPerDayOfWeekSACreate[$i]=0;done | |
| # for ((i=0;i<24;i++)); do CounterIndexValuePerHourSACreate[$i]=0;done | |
| for ((i=0;i<$MaxInd;i++)); do CounterIndexsValueSACreate[$i]=0;done | |
| fi | |
| if [ $cntName == "4" ];then | |
| # for ((i=0;i<=7;i++)); do CounterPerDayOfWeekSADestroy[$i]=0;done | |
| # for ((i=0;i<24;i++)); do CounterIndexValuePerHourSADestroy[$i]=0;done | |
| for ((i=0;i<$MaxInd;i++)); do CounterIndexsValueSADestroy[$i]=0;done | |
| fi | |
| if [ $cntName == "5" ];then | |
| # for ((i=0;i<=7;i++)); do CounterPerDayOfWeekSANum[$i]=0;done | |
| # for ((i=0;i<24;i++)); do CounterIndexValuePerHourSANum[$i]=0;done | |
| for ((i=0;i<$MaxInd;i++)); do CounterIndexsValueSANum[$i]=0;done | |
| fi | |
| if [ $cntName == "6" ];then | |
| # for ((i=0;i<=7;i++)); do CounterPerDayOfWeekDMAXmitPkts[$i]=0;done | |
| # for ((i=0;i<24;i++)); do CounterIndexValuePerHourDMAXmitPkts[$i]=0;done | |
| for ((i=0;i<$MaxInd;i++)); do CounterIndexsValueDMAXmitPkts[$i]=0;done | |
| fi | |
| if [ $cntName == "7" ];then | |
| # for ((i=0;i<=7;i++)); do CounterPerDayOfWeekDMARecvPkts[$i]=0;done | |
| # for ((i=0;i<24;i++)); do CounterIndexValuePerHourDMARecvPkts[$i]=0;done | |
| for ((i=0;i<$MaxInd;i++)); do CounterIndexsValueDMARecvPkts[$i]=0;done | |
| fi | |
| if [ $cntName == "8" ];then | |
| # for ((i=0;i<=7;i++)); do CounterPerDayOfWeekDPPollCount[$i]=0;done | |
| # for ((i=0;i<24;i++)); do CounterIndexValuePerHourDPPollCount[$i]=0;done | |
| for ((i=0;i<$MaxInd;i++)); do CounterIndexsValueDPPollCount[$i]=0;done | |
| fi | |
| if [ $cntName == "9" ];then | |
| # for ((i=0;i<=7;i++)); do CounterPerDayOfWeekRXWarnCCKRetry[$i]=0;done | |
| # for ((i=0;i<24;i++)); do CounterIndexValuePerHourRXWarnCCKRetry[$i]=0;done | |
| for ((i=0;i<$MaxInd;i++)); do CounterIndexsValueRXWarnCCKRetry[$i]=0;done | |
| fi | |
| if [ $cntName == "10" ];then | |
| # for ((i=0;i<=7;i++)); do CounterPerDayOfWeekRXErrEarlyDrop[$i]=0;done | |
| # for ((i=0;i<24;i++)); do CounterIndexValuePerHourRXErrEarlyDrop[$i]=0;done | |
| for ((i=0;i<$MaxInd;i++)); do CounterIndexsValueRXErrEarlyDrop[$i]=0;done | |
| fi | |
| done | |
| test $DEBUG -ne 0 && echo "$SCRIPTNAME" :: Index_ErrStatus1: ${CounterIndexsValueA[@]} Index_ErrStatus2: ${CounterIndexsValueB[@]} > /dev/kmsg | |
| test $DEBUG -ne 0 && echo "$SCRIPTNAME" :: Uptime_ErrStatus1: ${CounterIndexsUptimeA[@]} Uptime_ErrStatus2: ${CounterIndexsUptimeB[@]} > /dev/kmsg | |
| for ((i=0;i<$MaxInd;i++)); do CounterIndexQatHang[$i]=0;done | |
| ### Init counters END | |
| export STARENT_EVLOG_HI_SEV_LOCAL=1 | |
| export STAROS_CHASSIS_INSTANCE=0 | |
| [ -r /var/run/message_domain ] && . /var/run/message_domain | |
| function _func_close_all_descriptors { | |
| for fd in $(ls /proc/$$/fd); do | |
| eval "exec $fd>&-" | |
| done | |
| return 0 | |
| } | |
| function _func_init_script { | |
| test $DEBUG -ne 0 && set -vx | |
| trap "" INT QUIT TSTP HUP | |
| export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/sbin:/usr/local/sbin:/usr/local/bin:$PATH | |
| LastMinuteExecution=`find $LASTRUNFILE -mmin -1 2> /dev/null | wc -l` | |
| test $LastMinuteExecution -eq 1 && ( echo "$myCARDCPU" :: "$0" :: "$$" :: "$ARGV1" :: _func_init_script :: `date` > $ERRORFILE ; exit ) | |
| ps -C $SCRIPTFILENAME -opid,comm | grep -v $$ | grep $SCRIPTNAME | grep -v PID | awk '{exec="kill -9 "$1;print exec;system(exec)}' | |
| echo $0 :: $$ :: $j :: $myCARDCPU :: _func_init_script :: `date` > $KEEPRUNNINGFILE | |
| MEMINIT=$(cat /proc/self/status | grep ^Vm | awk '{print $2}' | sort -n -r | head -1) | |
| MEMMAX=$(( $MEMINIT * 4 )) | |
| echo $0 :: $$ :: $j :: $myCARDCPU :: _func_init_script :: `date` > $LASTRUNFILE | |
| test $DEBUG -ne 0 && set +vx | |
| } | |
| function _func_run_script_in_background { | |
| test $DEBUG -ne 0 && set -vx | |
| if [ "$ARGV1" != "-b" ]; then | |
| LastMinuteExecution=`find $LASTRUNFILE -mmin -1 2> /dev/null | wc -l` | |
| test $LastMinuteExecution -eq 0 && ( rm -f $LASTRUNFILE ; "$0" -b &>/dev/null & disown ) | |
| echo "$myCARDCPU" :: "$0" :: "$$" :: done | |
| exit $? | |
| fi | |
| test $DEBUG -eq 0 && _func_close_all_descriptors | |
| test $DEBUG -ne 0 && set -vx | |
| } | |
| function _func_self_memory_check { | |
| MEMCURR=$(cat /proc/self/status | grep ^Vm | awk '{print $2}' | sort -n -r | head -1) | |
| test $MEMMAX -le $MEMCURR && ( echo "$MEMMAX" "$MEMCURR" > $MEMORYCHECKFILE ; exit ) | |
| test $DEBUG -ne 0 && echo $0 :: $$ :: $j :: $myCARDCPU :: _func_self_memory_check :: "$MEMMAX" "$MEMCURR" | |
| DebugCondition[26]=$(( ${DebugCondition[26]} + 1 )) | |
| } | |
| function _func_send_trap { | |
| ###UPDATE: Doesn't work on DPC2 or SF - TODO | |
| test $is_like_dpc -eq 1 && ( echo $0 :: $$ :: $myCARDCPU :: ERROR :: _func_send_trap :: `date` > $ERRORFILE ; exit ) | |
| #then script will send trap example: | |
| #Mon Jan 28 11:13:58 2019 Internal trap notification 322 (ThreshIPSECIKEFailures) context "context" service "service" threshold 1 measured value 2 | |
| echo unittest > /flash/ThreshIPSECIKEFailures.txt | |
| echo trap generate 322 >> /flash/ThreshIPSECIKEFailures.txt | |
| echo end >>/flash/ThreshIPSECIKEFailures.txt | |
| cli configure /flash/ThreshIPSECIKEFailures.txt | |
| DebugCondition[27]=$(( ${DebugCondition[27]} + 1 )) | |
| } | |
| function _func_reboot_card { | |
| test $is_like_mio -eq 1 && ( echo $0 :: $$ :: $j :: $myCARDCPU :: _func_reboot_card :: `date` > $ERRORFILE ; exit) | |
| test $FuncRebootCardCNT -eq 0 && FuncRebootCard1stTime=$( date +%Y_%m_%d__%H_%M_%S___%s ) | |
| FuncRebootCardCNT=$(( $FuncRebootCardCNT + 1 )) | |
| echo $SCRIPTNAME" "$$" :: FuncRebootCardCNT:"$FuncRebootCardCNT" :: Rebooting card: "$myCARDCPU" RebootEnabled:"$RebootEnabled > /dev/kmesg | |
| logger -t $SCRIPTNAME -p local7.err "$SCRIPTNAME" :: :: "$$" :: Rebooting card: "$myCARDCPU" RebootEnabled:"$RebootEnabled" | |
| ### _func_send_trap # TODO | |
| test $FuncRebootCardCNT -le 1 && _func_monitoring_dpc | |
| sleep 1 | |
| DebugCondition[8]=$(( ${DebugCondition[8]} + 1 )) | |
| if [ $RebootEnabled == "Yes" ];then | |
| test ! -f $DISABLEREBOOTFILE && ps -C sitmain -opid,comm | grep sitmain | awk '{exec="kill -9 "$1;print exec;system(exec)}' | |
| DebugCondition[9]=$(( ${DebugCondition[9]} + 1 )) | |
| exit | |
| fi | |
| #cli card reboot $mySLOT -force -noconfirm | |
| #sleep 5 | |
| #/sbin/reboot -f | |
| } | |
| function _func_monitoring_dpc { | |
| cat /proc/ucad/debug/stats_raw | awk 'BEGIN{printf "BEGIN /proc/ucad/debug/stats_raw::%d::",systime()} {printf "%s;" substr($0,25)} END{printf ";END\n"}' | tr -d " " > /dev/kmsg | |
| echo "ESPpkts::"$ESPpkts"+ QatInfo::"$QatInfo"+ IcpInflights::"$IcpInflights"+" | head -1 > /dev/kmsg | |
| echo "$SCRIPTNAME" :: :: "$$" :: Unixtime:$Unixtime :: FuncRebootCardCNT:"$FuncRebootCardCNT" FuncRebootCard1stTime:$"$FuncRebootCard1stTime" PrevUPTIME:$PrevUPTIME :: ::SleepIntervalDPC:"$SleepIntervalDPC":: Card: "$myCARDCPU" > /dev/kmsg | |
| echo "$SCRIPTNAME" :: $Week $Year $Mont $Day $Hour $Minute $Second :: Index:"$Index" TotalCounter :: Err1: CntPrevUnixTime:${CntPrevUnixTime[1]} CntCurrUnixTime:${CntCurrUnixTime[1]} CntDeltUnixTime:${CntDeltUnixTime[1]} Counter1:${Counter[1]} PrevCounter1:${PrevCounter[1]} DeltaCounter:${DeltaCounter[1]} ALL1:${TotalALL[1]} PerDayOfWeek1:${TotalPerDayOfWeek[1]} PerHour1:${TotalPerHour[1]} LastPeriod1:${TotalLastPeriod[1]} Err2: CntPrevUnixTime:${CntPrevUnixTime[2]} CntCurrUnixTime:${CntCurrUnixTime[2]} CntDeltUnixTime:${CntDeltUnixTime[2]} Counter2:${Counter[2]} PrevCounter2:${PrevCounter[2]} DeltaCounter:${DeltaCounter[2]} ALL2:${TotalALL[2]} PerDayOfWeek2:${TotalPerDayOfWeek[2]} PerHour2:${TotalPerHour[2]} LastPeriod2:${TotalLastPeriod[2]} > /dev/kmsg | |
| echo "$SCRIPTNAME" :: $Week $Year $Mont $Day $Hour $Minute $Second :: Index:"$Index" Threshold ErrStatus1 LastCollection1:${Threshold_LastCollection[1]} TotalALL:${Threshold_TotalALL[1]} PerDayOfWeek1:${Threshold_PerDayOfWeek[1]} PerHour1:${Threshold_PerHour[1]} LastPeriod1:${Threshold_LastPeriod[1]} ErrStatus2 LastCollection2:${Threshold_LastCollection[2]} TotalALL:${Threshold_TotalALL[2]} PerDayOfWeek2:${Threshold_PerDayOfWeek[2]} PerHour2:${Threshold_PerHour[2]} LastPeriod2:${Threshold_LastPeriod[2]} > /dev/kmsg | |
| echo "$SCRIPTNAME" :: Index:"$Index" :: Hour:"$Hour" :: PerHour_ErrStatus1: ${CounterIndexValuePerHour1[@]} PerHour_ErrStatus2: ${CounterIndexValuePerHour2[@]} Day:"$Day" :: PerDayOfWeek_ErrStatus1: ${CounterPerDayOfWeek1[@]} PerDayOfWeek_ErrStatus2: ${CounterPerDayOfWeek2[@]} > /dev/kmsg | |
| echo "$SCRIPTNAME" :: Index:"$Index" :: Index_ErrStatus1: ${CounterIndexsValueA[@]} Index_ErrStatus2: ${CounterIndexsValueB[@]} > /dev/kmsg | |
| #echo "$SCRIPTNAME" :: Index:"$Index" :: Index_ErrStatus1: Uptime_ErrStatus1: ${CounterIndexsUptimeA[@]} Uptime_ErrStatus2: ${CounterIndexsUptimeB[@]} > /dev/kmsg | |
| echo "$SCRIPTNAME" :: Index:"$Index" :: Index_SACreate: ${CounterIndexsValueSACreate[@]} Index_SADestroy: ${CounterIndexsValueSADestroy[@]} > /dev/kmsg | |
| echo "$SCRIPTNAME" :: Index:"$Index" :: Index_SANum: ${CounterIndexsValueSANum[@]} Index_DPPollCount: ${CounterIndexsValueDPPollCount[@]} > /dev/kmsg | |
| echo "$SCRIPTNAME" :: Index:"$Index" :: Index_DMAXmitPkts: ${CounterIndexsValueDMAXmitPkts[@]} Index_DMARecvPkts: ${CounterIndexsValueDMARecvPkts[@]} > /dev/kmsg | |
| echo "$SCRIPTNAME" :: Index:"$Index" :: Index_RXWarnCCKRetry: ${CounterIndexsValueRXWarnCCKRetry[@]} Index_RXErrEarlyDrop: ${CounterIndexsValueRXErrEarlyDrop[@]} > /dev/kmsg | |
| echo "$SCRIPTNAME" :: Index:"$Index" :: CounterIndexQatHang: ${CounterIndexQatHang[@]} DebugCondition: ${DebugCondition[@]} > /dev/kmsg | |
| DebugCondition[22]=$(( ${DebugCondition[22]} + 1 )) | |
| ### Below for future use: | |
| UPTIME=$( cat /proc/uptime | cut -f1 -d. ) | |
| DATETIME=`date -u +"%Y-%m-%d %H:%M:%S %Z Unixtime:%s"` | |
| HOUR=$( date +%H ) | |
| mkdir -p /tmp/ucad 2> /dev/null 1> /dev/null | |
| echo $DATETIME" :: "$myCARDCPU" :: Uptime: "$UPTIME :: DATETIME:$DATETIME > /tmp/ucad/status_"$myCARDCPU"_H"$HOUR".txt | |
| echo "$SCRIPTNAME" :: $Week $Year $Mont $Day $Hour $Minute $Second :: Index:"$Index" TotalCounter :: Err1: CntPrevUnixTime:${CntPrevUnixTime[1]} CntCurrUnixTime:${CntCurrUnixTime[1]} CntDeltUnixTime:${CntDeltUnixTime[1]} Counter1:${Counter[1]} PrevCounter1:${PrevCounter[1]} DeltaCounter:${DeltaCounter[1]} ALL1:${TotalALL[1]} PerDayOfWeek1:${TotalPerDayOfWeek[1]} PerHour1:${TotalPerHour[1]} LastPeriod1:${TotalLastPeriod[1]} Err2: CntPrevUnixTime:${CntPrevUnixTime[2]} CntCurrUnixTime:${CntCurrUnixTime[2]} CntDeltUnixTime:${CntDeltUnixTime[2]} Counter2:${Counter[2]} PrevCounter2:${PrevCounter[2]} DeltaCounter:${DeltaCounter[2]} ALL2:${TotalALL[2]} PerDayOfWeek2:${TotalPerDayOfWeek[2]} PerHour2:${TotalPerHour[2]} LastPeriod2:${TotalLastPeriod[2]} >> /tmp/ucad/status_"$myCARDCPU"_H"$HOUR".txt | |
| echo "$SCRIPTNAME" :: $Week $Year $Mont $Day $Hour $Minute $Second :: Index:"$Index" Threshold ErrStatus1 LastCollection1:${Threshold_LastCollection[1]} TotalALL:${Threshold_TotalALL[1]} PerDayOfWeek1:${Threshold_PerDayOfWeek[1]} PerHour1:${Threshold_PerHour[1]} LastPeriod1:${Threshold_LastPeriod[1]} ErrStatus2 LastCollection2:${Threshold_LastCollection[2]} TotalALL:${Threshold_TotalALL[2]} PerDayOfWeek2:${Threshold_PerDayOfWeek[2]} PerHour2:${Threshold_PerHour[2]} LastPeriod2:${Threshold_LastPeriod[2]} >> /tmp/ucad/status_"$myCARDCPU"_H"$HOUR".txt | |
| echo "$SCRIPTNAME" :: Index:"$Index" :: Hour:"$Hour" :: PerHour_ErrStatus1: ${CounterIndexValuePerHour1[@]} PerHour_ErrStatus2: ${CounterIndexValuePerHour2[@]} Day:"$Day" :: PerDayOfWeek_ErrStatus1: ${CounterPerDayOfWeek1[@]} PerDayOfWeek_ErrStatus2: ${CounterPerDayOfWeek2[@]} >> /tmp/ucad/status_"$myCARDCPU"_H"$HOUR".txt | |
| echo Index:"$Index" :: Index_ErrStatus1: ${CounterIndexsValueA[@]} >> /tmp/ucad/status_"$myCARDCPU"_H"$HOUR".txt | |
| echo Index:"$Index" :: Index_ErrStatus2: ${CounterIndexsValueB[@]} >> /tmp/ucad/status_"$myCARDCPU"_H"$HOUR".txt | |
| echo Index:"$Index" :: Uptime_ErrStatus1: ${CounterIndexsUptimeA[@]} >> /tmp/ucad/status_"$myCARDCPU"_H"$HOUR".txt | |
| echo Index:"$Index" :: Uptime_ErrStatus2: ${CounterIndexsUptimeB[@]} >> /tmp/ucad/status_"$myCARDCPU"_H"$HOUR".txt | |
| echo Index:"$Index" :: Index_SACreate: ${CounterIndexsValueSACreate[@]} Index_SADestroy: ${CounterIndexsValueSADestroy[@]} >> /tmp/ucad/status_"$myCARDCPU"_H"$HOUR".txt | |
| echo Index:"$Index" :: Index_SANum: ${CounterIndexsValueSANum[@]} Index_DPPollCount: ${CounterIndexsValueDPPollCount[@]} >> /tmp/ucad/status_"$myCARDCPU"_H"$HOUR".txt | |
| echo Index:"$Index" :: Index_DMAXmitPkts: ${CounterIndexsValueDMAXmitPkts[@]} Index_DMARecvPkts: ${CounterIndexsValueDMARecvPkts[@]} >> /tmp/ucad/status_"$myCARDCPU"_H"$HOUR".txt | |
| echo Index:"$Index" :: Index_RXWarnCCKRetry: ${CounterIndexsValueRXWarnCCKRetry[@]} Index_RXErrEarlyDrop: ${CounterIndexsValueRXErrEarlyDrop[@]} >> /tmp/ucad/status_"$myCARDCPU"_H"$HOUR".txt | |
| echo Index:"$Index" :: CounterIndexQatHang: ${CounterIndexQatHang[@]} >> /tmp/ucad/status_"$myCARDCPU"_H"$HOUR".txt | |
| echo "ESPpkts::"$ESPpkts"+ QatInfo::"$QatInfo"+ IcpInflights::"$IcpInflights"+" | head -1 >> /tmp/ucad/status_"$myCARDCPU"_H"$HOUR".txt | |
| echo $DATETIME" :: "$myCARDCPU" :: Uptime: "$UPTIME :: DATETIME:$DATETIME > /tmp/ucad/stats_raw_"$myCARDCPU"_H"$HOUR".txt | |
| (date +%s;cat /proc/ucad/debug/stats_raw ) >> /tmp/ucad/stats_raw_"$myCARDCPU"_H"$HOUR".txt | |
| echo $DATETIME" :: "$myCARDCPU" :: Uptime: "$UPTIME :: DATETIME:$DATETIME > /tmp/ucad/stats_cooked_"$myCARDCPU"_H"$HOUR".txt | |
| ( date +%s;cat /proc/ucad/debug/stats_cooked ) >> /tmp/ucad/stats_cooked_"$myCARDCPU"_H"$HOUR".txt | |
| #echo $DATETIME" :: "$myCARDCPU" :: Uptime: "$UPTIME :: DATETIME:$DATETIME > /tmp/ucad/ctx_stats_"$myCARDCPU"_H"$HOUR".txt | |
| #cat /proc/ucad/ipsec/ctx_stats >> /tmp/ucad/ctx_stats_"$myCARDCPU"_H"$HOUR".txt | |
| #echo $DATETIME" :: "$myCARDCPU" :: Uptime: "$UPTIME :: DATETIME:$DATETIME > /tmp/ucad/svc_stats_"$myCARDCPU"_H"$HOUR".txt | |
| #cat /proc/ucad/ipsec/svc_stats >> /tmp/ucad/svc_stats_"$myCARDCPU"_H"$HOUR".txt | |
| ( date;ls -la /tmp/icp/;find /tmp/icp/ -print -exec cat {} \; ) | gzip -c > /tmp/ucad/ucad_icp_buffers_"$myCARDCPU"_H"$HOUR".txt.gz | |
| #tar cfv /tmp/ucad/icp_"$myCARDCPU"_H"$HOUR".tar /proc/icp_dh89* | |
| ( date;find /proc/icp_dh8* -type f -print -exec head -5120 {} \; ) | gzip -c > /tmp/ucad/icp_proc_"$myCARDCPU"_H"$HOUR".txt.gz | |
| ( date;dmesg ) | gzip -c > /tmp/ucad/dmesg_"$myCARDCPU"_H"$HOUR"_M"$Minute".txt.gz | |
| #cat /proc/interrupts /proc/softirqs /proc/stat /proc/loadavg /proc/uptime /proc/meminfo /proc/vmstat /proc/net/boxer /proc/boxer/mcdma/summary /proc/net/snmp6 /proc/net/snmp /proc/net/sockstat6 /proc/net/sockstat | gzip -c > /tmp/ucad/proc_info_"$myCARDCPU"_H"$HOUR".txt.gz | |
| (date;find /proc/interrupts /proc/softirqs /proc/stat /proc/loadavg /proc/uptime /proc/meminfo /proc/vmstat /proc/net/boxer /proc/boxer/mcdma/summary /proc/net/snmp6 /proc/net/snmp /proc/net/sockstat6 /proc/net/sockstat /proc/boxer/mcdma/ -print -exec cat {} \; ) | gzip -c > /tmp/ucad/proc_info_"$myCARDCPU"_H"$HOUR".txt.gz | |
| gzip -f /tmp/ucad/*txt /tmp/ucad/*tar 2> /dev/null 1> /dev/null | |
| find /tmp/ucad/ -type f -mmin +"$MaxUcadMinutesDeletion" -delete | |
| } | |
| function _func_test_dpc { | |
| echo TEST BEGIN `date` > /dev/kmsg | |
| Rnd=$(( $RANDOM % 32 )) | |
| for ((i=0;i<$Rnd;i++)); do echo $Rnd' ucam_cavecreek_dh_p1_sync()[2995]: cpaCyDhKeyGenPhase1() Failed with Status: -2!' > /dev/kmsg ;done | |
| Rnd=$(( $RANDOM % 32 )) | |
| for ((i=0;i<$Rnd;i++)); do echo $Rnd' ucam ucad Packet Processing Failed with Status: 1!' > /dev/kmsg ;done | |
| echo TEST END `date` > /dev/kmsg | |
| DebugCondition[24]=$(( ${DebugCondition[24]} + 1 )) | |
| } | |
| function _func_read_counters { | |
| test "$Index" == "" && echo ASSERT 125 $LINE && exit | |
| CounterNames=("1" "2" "3" "4" "5" "6" "7" "8" "9" "10") | |
| for cntName in "${CounterNames[@]}";do | |
| PrevCounter[$cntName]=${Counter[$cntName]} | |
| CntPrevUnixTime[$cntName]=${CntCurrUnixTime[$cntName]} | |
| CntCurrUnixTime[$cntName]=$Unixtime | |
| CntDeltUnixTime[$cntName]=$(( ${CntCurrUnixTime[$cntName]} - ${CntPrevUnixTime[$cntName]} )) | |
| done | |
| read -r ErrStatus1 ErrStatus2 PrevUPTIME PrevPrev AWKNR <<< "$( $CmdExec | tr -d '[]' | awk -v prevuptime=$PrevUPTIME 'BEGIN{cnt1=0;cnt2=0;uptime[1]=0} {err1=0;err2=0;if(/Packet Processing Failed with Status: 1/){err1=1};if(/Failed with Status: -2/){err2=1};split($1,uptime,".");if(prevuptime<uptime[1]){if(err1==1){cnt1=cnt1+1};if(err2==1){cnt2=cnt2+1}}} END{print cnt1" "cnt2" "uptime[1]" "prevuptime" "NR}' )" | |
| Counter[1]=$ErrStatus1; | |
| Counter[2]=$ErrStatus2; | |
| read -r Counter[3] Counter[4] Counter[6] Counter[7] Counter[8] Counter[9] Counter[10] <<< "$( grep -v -E "(^Recv|^Send|^$)" /proc/ucad/debug/stats_raw | awk '{if(/(SA Create |SA Destroy |DP Poll Count |RX Warn, CCK Retry |RX Err, Early Drop |DMA Recv Pkts |DMA Xmit Pkts )/){cntname=substr($0,0,24);cntval1=substr($0,25);cntval2=sprintf("%f","0x"cntval1);split(cntval2,decimal,".");printf ("%s ",decimal[1])};} END{printf "\n"}' )" | |
| #read -r Counter["SACreate"] Counter["SADestroy"] Counter["DMAXmitPkts"] Counter["DMARecvPkts"] Counter["DPPollCount"] Counter["RXWarnCCKRetry"] Counter["RXErrEarlyDrop"] | |
| if [ $SimulateProcUcad == "Yes" ];then | |
| Counter[3]=$(( ${Counter[3]} + $RANDOM )) | |
| Counter[4]=$(( ${Counter[4]} + $RANDOM )) | |
| Counter[6]=$(( ${Counter[6]} + $RANDOM )) | |
| Counter[7]=$(( ${Counter[7]} + $RANDOM )) | |
| Counter[8]=$(( ${Counter[8]} + $RANDOM )) | |
| Counter[9]=$(( ${Counter[9]} + $RANDOM )) | |
| Counter[10]=$(( ${Counter[10]} + $RANDOM )) | |
| fi | |
| Counter[5]=$(( ${Counter[3]} - ${Counter[4]} )) | |
| # Below should be seprate _update type function - TODO | |
| CounterNames=("3" "4" "5" "6" "7" "8" "9" "10") | |
| for cntName in "${CounterNames[@]}";do | |
| DeltaCounter[$cntName]=$(( ${Counter[$cntName]} - ${PrevCounter[$cntName]} )) | |
| test $cntName == "3" && CounterIndexsValueSACreate["$Index"]=${DeltaCounter[$cntName]} | |
| test $cntName == "4" && CounterIndexsValueSADestroy["$Index"]=${DeltaCounter[$cntName]} | |
| test $cntName == "5" && CounterIndexsValueSANum["$Index"]=${DeltaCounter[$cntName]} | |
| test $cntName == "6" && CounterIndexsValueDMAXmitPkts["$Index"]=${DeltaCounter[$cntName]} | |
| test $cntName == "7" && CounterIndexsValueDMARecvPkts["$Index"]=${DeltaCounter[$cntName]} | |
| test $cntName == "8" && CounterIndexsValueDPPollCount["$Index"]=${DeltaCounter[$cntName]} | |
| test $cntName == "9" && CounterIndexsValueRXWarnCCKRetry["$Index"]=${DeltaCounter[$cntName]} | |
| test $cntName == "10" && CounterIndexsValueRXErrEarlyDrop["$Index"]=${DeltaCounter[$cntName]} | |
| done | |
| test $DPCDEBUG1 -ne 0 && echo $0 :: $$ :: $myCARDCPU :: :: _func_main_dpc _read1 ${Counter[1]} ${Counter[2]} $PrevUPTIME $PrevPrev $PrevPrev :: `date` > /dev/kmsg | |
| test $DPCDEBUG1 -ne 0 && echo $0 :: $$ :: $myCARDCPU :: :: _func_main_dpc _read2 ${Counter[3]} ${Counter[4]} ${Counter[6]} ${Counter[7]} ${Counter[8]} ${Counter[9]} ${Counter[10]} :: `date` > /dev/kmsg | |
| } | |
| function _func_update_event_agregated_counters { | |
| cntName=$1 | |
| VAL=$2 | |
| test "$Index" == "" && echo ASSERT 123 $LINE && exit | |
| test $Index -ge $MaxInd && echo ASSERT 234 $LINE && exit | |
| test $Index -lt 0 && echo ASSERT 234 $LINE && exit | |
| #Index=$3 | |
| #PrevUPTIME=$4 | |
| #Unixtime=$5 | |
| test ${Counter[$cntName]} -ne $VAL && echo ERROR _func_update_counters $cntName $VAL ${Counter[$cntName]} :: `date` > /dev/kmsg && exit | |
| test $DPCDEBUG1 -ne 0 && echo $0 :: $$ :: $myCARDCPU :: :: _func_update_counters $cntName $VAL ${Counter[$cntName]} "$Index" $PrevUPTIME $Unixtime :: `date` > /dev/kmsg | |
| if [ $cntName == "1" ]; then | |
| TotalALL[$cntName]=$(( ${TotalALL[$cntName]} + ${Counter[$cntName]} )) | |
| PrevIndexCounter=${CounterIndexsValueA["$Index"]} | |
| CounterIndexsValueA["$Index"]=${Counter[$cntName]} | |
| CounterIndexsUptimeA["$Index"]=$PrevUPTIME":"$Unixtime | |
| test $DPCDEBUG1 -ne 0 && echo $0 :: $$ :: $myCARDCPU :: :: _func_main_dpc MaxInd:$MaxInd Day:$Day PrevDay:$PrevDay PrevHour:$PrevHour Hour:$Hour :: PrevUPTIME $PrevUPTIME :: $cntName :: Counter:${Counter[$cntName]} :: Index:"$Index" :: PrevIndexCounter:$PrevIndexCounter :: CounterIndexsValue: ${CounterIndexsValueA["$Index"]} :: ${TotalLastPeriod[$cntName]} :: `date` > /dev/kmsg | |
| if [ $PrevDay -ne $Day ] ; then | |
| test $DPCDEBUG1 -ne 0 && echo PrevCounterDay1 _DayWeek: ${CounterPerDayOfWeek1[$_DayWeek]} > /dev/kmsg | |
| PrevCounterDay=${CounterPerDayOfWeek1[$_DayWeek]} | |
| CounterPerDayOfWeek1[$_DayWeek]=0 | |
| TotalPerDayOfWeek[$cntName]=$(( ${TotalPerDayOfWeek[$cntName]} - $PrevCounterDay )) | |
| CntDay=$(( $CntDay + 1 )) | |
| fi | |
| CounterPerDayOfWeek1[$_DayWeek]=$(( ${CounterPerDayOfWeek1[$_DayWeek]} + ${Counter[$cntName]} )) | |
| TotalPerDayOfWeek[$cntName]=$(( ${TotalPerDayOfWeek[$cntName]} + ${Counter[$cntName]} )) | |
| if [ $PrevHour -ne $Hour ];then | |
| PrevHourCounter=${CounterIndexValuePerHour1[$Hour]} | |
| CounterIndexValuePerHour1[$Hour]=0 | |
| CntHour=$(( $CntHour + 1 )) | |
| TotalPerHour[$cntName]=$(( ${TotalPerHour[$cntName]} - $PrevHourCounter )) | |
| fi | |
| CounterIndexValuePerHour1[$Hour]=$(( ${CounterIndexValuePerHour1[$Hour]} + ${Counter[$cntName]} )) | |
| TotalPerHour[$cntName]=$(( ${TotalPerHour[$cntName]} + ${Counter[$cntName]} )) | |
| TotalLastPeriod[$cntName]=$(( ${TotalLastPeriod[$cntName]} + ${CounterIndexsValueA["$Index"]} - $PrevIndexCounter )) | |
| fi | |
| if [ $cntName == "2" ]; then | |
| test ${Counter[$cntName]} -ne $VAL && echo ERROR _func_update_counters $cntName $VAL ${Counter[$cntName]} :: `date` > /dev/kmsg && exit | |
| test $DPCDEBUG1 -ne 0 && echo $0 :: $$ :: $myCARDCPU :: :: _func_update_counters $cntName $VAL ${Counter[$cntName]} "$Index" $PrevUPTIME $Unixtime :: `date` > /dev/kmsg | |
| TotalALL[$cntName]=$(( ${TotalALL[$cntName]} + ${Counter[$cntName]} )) | |
| PrevIndexCounter=${CounterIndexsValueB["$Index"]} | |
| CounterIndexsValueB["$Index"]=${Counter[$cntName]} | |
| CounterIndexsUptimeA["$Index"]=$PrevUPTIME":"$Unixtime | |
| test $DPCDEBUG1 -ne 0 && echo $0 :: $$ :: $myCARDCPU :: :: _func_main_dpc MaxInd:$MaxInd :: PrevUPTIME $PrevUPTIME :: $cntName :: Counter:${Counter[$cntName]} :: Index:"$Index" :: PrevIndexCounter:$PrevIndexCounter :: CounterIndexsValue: ${CounterIndexsValueB["$Index"]} :: ${TotalLastPeriod[$cntName]} :: `date` > /dev/kmsg | |
| if [ $PrevDay -ne $Day ] ; then | |
| PrevCounterDay=${CounterPerDayOfWeek2[$_DayWeek]} | |
| test $DPCDEBUG1 -ne 0 && echo PrevCounterDay2 _DayWeek: ${CounterPerDayOfWeek2[$_DayWeek]} > /dev/kmsg | |
| CounterPerDayOfWeek2[$_DayWeek]=0 | |
| TotalPerDayOfWeek[$cntName]=$(( ${TotalPerDayOfWeek[$cntName]} - $PrevCounterDay )) | |
| CntDay=$(( $CntDay + 1 )) | |
| fi | |
| CounterPerDayOfWeek2[$_DayWeek]=$(( ${CounterPerDayOfWeek2[$_DayWeek]} + ${Counter[$cntName]} )) | |
| TotalPerDayOfWeek[$cntName]=$(( ${TotalPerDayOfWeek[$cntName]} + ${Counter[$cntName]} )) | |
| if [ $PrevHour -ne $Hour ];then | |
| PrevHourCounter=${CounterIndexValuePerHour2[$Hour]} | |
| CounterIndexValuePerHour2[$Hour]=0 | |
| CntHour=$(( $CntHour + 2 )) | |
| TotalPerHour[$cntName]=$(( ${TotalPerHour[$cntName]} - $PrevHourCounter )) | |
| fi | |
| CounterIndexValuePerHour2[$Hour]=$(( ${CounterIndexValuePerHour2[$Hour]} + ${Counter[$cntName]} )) | |
| TotalPerHour[$cntName]=$(( ${TotalPerHour[$cntName]} + ${Counter[$cntName]} )) | |
| TotalLastPeriod[$cntName]=$(( ${TotalLastPeriod[$cntName]} + ${CounterIndexsValueB["$Index"]} - $PrevIndexCounter )) | |
| fi | |
| if [ $cntName != "1" ] && [ $cntName != "2" ];then | |
| echo ASSERT 236 $LINE && exit | |
| fi | |
| } | |
| function _func_check_tresholds_events_conditions { | |
| cntName=$1 | |
| if [ $cntName == "1" ] || [ $cntName == "2" ] ;then | |
| test ${Counter[$cntName]} -ge ${Threshold_LastCollection[$cntName]} && TriggerRebootNow="Yes" && DebugCondition[1]=$(( ${DebugCondition[1]} + 1 )) | |
| test ${TotalALL[$cntName]} -ge ${Threshold_TotalALL[$cntName]} && TriggerRebootNow="Yes" && DebugCondition[2]=$(( ${DebugCondition[2]} + 1 )) | |
| test ${TotalPerDayOfWeek[$cntName]} -ge ${Threshold_PerDayOfWeek[$cntName]} && TriggerRebootNow="Yes" && DebugCondition[5]=$(( ${DebugCondition[5]} + 1 )) | |
| test ${TotalPerHour[$cntName]} -ge ${Threshold_PerHour[$cntName]} && TriggerRebootNow="Yes" && DebugCondition[4]=$(( ${DebugCondition[4]} + 1 )) | |
| test ${TotalLastPeriod[$cntName]} -ge ${Threshold_LastPeriod[$cntName]} && TriggerRebootNow="Yes" && DebugCondition[3]=$(( ${DebugCondition[3]} + 1 )) | |
| test $DPCDEBUG1 -ne 0 && echo $0 :: $$ :: $myCARDCPU :: :: _func_check_tresholds_conditions1 line $LINENO :: `date` > /dev/kmsg | |
| else | |
| test $DPCDEBUG1 -ne 0 && echo $0 :: $$ :: $myCARDCPU :: :: _func_check_tresholds_conditions2 line $LINENO :: `date` > /dev/kmsg | |
| fi | |
| } | |
| function _func_check_reboot_conditions { | |
| if [ $ScheduledReboot=="Yes" ] && [ $Hour -eq $ScheduledHour ] && [ $TriggerRebootNow == "Yes" ] ; then | |
| [ $mySLOT -eq 1] && [ $Minute -ge 3 ] && [ $Minute -lt 10 ] && DebugCondition[10]=$(( ${DebugCondition[10]} + 1 )) && _func_reboot_card | |
| [ $mySLOT -eq 2] && [ $Minute -ge 10 ] && [ $Minute -lt 17 ] && DebugCondition[11]=$(( ${DebugCondition[11]} + 1 )) && _func_reboot_card | |
| [ $mySLOT -eq 3] && [ $Minute -ge 17 ] && [ $Minute -lt 24 ] && DebugCondition[12]=$(( ${DebugCondition[12]} + 1 )) && _func_reboot_card | |
| [ $mySLOT -eq 4] && [ $Minute -ge 24 ] && [ $Minute -lt 31 ] && DebugCondition[13]=$(( ${DebugCondition[13]} + 1 )) && _func_reboot_card | |
| [ $mySLOT -eq 7] && [ $Minute -ge 31 ] && [ $Minute -lt 38 ] && DebugCondition[14]=$(( ${DebugCondition[14]} + 1 )) && _func_reboot_card | |
| [ $mySLOT -eq 8] && [ $Minute -ge 38 ] && [ $Minute -lt 45 ] && DebugCondition[15]=$(( ${DebugCondition[15]} + 1 )) && _func_reboot_card | |
| [ $mySLOT -eq 9] && [ $Minute -ge 45 ] && [ $Minute -lt 42 ] && DebugCondition[16]=$(( ${DebugCondition[16]} + 1 )) && _func_reboot_card | |
| [ $mySLOT -eq 10] && [ $Minute -ge 52 ] && [ $Minute -lt 59 ] && DebugCondition[17]=$(( ${DebugCondition[17]} + 1 )) && _func_reboot_card | |
| DebugCondition[6]=$(( ${DebugCondition[6]} + 1 )) | |
| fi | |
| test $ScheduledReboot=="No" && test $TriggerRebootNow == "Yes" && DebugCondition[7]=$(( ${DebugCondition[7]} + 1 )) && _func_reboot_card | |
| } | |
| function _func_intel_ring_dump { | |
| cat << DONT_REMOVE_THIS_LINE_BEGIN_END_M > /tmp/Intel_ring_dump.tgz.base64 | |
| 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 | |
| AMQAAA== | |
| DONT_REMOVE_THIS_LINE_BEGIN_END_M | |
| cd /tmp/ | |
| openssl base64 -d -in Intel_ring_dump.tgz.base64 -out Intel_ring_dump.tgz 2> /dev/null | |
| tar zxf Intel_ring_dump.tgz | |
| mv /tmp/Intel_ring_dump/* /tmp/ | |
| rm -f /tmp/Intel_ring_dump.tgz | |
| rm -rf /tmp/Intel_ring_dump/ | |
| MD5WC=$( md5sum -c MD5SUM.txt | grep OK |wc -l ) | |
| test $MD5WC -ne 4 && touch /tmp/MD5SUM_ERROR.txt | |
| } | |
| function _func_main_dpc { | |
| test $is_like_mio -eq 1 && ( echo $0 :: $$ :: $myCARDCPU :: ERROR :: _func_main_dpc :: `date` > $ERRORFILE ; exit ) | |
| j=0 | |
| test $DPCDEBUG1 -ne 0 && echo $0 :: $$ :: $myCARDCPU :: :: _func_main_dpc :: `date` > /dev/kmsg | |
| PrevUPTIME=$( $CmdExec | tr -d '[]' | awk 'END{print $1}' | cut -f1 -d. ) | |
| echo "$SCRIPTNAME" :: :: "$$" :: started:`date` > /dev/kmsg | |
| _func_intel_ring_dump | |
| while [ -f $KEEPRUNNINGFILE ] ; do | |
| test $DEBUG -ne 0 && echo $0 :: $$ :: $j :: $myCARDCPU :: `date` | |
| test $DPCDEBUG1 -ne 0 && echo $0 :: $$ :: $myCARDCPU :: :: _func_main_dpc inside while :: `date` > /dev/kmsg | |
| UPTIME=$( cat /proc/uptime | cut -f1 -d. ) | |
| Unixtime=$( date +%s ) | |
| PrevDay=$Day;PrevHour=$Hour;PrevMinute=$Minute | |
| read -r Week Year Mont _Day _Hour _Minute Second _DayWeek <<< "$(date +'%W %Y %m %d %H %M %S %w')" | |
| Day=$( expr $_Day + 0 );Hour=$( expr $_Hour + 0 );Minute=$( expr $_Minute + 0 ) | |
| #Index change please see below NOTE | |
| Index=$Minute | |
| test $DPCDEBUG1 -ne 0 && echo $0 :: $$ :: $myCARDCPU :: :: _func_main_dpc time $PrevDay $PrevHour :: $Week $Year $Mont $Day $Hour $Minute $Second :: `date` > /dev/kmsg | |
| test $DPCRandomTest == "Yes" && _func_test_dpc | |
| _func_read_counters | |
| # echo "ErrStatus1" ${Counter[1]} && exit | |
| _func_update_event_agregated_counters "1" ${Counter[1]} | |
| _func_check_tresholds_events_conditions "1" | |
| _func_update_event_agregated_counters "2" ${Counter[2]} | |
| _func_check_tresholds_events_conditions "2" | |
| _ucad_buffers_delta_icp | |
| _icp_qat_stats | |
| test $TotalHangQat -eq 1 && _func_monitoring_dpc && CollectedFirstQat=1 | |
| test $TotalHangQat -eq 2 && _func_monitoring_dpc && CollectedFirstQat=2 | |
| test $DPCDEBUG1 -ne 0 && echo $0 :: $$ :: $myCARDCPU :: :: _func_main_dpc before _func_monitoring_dpc :: `date` > /dev/kmsg | |
| # test $PrevHour -ne $Hour && _func_monitoring_dpc && DebugCondition[20]=$(( ${DebugCondition[20]} + 1 )) | |
| # test "$Minute" == "" && echo ASSERT Minute $LINE && exit | |
| if [ $Minute -eq 0 ] || [ $Minute -eq 12 ] || [ $Minute -eq 24 ] || [ $Minute -eq 36 ] || [ $Minute -eq 48 ] ; then | |
| _func_monitoring_dpc && DebugCondition[20]=$(( ${DebugCondition[20]} + 1 )) | |
| fi | |
| test $DPCDEBUG2 -ne 0 && _func_monitoring_dpc && DebugCondition[21]=$(( ${DebugCondition[21]} + 1 )) | |
| _func_check_reboot_conditions | |
| _func_self_memory_check | |
| echo $0 :: $$ :: $j :: $myCARDCPU :: _func_main_dpc :: `date` > $LASTRUNFILE | |
| j=$(( $j + 1 )) | |
| Count=$(( $Count + 1 )) | |
| ################################# Index/Minute stuff - NOTE: please be careful. | |
| #Index=$(( $Count % $MaxInd )) | |
| Index=$Minute # This is only if SleepIntervalDPC is 60. Otherwise, we have to use: Index=$(( $Count % $MaxInd )) | |
| ################################# | |
| Unixtime=$( date +%s ) | |
| sleep $(( $SleepIntervalDPC - ($Unixtime % $SleepIntervalDPC ))) | |
| # sleep $SleepIntervalDPC | |
| DebugCondition[31]=$(( ${DebugCondition[31]} + 1 )) | |
| done | |
| exit | |
| } # END _func_main_dpc | |
| function _icp_qat_stats { | |
| ICP_DIR=$( find /proc/ -maxdepth 1 -type d -name icp_dh\* | head -1 ) | |
| QatHang=$( grep -e "ERROR" -e "Qat is not responding" -e "Please restart the device" "$ICP_DIR"/qat* | wc -l ) | |
| TotalHangQat=$(( $TotalHangQat + $QatHang )) | |
| test $TotalHangQat -eq 1 && FirstHangQat=$( date +%Y_%m_%d__%H_%M_%S___%s ) | |
| QatWC=$( wc -l "$ICP_DIR"/qat* | awk '{print $1}' | tr "\n" ";" ) | |
| QatStats=$( grep -h -e "Firmware" "$ICP_DIR"/qat* | awk '{print $5}' | tr "\n" ";" ) | |
| QatInfo=$QatHang"::"$QatWC"::"$QatStats::"$TotalHangQat" | |
| test $DPCDEBUG1 -ne 0 && echo $QatInfo | |
| CounterIndexQatHang[$Index]=$QatHang | |
| test $DPCDEBUG1 -ne 0 && ${CounterIndexQatHang[@]} | |
| } | |
| function _ucad_buffers_delta_icp { | |
| mkdir -p /tmp/icp 2> /dev/null 1> /dev/null | |
| cat /dev/null > /tmp/icp/icp_"$myCARDCPU"_M"$Minute".txt | |
| STATS_RAW=$(cat /proc/ucad/debug/stats_raw | awk 'BEGIN{printf "/proc/ucad/debug/stats_raw;%x",systime()} {printf "%s;" substr($0,25)} END{printf ";\n"}' | tr -d " " ); | |
| echo $STATS_RAW > /tmp/icp/icp_"$myCARDCPU"_M"$Minute".txt | |
| grep -H "" /proc/icp_dh*/qat* | awk -F"/" '{print $4}' >> /tmp/icp/icp_"$myCARDCPU"_M"$Minute".txt | |
| cat /proc/ucam/dist >> /tmp/icp/icp_"$myCARDCPU"_M"$Minute".txt | |
| for((i=0;i<=$MAX_ICP_COLL;i++));do | |
| #read -r TIME ALLOC1 ALLOC2 ALLOC3 ALLOC4 FREE1 FREE2 FREE3 FREE4 <<< $( grep ESP /proc/ucad/debug/stats_cooked | grep -v fai | awk 'BEGIN{printf "%x",systime()} {printf "%s" substr($0,25)} END{printf "\n"}' | sed -E "s/\s+/ /"g | awk '{for (i=1;i<=NF; i++){printf("%d ","0x"$i)}}' ) | |
| #DELTA1=$(( $ALLOC1 - $FREE1 )) | |
| #DELTA2=$(( $ALLOC2 - $FREE2 )) | |
| #DELTA3=$(( $ALLOC3 - $FREE3 )) | |
| #DELTA4=$(( $ALLOC4 - $FREE4 )) | |
| #DELTA_ALLOC1=$(( $ALLOC1 - $PREVALLOC1 )) | |
| #DELTA_ALLOC2=$(( $ALLOC2 - $PREVALLOC2 )) | |
| #DELTA_ALLOC3=$(( $ALLOC3 - $PREVALLOC3 )) | |
| #DELTA_ALLOC4=$(( $ALLOC4 - $PREVALLOC4 )) | |
| #DELTA_FREE1=$(( $FREE1 - $PREVFREE1 )) | |
| #DELTA_FREE2=$(( $FREE2 - $PREVFREE2 )) | |
| #DELTA_FREE3=$(($FREE3 - $PREVFREE3 )) | |
| #DELTA_FREE4=$(( $FREE4 - $PREVFREE4 )) | |
| #PREVALLOC1=$ALLOC1 | |
| #PREVALLOC2=$ALLOC2 | |
| #PREVALLOC3=$ALLOC3 | |
| #PREVALLOC4=$ALLOC4 | |
| #PREVFREE1=$FREE1 | |
| #PREVFREE2=$FREE2 | |
| #PREVFREE3=$FREE3 | |
| #PREVFREE4=$FREE4 | |
| #DELALLOC12=$(( $ALLOC1 - $ALLOC2 )) | |
| #DELALLOC13=$(( $ALLOC1 - $ALLOC3 )) | |
| #DELALLOC14=$(( $ALLOC1 - $ALLOC4 )) | |
| #SUM1=$(( $DELTA1 + $DELTA2 + $DELTA3 + $DELTA4 )) | |
| #SUM2=$(( $DELTA_ALLOC1 + $DELTA_ALLOC2 + $DELTA_ALLOC3 + $DELTA_ALLOC4 )) | |
| #echo $TIME :: $DELTA1 $DELTA2 $DELTA3 $DELTA4 :: sum1:$SUM1 :: $DELTA_ALLOC1 $DELTA_ALLOC2 $DELTA_ALLOC3 $DELTA_ALLOC4 :: sum2:$SUM2 :: $ALLOC1 $ALLOC2 $ALLOC3 $ALLOC4 :: 0 $DELALLOC12 $DELALLOC13 $DELALLOC14 >> /tmp/icp/icp_"$myCARDCPU"_M"$Minute".txt | |
| grep "ESP Pkts" /proc/ucad/debug/stats_cooked >> /tmp/icp/icp_"$myCARDCPU"_M"$Minute".txt | |
| cat /proc/icp_dh8*/et_ring_ctrl/*/conf | grep inflights | grep -v 'inflights: 0,' >> /tmp/icp/icp_"$myCARDCPU"_M"$Minute".txt | |
| sleep $SLEEP_ICP_COLL | |
| done | |
| STATS_RAW=$(cat /proc/ucad/debug/stats_raw | awk 'BEGIN{printf "/proc/ucad/debug/stats_raw;%x",systime()} {printf "%s;" substr($0,25)} END{printf ";\n"}' | tr -d " " ); | |
| echo $STATS_RAW >> /tmp/icp/icp_"$myCARDCPU"_M"$Minute".txt | |
| grep -H "" /proc/icp_dh*/qat* | awk -F"/" '{print $4}' >> /tmp/icp/icp_"$myCARDCPU"_M"$Minute".txt | |
| cat /proc/ucam/dist >> /tmp/icp/icp_"$myCARDCPU"_M"$Minute".txt | |
| ln -sf /tmp/icp/icp_"$myCARDCPU"_M"$Minute".txt /tmp/icp/latest.txt | |
| IcpInflights=$( cat /proc/icp_dh8*/et_ring_ctrl/*/conf | grep inflights | grep -v 'inflights: 0,' | awk -F"inflights:" '{print $2}' | sed -e "s/Name:/:/" | tr -d "," | tr "\n" ";" | tr -d " " ) | |
| ESPpkts=$( grep "ESP Pkts" /proc/ucad/debug/stats_cooked | awk 'BEGIN{printf "%x",systime()} {printf "%s" substr($0,25)} END{printf "\n"}' | sed -E "s/\s+/;/"g ) | |
| } | |
| function _check_if_script_is_runnning_all_cards { | |
| ping bcast -c 2 -w 0.2 -b >& /dev/null | |
| IpNeighShowReach=( $( ip neigh show | grep 172.16 | grep REACHABLE | awk '{print $1}' | sort -n )) | |
| i=0;for IP in "${IpNeighShowReach[@]}";do i=$(( $i + 1 )); IPX[$i]=$IP;done;iLAST=$i; | |
| for ((i=1;i<=$iLAST;i++)); do | |
| IP=${IPX[$i]}; | |
| echo === $IP === | |
| grep $IP" " /etc/hosts | |
| ssh $IP "cat $LASTRUNFILE;ls -la $KEEPRUNNINGFILE $LASTRUNFILE $SCRIPTFULLPATH;echo ps::;ps -ef | grep $SCRIPTNAME | grep -v cat | grep -v grep" | |
| done | |
| } | |
| function _func_exec_scripts_on_all_cards { | |
| echo $0 :: $$ :: $j :: $myCARDCPU :: _func_exec_scripts_on_all_cards :: `date` > $CARDEXECUTEDFILE | |
| echo $0 :: $$ :: $j :: $myCARDCPU :: _func_exec_scripts_on_all_cards :: `date` > $LASTRUNFILE | |
| ping bcast -c 2 -w 0.2 -b >& /dev/null | |
| IpNeighShowReach=( $( ip neigh show | grep 172.16 | grep REACHABLE | awk '{print $1}' )) | |
| i=0;for IP in "${IpNeighShowReach[@]}";do i=$(( $i + 1 )); IPX[$i]=$IP;done;iLAST=$i; | |
| for ((i=1;i<=$iLAST;i++)); do | |
| IP=${IPX[$i]}; | |
| scp $SCRIPTFULLPATH "$IP":"$SCRIPTFULLPATH" | |
| test $DEBUG -ne 0 && echo scp $SCRIPTFULLPATH "$IP":"$SCRIPTFULLPATH" > /dev/kmsg | |
| sleep 1 | |
| test ! -f $KEEPRUNNINGFILE && ( echo $0 :: $$ :: $myCARDCPU :: ERROR :: _func_exec_scripts_on_all_cards :: `date` > $ERRORFILE ; exit ) | |
| ssh $IP "chmod +x $SCRIPTFULLPATH;$SCRIPTFULLPATH" | |
| sleep 1 | |
| done | |
| sleep 30 | |
| } | |
| function _func_remove_scripts_from_all_cards { | |
| echo $0 :: $$ :: $j :: $myCARDCPU :: _func_remove_scripts_from_all_cards :: `date` > $CARDREMOVEDFILE | |
| ps -C $SCRIPTFILENAME -opid,comm | grep -v $$ | grep $SCRIPTNAME | grep -v PID | awk '{exec="kill -9 "$1;print exec;system(exec)}' | |
| test $is_like_dpc -eq 1 && exit | |
| ping bcast -c 2 -w 0.2 -b >& /dev/null | |
| IpNeighShowReach=( $( ip neigh show | grep 172.16 | grep REACHABLE | awk '{print $1}' )) | |
| i=0;for IP in "${IpNeighShowReach[@]}";do i=$(( $i + 1 )); IPX[$i]=$IP;done;iLAST=$i; | |
| for ((i=1;i<=$iLAST;i++)); do | |
| IP=${IPX[$i]}; | |
| set -vx | |
| ssh $IP rm -f $KEEPRUNNINGFILE | |
| set +vx | |
| sleep 1 | |
| done | |
| rm -f $KEEPRUNNINGFILE | |
| cat /dev/null > $STOPPEDFILE | |
| exit | |
| } | |
| function _disable_reboot_on_all_cards { | |
| ping bcast -c 2 -w 0.2 -b >& /dev/null | |
| IpNeighShowReach=( $( ip neigh show | grep 172.16 | grep REACHABLE | awk '{print $1}' | sort -n )) | |
| i=0;for IP in "${IpNeighShowReach[@]}";do i=$(( $i + 1 )); IPX[$i]=$IP;done;iLAST=$i; | |
| for ((i=1;i<=$iLAST;i++)); do | |
| IP=${IPX[$i]}; | |
| ssh $IP touch $DISABLEREBOOTFILE | |
| done | |
| } | |
| function _enable_reboot_on_all_cards { | |
| ping bcast -c 2 -w 0.2 -b >& /dev/null | |
| IpNeighShowReach=( $( ip neigh show | grep 172.16 | grep REACHABLE | awk '{print $1}' | sort -n )) | |
| i=0;for IP in "${IpNeighShowReach[@]}";do i=$(( $i + 1 )); IPX[$i]=$IP;done;iLAST=$i; | |
| for ((i=1;i<=$iLAST;i++)); do | |
| IP=${IPX[$i]}; | |
| ssh $IP rm -f $DISABLEREBOOTFILE | |
| done | |
| } | |
| function _check_reboot_enabled_disabled_on_all_cards { | |
| ping bcast -c 2 -w 0.2 -b >& /dev/null | |
| IpNeighShowReach=( $( ip neigh show | grep 172.16 | grep REACHABLE | awk '{print $1}' | sort -n )) | |
| i=0;for IP in "${IpNeighShowReach[@]}";do i=$(( $i + 1 )); IPX[$i]=$IP;done;iLAST=$i; | |
| for ((i=1;i<=$iLAST;i++)); do | |
| IP=${IPX[$i]}; | |
| echo === $IP === | |
| grep $IP" " /etc/hosts | |
| ssh $IP ls -la $DISABLEREBOOTFILE | |
| done | |
| } | |
| function _check_if_there_are_offline_cards { | |
| cat /dev/null > /tmp/cli_show_card_table.txt | |
| DPCOfflineCardCount=0 | |
| DPCActiveCardCount=0 | |
| DPCOfflineCardCount=$( cli show card table | grep DPC | grep Offline | wc -l ) | |
| DPCActiveCardCount=$( cat /tmp/cli_show_card_table.txt | grep DPC | grep Active | wc -l ) | |
| #test $DEBUG -ne 0 && echo $DPCActiveCardCount | |
| #test $DEBUG -ne 0 && echo $DPCOfflineCardCount | |
| if [ $DPCActiveCardCount -lt $MinimumActiveCardsAllowingReboot ] || [ $DPCOfflineCardCount -gt $MinimumOfflineCardsAllowingReboot ]; then | |
| #test $DEBUG -ne 0 && echo Disable_reboot | |
| test $LastAction == "enableReboot" && _disable_reboot_on_all_cards | |
| LastAction="disableReboot" | |
| else | |
| #test $DEBUG -ne 0 && echo Enable_reboot | |
| test $LastAction == "disableReboot" && _enable_reboot_on_all_cards | |
| LastAction="enableReboot" | |
| fi | |
| rm -f /tmp/cli_show_card_table.txt | |
| } | |
| function _sync_tmp_ucad_from_all_dpc_cards { | |
| ping bcast -c 2 -w 0.2 -b >& /dev/null | |
| IpNeighShowReach=( $( ip neigh show | grep 172.16 | grep REACHABLE | awk '{print $1}' | sort -n )) | |
| i=0;for IP in "${IpNeighShowReach[@]}";do i=$(( $i + 1 )); IPX[$i]=$IP;done;iLAST=$i; | |
| for ((i=1;i<=$iLAST;i++)); do | |
| IP=${IPX[$i]}; | |
| CARD=$( grep "$IP"" " /etc/hosts | grep -v alt | head -1| awk '{print $2}' ) | |
| DAY=$( date +%w ) # Using Day of the week to reduce amount of data | |
| DIRCPY="$UCADDIR"/"$CARD"/"$DAY" | |
| mkdir -p $DIRCPY | |
| touch "$DIRCPY"/lastrun.txt | |
| if [ "$ARGV1" == "-b" ]; then | |
| rsync --remove-source-files --temp-dir=/mnt/hd-raid/temp --fdatasync --timeout=5 --time-limit=9 -ave "ssh -o \"UsePrivilegedPort no\"" "$CARD":/tmp/ucad/ $DIRCPY 1> /dev/null 2> /dev/null | |
| else | |
| rsync --remove-source-files --temp-dir=/mnt/hd-raid/temp --fdatasync --timeout=5 --time-limit=9 -ave "ssh -o \"UsePrivilegedPort no\"" "$CARD":/tmp/ucad/ $DIRCPY | |
| fi | |
| done | |
| find /mnt/hd-raid/data/ucad/ -type f -mtime +8 -delete # hard coded to 8 and in relation with DAY=$( date +%w ) which is 7 | |
| } | |
| function _func_main_mio { | |
| test $is_like_dpc -eq 1 && ( echo $0 :: $$ :: $myCARDCPU :: ERROR :: _func_main_mio :: `date` > $ERRORFILE ; exit ) | |
| j=0 | |
| _func_exec_scripts_on_all_cards | |
| mkdir -p $UCADDIR | |
| while [ -f $KEEPRUNNINGFILE ] ; do | |
| ActiveMIO=$( sn-dlutil --master-spc-slot ) | |
| PrevDay=$Day | |
| PrevHour=$Hour | |
| PrevMinute=$Minute | |
| read -r Week Year Mont _Day _Hour _Minute _Second <<< "$(date +'%W %Y %m %d %H %M %S')" | |
| Second=$( expr $_Second + 0 ) | |
| Day=$( expr $_Day + 0 ) | |
| Hour=$( expr $_Hour + 0 ) | |
| Minute=$( expr $_Minute + 0 ) | |
| ####eval `date +"export WD=%a;export Hour=%H;export Minute=%M;export Second=%S;export Unixtime=%s"` | |
| #### Check if there are offline cards in the system | |
| if [ $mySLOT -eq $ActiveMIO ] && [ $PrevMinute -ne $Minute ] ; then | |
| if [ $ScheduledReboot=="Yes" ] ; then | |
| test $Hour -eq $ScheduledHour && _check_if_there_are_offline_cards | |
| else | |
| _check_if_there_are_offline_cards | |
| fi | |
| fi | |
| if [ $Minute -eq $mySLOT ] && [ $Second -le 30 ] | |
| then | |
| _func_exec_scripts_on_all_cards | |
| fi | |
| mkdir -p /tmp/ucad/ | |
| touch /tmp/ucad/mio_lastrun."$Minute" | |
| if [ $mySLOT -eq $ActiveMIO ] ; then | |
| if [ $Minute -eq 1 ] || [ $Minute -eq 13 ] || [ $Minute -eq 25 ] || [ $Minute -eq 37 ] || [ $Minute -eq 49 ] ; then | |
| test -d $UCADDIR && _sync_tmp_ucad_from_all_dpc_cards | |
| fi | |
| fi | |
| test $DEBUG -ne 0 && echo $0 :: $$ :: $j :: $myCARDCPU :: `date` | |
| _func_self_memory_check | |
| echo $0 :: $$ :: $j :: $myCARDCPU :: _func_main_mio :: `date` > $LASTRUNFILE | |
| j=$(( $j + 1 )) | |
| Unixtime=$( date +%s ) | |
| sleep $(( $SleepIntervalMIO - ($Unixtime % $SleepIntervalMIO ))) | |
| done | |
| exit | |
| } | |
| is_like_mio=0 | |
| is_like_dpc=0 | |
| case "$(sn-dlutil --my-type)" in | |
| 36) echo "MIO"; is_mio=true; TYPE=MIO; is_like_mio=1;; | |
| 37) echo "DPC"; is_dpc=true; TYPE=DPC; is_like_dpc=1;; | |
| 40) echo "DPC2"; is_dpc2=true; TYPE=DPC2; is_like_dpc=1;; | |
| 39) echo "MIO2"; is_mio2=true; TYPE=MIO2; is_like_mio=1;; | |
| *) echo "NOT_ASR5500"; TYPE=NOT_ASR5500; exit ;; | |
| esac | |
| test "$ARGV1" == "-c" && _check_if_script_is_runnning_all_cards && exit | |
| test "$ARGV1" == "-e" && _check_reboot_enabled_disabled_on_all_cards && exit | |
| test "$ARGV1" == "-r" && _func_remove_scripts_from_all_cards && exit | |
| test "$ARGV1" == "-d" && set -vx && _func_main_dpc && exit # DPC Debugging only | |
| test "$ARGV1" == "-m" && set -vx && _func_main_mio && exit # MIO Debugging only | |
| test "$ARGV1" == "-s" && _sync_tmp_ucad_from_all_dpc_cards && exit | |
| test "$ARGV1" == "-b" && _func_init_script | |
| test "$ARGV1" != "-b" && _func_run_script_in_background && exit | |
| test $is_like_dpc -eq 1 && _func_main_dpc | |
| test $is_like_mio -eq 1 && _func_main_mio | |
| ### END | |
| ### END | |
| ### END | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment