40 lines
		
	
	
		
			806 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			806 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/sh
 | 
						|
 | 
						|
. "${PM_FUNCTIONS}"
 | 
						|
 | 
						|
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|tail -n +2`" ]; then
 | 
						|
            echo "$VM"
 | 
						|
        fi
 | 
						|
    done
 | 
						|
}
 | 
						|
 | 
						|
suspend_net()
 | 
						|
{
 | 
						|
    for VM in `get_running_netvms`; do
 | 
						|
        qvm-run -u root --pass-io $VM 'QUBESRPC qubes.SuspendPre dom0'
 | 
						|
    done
 | 
						|
    # Ignore exit status from netvm...
 | 
						|
    return 0
 | 
						|
}
 | 
						|
 | 
						|
resume_net()
 | 
						|
{
 | 
						|
    for VM in `get_running_netvms`; do
 | 
						|
        qvm-run -u root --pass-io $VM 'QUBESRPC qubes.SuspendPost dom0'
 | 
						|
    done
 | 
						|
    # Ignore exit status from netvm...
 | 
						|
    return 0
 | 
						|
}
 | 
						|
 | 
						|
 
 | 
						|
case "$1" in
 | 
						|
        resume) resume_net ;;
 | 
						|
        suspend) suspend_net ;;
 | 
						|
        *) exit 0 ;;
 | 
						|
esac
 |