 c789121f84
			
		
	
	
		c789121f84
		
	
	
	
	
		
			
			This is core part of migration. Things not migrated yet: - DispVM (qubes_restore needs to be almost rewritten) - VM xen config files should be fixed (use "script:" prefix in block device description, perhaps generate this files on VM start) Huge, slow xend not needed any more, now it conflicts with libxl
		
			
				
	
	
		
			100 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			100 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| #
 | |
| # chkconfig: 2345 81 00
 | |
| # description: Starts/stops Qubes default netvm
 | |
| #
 | |
| ### BEGIN INIT INFO
 | |
| # Provides:          qubes-networking
 | |
| # Required-Start:    qubes-core
 | |
| # Default-Start:     3 4 5
 | |
| # Default-Stop:      0 1 2 6
 | |
| # Default-Enabled:   yes
 | |
| # Short-Description: Start/stop qubes networking
 | |
| # Description:       Starts and stops the qubes networking
 | |
| ### END INIT INFO
 | |
| 
 | |
| 
 | |
| #
 | |
| # Source function library.
 | |
| . /etc/rc.d/init.d/functions
 | |
| 
 | |
| NETVM=$(qvm-get-default-netvm)
 | |
| 
 | |
| get_running_netvms() {
 | |
|     # Actually get running VMs with PCI devices attached
 | |
|     RUNNING_VMS=`xl list | tail -n +3 | cut -f 1 -d " "`
 | |
|     RUNNING_NETVMS=""
 | |
|     for VM in $RUNNING_VMS; do
 | |
|         if [ -n "`xl pci-list $VM`" ]; then
 | |
|             echo "$VM"
 | |
|         fi
 | |
|     done
 | |
| }
 | |
| 
 | |
| start()
 | |
| {
 | |
|     if [ x$NETVM = x ] ; then
 | |
| 
 | |
|         echo WARNING: Qubes NetVM not configured!
 | |
|         echo -n $"Doing nothing:"
 | |
| 
 | |
|     elif [ $NETVM = "dom0" ] ; then 
 | |
| 
 | |
|         echo -n $"Setting up net backend in Dom0:"
 | |
|         echo "NS1=10.137.0.1" > /var/run/qubes/qubes_ns
 | |
|         echo "NS2=10.137.255.254" >> /var/run/qubes/qubes_ns
 | |
|         /usr/lib/qubes/qubes_setup_dnat_to_ns
 | |
|         echo "1" > /proc/sys/net/ipv4/ip_forward || exit 1
 | |
|     else
 | |
| 
 | |
|         echo -n $"Starting default NetVM:"
 | |
|         /usr/lib/qubes/unbind_all_network_devices || exit 1
 | |
|         qvm-start -q --no-guid $NETVM || exit 1
 | |
| 
 | |
|     fi
 | |
|     touch /var/lock/subsys/qubes_netvm
 | |
|     success
 | |
|     echo
 | |
| 	return 0
 | |
| }
 | |
| 
 | |
| stop()
 | |
| {
 | |
|     if [ x$NETVM = x ] ; then
 | |
| 
 | |
|         echo WARNING: Qubes NetVM not configured!
 | |
|         echo -n $"Doing nothing:"
 | |
| 
 | |
|     elif [ $NETVM = "dom0" ] ; then 
 | |
| 
 | |
|         echo -n $"Stopping Qubes networking in Dom0:"
 | |
|     else
 | |
| 
 | |
|         echo -n $"Stopping NetVMs:"
 | |
|         for VM in `get_running_netvms`; do
 | |
|             qvm-run -q --shutdown --wait $VM
 | |
|         done
 | |
| 
 | |
|     fi
 | |
|     rm -f /var/lock/subsys/qubes_netvm
 | |
|     success
 | |
|     echo
 | |
| 
 | |
| 	return 0
 | |
| }
 | |
| 
 | |
| case "$1" in
 | |
|   start)
 | |
| 	start
 | |
| 	;;
 | |
|   stop)
 | |
| 	stop
 | |
| 	;;
 | |
|   *)
 | |
| 	echo $"Usage: $0 {start|stop}"
 | |
| 	exit 3
 | |
| 	;;
 | |
| esac
 | |
| 
 | |
| exit $RETVAL
 |