176404edcSAsim Jamshed#! /bin/bash 276404edcSAsim Jamshed 376404edcSAsim Jamshed############################ Common Utilities ################################ 4d270d183SAsim JamshedGREEN='\033[0;32m' 5d270d183SAsim JamshedRED='\033[0;31m' 6d270d183SAsim JamshedNC='\033[0m' 7d270d183SAsim Jamshed 876404edcSAsim JamshedFL_PCAP=1 976404edcSAsim JamshedFL_DPDK=2 10522d5c66SAsim JamshedFL_NETMAP=3 1176404edcSAsim Jamshed 1276404edcSAsim Jamshed# vercomp returns 0 (=), 1 (>), or 2 (<) 1376404edcSAsim Jamshedvercomp () { 1476404edcSAsim Jamshed if [[ $1 == $2 ]] 1576404edcSAsim Jamshed then 1676404edcSAsim Jamshed return 0 1776404edcSAsim Jamshed fi 1876404edcSAsim Jamshed local IFS=. 1976404edcSAsim Jamshed local i ver1=($1) ver2=($2) 2076404edcSAsim Jamshed # fill empty fields in ver1 with zeros 2176404edcSAsim Jamshed for ((i=${#ver1[@]}; i<${#ver2[@]}; i++)) 2276404edcSAsim Jamshed do 2376404edcSAsim Jamshed ver1[i]=0 2476404edcSAsim Jamshed done 2576404edcSAsim Jamshed for ((i=0; i<${#ver1[@]}; i++)) 2676404edcSAsim Jamshed do 2776404edcSAsim Jamshed if [[ -z ${ver2[i]} ]] 2876404edcSAsim Jamshed then 2976404edcSAsim Jamshed # fill empty fields in ver2 with zeros 3076404edcSAsim Jamshed ver2[i]=0 3176404edcSAsim Jamshed fi 3276404edcSAsim Jamshed if ((10#${ver1[i]} > 10#${ver2[i]})) 3376404edcSAsim Jamshed then 3476404edcSAsim Jamshed return 1 3576404edcSAsim Jamshed fi 3676404edcSAsim Jamshed if ((10#${ver1[i]} < 10#${ver2[i]})) 3776404edcSAsim Jamshed then 3876404edcSAsim Jamshed return 2 3976404edcSAsim Jamshed fi 4076404edcSAsim Jamshed done 4176404edcSAsim Jamshed return 0 4276404edcSAsim Jamshed} 4376404edcSAsim Jamshed 4476404edcSAsim Jamshed# valid_ip_addr returns 1 for valid ip address 4576404edcSAsim Jamshedvalid_ip_addr() 4676404edcSAsim Jamshed{ 4776404edcSAsim Jamshed local ip=$1 4876404edcSAsim Jamshed local stat=1 4976404edcSAsim Jamshed 5076404edcSAsim Jamshed if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then 5176404edcSAsim Jamshed OIFS=$IFS 5276404edcSAsim Jamshed IFS='.' 5376404edcSAsim Jamshed ip=($ip) 5476404edcSAsim Jamshed IFS=$OIFS 5576404edcSAsim Jamshed [[ ${ip[0]} -le 255 && ${ip[1]} -le 255 \ 5676404edcSAsim Jamshed && ${ip[2]} -le 255 && ${ip[3]} -le 255 ]] 5776404edcSAsim Jamshed stat=$? 5876404edcSAsim Jamshed fi 5976404edcSAsim Jamshed return $stat 6076404edcSAsim Jamshed} 6176404edcSAsim Jamshed 6276404edcSAsim Jamshed# Create a mos.conf file 6376404edcSAsim Jamshedcreate_config() 6476404edcSAsim Jamshed{ 6576404edcSAsim Jamshed cd $CUR_DIR 6676404edcSAsim Jamshed mkdir -p $2 6776404edcSAsim Jamshed CONF_FILE=$2/mos.conf 683ae9e016SAsim Jamshed CONF_MASTER_FILE=$2/mos-master.conf 693ae9e016SAsim Jamshed CONF_SLAVE_FILE=$2/mos-slave.conf 7076404edcSAsim Jamshed 7176404edcSAsim Jamshed echo 7276404edcSAsim Jamshed echo "----------------------------------------" 7376404edcSAsim Jamshed echo "Creating mos.conf file in $2" 7476404edcSAsim Jamshed echo "----------------------------------------" 7576404edcSAsim Jamshed 7676404edcSAsim Jamshed if [ -f $CONF_FILE ]; then 7776404edcSAsim Jamshed echo 7876404edcSAsim Jamshed echo "The config file $2/mos.conf already exists." 7976404edcSAsim Jamshed echo "Skip writing a new config file.." 8076404edcSAsim Jamshed return 8176404edcSAsim Jamshed fi 8276404edcSAsim Jamshed 8376404edcSAsim Jamshed # Get the number of CPUs and translate it into CPU mask 8476404edcSAsim Jamshed let "z=2**$(nproc)-1" 8576404edcSAsim Jamshed CPU_MASK=$(printf '0x%04X\n' $z) 8676404edcSAsim Jamshed 8776404edcSAsim Jamshed # Get # of CPU sockets 8876404edcSAsim Jamshed let "sockets=$(cat /proc/cpuinfo | grep "physical id" | awk '{print $4}' | sort -ur | head -n 1) + 1" 8976404edcSAsim Jamshed 9076404edcSAsim Jamshed # Get the number of memory channels 9176404edcSAsim Jamshed command -v dmidecode >/dev/null && 9276404edcSAsim Jamshed let "NUM_MEMCH=($(sudo dmidecode -t 17 | grep -c 'Size:')-$(sudo dmidecode -t 17 | grep -c 'Size: No Module'))/$sockets" || 9376404edcSAsim Jamshed { echo "dmidecode command not found. setting num_mem_ch = 4"; let "NUM_MEMCH=4"; } 9476404edcSAsim Jamshed 9576404edcSAsim Jamshed # Get the number of interfaces 9676404edcSAsim Jamshed counter=0 9776404edcSAsim Jamshed if [[ $1 == $FL_DPDK ]]; then 9876404edcSAsim Jamshed cd /sys/module/igb_uio/drivers/pci:igb_uio/ 9976404edcSAsim Jamshed DEV_NAME="dpdk" 100522d5c66SAsim Jamshed elif [[ ( $1 != $FL_PCAP ) && ( $1 != $FL_NETMAP ) ]]; then 101522d5c66SAsim Jamshed echo "invalid function call 1" 10276404edcSAsim Jamshed exit 1 10376404edcSAsim Jamshed fi 10476404edcSAsim Jamshed for i in * 10576404edcSAsim Jamshed do 10676404edcSAsim Jamshed if [[ $i == *":"* ]] 10776404edcSAsim Jamshed then 10876404edcSAsim Jamshed let "counter=$counter + 1" 10976404edcSAsim Jamshed fi 11076404edcSAsim Jamshed done 11176404edcSAsim Jamshed cd $CUR_DIR 11276404edcSAsim Jamshed 11376404edcSAsim Jamshed # Write up a new configuration file 11476404edcSAsim Jamshed if [[ $1 == $FL_PCAP ]]; then 11576404edcSAsim Jamshed cat .standalone-template.conf > $CONF_FILE 11676404edcSAsim Jamshed DEVLIST=`ifconfig -s | grep -Eo '^[^ ]+' | tail -n+2` 11776404edcSAsim Jamshed for dev in $DEVLIST; do 11876404edcSAsim Jamshed printf "Found $dev. Press y to select [y/N]: " 11976404edcSAsim Jamshed read option 12076404edcSAsim Jamshed if [[ "$option" == y* ]]; then 12176404edcSAsim Jamshed DEVICE="\n\t\t$dev" 12276404edcSAsim Jamshed DEVICEMASK="__coremask__devicemask" 12376404edcSAsim Jamshed FMT=$(printf 's/__devicemask/%s %s/g' $DEVICE $DEVICEMASK) 12476404edcSAsim Jamshed sed -i -e "$FMT" $CONF_FILE 12576404edcSAsim Jamshed 12676404edcSAsim Jamshed DEVICE="$dev""__devicelist" 12776404edcSAsim Jamshed FMT=$(printf 's/__devicelist/ %s/g' $DEVICE) 12876404edcSAsim Jamshed sed -i -e "$FMT" $CONF_FILE 12976404edcSAsim Jamshed fi 13076404edcSAsim Jamshed done 13176404edcSAsim Jamshed sed -i -e 's/__devicemask//g' $CONF_FILE 13276404edcSAsim Jamshed sed -i -e 's/__devicelist//g' $CONF_FILE 13376404edcSAsim Jamshed sed -i -e 's/__coremask/0x0001/g' $CONF_FILE 13476404edcSAsim Jamshed sed -i -e 's/__num_memch//g' $CONF_FILE 13576404edcSAsim Jamshed sed -i -e 's/__forward/1/g' $CONF_FILE 1363ae9e016SAsim Jamshed sed -i -e 's/__multiprocess//g' $CONF_FILE 13776404edcSAsim Jamshed 138522d5c66SAsim Jamshed elif [[ $1 == $FL_NETMAP ]]; then 139522d5c66SAsim Jamshed if [ "$3" = "epserver" ] || [ "$3" = "epwget" ] ; then 140522d5c66SAsim Jamshed cat .end-template.conf > $CONF_FILE 141522d5c66SAsim Jamshed else 142522d5c66SAsim Jamshed cat .standalone-template.conf > $CONF_FILE 143522d5c66SAsim Jamshed fi 144522d5c66SAsim Jamshed 145522d5c66SAsim Jamshed DEVLIST=`ifconfig -s | grep -Eo '^[^ ]+' | tail -n+2` 146522d5c66SAsim Jamshed for dev in $DEVLIST; do 147522d5c66SAsim Jamshed printf "Found $dev. Press y to select [y/N]: " 148522d5c66SAsim Jamshed read option 149522d5c66SAsim Jamshed if [[ "$option" == y* ]]; then 150522d5c66SAsim Jamshed DEVICE="\n\t\t$dev" 151522d5c66SAsim Jamshed DEVICEMASK="__coremask__devicemask" 152522d5c66SAsim Jamshed FMT=$(printf 's/__devicemask/%s %s/g' $DEVICE $DEVICEMASK) 153522d5c66SAsim Jamshed sed -i -e "$FMT" $CONF_FILE 154522d5c66SAsim Jamshed 155522d5c66SAsim Jamshed DEVICE="$dev""__devicelist" 156522d5c66SAsim Jamshed FMT=$(printf 's/__devicelist/ %s/g' $DEVICE) 157522d5c66SAsim Jamshed sed -i -e "$FMT" $CONF_FILE 158522d5c66SAsim Jamshed fi 159522d5c66SAsim Jamshed done 160522d5c66SAsim Jamshed sed -i -e 's/__devicemask//g' $CONF_FILE 161522d5c66SAsim Jamshed sed -i -e 's/__devicelist//g' $CONF_FILE 162522d5c66SAsim Jamshed sed -i -e 's/__coremask/'$CPU_MASK'/g' $CONF_FILE 163522d5c66SAsim Jamshed sed -i -e 's/__num_memch//g' $CONF_FILE 164522d5c66SAsim Jamshed sed -i -e 's/__forward/1/g' $CONF_FILE 165522d5c66SAsim Jamshed sed -i -e 's/__app/'$3'/g' $CONF_FILE 1663ae9e016SAsim Jamshed sed -i -e 's/__multiprocess//g' $CONF_FILE 167522d5c66SAsim Jamshed 168522d5c66SAsim Jamshed if [ "$3" = "nat" ] ; then 169522d5c66SAsim Jamshed sed -i -e 's/\# tcp_tw_interval = 30/tcp_tw_interval = 30/g' $CONF_FILE 170522d5c66SAsim Jamshed fi 17176404edcSAsim Jamshed else 17276404edcSAsim Jamshed if [ "$3" = "epserver" ] || [ "$3" = "epwget" ] ; then 17376404edcSAsim Jamshed cat .end-template.conf > $CONF_FILE 1743ae9e016SAsim Jamshed cat .end-template.conf > $CONF_MASTER_FILE 1753ae9e016SAsim Jamshed cat .end-template.conf > $CONF_SLAVE_FILE 17676404edcSAsim Jamshed else 17776404edcSAsim Jamshed cat .standalone-template.conf > $CONF_FILE 17876404edcSAsim Jamshed fi 17976404edcSAsim Jamshed start=0 18076404edcSAsim Jamshed while [ $start -lt $counter ] 18176404edcSAsim Jamshed do 18276404edcSAsim Jamshed DEVICE="\n\t\t$DEV_NAME$(($start))" 18376404edcSAsim Jamshed DEVICEMASK="__coremask__devicemask" 18476404edcSAsim Jamshed FMT=$(printf 's/__devicemask/%s %s/g' $DEVICE $DEVICEMASK) 18576404edcSAsim Jamshed sed -i -e "$FMT" $CONF_FILE 18676404edcSAsim Jamshed 18776404edcSAsim Jamshed DEVICE="$DEV_NAME$(($start))__devicelist" 18876404edcSAsim Jamshed FMT=$(printf 's/__devicelist/ %s/g' $DEVICE) 18976404edcSAsim Jamshed sed -i -e "$FMT" $CONF_FILE 19076404edcSAsim Jamshed 19176404edcSAsim Jamshed let "start=$start + 1" 19276404edcSAsim Jamshed done 19376404edcSAsim Jamshed sed -i -e 's/__devicemask//g' $CONF_FILE 19476404edcSAsim Jamshed sed -i -e 's/__devicelist//g' $CONF_FILE 19576404edcSAsim Jamshed sed -i -e 's/__coremask/'$CPU_MASK'/g' $CONF_FILE 19676404edcSAsim Jamshed sed -i -e 's/__forward/1/g' $CONF_FILE 19776404edcSAsim Jamshed sed -i -e 's/__app/'$3'/g' $CONF_FILE 19876404edcSAsim Jamshed 19976404edcSAsim Jamshed if [ "$3" = "nat" ] ; then 20076404edcSAsim Jamshed sed -i -e 's/\# tcp_tw_interval = 30/tcp_tw_interval = 30/g' $CONF_FILE 20176404edcSAsim Jamshed fi 20276404edcSAsim Jamshed 20376404edcSAsim Jamshed if [[ $1 == $FL_DPDK ]]; then 20476404edcSAsim Jamshed FMT=$(printf 's/__num_memch/%snb_mem_channels = %d%s/g' '# number of memory channels per socket [mandatory for DPDK]\n\t' $NUM_MEMCH '\n') 20576404edcSAsim Jamshed sed -i -e "$FMT" $CONF_FILE 2063ae9e016SAsim Jamshed if [ "$3" = "epserver" ] || [ "$3" = "epwget" ] ; then 2073ae9e016SAsim Jamshed cp $CONF_FILE $CONF_MASTER_FILE 2083ae9e016SAsim Jamshed cp $CONF_FILE $CONF_SLAVE_FILE 2093ae9e016SAsim Jamshed sed -i -e 's/__multiprocess/multiprocess = 0 master/g' $CONF_MASTER_FILE 2103ae9e016SAsim Jamshed sed -i -e 's/__multiprocess/multiprocess = slave/g' $CONF_SLAVE_FILE 2113ae9e016SAsim Jamshed fi 21276404edcSAsim Jamshed else 213522d5c66SAsim Jamshed echo "invalid function call 2" 21476404edcSAsim Jamshed exit 1 21576404edcSAsim Jamshed fi 2163ae9e016SAsim Jamshed 2173ae9e016SAsim Jamshed sed -i -e 's/__multiprocess//g' $CONF_FILE 21876404edcSAsim Jamshed fi 21976404edcSAsim Jamshed echo 22076404edcSAsim Jamshed cat $CONF_FILE 22176404edcSAsim Jamshed} 22276404edcSAsim Jamshed 22376404edcSAsim Jamshedcreate_makefile() 22476404edcSAsim Jamshed{ 22576404edcSAsim Jamshed cd $CUR_DIR/samples 22676404edcSAsim Jamshed for d in * ; do 22776404edcSAsim Jamshed if [ -f $CUR_DIR/samples/$d/Makefile.in ]; then 22876404edcSAsim Jamshed cp $CUR_DIR/samples/$d/Makefile.in $CUR_DIR/samples/$d/Makefile 22976404edcSAsim Jamshed if [[ $1 == $FL_DPDK ]]; then 230d270d183SAsim Jamshed FMT=$(printf 's/__IO_LIB_ARGS/LIBS += -m64 -g -pthread -lrt -march=native -Wl,-export-dynamic -L\$(RTE_SDK)\/\$(RTE_TARGET)\/lib -Wl,-lnuma -Wl,-lmtcp -Wl,-lpthread -Wl,-lrt -Wl,-ldl -Wl,$(shell cat \$(RTE_SDK)\/\$(RTE_TARGET)\/lib\/ldflags.txt)/g') 23176404edcSAsim Jamshed elif [[ $1 == $FL_PCAP ]]; then 23276404edcSAsim Jamshed FMT=$(printf 's/__IO_LIB_ARGS/GCC_OPT += -D__thread="" -DBE_RESILIENT_TO_PACKET_DROP\\nINC += -DENABLE_PCAP\\nLIBS += -lpcap/g') 233522d5c66SAsim Jamshed elif [[ $1 == $FL_NETMAP ]]; then 234522d5c66SAsim Jamshed FMT=$(printf 's/__IO_LIB_ARGS/GCC_OPT += -DENABLE_NETMAP/g') 23576404edcSAsim Jamshed fi 23676404edcSAsim Jamshed sed -i -e "$FMT" $CUR_DIR/samples/$d/Makefile 23776404edcSAsim Jamshed fi 23876404edcSAsim Jamshed done 23976404edcSAsim Jamshed} 24076404edcSAsim Jamshed 24176404edcSAsim Jamshed# Setup MOS library 24276404edcSAsim Jamshedsetup_mos_library() { 24376404edcSAsim Jamshed echo "Start building up the MOS library" 24476404edcSAsim Jamshed cd $CUR_DIR 24576404edcSAsim Jamshed 24676404edcSAsim Jamshed if [[ $1 == $FL_DPDK ]]; then 24776404edcSAsim Jamshed cd $CUR_DIR/scripts/ 24876404edcSAsim Jamshed ./configure --enable-dpdk 24976404edcSAsim Jamshed elif [[ $1 == $FL_PCAP ]]; then 25076404edcSAsim Jamshed cd $CUR_DIR/scripts/ 25176404edcSAsim Jamshed ./configure --enable-pcap 252522d5c66SAsim Jamshed elif [[ $1 == $FL_NETMAP ]]; then 253522d5c66SAsim Jamshed cd $CUR_DIR/scripts/ 254522d5c66SAsim Jamshed ./configure --enable-netmap 25576404edcSAsim Jamshed fi 25676404edcSAsim Jamshed cd $CUR_DIR/core/src 25776404edcSAsim Jamshed make clean;make 25876404edcSAsim Jamshed cd $CUR_DIR 25976404edcSAsim Jamshed create_makefile $1 26076404edcSAsim Jamshed echo 26176404edcSAsim Jamshed echo "----------------------------------------------------------" 26276404edcSAsim Jamshed echo "Done with MOS library setup" 26376404edcSAsim Jamshed echo "----------------------------------------------------------" 26476404edcSAsim Jamshed echo 26576404edcSAsim Jamshed} 26676404edcSAsim Jamshed 26776404edcSAsim Jamshed############################################################################# 26876404edcSAsim Jamshed 26976404edcSAsim Jamshed############################### DPDK Utilities ############################## 27076404edcSAsim Jamshed# Creates hugepage filesystem. 27176404edcSAsim Jamshedcreate_mnt_huge() 27276404edcSAsim Jamshed{ 27376404edcSAsim Jamshed echo "Creating /mnt/huge and mounting as hugetlbfs" 27476404edcSAsim Jamshed sudo mkdir -p /mnt/huge 27576404edcSAsim Jamshed 27676404edcSAsim Jamshed grep -s '/mnt/huge' /proc/mounts > /dev/null 27776404edcSAsim Jamshed if [ $? -ne 0 ] ; then 27876404edcSAsim Jamshed sudo mount -t hugetlbfs nodev /mnt/huge 27976404edcSAsim Jamshed fi 28076404edcSAsim Jamshed} 28176404edcSAsim Jamshed 28276404edcSAsim Jamshed# Removes hugepage filesystem. 28376404edcSAsim Jamshedremove_mnt_huge() 28476404edcSAsim Jamshed{ 28576404edcSAsim Jamshed echo "Unmounting /mnt/huge and removing directory" 28676404edcSAsim Jamshed grep -s '/mnt/huge' /proc/mounts > /dev/null 28776404edcSAsim Jamshed if [ $? -eq 0 ] ; then 28876404edcSAsim Jamshed sudo umount /mnt/huge 28976404edcSAsim Jamshed fi 29076404edcSAsim Jamshed 29176404edcSAsim Jamshed if [ -d /mnt/huge ] ; then 29276404edcSAsim Jamshed sudo rm -R /mnt/huge 29376404edcSAsim Jamshed fi 29476404edcSAsim Jamshed} 29576404edcSAsim Jamshed 29676404edcSAsim Jamshed# Unloads igb_uio.ko. 29776404edcSAsim Jamshedremove_igb_uio_module() 29876404edcSAsim Jamshed{ 29976404edcSAsim Jamshed echo "Unloading any existing DPDK UIO module" 30076404edcSAsim Jamshed /sbin/lsmod | grep -s igb_uio > /dev/null 30176404edcSAsim Jamshed if [ $? -eq 0 ] ; then 30276404edcSAsim Jamshed sudo /sbin/rmmod igb_uio 30376404edcSAsim Jamshed fi 304d270d183SAsim Jamshed 305d270d183SAsim Jamshed /sbin/lsmod | grep -s dpdk_iface > /dev/null 306d270d183SAsim Jamshed if [ $? -eq 0 ] ; then 307d270d183SAsim Jamshed sudo /sbin/rmmod dpdk_iface.ko 308d270d183SAsim Jamshed fi 30976404edcSAsim Jamshed} 31076404edcSAsim Jamshed 31176404edcSAsim Jamshed# Loads new igb_uio.ko (and uio module if needed). 31276404edcSAsim Jamshedload_igb_uio_module() 31376404edcSAsim Jamshed{ 31476404edcSAsim Jamshed if [ ! -f $RTE_SDK/$RTE_TARGET/kmod/igb_uio.ko ];then 31576404edcSAsim Jamshed echo "## ERROR: Target does not have the DPDK UIO Kernel Module." 31676404edcSAsim Jamshed echo " To fix, please try to rebuild target." 31776404edcSAsim Jamshed return 31876404edcSAsim Jamshed fi 31976404edcSAsim Jamshed 320d270d183SAsim Jamshed if lsmod | grep igb_uio &> /dev/null ; then 321d270d183SAsim Jamshed : 322d270d183SAsim Jamshed else 32376404edcSAsim Jamshed /sbin/lsmod | grep -s uio > /dev/null 32476404edcSAsim Jamshed if [ $? -ne 0 ] ; then 32576404edcSAsim Jamshed modinfo uio > /dev/null 32676404edcSAsim Jamshed if [ $? -eq 0 ]; then 32776404edcSAsim Jamshed echo "Loading uio module" 32876404edcSAsim Jamshed sudo /sbin/modprobe uio 32976404edcSAsim Jamshed fi 33076404edcSAsim Jamshed fi 33176404edcSAsim Jamshed 33276404edcSAsim Jamshed # UIO may be compiled into kernel, so it may not be an error if it can't 33376404edcSAsim Jamshed # be loaded. 33476404edcSAsim Jamshed echo "Loading DPDK UIO module" 33576404edcSAsim Jamshed sudo /sbin/insmod $RTE_SDK/$RTE_TARGET/kmod/igb_uio.ko 33676404edcSAsim Jamshed if [ $? -ne 0 ] ; then 33776404edcSAsim Jamshed echo "## ERROR: Could not load kmod/igb_uio.ko." 33876404edcSAsim Jamshed quit 33976404edcSAsim Jamshed fi 340d270d183SAsim Jamshed fi 34176404edcSAsim Jamshed} 34276404edcSAsim Jamshed 34376404edcSAsim Jamshed# Removes all reserved hugepages. 34476404edcSAsim Jamshedclear_numa_pages() 34576404edcSAsim Jamshed{ 34676404edcSAsim Jamshed echo > .echo_tmp 34776404edcSAsim Jamshed for d in /sys/devices/system/node/node? ; do 34876404edcSAsim Jamshed echo "echo 0 > $d/hugepages/hugepages-2048kB/nr_hugepages" >> .echo_tmp 34976404edcSAsim Jamshed done 35076404edcSAsim Jamshed echo "Removing currently reserved hugepages" 35176404edcSAsim Jamshed sudo sh .echo_tmp 35276404edcSAsim Jamshed rm -f .echo_tmp 35376404edcSAsim Jamshed 35476404edcSAsim Jamshed remove_mnt_huge 35576404edcSAsim Jamshed} 35676404edcSAsim Jamshed# Removes all reserved hugepages. 35776404edcSAsim Jamshedclear_non_numa_pages() 35876404edcSAsim Jamshed{ 35976404edcSAsim Jamshed echo > .echo_tmp 36076404edcSAsim Jamshed echo "echo 0 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages" > .echo_tmp 36176404edcSAsim Jamshed echo "Removing currently reserved hugepages" 36276404edcSAsim Jamshed sudo sh .echo_tmp 36376404edcSAsim Jamshed rm -f .echo_tmp 36476404edcSAsim Jamshed remove_mnt_huge 36576404edcSAsim Jamshed} 36676404edcSAsim Jamshed 36776404edcSAsim Jamshed# 36876404edcSAsim Jamshed# Creates hugepages. 36976404edcSAsim Jamshed# 37076404edcSAsim Jamshedset_non_numa_pages_default() 37176404edcSAsim Jamshed{ 37276404edcSAsim Jamshed clear_non_numa_pages 37376404edcSAsim Jamshed echo > .echo_tmp 37476404edcSAsim Jamshed echo "Number of pages : 1024" 37576404edcSAsim Jamshed 37676404edcSAsim Jamshed Pages=1024 37776404edcSAsim Jamshed echo "echo $Pages > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages" >> .echo_tmp 37876404edcSAsim Jamshed 37976404edcSAsim Jamshed echo "Reserving hugepages" 38076404edcSAsim Jamshed sudo sh .echo_tmp 38176404edcSAsim Jamshed rm -f .echo_tmp 38276404edcSAsim Jamshed 38376404edcSAsim Jamshed create_mnt_huge 38476404edcSAsim Jamshed} 38576404edcSAsim Jamshed 38676404edcSAsim Jamshed# 38776404edcSAsim Jamshed# Creates hugepages. 38876404edcSAsim Jamshed# 38976404edcSAsim Jamshedset_non_numa_pages() 39076404edcSAsim Jamshed{ 39176404edcSAsim Jamshed 39276404edcSAsim Jamshed clear_non_numa_pages 39376404edcSAsim Jamshed 39476404edcSAsim Jamshed echo "" 39576404edcSAsim Jamshed echo " Input the number of 2MB pages" 39676404edcSAsim Jamshed echo " Example: to have 128MB of hugepages available, enter '64' to" 39776404edcSAsim Jamshed echo " reserve 64 * 2MB pages" 39876404edcSAsim Jamshed echo -n "Number of pages: " 39976404edcSAsim Jamshed read Pages 40076404edcSAsim Jamshed 40176404edcSAsim Jamshed echo "echo $Pages > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages" > .echo_tmp 40276404edcSAsim Jamshed 40376404edcSAsim Jamshed echo "Reserving hugepages" 40476404edcSAsim Jamshed sudo sh .echo_tmp 40576404edcSAsim Jamshed rm -f .echo_tmp 40676404edcSAsim Jamshed 40776404edcSAsim Jamshed create_mnt_huge 40876404edcSAsim Jamshed 40976404edcSAsim Jamshed} 41076404edcSAsim Jamshed 41176404edcSAsim Jamshed# Creates hugepages on specific NUMA nodes. 41276404edcSAsim Jamshedset_numa_pages_default() 41376404edcSAsim Jamshed{ 41476404edcSAsim Jamshed clear_numa_pages 41576404edcSAsim Jamshed echo > .echo_tmp 41676404edcSAsim Jamshed for d in /sys/devices/system/node/node? ; do 41776404edcSAsim Jamshed node=$(basename $d) 41876404edcSAsim Jamshed echo "Number of pages for $node: 1024" 41976404edcSAsim Jamshed Pages=1024 42076404edcSAsim Jamshed echo "echo $Pages > $d/hugepages/hugepages-2048kB/nr_hugepages" >> .echo_tmp 42176404edcSAsim Jamshed done 42276404edcSAsim Jamshed echo "Reserving hugepages" 42376404edcSAsim Jamshed sudo sh .echo_tmp 42476404edcSAsim Jamshed rm -f .echo_tmp 42576404edcSAsim Jamshed 42676404edcSAsim Jamshed create_mnt_huge 42776404edcSAsim Jamshed} 42876404edcSAsim Jamshed 42976404edcSAsim Jamshed# Creates hugepages on specific NUMA nodes. 43076404edcSAsim Jamshedset_numa_pages() 43176404edcSAsim Jamshed{ 43276404edcSAsim Jamshed clear_numa_pages 43376404edcSAsim Jamshed echo "" 43476404edcSAsim Jamshed echo " Input the number of 2MB pages for each node" 43576404edcSAsim Jamshed echo " Example: to have 128MB of hugepages available per node," 43676404edcSAsim Jamshed echo " enter '64' to reserve 64 * 2MB pages on each node" 43776404edcSAsim Jamshed 43876404edcSAsim Jamshed echo > .echo_tmp 43976404edcSAsim Jamshed for d in /sys/devices/system/node/node? ; do 44076404edcSAsim Jamshed node=$(basename $d) 44176404edcSAsim Jamshed echo -n "Number of pages for $node: " 44276404edcSAsim Jamshed read Pages 44376404edcSAsim Jamshed echo "echo $Pages > $d/hugepages/hugepages-2048kB/nr_hugepages" >> .echo_tmp 44476404edcSAsim Jamshed done 44576404edcSAsim Jamshed echo "Reserving hugepages" 44676404edcSAsim Jamshed sudo sh .echo_tmp 44776404edcSAsim Jamshed rm -f .echo_tmp 44876404edcSAsim Jamshed 44976404edcSAsim Jamshed create_mnt_huge 45076404edcSAsim Jamshed} 45176404edcSAsim Jamshed 4523ae9e016SAsim Jamshed# Uses dpdk-devbind.py to move devices to work with igb_uio 45376404edcSAsim Jamshedbind_nics_to_igb_uio() 45476404edcSAsim Jamshed{ 45576404edcSAsim Jamshed if /sbin/lsmod | grep -q igb_uio ; then 4560be44444SAsim Jamshed ${RTE_SDK}/usertools/dpdk-devbind.py --status 45776404edcSAsim Jamshed echo "" 45876404edcSAsim Jamshed echo "Enter PCI address of device(s) to bind to IGB UIO driver (e.g., \"04:00.0 04:00.1\")." 45976404edcSAsim Jamshed echo -n "> " 46076404edcSAsim Jamshed read PCI_PATH 46176404edcSAsim Jamshed 46276404edcSAsim Jamshed 4630be44444SAsim Jamshed sudo ${RTE_SDK}/usertools/dpdk-devbind.py -b igb_uio $PCI_PATH && echo "OK" 46476404edcSAsim Jamshed else 46576404edcSAsim Jamshed echo "# Please load the 'igb_uio' kernel module before querying or " 46676404edcSAsim Jamshed echo "# adjusting NIC device bindings" 46776404edcSAsim Jamshed fi 468d270d183SAsim Jamshed 469d270d183SAsim Jamshed # Create interfaces 470d270d183SAsim Jamshed printf "Creating ${GREEN}dpdk$NC interface entries\n" 471d270d183SAsim Jamshed cd dpdk-iface-kmod 472d270d183SAsim Jamshed make 473d270d183SAsim Jamshed if lsmod | grep dpdk_iface &> /dev/null ; then 474d270d183SAsim Jamshed : 475d270d183SAsim Jamshed else 476d270d183SAsim Jamshed sudo insmod ./dpdk_iface.ko 477d270d183SAsim Jamshed fi 478d270d183SAsim Jamshed sudo -E make run 479d270d183SAsim Jamshed cd .. 48076404edcSAsim Jamshed} 48176404edcSAsim Jamshed 48276404edcSAsim Jamshed# 4833ae9e016SAsim Jamshed# Uses dpdk-devbind.py to move devices to work with kernel drivers again 48476404edcSAsim Jamshed# 48576404edcSAsim Jamshedunbind_nics() 48676404edcSAsim Jamshed{ 48776404edcSAsim Jamshed DEVLIST=`ifconfig -s | grep -Eo '^[^ ]+' | tail -n+2` 48876404edcSAsim Jamshed for dev in $DEVLIST 48976404edcSAsim Jamshed do 49076404edcSAsim Jamshed echo $dev 49176404edcSAsim Jamshed if [[ "$dev" == dpdk* ]]; then 49276404edcSAsim Jamshed sudo ifconfig $dev down 49376404edcSAsim Jamshed fi 49476404edcSAsim Jamshed done 49576404edcSAsim Jamshed 4960be44444SAsim Jamshed ${RTE_SDK}/usertools/dpdk-devbind.py --status 49776404edcSAsim Jamshed echo "" 49876404edcSAsim Jamshed echo -n "Enter PCI address of device to unbind: " 49976404edcSAsim Jamshed read PCI_PATH 50076404edcSAsim Jamshed echo "" 50176404edcSAsim Jamshed echo -n "Enter name of kernel driver to bind the device to: " 50276404edcSAsim Jamshed read DRV 5030be44444SAsim Jamshed sudo ${RTE_SDK}/usertools/dpdk-devbind.py -b $DRV $PCI_PATH && echo "OK" 50476404edcSAsim Jamshed} 50576404edcSAsim Jamshed 50676404edcSAsim Jamshed# Brings up the interface of DPDK devices up 50776404edcSAsim Jamshedsetup_iface_dpdk() 50876404edcSAsim Jamshed{ 50976404edcSAsim Jamshed # First check whether igb_uio module is already loaded 51076404edcSAsim Jamshed MODULE="igb_uio" 51176404edcSAsim Jamshed 51276404edcSAsim Jamshed if sudo lsmod | grep "$MODULE" &> /dev/null ; then 51376404edcSAsim Jamshed echo "$MODULE is loaded!" 51476404edcSAsim Jamshed else 51576404edcSAsim Jamshed echo "$MODULE is not loaded!" 51676404edcSAsim Jamshed exit 1 51776404edcSAsim Jamshed fi 51876404edcSAsim Jamshed 5198c9e1184SAsim Jamshed # set ip address for dpdk-enabled interfaces in the system 5208c9e1184SAsim Jamshed list=`basename -a /sys/class/net/dpdk*` 5218c9e1184SAsim Jamshed for if_name in ${list//\\n/ }; do 52276404edcSAsim Jamshed 52376404edcSAsim Jamshed while [ 1 ]; do 52476404edcSAsim Jamshed echo 5258c9e1184SAsim Jamshed echo "[$if_name] enter IP address[/mask] (e.g., 10.0.0.1[/24])" 52676404edcSAsim Jamshed echo -n "> " 5273ceda200SAsim Jamshed read line 5283ceda200SAsim Jamshed ip_addr=`echo $line | awk -F '/' '{print $1}'` 5293ceda200SAsim Jamshed mask=`echo $line | awk -F '/' '{print $2}'` 53076404edcSAsim Jamshed valid_ip_addr $ip_addr 53176404edcSAsim Jamshed if [ $? -eq 0 ]; then 53276404edcSAsim Jamshed break 53376404edcSAsim Jamshed fi 53476404edcSAsim Jamshed echo "invalid IP address!" # continue 53576404edcSAsim Jamshed done 5368c9e1184SAsim Jamshed 5373ceda200SAsim Jamshed if [ "$mask" == "" ];then 5388c9e1184SAsim Jamshed echo "sudo /sbin/ifconfig $if_name $ip_addr up" 5398c9e1184SAsim Jamshed sudo /sbin/ifconfig $if_name $ip_addr up 5403ceda200SAsim Jamshed else 5418c9e1184SAsim Jamshed echo "sudo /sbin/ifconfig $if_name $ip_addr/$mask up" 5428c9e1184SAsim Jamshed sudo /sbin/ifconfig $if_name $ip_addr/$mask up 5433ceda200SAsim Jamshed fi 54476404edcSAsim Jamshed done 5458c9e1184SAsim Jamshed 54676404edcSAsim Jamshed} 54776404edcSAsim Jamshed############################################################################# 54876404edcSAsim Jamshed 54976404edcSAsim Jamshed############################### DPDK ######################################## 55076404edcSAsim Jamshedstep0_func_dpdk() 55176404edcSAsim Jamshed{ 55276404edcSAsim Jamshed if [ -d "/sys/devices/system/node" ]; then 55376404edcSAsim Jamshed set_numa_pages_default 55476404edcSAsim Jamshed else 55576404edcSAsim Jamshed set_non_numa_pages_default 55676404edcSAsim Jamshed fi 55776404edcSAsim Jamshed 55876404edcSAsim Jamshed step2_func_dpdk 55976404edcSAsim Jamshed step3_func_dpdk 56076404edcSAsim Jamshed step4_func_dpdk 56176404edcSAsim Jamshed} 56276404edcSAsim Jamshedstep1_func_dpdk() 56376404edcSAsim Jamshed{ 56476404edcSAsim Jamshed if [ -d "/sys/devices/system/node" ]; then 56576404edcSAsim Jamshed set_numa_pages 56676404edcSAsim Jamshed else 56776404edcSAsim Jamshed set_non_numa_pages 56876404edcSAsim Jamshed fi 56976404edcSAsim Jamshed} 57076404edcSAsim Jamshedstep2_func_dpdk() 57176404edcSAsim Jamshed{ 57276404edcSAsim Jamshed load_igb_uio_module 57376404edcSAsim Jamshed bind_nics_to_igb_uio 57476404edcSAsim Jamshed} 57576404edcSAsim Jamshedstep3_func_dpdk() 57676404edcSAsim Jamshed{ 57776404edcSAsim Jamshed setup_iface_dpdk $last_octet 57876404edcSAsim Jamshed} 57976404edcSAsim Jamshedstep4_func_dpdk() 58076404edcSAsim Jamshed{ 58176404edcSAsim Jamshed cd $CUR_DIR/samples 58276404edcSAsim Jamshed for d in * ; do 58376404edcSAsim Jamshed create_config $FL_DPDK "samples/$d/config" $d 58476404edcSAsim Jamshed done 58576404edcSAsim Jamshed echo 58676404edcSAsim Jamshed echo "------------------------------------------------" 58776404edcSAsim Jamshed echo "Done with configuration file setup." 58876404edcSAsim Jamshed echo "Use the arp command to add static ARP entries" 58976404edcSAsim Jamshed echo "------------------------------------------------" 59076404edcSAsim Jamshed} 59176404edcSAsim Jamshedstep5_func_dpdk() 59276404edcSAsim Jamshed{ 59376404edcSAsim Jamshed unbind_nics 59476404edcSAsim Jamshed} 59576404edcSAsim Jamshedstep6_func_dpdk() 59676404edcSAsim Jamshed{ 59776404edcSAsim Jamshed echo 59876404edcSAsim Jamshed exit 1 59976404edcSAsim Jamshed} 60076404edcSAsim Jamshed############################################################################# 60176404edcSAsim Jamshed 60276404edcSAsim Jamshed############################### PCAP ######################################## 60376404edcSAsim Jamshedstep0_func_pcap() 60476404edcSAsim Jamshed{ 60576404edcSAsim Jamshed cd $CUR_DIR/samples 60676404edcSAsim Jamshed for d in * ; do 60776404edcSAsim Jamshed if [ -d $CUR_DIR/samples/$d/config ]; then 60876404edcSAsim Jamshed create_config $FL_PCAP "samples/$d/config" $d 60976404edcSAsim Jamshed fi 61076404edcSAsim Jamshed done 61176404edcSAsim Jamshed echo 61276404edcSAsim Jamshed echo "------------------------------------------------" 61376404edcSAsim Jamshed echo "Done with configuration file setup." 61476404edcSAsim Jamshed echo "Use the arp command to add static ARP entries" 61576404edcSAsim Jamshed echo "------------------------------------------------" 61676404edcSAsim Jamshed exit 1 61776404edcSAsim Jamshed} 61876404edcSAsim Jamshed############################################################################# 61976404edcSAsim Jamshed 620522d5c66SAsim Jamshed############################## NETMAP ####################################### 621522d5c66SAsim Jamshedstep0_func_netmap() 622522d5c66SAsim Jamshed{ 623522d5c66SAsim Jamshed cd $CUR_DIR/samples 624522d5c66SAsim Jamshed for d in * ; do 625522d5c66SAsim Jamshed if [ -d $CUR_DIR/samples/$d/config ]; then 626522d5c66SAsim Jamshed create_config $FL_NETMAP "samples/$d/config" $d 627522d5c66SAsim Jamshed fi 628522d5c66SAsim Jamshed done 629522d5c66SAsim Jamshed echo 630522d5c66SAsim Jamshed echo "------------------------------------------------" 631522d5c66SAsim Jamshed echo "Done with configuration file setup." 632522d5c66SAsim Jamshed echo "Use the arp command to add static ARP entries" 633522d5c66SAsim Jamshed echo "------------------------------------------------" 634522d5c66SAsim Jamshed exit 1 635522d5c66SAsim Jamshed} 636522d5c66SAsim Jamshed############################################################################# 637522d5c66SAsim Jamshed 63876404edcSAsim Jamshed############################# Main Script ################################### 639d270d183SAsim Jamshed# Get to script directory 640d270d183SAsim Jamshedcd $(dirname ${BASH_SOURCE[0]})/ 64176404edcSAsim Jamshedexport CUR_DIR=$PWD 64276404edcSAsim Jamshedkerver=$(uname -r) 64376404edcSAsim Jamshed 64476404edcSAsim Jamshedif [ "$1" == "--compile-dpdk" ]; then 645d270d183SAsim Jamshed # check if RTE_SDK and RTE_TARGET env variables exist 646d270d183SAsim Jamshed if [[ -z "${RTE_SDK}" ]]; then 647d270d183SAsim Jamshed printf "${RED}Please define RTE_SDK env variable first\n $NC" 648d270d183SAsim Jamshed exit 1 649d270d183SAsim Jamshed fi 650d270d183SAsim Jamshed if [[ -z "${RTE_TARGET}" ]]; then 651d270d183SAsim Jamshed printf "${RED}Please define RTE_TARGET env variable first\n $NC" 652d270d183SAsim Jamshed exit 1 653d270d183SAsim Jamshed fi 654d270d183SAsim Jamshed 655d270d183SAsim Jamshed # First download dpdk 656d270d183SAsim Jamshed if [ -z "$(ls -A $PWD/drivers/dpdk)" ]; then 657d270d183SAsim Jamshed cd drivers 658d270d183SAsim Jamshed printf "${GREEN}Cloning dpdk...\n $NC" 659d270d183SAsim Jamshed git submodule init 660d270d183SAsim Jamshed git submodule update 661d270d183SAsim Jamshed cd .. 662d270d183SAsim Jamshed fi 663d270d183SAsim Jamshed 66476404edcSAsim Jamshed vercomp $kerver "2.6.33" 66576404edcSAsim Jamshed # if kernel version < 2.6.33 66676404edcSAsim Jamshed if [ "$?" == "2" ]; then 66776404edcSAsim Jamshed echo "[note] current kerner version ("$kerver") does not support DPDK" 66876404edcSAsim Jamshed exit 1 66976404edcSAsim Jamshed fi 670d270d183SAsim Jamshed 671d270d183SAsim Jamshed if grep "ldflags.txt" $RTE_SDK/mk/rte.app.mk > /dev/null 672d270d183SAsim Jamshed then 673d270d183SAsim Jamshed : 674d270d183SAsim Jamshed else 675d270d183SAsim Jamshed sed -i -e 's/O_TO_EXE_STR =/\$(shell if [ \! -d \${RTE_SDK}\/\${RTE_TARGET}\/lib ]\; then mkdir \${RTE_SDK}\/\${RTE_TARGET}\/lib\; fi)\nLINKER_FLAGS = \$(call linkerprefix,\$(LDLIBS))\n\$(shell echo \${LINKER_FLAGS} \> \${RTE_SDK}\/\${RTE_TARGET}\/lib\/ldflags\.txt)\nO_TO_EXE_STR =/g' $RTE_SDK/mk/rte.app.mk 676d270d183SAsim Jamshed fi 677d270d183SAsim Jamshed 67876404edcSAsim Jamshed # Build and install DPDK library 67976404edcSAsim Jamshed export DESTDIR="." 68076404edcSAsim Jamshed echo 68176404edcSAsim Jamshed echo "Selected DPDK library to be used for MOS" 68276404edcSAsim Jamshed echo "----------------------------------------------------------" 68376404edcSAsim Jamshed echo " RTE_SDK exported as $RTE_SDK" 68476404edcSAsim Jamshed echo " RTE_TARGET exported as $RTE_TARGET" 68576404edcSAsim Jamshed echo "----------------------------------------------------------" 68676404edcSAsim Jamshed echo 68776404edcSAsim Jamshed echo -n "Press enter to continue ..."; read 68876404edcSAsim Jamshed cd $RTE_SDK 68976404edcSAsim Jamshed make install T=$RTE_TARGET 69076404edcSAsim Jamshed echo 69176404edcSAsim Jamshed echo -n "Done with DPDK setup. Press enter to start MOS setup ..."; read 69276404edcSAsim Jamshed # Build and compile MOS library 69376404edcSAsim Jamshed setup_mos_library $FL_DPDK 69476404edcSAsim Jamshed 69576404edcSAsim Jamshedelif [ "$1" == "--compile-pcap" ]; then 69676404edcSAsim Jamshed setup_mos_library $FL_PCAP 69776404edcSAsim Jamshed 698522d5c66SAsim Jamshedelif [ "$1" == "--compile-netmap" ]; then 699522d5c66SAsim Jamshed setup_mos_library $FL_NETMAP 700522d5c66SAsim Jamshed 70176404edcSAsim Jamshedelif [ "$1" == "--run-dpdk" ]; then 702d270d183SAsim Jamshed # check if RTE_SDK and RTE_TARGET env variables exist 703d270d183SAsim Jamshed if [[ -z "${RTE_SDK}" ]]; then 704d270d183SAsim Jamshed printf "${RED}Please define RTE_SDK env variable first\n $NC" 705d270d183SAsim Jamshed exit 1 706d270d183SAsim Jamshed fi 707d270d183SAsim Jamshed if [[ -z "${RTE_TARGET}" ]]; then 708d270d183SAsim Jamshed printf "${RED}Please define RTE_TARGET env variable first\n $NC" 709d270d183SAsim Jamshed exit 1 710d270d183SAsim Jamshed fi 711d270d183SAsim Jamshed 71276404edcSAsim Jamshed while [ 1 ]; do 71376404edcSAsim Jamshed clear 71476404edcSAsim Jamshed echo 71576404edcSAsim Jamshed echo "----------------------------------------------------------" 71676404edcSAsim Jamshed echo " Full setup (from start)" 71776404edcSAsim Jamshed echo "----------------------------------------------------------" 71876404edcSAsim Jamshed echo "[0] Full setup for running mOS with DPDK" 71976404edcSAsim Jamshed echo 72076404edcSAsim Jamshed echo "----------------------------------------------------------" 72176404edcSAsim Jamshed echo " Step-by-step setup for running mOS with DPDK" 72276404edcSAsim Jamshed echo "----------------------------------------------------------" 72376404edcSAsim Jamshed echo "[1] Setup hugepage mappings" 72476404edcSAsim Jamshed echo "[2] Load and bind Ethernet devices to IGB_UIO module" 72576404edcSAsim Jamshed echo "[3] Bring the interfaces up (DPDK devices)" 72676404edcSAsim Jamshed echo "[4] Create new MOS configuration files for sample apps" 72776404edcSAsim Jamshed echo "[5] Unbind dpdk-registered NICs" 72876404edcSAsim Jamshed echo 72976404edcSAsim Jamshed echo "[6] Exit script" 73076404edcSAsim Jamshed echo 73176404edcSAsim Jamshed echo -n "Option: " 73276404edcSAsim Jamshed read entry 73376404edcSAsim Jamshed if [ "$entry" ]; then 73476404edcSAsim Jamshed step"$entry"_func_dpdk 73576404edcSAsim Jamshed echo 73676404edcSAsim Jamshed echo -n "Press enter to continue ..."; read 73776404edcSAsim Jamshed fi 73876404edcSAsim Jamshed done 73976404edcSAsim Jamshed 74076404edcSAsim Jamshedelif [ "$1" == "--run-pcap" ]; then 74176404edcSAsim Jamshed while [ 1 ]; do 74276404edcSAsim Jamshed clear 74376404edcSAsim Jamshed echo 74476404edcSAsim Jamshed echo "----------------------------------------------------------" 74576404edcSAsim Jamshed echo " Full setup (from start)" 74676404edcSAsim Jamshed echo "----------------------------------------------------------" 74776404edcSAsim Jamshed step0_func_pcap 74876404edcSAsim Jamshed echo 74976404edcSAsim Jamshed echo -n "Press enter to continue ..."; read 75076404edcSAsim Jamshed done 75176404edcSAsim Jamshed 752522d5c66SAsim Jamshedelif [ "$1" == "--run-netmap" ]; then 753522d5c66SAsim Jamshed while [ 1 ]; do 754522d5c66SAsim Jamshed clear 755522d5c66SAsim Jamshed echo 756522d5c66SAsim Jamshed echo "----------------------------------------------------------" 757522d5c66SAsim Jamshed echo " Full setup (from start)" 758522d5c66SAsim Jamshed echo "----------------------------------------------------------" 759522d5c66SAsim Jamshed step0_func_netmap 760522d5c66SAsim Jamshed echo 761522d5c66SAsim Jamshed echo -n "Press enter to continue ..."; read 762522d5c66SAsim Jamshed done 763522d5c66SAsim Jamshed 76476404edcSAsim Jamshedelif [ "$1" == "--cleanup" ]; then 76576404edcSAsim Jamshed find | grep mos.conf | xargs rm -f 76676404edcSAsim Jamshed find | grep log__* | xargs rm -f 767d270d183SAsim Jamshed find | grep mos-master.conf | xargs rm -f 768d270d183SAsim Jamshed find | grep mos-slave.conf | xargs rm -f 76976404edcSAsim Jamshed 77076404edcSAsim Jamshed for d in $CUR_DIR/samples/* ; do 77176404edcSAsim Jamshed cd $d 77276404edcSAsim Jamshed make clean > /dev/null 2> /dev/null 77376404edcSAsim Jamshed cd .. 77476404edcSAsim Jamshed done 77576404edcSAsim Jamshed cd .. 776c44a07e4SAsim Jamshed cd core/src 777c44a07e4SAsim Jamshed make clean > /dev/null 2> /dev/null 778c44a07e4SAsim Jamshed cd bpf 779c44a07e4SAsim Jamshed rm -rf *.o 780c44a07e4SAsim Jamshed cd .. 781c44a07e4SAsim Jamshed rm -rf .*.d 7820be44444SAsim Jamshed rm -f Makefile 783c44a07e4SAsim Jamshed cd ../.. 78476404edcSAsim Jamshed find ./samples/ -name 'Makefile' | xargs rm -f 78576404edcSAsim Jamshed rm -f scripts/config.log scripts/config.status 786d270d183SAsim Jamshed cd dpdk-iface-kmod/ 787d270d183SAsim Jamshed make clean 788d270d183SAsim Jamshed cd .. 78976404edcSAsim Jamshedelse 79076404edcSAsim Jamshed echo "[error] please specify one of the following options" 79176404edcSAsim Jamshed echo "--compile-dpdk : compile and build mOS library with dpdk" 79276404edcSAsim Jamshed echo "--compile-pcap : compile and build mOS library with pcap" 793522d5c66SAsim Jamshed echo "--compile-netmap : compile and build mOS library with netmap" 79476404edcSAsim Jamshed echo "--run-dpdk : setup environments and configurations for running applications with dpdk" 79576404edcSAsim Jamshed echo "--run-pcap : setup environments and configurations for running applications with pcap" 796522d5c66SAsim Jamshed echo "--run-netmap : setup environments and configurations for running applications with netmap" 79776404edcSAsim Jamshed echo "--cleanup : delete all binaries, config and Makefiles" 79876404edcSAsim Jamshedfi 799