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