#!/bin/bash
### BEGIN INIT INFO
# Provides: vmware
# Required-Start: $network $syslog hotplug
# Required-Stop: $network $syslog hotplug
# Default-Start: 3 4 5
# Default-Stop: 0 1 2 6
### END INIT INFO
. /lib/lsb/init-functions

[ -e /etc/default/vmware ] && source /etc/default/vmware

vmware_create_vmnet() {
	mknod -m 600 "/dev/vmnet$1" c 119 $1
}

vmware_start_bridge() {
	vmware_create_vmnet 0
	vmnet-bridge -d /var/run/vmnet-bridge-0.pid /dev/vmnet0 $VMNET_INTERFACE
}

vmware_start_nat() {
	vmware_create_vmnet 8
	vmnet-netifup -d /var/run/vmnet-netifup-8.pid /dev/vmnet8 vmnet8
	ifconfig vmnet8 inet 192.168.42.1 netmask 255.255.255.0 up
	vmnet-dhcpd -cf /etc/vmware/vmnet8/dhcpd/dhcpd.conf -lf /etc/vmware/vmnet8/dhcpd/dhcpd.leases -pf /var/run/vmnet-dhcpd-vmnet8.pid vmnet8 >/dev/null 2>&1
	vmnet-natd -d /var/run/vmnet-natd-8.pid -m /var/run/vmnet-natd-8.mac -c /etc/vmware/vmnet8/nat/nat.conf
}

case "$1" in
	start)
		echo -n "Starting VMware services: vmmon"
		if modprobe -q vmmon
		then
			echo -n " vmblock"
			if modprobe -q vmblock
			then
				echo -n " vmnet"
				if modprobe -q vmnet && vmware_start_bridge && vmware_start_nat
				then
					log_success_msg "."
				else
					log_failure_msg
				fi
			else
				log_failure_msg
			fi
		else
			log_failure_msg
		fi
		;;
	stop)
		echo -n "Stopping VMware services..."
		
		if killall vmnet-bridge vmnet-dhcpd vmnet-natd >/dev/null 2>&1
		then
			log_success_msg
		else
			log_failure_msg
		fi
		;;
	reload|restart)
		$0 stop
		sleep 1
		$0 start
		;;
	*)
		echo "Usage: $0 {start|stop|reload|restart}"
		exit 1
		;;
esac
