1*c6859569SSepherosa Ziehau#!/bin/sh 2*c6859569SSepherosa Ziehau 3*c6859569SSepherosa Ziehau# 4*c6859569SSepherosa Ziehau# If transparent VF is enabled, don't do anything. 5*c6859569SSepherosa Ziehau# 6*c6859569SSepherosa Ziehau 7*c6859569SSepherosa Ziehausysctl -n hw.hn.vf_transparent > /dev/null 2>&1 8*c6859569SSepherosa Ziehauif [ $? -ne 0 ] 9*c6859569SSepherosa Ziehauthen 10*c6859569SSepherosa Ziehau # Old kernel; no transparent VF. 11*c6859569SSepherosa Ziehau vf_transparent=0 12*c6859569SSepherosa Ziehauelse 13*c6859569SSepherosa Ziehau vf_transparent=`sysctl -n hw.hn.vf_transparent` 14*c6859569SSepherosa Ziehaufi 15*c6859569SSepherosa Ziehau 16*c6859569SSepherosa Ziehauif [ $vf_transparent -ne 0 ] 17*c6859569SSepherosa Ziehauthen 18*c6859569SSepherosa Ziehau # Transparent VF; done! 19*c6859569SSepherosa Ziehau exit 0 20*c6859569SSepherosa Ziehaufi 21*c6859569SSepherosa Ziehau 22*c6859569SSepherosa Ziehauiface=$1 23*c6859569SSepherosa Ziehaudelay=$2 24*c6859569SSepherosa Ziehau 25*c6859569SSepherosa Ziehauif [ $delay -gt 0 ] 26*c6859569SSepherosa Ziehauthen 27*c6859569SSepherosa Ziehau # 28*c6859569SSepherosa Ziehau # Delayed VF up. 29*c6859569SSepherosa Ziehau # 30*c6859569SSepherosa Ziehau sleep $delay 31*c6859569SSepherosa Ziehau ifconfig $iface up 32*c6859569SSepherosa Ziehau # Done! 33*c6859569SSepherosa Ziehau exit $? 34*c6859569SSepherosa Ziehaufi 35*c6859569SSepherosa Ziehau 36*c6859569SSepherosa Ziehau# 37*c6859569SSepherosa Ziehau# Check to see whether $iface is a VF or not. 38*c6859569SSepherosa Ziehau# If $iface is a VF, bring it up now. 39*c6859569SSepherosa Ziehau# 40*c6859569SSepherosa Ziehau 41*c6859569SSepherosa Ziehau# for hyperv_vf_delay 42*c6859569SSepherosa Ziehau. /etc/rc.conf 43*c6859569SSepherosa Ziehau 44*c6859569SSepherosa Ziehausysctl -n hw.hn.vflist > /dev/null 2>&1 45*c6859569SSepherosa Ziehauif [ $? -ne 0 ] 46*c6859569SSepherosa Ziehauthen 47*c6859569SSepherosa Ziehau # Old kernel; nothing could be done properly. 48*c6859569SSepherosa Ziehau exit 0 49*c6859569SSepherosa Ziehaufi 50*c6859569SSepherosa Ziehauvf_list=`sysctl -n hw.hn.vflist` 51*c6859569SSepherosa Ziehau 52*c6859569SSepherosa Ziehaufor vf in $vf_list 53*c6859569SSepherosa Ziehaudo 54*c6859569SSepherosa Ziehau if [ $vf = $iface ] 55*c6859569SSepherosa Ziehau then 56*c6859569SSepherosa Ziehau # 57*c6859569SSepherosa Ziehau # Linger a little bit (at least 2 seconds) mainly to 58*c6859569SSepherosa Ziehau # make sure that $iface is fully attached. 59*c6859569SSepherosa Ziehau # 60*c6859569SSepherosa Ziehau # NOTE: 61*c6859569SSepherosa Ziehau # In Azure hyperv_vf_delay should be configured to a 62*c6859569SSepherosa Ziehau # large value, e.g. 120 seconds, to avoid racing cloud 63*c6859569SSepherosa Ziehau # agent goofs. 64*c6859569SSepherosa Ziehau # 65*c6859569SSepherosa Ziehau test $hyperv_vf_delay -ge 2 > /dev/null 2>&1 66*c6859569SSepherosa Ziehau if [ $? -ne 0 ] 67*c6859569SSepherosa Ziehau then 68*c6859569SSepherosa Ziehau hyperv_vf_delay=2 69*c6859569SSepherosa Ziehau fi 70*c6859569SSepherosa Ziehau # 71*c6859569SSepherosa Ziehau # NOTE: 72*c6859569SSepherosa Ziehau # "(sleep ..; ifconfig .. up) > /dev/null 2>&1 &" 73*c6859569SSepherosa Ziehau # does _not_ work. 74*c6859569SSepherosa Ziehau # 75*c6859569SSepherosa Ziehau daemon -f /usr/libexec/hyperv/hyperv_vfattach \ 76*c6859569SSepherosa Ziehau $iface $hyperv_vf_delay 77*c6859569SSepherosa Ziehau break 78*c6859569SSepherosa Ziehau fi 79*c6859569SSepherosa Ziehaudone 80