#!/bin/sh # # Start or stop vmware # # $FreeBSD$ vmware_config_file=@@PREFIX@@/etc/vmware/config if [ ! -e $vmware_config_file ]; then echo "$vmware_config_file does not exist!" >&2 exit 255 fi vmware_config() { cat $vmware_config_file | while read var eq value; do if [ "$1" = "$var" ]; then ret=`expr "$value" : '"\(.*\)"$'` echo ${ret:-$value} break fi done } vmware=`vmware_config vmware.fullpath` vmware_libdir=`vmware_config libdir` networking=@@NETWORKING@@ bridged=@@BRIDGED@@ bridge_interface=@@BRIDGE_INTF@@ host_ip=`vmware_config vmnet1.HostOnlyAddress` netmask=`vmware_config vmnet1.HostOnlyNetMask` dev_vmnet1=@@LINUXBASE@@/dev/vmnet1 if [ ! -x $vmware ]; then echo "$vmware does not exist!" >&2 exit 255 fi if [ `sysctl -n hw.ncpu` -eq 1 ]; then suffix=up else suffix=smp fi exec >/dev/null case $1 in start) kldstat -v | grep vmmon >/dev/null || kldload ${vmware_libdir}/modules/vmmon_${suffix}.ko if [ $networking -eq 1 ]; then kldstat -v | grep if_tap >/dev/null || kldload if_tap.ko if [ ! -e $dev_vmnet1 ]; then echo "$dev_vmnet1 does not exist!" >&2 echo "Your VMware installation seems broken. Please reinstall VMware port." >&2 exit 255 fi echo -n > $dev_vmnet1 ifconfig vmnet1 $host_ip netmask $netmask if [ X$bridged = XYES ]; then kldstat -v | grep netgraph >/dev/null || kldload netgraph.ko kldstat -v | grep ng_ether >/dev/null || kldload ng_ether.ko kldstat -v | grep ng_bridge >/dev/null || kldload ng_bridge.ko ngctl mkpeer vmnet1: bridge lower link0 ngctl name vmnet1:lower vmnet_bridge ngctl connect vmnet_bridge: ${bridge_interface}: link1 lower ngctl connect vmnet_bridge: ${bridge_interface}: link2 upper ngctl msg ${bridge_interface}: setautosrc 0 ngctl msg ${bridge_interface}: setpromisc 1 ngctl msg vmnet1: setautosrc 0 ngctl msg vmnet1: setpromisc 1 fi fi echo -n " VMware" >&2 ;; stop) kldunload vmmon_${suffix} if [ $networking -eq 1 ]; then ifconfig vmnet1 down ifconfig vmnet1 delete $host_ip if [ X$bridged = XYES ]; then ngctl shutdown vmnet_bridge: ngctl msg ${bridge_interface}: setautosrc 1 ngctl msg ${bridge_interface}: setpromisc 0 fi fi ;; *) echo "usage: `basename $0` {start|stop}" >&2 exit 64 ;; esac