#!/bin/bash

G_INSPECT_MMLPATH="/opt/huawei/snas/script/inspect_mml"
. $G_INSPECT_MMLPATH/CheckItems
CurInspectNum="295"
CurInspectFun=`GetInspectType $CurInspectNum`
RESULTFILE="/tmp/tmpResult${CurInspectFun}"
>$RESULTFILE

lldpadInfo=$(rpm -qa | grep dcbtool)

if [ "X" == "X${lldpadInfo}" ];then
    echo "INFO:no lldpad." >>$RESULTFILE
    echo "${CurInspectFun}_Pass 0" >>$RESULTFILE
    exit 0
fi

RoCEofback=$(pidof lldpad)
if [ "X" == "X${RoCEofback}" ];then
    echo "INFO:no RoCE." >>$RESULTFILE
    echo "${CurInspectFun}_Pass 0" >>$RESULTFILE
    exit 0
fi

#执行规避措施
lldptool -i SLOT4-1 -L adminStatus=disabled >/dev/null 2>&1
lldptool -i SLOT5-1 -L adminStatus=disabled >/dev/null 2>&1

for line in ${RoCEofback};do
    pmap ${line} | grep heap | awk -v pid=${line} 'BEGIN{
        isPass=0;
        CurInspectFun="checklldpad";
    }
    {
        if($3~/^[0-9]+K/)
        {
            split($3,Arr,"K");
            if(Arr[1]>=2048)
            {
                printf("INFO:%d heap is %s\n",pid,$3);
                isPass = 1;
            }
        }
        else if($3~/^[0-9]+M/ && $3 > 2)
        {
            split($3,Arr,"M");
            if(Arr[1]>=2)
            {
                printf("[ERR]%d heap is %s.ERRCODE(4)\n",pid $3);
                isPass = 1;
            }
        }
    }
    END{
        if(isPass==0)
        {
            printf("INFO:%d pmap is OK.\n",pid);
            printf("%s_Pass 0\n",CurInspectFun);
        }
        else
        {
            printf("%s_Pass 1\n",CurInspectFun);
        }
    }
    ' >>$RESULTFILE
done
exit 0

