#!/bin/sh
set +x
G_MML_FILE_PATH="/opt/huawei/snas/script/inspect_mml"
source $G_MML_FILE_PATH/CheckItems
source ${G_MML_FILE_PATH}/CommonFunc.sh
CurInspectNum="213"
CurInspectFun="$(GetInspectType $CurInspectNum)"
RESULTFILE="/tmp/tmpResult${CurInspectFun}"
LOG_FILE="/var/log/inspect.log"
G_ISPASS=0
>${RESULTFILE}

function LOG
{
   local time=$(date)
   echo [${time}][$$][${CurInspectFun}]$@ >> ${LOG_FILE}
}

function checkLink()
{
    local tmpfile="/tmp/tmpfileChckComLink$$.tmp"
    local localip=""
    local JavaId=""
    local iRet=0
    local isFind=0
    local lineinfo=""
    local Result=""
    
    localip=`GetLocalIpNoPing`
    if [ "${localip}X" = "X" ];then
        echo "[ERR]Node:$(hostname)||INFO:Can't get backend IP." >> ${RESULTFILE}
        LOG "[$LINENO]get ip fail"
        G_ISPASS=1
        return
    fi
    
    cat /proc/sys/lnet/peers >${tmpfile}
    #ȡ·Ϣ
    if [ ! -s "${tmpfile}" ];then
        echo "[ERR]Node:${localip}||INFO:Can not get /proc/sys/lnet/peers information" >> ${RESULTFILE}
        LOG "[$LINENO]Can not get /proc/sys/lnet/peers information"
        G_ISPASS=1
        return
    fi
    #ݿȡнڵĺIP
    JavaId=`sqlite3 /opt/huawei/snas/etc/cm_conf.db 'select IP_ADDR from CM_NODE_IP_T where SUBNET_ID=1;' | sort|uniq`
    iRet=$?
    if [ $iRet -ne 0 ] || [ "${JavaId}X" = "X" ];then
        LOG "[$LINENO]JavaId($JavaId), ret($iRet)"
        G_ISPASS=1
        echo "[ERR]Node:${localip}||INFO:Failed to get the back ip of all node." >> ${RESULTFILE}
        return
    fi

    echo "INFO:${G_SEPARATOR}" >> ${RESULTFILE}
    echo "INFO:${localip}" >> ${RESULTFILE}
    while read row
    do
        #Ҫעں(988)MONCMĳ̣Ѳ첻ע
        lineinfo=`echo $row | awk '{print $2}' | grep '4004\|4020\|4016\|988\|peernid'`
        if [ "${lineinfo}" != "" ];then
            status=`echo $row | awk '{print $4}'|sed 's/^ *//g'|sed "/^$/d"`
            tmpinfo=`echo $status | grep down`

            if [ "$status" == "NA" ]; then
                continue
            fi
            isFind=0

            if [ "$status" == "down" ] || [ "${tmpinfo}" != "" ];then
               LOG "[$LINENO]status:$status,status info:$tmpinfo"
               isFind=0
               ip_info=`echo $row | awk '{print $2}' | sed 's/@.*$//g' |sed 's/^ *//g' |sed "/^$/d"`

               for line in $JavaId; do
                    if [ "${line}" == "${ip_info}" ];then
                        G_ISPASS=1
                        echo "[ERR]Node:${line}||INFO:$row" >> ${RESULTFILE}
                        isFind=1
                        break
                    fi
               done
            fi

            if [ $isFind -eq 1 ];then
                echo "INFO:${row}" >> ${RESULTFILE}
            fi
        fi
    done  <  ${tmpfile}

    if [ ${G_ISPASS} -eq 0 ];then
        echo "INFO:All links are OK" >> ${RESULTFILE}
    fi
    
    if [ -f "${tmpfile}" ];then
        rm -f ${tmpfile}
    fi
    return
}

checkLink
echo "${CurInspectFun}_Pass ${G_ISPASS}" >>${RESULTFILE}
exit 0
