ruby-libvirt 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
 - data/NEWS +10 -0
 - data/README +188 -21
 - data/Rakefile +11 -7
 - data/ext/libvirt/_libvirt.c +252 -234
 - data/ext/libvirt/common.c +346 -71
 - data/ext/libvirt/common.h +171 -111
 - data/ext/libvirt/connect.c +1851 -798
 - data/ext/libvirt/connect.h +6 -5
 - data/ext/libvirt/domain.c +3903 -1060
 - data/ext/libvirt/domain.h +5 -3
 - data/ext/libvirt/extconf.rb +275 -41
 - data/ext/libvirt/interface.c +60 -41
 - data/ext/libvirt/interface.h +3 -1
 - data/ext/libvirt/network.c +291 -72
 - data/ext/libvirt/network.h +3 -2
 - data/ext/libvirt/nodedevice.c +138 -59
 - data/ext/libvirt/nodedevice.h +3 -1
 - data/ext/libvirt/nwfilter.c +39 -34
 - data/ext/libvirt/nwfilter.h +3 -1
 - data/ext/libvirt/secret.c +122 -64
 - data/ext/libvirt/secret.h +3 -1
 - data/ext/libvirt/storage.c +451 -233
 - data/ext/libvirt/storage.h +1 -1
 - data/ext/libvirt/stream.c +120 -122
 - data/ext/libvirt/stream.h +4 -2
 - data/tests/test_conn.rb +214 -67
 - data/tests/test_domain.rb +553 -209
 - data/tests/test_interface.rb +4 -10
 - data/tests/test_network.rb +21 -12
 - data/tests/test_nodedevice.rb +11 -1
 - data/tests/test_nwfilter.rb +4 -0
 - data/tests/test_open.rb +59 -6
 - data/tests/test_secret.rb +25 -0
 - data/tests/test_storage.rb +132 -28
 - data/tests/test_stream.rb +171 -0
 - data/tests/test_utils.rb +86 -15
 - metadata +43 -66
 
    
        checksums.yaml
    ADDED
    
    | 
         @@ -0,0 +1,7 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ---
         
     | 
| 
      
 2 
     | 
    
         
            +
            SHA1:
         
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 9298c7723ec78226f314dc726eba72b89a2aecbb
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 7c34d1dfeafb9eebb3cc4543fc131bc240ae251b
         
     | 
| 
      
 5 
     | 
    
         
            +
            SHA512:
         
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 07c97eb6629972c30f1e001cfce9ae92e720dc96c34d4f688e560276ab61adda14c6795e5585a552e07b24581d72144522f8f2db1744545295174301553c8c24
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: e6d8ff0575e44d17959b9ee81d7b9c908f0cfaf3e3e83bd857f2d1b2004040dd5a23f8d04c96a644e6c6075dd61baad3700c3280694c8e8b173f88840c2d3c8e
         
     | 
    
        data/NEWS
    CHANGED
    
    | 
         @@ -1,3 +1,13 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            2013-12-09 0.5.0
         
     | 
| 
      
 2 
     | 
    
         
            +
              * Updated Network class, implementing almost all libvirt APIs
         
     | 
| 
      
 3 
     | 
    
         
            +
              * Updated Domain class, implementing almost all libvirt APIs
         
     | 
| 
      
 4 
     | 
    
         
            +
              * Updated Connection class, implementing almost all libvirt APIs
         
     | 
| 
      
 5 
     | 
    
         
            +
              * Updated DomainSnapshot class, implementing almost all libvirt APIs
         
     | 
| 
      
 6 
     | 
    
         
            +
              * Updated NodeDevice class, implementing almost all libvirt APIs
         
     | 
| 
      
 7 
     | 
    
         
            +
              * Updated Storage class, implementing almost all libvirt APIs
         
     | 
| 
      
 8 
     | 
    
         
            +
              * Add constants for almost all libvirt defines
         
     | 
| 
      
 9 
     | 
    
         
            +
              * Improved performance in the library by using alloca
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
       1 
11 
     | 
    
         
             
            2011-07-27 0.4.0
         
     | 
| 
       2 
12 
     | 
    
         
             
              * Updated Domain class, implementing dom.memory_parameters=,
         
     | 
| 
       3 
13 
     | 
    
         
             
                dom.memory_parameters, dom.updated?, dom.migrate2, dom.migrate_to_uri2,
         
     | 
    
        data/README
    CHANGED
    
    | 
         @@ -27,26 +27,193 @@ toplevel of your source checkout): 
     | 
|
| 
       27 
27 
     | 
    
         | 
| 
       28 
28 
     | 
    
         
             
            Notes
         
     | 
| 
       29 
29 
     | 
    
         
             
            -----
         
     | 
| 
       30 
     | 
    
         
            -
            As of  
     | 
| 
       31 
     | 
    
         
            -
            APIs up to libvirt commit hash  
     | 
| 
      
 30 
     | 
    
         
            +
            As of October 26, 2013, the ruby-libvirt bindings support all of the libvirt
         
     | 
| 
      
 31 
     | 
    
         
            +
            APIs up to libvirt commit hash b695aeebd52bcbd0d260893bddd5bfe1e486e980
         
     | 
| 
       32 
32 
     | 
    
         
             
            with the following exceptions:
         
     | 
| 
       33 
33 
     | 
    
         | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
      
 34 
     | 
    
         
            +
            VIR_DOMAIN_LAST
         
     | 
| 
      
 35 
     | 
    
         
            +
            VIR_DOMAIN_NOSTATE_LAST
         
     | 
| 
      
 36 
     | 
    
         
            +
            VIR_DOMAIN_RUNNING_LAST
         
     | 
| 
      
 37 
     | 
    
         
            +
            VIR_DOMAIN_BLOCKED_LAST
         
     | 
| 
      
 38 
     | 
    
         
            +
            VIR_DOMAIN_PAUSED_LAST
         
     | 
| 
      
 39 
     | 
    
         
            +
            VIR_DOMAIN_SHUTDOWN_LAST
         
     | 
| 
      
 40 
     | 
    
         
            +
            VIR_DOMAIN_SHUTOFF_LAST
         
     | 
| 
      
 41 
     | 
    
         
            +
            VIR_DOMAIN_CRASHED_LAST
         
     | 
| 
      
 42 
     | 
    
         
            +
            VIR_DOMAIN_PMSUSPENDED_LAST
         
     | 
| 
      
 43 
     | 
    
         
            +
            VIR_DOMAIN_PMSUSPENDED_DISK_LAST
         
     | 
| 
      
 44 
     | 
    
         
            +
            VIR_DOMAIN_CONTROL_LAST
         
     | 
| 
      
 45 
     | 
    
         
            +
            VIR_DOMAIN_NONE
         
     | 
| 
      
 46 
     | 
    
         
            +
            VIR_NODE_SUSPEND_TARGET_LAST
         
     | 
| 
      
 47 
     | 
    
         
            +
            VIR_TYPED_PARAM_LAST
         
     | 
| 
      
 48 
     | 
    
         
            +
            VIR_TYPED_PARAM_STRING_OKAY
         
     | 
| 
      
 49 
     | 
    
         
            +
            VIR_DOMAIN_MEMORY_STAT_NR
         
     | 
| 
      
 50 
     | 
    
         
            +
            VIR_DOMAIN_MEMORY_STAT_LAST
         
     | 
| 
      
 51 
     | 
    
         
            +
            VIR_CRED_LAST
         
     | 
| 
      
 52 
     | 
    
         
            +
            VIR_EXPORT_VAR
         
     | 
| 
      
 53 
     | 
    
         
            +
            VIR_CONNECT_CLOSE_REASON_ERROR
         
     | 
| 
      
 54 
     | 
    
         
            +
            VIR_CONNECT_CLOSE_REASON_EOF
         
     | 
| 
      
 55 
     | 
    
         
            +
            VIR_CONNECT_CLOSE_REASON_KEEPALIVE
         
     | 
| 
      
 56 
     | 
    
         
            +
            VIR_CONNECT_CLOSE_REASON_CLIENT
         
     | 
| 
      
 57 
     | 
    
         
            +
            VIR_CONNECT_CLOSE_REASON_LAST
         
     | 
| 
      
 58 
     | 
    
         
            +
            VIR_DOMAIN_NUMATUNE_MEM_STRICT
         
     | 
| 
      
 59 
     | 
    
         
            +
            VIR_DOMAIN_NUMATUNE_MEM_PREFERRED
         
     | 
| 
      
 60 
     | 
    
         
            +
            VIR_DOMAIN_NUMATUNE_MEM_INTERLEAVE
         
     | 
| 
      
 61 
     | 
    
         
            +
            VIR_DOMAIN_NUMATUNE_MEM_LAST
         
     | 
| 
      
 62 
     | 
    
         
            +
            VIR_DOMAIN_METADATA_LAST
         
     | 
| 
      
 63 
     | 
    
         
            +
            VIR_VCPU_LAST
         
     | 
| 
      
 64 
     | 
    
         
            +
            VIR_DOMAIN_BLOCK_JOB_TYPE_LAST
         
     | 
| 
      
 65 
     | 
    
         
            +
            VIR_DOMAIN_DISK_ERROR_LAST
         
     | 
| 
      
 66 
     | 
    
         
            +
            VIR_NETWORK_UPDATE_COMMAND_LAST
         
     | 
| 
      
 67 
     | 
    
         
            +
            VIR_NETWORK_SECTION_LAST
         
     | 
| 
      
 68 
     | 
    
         
            +
            VIR_STORAGE_POOL_STATE_LAST
         
     | 
| 
      
 69 
     | 
    
         
            +
            VIR_STORAGE_VOL_LAST
         
     | 
| 
      
 70 
     | 
    
         
            +
            VIR_STORAGE_VOL_WIPE_ALG_LAST
         
     | 
| 
      
 71 
     | 
    
         
            +
            VIR_KEYCODE_SET_LAST
         
     | 
| 
      
 72 
     | 
    
         
            +
            VIR_DOMAIN_PROCESS_SIGNAL_LAST
         
     | 
| 
      
 73 
     | 
    
         
            +
            VIR_DOMAIN_EVENT_LAST
         
     | 
| 
      
 74 
     | 
    
         
            +
            VIR_DOMAIN_EVENT_DEFINED_LAST
         
     | 
| 
      
 75 
     | 
    
         
            +
            VIR_DOMAIN_EVENT_UNDEFINED_LAST
         
     | 
| 
      
 76 
     | 
    
         
            +
            VIR_DOMAIN_EVENT_STARTED_LAST
         
     | 
| 
      
 77 
     | 
    
         
            +
            VIR_DOMAIN_EVENT_SUSPENDED_LAST
         
     | 
| 
      
 78 
     | 
    
         
            +
            VIR_DOMAIN_EVENT_RESUMED_LAST
         
     | 
| 
      
 79 
     | 
    
         
            +
            VIR_DOMAIN_EVENT_STOPPED_LAST
         
     | 
| 
      
 80 
     | 
    
         
            +
            VIR_DOMAIN_EVENT_SHUTDOWN_LAST
         
     | 
| 
      
 81 
     | 
    
         
            +
            VIR_DOMAIN_EVENT_PMSUSPENDED_LAST
         
     | 
| 
      
 82 
     | 
    
         
            +
            VIR_DOMAIN_EVENT_CRASHED_LAST
         
     | 
| 
      
 83 
     | 
    
         
            +
            VIR_SECRET_USAGE_TYPE_LAST
         
     | 
| 
      
 84 
     | 
    
         
            +
            VIR_CPU_COMPARE_LAST
         
     | 
| 
      
 85 
     | 
    
         
            +
            VIR_DOMAIN_JOB_LAST
         
     | 
| 
      
 86 
     | 
    
         
            +
            VIR_DOMAIN_EVENT_WATCHDOG_LAST
         
     | 
| 
      
 87 
     | 
    
         
            +
            VIR_DOMAIN_EVENT_IO_ERROR_LAST
         
     | 
| 
      
 88 
     | 
    
         
            +
            VIR_DOMAIN_EVENT_GRAPHICS_LAST
         
     | 
| 
      
 89 
     | 
    
         
            +
            VIR_DOMAIN_EVENT_GRAPHICS_ADDRESS_LAST
         
     | 
| 
      
 90 
     | 
    
         
            +
            VIR_DOMAIN_BLOCK_JOB_LAST
         
     | 
| 
      
 91 
     | 
    
         
            +
            VIR_DOMAIN_EVENT_DISK_CHANGE_MISSING_ON_START
         
     | 
| 
      
 92 
     | 
    
         
            +
            VIR_DOMAIN_EVENT_DISK_DROP_MISSING_ON_START
         
     | 
| 
      
 93 
     | 
    
         
            +
            VIR_DOMAIN_EVENT_DISK_CHANGE_LAST
         
     | 
| 
      
 94 
     | 
    
         
            +
            VIR_DOMAIN_EVENT_TRAY_CHANGE_OPEN
         
     | 
| 
      
 95 
     | 
    
         
            +
            VIR_DOMAIN_EVENT_TRAY_CHANGE_CLOSE
         
     | 
| 
      
 96 
     | 
    
         
            +
            VIR_DOMAIN_EVENT_TRAY_CHANGE_LAST
         
     | 
| 
      
 97 
     | 
    
         
            +
            VIR_DOMAIN_EVENT_ID_BLOCK_JOB
         
     | 
| 
      
 98 
     | 
    
         
            +
            VIR_DOMAIN_EVENT_ID_DISK_CHANGE
         
     | 
| 
      
 99 
     | 
    
         
            +
            VIR_DOMAIN_EVENT_ID_TRAY_CHANGE
         
     | 
| 
      
 100 
     | 
    
         
            +
            VIR_DOMAIN_EVENT_ID_PMWAKEUP
         
     | 
| 
      
 101 
     | 
    
         
            +
            VIR_DOMAIN_EVENT_ID_PMSUSPEND
         
     | 
| 
      
 102 
     | 
    
         
            +
            VIR_DOMAIN_EVENT_ID_BALLOON_CHANGE
         
     | 
| 
      
 103 
     | 
    
         
            +
            VIR_DOMAIN_EVENT_ID_PMSUSPEND_DISK
         
     | 
| 
      
 104 
     | 
    
         
            +
            VIR_DOMAIN_EVENT_ID_DEVICE_REMOVED
         
     | 
| 
      
 105 
     | 
    
         
            +
            VIR_DOMAIN_EVENT_ID_LAST
         
     | 
| 
      
 106 
     | 
    
         
            +
            VIR_DOMAIN_BLKIO_PARAM_INT
         
     | 
| 
      
 107 
     | 
    
         
            +
            VIR_DOMAIN_BLKIO_PARAM_UINT
         
     | 
| 
      
 108 
     | 
    
         
            +
            VIR_DOMAIN_BLKIO_PARAM_LLONG
         
     | 
| 
      
 109 
     | 
    
         
            +
            VIR_DOMAIN_BLKIO_PARAM_ULLONG
         
     | 
| 
      
 110 
     | 
    
         
            +
            VIR_DOMAIN_BLKIO_PARAM_DOUBLE
         
     | 
| 
      
 111 
     | 
    
         
            +
            VIR_DOMAIN_BLKIO_PARAM_BOOLEAN
         
     | 
| 
      
 112 
     | 
    
         
            +
            VIR_DOMAIN_MEMORY_PARAM_INT
         
     | 
| 
      
 113 
     | 
    
         
            +
            VIR_DOMAIN_MEMORY_PARAM_UINT
         
     | 
| 
      
 114 
     | 
    
         
            +
            VIR_DOMAIN_MEMORY_PARAM_LLONG
         
     | 
| 
      
 115 
     | 
    
         
            +
            VIR_DOMAIN_MEMORY_PARAM_ULLONG
         
     | 
| 
      
 116 
     | 
    
         
            +
            VIR_DOMAIN_MEMORY_PARAM_DOUBLE
         
     | 
| 
      
 117 
     | 
    
         
            +
            VIR_DOMAIN_MEMORY_PARAM_BOOLEAN
         
     | 
| 
      
 118 
     | 
    
         
            +
            VIR_DEPRECATED
         
     | 
| 
      
 119 
     | 
    
         
            +
            VIR_DEPRECATED
         
     | 
| 
      
 120 
     | 
    
         
            +
            VIR_EXPORT_VAR
         
     | 
| 
      
 121 
     | 
    
         
            +
            VIR_EXPORT_VAR
         
     | 
| 
      
 122 
     | 
    
         
            +
            VIR_EXPORT_VAR
         
     | 
| 
      
 123 
     | 
    
         
            +
            VIR_EXPORT_VAR
         
     | 
| 
      
 124 
     | 
    
         
            +
            VIR_SECURITY_LABEL_BUFLEN
         
     | 
| 
      
 125 
     | 
    
         
            +
            VIR_SECURITY_MODEL_BUFLEN
         
     | 
| 
      
 126 
     | 
    
         
            +
            VIR_SECURITY_DOI_BUFLEN
         
     | 
| 
      
 127 
     | 
    
         
            +
            VIR_NODE_CPU_STATS_FIELD_LENGTH
         
     | 
| 
      
 128 
     | 
    
         
            +
            VIR_NODE_CPU_STATS_KERNEL
         
     | 
| 
      
 129 
     | 
    
         
            +
            VIR_NODE_CPU_STATS_USER
         
     | 
| 
      
 130 
     | 
    
         
            +
            VIR_NODE_CPU_STATS_IDLE
         
     | 
| 
      
 131 
     | 
    
         
            +
            VIR_NODE_CPU_STATS_IOWAIT
         
     | 
| 
      
 132 
     | 
    
         
            +
            VIR_NODE_CPU_STATS_UTILIZATION
         
     | 
| 
      
 133 
     | 
    
         
            +
            VIR_NODE_MEMORY_STATS_FIELD_LENGTH
         
     | 
| 
      
 134 
     | 
    
         
            +
            VIR_NODE_MEMORY_STATS_TOTAL
         
     | 
| 
      
 135 
     | 
    
         
            +
            VIR_NODE_MEMORY_STATS_FREE
         
     | 
| 
      
 136 
     | 
    
         
            +
            VIR_NODE_MEMORY_STATS_BUFFERS
         
     | 
| 
      
 137 
     | 
    
         
            +
            VIR_NODE_MEMORY_STATS_CACHED
         
     | 
| 
      
 138 
     | 
    
         
            +
            VIR_DOMAIN_BLOCK_STATS_FIELD_LENGTH
         
     | 
| 
      
 139 
     | 
    
         
            +
            VIR_DOMAIN_BLOCK_STATS_READ_BYTES
         
     | 
| 
      
 140 
     | 
    
         
            +
            VIR_DOMAIN_BLOCK_STATS_READ_REQ
         
     | 
| 
      
 141 
     | 
    
         
            +
            VIR_DOMAIN_BLOCK_STATS_READ_TOTAL_TIMES
         
     | 
| 
      
 142 
     | 
    
         
            +
            VIR_DOMAIN_BLOCK_STATS_WRITE_BYTES
         
     | 
| 
      
 143 
     | 
    
         
            +
            VIR_DOMAIN_BLOCK_STATS_WRITE_REQ
         
     | 
| 
      
 144 
     | 
    
         
            +
            VIR_DOMAIN_BLOCK_STATS_WRITE_TOTAL_TIMES
         
     | 
| 
      
 145 
     | 
    
         
            +
            VIR_DOMAIN_BLOCK_STATS_FLUSH_REQ
         
     | 
| 
      
 146 
     | 
    
         
            +
            VIR_DOMAIN_BLOCK_STATS_FLUSH_TOTAL_TIMES
         
     | 
| 
      
 147 
     | 
    
         
            +
            VIR_DOMAIN_BLOCK_STATS_ERRS
         
     | 
| 
      
 148 
     | 
    
         
            +
            VIR_UUID_BUFLEN
         
     | 
| 
      
 149 
     | 
    
         
            +
            LIBVIR_VERSION_NUMBER
         
     | 
| 
      
 150 
     | 
    
         
            +
            VIR_DOMAIN_CPU_STATS_CPUTIME
         
     | 
| 
      
 151 
     | 
    
         
            +
            VIR_DOMAIN_CPU_STATS_USERTIME
         
     | 
| 
      
 152 
     | 
    
         
            +
            VIR_DOMAIN_CPU_STATS_SYSTEMTIME
         
     | 
| 
      
 153 
     | 
    
         
            +
            VIR_DOMAIN_CPU_STATS_VCPUTIME
         
     | 
| 
      
 154 
     | 
    
         
            +
            VIR_UNUSE_CPU
         
     | 
| 
      
 155 
     | 
    
         
            +
            VIR_COPY_CPUMAP
         
     | 
| 
      
 156 
     | 
    
         
            +
            VIR_GET_CPUMAP
         
     | 
| 
      
 157 
     | 
    
         
            +
            VIR_DOMAIN_SEND_KEY_MAX_KEYS
         
     | 
| 
      
 158 
     | 
    
         
            +
            VIR_DOMAIN_JOB_TIME_ELAPSED
         
     | 
| 
      
 159 
     | 
    
         
            +
            VIR_DOMAIN_JOB_TIME_REMAINING
         
     | 
| 
      
 160 
     | 
    
         
            +
            VIR_DOMAIN_JOB_DOWNTIME
         
     | 
| 
      
 161 
     | 
    
         
            +
            VIR_DOMAIN_JOB_DATA_TOTAL
         
     | 
| 
      
 162 
     | 
    
         
            +
            VIR_DOMAIN_JOB_DATA_PROCESSED
         
     | 
| 
      
 163 
     | 
    
         
            +
            VIR_DOMAIN_JOB_DATA_REMAINING
         
     | 
| 
      
 164 
     | 
    
         
            +
            VIR_DOMAIN_JOB_MEMORY_TOTAL
         
     | 
| 
      
 165 
     | 
    
         
            +
            VIR_DOMAIN_JOB_MEMORY_PROCESSED
         
     | 
| 
      
 166 
     | 
    
         
            +
            VIR_DOMAIN_JOB_MEMORY_REMAINING
         
     | 
| 
      
 167 
     | 
    
         
            +
            VIR_DOMAIN_JOB_MEMORY_CONSTANT
         
     | 
| 
      
 168 
     | 
    
         
            +
            VIR_DOMAIN_JOB_MEMORY_NORMAL
         
     | 
| 
      
 169 
     | 
    
         
            +
            VIR_DOMAIN_JOB_MEMORY_NORMAL_BYTES
         
     | 
| 
      
 170 
     | 
    
         
            +
            VIR_DOMAIN_JOB_DISK_TOTAL
         
     | 
| 
      
 171 
     | 
    
         
            +
            VIR_DOMAIN_JOB_DISK_PROCESSED
         
     | 
| 
      
 172 
     | 
    
         
            +
            VIR_DOMAIN_JOB_DISK_REMAINING
         
     | 
| 
      
 173 
     | 
    
         
            +
            VIR_DOMAIN_JOB_COMPRESSION_CACHE
         
     | 
| 
      
 174 
     | 
    
         
            +
            VIR_DOMAIN_JOB_COMPRESSION_BYTES
         
     | 
| 
      
 175 
     | 
    
         
            +
            VIR_DOMAIN_JOB_COMPRESSION_PAGES
         
     | 
| 
      
 176 
     | 
    
         
            +
            VIR_DOMAIN_JOB_COMPRESSION_CACHE_MISSES
         
     | 
| 
      
 177 
     | 
    
         
            +
            VIR_DOMAIN_JOB_COMPRESSION_OVERFLOW
         
     | 
| 
      
 178 
     | 
    
         
            +
            VIR_DOMAIN_SCHED_FIELD_LENGTH
         
     | 
| 
      
 179 
     | 
    
         
            +
            VIR_DOMAIN_BLKIO_FIELD_LENGTH
         
     | 
| 
      
 180 
     | 
    
         
            +
            VIR_DOMAIN_MEMORY_FIELD_LENGTH
         
     | 
| 
      
 181 
     | 
    
         
            +
            virTypedParamsGet
         
     | 
| 
      
 182 
     | 
    
         
            +
            virTypedParamsGetInt
         
     | 
| 
      
 183 
     | 
    
         
            +
            virTypedParamsGetUInt
         
     | 
| 
      
 184 
     | 
    
         
            +
            virTypedParamsGetLLong
         
     | 
| 
      
 185 
     | 
    
         
            +
            virTypedParamsGetULLong
         
     | 
| 
      
 186 
     | 
    
         
            +
            virTypedParamsGetDouble
         
     | 
| 
      
 187 
     | 
    
         
            +
            virTypedParamsGetBoolean
         
     | 
| 
      
 188 
     | 
    
         
            +
            virTypedParamsGetString
         
     | 
| 
      
 189 
     | 
    
         
            +
            virTypedParamsAddInt
         
     | 
| 
      
 190 
     | 
    
         
            +
            virTypedParamsAddUInt
         
     | 
| 
      
 191 
     | 
    
         
            +
            virTypedParamsAddLLong
         
     | 
| 
      
 192 
     | 
    
         
            +
            virTypedParamsAddULLong
         
     | 
| 
      
 193 
     | 
    
         
            +
            virTypedParamsAddDouble
         
     | 
| 
      
 194 
     | 
    
         
            +
            virTypedParamsAddBoolean
         
     | 
| 
      
 195 
     | 
    
         
            +
            virTypedParamsAddString
         
     | 
| 
      
 196 
     | 
    
         
            +
            virTypedParamsAddFromString
         
     | 
| 
      
 197 
     | 
    
         
            +
            virTypedParamsClear
         
     | 
| 
      
 198 
     | 
    
         
            +
            virConnectRef
         
     | 
| 
      
 199 
     | 
    
         
            +
            virConnectRegisterCloseCallback
         
     | 
| 
      
 200 
     | 
    
         
            +
            virConnectUnregisterCloseCallback
         
     | 
| 
      
 201 
     | 
    
         
            +
            virDomainGetConnect
         
     | 
| 
      
 202 
     | 
    
         
            +
            virDomainRef
         
     | 
| 
      
 203 
     | 
    
         
            +
            virDomainRestoreFlags
         
     | 
| 
      
 204 
     | 
    
         
            +
            virNetworkGetConnect
         
     | 
| 
      
 205 
     | 
    
         
            +
            virNetworkRef
         
     | 
| 
      
 206 
     | 
    
         
            +
            virInterfaceGetConnect
         
     | 
| 
      
 207 
     | 
    
         
            +
            virInterfaceRef
         
     | 
| 
      
 208 
     | 
    
         
            +
            virStoragePoolGetConnect
         
     | 
| 
      
 209 
     | 
    
         
            +
            virStorageVolGetConnect
         
     | 
| 
      
 210 
     | 
    
         
            +
            virStorageVolRef
         
     | 
| 
      
 211 
     | 
    
         
            +
            virNodeDeviceRef
         
     | 
| 
      
 212 
     | 
    
         
            +
            virSecretGetConnect
         
     | 
| 
      
 213 
     | 
    
         
            +
            virSecretRef
         
     | 
| 
      
 214 
     | 
    
         
            +
            virStreamRef
         
     | 
| 
      
 215 
     | 
    
         
            +
            virDomainSnapshotGetDomain
         
     | 
| 
      
 216 
     | 
    
         
            +
            virDomainSnapshotGetConnect
         
     | 
| 
      
 217 
     | 
    
         
            +
            virDomainSnapshotRef
         
     | 
| 
      
 218 
     | 
    
         
            +
            virNWFilterRef
         
     | 
| 
      
 219 
     | 
    
         
            +
            VIR_DOMAIN_QEMU_AGENT_COMMAND_MIN
         
     | 
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -2,6 +2,7 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
            # Rakefile: build ruby libvirt bindings
         
     | 
| 
       3 
3 
     | 
    
         
             
            #
         
     | 
| 
       4 
4 
     | 
    
         
             
            # Copyright (C) 2007,2010 Red Hat, Inc.
         
     | 
| 
      
 5 
     | 
    
         
            +
            # Copyright (C) 2013 Chris Lalancette <clalancette@gmail.com>
         
     | 
| 
       5 
6 
     | 
    
         
             
            #
         
     | 
| 
       6 
7 
     | 
    
         
             
            # Distributed under the GNU Lesser General Public License v2.1 or later.
         
     | 
| 
       7 
8 
     | 
    
         
             
            # See COPYING for details
         
     | 
| 
         @@ -10,13 +11,13 @@ 
     | 
|
| 
       10 
11 
     | 
    
         | 
| 
       11 
12 
     | 
    
         
             
            # Rakefile for ruby-rpm -*- ruby -*-
         
     | 
| 
       12 
13 
     | 
    
         
             
            require 'rake/clean'
         
     | 
| 
       13 
     | 
    
         
            -
            require ' 
     | 
| 
      
 14 
     | 
    
         
            +
            require 'rdoc/task'
         
     | 
| 
       14 
15 
     | 
    
         
             
            require 'rake/testtask'
         
     | 
| 
       15 
     | 
    
         
            -
            require ' 
     | 
| 
      
 16 
     | 
    
         
            +
            require 'rubygems/package_task'
         
     | 
| 
       16 
17 
     | 
    
         
             
            require 'rbconfig'
         
     | 
| 
       17 
18 
     | 
    
         | 
| 
       18 
19 
     | 
    
         
             
            PKG_NAME='ruby-libvirt'
         
     | 
| 
       19 
     | 
    
         
            -
            PKG_VERSION='0. 
     | 
| 
      
 20 
     | 
    
         
            +
            PKG_VERSION='0.5.0'
         
     | 
| 
       20 
21 
     | 
    
         | 
| 
       21 
22 
     | 
    
         
             
            EXT_CONF='ext/libvirt/extconf.rb'
         
     | 
| 
       22 
23 
     | 
    
         
             
            MAKEFILE="ext/libvirt/Makefile"
         
     | 
| 
         @@ -29,12 +30,14 @@ LIBVIRT_SRC << MAKEFILE 
     | 
|
| 
       29 
30 
     | 
    
         
             
            # Additional files for clean/clobber
         
     | 
| 
       30 
31 
     | 
    
         
             
            #
         
     | 
| 
       31 
32 
     | 
    
         | 
| 
       32 
     | 
    
         
            -
            CLEAN.include [ "ext/**/*.o", LIBVIRT_MODULE,
         
     | 
| 
       33 
     | 
    
         
            -
                            "ext 
     | 
| 
      
 33 
     | 
    
         
            +
            CLEAN.include [ "ext/**/*.o", LIBVIRT_MODULE, "ext/**/depend", "ext/**/*.gcda",
         
     | 
| 
      
 34 
     | 
    
         
            +
                            "ext/**/*.gcno", "ext/**/*.gcov" ]
         
     | 
| 
       34 
35 
     | 
    
         | 
| 
       35 
36 
     | 
    
         
             
            CLOBBER.include [ "config.save", "ext/**/mkmf.log", "ext/**/extconf.h",
         
     | 
| 
       36 
37 
     | 
    
         
             
                              MAKEFILE ]
         
     | 
| 
       37 
38 
     | 
    
         | 
| 
      
 39 
     | 
    
         
            +
            task :default => :build
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
       38 
41 
     | 
    
         
             
            #
         
     | 
| 
       39 
42 
     | 
    
         
             
            # Build locally
         
     | 
| 
       40 
43 
     | 
    
         
             
            #
         
     | 
| 
         @@ -72,7 +75,7 @@ Rake::TestTask.new(:test) do |t| 
     | 
|
| 
       72 
75 
     | 
    
         
             
                                 'tests/test_interface.rb', 'tests/test_network.rb',
         
     | 
| 
       73 
76 
     | 
    
         
             
                                 'tests/test_nodedevice.rb', 'tests/test_nwfilter.rb',
         
     | 
| 
       74 
77 
     | 
    
         
             
                                 'tests/test_open.rb', 'tests/test_secret.rb',
         
     | 
| 
       75 
     | 
    
         
            -
                                 'tests/test_storage.rb' ]
         
     | 
| 
      
 78 
     | 
    
         
            +
                                 'tests/test_storage.rb', 'tests/test_stream.rb' ]
         
     | 
| 
       76 
79 
     | 
    
         
             
                t.libs = [ 'lib', 'ext/libvirt' ]
         
     | 
| 
       77 
80 
     | 
    
         
             
            end
         
     | 
| 
       78 
81 
     | 
    
         
             
            task :test => :build
         
     | 
| 
         @@ -139,9 +142,10 @@ SPEC = Gem::Specification.new do |s| 
     | 
|
| 
       139 
142 
     | 
    
         
             
                s.author = "David Lutterkort, Chris Lalancette"
         
     | 
| 
       140 
143 
     | 
    
         
             
                s.rubyforge_project = "None"
         
     | 
| 
       141 
144 
     | 
    
         
             
                s.description = "Ruby bindings for libvirt."
         
     | 
| 
      
 145 
     | 
    
         
            +
                s.license = "LGPLv2"
         
     | 
| 
       142 
146 
     | 
    
         
             
            end
         
     | 
| 
       143 
147 
     | 
    
         | 
| 
       144 
     | 
    
         
            -
             
     | 
| 
      
 148 
     | 
    
         
            +
            Gem::PackageTask.new(SPEC) do |pkg|
         
     | 
| 
       145 
149 
     | 
    
         
             
                pkg.need_tar = true
         
     | 
| 
       146 
150 
     | 
    
         
             
                pkg.need_zip = true
         
     | 
| 
       147 
151 
     | 
    
         
             
            end
         
     | 
    
        data/ext/libvirt/_libvirt.c
    CHANGED
    
    | 
         @@ -2,6 +2,7 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
             * libvirt.c: Ruby bindings for libvirt
         
     | 
| 
       3 
3 
     | 
    
         
             
             *
         
     | 
| 
       4 
4 
     | 
    
         
             
             * Copyright (C) 2007,2010 Red Hat Inc.
         
     | 
| 
      
 5 
     | 
    
         
            +
             * Copyright (C) 2013 Chris Lalancette <clalancette@gmail.com>
         
     | 
| 
       5 
6 
     | 
    
         
             
             *
         
     | 
| 
       6 
7 
     | 
    
         
             
             * This library is free software; you can redistribute it and/or
         
     | 
| 
       7 
8 
     | 
    
         
             
             * modify it under the terms of the GNU Lesser General Public
         
     | 
| 
         @@ -23,6 +24,9 @@ 
     | 
|
| 
       23 
24 
     | 
    
         
             
            #include <ruby.h>
         
     | 
| 
       24 
25 
     | 
    
         
             
            #include <libvirt/libvirt.h>
         
     | 
| 
       25 
26 
     | 
    
         
             
            #include <libvirt/virterror.h>
         
     | 
| 
      
 27 
     | 
    
         
            +
            #if HAVE_VIRDOMAINLXCENTERSECURITYLABEL
         
     | 
| 
      
 28 
     | 
    
         
            +
            #include <libvirt/libvirt-lxc.h>
         
     | 
| 
      
 29 
     | 
    
         
            +
            #endif
         
     | 
| 
       26 
30 
     | 
    
         
             
            #include "extconf.h"
         
     | 
| 
       27 
31 
     | 
    
         
             
            #include "common.h"
         
     | 
| 
       28 
32 
     | 
    
         
             
            #include "storage.h"
         
     | 
| 
         @@ -47,97 +51,94 @@ VALUE e_Error; 
     | 
|
| 
       47 
51 
     | 
    
         
             
            VALUE e_NoSupportError;
         
     | 
| 
       48 
52 
     | 
    
         | 
| 
       49 
53 
     | 
    
         
             
            /* custom error function to suppress libvirt printing to stderr */
         
     | 
| 
       50 
     | 
    
         
            -
            static void rubyLibvirtErrorFunc(void *userdata, virErrorPtr err) 
     | 
| 
      
 54 
     | 
    
         
            +
            static void rubyLibvirtErrorFunc(void *userdata, virErrorPtr err)
         
     | 
| 
      
 55 
     | 
    
         
            +
            {
         
     | 
| 
       51 
56 
     | 
    
         
             
            }
         
     | 
| 
       52 
57 
     | 
    
         | 
| 
       53 
58 
     | 
    
         
             
            /*
         
     | 
| 
       54 
59 
     | 
    
         
             
             * call-seq:
         
     | 
| 
       55 
60 
     | 
    
         
             
             *   Libvirt::version(type=nil) -> [ libvirt_version, type_version ]
         
     | 
| 
       56 
61 
     | 
    
         
             
             *
         
     | 
| 
       57 
     | 
    
         
            -
             * Call
         
     | 
| 
       58 
     | 
    
         
            -
             * +virGetVersion+[http://www.libvirt.org/html/libvirt-libvirt.html#virGetVersion]
         
     | 
| 
      
 62 
     | 
    
         
            +
             * Call virGetVersion[http://www.libvirt.org/html/libvirt-libvirt.html#virGetVersion]
         
     | 
| 
       59 
63 
     | 
    
         
             
             * to get the version of libvirt and of the hypervisor TYPE.
         
     | 
| 
       60 
64 
     | 
    
         
             
             */
         
     | 
| 
       61 
     | 
    
         
            -
            static VALUE libvirt_version(int argc, VALUE *argv, VALUE m) 
     | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
       63 
     | 
    
         
            -
                 
     | 
| 
       64 
     | 
    
         
            -
                 
     | 
| 
      
 65 
     | 
    
         
            +
            static VALUE libvirt_version(int argc, VALUE *argv, VALUE m)
         
     | 
| 
      
 66 
     | 
    
         
            +
            {
         
     | 
| 
      
 67 
     | 
    
         
            +
                unsigned long libVer, typeVer;
         
     | 
| 
      
 68 
     | 
    
         
            +
                VALUE type, result, rargv[2];
         
     | 
| 
       65 
69 
     | 
    
         
             
                int r;
         
     | 
| 
       66 
     | 
    
         
            -
                VALUE result, rargv[2];
         
     | 
| 
       67 
70 
     | 
    
         | 
| 
       68 
71 
     | 
    
         
             
                rb_scan_args(argc, argv, "01", &type);
         
     | 
| 
       69 
72 
     | 
    
         | 
| 
       70 
     | 
    
         
            -
                r = virGetVersion(&libVer,  
     | 
| 
       71 
     | 
    
         
            -
             
     | 
| 
      
 73 
     | 
    
         
            +
                r = virGetVersion(&libVer, ruby_libvirt_get_cstring_or_null(type),
         
     | 
| 
      
 74 
     | 
    
         
            +
                                  &typeVer);
         
     | 
| 
      
 75 
     | 
    
         
            +
                ruby_libvirt_raise_error_if(r < 0, rb_eArgError, "virGetVersion", NULL);
         
     | 
| 
       72 
76 
     | 
    
         | 
| 
       73 
77 
     | 
    
         
             
                result = rb_ary_new2(2);
         
     | 
| 
       74 
78 
     | 
    
         
             
                rargv[0] = rb_str_new2("libvirt");
         
     | 
| 
       75 
79 
     | 
    
         
             
                rargv[1] = ULONG2NUM(libVer);
         
     | 
| 
       76 
     | 
    
         
            -
                 
     | 
| 
      
 80 
     | 
    
         
            +
                rb_ary_store(result, 0, rb_class_new_instance(2, rargv, c_libvirt_version));
         
     | 
| 
       77 
81 
     | 
    
         
             
                rargv[0] = type;
         
     | 
| 
       78 
82 
     | 
    
         
             
                rargv[1] = ULONG2NUM(typeVer);
         
     | 
| 
       79 
     | 
    
         
            -
                 
     | 
| 
      
 83 
     | 
    
         
            +
                rb_ary_store(result, 1, rb_class_new_instance(2, rargv, c_libvirt_version));
         
     | 
| 
       80 
84 
     | 
    
         
             
                return result;
         
     | 
| 
       81 
85 
     | 
    
         
             
            }
         
     | 
| 
       82 
86 
     | 
    
         | 
| 
       83 
     | 
    
         
            -
             
     | 
| 
      
 87 
     | 
    
         
            +
            /*
         
     | 
| 
      
 88 
     | 
    
         
            +
             * call-seq:
         
     | 
| 
      
 89 
     | 
    
         
            +
             *   Libvirt::open(uri=nil) -> Libvirt::Connect
         
     | 
| 
      
 90 
     | 
    
         
            +
             *
         
     | 
| 
      
 91 
     | 
    
         
            +
             * Call virConnectOpen[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectOpen]
         
     | 
| 
      
 92 
     | 
    
         
            +
             * to open a connection to a URL.
         
     | 
| 
      
 93 
     | 
    
         
            +
             */
         
     | 
| 
      
 94 
     | 
    
         
            +
            static VALUE libvirt_open(int argc, VALUE *argv, VALUE m)
         
     | 
| 
       84 
95 
     | 
    
         
             
            {
         
     | 
| 
       85 
96 
     | 
    
         
             
                VALUE uri;
         
     | 
| 
       86 
     | 
    
         
            -
                char *uri_c;
         
     | 
| 
       87 
97 
     | 
    
         
             
                virConnectPtr conn;
         
     | 
| 
       88 
98 
     | 
    
         | 
| 
       89 
99 
     | 
    
         
             
                rb_scan_args(argc, argv, "01", &uri);
         
     | 
| 
       90 
100 
     | 
    
         | 
| 
       91 
     | 
    
         
            -
                 
     | 
| 
      
 101 
     | 
    
         
            +
                conn = virConnectOpen(ruby_libvirt_get_cstring_or_null(uri));
         
     | 
| 
      
 102 
     | 
    
         
            +
                ruby_libvirt_raise_error_if(conn == NULL, e_ConnectionError,
         
     | 
| 
      
 103 
     | 
    
         
            +
                                            "virConnectOpen", NULL);
         
     | 
| 
       92 
104 
     | 
    
         | 
| 
       93 
     | 
    
         
            -
                 
     | 
| 
       94 
     | 
    
         
            -
                    conn = virConnectOpenReadOnly(uri_c);
         
     | 
| 
       95 
     | 
    
         
            -
                else
         
     | 
| 
       96 
     | 
    
         
            -
                    conn = virConnectOpen(uri_c);
         
     | 
| 
       97 
     | 
    
         
            -
             
     | 
| 
       98 
     | 
    
         
            -
                _E(conn == NULL, create_error(e_ConnectionError,
         
     | 
| 
       99 
     | 
    
         
            -
                                              readonly ? "virConnectOpenReadOnly" : "virConnectOpen",
         
     | 
| 
       100 
     | 
    
         
            -
                                              NULL));
         
     | 
| 
       101 
     | 
    
         
            -
             
     | 
| 
       102 
     | 
    
         
            -
                return connect_new(conn);
         
     | 
| 
       103 
     | 
    
         
            -
            }
         
     | 
| 
       104 
     | 
    
         
            -
             
     | 
| 
       105 
     | 
    
         
            -
            /*
         
     | 
| 
       106 
     | 
    
         
            -
             * call-seq:
         
     | 
| 
       107 
     | 
    
         
            -
             *   Libvirt::open(uri=nil) -> Libvirt::Connect
         
     | 
| 
       108 
     | 
    
         
            -
             *
         
     | 
| 
       109 
     | 
    
         
            -
             * Call
         
     | 
| 
       110 
     | 
    
         
            -
             * +virConnectOpen+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectOpen]
         
     | 
| 
       111 
     | 
    
         
            -
             * to open a connection to a URL.
         
     | 
| 
       112 
     | 
    
         
            -
             */
         
     | 
| 
       113 
     | 
    
         
            -
            static VALUE libvirt_open(int argc, VALUE *argv, VALUE m) {
         
     | 
| 
       114 
     | 
    
         
            -
                return internal_open(argc, argv, m, 0);
         
     | 
| 
      
 105 
     | 
    
         
            +
                return ruby_libvirt_connect_new(conn);
         
     | 
| 
       115 
106 
     | 
    
         
             
            }
         
     | 
| 
       116 
107 
     | 
    
         | 
| 
       117 
108 
     | 
    
         
             
            /*
         
     | 
| 
       118 
109 
     | 
    
         
             
             * call-seq:
         
     | 
| 
       119 
110 
     | 
    
         
             
             *   Libvirt::open_read_only(uri=nil) -> Libvirt::Connect
         
     | 
| 
       120 
111 
     | 
    
         
             
             *
         
     | 
| 
       121 
     | 
    
         
            -
             * Call
         
     | 
| 
       122 
     | 
    
         
            -
             * +virConnectOpenReadOnly+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectOpenReadOnly]
         
     | 
| 
      
 112 
     | 
    
         
            +
             * Call virConnectOpenReadOnly[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectOpenReadOnly]
         
     | 
| 
       123 
113 
     | 
    
         
             
             * to open a read-only connection to a URL.
         
     | 
| 
       124 
114 
     | 
    
         
             
             */
         
     | 
| 
       125 
     | 
    
         
            -
            static VALUE libvirt_open_read_only(int argc, VALUE *argv, VALUE m) 
     | 
| 
       126 
     | 
    
         
            -
             
     | 
| 
      
 115 
     | 
    
         
            +
            static VALUE libvirt_open_read_only(int argc, VALUE *argv, VALUE m)
         
     | 
| 
      
 116 
     | 
    
         
            +
            {
         
     | 
| 
      
 117 
     | 
    
         
            +
                VALUE uri;
         
     | 
| 
      
 118 
     | 
    
         
            +
                virConnectPtr conn;
         
     | 
| 
      
 119 
     | 
    
         
            +
             
     | 
| 
      
 120 
     | 
    
         
            +
                rb_scan_args(argc, argv, "01", &uri);
         
     | 
| 
      
 121 
     | 
    
         
            +
             
     | 
| 
      
 122 
     | 
    
         
            +
                conn = virConnectOpenReadOnly(ruby_libvirt_get_cstring_or_null(uri));
         
     | 
| 
      
 123 
     | 
    
         
            +
             
     | 
| 
      
 124 
     | 
    
         
            +
                ruby_libvirt_raise_error_if(conn == NULL, e_ConnectionError,
         
     | 
| 
      
 125 
     | 
    
         
            +
                                            "virConnectOpenReadOnly", NULL);
         
     | 
| 
      
 126 
     | 
    
         
            +
             
     | 
| 
      
 127 
     | 
    
         
            +
                return ruby_libvirt_connect_new(conn);
         
     | 
| 
       127 
128 
     | 
    
         
             
            }
         
     | 
| 
       128 
129 
     | 
    
         | 
| 
       129 
130 
     | 
    
         
             
            #if HAVE_VIRCONNECTOPENAUTH
         
     | 
| 
       130 
131 
     | 
    
         
             
            static int libvirt_auth_callback_wrapper(virConnectCredentialPtr cred,
         
     | 
| 
       131 
     | 
    
         
            -
                                                     unsigned int ncred, void *cbdata) 
     | 
| 
       132 
     | 
    
         
            -
             
     | 
| 
       133 
     | 
    
         
            -
                VALUE newcred;
         
     | 
| 
      
 132 
     | 
    
         
            +
                                                     unsigned int ncred, void *cbdata)
         
     | 
| 
      
 133 
     | 
    
         
            +
            {
         
     | 
| 
      
 134 
     | 
    
         
            +
                VALUE userdata, newcred, result;
         
     | 
| 
       134 
135 
     | 
    
         
             
                int i;
         
     | 
| 
       135 
     | 
    
         
            -
                VALUE result;
         
     | 
| 
       136 
136 
     | 
    
         | 
| 
       137 
137 
     | 
    
         
             
                userdata = (VALUE)cbdata;
         
     | 
| 
       138 
138 
     | 
    
         | 
| 
       139 
     | 
    
         
            -
                if (!rb_block_given_p())
         
     | 
| 
      
 139 
     | 
    
         
            +
                if (!rb_block_given_p()) {
         
     | 
| 
       140 
140 
     | 
    
         
             
                    rb_raise(rb_eRuntimeError, "No block given, this should never happen!\n");
         
     | 
| 
      
 141 
     | 
    
         
            +
                }
         
     | 
| 
       141 
142 
     | 
    
         | 
| 
       142 
143 
     | 
    
         
             
                for (i = 0; i < ncred; i++) {
         
     | 
| 
       143 
144 
     | 
    
         
             
                    newcred = rb_hash_new();
         
     | 
| 
         @@ -145,16 +146,20 @@ static int libvirt_auth_callback_wrapper(virConnectCredentialPtr cred, 
     | 
|
| 
       145 
146 
     | 
    
         
             
                    rb_hash_aset(newcred, rb_str_new2("type"), INT2NUM(cred[i].type));
         
     | 
| 
       146 
147 
     | 
    
         
             
                    rb_hash_aset(newcred, rb_str_new2("prompt"),
         
     | 
| 
       147 
148 
     | 
    
         
             
                                 rb_str_new2(cred[i].prompt));
         
     | 
| 
       148 
     | 
    
         
            -
                    if (cred[i].challenge)
         
     | 
| 
      
 149 
     | 
    
         
            +
                    if (cred[i].challenge) {
         
     | 
| 
       149 
150 
     | 
    
         
             
                        rb_hash_aset(newcred, rb_str_new2("challenge"),
         
     | 
| 
       150 
151 
     | 
    
         
             
                                     rb_str_new2(cred[i].challenge));
         
     | 
| 
       151 
     | 
    
         
            -
                     
     | 
| 
      
 152 
     | 
    
         
            +
                    }
         
     | 
| 
      
 153 
     | 
    
         
            +
                    else {
         
     | 
| 
       152 
154 
     | 
    
         
             
                        rb_hash_aset(newcred, rb_str_new2("challenge"), Qnil);
         
     | 
| 
       153 
     | 
    
         
            -
                     
     | 
| 
      
 155 
     | 
    
         
            +
                    }
         
     | 
| 
      
 156 
     | 
    
         
            +
                    if (cred[i].defresult) {
         
     | 
| 
       154 
157 
     | 
    
         
             
                        rb_hash_aset(newcred, rb_str_new2("defresult"),
         
     | 
| 
       155 
158 
     | 
    
         
             
                                     rb_str_new2(cred[i].defresult));
         
     | 
| 
       156 
     | 
    
         
            -
                     
     | 
| 
      
 159 
     | 
    
         
            +
                    }
         
     | 
| 
      
 160 
     | 
    
         
            +
                    else {
         
     | 
| 
       157 
161 
     | 
    
         
             
                        rb_hash_aset(newcred, rb_str_new2("defresult"), Qnil);
         
     | 
| 
      
 162 
     | 
    
         
            +
                    }
         
     | 
| 
       158 
163 
     | 
    
         
             
                    rb_hash_aset(newcred, rb_str_new2("result"), Qnil);
         
     | 
| 
       159 
164 
     | 
    
         
             
                    rb_hash_aset(newcred, rb_str_new2("userdata"), userdata);
         
     | 
| 
       160 
165 
     | 
    
         | 
| 
         @@ -172,29 +177,11 @@ static int libvirt_auth_callback_wrapper(virConnectCredentialPtr cred, 
     | 
|
| 
       172 
177 
     | 
    
         
             
                return 0;
         
     | 
| 
       173 
178 
     | 
    
         
             
            }
         
     | 
| 
       174 
179 
     | 
    
         | 
| 
       175 
     | 
    
         
            -
             
     | 
| 
       176 
     | 
    
         
            -
            struct wrap_callout {
         
     | 
| 
       177 
     | 
    
         
            -
                char *uri;
         
     | 
| 
       178 
     | 
    
         
            -
                virConnectAuthPtr auth;
         
     | 
| 
       179 
     | 
    
         
            -
                unsigned int flags;
         
     | 
| 
       180 
     | 
    
         
            -
            };
         
     | 
| 
       181 
     | 
    
         
            -
             
     | 
| 
       182 
     | 
    
         
            -
            static VALUE rb_open_auth_wrap(VALUE arg) {
         
     | 
| 
       183 
     | 
    
         
            -
                struct wrap_callout *e = (struct wrap_callout *)arg;
         
     | 
| 
       184 
     | 
    
         
            -
             
     | 
| 
       185 
     | 
    
         
            -
                return (VALUE)virConnectOpenAuth(e->uri, e->auth, e->flags);
         
     | 
| 
       186 
     | 
    
         
            -
            }
         
     | 
| 
       187 
     | 
    
         
            -
             
     | 
| 
       188 
     | 
    
         
            -
            static VALUE rb_num2int_wrap(VALUE arg) {
         
     | 
| 
       189 
     | 
    
         
            -
                return NUM2INT(arg);
         
     | 
| 
       190 
     | 
    
         
            -
            }
         
     | 
| 
       191 
     | 
    
         
            -
             
     | 
| 
       192 
180 
     | 
    
         
             
            /*
         
     | 
| 
       193 
181 
     | 
    
         
             
             * call-seq:
         
     | 
| 
       194 
182 
     | 
    
         
             
             *   Libvirt::open_auth(uri=nil, credlist=nil, userdata=nil, flags=0) {|...| authentication block} -> Libvirt::Connect
         
     | 
| 
       195 
183 
     | 
    
         
             
             *
         
     | 
| 
       196 
     | 
    
         
            -
             * Call
         
     | 
| 
       197 
     | 
    
         
            -
             * +virConnectOpenAuth+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectOpenAuth]
         
     | 
| 
      
 184 
     | 
    
         
            +
             * Call virConnectOpenAuth[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectOpenAuth]
         
     | 
| 
       198 
185 
     | 
    
         
             
             * to open a connection to a libvirt URI, with a possible authentication block.
         
     | 
| 
       199 
186 
     | 
    
         
             
             * If an authentication block is desired, then credlist should be an array that
         
     | 
| 
       200 
187 
     | 
    
         
             
             * specifies which credentials the authentication block is willing to support;
         
     | 
| 
         @@ -224,66 +211,35 @@ static VALUE rb_num2int_wrap(VALUE arg) { 
     | 
|
| 
       224 
211 
     | 
    
         
             
             * The authentication block should return the result of collecting the
         
     | 
| 
       225 
212 
     | 
    
         
             
             * information; these results will then be sent to libvirt for authentication.
         
     | 
| 
       226 
213 
     | 
    
         
             
             */
         
     | 
| 
       227 
     | 
    
         
            -
            static VALUE libvirt_open_auth(int argc, VALUE *argv, VALUE m) 
     | 
| 
      
 214 
     | 
    
         
            +
            static VALUE libvirt_open_auth(int argc, VALUE *argv, VALUE m)
         
     | 
| 
      
 215 
     | 
    
         
            +
            {
         
     | 
| 
       228 
216 
     | 
    
         
             
                virConnectAuthPtr auth;
         
     | 
| 
       229 
     | 
    
         
            -
                VALUE uri;
         
     | 
| 
       230 
     | 
    
         
            -
                 
     | 
| 
       231 
     | 
    
         
            -
                VALUE userdata;
         
     | 
| 
       232 
     | 
    
         
            -
                VALUE flags_val;
         
     | 
| 
       233 
     | 
    
         
            -
                char *uri_c;
         
     | 
| 
       234 
     | 
    
         
            -
                virConnectPtr conn = NULL;
         
     | 
| 
       235 
     | 
    
         
            -
                unsigned int flags;
         
     | 
| 
       236 
     | 
    
         
            -
                int auth_alloc;
         
     | 
| 
      
 217 
     | 
    
         
            +
                VALUE uri, credlist, userdata, flags, tmp;
         
     | 
| 
      
 218 
     | 
    
         
            +
                virConnectPtr conn;
         
     | 
| 
       237 
219 
     | 
    
         
             
                int i;
         
     | 
| 
       238 
     | 
    
         
            -
                VALUE tmp;
         
     | 
| 
       239 
     | 
    
         
            -
                int exception = 0;
         
     | 
| 
       240 
     | 
    
         
            -
                struct rb_ary_entry_arg args;
         
     | 
| 
       241 
     | 
    
         
            -
                struct wrap_callout callargs;
         
     | 
| 
       242 
220 
     | 
    
         | 
| 
       243 
     | 
    
         
            -
                rb_scan_args(argc, argv, "04", &uri, &credlist, &userdata, & 
     | 
| 
       244 
     | 
    
         
            -
             
     | 
| 
       245 
     | 
    
         
            -
                /* handle the optional URI */
         
     | 
| 
       246 
     | 
    
         
            -
                uri_c = get_string_or_nil(uri);
         
     | 
| 
       247 
     | 
    
         
            -
             
     | 
| 
       248 
     | 
    
         
            -
                /* handle the optional flags */
         
     | 
| 
       249 
     | 
    
         
            -
                if (NIL_P(flags_val))
         
     | 
| 
       250 
     | 
    
         
            -
                    flags = 0;
         
     | 
| 
       251 
     | 
    
         
            -
                else
         
     | 
| 
       252 
     | 
    
         
            -
                    flags = NUM2UINT(flags_val);
         
     | 
| 
      
 221 
     | 
    
         
            +
                rb_scan_args(argc, argv, "04", &uri, &credlist, &userdata, &flags);
         
     | 
| 
       253 
222 
     | 
    
         | 
| 
       254 
223 
     | 
    
         
             
                if (rb_block_given_p()) {
         
     | 
| 
       255 
     | 
    
         
            -
                    auth =  
     | 
| 
       256 
     | 
    
         
            -
                    auth_alloc = 1;
         
     | 
| 
      
 224 
     | 
    
         
            +
                    auth = alloca(sizeof(virConnectAuth));
         
     | 
| 
       257 
225 
     | 
    
         | 
| 
       258 
     | 
    
         
            -
                    if (TYPE(credlist) == T_NIL)
         
     | 
| 
      
 226 
     | 
    
         
            +
                    if (TYPE(credlist) == T_NIL) {
         
     | 
| 
       259 
227 
     | 
    
         
             
                        auth->ncredtype = 0;
         
     | 
| 
       260 
     | 
    
         
            -
                     
     | 
| 
      
 228 
     | 
    
         
            +
                    }
         
     | 
| 
      
 229 
     | 
    
         
            +
                    else if (TYPE(credlist) == T_ARRAY) {
         
     | 
| 
       261 
230 
     | 
    
         
             
                        auth->ncredtype = RARRAY_LEN(credlist);
         
     | 
| 
       262 
     | 
    
         
            -
                     
     | 
| 
       263 
     | 
    
         
            -
             
     | 
| 
      
 231 
     | 
    
         
            +
                    }
         
     | 
| 
      
 232 
     | 
    
         
            +
                    else {
         
     | 
| 
      
 233 
     | 
    
         
            +
                        rb_raise(rb_eTypeError,
         
     | 
| 
      
 234 
     | 
    
         
            +
                                 "wrong argument type (expected Array or nil)");
         
     | 
| 
      
 235 
     | 
    
         
            +
                    }
         
     | 
| 
       264 
236 
     | 
    
         
             
                    auth->credtype = NULL;
         
     | 
| 
       265 
237 
     | 
    
         
             
                    if (auth->ncredtype > 0) {
         
     | 
| 
       266 
     | 
    
         
            -
                         
     | 
| 
       267 
     | 
    
         
            -
             
     | 
| 
       268 
     | 
    
         
            -
                         * (which has a slightly higher chance of returning NULL), and
         
     | 
| 
       269 
     | 
    
         
            -
                         * then properly cleanup if it fails
         
     | 
| 
       270 
     | 
    
         
            -
                         */
         
     | 
| 
       271 
     | 
    
         
            -
                        auth->credtype = malloc(sizeof(int) * auth->ncredtype);
         
     | 
| 
       272 
     | 
    
         
            -
                        if (auth->credtype == NULL) {
         
     | 
| 
       273 
     | 
    
         
            -
                            xfree(auth);
         
     | 
| 
       274 
     | 
    
         
            -
                            rb_memerror();
         
     | 
| 
       275 
     | 
    
         
            -
                        }
         
     | 
| 
      
 238 
     | 
    
         
            +
                        auth->credtype = alloca(sizeof(int) * auth->ncredtype);
         
     | 
| 
      
 239 
     | 
    
         
            +
             
     | 
| 
       276 
240 
     | 
    
         
             
                        for (i = 0; i < auth->ncredtype; i++) {
         
     | 
| 
       277 
     | 
    
         
            -
                             
     | 
| 
       278 
     | 
    
         
            -
                             
     | 
| 
       279 
     | 
    
         
            -
                            tmp = rb_protect(rb_ary_entry_wrap, (VALUE)&args, &exception);
         
     | 
| 
       280 
     | 
    
         
            -
                            if (exception)
         
     | 
| 
       281 
     | 
    
         
            -
                                goto do_cleanup;
         
     | 
| 
       282 
     | 
    
         
            -
             
     | 
| 
       283 
     | 
    
         
            -
                            auth->credtype[i] = rb_protect(rb_num2int_wrap, tmp,
         
     | 
| 
       284 
     | 
    
         
            -
                                                           &exception);
         
     | 
| 
       285 
     | 
    
         
            -
                            if (exception)
         
     | 
| 
       286 
     | 
    
         
            -
                                goto do_cleanup;
         
     | 
| 
      
 241 
     | 
    
         
            +
                            tmp = rb_ary_entry(credlist, i);
         
     | 
| 
      
 242 
     | 
    
         
            +
                            auth->credtype[i] = NUM2INT(tmp);
         
     | 
| 
       287 
243 
     | 
    
         
             
                        }
         
     | 
| 
       288 
244 
     | 
    
         
             
                    }
         
     | 
| 
       289 
245 
     | 
    
         | 
| 
         @@ -292,29 +248,15 @@ static VALUE libvirt_open_auth(int argc, VALUE *argv, VALUE m) { 
     | 
|
| 
       292 
248 
     | 
    
         
             
                }
         
     | 
| 
       293 
249 
     | 
    
         
             
                else {
         
     | 
| 
       294 
250 
     | 
    
         
             
                    auth = virConnectAuthPtrDefault;
         
     | 
| 
       295 
     | 
    
         
            -
                    auth_alloc = 0;
         
     | 
| 
       296 
     | 
    
         
            -
                }
         
     | 
| 
       297 
     | 
    
         
            -
             
     | 
| 
       298 
     | 
    
         
            -
                callargs.uri = uri_c;
         
     | 
| 
       299 
     | 
    
         
            -
                callargs.auth = auth;
         
     | 
| 
       300 
     | 
    
         
            -
                callargs.flags = flags;
         
     | 
| 
       301 
     | 
    
         
            -
             
     | 
| 
       302 
     | 
    
         
            -
                conn = (virConnectPtr)rb_protect(rb_open_auth_wrap, (VALUE)&callargs,
         
     | 
| 
       303 
     | 
    
         
            -
                                                 &exception);
         
     | 
| 
       304 
     | 
    
         
            -
             
     | 
| 
       305 
     | 
    
         
            -
            do_cleanup:
         
     | 
| 
       306 
     | 
    
         
            -
                if (auth_alloc) {
         
     | 
| 
       307 
     | 
    
         
            -
                    free(auth->credtype);
         
     | 
| 
       308 
     | 
    
         
            -
                    xfree(auth);
         
     | 
| 
       309 
251 
     | 
    
         
             
                }
         
     | 
| 
       310 
252 
     | 
    
         | 
| 
       311 
     | 
    
         
            -
                 
     | 
| 
       312 
     | 
    
         
            -
             
     | 
| 
      
 253 
     | 
    
         
            +
                conn = virConnectOpenAuth(ruby_libvirt_get_cstring_or_null(uri), auth,
         
     | 
| 
      
 254 
     | 
    
         
            +
                                          ruby_libvirt_value_to_uint(flags));
         
     | 
| 
       313 
255 
     | 
    
         | 
| 
       314 
     | 
    
         
            -
                 
     | 
| 
       315 
     | 
    
         
            -
             
     | 
| 
      
 256 
     | 
    
         
            +
                ruby_libvirt_raise_error_if(conn == NULL, e_ConnectionError,
         
     | 
| 
      
 257 
     | 
    
         
            +
                                            "virConnectOpenAuth", NULL);
         
     | 
| 
       316 
258 
     | 
    
         | 
| 
       317 
     | 
    
         
            -
                return  
     | 
| 
      
 259 
     | 
    
         
            +
                return ruby_libvirt_connect_new(conn);
         
     | 
| 
       318 
260 
     | 
    
         
             
            }
         
     | 
| 
       319 
261 
     | 
    
         
             
            #endif
         
     | 
| 
       320 
262 
     | 
    
         | 
| 
         @@ -337,36 +279,23 @@ static VALUE add_timeout, update_timeout, remove_timeout; 
     | 
|
| 
       337 
279 
     | 
    
         
             
             *
         
     | 
| 
       338 
280 
     | 
    
         
             
             * Libvirt::event_invoke_handle_callback takes 4 arguments:
         
     | 
| 
       339 
281 
     | 
    
         
             
             *
         
     | 
| 
       340 
     | 
    
         
            -
             * handle
         
     | 
| 
       341 
     | 
    
         
            -
             * 
     | 
| 
       342 
     | 
    
         
            -
             * 
     | 
| 
       343 
     | 
    
         
            -
             * 
     | 
| 
       344 
     | 
    
         
            -
             * 
     | 
| 
       345 
     | 
    
         
            -
             * 
     | 
| 
       346 
     | 
    
         
            -
             *  
     | 
| 
       347 
     | 
    
         
            -
             *          the events that have occured on the fd.  Note that the events are
         
     | 
| 
       348 
     | 
    
         
            -
             *          libvirt specific, and are some combination of
         
     | 
| 
       349 
     | 
    
         
            -
             *          Libvirt::EVENT_HANDLE_READABLE, Libvirt::EVENT_HANDLE_WRITABLE,
         
     | 
| 
       350 
     | 
    
         
            -
             *          Libvirt::EVENT_HANDLE_ERROR, Libvirt::EVENT_HANDLE_HANGUP.  To
         
     | 
| 
       351 
     | 
    
         
            -
             *          notify libvirt of more than one event at a time, these values should
         
     | 
| 
       352 
     | 
    
         
            -
             *          be logically OR'ed together.
         
     | 
| 
       353 
     | 
    
         
            -
             * opaque
         
     | 
| 
       354 
     | 
    
         
            -
             *          the opaque data passed from libvirt during the
         
     | 
| 
       355 
     | 
    
         
            -
             *          Libvirt::event_register_impl add_handle callback.  To ensure proper
         
     | 
| 
       356 
     | 
    
         
            -
             *          operation this data must be passed through to
         
     | 
| 
       357 
     | 
    
         
            -
             *          event_invoke_handle_callback without modification.
         
     | 
| 
      
 282 
     | 
    
         
            +
             * handle - an application specific handle ID.  This can be any integer, but must be unique from all other libvirt handles in the application.
         
     | 
| 
      
 283 
     | 
    
         
            +
             *
         
     | 
| 
      
 284 
     | 
    
         
            +
             * fd - the file descriptor of interest.  This was given to the application as a callback to add_handle of Libvirt::event_register_impl
         
     | 
| 
      
 285 
     | 
    
         
            +
             *
         
     | 
| 
      
 286 
     | 
    
         
            +
             * events - the events that have occured on the fd.  Note that the events are libvirt specific, and are some combination of Libvirt::EVENT_HANDLE_READABLE, Libvirt::EVENT_HANDLE_WRITABLE, Libvirt::EVENT_HANDLE_ERROR, Libvirt::EVENT_HANDLE_HANGUP.  To notify libvirt of more than one event at a time, these values should be logically OR'ed together.
         
     | 
| 
      
 287 
     | 
    
         
            +
             *
         
     | 
| 
      
 288 
     | 
    
         
            +
             * opaque - the opaque data passed from libvirt during the Libvirt::event_register_impl add_handle callback.  To ensure proper operation this data must be passed through to event_invoke_handle_callback without modification.
         
     | 
| 
       358 
289 
     | 
    
         
             
             */
         
     | 
| 
       359 
290 
     | 
    
         
             
            static VALUE libvirt_event_invoke_handle_callback(VALUE m, VALUE handle,
         
     | 
| 
       360 
291 
     | 
    
         
             
                                                              VALUE fd, VALUE events,
         
     | 
| 
       361 
     | 
    
         
            -
                                                              VALUE opaque) 
     | 
| 
      
 292 
     | 
    
         
            +
                                                              VALUE opaque)
         
     | 
| 
      
 293 
     | 
    
         
            +
            {
         
     | 
| 
       362 
294 
     | 
    
         
             
                virEventHandleCallback cb;
         
     | 
| 
       363 
295 
     | 
    
         
             
                void *op;
         
     | 
| 
       364 
     | 
    
         
            -
                VALUE libvirt_cb;
         
     | 
| 
       365 
     | 
    
         
            -
                VALUE libvirt_opaque;
         
     | 
| 
      
 296 
     | 
    
         
            +
                VALUE libvirt_cb, libvirt_opaque;
         
     | 
| 
       366 
297 
     | 
    
         | 
| 
       367 
     | 
    
         
            -
                 
     | 
| 
       368 
     | 
    
         
            -
                    rb_raise(rb_eTypeError,
         
     | 
| 
       369 
     | 
    
         
            -
                             "wrong event callback argument type (expected Hash)");
         
     | 
| 
      
 298 
     | 
    
         
            +
                Check_Type(opaque, T_HASH);
         
     | 
| 
       370 
299 
     | 
    
         | 
| 
       371 
300 
     | 
    
         
             
                libvirt_cb = rb_hash_aref(opaque, rb_str_new2("libvirt_cb"));
         
     | 
| 
       372 
301 
     | 
    
         | 
| 
         @@ -399,25 +328,18 @@ static VALUE libvirt_event_invoke_handle_callback(VALUE m, VALUE handle, 
     | 
|
| 
       399 
328 
     | 
    
         
             
             *
         
     | 
| 
       400 
329 
     | 
    
         
             
             * Libvirt::event_invoke_timeout_callback takes 2 arguments:
         
     | 
| 
       401 
330 
     | 
    
         
             
             *
         
     | 
| 
       402 
     | 
    
         
            -
             * handle
         
     | 
| 
       403 
     | 
    
         
            -
             * 
     | 
| 
       404 
     | 
    
         
            -
             * 
     | 
| 
       405 
     | 
    
         
            -
             * opaque
         
     | 
| 
       406 
     | 
    
         
            -
             *          the opaque data passed from libvirt during the
         
     | 
| 
       407 
     | 
    
         
            -
             *          Libvirt::event_register_impl add_handle callback.  To ensure proper
         
     | 
| 
       408 
     | 
    
         
            -
             *          operation this data must be passed through to
         
     | 
| 
       409 
     | 
    
         
            -
             *          event_invoke_handle_callback without modification.
         
     | 
| 
      
 331 
     | 
    
         
            +
             * handle - an application specific timer ID.  This can be any integer, but must be unique from all other libvirt timers in the application.
         
     | 
| 
      
 332 
     | 
    
         
            +
             *
         
     | 
| 
      
 333 
     | 
    
         
            +
             * opaque - the opaque data passed from libvirt during the Libvirt::event_register_impl add_handle callback.  To ensure proper operation this data must be passed through to event_invoke_handle_callback without modification.
         
     | 
| 
       410 
334 
     | 
    
         
             
             */
         
     | 
| 
       411 
335 
     | 
    
         
             
            static VALUE libvirt_event_invoke_timeout_callback(VALUE m, VALUE timer,
         
     | 
| 
       412 
     | 
    
         
            -
                                                               VALUE opaque) 
     | 
| 
      
 336 
     | 
    
         
            +
                                                               VALUE opaque)
         
     | 
| 
      
 337 
     | 
    
         
            +
            {
         
     | 
| 
       413 
338 
     | 
    
         
             
                virEventTimeoutCallback cb;
         
     | 
| 
       414 
339 
     | 
    
         
             
                void *op;
         
     | 
| 
       415 
     | 
    
         
            -
                VALUE libvirt_cb;
         
     | 
| 
       416 
     | 
    
         
            -
                VALUE libvirt_opaque;
         
     | 
| 
      
 340 
     | 
    
         
            +
                VALUE libvirt_cb, libvirt_opaque;
         
     | 
| 
       417 
341 
     | 
    
         | 
| 
       418 
     | 
    
         
            -
                 
     | 
| 
       419 
     | 
    
         
            -
                    rb_raise(rb_eTypeError,
         
     | 
| 
       420 
     | 
    
         
            -
                             "wrong event callback argument type (expected Hash)");
         
     | 
| 
      
 342 
     | 
    
         
            +
                Check_Type(opaque, T_HASH);
         
     | 
| 
       421 
343 
     | 
    
         | 
| 
       422 
344 
     | 
    
         
             
                libvirt_cb = rb_hash_aref(opaque, rb_str_new2("libvirt_cb"));
         
     | 
| 
       423 
345 
     | 
    
         | 
| 
         @@ -438,9 +360,9 @@ static VALUE libvirt_event_invoke_timeout_callback(VALUE m, VALUE timer, 
     | 
|
| 
       438 
360 
     | 
    
         | 
| 
       439 
361 
     | 
    
         
             
            static int internal_add_handle_func(int fd, int events,
         
     | 
| 
       440 
362 
     | 
    
         
             
                                                virEventHandleCallback cb, void *opaque,
         
     | 
| 
       441 
     | 
    
         
            -
                                                virFreeCallback ff) 
     | 
| 
       442 
     | 
    
         
            -
             
     | 
| 
       443 
     | 
    
         
            -
                VALUE res;
         
     | 
| 
      
 363 
     | 
    
         
            +
                                                virFreeCallback ff)
         
     | 
| 
      
 364 
     | 
    
         
            +
            {
         
     | 
| 
      
 365 
     | 
    
         
            +
                VALUE rubyargs, res;
         
     | 
| 
       444 
366 
     | 
    
         | 
| 
       445 
367 
     | 
    
         
             
                rubyargs = rb_hash_new();
         
     | 
| 
       446 
368 
     | 
    
         
             
                rb_hash_aset(rubyargs, rb_str_new2("libvirt_cb"),
         
     | 
| 
         @@ -451,56 +373,67 @@ static int internal_add_handle_func(int fd, int events, 
     | 
|
| 
       451 
373 
     | 
    
         
             
                             Data_Wrap_Struct(rb_class_of(add_handle), NULL, NULL, ff));
         
     | 
| 
       452 
374 
     | 
    
         | 
| 
       453 
375 
     | 
    
         
             
                /* call out to the ruby object */
         
     | 
| 
       454 
     | 
    
         
            -
                if (strcmp(rb_obj_classname(add_handle), "Symbol") == 0)
         
     | 
| 
      
 376 
     | 
    
         
            +
                if (strcmp(rb_obj_classname(add_handle), "Symbol") == 0) {
         
     | 
| 
       455 
377 
     | 
    
         
             
                    res = rb_funcall(rb_class_of(add_handle), rb_to_id(add_handle), 3,
         
     | 
| 
       456 
378 
     | 
    
         
             
                                     INT2NUM(fd), INT2NUM(events), rubyargs);
         
     | 
| 
       457 
     | 
    
         
            -
                 
     | 
| 
      
 379 
     | 
    
         
            +
                }
         
     | 
| 
      
 380 
     | 
    
         
            +
                else if (strcmp(rb_obj_classname(add_handle), "Proc") == 0) {
         
     | 
| 
       458 
381 
     | 
    
         
             
                    res = rb_funcall(add_handle, rb_intern("call"), 3, INT2NUM(fd),
         
     | 
| 
       459 
382 
     | 
    
         
             
                                     INT2NUM(events), rubyargs);
         
     | 
| 
       460 
     | 
    
         
            -
                 
     | 
| 
      
 383 
     | 
    
         
            +
                }
         
     | 
| 
      
 384 
     | 
    
         
            +
                else {
         
     | 
| 
       461 
385 
     | 
    
         
             
                    rb_raise(rb_eTypeError,
         
     | 
| 
       462 
386 
     | 
    
         
             
                             "wrong add handle callback argument type (expected Symbol or Proc)");
         
     | 
| 
      
 387 
     | 
    
         
            +
                }
         
     | 
| 
       463 
388 
     | 
    
         | 
| 
       464 
     | 
    
         
            -
                if (TYPE(res) != T_FIXNUM)
         
     | 
| 
      
 389 
     | 
    
         
            +
                if (TYPE(res) != T_FIXNUM) {
         
     | 
| 
       465 
390 
     | 
    
         
             
                    rb_raise(rb_eTypeError,
         
     | 
| 
       466 
391 
     | 
    
         
             
                             "expected integer return from add_handle callback");
         
     | 
| 
      
 392 
     | 
    
         
            +
                }
         
     | 
| 
       467 
393 
     | 
    
         | 
| 
       468 
394 
     | 
    
         
             
                return NUM2INT(res);
         
     | 
| 
       469 
395 
     | 
    
         
             
            }
         
     | 
| 
       470 
396 
     | 
    
         | 
| 
       471 
     | 
    
         
            -
            static void internal_update_handle_func(int watch, int event) 
     | 
| 
      
 397 
     | 
    
         
            +
            static void internal_update_handle_func(int watch, int event)
         
     | 
| 
      
 398 
     | 
    
         
            +
            {
         
     | 
| 
       472 
399 
     | 
    
         
             
                /* call out to the ruby object */
         
     | 
| 
       473 
     | 
    
         
            -
                if (strcmp(rb_obj_classname(update_handle), "Symbol") == 0)
         
     | 
| 
      
 400 
     | 
    
         
            +
                if (strcmp(rb_obj_classname(update_handle), "Symbol") == 0) {
         
     | 
| 
       474 
401 
     | 
    
         
             
                    rb_funcall(rb_class_of(update_handle), rb_to_id(update_handle), 2,
         
     | 
| 
       475 
402 
     | 
    
         
             
                               INT2NUM(watch), INT2NUM(event));
         
     | 
| 
       476 
     | 
    
         
            -
                 
     | 
| 
      
 403 
     | 
    
         
            +
                }
         
     | 
| 
      
 404 
     | 
    
         
            +
                else if (strcmp(rb_obj_classname(update_handle), "Proc") == 0) {
         
     | 
| 
       477 
405 
     | 
    
         
             
                    rb_funcall(update_handle, rb_intern("call"), 2, INT2NUM(watch),
         
     | 
| 
       478 
406 
     | 
    
         
             
                               INT2NUM(event));
         
     | 
| 
       479 
     | 
    
         
            -
                 
     | 
| 
      
 407 
     | 
    
         
            +
                }
         
     | 
| 
      
 408 
     | 
    
         
            +
                else {
         
     | 
| 
       480 
409 
     | 
    
         
             
                    rb_raise(rb_eTypeError,
         
     | 
| 
       481 
410 
     | 
    
         
             
                             "wrong update handle callback argument type (expected Symbol or Proc)");
         
     | 
| 
      
 411 
     | 
    
         
            +
                }
         
     | 
| 
       482 
412 
     | 
    
         
             
            }
         
     | 
| 
       483 
413 
     | 
    
         | 
| 
       484 
     | 
    
         
            -
            static int internal_remove_handle_func(int watch) 
     | 
| 
       485 
     | 
    
         
            -
             
     | 
| 
      
 414 
     | 
    
         
            +
            static int internal_remove_handle_func(int watch)
         
     | 
| 
      
 415 
     | 
    
         
            +
            {
         
     | 
| 
      
 416 
     | 
    
         
            +
                VALUE res, libvirt_opaque, ff;
         
     | 
| 
       486 
417 
     | 
    
         
             
                virFreeCallback ff_cb;
         
     | 
| 
       487 
418 
     | 
    
         
             
                void *op;
         
     | 
| 
       488 
     | 
    
         
            -
                VALUE libvirt_opaque;
         
     | 
| 
       489 
     | 
    
         
            -
                VALUE ff;
         
     | 
| 
       490 
419 
     | 
    
         | 
| 
       491 
420 
     | 
    
         
             
                /* call out to the ruby object */
         
     | 
| 
       492 
     | 
    
         
            -
                if (strcmp(rb_obj_classname(remove_handle), "Symbol") == 0)
         
     | 
| 
      
 421 
     | 
    
         
            +
                if (strcmp(rb_obj_classname(remove_handle), "Symbol") == 0) {
         
     | 
| 
       493 
422 
     | 
    
         
             
                    res = rb_funcall(rb_class_of(remove_handle), rb_to_id(remove_handle),
         
     | 
| 
       494 
423 
     | 
    
         
             
                                     1, INT2NUM(watch));
         
     | 
| 
       495 
     | 
    
         
            -
                 
     | 
| 
      
 424 
     | 
    
         
            +
                }
         
     | 
| 
      
 425 
     | 
    
         
            +
                else if (strcmp(rb_obj_classname(remove_handle), "Proc") == 0) {
         
     | 
| 
       496 
426 
     | 
    
         
             
                    res = rb_funcall(remove_handle, rb_intern("call"), 1, INT2NUM(watch));
         
     | 
| 
       497 
     | 
    
         
            -
                 
     | 
| 
      
 427 
     | 
    
         
            +
                }
         
     | 
| 
      
 428 
     | 
    
         
            +
                else {
         
     | 
| 
       498 
429 
     | 
    
         
             
                    rb_raise(rb_eTypeError,
         
     | 
| 
       499 
430 
     | 
    
         
             
                             "wrong remove handle callback argument type (expected Symbol or Proc)");
         
     | 
| 
      
 431 
     | 
    
         
            +
                }
         
     | 
| 
       500 
432 
     | 
    
         | 
| 
       501 
     | 
    
         
            -
                if (TYPE(res) != T_HASH)
         
     | 
| 
      
 433 
     | 
    
         
            +
                if (TYPE(res) != T_HASH) {
         
     | 
| 
       502 
434 
     | 
    
         
             
                    rb_raise(rb_eTypeError,
         
     | 
| 
       503 
435 
     | 
    
         
             
                             "expected opaque hash returned from remove_handle callback");
         
     | 
| 
      
 436 
     | 
    
         
            +
                }
         
     | 
| 
       504 
437 
     | 
    
         | 
| 
       505 
438 
     | 
    
         
             
                ff = rb_hash_aref(res, rb_str_new2("free_func"));
         
     | 
| 
       506 
439 
     | 
    
         
             
                if (!NIL_P(ff)) {
         
     | 
| 
         @@ -521,9 +454,9 @@ static int internal_remove_handle_func(int watch) { 
     | 
|
| 
       521 
454 
     | 
    
         
             
            }
         
     | 
| 
       522 
455 
     | 
    
         | 
| 
       523 
456 
     | 
    
         
             
            static int internal_add_timeout_func(int interval, virEventTimeoutCallback cb,
         
     | 
| 
       524 
     | 
    
         
            -
                                                 void *opaque, virFreeCallback ff) 
     | 
| 
       525 
     | 
    
         
            -
             
     | 
| 
       526 
     | 
    
         
            -
                VALUE res;
         
     | 
| 
      
 457 
     | 
    
         
            +
                                                 void *opaque, virFreeCallback ff)
         
     | 
| 
      
 458 
     | 
    
         
            +
            {
         
     | 
| 
      
 459 
     | 
    
         
            +
                VALUE rubyargs, res;
         
     | 
| 
       527 
460 
     | 
    
         | 
| 
       528 
461 
     | 
    
         
             
                rubyargs = rb_hash_new();
         
     | 
| 
       529 
462 
     | 
    
         | 
| 
         @@ -536,56 +469,67 @@ static int internal_add_timeout_func(int interval, virEventTimeoutCallback cb, 
     | 
|
| 
       536 
469 
     | 
    
         
             
                             Data_Wrap_Struct(rb_class_of(add_timeout), NULL, NULL, ff));
         
     | 
| 
       537 
470 
     | 
    
         | 
| 
       538 
471 
     | 
    
         
             
                /* call out to the ruby object */
         
     | 
| 
       539 
     | 
    
         
            -
                if (strcmp(rb_obj_classname(add_timeout), "Symbol") == 0)
         
     | 
| 
      
 472 
     | 
    
         
            +
                if (strcmp(rb_obj_classname(add_timeout), "Symbol") == 0) {
         
     | 
| 
       540 
473 
     | 
    
         
             
                    res = rb_funcall(rb_class_of(add_timeout), rb_to_id(add_timeout), 2,
         
     | 
| 
       541 
474 
     | 
    
         
             
                                     INT2NUM(interval), rubyargs);
         
     | 
| 
       542 
     | 
    
         
            -
                 
     | 
| 
      
 475 
     | 
    
         
            +
                }
         
     | 
| 
      
 476 
     | 
    
         
            +
                else if (strcmp(rb_obj_classname(add_timeout), "Proc") == 0) {
         
     | 
| 
       543 
477 
     | 
    
         
             
                    res = rb_funcall(add_timeout, rb_intern("call"), 2, INT2NUM(interval),
         
     | 
| 
       544 
478 
     | 
    
         
             
                                     rubyargs);
         
     | 
| 
       545 
     | 
    
         
            -
                 
     | 
| 
      
 479 
     | 
    
         
            +
                }
         
     | 
| 
      
 480 
     | 
    
         
            +
                else {
         
     | 
| 
       546 
481 
     | 
    
         
             
                    rb_raise(rb_eTypeError,
         
     | 
| 
       547 
482 
     | 
    
         
             
                             "wrong add timeout callback argument type (expected Symbol or Proc)");
         
     | 
| 
      
 483 
     | 
    
         
            +
                }
         
     | 
| 
       548 
484 
     | 
    
         | 
| 
       549 
     | 
    
         
            -
                if (TYPE(res) != T_FIXNUM)
         
     | 
| 
      
 485 
     | 
    
         
            +
                if (TYPE(res) != T_FIXNUM) {
         
     | 
| 
       550 
486 
     | 
    
         
             
                    rb_raise(rb_eTypeError,
         
     | 
| 
       551 
487 
     | 
    
         
             
                             "expected integer return from add_timeout callback");
         
     | 
| 
      
 488 
     | 
    
         
            +
                }
         
     | 
| 
       552 
489 
     | 
    
         | 
| 
       553 
490 
     | 
    
         
             
                return NUM2INT(res);
         
     | 
| 
       554 
491 
     | 
    
         
             
            }
         
     | 
| 
       555 
492 
     | 
    
         | 
| 
       556 
     | 
    
         
            -
            static void internal_update_timeout_func(int timer, int timeout) 
     | 
| 
      
 493 
     | 
    
         
            +
            static void internal_update_timeout_func(int timer, int timeout)
         
     | 
| 
      
 494 
     | 
    
         
            +
            {
         
     | 
| 
       557 
495 
     | 
    
         
             
                /* call out to the ruby object */
         
     | 
| 
       558 
     | 
    
         
            -
                if (strcmp(rb_obj_classname(update_timeout), "Symbol") == 0)
         
     | 
| 
      
 496 
     | 
    
         
            +
                if (strcmp(rb_obj_classname(update_timeout), "Symbol") == 0) {
         
     | 
| 
       559 
497 
     | 
    
         
             
                    rb_funcall(rb_class_of(update_timeout), rb_to_id(update_timeout), 2,
         
     | 
| 
       560 
498 
     | 
    
         
             
                               INT2NUM(timer), INT2NUM(timeout));
         
     | 
| 
       561 
     | 
    
         
            -
                 
     | 
| 
      
 499 
     | 
    
         
            +
                }
         
     | 
| 
      
 500 
     | 
    
         
            +
                else if (strcmp(rb_obj_classname(update_timeout), "Proc") == 0) {
         
     | 
| 
       562 
501 
     | 
    
         
             
                    rb_funcall(update_timeout, rb_intern("call"), 2, INT2NUM(timer),
         
     | 
| 
       563 
502 
     | 
    
         
             
                               INT2NUM(timeout));
         
     | 
| 
       564 
     | 
    
         
            -
                 
     | 
| 
      
 503 
     | 
    
         
            +
                }
         
     | 
| 
      
 504 
     | 
    
         
            +
                else {
         
     | 
| 
       565 
505 
     | 
    
         
             
                    rb_raise(rb_eTypeError,
         
     | 
| 
       566 
506 
     | 
    
         
             
                             "wrong update timeout callback argument type (expected Symbol or Proc)");
         
     | 
| 
      
 507 
     | 
    
         
            +
                }
         
     | 
| 
       567 
508 
     | 
    
         
             
            }
         
     | 
| 
       568 
509 
     | 
    
         | 
| 
       569 
     | 
    
         
            -
            static int internal_remove_timeout_func(int timer) 
     | 
| 
       570 
     | 
    
         
            -
             
     | 
| 
      
 510 
     | 
    
         
            +
            static int internal_remove_timeout_func(int timer)
         
     | 
| 
      
 511 
     | 
    
         
            +
            {
         
     | 
| 
      
 512 
     | 
    
         
            +
                VALUE res, libvirt_opaque, ff;
         
     | 
| 
       571 
513 
     | 
    
         
             
                virFreeCallback ff_cb;
         
     | 
| 
       572 
514 
     | 
    
         
             
                void *op;
         
     | 
| 
       573 
     | 
    
         
            -
                VALUE libvirt_opaque;
         
     | 
| 
       574 
     | 
    
         
            -
                VALUE ff;
         
     | 
| 
       575 
515 
     | 
    
         | 
| 
       576 
516 
     | 
    
         
             
                /* call out to the ruby object */
         
     | 
| 
       577 
     | 
    
         
            -
                if (strcmp(rb_obj_classname(remove_timeout), "Symbol") == 0)
         
     | 
| 
      
 517 
     | 
    
         
            +
                if (strcmp(rb_obj_classname(remove_timeout), "Symbol") == 0) {
         
     | 
| 
       578 
518 
     | 
    
         
             
                    res = rb_funcall(rb_class_of(remove_timeout), rb_to_id(remove_timeout),
         
     | 
| 
       579 
519 
     | 
    
         
             
                                     1, INT2NUM(timer));
         
     | 
| 
       580 
     | 
    
         
            -
                 
     | 
| 
      
 520 
     | 
    
         
            +
                }
         
     | 
| 
      
 521 
     | 
    
         
            +
                else if (strcmp(rb_obj_classname(remove_timeout), "Proc") == 0) {
         
     | 
| 
       581 
522 
     | 
    
         
             
                    res = rb_funcall(remove_timeout, rb_intern("call"), 1, INT2NUM(timer));
         
     | 
| 
       582 
     | 
    
         
            -
                 
     | 
| 
      
 523 
     | 
    
         
            +
                }
         
     | 
| 
      
 524 
     | 
    
         
            +
                else {
         
     | 
| 
       583 
525 
     | 
    
         
             
                    rb_raise(rb_eTypeError,
         
     | 
| 
       584 
526 
     | 
    
         
             
                             "wrong remove timeout callback argument type (expected Symbol or Proc)");
         
     | 
| 
      
 527 
     | 
    
         
            +
                }
         
     | 
| 
       585 
528 
     | 
    
         | 
| 
       586 
     | 
    
         
            -
                if (TYPE(res) != T_HASH)
         
     | 
| 
      
 529 
     | 
    
         
            +
                if (TYPE(res) != T_HASH) {
         
     | 
| 
       587 
530 
     | 
    
         
             
                    rb_raise(rb_eTypeError,
         
     | 
| 
       588 
531 
     | 
    
         
             
                             "expected opaque hash returned from remove_timeout callback");
         
     | 
| 
      
 532 
     | 
    
         
            +
                }
         
     | 
| 
       589 
533 
     | 
    
         | 
| 
       590 
534 
     | 
    
         
             
                ff = rb_hash_aref(res, rb_str_new2("free_func"));
         
     | 
| 
       591 
535 
     | 
    
         
             
                if (!NIL_P(ff)) {
         
     | 
| 
         @@ -607,24 +551,27 @@ static int internal_remove_timeout_func(int timer) { 
     | 
|
| 
       607 
551 
     | 
    
         | 
| 
       608 
552 
     | 
    
         
             
            #define set_event_func_or_null(type)                \
         
     | 
| 
       609 
553 
     | 
    
         
             
                do {                                            \
         
     | 
| 
       610 
     | 
    
         
            -
                    if (NIL_P(type)) 
     | 
| 
      
 554 
     | 
    
         
            +
                    if (NIL_P(type)) {                          \
         
     | 
| 
       611 
555 
     | 
    
         
             
                        type##_temp = NULL;                     \
         
     | 
| 
       612 
     | 
    
         
            -
                     
     | 
| 
      
 556 
     | 
    
         
            +
                    }                                           \
         
     | 
| 
      
 557 
     | 
    
         
            +
                    else {                                      \
         
     | 
| 
       613 
558 
     | 
    
         
             
                        type##_temp = internal_##type##_func;   \
         
     | 
| 
      
 559 
     | 
    
         
            +
                    }                                           \
         
     | 
| 
       614 
560 
     | 
    
         
             
                } while(0)
         
     | 
| 
       615 
561 
     | 
    
         | 
| 
       616 
     | 
    
         
            -
            static int is_symbol_proc_or_nil(VALUE handle) 
     | 
| 
       617 
     | 
    
         
            -
             
     | 
| 
      
 562 
     | 
    
         
            +
            static int is_symbol_proc_or_nil(VALUE handle)
         
     | 
| 
      
 563 
     | 
    
         
            +
            {
         
     | 
| 
      
 564 
     | 
    
         
            +
                if (NIL_P(handle)) {
         
     | 
| 
       618 
565 
     | 
    
         
             
                    return 1;
         
     | 
| 
       619 
     | 
    
         
            -
                 
     | 
| 
      
 566 
     | 
    
         
            +
                }
         
     | 
| 
      
 567 
     | 
    
         
            +
                return ruby_libvirt_is_symbol_or_proc(handle);
         
     | 
| 
       620 
568 
     | 
    
         
             
            }
         
     | 
| 
       621 
569 
     | 
    
         | 
| 
       622 
570 
     | 
    
         
             
            /*
         
     | 
| 
       623 
571 
     | 
    
         
             
             * call-seq:
         
     | 
| 
       624 
572 
     | 
    
         
             
             *   Libvirt::event_register_impl(add_handle=nil, update_handle=nil, remove_handle=nil, add_timeout=nil, update_timeout=nil, remove_timeout=nil) -> Qnil
         
     | 
| 
       625 
573 
     | 
    
         
             
             *
         
     | 
| 
       626 
     | 
    
         
            -
             * Call
         
     | 
| 
       627 
     | 
    
         
            -
             * +virEventRegisterImpl+[http://www.libvirt.org/html/libvirt-libvirt.html#virEventRegisterImpl]
         
     | 
| 
      
 574 
     | 
    
         
            +
             * Call virEventRegisterImpl[http://www.libvirt.org/html/libvirt-libvirt.html#virEventRegisterImpl]
         
     | 
| 
       628 
575 
     | 
    
         
             
             * to register callback handlers for handles and timeouts.  These handles and
         
     | 
| 
       629 
576 
     | 
    
         
             
             * timeouts are used as part of the libvirt infrastructure for generating
         
     | 
| 
       630 
577 
     | 
    
         
             
             * domain events.  Each callback must be a Symbol (that is the name of a
         
     | 
| 
         @@ -652,7 +599,8 @@ static int is_symbol_proc_or_nil(VALUE handle) { 
     | 
|
| 
       652 
599 
     | 
    
         
             
             * passed to the event_invoke_handle_callback and event_invoke_timeout_callback
         
     | 
| 
       653 
600 
     | 
    
         
             
             * module methods; see the documentation for those methods for more details.
         
     | 
| 
       654 
601 
     | 
    
         
             
             */
         
     | 
| 
       655 
     | 
    
         
            -
            static VALUE libvirt_conn_event_register_impl(int argc, VALUE *argv, VALUE c) 
     | 
| 
      
 602 
     | 
    
         
            +
            static VALUE libvirt_conn_event_register_impl(int argc, VALUE *argv, VALUE c)
         
     | 
| 
      
 603 
     | 
    
         
            +
            {
         
     | 
| 
       656 
604 
     | 
    
         
             
                virEventAddHandleFunc add_handle_temp;
         
     | 
| 
       657 
605 
     | 
    
         
             
                virEventUpdateHandleFunc update_handle_temp;
         
     | 
| 
       658 
606 
     | 
    
         
             
                virEventRemoveHandleFunc remove_handle_temp;
         
     | 
| 
         @@ -673,9 +621,10 @@ static VALUE libvirt_conn_event_register_impl(int argc, VALUE *argv, VALUE c) { 
     | 
|
| 
       673 
621 
     | 
    
         
             
                    !is_symbol_proc_or_nil(remove_handle) ||
         
     | 
| 
       674 
622 
     | 
    
         
             
                    !is_symbol_proc_or_nil(add_timeout) ||
         
     | 
| 
       675 
623 
     | 
    
         
             
                    !is_symbol_proc_or_nil(update_timeout) ||
         
     | 
| 
       676 
     | 
    
         
            -
                    !is_symbol_proc_or_nil(remove_timeout))
         
     | 
| 
      
 624 
     | 
    
         
            +
                    !is_symbol_proc_or_nil(remove_timeout)) {
         
     | 
| 
       677 
625 
     | 
    
         
             
                    rb_raise(rb_eTypeError,
         
     | 
| 
       678 
626 
     | 
    
         
             
                             "wrong argument type (expected Symbol, Proc, or nil)");
         
     | 
| 
      
 627 
     | 
    
         
            +
                }
         
     | 
| 
       679 
628 
     | 
    
         | 
| 
       680 
629 
     | 
    
         
             
                set_event_func_or_null(add_handle);
         
     | 
| 
       681 
630 
     | 
    
         
             
                set_event_func_or_null(update_handle);
         
     | 
| 
         @@ -693,10 +642,67 @@ static VALUE libvirt_conn_event_register_impl(int argc, VALUE *argv, VALUE c) { 
     | 
|
| 
       693 
642 
     | 
    
         
             
            }
         
     | 
| 
       694 
643 
     | 
    
         
             
            #endif
         
     | 
| 
       695 
644 
     | 
    
         | 
| 
      
 645 
     | 
    
         
            +
            #if HAVE_VIRDOMAINLXCENTERSECURITYLABEL
         
     | 
| 
      
 646 
     | 
    
         
            +
            /*
         
     | 
| 
      
 647 
     | 
    
         
            +
             * call-seq:
         
     | 
| 
      
 648 
     | 
    
         
            +
             *   Libvirt::lxc_enter_security_label(model, label, flags=0) -> Libvirt::Domain::SecurityLabel
         
     | 
| 
      
 649 
     | 
    
         
            +
             *
         
     | 
| 
      
 650 
     | 
    
         
            +
             * Call virDomainLxcEnterSecurityLabel[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainLxcEnterSecurityLabel]
         
     | 
| 
      
 651 
     | 
    
         
            +
             * to attach to the security label specified by label in the security model
         
     | 
| 
      
 652 
     | 
    
         
            +
             * specified by model.  The return object is a Libvirt::Domain::SecurityLabel
         
     | 
| 
      
 653 
     | 
    
         
            +
             * which may be able to be used to move back to the previous label.
         
     | 
| 
      
 654 
     | 
    
         
            +
             */
         
     | 
| 
      
 655 
     | 
    
         
            +
            static VALUE libvirt_domain_lxc_enter_security_label(int argc, VALUE *argv,
         
     | 
| 
      
 656 
     | 
    
         
            +
                                                                 VALUE c)
         
     | 
| 
      
 657 
     | 
    
         
            +
            {
         
     | 
| 
      
 658 
     | 
    
         
            +
                VALUE model, label, flags, result, modiv, doiiv, labiv;
         
     | 
| 
      
 659 
     | 
    
         
            +
                virSecurityModel mod;
         
     | 
| 
      
 660 
     | 
    
         
            +
                char *modstr, *doistr, *labstr;
         
     | 
| 
      
 661 
     | 
    
         
            +
                virSecurityLabel lab, oldlab;
         
     | 
| 
      
 662 
     | 
    
         
            +
                int ret;
         
     | 
| 
      
 663 
     | 
    
         
            +
             
     | 
| 
      
 664 
     | 
    
         
            +
                rb_scan_args(argc, argv, "21", &model, &label, &flags);
         
     | 
| 
      
 665 
     | 
    
         
            +
             
     | 
| 
      
 666 
     | 
    
         
            +
                if (rb_class_of(model) != c_node_security_model) {
         
     | 
| 
      
 667 
     | 
    
         
            +
                    rb_raise(rb_eTypeError,
         
     | 
| 
      
 668 
     | 
    
         
            +
                             "wrong argument type (expected Libvirt::Connect::NodeSecurityModel)");
         
     | 
| 
      
 669 
     | 
    
         
            +
                }
         
     | 
| 
      
 670 
     | 
    
         
            +
             
     | 
| 
      
 671 
     | 
    
         
            +
                if (rb_class_of(label) != c_domain_security_label) {
         
     | 
| 
      
 672 
     | 
    
         
            +
                    rb_raise(rb_eTypeError,
         
     | 
| 
      
 673 
     | 
    
         
            +
                             "wrong argument type (expected Libvirt::Domain::SecurityLabel)");
         
     | 
| 
      
 674 
     | 
    
         
            +
                }
         
     | 
| 
      
 675 
     | 
    
         
            +
             
     | 
| 
      
 676 
     | 
    
         
            +
                modiv = rb_iv_get(model, "@model");
         
     | 
| 
      
 677 
     | 
    
         
            +
                modstr = StringValueCStr(modiv);
         
     | 
| 
      
 678 
     | 
    
         
            +
                memcpy(mod.model, modstr, strlen(modstr));
         
     | 
| 
      
 679 
     | 
    
         
            +
                doiiv = rb_iv_get(model, "@doi");
         
     | 
| 
      
 680 
     | 
    
         
            +
                doistr = StringValueCStr(doiiv);
         
     | 
| 
      
 681 
     | 
    
         
            +
                memcpy(mod.doi, doistr, strlen(doistr));
         
     | 
| 
      
 682 
     | 
    
         
            +
             
     | 
| 
      
 683 
     | 
    
         
            +
                labiv = rb_iv_get(label, "@label");
         
     | 
| 
      
 684 
     | 
    
         
            +
                labstr = StringValueCStr(labiv);
         
     | 
| 
      
 685 
     | 
    
         
            +
                memcpy(lab.label, labstr, strlen(labstr));
         
     | 
| 
      
 686 
     | 
    
         
            +
                lab.enforcing = NUM2INT(rb_iv_get(label, "@enforcing"));
         
     | 
| 
      
 687 
     | 
    
         
            +
             
     | 
| 
      
 688 
     | 
    
         
            +
                ret = virDomainLxcEnterSecurityLabel(&mod, &lab, &oldlab,
         
     | 
| 
      
 689 
     | 
    
         
            +
                                                     ruby_libvirt_value_to_uint(flags));
         
     | 
| 
      
 690 
     | 
    
         
            +
                ruby_libvirt_raise_error_if(ret < 0, e_RetrieveError,
         
     | 
| 
      
 691 
     | 
    
         
            +
                                            "virDomainLxcEnterSecurityLabel", NULL);
         
     | 
| 
      
 692 
     | 
    
         
            +
             
     | 
| 
      
 693 
     | 
    
         
            +
                result = rb_class_new_instance(0, NULL, c_domain_security_label);
         
     | 
| 
      
 694 
     | 
    
         
            +
                rb_iv_set(result, "@label", rb_str_new2(oldlab.label));
         
     | 
| 
      
 695 
     | 
    
         
            +
                rb_iv_set(result, "@enforcing", INT2NUM(oldlab.enforcing));
         
     | 
| 
      
 696 
     | 
    
         
            +
             
     | 
| 
      
 697 
     | 
    
         
            +
                return result;
         
     | 
| 
      
 698 
     | 
    
         
            +
            }
         
     | 
| 
      
 699 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 700 
     | 
    
         
            +
             
     | 
| 
       696 
701 
     | 
    
         
             
            /*
         
     | 
| 
       697 
702 
     | 
    
         
             
             * Module Libvirt
         
     | 
| 
       698 
703 
     | 
    
         
             
             */
         
     | 
| 
       699 
     | 
    
         
            -
            void Init__libvirt() 
     | 
| 
      
 704 
     | 
    
         
            +
            void Init__libvirt(void)
         
     | 
| 
      
 705 
     | 
    
         
            +
            {
         
     | 
| 
       700 
706 
     | 
    
         
             
                m_libvirt = rb_define_module("Libvirt");
         
     | 
| 
       701 
707 
     | 
    
         
             
                c_libvirt_version = rb_define_class_under(m_libvirt, "Version",
         
     | 
| 
       702 
708 
     | 
    
         
             
                                                          rb_cObject);
         
     | 
| 
         @@ -710,11 +716,17 @@ void Init__libvirt() { 
     | 
|
| 
       710 
716 
     | 
    
         
             
                rb_define_const(m_libvirt, "CRED_CNONCE", INT2NUM(VIR_CRED_CNONCE));
         
     | 
| 
       711 
717 
     | 
    
         
             
                rb_define_const(m_libvirt, "CRED_PASSPHRASE", INT2NUM(VIR_CRED_PASSPHRASE));
         
     | 
| 
       712 
718 
     | 
    
         
             
                rb_define_const(m_libvirt, "CRED_ECHOPROMPT", INT2NUM(VIR_CRED_ECHOPROMPT));
         
     | 
| 
       713 
     | 
    
         
            -
                rb_define_const(m_libvirt, "CRED_NOECHOPROMPT", 
     | 
| 
      
 719 
     | 
    
         
            +
                rb_define_const(m_libvirt, "CRED_NOECHOPROMPT",
         
     | 
| 
      
 720 
     | 
    
         
            +
                                INT2NUM(VIR_CRED_NOECHOPROMPT));
         
     | 
| 
       714 
721 
     | 
    
         
             
                rb_define_const(m_libvirt, "CRED_REALM", INT2NUM(VIR_CRED_REALM));
         
     | 
| 
       715 
722 
     | 
    
         
             
                rb_define_const(m_libvirt, "CRED_EXTERNAL", INT2NUM(VIR_CRED_EXTERNAL));
         
     | 
| 
       716 
723 
     | 
    
         
             
            #endif
         
     | 
| 
       717 
724 
     | 
    
         | 
| 
      
 725 
     | 
    
         
            +
            #if HAVE_CONST_VIR_CONNECT_NO_ALIASES
         
     | 
| 
      
 726 
     | 
    
         
            +
                rb_define_const(m_libvirt, "CONNECT_NO_ALIASES",
         
     | 
| 
      
 727 
     | 
    
         
            +
                                INT2NUM(VIR_CONNECT_NO_ALIASES));
         
     | 
| 
      
 728 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 729 
     | 
    
         
            +
             
     | 
| 
       718 
730 
     | 
    
         
             
                /*
         
     | 
| 
       719 
731 
     | 
    
         
             
                 * Libvirt Errors
         
     | 
| 
       720 
732 
     | 
    
         
             
                 */
         
     | 
| 
         @@ -993,18 +1005,24 @@ void Init__libvirt() { 
     | 
|
| 
       993 
1005 
     | 
    
         
             
                                          libvirt_event_invoke_timeout_callback, 2);
         
     | 
| 
       994 
1006 
     | 
    
         
             
            #endif
         
     | 
| 
       995 
1007 
     | 
    
         | 
| 
       996 
     | 
    
         
            -
             
     | 
| 
       997 
     | 
    
         
            -
                 
     | 
| 
       998 
     | 
    
         
            -
             
     | 
| 
       999 
     | 
    
         
            -
             
     | 
| 
       1000 
     | 
    
         
            -
             
     | 
| 
       1001 
     | 
    
         
            -
                 
     | 
| 
       1002 
     | 
    
         
            -
                 
     | 
| 
       1003 
     | 
    
         
            -
                 
     | 
| 
       1004 
     | 
    
         
            -
                 
     | 
| 
      
 1008 
     | 
    
         
            +
            #if HAVE_VIRDOMAINLXCENTERSECURITYLABEL
         
     | 
| 
      
 1009 
     | 
    
         
            +
                rb_define_method(m_libvirt, "lxc_enter_security_label",
         
     | 
| 
      
 1010 
     | 
    
         
            +
                                 libvirt_domain_lxc_enter_security_label, -1);
         
     | 
| 
      
 1011 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 1012 
     | 
    
         
            +
             
     | 
| 
      
 1013 
     | 
    
         
            +
                ruby_libvirt_connect_init();
         
     | 
| 
      
 1014 
     | 
    
         
            +
                ruby_libvirt_storage_init();
         
     | 
| 
      
 1015 
     | 
    
         
            +
                ruby_libvirt_network_init();
         
     | 
| 
      
 1016 
     | 
    
         
            +
                ruby_libvirt_nodedevice_init();
         
     | 
| 
      
 1017 
     | 
    
         
            +
                ruby_libvirt_secret_init();
         
     | 
| 
      
 1018 
     | 
    
         
            +
                ruby_libvirt_nwfilter_init();
         
     | 
| 
      
 1019 
     | 
    
         
            +
                ruby_libvirt_interface_init();
         
     | 
| 
      
 1020 
     | 
    
         
            +
                ruby_libvirt_domain_init();
         
     | 
| 
      
 1021 
     | 
    
         
            +
                ruby_libvirt_stream_init();
         
     | 
| 
       1005 
1022 
     | 
    
         | 
| 
       1006 
1023 
     | 
    
         
             
                virSetErrorFunc(NULL, rubyLibvirtErrorFunc);
         
     | 
| 
       1007 
1024 
     | 
    
         | 
| 
       1008 
     | 
    
         
            -
                if (virInitialize() < 0)
         
     | 
| 
      
 1025 
     | 
    
         
            +
                if (virInitialize() < 0) {
         
     | 
| 
       1009 
1026 
     | 
    
         
             
                    rb_raise(rb_eSystemCallError, "virInitialize failed");
         
     | 
| 
      
 1027 
     | 
    
         
            +
                }
         
     | 
| 
       1010 
1028 
     | 
    
         
             
            }
         
     |