This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
solutions-tsg-scripts/roles/tsg-env-mcn0/files/setup
2019-11-27 15:18:48 +08:00

133 lines
2.9 KiB
Bash

#!/bin/bash
# set -x
CURRENT_PATH=`dirname $0`
TP_SVR=192.168.100.5
TP_PORT=10000
REMOTE_CONTROL_BIN=switch_control_client_non_block
function get_netdev_by_pci()
{
DEV_LIST=`ifconfig -a |grep flags |awk -F: '{print $1}'`
for i in ${DEV_LIST}
do
ethtool -i ${i} |grep bus-info |grep "$1" > /dev/null 2>&1
if [ $? -eq 0 ];then
TARGET=${i}
break
fi
done
echo ${TARGET}
}
function pf_setup()
{
ifconfig ens1 up
modprobe 8021q
vconfig add ens1 100
vconfig set_flag ens1.100 1 1
ifconfig ens1.100 192.168.100.1 netmask 255.255.255.0 up
sleep 1
}
function vf_setup()
{
echo 8 > /sys/class/net/ens1/device/sriov_numvfs
sleep 5
ifconfig ens1f3 up
ip link set ens1 vf 2 vlan 200
ifconfig ens1f3 192.168.200.1 netmask 255.255.255.0
ifconfig ens1f1 up
ifconfig ens1f2 up
ifconfig ens1f3 up
ifconfig ens1f4 up
ifconfig ens1f5 up
ifconfig ens1f6 up
ifconfig ens1f7 up
ifconfig enp1s1 up
sleep 5
}
function bring_down_pfvf()
{
echo 0 > /sys/class/net/ens1/device/sriov_numvfs
ifconfig ens1 down
sleep 3
}
# Main loop
while :
do
FAIL_FLAG=0
# Make sure PF is valid
ping ${TP_SVR} -c 1
if [ $? -ne 0 ];then
echo "Please make sure switch board is up."
bring_down_pfvf
pf_setup
continue
fi
# Make sure TestPoint is up.
${CURRENT_PATH}/${REMOTE_CONTROL_BIN} -s ${TP_SVR} -n ${TP_PORT} -c "show version"
if [ $? -ne 0 ];then
echo "Cannot reach TestPoint!"
echo "Please make sure TestPoint is up and in remote-listen mode."
sleep 5
continue
fi
# Create VFs and get MAC addresses
vf_setup
PF=`get_netdev_by_pci 01:00.0`
VF1=`get_netdev_by_pci 01:00.1`
VF2=`get_netdev_by_pci 01:00.2`
VF3=`get_netdev_by_pci 01:00.3`
VF4=`get_netdev_by_pci 01:00.4`
VF5=`get_netdev_by_pci 01:00.5`
VF6=`get_netdev_by_pci 01:00.6`
VF7=`get_netdev_by_pci 01:00.7`
VF8=`get_netdev_by_pci 01:01.0`
MAC1=`ifconfig ${VF1} |grep ether |awk -F' ' '{print $2}'`
MAC2=`ifconfig ${VF2} |grep ether |awk -F' ' '{print $2}'`
MAC3=`ifconfig ${VF3} |grep ether |awk -F' ' '{print $2}'`
MAC4=`ifconfig ${VF4} |grep ether |awk -F' ' '{print $2}'`
MAC5=`ifconfig ${VF5} |grep ether |awk -F' ' '{print $2}'`
MAC6=`ifconfig ${VF6} |grep ether |awk -F' ' '{print $2}'`
MAC7=`ifconfig ${VF7} |grep ether |awk -F' ' '{print $2}'`
MAC8=`ifconfig ${VF8} |grep ether |awk -F' ' '{print $2}'`
MAC9=`ifconfig ${PF} |grep ether |awk -F' ' '{print $2}'`
# Make sure VFs are valid
MAC_TABLE=`${CURRENT_PATH}/${REMOTE_CONTROL_BIN} -s ${TP_SVR} -n ${TP_PORT} -c "show mac table all"`
for i in ${MAC1} ${MAC2} ${MAC3} ${MAC4} ${MAC5} ${MAC6} ${MAC7} ${MAC8} ${MAC9}
do
echo ${MAC_TABLE} |grep ${i} > /dev/null 2>&1
if [ $? -ne 0 ];then
echo "MAC ${i} is not in table!"
FAIL_FLAG=1
break
fi
done
if [ ${FAIL_FLAG} -eq 1 ];then
bring_down_pfvf
continue
fi
echo "PF/VF setup successful."
exit 0
done