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.
data/ext/libvirt/common.h CHANGED
@@ -2,27 +2,30 @@
2
2
  #define COMMON_H
3
3
 
4
4
  /* Macros to ease some of the boilerplate */
5
- VALUE generic_new(VALUE klass, void *ptr, VALUE conn,
6
- RUBY_DATA_FUNC free_func);
5
+ VALUE ruby_libvirt_new_class(VALUE klass, void *ptr, VALUE conn,
6
+ RUBY_DATA_FUNC free_func);
7
7
 
8
- #define generic_get(kind, v) \
8
+ #define ruby_libvirt_get_struct(kind, v) \
9
9
  do { \
10
10
  vir##kind##Ptr ptr; \
11
11
  Data_Get_Struct(v, vir##kind, ptr); \
12
- if (!ptr) \
12
+ if (!ptr) { \
13
13
  rb_raise(rb_eArgError, #kind " has been freed"); \
14
+ } \
14
15
  return ptr; \
15
16
  } while (0);
16
17
 
17
- #define generic_free(kind, p) \
18
+ #define ruby_libvirt_free_struct(kind, p) \
18
19
  do { \
19
20
  int r; \
20
21
  r = vir##kind##Free((vir##kind##Ptr) p); \
21
- if (r < 0) \
22
+ if (r < 0) { \
22
23
  rb_raise(rb_eSystemCallError, # kind " free failed"); \
24
+ } \
23
25
  } while(0);
24
26
 
25
- VALUE create_error(VALUE error, const char* method, virConnectPtr conn);
27
+ void ruby_libvirt_raise_error_if(const int condition, VALUE error,
28
+ const char *method, virConnectPtr conn);
26
29
 
27
30
  /*
28
31
  * Code generating macros.
@@ -35,30 +38,37 @@ VALUE create_error(VALUE error, const char* method, virConnectPtr conn);
35
38
  * function will return the string on success and throw an exception on
36
39
  * error. The string returned by FUNC is freed if dealloc is true.
37
40
  */
38
- #define gen_call_string(func, conn, dealloc, args...) \
39
- do { \
40
- const char *str; \
41
- VALUE result; \
42
- \
43
- str = func(args); \
44
- _E(str == NULL, create_error(e_Error, # func, conn)); \
45
- \
46
- result = rb_str_new2(str); \
47
- if (dealloc) \
48
- xfree((void *) str); \
49
- return result; \
41
+ #define ruby_libvirt_generate_call_string(func, conn, dealloc, args...) \
42
+ do { \
43
+ const char *str; \
44
+ VALUE result; \
45
+ int exception; \
46
+ \
47
+ str = func(args); \
48
+ ruby_libvirt_raise_error_if(str == NULL, e_Error, # func, conn); \
49
+ if (dealloc) { \
50
+ result = rb_protect(ruby_libvirt_str_new2_wrap, (VALUE)&str, &exception); \
51
+ xfree((void *) str); \
52
+ if (exception) { \
53
+ rb_jump_tag(exception); \
54
+ } \
55
+ } \
56
+ else { \
57
+ result = rb_str_new2(str); \
58
+ } \
59
+ return result; \
50
60
  } while(0)
51
61
 
52
62
  /* Generate a call to vir##KIND##Free and return Qnil. Set the the embedded
53
63
  * vir##KIND##Ptr to NULL. If that pointer is already NULL, do nothing.
54
64
  */
55
- #define gen_call_free(kind, s) \
65
+ #define ruby_libvirt_generate_call_free(kind, s) \
56
66
  do { \
57
67
  vir##kind##Ptr ptr; \
58
68
  Data_Get_Struct(s, vir##kind, ptr); \
59
69
  if (ptr != NULL) { \
60
70
  int r = vir##kind##Free(ptr); \
61
- _E(r < 0, create_error(e_Error, "vir" #kind "Free", conn(s))); \
71
+ ruby_libvirt_raise_error_if(r < 0, e_Error, "vir" #kind "Free", ruby_libvirt_connect_get(s)); \
62
72
  DATA_PTR(s) = NULL; \
63
73
  } \
64
74
  return Qnil; \
@@ -68,89 +78,89 @@ VALUE create_error(VALUE error, const char* method, virConnectPtr conn);
68
78
  * indicates error and 0 success. The Ruby function will return Qnil on
69
79
  * success and throw an exception on error.
70
80
  */
71
- #define gen_call_void(func, conn, args...) \
72
- do { \
73
- int _r_##func; \
74
- _r_##func = func(args); \
75
- _E(_r_##func < 0, create_error(e_Error, #func, conn)); \
76
- return Qnil; \
77
- } while(0)
78
-
79
- /*
80
- * Generate a call to a virConnectNumOf... function. C is the Ruby VALUE
81
- * holding the connection and OBJS is a token indicating what objects to
82
- * get the number of, e.g. 'Domains'
83
- */
84
- #define gen_conn_num_of(c, objs) \
85
- do { \
86
- int result; \
87
- virConnectPtr conn = connect_get(c); \
88
- \
89
- result = virConnectNumOf##objs(conn); \
90
- _E(result < 0, create_error(e_RetrieveError, "virConnectNumOf" # objs, conn)); \
91
- \
92
- return INT2NUM(result); \
93
- } while(0)
94
-
95
-
96
- VALUE gen_list(int num, char ***list);
97
-
98
- /*
99
- * Generate a call to a virConnectList... function. S is the Ruby VALUE
100
- * holding the connection and OBJS is a token indicating what objects to
101
- * get the number of, e.g. 'Domains' The list function must return an array
102
- * of strings, which is returned as a Ruby array
103
- */
104
- #define gen_conn_list_names(s, objs) \
105
- do { \
106
- int r, num; \
107
- char **names; \
108
- virConnectPtr conn = connect_get(s); \
109
- \
110
- num = virConnectNumOf##objs(conn); \
111
- _E(num < 0, create_error(e_RetrieveError, "virConnectNumOf" # objs, conn)); \
112
- if (num == 0) { \
113
- /* if num is 0, don't call virConnectList* function */ \
114
- return rb_ary_new2(num); \
115
- } \
116
- names = ALLOC_N(char *, num); \
117
- r = virConnectList##objs(conn, names, num); \
118
- if (r < 0) { \
119
- xfree(names); \
120
- _E(r < 0, create_error(e_RetrieveError, "virConnectList" # objs, conn)); \
121
- } \
122
- \
123
- return gen_list(num, &names); \
81
+ #define ruby_libvirt_generate_call_nil(func, conn, args...) \
82
+ do { \
83
+ int _r_##func; \
84
+ _r_##func = func(args); \
85
+ ruby_libvirt_raise_error_if(_r_##func < 0, e_Error, #func, conn); \
86
+ return Qnil; \
124
87
  } while(0)
125
88
 
126
89
  /* Generate a call to a function FUNC which returns an int; -1 indicates
127
90
  * error, 0 indicates Qfalse, and 1 indicates Qtrue.
128
91
  */
129
- #define gen_call_truefalse(func, conn, args...) \
130
- do { \
131
- int _r_##func; \
132
- _r_##func = func(args); \
133
- _E(_r_##func < 0, create_error(e_Error, #func, conn)); \
134
- return _r_##func ? Qtrue : Qfalse; \
92
+ #define ruby_libvirt_generate_call_truefalse(func, conn, args...) \
93
+ do { \
94
+ int _r_##func; \
95
+ _r_##func = func(args); \
96
+ ruby_libvirt_raise_error_if(_r_##func < 0, e_Error, #func, conn); \
97
+ return _r_##func ? Qtrue : Qfalse; \
135
98
  } while(0)
136
99
 
137
100
  /* Generate a call to a function FUNC which returns an int error, where -1
138
101
  * indicates error and >= 0 success. The Ruby function will return the integer
139
102
  * success and throw an exception on error.
140
103
  */
141
- #define gen_call_int(func, conn, args...) \
104
+ #define ruby_libvirt_generate_call_int(func, conn, args...) \
142
105
  do { \
143
106
  int _r_##func; \
144
107
  _r_##func = func(args); \
145
- _E(_r_##func < 0, create_error(e_RetrieveError, #func, conn)); \
108
+ ruby_libvirt_raise_error_if(_r_##func < 0, e_RetrieveError, #func, conn); \
146
109
  return INT2NUM(_r_##func); \
147
110
  } while(0)
148
111
 
149
- /* Error handling */
150
- #define _E(cond, excep) \
151
- do { if (cond) rb_exc_raise(excep); } while(0)
112
+ #define ruby_libvirt_generate_uuid(func, conn, obj) \
113
+ do { \
114
+ char uuid[VIR_UUID_STRING_BUFLEN]; \
115
+ int _r_##func; \
116
+ _r_##func = func(obj, uuid); \
117
+ ruby_libvirt_raise_error_if(_r_##func < 0, e_RetrieveError, #func, conn); \
118
+ return rb_str_new2((char *) uuid); \
119
+ } while (0)
152
120
 
153
- int is_symbol_or_proc(VALUE handle);
121
+
122
+ #define ruby_libvirt_generate_call_list_all(type, argc, argv, listfunc, object, val, newfunc, freefunc) \
123
+ do { \
124
+ VALUE flags; \
125
+ type *list; \
126
+ size_t i; \
127
+ int ret; \
128
+ VALUE result; \
129
+ int exception = 0; \
130
+ struct ruby_libvirt_ary_push_arg arg; \
131
+ \
132
+ rb_scan_args(argc, argv, "01", &flags); \
133
+ ret = listfunc(object, &list, ruby_libvirt_value_to_uint(flags)); \
134
+ ruby_libvirt_raise_error_if(ret < 0, e_RetrieveError, #listfunc, ruby_libvirt_connect_get(val)); \
135
+ result = rb_protect(ruby_libvirt_ary_new2_wrap, (VALUE)&ret, &exception); \
136
+ if (exception) { \
137
+ goto exception; \
138
+ } \
139
+ for (i = 0; i < ret; i++) { \
140
+ arg.arr = result; \
141
+ arg.value = newfunc(list[i], val); \
142
+ rb_protect(ruby_libvirt_ary_push_wrap, (VALUE)&arg, &exception); \
143
+ if (exception) { \
144
+ goto exception; \
145
+ } \
146
+ } \
147
+ \
148
+ free(list); \
149
+ \
150
+ return result; \
151
+ \
152
+ exception: \
153
+ for (i = 0; i < ret; i++) { \
154
+ freefunc(list[i]); \
155
+ } \
156
+ free(list); \
157
+ rb_jump_tag(exception); \
158
+ \
159
+ /* not needed, but here to shut the compiler up */ \
160
+ return Qnil; \
161
+ } while(0)
162
+
163
+ int ruby_libvirt_is_symbol_or_proc(VALUE handle);
154
164
 
155
165
  extern VALUE e_RetrieveError;
156
166
  extern VALUE e_Error;
@@ -159,42 +169,90 @@ extern VALUE e_NoSupportError;
159
169
 
160
170
  extern VALUE m_libvirt;
161
171
 
162
- char *get_string_or_nil(VALUE arg);
172
+ char *ruby_libvirt_get_cstring_or_null(VALUE arg);
163
173
 
164
- struct rb_ary_entry_arg {
165
- VALUE arr;
166
- int elem;
174
+ VALUE ruby_libvirt_generate_list(int num, char **list);
175
+
176
+ VALUE ruby_libvirt_get_parameters(VALUE d, unsigned int flags, void *opaque,
177
+ unsigned int typesize,
178
+ char *(*nparams_cb)(VALUE d,
179
+ unsigned int flags,
180
+ void *opaque,
181
+ int *nparams),
182
+ char *(*get_cb)(VALUE d, unsigned int flags,
183
+ void *voidparams,
184
+ int *nparams, void *opaque),
185
+ void (*hash_set)(void *voidparams, int i,
186
+ VALUE result));
187
+ VALUE ruby_libvirt_get_typed_parameters(VALUE d, unsigned int flags,
188
+ void *opaque,
189
+ char *(*nparams_cb)(VALUE d,
190
+ unsigned int flags,
191
+ void *opaque,
192
+ int *nparams),
193
+ char *(*get_cb)(VALUE d,
194
+ unsigned int flags,
195
+ void *params,
196
+ int *nparams,
197
+ void *opaque));
198
+ struct ruby_libvirt_typed_param {
199
+ char *name;
200
+ int type;
167
201
  };
168
- VALUE rb_ary_entry_wrap(VALUE arg);
169
- VALUE rb_ary_new_wrap(VALUE arg);
170
- struct rb_ary_push_arg {
202
+ struct ruby_libvirt_parameter_assign_args {
203
+ struct ruby_libvirt_typed_param *allowed;
204
+ unsigned int num_allowed;
205
+
206
+ virTypedParameter *params;
207
+ int i;
208
+ };
209
+ int ruby_libvirt_typed_parameter_assign(VALUE key, VALUE val, VALUE in);
210
+ VALUE ruby_libvirt_set_typed_parameters(VALUE d, VALUE input,
211
+ unsigned int flags, void *opaque,
212
+ struct ruby_libvirt_typed_param *allowed,
213
+ unsigned int num_allowed,
214
+ char *(*set_cb)(VALUE d,
215
+ unsigned int flags,
216
+ virTypedParameterPtr params,
217
+ int nparams,
218
+ void *opaque));
219
+
220
+ int ruby_libvirt_get_maxcpus(virConnectPtr conn);
221
+
222
+ void ruby_libvirt_typed_params_to_hash(void *voidparams, int i, VALUE hash);
223
+ void ruby_libvirt_assign_hash_and_flags(VALUE in, VALUE *hash, VALUE *flags);
224
+
225
+ unsigned int ruby_libvirt_value_to_uint(VALUE in);
226
+ int ruby_libvirt_value_to_int(VALUE in);
227
+ unsigned long ruby_libvirt_value_to_ulong(VALUE in);
228
+ unsigned long long ruby_libvirt_value_to_ulonglong(VALUE in);
229
+
230
+ VALUE ruby_libvirt_ary_new2_wrap(VALUE arg);
231
+ struct ruby_libvirt_ary_push_arg {
171
232
  VALUE arr;
172
233
  VALUE value;
173
234
  };
174
- VALUE rb_ary_push_wrap(VALUE arg);
175
- VALUE rb_ary_new2_wrap(VALUE arg);
235
+ VALUE ruby_libvirt_ary_push_wrap(VALUE arg);
236
+ struct ruby_libvirt_ary_store_arg {
237
+ VALUE arr;
238
+ long index;
239
+ VALUE elem;
240
+ };
241
+ VALUE ruby_libvirt_ary_store_wrap(VALUE arg);
176
242
 
177
- VALUE rb_str_new2_wrap(VALUE arg);
178
- struct rb_str_new_arg {
243
+ VALUE ruby_libvirt_str_new2_wrap(VALUE arg);
244
+ struct ruby_libvirt_str_new_arg {
179
245
  char *val;
180
246
  size_t size;
181
247
  };
182
- VALUE rb_str_new_wrap(VALUE arg);
183
- VALUE rb_string_value_cstr_wrap(VALUE arg);
248
+ VALUE ruby_libvirt_str_new_wrap(VALUE arg);
184
249
 
185
- struct rb_iv_set_arg {
186
- VALUE klass;
187
- char *member;
188
- VALUE value;
189
- };
190
- VALUE rb_iv_set_wrap(VALUE arg);
191
-
192
- struct rb_class_new_instance_arg {
193
- int argc;
194
- VALUE *argv;
195
- VALUE klass;
250
+ struct ruby_libvirt_hash_aset_arg {
251
+ VALUE hash;
252
+ char *name;
253
+ VALUE val;
196
254
  };
197
- VALUE rb_class_new_instance_wrap(VALUE arg);
255
+ VALUE ruby_libvirt_hash_aset_wrap(VALUE arg);
198
256
 
199
257
  #ifndef RARRAY_LEN
200
258
  #define RARRAY_LEN(ar) (RARRAY(ar)->len)
@@ -208,4 +266,6 @@ VALUE rb_class_new_instance_wrap(VALUE arg);
208
266
  #define RSTRING_LEN(str) (RSTRING(str)->len)
209
267
  #endif
210
268
 
269
+ #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
270
+
211
271
  #endif
@@ -2,6 +2,7 @@
2
2
  * connect.c: virConnect methods
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
@@ -20,66 +21,108 @@
20
21
 
21
22
  #include <ruby.h>
22
23
  #include <libvirt/libvirt.h>
24
+ #if HAVE_VIRDOMAINQEMUATTACH
25
+ #include <libvirt/libvirt-qemu.h>
26
+ #endif
23
27
  #include <libvirt/virterror.h>
24
28
  #include "extconf.h"
25
29
  #include "common.h"
26
30
  #include "domain.h"
27
31
  #include "network.h"
32
+ #include "interface.h"
33
+ #include "nodedevice.h"
34
+ #include "nwfilter.h"
35
+ #include "secret.h"
36
+ #include "stream.h"
37
+
38
+ /*
39
+ * Generate a call to a virConnectNumOf... function. C is the Ruby VALUE
40
+ * holding the connection and OBJS is a token indicating what objects to
41
+ * get the number of, e.g. 'Domains'
42
+ */
43
+ #define gen_conn_num_of(c, objs) \
44
+ do { \
45
+ int r; \
46
+ r = virConnectNumOf##objs(ruby_libvirt_connect_get(c)); \
47
+ ruby_libvirt_raise_error_if(r < 0, e_RetrieveError, "virConnectNumOf" # objs, ruby_libvirt_connect_get(c)); \
48
+ return INT2NUM(r); \
49
+ } while(0)
50
+
51
+ /*
52
+ * Generate a call to a virConnectList... function. C is the Ruby VALUE
53
+ * holding the connection and OBJS is a token indicating what objects to
54
+ * get the number of, e.g. 'Domains' The list function must return an array
55
+ * of strings, which is returned as a Ruby array
56
+ */
57
+ #define gen_conn_list_names(c, objs) \
58
+ do { \
59
+ int r, num; \
60
+ char **names; \
61
+ num = virConnectNumOf##objs(ruby_libvirt_connect_get(c)); \
62
+ ruby_libvirt_raise_error_if(num < 0, e_RetrieveError, "virConnectNumOf" # objs, ruby_libvirt_connect_get(c)); \
63
+ if (num == 0) { \
64
+ /* if num is 0, don't call virConnectList* function */ \
65
+ return rb_ary_new2(num); \
66
+ } \
67
+ names = alloca(sizeof(char *) * num); \
68
+ r = virConnectList##objs(ruby_libvirt_connect_get(c), names, num); \
69
+ ruby_libvirt_raise_error_if(r < 0, e_RetrieveError, "virConnectList" # objs, ruby_libvirt_connect_get(c)); \
70
+ return ruby_libvirt_generate_list(num, names); \
71
+ } while(0)
28
72
 
29
73
  static VALUE c_connect;
30
- static VALUE c_node_security_model;
74
+ VALUE c_node_security_model;
31
75
  static VALUE c_node_info;
32
76
 
33
- static void connect_close(void *p) {
77
+ static void connect_close(void *c)
78
+ {
34
79
  int r;
35
80
 
36
- if (!p)
81
+ if (!c) {
37
82
  return;
38
- r = virConnectClose((virConnectPtr) p);
39
- _E(r < 0, create_error(rb_eSystemCallError, "virConnectClose", p));
40
- }
41
-
42
- VALUE connect_new(virConnectPtr p) {
43
- return Data_Wrap_Struct(c_connect, NULL, connect_close, p);
83
+ }
84
+ r = virConnectClose((virConnectPtr) c);
85
+ ruby_libvirt_raise_error_if(r < 0, rb_eSystemCallError, "virConnectClose",
86
+ c);
44
87
  }
45
88
 
46
- virConnectPtr connect_get(VALUE s) {
47
- generic_get(Connect, s);
89
+ VALUE ruby_libvirt_connect_new(virConnectPtr c)
90
+ {
91
+ return Data_Wrap_Struct(c_connect, NULL, connect_close, c);
48
92
  }
49
93
 
50
- VALUE conn_attr(VALUE s) {
51
- if (rb_obj_is_instance_of(s, c_connect) != Qtrue) {
52
- s = rb_iv_get(s, "@connection");
94
+ VALUE ruby_libvirt_conn_attr(VALUE c)
95
+ {
96
+ if (rb_obj_is_instance_of(c, c_connect) != Qtrue) {
97
+ c = rb_iv_get(c, "@connection");
53
98
  }
54
- if (rb_obj_is_instance_of(s, c_connect) != Qtrue) {
99
+ if (rb_obj_is_instance_of(c, c_connect) != Qtrue) {
55
100
  rb_raise(rb_eArgError, "Expected Connection object");
56
101
  }
57
- return s;
102
+ return c;
58
103
  }
59
104
 
60
- virConnectPtr conn(VALUE s) {
61
- virConnectPtr conn;
62
-
63
- s = conn_attr(s);
64
- Data_Get_Struct(s, virConnect, conn);
65
- if (!conn)
66
- rb_raise(rb_eArgError, "Connection has been closed");
67
- return conn;
105
+ virConnectPtr ruby_libvirt_connect_get(VALUE c)
106
+ {
107
+ c = ruby_libvirt_conn_attr(c);
108
+ ruby_libvirt_get_struct(Connect, c);
68
109
  }
69
110
 
70
111
  /*
71
112
  * call-seq:
72
113
  * conn.close -> nil
73
114
  *
74
- * Call +virConnectClose+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectClose]
115
+ * Call virConnectClose[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectClose]
75
116
  * to close the connection.
76
117
  */
77
- static VALUE libvirt_conn_close(VALUE s) {
118
+ static VALUE libvirt_connect_close(VALUE c)
119
+ {
78
120
  virConnectPtr conn;
79
- Data_Get_Struct(s, virConnect, conn);
121
+
122
+ Data_Get_Struct(c, virConnect, conn);
80
123
  if (conn) {
81
124
  connect_close(conn);
82
- DATA_PTR(s) = NULL;
125
+ DATA_PTR(c) = NULL;
83
126
  }
84
127
  return Qnil;
85
128
  }
@@ -90,38 +133,43 @@ static VALUE libvirt_conn_close(VALUE s) {
90
133
  *
91
134
  * Return +true+ if the connection is closed, +false+ if it is open.
92
135
  */
93
- static VALUE libvirt_conn_closed_p(VALUE s) {
136
+ static VALUE libvirt_connect_closed_p(VALUE c)
137
+ {
94
138
  virConnectPtr conn;
95
139
 
96
- Data_Get_Struct(s, virConnect, conn);
97
- return (conn==NULL) ? Qtrue : Qfalse;
140
+ Data_Get_Struct(c, virConnect, conn);
141
+ return (conn == NULL) ? Qtrue : Qfalse;
98
142
  }
99
143
 
100
144
  /*
101
145
  * call-seq:
102
146
  * conn.type -> string
103
147
  *
104
- * Call +virConnectGetType+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectGetType]
148
+ * Call virConnectGetType[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectGetType]
105
149
  * to retrieve the type of hypervisor for this connection.
106
150
  */
107
- static VALUE libvirt_conn_type(VALUE s) {
108
- gen_call_string(virConnectGetType, conn(s), 0, connect_get(s));
151
+ static VALUE libvirt_connect_type(VALUE c)
152
+ {
153
+ ruby_libvirt_generate_call_string(virConnectGetType,
154
+ ruby_libvirt_connect_get(c), 0,
155
+ ruby_libvirt_connect_get(c));
109
156
  }
110
157
 
111
158
  /*
112
159
  * call-seq:
113
160
  * conn.version -> fixnum
114
161
  *
115
- * Call +virConnectGetVersion+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectGetVersion]
162
+ * Call virConnectGetVersion[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectGetVersion]
116
163
  * to retrieve the version of the hypervisor for this connection.
117
164
  */
118
- static VALUE libvirt_conn_version(VALUE s) {
165
+ static VALUE libvirt_connect_version(VALUE c)
166
+ {
119
167
  int r;
120
168
  unsigned long v;
121
- virConnectPtr conn = connect_get(s);
122
169
 
123
- r = virConnectGetVersion(conn, &v);
124
- _E(r < 0, create_error(e_RetrieveError, "virConnectGetVersion", conn));
170
+ r = virConnectGetVersion(ruby_libvirt_connect_get(c), &v);
171
+ ruby_libvirt_raise_error_if(r < 0, e_RetrieveError, "virConnectGetVersion",
172
+ ruby_libvirt_connect_get(c));
125
173
 
126
174
  return ULONG2NUM(v);
127
175
  }
@@ -131,16 +179,18 @@ static VALUE libvirt_conn_version(VALUE s) {
131
179
  * call-seq:
132
180
  * conn.libversion -> fixnum
133
181
  *
134
- * Call +virConnectGetLibVersion+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectGetLibVersion]
182
+ * Call virConnectGetLibVersion[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectGetLibVersion]
135
183
  * to retrieve the version of the libvirt library for this connection.
136
184
  */
137
- static VALUE libvirt_conn_libversion(VALUE s) {
185
+ static VALUE libvirt_connect_libversion(VALUE c)
186
+ {
138
187
  int r;
139
188
  unsigned long v;
140
- virConnectPtr conn = connect_get(s);
141
189
 
142
- r = virConnectGetLibVersion(conn, &v);
143
- _E(r < 0, create_error(e_RetrieveError, "virConnectGetLibVersion", conn));
190
+ r = virConnectGetLibVersion(ruby_libvirt_connect_get(c), &v);
191
+ ruby_libvirt_raise_error_if(r < 0, e_RetrieveError,
192
+ "virConnectGetLibVersion",
193
+ ruby_libvirt_connect_get(c));
144
194
 
145
195
  return ULONG2NUM(v);
146
196
  }
@@ -150,56 +200,66 @@ static VALUE libvirt_conn_libversion(VALUE s) {
150
200
  * call-seq:
151
201
  * conn.hostname -> string
152
202
  *
153
- * Call +virConnectGetHostname+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectGetHostname]
203
+ * Call virConnectGetHostname[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectGetHostname]
154
204
  * to retrieve the hostname of the hypervisor for this connection.
155
205
  */
156
- static VALUE libvirt_conn_hostname(VALUE s) {
157
- gen_call_string(virConnectGetHostname, conn(s), 1, connect_get(s));
206
+ static VALUE libvirt_connect_hostname(VALUE c)
207
+ {
208
+ ruby_libvirt_generate_call_string(virConnectGetHostname,
209
+ ruby_libvirt_connect_get(c), 1,
210
+ ruby_libvirt_connect_get(c));
158
211
  }
159
212
 
160
213
  /*
161
214
  * call-seq:
162
215
  * conn.uri -> string
163
216
  *
164
- * Call +virConnectGetURI+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectGetURI]
217
+ * Call virConnectGetURI[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectGetURI]
165
218
  * to retrieve the canonical URI for this connection.
166
219
  */
167
- static VALUE libvirt_conn_uri(VALUE s) {
168
- gen_call_string(virConnectGetURI, conn(s), 1, connect_get(s));
220
+ static VALUE libvirt_connect_uri(VALUE c)
221
+ {
222
+ ruby_libvirt_generate_call_string(virConnectGetURI,
223
+ ruby_libvirt_connect_get(c), 1,
224
+ ruby_libvirt_connect_get(c));
169
225
  }
170
226
 
171
227
  /*
172
228
  * call-seq:
173
229
  * conn.max_vcpus(type=nil) -> fixnum
174
230
  *
175
- * Call +virConnectGetMaxVcpus+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectGetMaxVcpus]
231
+ * Call virConnectGetMaxVcpus[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectGetMaxVcpus]
176
232
  * to retrieve the maximum number of virtual cpus supported by the hypervisor
177
233
  * for this connection.
178
234
  */
179
- static VALUE libvirt_conn_max_vcpus(int argc, VALUE *argv, VALUE s) {
235
+ static VALUE libvirt_connect_max_vcpus(int argc, VALUE *argv, VALUE c)
236
+ {
180
237
  VALUE type;
181
238
 
182
239
  rb_scan_args(argc, argv, "01", &type);
183
240
 
184
- gen_call_int(virConnectGetMaxVcpus, conn(s), connect_get(s),
185
- get_string_or_nil(type));
241
+ ruby_libvirt_generate_call_int(virConnectGetMaxVcpus,
242
+ ruby_libvirt_connect_get(c),
243
+ ruby_libvirt_connect_get(c),
244
+ ruby_libvirt_get_cstring_or_null(type));
186
245
  }
187
246
 
188
247
  /*
189
248
  * call-seq:
190
- * conn.node_get_info -> Libvirt::Connect::Nodeinfo
249
+ * conn.node_info -> Libvirt::Connect::Nodeinfo
191
250
  *
192
- * Call +virNodeGetInfo+[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeGetInfo]
251
+ * Call virNodeGetInfo[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeGetInfo]
193
252
  * to retrieve information about the node for this connection.
194
253
  */
195
- static VALUE libvirt_conn_node_get_info(VALUE s) {
254
+ static VALUE libvirt_connect_node_info(VALUE c)
255
+ {
196
256
  int r;
197
- virConnectPtr conn = connect_get(s);
198
257
  virNodeInfo nodeinfo;
199
258
  VALUE result;
200
259
 
201
- r = virNodeGetInfo(conn, &nodeinfo);
202
- _E(r < 0, create_error(e_RetrieveError, "virNodeGetInfo", conn));
260
+ r = virNodeGetInfo(ruby_libvirt_connect_get(c), &nodeinfo);
261
+ ruby_libvirt_raise_error_if(r < 0, e_RetrieveError, "virNodeGetInfo",
262
+ ruby_libvirt_connect_get(c));
203
263
 
204
264
  result = rb_class_new_instance(0, NULL, c_node_info);
205
265
  rb_iv_set(result, "@model", rb_str_new2(nodeinfo.model));
@@ -218,18 +278,19 @@ static VALUE libvirt_conn_node_get_info(VALUE s) {
218
278
  * call-seq:
219
279
  * conn.node_free_memory -> fixnum
220
280
  *
221
- * Call +virNodeGetFreeMemory+[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeGetFreeMemory]
281
+ * Call virNodeGetFreeMemory[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeGetFreeMemory]
222
282
  * to retrieve the amount of free memory available on the host for this
223
283
  * connection.
224
284
  */
225
- static VALUE libvirt_conn_node_free_memory(VALUE s) {
226
- virConnectPtr conn = connect_get(s);
285
+ static VALUE libvirt_connect_node_free_memory(VALUE c)
286
+ {
227
287
  unsigned long long freemem;
228
288
 
229
- freemem = virNodeGetFreeMemory(conn);
289
+ freemem = virNodeGetFreeMemory(ruby_libvirt_connect_get(c));
230
290
 
231
- _E(freemem == 0, create_error(e_RetrieveError, "virNodeGetFreeMemory",
232
- conn));
291
+ ruby_libvirt_raise_error_if(freemem == 0, e_RetrieveError,
292
+ "virNodeGetFreeMemory",
293
+ ruby_libvirt_connect_get(c));
233
294
 
234
295
  return ULL2NUM(freemem);
235
296
  }
@@ -238,49 +299,50 @@ static VALUE libvirt_conn_node_free_memory(VALUE s) {
238
299
  * call-seq:
239
300
  * conn.node_cells_free_memory(startCell=0, maxCells=#nodeCells) -> list
240
301
  *
241
- * Call +virNodeGetCellsFreeMemory+[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeGetCellsFreeMemory]
302
+ * Call virNodeGetCellsFreeMemory[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeGetCellsFreeMemory]
242
303
  * to retrieve the amount of free memory in each NUMA cell on the host for
243
304
  * this connection.
244
305
  */
245
- static VALUE libvirt_conn_node_cells_free_memory(int argc, VALUE *argv,
246
- VALUE s) {
247
- int r;
248
- virConnectPtr conn = connect_get(s);
249
- VALUE cells;
250
- VALUE start, max;
306
+ static VALUE libvirt_connect_node_cells_free_memory(int argc, VALUE *argv,
307
+ VALUE c)
308
+ {
309
+ int i, r;
310
+ VALUE cells, start, max;
251
311
  unsigned long long *freeMems;
252
312
  virNodeInfo nodeinfo;
253
- int i;
254
313
  unsigned int startCell, maxCells;
255
314
 
256
315
  rb_scan_args(argc, argv, "02", &start, &max);
257
316
 
258
- if (NIL_P(start))
317
+ if (NIL_P(start)) {
259
318
  startCell = 0;
260
- else
319
+ }
320
+ else {
261
321
  startCell = NUM2UINT(start);
322
+ }
262
323
 
263
324
  if (NIL_P(max)) {
264
- r = virNodeGetInfo(conn, &nodeinfo);
265
- _E(r < 0, create_error(e_RetrieveError, "virNodeGetInfo", conn));
325
+ r = virNodeGetInfo(ruby_libvirt_connect_get(c), &nodeinfo);
326
+ ruby_libvirt_raise_error_if(r < 0, e_RetrieveError, "virNodeGetInfo",
327
+ ruby_libvirt_connect_get(c));
266
328
  maxCells = nodeinfo.nodes;
267
329
  }
268
- else
330
+ else {
269
331
  maxCells = NUM2UINT(max);
332
+ }
270
333
 
271
- freeMems = ALLOC_N(unsigned long long, maxCells);
334
+ freeMems = alloca(sizeof(unsigned long long) * maxCells);
272
335
 
273
- r = virNodeGetCellsFreeMemory(conn, freeMems, startCell, maxCells);
274
- if (r < 0) {
275
- xfree(freeMems);
276
- rb_exc_raise(create_error(e_RetrieveError, "virNodeGetCellsFreeMemory",
277
- conn));
278
- }
336
+ r = virNodeGetCellsFreeMemory(ruby_libvirt_connect_get(c), freeMems,
337
+ startCell, maxCells);
338
+ ruby_libvirt_raise_error_if(r < 0, e_RetrieveError,
339
+ "virNodeGetCellsFreeMemory",
340
+ ruby_libvirt_connect_get(c));
279
341
 
280
342
  cells = rb_ary_new2(r);
281
- for (i = 0; i < r; i++)
282
- rb_ary_push(cells, ULL2NUM(freeMems[i]));
283
- xfree(freeMems);
343
+ for (i = 0; i < r; i++) {
344
+ rb_ary_store(cells, i, ULL2NUM(freeMems[i]));
345
+ }
284
346
 
285
347
  return cells;
286
348
  }
@@ -288,19 +350,21 @@ static VALUE libvirt_conn_node_cells_free_memory(int argc, VALUE *argv,
288
350
  #if HAVE_VIRNODEGETSECURITYMODEL
289
351
  /*
290
352
  * call-seq:
291
- * conn.node_get_security_model -> Libvirt::Connect::NodeSecurityModel
353
+ * conn.node_security_model -> Libvirt::Connect::NodeSecurityModel
292
354
  *
293
- * Call +virNodeGetSecurityModel+[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeGetSecurityModel]
355
+ * Call virNodeGetSecurityModel[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeGetSecurityModel]
294
356
  * to retrieve the security model in use on the host for this connection.
295
357
  */
296
- static VALUE libvirt_conn_node_get_security_model(VALUE s) {
358
+ static VALUE libvirt_connect_node_security_model(VALUE c)
359
+ {
297
360
  virSecurityModel secmodel;
298
- virConnectPtr conn = connect_get(s);
299
361
  int r;
300
362
  VALUE result;
301
363
 
302
- r = virNodeGetSecurityModel(conn, &secmodel);
303
- _E(r < 0, create_error(e_RetrieveError, "virNodeGetSecurityModel", conn));
364
+ r = virNodeGetSecurityModel(ruby_libvirt_connect_get(c), &secmodel);
365
+ ruby_libvirt_raise_error_if(r < 0, e_RetrieveError,
366
+ "virNodeGetSecurityModel",
367
+ ruby_libvirt_connect_get(c));
304
368
 
305
369
  result = rb_class_new_instance(0, NULL, c_node_security_model);
306
370
  rb_iv_set(result, "@model", rb_str_new2(secmodel.model));
@@ -315,11 +379,14 @@ static VALUE libvirt_conn_node_get_security_model(VALUE s) {
315
379
  * call-seq:
316
380
  * conn.encrypted? -> [True|False]
317
381
  *
318
- * Call +virConnectIsEncrypted+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectIsEncrypted]
382
+ * Call virConnectIsEncrypted[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectIsEncrypted]
319
383
  * to determine if the connection is encrypted.
320
384
  */
321
- static VALUE libvirt_conn_encrypted_p(VALUE s) {
322
- gen_call_truefalse(virConnectIsEncrypted, conn(s), connect_get(s));
385
+ static VALUE libvirt_connect_encrypted_p(VALUE c)
386
+ {
387
+ ruby_libvirt_generate_call_truefalse(virConnectIsEncrypted,
388
+ ruby_libvirt_connect_get(c),
389
+ ruby_libvirt_connect_get(c));
323
390
  }
324
391
  #endif
325
392
 
@@ -328,11 +395,14 @@ static VALUE libvirt_conn_encrypted_p(VALUE s) {
328
395
  * call-seq:
329
396
  * conn.secure? -> [True|False]
330
397
  *
331
- * Call +virConnectIsSecure+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectIsSecure]
398
+ * Call virConnectIsSecure[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectIsSecure]
332
399
  * to determine if the connection is secure.
333
400
  */
334
- static VALUE libvirt_conn_secure_p(VALUE s) {
335
- gen_call_truefalse(virConnectIsSecure, conn(s), connect_get(s));
401
+ static VALUE libvirt_connect_secure_p(VALUE c)
402
+ {
403
+ ruby_libvirt_generate_call_truefalse(virConnectIsSecure,
404
+ ruby_libvirt_connect_get(c),
405
+ ruby_libvirt_connect_get(c));
336
406
  }
337
407
  #endif
338
408
 
@@ -340,11 +410,14 @@ static VALUE libvirt_conn_secure_p(VALUE s) {
340
410
  * call-seq:
341
411
  * conn.capabilities -> string
342
412
  *
343
- * Call +virConnectGetCapabilities+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectGetCapabilities]
413
+ * Call virConnectGetCapabilities[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectGetCapabilities]
344
414
  * to retrieve the capabilities XML for this connection.
345
415
  */
346
- static VALUE libvirt_conn_capabilities(VALUE s) {
347
- gen_call_string(virConnectGetCapabilities, conn(s), 1, connect_get(s));
416
+ static VALUE libvirt_connect_capabilities(VALUE c)
417
+ {
418
+ ruby_libvirt_generate_call_string(virConnectGetCapabilities,
419
+ ruby_libvirt_connect_get(c), 1,
420
+ ruby_libvirt_connect_get(c));
348
421
  }
349
422
 
350
423
  #if HAVE_VIRCONNECTCOMPARECPU
@@ -352,20 +425,22 @@ static VALUE libvirt_conn_capabilities(VALUE s) {
352
425
  * call-seq:
353
426
  * conn.compare_cpu(xml, flags=0) -> compareflag
354
427
  *
355
- * Call +virConnectCompareCPU+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectCompareCPU]
428
+ * Call virConnectCompareCPU[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectCompareCPU]
356
429
  * to compare the host CPU with the XML contained in xml. Returns one of
357
430
  * Libvirt::CPU_COMPARE_ERROR, Libvirt::CPU_COMPARE_INCOMPATIBLE,
358
431
  * Libvirt::CPU_COMPARE_IDENTICAL, or Libvirt::CPU_COMPARE_SUPERSET.
359
432
  */
360
- static VALUE libvirt_conn_compare_cpu(int argc, VALUE *argv, VALUE s) {
433
+ static VALUE libvirt_connect_compare_cpu(int argc, VALUE *argv, VALUE c)
434
+ {
361
435
  VALUE xml, flags;
362
436
 
363
437
  rb_scan_args(argc, argv, "11", &xml, &flags);
364
- if (NIL_P(flags))
365
- flags = INT2NUM(0);
366
438
 
367
- gen_call_int(virConnectCompareCPU, conn(s), connect_get(s),
368
- StringValueCStr(xml), NUM2UINT(flags));
439
+ ruby_libvirt_generate_call_int(virConnectCompareCPU,
440
+ ruby_libvirt_connect_get(c),
441
+ ruby_libvirt_connect_get(c),
442
+ StringValueCStr(xml),
443
+ ruby_libvirt_value_to_uint(flags));
369
444
  }
370
445
  #endif
371
446
 
@@ -375,70 +450,48 @@ static VALUE libvirt_conn_compare_cpu(int argc, VALUE *argv, VALUE s) {
375
450
  * call-seq:
376
451
  * conn.baseline_cpu([xml, xml2, ...], flags=0) -> XML
377
452
  *
378
- * Call +virConnectBaselineCPU+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectBaselineCPU]
453
+ * Call virConnectBaselineCPU[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectBaselineCPU]
379
454
  * to compare the most feature-rich CPU which is compatible with all
380
455
  * given host CPUs.
381
456
  */
382
- static VALUE libvirt_conn_baseline_cpu(int argc, VALUE *argv, VALUE s) {
383
- VALUE xmlcpus, flags_val;
384
- virConnectPtr conn = connect_get(s);
457
+ static VALUE libvirt_connect_baseline_cpu(int argc, VALUE *argv, VALUE c)
458
+ {
459
+ VALUE xmlcpus, flags, retval, entry;
385
460
  char *r;
386
- VALUE retval;
387
- unsigned int ncpus, flags;
388
- VALUE entry;
461
+ unsigned int ncpus;
389
462
  const char **xmllist;
390
- int i;
391
- int exception = 0;
392
- struct rb_ary_entry_arg arg;
463
+ int i, exception = 0;
393
464
 
394
- rb_scan_args(argc, argv, "11", &xmlcpus, &flags_val);
395
- /*
396
- * We check flags up-front here so that we get a TypeError early on if
397
- * flags is bogus.
398
- */
399
- if (NIL_P(flags_val))
400
- flags = 0;
401
- else
402
- flags = NUM2UINT(flags_val);
465
+ rb_scan_args(argc, argv, "11", &xmlcpus, &flags);
403
466
 
404
467
  Check_Type(xmlcpus, T_ARRAY);
405
468
 
406
- if (RARRAY_LEN(xmlcpus) < 1)
407
- rb_raise(rb_eArgError, "wrong number of cpu arguments (%d for 1 or more)",
469
+ if (RARRAY_LEN(xmlcpus) < 1) {
470
+ rb_raise(rb_eArgError,
471
+ "wrong number of cpu arguments (%ld for 1 or more)",
408
472
  RARRAY_LEN(xmlcpus));
473
+ }
409
474
 
410
475
  ncpus = RARRAY_LEN(xmlcpus);
411
- xmllist = ALLOC_N(const char *, ncpus);
476
+ xmllist = alloca(sizeof(const char *) * ncpus);
412
477
 
413
478
  for (i = 0; i < ncpus; i++) {
414
- arg.arr = xmlcpus;
415
- arg.elem = i;
416
- entry = rb_protect(rb_ary_entry_wrap, (VALUE)&arg, &exception);
417
- if (exception) {
418
- xfree(xmllist);
419
- rb_jump_tag(exception);
420
- }
421
-
422
- xmllist[i] = (char *)rb_protect(rb_string_value_cstr_wrap,
423
- (VALUE)&entry, &exception);
424
- if (exception) {
425
- xfree(xmllist);
426
- rb_jump_tag(exception);
427
- }
479
+ entry = rb_ary_entry(xmlcpus, i);
480
+ xmllist[i] = StringValueCStr(entry);
428
481
  }
429
482
 
430
- r = virConnectBaselineCPU(conn, xmllist, ncpus, flags);
431
- xfree(xmllist);
432
- _E(r == NULL, create_error(e_RetrieveError, "virConnectBaselineCPU", conn));
483
+ r = virConnectBaselineCPU(ruby_libvirt_connect_get(c), xmllist, ncpus,
484
+ ruby_libvirt_value_to_uint(flags));
485
+ ruby_libvirt_raise_error_if(r == NULL, e_RetrieveError,
486
+ "virConnectBaselineCPU",
487
+ ruby_libvirt_connect_get(c));
433
488
 
434
- retval = rb_protect(rb_str_new2_wrap, (VALUE)&r, &exception);
489
+ retval = rb_protect(ruby_libvirt_str_new2_wrap, (VALUE)&r, &exception);
490
+ free(r);
435
491
  if (exception) {
436
- free(r);
437
492
  rb_jump_tag(exception);
438
493
  }
439
494
 
440
- free(r);
441
-
442
495
  return retval;
443
496
  }
444
497
  #endif
@@ -446,34 +499,36 @@ static VALUE libvirt_conn_baseline_cpu(int argc, VALUE *argv, VALUE s) {
446
499
  #if HAVE_VIRCONNECTDOMAINEVENTREGISTERANY || HAVE_VIRCONNECTDOMAINEVENTREGISTER
447
500
  static int domain_event_lifecycle_callback(virConnectPtr conn,
448
501
  virDomainPtr dom, int event,
449
- int detail, void *opaque) {
502
+ int detail, void *opaque)
503
+ {
450
504
  VALUE passthrough = (VALUE)opaque;
451
- VALUE cb;
452
- VALUE cb_opaque;
453
- VALUE newc;
505
+ VALUE cb, cb_opaque, newc;
454
506
 
455
- if (TYPE(passthrough) != T_ARRAY)
456
- rb_raise(rb_eTypeError,
457
- "wrong domain event lifecycle callback argument type (expected Array)");
507
+ Check_Type(passthrough, T_ARRAY);
458
508
 
459
- if (RARRAY_LEN(passthrough) != 2)
460
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
509
+ if (RARRAY_LEN(passthrough) != 2) {
510
+ rb_raise(rb_eArgError, "wrong number of arguments (%ld for 2)",
461
511
  RARRAY_LEN(passthrough));
512
+ }
462
513
 
463
514
  cb = rb_ary_entry(passthrough, 0);
464
515
  cb_opaque = rb_ary_entry(passthrough, 1);
465
516
 
466
- newc = connect_new(conn);
467
- if (strcmp(rb_obj_classname(cb), "Symbol") == 0)
517
+ newc = ruby_libvirt_connect_new(conn);
518
+ if (strcmp(rb_obj_classname(cb), "Symbol") == 0) {
468
519
  rb_funcall(rb_class_of(cb), rb_to_id(cb), 5, newc,
469
- domain_new(dom, newc), INT2NUM(event), INT2NUM(detail),
470
- cb_opaque);
471
- else if (strcmp(rb_obj_classname(cb), "Proc") == 0)
472
- rb_funcall(cb, rb_intern("call"), 5, newc, domain_new(dom, newc),
473
- INT2NUM(event), INT2NUM(detail), cb_opaque);
474
- else
520
+ ruby_libvirt_domain_new(dom, newc), INT2NUM(event),
521
+ INT2NUM(detail), cb_opaque);
522
+ }
523
+ else if (strcmp(rb_obj_classname(cb), "Proc") == 0) {
524
+ rb_funcall(cb, rb_intern("call"), 5, newc,
525
+ ruby_libvirt_domain_new(dom, newc), INT2NUM(event),
526
+ INT2NUM(detail), cb_opaque);
527
+ }
528
+ else {
475
529
  rb_raise(rb_eTypeError,
476
530
  "wrong domain event lifecycle callback (expected Symbol or Proc)");
531
+ }
477
532
 
478
533
  return 0;
479
534
  }
@@ -481,97 +536,104 @@ static int domain_event_lifecycle_callback(virConnectPtr conn,
481
536
 
482
537
  #if HAVE_VIRCONNECTDOMAINEVENTREGISTERANY
483
538
  static int domain_event_reboot_callback(virConnectPtr conn, virDomainPtr dom,
484
- void *opaque) {
539
+ void *opaque)
540
+ {
485
541
  VALUE passthrough = (VALUE)opaque;
486
- VALUE cb;
487
- VALUE cb_opaque;
488
- VALUE newc;
542
+ VALUE cb, cb_opaque, newc;
489
543
 
490
- if (TYPE(passthrough) != T_ARRAY)
491
- rb_raise(rb_eTypeError,
492
- "wrong domain event reboot callback argument type (expected Array)");
544
+ Check_Type(passthrough, T_ARRAY);
493
545
 
494
- if (RARRAY_LEN(passthrough) != 2)
495
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
546
+ if (RARRAY_LEN(passthrough) != 2) {
547
+ rb_raise(rb_eArgError, "wrong number of arguments (%ld for 2)",
496
548
  RARRAY_LEN(passthrough));
549
+ }
497
550
 
498
551
  cb = rb_ary_entry(passthrough, 0);
499
552
  cb_opaque = rb_ary_entry(passthrough, 1);
500
553
 
501
- newc = connect_new(conn);
502
- if (strcmp(rb_obj_classname(cb), "Symbol") == 0)
554
+ newc = ruby_libvirt_connect_new(conn);
555
+ if (strcmp(rb_obj_classname(cb), "Symbol") == 0) {
503
556
  rb_funcall(rb_class_of(cb), rb_to_id(cb), 3, newc,
504
- domain_new(dom, newc), cb_opaque);
505
- else if (strcmp(rb_obj_classname(cb), "Proc") == 0)
506
- rb_funcall(cb, rb_intern("call"), 3, newc, domain_new(dom, newc),
507
- cb_opaque);
508
- else
557
+ ruby_libvirt_domain_new(dom, newc), cb_opaque);
558
+ }
559
+ else if (strcmp(rb_obj_classname(cb), "Proc") == 0) {
560
+ rb_funcall(cb, rb_intern("call"), 3, newc,
561
+ ruby_libvirt_domain_new(dom, newc), cb_opaque);
562
+ }
563
+ else {
509
564
  rb_raise(rb_eTypeError,
510
565
  "wrong domain event reboot callback (expected Symbol or Proc)");
566
+ }
511
567
 
512
568
  return 0;
513
569
  }
514
570
 
515
571
  static int domain_event_rtc_callback(virConnectPtr conn, virDomainPtr dom,
516
- long long utc_offset, void *opaque) {
572
+ long long utc_offset, void *opaque)
573
+ {
517
574
  VALUE passthrough = (VALUE)opaque;
518
- VALUE cb;
519
- VALUE cb_opaque;
520
- VALUE newc;
575
+ VALUE cb, cb_opaque, newc;
521
576
 
522
- if (TYPE(passthrough) != T_ARRAY)
523
- rb_raise(rb_eTypeError,
524
- "wrong domain event rtc callback argument type (expected Array)");
577
+ Check_Type(passthrough, T_ARRAY);
525
578
 
526
- if (RARRAY_LEN(passthrough) != 2)
527
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
579
+ if (RARRAY_LEN(passthrough) != 2) {
580
+ rb_raise(rb_eArgError, "wrong number of arguments (%ld for 2)",
528
581
  RARRAY_LEN(passthrough));
582
+ }
529
583
 
530
584
  cb = rb_ary_entry(passthrough, 0);
531
585
  cb_opaque = rb_ary_entry(passthrough, 1);
532
586
 
533
- newc = connect_new(conn);
534
- if (strcmp(rb_obj_classname(cb), "Symbol") == 0)
587
+ newc = ruby_libvirt_connect_new(conn);
588
+ if (strcmp(rb_obj_classname(cb), "Symbol") == 0) {
535
589
  rb_funcall(rb_class_of(cb), rb_to_id(cb), 4, newc,
536
- domain_new(dom, newc), LL2NUM(utc_offset), cb_opaque);
537
- else if (strcmp(rb_obj_classname(cb), "Proc") == 0)
538
- rb_funcall(cb, rb_intern("call"), 4, newc, domain_new(dom, newc),
539
- LL2NUM(utc_offset), cb_opaque);
540
- else
590
+ ruby_libvirt_domain_new(dom, newc), LL2NUM(utc_offset),
591
+ cb_opaque);
592
+ }
593
+ else if (strcmp(rb_obj_classname(cb), "Proc") == 0) {
594
+ rb_funcall(cb, rb_intern("call"), 4, newc,
595
+ ruby_libvirt_domain_new(dom, newc), LL2NUM(utc_offset),
596
+ cb_opaque);
597
+ }
598
+ else {
541
599
  rb_raise(rb_eTypeError,
542
600
  "wrong domain event rtc callback (expected Symbol or Proc)");
601
+ }
543
602
 
544
603
  return 0;
545
604
  }
546
605
 
547
606
  static int domain_event_watchdog_callback(virConnectPtr conn, virDomainPtr dom,
548
- int action, void *opaque) {
607
+ int action, void *opaque)
608
+ {
549
609
  VALUE passthrough = (VALUE)opaque;
550
- VALUE cb;
551
- VALUE cb_opaque;
552
- VALUE newc;
610
+ VALUE cb, cb_opaque, newc;
553
611
 
554
- if (TYPE(passthrough) != T_ARRAY)
555
- rb_raise(rb_eTypeError,
556
- "wrong domain event watchdog callback argument type (expected Array)");
612
+ Check_Type(passthrough, T_ARRAY);
557
613
 
558
- if (RARRAY_LEN(passthrough) != 2)
559
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
614
+ if (RARRAY_LEN(passthrough) != 2) {
615
+ rb_raise(rb_eArgError, "wrong number of arguments (%ld for 2)",
560
616
  RARRAY_LEN(passthrough));
617
+ }
561
618
 
562
619
  cb = rb_ary_entry(passthrough, 0);
563
620
  cb_opaque = rb_ary_entry(passthrough, 1);
564
621
 
565
- newc = connect_new(conn);
566
- if (strcmp(rb_obj_classname(cb), "Symbol") == 0)
622
+ newc = ruby_libvirt_connect_new(conn);
623
+ if (strcmp(rb_obj_classname(cb), "Symbol") == 0) {
567
624
  rb_funcall(rb_class_of(cb), rb_to_id(cb), 4, newc,
568
- domain_new(dom, newc), INT2NUM(action), cb_opaque);
569
- else if (strcmp(rb_obj_classname(cb), "Proc") == 0)
570
- rb_funcall(cb, rb_intern("call"), 4, newc, domain_new(dom, newc),
571
- INT2NUM(action), cb_opaque);
572
- else
625
+ ruby_libvirt_domain_new(dom, newc), INT2NUM(action),
626
+ cb_opaque);
627
+ }
628
+ else if (strcmp(rb_obj_classname(cb), "Proc") == 0) {
629
+ rb_funcall(cb, rb_intern("call"), 4, newc,
630
+ ruby_libvirt_domain_new(dom, newc), INT2NUM(action),
631
+ cb_opaque);
632
+ }
633
+ else {
573
634
  rb_raise(rb_eTypeError,
574
635
  "wrong domain event watchdog callback (expected Symbol or Proc)");
636
+ }
575
637
 
576
638
  return 0;
577
639
  }
@@ -580,35 +642,37 @@ static int domain_event_io_error_callback(virConnectPtr conn, virDomainPtr dom,
580
642
  const char *src_path,
581
643
  const char *dev_alias,
582
644
  int action,
583
- void *opaque) {
645
+ void *opaque)
646
+ {
584
647
  VALUE passthrough = (VALUE)opaque;
585
- VALUE cb;
586
- VALUE cb_opaque;
587
- VALUE newc;
648
+ VALUE cb, cb_opaque, newc;
588
649
 
589
- if (TYPE(passthrough) != T_ARRAY)
590
- rb_raise(rb_eTypeError,
591
- "wrong domain event IO error callback argument type (expected Array)");
650
+ Check_Type(passthrough, T_ARRAY);
592
651
 
593
- if (RARRAY_LEN(passthrough) != 2)
594
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
652
+ if (RARRAY_LEN(passthrough) != 2) {
653
+ rb_raise(rb_eArgError, "wrong number of arguments (%ld for 2)",
595
654
  RARRAY_LEN(passthrough));
655
+ }
596
656
 
597
657
  cb = rb_ary_entry(passthrough, 0);
598
658
  cb_opaque = rb_ary_entry(passthrough, 1);
599
659
 
600
- newc = connect_new(conn);
601
- if (strcmp(rb_obj_classname(cb), "Symbol") == 0)
660
+ newc = ruby_libvirt_connect_new(conn);
661
+ if (strcmp(rb_obj_classname(cb), "Symbol") == 0) {
602
662
  rb_funcall(rb_class_of(cb), rb_to_id(cb), 6, newc,
603
- domain_new(dom, newc), rb_str_new2(src_path),
663
+ ruby_libvirt_domain_new(dom, newc), rb_str_new2(src_path),
604
664
  rb_str_new2(dev_alias), INT2NUM(action), cb_opaque);
605
- else if (strcmp(rb_obj_classname(cb), "Proc") == 0)
606
- rb_funcall(cb, rb_intern("call"), 6, newc, domain_new(dom, newc),
665
+ }
666
+ else if (strcmp(rb_obj_classname(cb), "Proc") == 0) {
667
+ rb_funcall(cb, rb_intern("call"), 6, newc,
668
+ ruby_libvirt_domain_new(dom, newc),
607
669
  rb_str_new2(src_path), rb_str_new2(dev_alias),
608
670
  INT2NUM(action), cb_opaque);
609
- else
671
+ }
672
+ else {
610
673
  rb_raise(rb_eTypeError,
611
674
  "wrong domain event IO error callback (expected Symbol or Proc)");
675
+ }
612
676
 
613
677
  return 0;
614
678
  }
@@ -619,36 +683,38 @@ static int domain_event_io_error_reason_callback(virConnectPtr conn,
619
683
  const char *dev_alias,
620
684
  int action,
621
685
  const char *reason,
622
- void *opaque) {
686
+ void *opaque)
687
+ {
623
688
  VALUE passthrough = (VALUE)opaque;
624
- VALUE cb;
625
- VALUE cb_opaque;
626
- VALUE newc;
689
+ VALUE cb, cb_opaque, newc;
627
690
 
628
- if (TYPE(passthrough) != T_ARRAY)
629
- rb_raise(rb_eTypeError,
630
- "wrong domain event IO error reason callback argument type (expected Array)");
691
+ Check_Type(passthrough, T_ARRAY);
631
692
 
632
- if (RARRAY_LEN(passthrough) != 2)
633
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
693
+ if (RARRAY_LEN(passthrough) != 2) {
694
+ rb_raise(rb_eArgError, "wrong number of arguments (%ld for 2)",
634
695
  RARRAY_LEN(passthrough));
696
+ }
635
697
 
636
698
  cb = rb_ary_entry(passthrough, 0);
637
699
  cb_opaque = rb_ary_entry(passthrough, 1);
638
700
 
639
- newc = connect_new(conn);
640
- if (strcmp(rb_obj_classname(cb), "Symbol") == 0)
701
+ newc = ruby_libvirt_connect_new(conn);
702
+ if (strcmp(rb_obj_classname(cb), "Symbol") == 0) {
641
703
  rb_funcall(rb_class_of(cb), rb_to_id(cb), 7, newc,
642
- domain_new(dom, newc), rb_str_new2(src_path),
704
+ ruby_libvirt_domain_new(dom, newc), rb_str_new2(src_path),
643
705
  rb_str_new2(dev_alias), INT2NUM(action),
644
706
  rb_str_new2(reason), cb_opaque);
645
- else if (strcmp(rb_obj_classname(cb), "Proc") == 0)
646
- rb_funcall(cb, rb_intern("call"), 7, newc, domain_new(dom, newc),
707
+ }
708
+ else if (strcmp(rb_obj_classname(cb), "Proc") == 0) {
709
+ rb_funcall(cb, rb_intern("call"), 7, newc,
710
+ ruby_libvirt_domain_new(dom, newc),
647
711
  rb_str_new2(src_path), rb_str_new2(dev_alias),
648
712
  INT2NUM(action), rb_str_new2(reason), cb_opaque);
649
- else
713
+ }
714
+ else {
650
715
  rb_raise(rb_eTypeError,
651
716
  "wrong domain event IO error reason callback (expected Symbol or Proc)");
717
+ }
652
718
 
653
719
  return 0;
654
720
  }
@@ -659,24 +725,18 @@ static int domain_event_graphics_callback(virConnectPtr conn, virDomainPtr dom,
659
725
  virDomainEventGraphicsAddressPtr remote,
660
726
  const char *authScheme,
661
727
  virDomainEventGraphicsSubjectPtr subject,
662
- void *opaque) {
728
+ void *opaque)
729
+ {
663
730
  VALUE passthrough = (VALUE)opaque;
664
- VALUE cb;
665
- VALUE cb_opaque;
666
- VALUE newc;
667
- VALUE local_hash;
668
- VALUE remote_hash;
669
- VALUE subject_array;
670
- VALUE pair;
731
+ VALUE cb, cb_opaque, newc, local_hash, remote_hash, subject_array, pair;
671
732
  int i;
672
733
 
673
- if (TYPE(passthrough) != T_ARRAY)
674
- rb_raise(rb_eTypeError,
675
- "wrong domain event graphics callback argument type (expected Array)");
734
+ Check_Type(passthrough, T_ARRAY);
676
735
 
677
- if (RARRAY_LEN(passthrough) != 2)
678
- rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
736
+ if (RARRAY_LEN(passthrough) != 2) {
737
+ rb_raise(rb_eArgError, "wrong number of arguments (%ld for 2)",
679
738
  RARRAY_LEN(passthrough));
739
+ }
680
740
 
681
741
  cb = rb_ary_entry(passthrough, 0);
682
742
  cb_opaque = rb_ary_entry(passthrough, 1);
@@ -702,19 +762,23 @@ static int domain_event_graphics_callback(virConnectPtr conn, virDomainPtr dom,
702
762
  rb_ary_store(subject_array, i, pair);
703
763
  }
704
764
 
705
- newc = connect_new(conn);
706
- if (strcmp(rb_obj_classname(cb), "Symbol") == 0)
765
+ newc = ruby_libvirt_connect_new(conn);
766
+ if (strcmp(rb_obj_classname(cb), "Symbol") == 0) {
707
767
  rb_funcall(rb_class_of(cb), rb_to_id(cb), 8, newc,
708
- domain_new(dom, newc), INT2NUM(phase), local_hash,
709
- remote_hash, rb_str_new2(authScheme), subject_array,
710
- cb_opaque);
711
- else if (strcmp(rb_obj_classname(cb), "Proc") == 0)
712
- rb_funcall(cb, rb_intern("call"), 8, newc, domain_new(dom, newc),
713
- INT2NUM(phase), local_hash, remote_hash,
714
- rb_str_new2(authScheme), subject_array, cb_opaque);
715
- else
768
+ ruby_libvirt_domain_new(dom, newc), INT2NUM(phase),
769
+ local_hash, remote_hash, rb_str_new2(authScheme),
770
+ subject_array, cb_opaque);
771
+ }
772
+ else if (strcmp(rb_obj_classname(cb), "Proc") == 0) {
773
+ rb_funcall(cb, rb_intern("call"), 8, newc,
774
+ ruby_libvirt_domain_new(dom, newc), INT2NUM(phase),
775
+ local_hash, remote_hash, rb_str_new2(authScheme),
776
+ subject_array, cb_opaque);
777
+ }
778
+ else {
716
779
  rb_raise(rb_eTypeError,
717
780
  "wrong domain event graphics callback (expected Symbol or Proc)");
781
+ }
718
782
 
719
783
  return 0;
720
784
  }
@@ -723,7 +787,7 @@ static int domain_event_graphics_callback(virConnectPtr conn, virDomainPtr dom,
723
787
  * call-seq:
724
788
  * conn.domain_event_register_any(eventID, callback, dom=nil, opaque=nil) -> fixnum
725
789
  *
726
- * Call +virConnectDomainEventRegisterAny+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectDomainEventRegisterAny]
790
+ * Call virConnectDomainEventRegisterAny[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectDomainEventRegisterAny]
727
791
  * to register callback for eventID with libvirt. The eventID must be one of
728
792
  * the Libvirt::Connect::DOMAIN_EVENT_ID_* constants. The callback can either
729
793
  * be a Symbol (that is the name of a method to callback) or a Proc. Note that
@@ -744,22 +808,26 @@ static int domain_event_graphics_callback(virConnectPtr conn, virDomainPtr dom,
744
808
  * libvirt-specific handle, which must be used by the application to
745
809
  * deregister the callback later (see domain_event_deregister_any).
746
810
  */
747
- static VALUE libvirt_conn_domain_event_register_any(int argc, VALUE *argv,
748
- VALUE c) {
749
- VALUE eventID, cb, dom, opaque;
811
+ static VALUE libvirt_connect_domain_event_register_any(int argc, VALUE *argv,
812
+ VALUE c)
813
+ {
814
+ VALUE eventID, cb, dom, opaque, passthrough;
750
815
  virDomainPtr domain;
751
816
  virConnectDomainEventGenericCallback internalcb = NULL;
752
- VALUE passthrough;
753
817
 
754
818
  rb_scan_args(argc, argv, "22", &eventID, &cb, &dom, &opaque);
755
819
 
756
- if (!is_symbol_or_proc(cb))
757
- rb_raise(rb_eTypeError, "wrong argument type (expected Symbol or Proc)");
820
+ if (!ruby_libvirt_is_symbol_or_proc(cb)) {
821
+ rb_raise(rb_eTypeError,
822
+ "wrong argument type (expected Symbol or Proc)");
823
+ }
758
824
 
759
- if (NIL_P(dom))
825
+ if (NIL_P(dom)) {
760
826
  domain = NULL;
761
- else
762
- domain = domain_get(dom);
827
+ }
828
+ else {
829
+ domain = ruby_libvirt_domain_get(dom);
830
+ }
763
831
 
764
832
  switch(NUM2INT(eventID)) {
765
833
  case VIR_DOMAIN_EVENT_ID_LIFECYCLE:
@@ -793,23 +861,28 @@ static VALUE libvirt_conn_domain_event_register_any(int argc, VALUE *argv,
793
861
  rb_ary_store(passthrough, 0, cb);
794
862
  rb_ary_store(passthrough, 1, opaque);
795
863
 
796
- gen_call_int(virConnectDomainEventRegisterAny, conn(c), connect_get(c),
797
- domain, NUM2INT(eventID), internalcb, (void *)passthrough,
798
- NULL);
864
+ ruby_libvirt_generate_call_int(virConnectDomainEventRegisterAny,
865
+ ruby_libvirt_connect_get(c),
866
+ ruby_libvirt_connect_get(c), domain,
867
+ NUM2INT(eventID), internalcb,
868
+ (void *)passthrough, NULL);
799
869
  }
800
870
 
801
871
  /*
802
872
  * call-seq:
803
873
  * conn.domain_event_deregister_any(callbackID) -> nil
804
874
  *
805
- * Call +virConnectDomainEventDeregisterAny+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectDomainEventDeregisterAny]
875
+ * Call virConnectDomainEventDeregisterAny[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectDomainEventDeregisterAny]
806
876
  * to deregister a callback from libvirt. The callbackID must be a
807
877
  * libvirt-specific handle returned by domain_event_register_any.
808
878
  */
809
- static VALUE libvirt_conn_domain_event_deregister_any(VALUE c,
810
- VALUE callbackID) {
811
- gen_call_void(virConnectDomainEventDeregisterAny, conn(c), connect_get(c),
812
- NUM2INT(callbackID));
879
+ static VALUE libvirt_connect_domain_event_deregister_any(VALUE c,
880
+ VALUE callbackID)
881
+ {
882
+ ruby_libvirt_generate_call_nil(virConnectDomainEventDeregisterAny,
883
+ ruby_libvirt_connect_get(c),
884
+ ruby_libvirt_connect_get(c),
885
+ NUM2INT(callbackID));
813
886
  }
814
887
  #endif
815
888
 
@@ -823,14 +896,15 @@ static VALUE libvirt_conn_domain_event_deregister_any(VALUE c,
823
896
  */
824
897
  static int domain_event_callback(virConnectPtr conn,
825
898
  virDomainPtr dom, int event,
826
- int detail, void *opaque) {
899
+ int detail, void *opaque)
900
+ {
827
901
  return domain_event_lifecycle_callback(conn, dom, event, detail, opaque);
828
902
  }
829
903
  /*
830
904
  * call-seq:
831
905
  * conn.domain_event_register(callback, opaque=nil) -> nil
832
906
  *
833
- * Call +virConnectDomainEventRegister+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectDomainEventRegister]
907
+ * Call virConnectDomainEventRegister[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectDomainEventRegister]
834
908
  * to register callback for domain lifecycle events with libvirt. The
835
909
  * callback can either be a Symbol (that is the name of a method to callback)
836
910
  * or a Proc. The callback must accept 5 parameters: Libvirt::Connect,
@@ -839,37 +913,45 @@ static int domain_event_callback(virConnectPtr conn,
839
913
  * callback as "opaque". This method is deprecated in favor of
840
914
  * domain_event_register_any.
841
915
  */
842
- static VALUE libvirt_conn_domain_event_register(int argc, VALUE *argv,
843
- VALUE c) {
844
- VALUE cb, opaque;
845
- VALUE passthrough;
916
+ static VALUE libvirt_connect_domain_event_register(int argc, VALUE *argv,
917
+ VALUE c)
918
+ {
919
+ VALUE cb, opaque, passthrough;
846
920
 
847
921
  rb_scan_args(argc, argv, "11", &cb, &opaque);
848
922
 
849
- if (!is_symbol_or_proc(cb))
850
- rb_raise(rb_eTypeError, "wrong argument type (expected Symbol or Proc)");
923
+ if (!ruby_libvirt_is_symbol_or_proc(cb)) {
924
+ rb_raise(rb_eTypeError,
925
+ "wrong argument type (expected Symbol or Proc)");
926
+ }
851
927
 
852
928
  passthrough = rb_ary_new();
853
929
  rb_ary_store(passthrough, 0, cb);
854
930
  rb_ary_store(passthrough, 1, opaque);
855
931
 
856
- gen_call_void(virConnectDomainEventRegister, conn(c), connect_get(c),
857
- domain_event_callback, (void *)passthrough, NULL);
932
+ ruby_libvirt_generate_call_nil(virConnectDomainEventRegister,
933
+ ruby_libvirt_connect_get(c),
934
+ ruby_libvirt_connect_get(c),
935
+ domain_event_callback, (void *)passthrough,
936
+ NULL);
858
937
  }
859
938
 
860
939
  /*
861
940
  * call-seq:
862
941
  * conn.domain_event_deregister(callback) -> nil
863
942
  *
864
- * Call +virConnectDomainEventDeregister+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectDomainEventDeregister]
943
+ * Call virConnectDomainEventDeregister[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectDomainEventDeregister]
865
944
  * to deregister the event callback from libvirt. This method is deprecated
866
945
  * in favor of domain_event_deregister_any (though they cannot be mixed; if
867
946
  * the callback was registered with domain_event_register, it must be
868
947
  * deregistered with domain_event_deregister).
869
948
  */
870
- static VALUE libvirt_conn_domain_event_deregister(VALUE c) {
871
- gen_call_void(virConnectDomainEventDeregister, conn(c), connect_get(c),
872
- domain_event_callback);
949
+ static VALUE libvirt_connect_domain_event_deregister(VALUE c)
950
+ {
951
+ ruby_libvirt_generate_call_nil(virConnectDomainEventDeregister,
952
+ ruby_libvirt_connect_get(c),
953
+ ruby_libvirt_connect_get(c),
954
+ domain_event_callback);
873
955
  }
874
956
  #endif
875
957
 
@@ -877,58 +959,47 @@ static VALUE libvirt_conn_domain_event_deregister(VALUE c) {
877
959
  * call-seq:
878
960
  * conn.num_of_domains -> fixnum
879
961
  *
880
- * Call +virConnectNumOfDomains+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectNumOfDomains]
962
+ * Call virConnectNumOfDomains[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectNumOfDomains]
881
963
  * to retrieve the number of active domains on this connection.
882
964
  */
883
- static VALUE libvirt_conn_num_of_domains(VALUE s) {
884
- gen_conn_num_of(s, Domains);
965
+ static VALUE libvirt_connect_num_of_domains(VALUE c)
966
+ {
967
+ gen_conn_num_of(c, Domains);
885
968
  }
886
969
 
887
970
  /*
888
971
  * call-seq:
889
972
  * conn.list_domains -> list
890
973
  *
891
- * Call +virConnectListDomains+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListDomains]
974
+ * Call virConnectListDomains[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListDomains]
892
975
  * to retrieve a list of active domain IDs on this connection.
893
976
  */
894
- static VALUE libvirt_conn_list_domains(VALUE s) {
977
+ static VALUE libvirt_connect_list_domains(VALUE c)
978
+ {
895
979
  int i, r, num, *ids;
896
- virConnectPtr conn = connect_get(s);
897
980
  VALUE result;
898
- int exception = 0;
899
- struct rb_ary_push_arg args;
900
981
 
901
- num = virConnectNumOfDomains(conn);
902
- _E(num < 0, create_error(e_RetrieveError, "virConnectNumOfDomains", conn));
982
+ num = virConnectNumOfDomains(ruby_libvirt_connect_get(c));
983
+ ruby_libvirt_raise_error_if(num < 0, e_RetrieveError,
984
+ "virConnectNumOfDomains",
985
+ ruby_libvirt_connect_get(c));
986
+
987
+ result = rb_ary_new2(num);
988
+
903
989
  if (num == 0) {
904
- result = rb_ary_new2(num);
905
990
  return result;
906
991
  }
907
992
 
908
- ids = ALLOC_N(int, num);
909
- r = virConnectListDomains(conn, ids, num);
910
- if (r < 0) {
911
- xfree(ids);
912
- rb_exc_raise(create_error(e_RetrieveError, "virConnectListDomains",
913
- conn));
914
- }
915
-
916
- result = rb_protect(rb_ary_new2_wrap, (VALUE)&num, &exception);
917
- if (exception) {
918
- xfree(ids);
919
- rb_jump_tag(exception);
920
- }
993
+ ids = alloca(sizeof(int) * num);
994
+ r = virConnectListDomains(ruby_libvirt_connect_get(c), ids, num);
995
+ ruby_libvirt_raise_error_if(r < 0, e_RetrieveError,
996
+ "virConnectListDomains",
997
+ ruby_libvirt_connect_get(c));
921
998
 
922
999
  for (i = 0; i < num; i++) {
923
- args.arr = result;
924
- args. value = INT2NUM(ids[i]);
925
- rb_protect(rb_ary_push_wrap, (VALUE)&args, &exception);
926
- if (exception) {
927
- xfree(ids);
928
- rb_jump_tag(exception);
929
- }
1000
+ rb_ary_store(result, i, INT2NUM(ids[i]));
930
1001
  }
931
- xfree(ids);
1002
+
932
1003
  return result;
933
1004
  }
934
1005
 
@@ -936,46 +1007,48 @@ static VALUE libvirt_conn_list_domains(VALUE s) {
936
1007
  * call-seq:
937
1008
  * conn.num_of_defined_domains -> fixnum
938
1009
  *
939
- * Call +virConnectNumOfDefinedDomains+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectNumOfDefinedDomains]
1010
+ * Call virConnectNumOfDefinedDomains[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectNumOfDefinedDomains]
940
1011
  * to retrieve the number of inactive domains on this connection.
941
1012
  */
942
- static VALUE libvirt_conn_num_of_defined_domains(VALUE s) {
943
- gen_conn_num_of(s, DefinedDomains);
1013
+ static VALUE libvirt_connect_num_of_defined_domains(VALUE c)
1014
+ {
1015
+ gen_conn_num_of(c, DefinedDomains);
944
1016
  }
945
1017
 
946
1018
  /*
947
1019
  * call-seq:
948
1020
  * conn.list_defined_domains -> list
949
1021
  *
950
- * Call +virConnectListDefinedDomains+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListDefinedDomains]
1022
+ * Call virConnectListDefinedDomains[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListDefinedDomains]
951
1023
  * to retrieve a list of inactive domain names on this connection.
952
1024
  */
953
- static VALUE libvirt_conn_list_defined_domains(VALUE s) {
954
- gen_conn_list_names(s, DefinedDomains);
1025
+ static VALUE libvirt_connect_list_defined_domains(VALUE c)
1026
+ {
1027
+ gen_conn_list_names(c, DefinedDomains);
955
1028
  }
956
1029
 
957
1030
  /*
958
1031
  * call-seq:
959
1032
  * conn.create_domain_linux(xml, flags=0) -> Libvirt::Domain
960
1033
  *
961
- * Call +virDomainCreateLinux+[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainCreateLinux]
1034
+ * Call virDomainCreateLinux[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainCreateLinux]
962
1035
  * to start a transient domain from the given XML. Deprecated; use
963
1036
  * conn.create_domain_xml instead.
964
1037
  */
965
- static VALUE libvirt_conn_create_linux(int argc, VALUE *argv, VALUE c) {
1038
+ static VALUE libvirt_connect_create_linux(int argc, VALUE *argv, VALUE c)
1039
+ {
966
1040
  virDomainPtr dom;
967
- virConnectPtr conn = connect_get(c);
968
1041
  VALUE flags, xml;
969
1042
 
970
1043
  rb_scan_args(argc, argv, "11", &xml, &flags);
971
1044
 
972
- if (NIL_P(flags))
973
- flags = INT2NUM(0);
1045
+ dom = virDomainCreateLinux(ruby_libvirt_connect_get(c),
1046
+ StringValueCStr(xml),
1047
+ ruby_libvirt_value_to_uint(flags));
1048
+ ruby_libvirt_raise_error_if(dom == NULL, e_Error, "virDomainCreateLinux",
1049
+ ruby_libvirt_connect_get(c));
974
1050
 
975
- dom = virDomainCreateLinux(conn, StringValueCStr(xml), NUM2UINT(flags));
976
- _E(dom == NULL, create_error(e_Error, "virDomainCreateLinux", conn));
977
-
978
- return domain_new(dom, c);
1051
+ return ruby_libvirt_domain_new(dom, c);
979
1052
  }
980
1053
 
981
1054
  #if HAVE_VIRDOMAINCREATEXML
@@ -983,23 +1056,22 @@ static VALUE libvirt_conn_create_linux(int argc, VALUE *argv, VALUE c) {
983
1056
  * call-seq:
984
1057
  * conn.create_domain_xml(xml, flags=0) -> Libvirt::Domain
985
1058
  *
986
- * Call +virDomainCreateXML+[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainCreateXML]
1059
+ * Call virDomainCreateXML[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainCreateXML]
987
1060
  * to start a transient domain from the given XML.
988
1061
  */
989
- static VALUE libvirt_conn_create_xml(int argc, VALUE *argv, VALUE c) {
1062
+ static VALUE libvirt_connect_create_domain_xml(int argc, VALUE *argv, VALUE c)
1063
+ {
990
1064
  virDomainPtr dom;
991
- virConnectPtr conn = connect_get(c);
992
1065
  VALUE flags, xml;
993
1066
 
994
1067
  rb_scan_args(argc, argv, "11", &xml, &flags);
995
1068
 
996
- if (NIL_P(flags))
997
- flags = INT2NUM(0);
1069
+ dom = virDomainCreateXML(ruby_libvirt_connect_get(c), StringValueCStr(xml),
1070
+ ruby_libvirt_value_to_uint(flags));
1071
+ ruby_libvirt_raise_error_if(dom == NULL, e_Error, "virDomainCreateXML",
1072
+ ruby_libvirt_connect_get(c));
998
1073
 
999
- dom = virDomainCreateXML(conn, StringValueCStr(xml), NUM2UINT(flags));
1000
- _E(dom == NULL, create_error(e_Error, "virDomainCreateXML", conn));
1001
-
1002
- return domain_new(dom, c);
1074
+ return ruby_libvirt_domain_new(dom, c);
1003
1075
  }
1004
1076
  #endif
1005
1077
 
@@ -1007,72 +1079,78 @@ static VALUE libvirt_conn_create_xml(int argc, VALUE *argv, VALUE c) {
1007
1079
  * call-seq:
1008
1080
  * conn.lookup_domain_by_name(name) -> Libvirt::Domain
1009
1081
  *
1010
- * Call +virDomainLookupByName+[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainLookupByName]
1082
+ * Call virDomainLookupByName[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainLookupByName]
1011
1083
  * to retrieve a domain object for name.
1012
1084
  */
1013
- static VALUE libvirt_conn_lookup_domain_by_name(VALUE c, VALUE name) {
1085
+ static VALUE libvirt_connect_lookup_domain_by_name(VALUE c, VALUE name)
1086
+ {
1014
1087
  virDomainPtr dom;
1015
- virConnectPtr conn = connect_get(c);
1016
1088
 
1017
- dom = virDomainLookupByName(conn, StringValueCStr(name));
1018
- _E(dom == NULL, create_error(e_RetrieveError, "virDomainLookupByName",
1019
- conn));
1089
+ dom = virDomainLookupByName(ruby_libvirt_connect_get(c),
1090
+ StringValueCStr(name));
1091
+ ruby_libvirt_raise_error_if(dom == NULL, e_RetrieveError,
1092
+ "virDomainLookupByName",
1093
+ ruby_libvirt_connect_get(c));
1020
1094
 
1021
- return domain_new(dom, c);
1095
+ return ruby_libvirt_domain_new(dom, c);
1022
1096
  }
1023
1097
 
1024
1098
  /*
1025
1099
  * call-seq:
1026
1100
  * conn.lookup_domain_by_id(id) -> Libvirt::Domain
1027
1101
  *
1028
- * Call +virDomainLookupByID+[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainLookupByID]
1102
+ * Call virDomainLookupByID[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainLookupByID]
1029
1103
  * to retrieve a domain object for id.
1030
1104
  */
1031
- static VALUE libvirt_conn_lookup_domain_by_id(VALUE c, VALUE id) {
1105
+ static VALUE libvirt_connect_lookup_domain_by_id(VALUE c, VALUE id)
1106
+ {
1032
1107
  virDomainPtr dom;
1033
- virConnectPtr conn = connect_get(c);
1034
1108
 
1035
- dom = virDomainLookupByID(conn, NUM2INT(id));
1036
- _E(dom == NULL, create_error(e_RetrieveError, "virDomainLookupByID",
1037
- conn));
1109
+ dom = virDomainLookupByID(ruby_libvirt_connect_get(c), NUM2INT(id));
1110
+ ruby_libvirt_raise_error_if(dom == NULL, e_RetrieveError,
1111
+ "virDomainLookupByID",
1112
+ ruby_libvirt_connect_get(c));
1038
1113
 
1039
- return domain_new(dom, c);
1114
+ return ruby_libvirt_domain_new(dom, c);
1040
1115
  }
1041
1116
 
1042
1117
  /*
1043
1118
  * call-seq:
1044
1119
  * conn.lookup_domain_by_uuid(uuid) -> Libvirt::Domain
1045
1120
  *
1046
- * Call +virDomainLookupByUUIDString+[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainLookupByUUIDString]
1121
+ * Call virDomainLookupByUUIDString[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainLookupByUUIDString]
1047
1122
  * to retrieve a domain object for uuid.
1048
1123
  */
1049
- static VALUE libvirt_conn_lookup_domain_by_uuid(VALUE c, VALUE uuid) {
1124
+ static VALUE libvirt_connect_lookup_domain_by_uuid(VALUE c, VALUE uuid)
1125
+ {
1050
1126
  virDomainPtr dom;
1051
- virConnectPtr conn = connect_get(c);
1052
1127
 
1053
- dom = virDomainLookupByUUIDString(conn, StringValueCStr(uuid));
1054
- _E(dom == NULL, create_error(e_RetrieveError, "virDomainLookupByUUID",
1055
- conn));
1128
+ dom = virDomainLookupByUUIDString(ruby_libvirt_connect_get(c),
1129
+ StringValueCStr(uuid));
1130
+ ruby_libvirt_raise_error_if(dom == NULL, e_RetrieveError,
1131
+ "virDomainLookupByUUID",
1132
+ ruby_libvirt_connect_get(c));
1056
1133
 
1057
- return domain_new(dom, c);
1134
+ return ruby_libvirt_domain_new(dom, c);
1058
1135
  }
1059
1136
 
1060
1137
  /*
1061
1138
  * call-seq:
1062
1139
  * conn.define_domain_xml(xml) -> Libvirt::Domain
1063
1140
  *
1064
- * Call +virDomainDefineXML+[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainDefineXML]
1141
+ * Call virDomainDefineXML[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainDefineXML]
1065
1142
  * to define a permanent domain on this connection.
1066
1143
  */
1067
- static VALUE libvirt_conn_define_domain_xml(VALUE c, VALUE xml) {
1144
+ static VALUE libvirt_connect_define_domain_xml(VALUE c, VALUE xml)
1145
+ {
1068
1146
  virDomainPtr dom;
1069
- virConnectPtr conn = connect_get(c);
1070
1147
 
1071
- dom = virDomainDefineXML(conn, StringValueCStr(xml));
1072
- _E(dom == NULL, create_error(e_DefinitionError, "virDomainDefineXML",
1073
- conn));
1148
+ dom = virDomainDefineXML(ruby_libvirt_connect_get(c), StringValueCStr(xml));
1149
+ ruby_libvirt_raise_error_if(dom == NULL, e_DefinitionError,
1150
+ "virDomainDefineXML",
1151
+ ruby_libvirt_connect_get(c));
1074
1152
 
1075
- return domain_new(dom, c);
1153
+ return ruby_libvirt_domain_new(dom, c);
1076
1154
  }
1077
1155
 
1078
1156
  #if HAVE_VIRCONNECTDOMAINXMLFROMNATIVE
@@ -1080,30 +1158,22 @@ static VALUE libvirt_conn_define_domain_xml(VALUE c, VALUE xml) {
1080
1158
  * call-seq:
1081
1159
  * conn.domain_xml_from_native(nativeFormat, xml, flags=0) -> string
1082
1160
  *
1083
- * Call +virConnectDomainXMLFromNative+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectDomainXMLFromNative]
1161
+ * Call virConnectDomainXMLFromNative[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectDomainXMLFromNative]
1084
1162
  * to convert a native hypervisor domain representation to libvirt XML.
1085
1163
  */
1086
- static VALUE libvirt_conn_domain_xml_from_native(int argc, VALUE *argv,
1087
- VALUE s) {
1164
+ static VALUE libvirt_connect_domain_xml_from_native(int argc, VALUE *argv,
1165
+ VALUE c)
1166
+ {
1088
1167
  VALUE nativeFormat, xml, flags;
1089
- char *ret;
1090
- VALUE result;
1091
1168
 
1092
1169
  rb_scan_args(argc, argv, "21", &nativeFormat, &xml, &flags);
1093
1170
 
1094
- if (NIL_P(flags))
1095
- flags = INT2NUM(0);
1096
-
1097
- ret = virConnectDomainXMLFromNative(conn(s), StringValueCStr(nativeFormat),
1098
- StringValueCStr(xml), NUM2UINT(flags));
1099
- _E(ret == NULL, create_error(e_Error, "virConnectDomainXMLFromNative",
1100
- conn(s)));
1101
-
1102
- result = rb_str_new2(ret);
1103
-
1104
- free(ret);
1105
-
1106
- return result;
1171
+ ruby_libvirt_generate_call_string(virConnectDomainXMLFromNative,
1172
+ ruby_libvirt_connect_get(c), 1,
1173
+ ruby_libvirt_connect_get(c),
1174
+ StringValueCStr(nativeFormat),
1175
+ StringValueCStr(xml),
1176
+ ruby_libvirt_value_to_uint(flags));
1107
1177
  }
1108
1178
  #endif
1109
1179
 
@@ -1112,29 +1182,22 @@ static VALUE libvirt_conn_domain_xml_from_native(int argc, VALUE *argv,
1112
1182
  * call-seq:
1113
1183
  * conn.domain_xml_to_native(nativeFormat, xml, flags=0) -> string
1114
1184
  *
1115
- * Call +virConnectDomainXMLToNative+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectDomainXMLToNative]
1185
+ * Call virConnectDomainXMLToNative[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectDomainXMLToNative]
1116
1186
  * to convert libvirt XML to a native domain hypervisor representation.
1117
1187
  */
1118
- static VALUE libvirt_conn_domain_xml_to_native(int argc, VALUE *argv, VALUE s) {
1188
+ static VALUE libvirt_connect_domain_xml_to_native(int argc, VALUE *argv,
1189
+ VALUE c)
1190
+ {
1119
1191
  VALUE nativeFormat, xml, flags;
1120
- char *ret;
1121
- VALUE result;
1122
1192
 
1123
1193
  rb_scan_args(argc, argv, "21", &nativeFormat, &xml, &flags);
1124
1194
 
1125
- if (NIL_P(flags))
1126
- flags = INT2NUM(0);
1127
-
1128
- ret = virConnectDomainXMLToNative(conn(s), StringValueCStr(nativeFormat),
1129
- StringValueCStr(xml), NUM2UINT(flags));
1130
- _E(ret == NULL, create_error(e_Error, "virConnectDomainXMLToNative",
1131
- conn(s)));
1132
-
1133
- result = rb_str_new2(ret);
1134
-
1135
- free(ret);
1136
-
1137
- return result;
1195
+ ruby_libvirt_generate_call_string(virConnectDomainXMLToNative,
1196
+ ruby_libvirt_connect_get(c), 1,
1197
+ ruby_libvirt_connect_get(c),
1198
+ StringValueCStr(nativeFormat),
1199
+ StringValueCStr(xml),
1200
+ ruby_libvirt_value_to_uint(flags));
1138
1201
  }
1139
1202
  #endif
1140
1203
 
@@ -1143,105 +1206,113 @@ static VALUE libvirt_conn_domain_xml_to_native(int argc, VALUE *argv, VALUE s) {
1143
1206
  * call-seq:
1144
1207
  * conn.num_of_interfaces -> fixnum
1145
1208
  *
1146
- * Call +virConnectNumOfInterfaces+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectNumOfInterfaces]
1209
+ * Call virConnectNumOfInterfaces[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectNumOfInterfaces]
1147
1210
  * to retrieve the number of active interfaces on this connection.
1148
1211
  */
1149
- static VALUE libvirt_conn_num_of_interfaces(VALUE s) {
1150
- gen_conn_num_of(s, Interfaces);
1212
+ static VALUE libvirt_connect_num_of_interfaces(VALUE c)
1213
+ {
1214
+ gen_conn_num_of(c, Interfaces);
1151
1215
  }
1152
1216
 
1153
1217
  /*
1154
1218
  * call-seq:
1155
1219
  * conn.list_interfaces -> list
1156
1220
  *
1157
- * Call +virConnectListInterfaces+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListInterfaces]
1221
+ * Call virConnectListInterfaces[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListInterfaces]
1158
1222
  * to retrieve a list of active interface names on this connection.
1159
1223
  */
1160
- static VALUE libvirt_conn_list_interfaces(VALUE s) {
1161
- gen_conn_list_names(s, Interfaces);
1224
+ static VALUE libvirt_connect_list_interfaces(VALUE c)
1225
+ {
1226
+ gen_conn_list_names(c, Interfaces);
1162
1227
  }
1163
1228
 
1164
1229
  /*
1165
1230
  * call-seq:
1166
1231
  * conn.num_of_defined_interfaces -> fixnum
1167
1232
  *
1168
- * Call +virConnectNumOfDefinedInterfaces+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectNumOfDefinedInterfaces]
1233
+ * Call virConnectNumOfDefinedInterfaces[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectNumOfDefinedInterfaces]
1169
1234
  * to retrieve the number of inactive interfaces on this connection.
1170
1235
  */
1171
- static VALUE libvirt_conn_num_of_defined_interfaces(VALUE s) {
1172
- gen_conn_num_of(s, DefinedInterfaces);
1236
+ static VALUE libvirt_connect_num_of_defined_interfaces(VALUE c)
1237
+ {
1238
+ gen_conn_num_of(c, DefinedInterfaces);
1173
1239
  }
1174
1240
 
1175
1241
  /*
1176
1242
  * call-seq:
1177
1243
  * conn.list_defined_interfaces -> list
1178
1244
  *
1179
- * Call +virConnectListDefinedInterfaces+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListDefinedInterfaces]
1245
+ * Call virConnectListDefinedInterfaces[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListDefinedInterfaces]
1180
1246
  * to retrieve a list of inactive interface names on this connection.
1181
1247
  */
1182
- static VALUE libvirt_conn_list_defined_interfaces(VALUE s) {
1183
- gen_conn_list_names(s, DefinedInterfaces);
1248
+ static VALUE libvirt_connect_list_defined_interfaces(VALUE c)
1249
+ {
1250
+ gen_conn_list_names(c, DefinedInterfaces);
1184
1251
  }
1185
1252
 
1186
- extern VALUE interface_new(virInterfacePtr i, VALUE conn);
1187
1253
  /*
1188
1254
  * call-seq:
1189
1255
  * conn.lookup_interface_by_name(name) -> Libvirt::Interface
1190
1256
  *
1191
- * Call +virInterfaceLookupByName+[http://www.libvirt.org/html/libvirt-libvirt.html#virInterfaceLookupByName]
1257
+ * Call virInterfaceLookupByName[http://www.libvirt.org/html/libvirt-libvirt.html#virInterfaceLookupByName]
1192
1258
  * to retrieve an interface object by name.
1193
1259
  */
1194
- static VALUE libvirt_conn_lookup_interface_by_name(VALUE c, VALUE name) {
1260
+ static VALUE libvirt_connect_lookup_interface_by_name(VALUE c, VALUE name)
1261
+ {
1195
1262
  virInterfacePtr iface;
1196
- virConnectPtr conn = connect_get(c);
1197
1263
 
1198
- iface = virInterfaceLookupByName(conn, StringValueCStr(name));
1199
- _E(iface == NULL, create_error(e_RetrieveError, "virInterfaceLookupByName",
1200
- conn));
1264
+ iface = virInterfaceLookupByName(ruby_libvirt_connect_get(c),
1265
+ StringValueCStr(name));
1266
+ ruby_libvirt_raise_error_if(iface == NULL, e_RetrieveError,
1267
+ "virInterfaceLookupByName",
1268
+ ruby_libvirt_connect_get(c));
1201
1269
 
1202
- return interface_new(iface, c);
1270
+ return ruby_libvirt_interface_new(iface, c);
1203
1271
  }
1204
1272
 
1205
1273
  /*
1206
1274
  * call-seq:
1207
1275
  * conn.lookup_interface_by_mac(mac) -> Libvirt::Interface
1208
1276
  *
1209
- * Call +virInterfaceLookupByMACString+[http://www.libvirt.org/html/libvirt-libvirt.html#virInterfaceLookupByMACString]
1277
+ * Call virInterfaceLookupByMACString[http://www.libvirt.org/html/libvirt-libvirt.html#virInterfaceLookupByMACString]
1210
1278
  * to retrieve an interface object by MAC address.
1211
1279
  */
1212
- static VALUE libvirt_conn_lookup_interface_by_mac(VALUE c, VALUE mac) {
1280
+ static VALUE libvirt_connect_lookup_interface_by_mac(VALUE c, VALUE mac)
1281
+ {
1213
1282
  virInterfacePtr iface;
1214
- virConnectPtr conn = connect_get(c);
1215
1283
 
1216
- iface = virInterfaceLookupByMACString(conn, StringValueCStr(mac));
1217
- _E(iface == NULL, create_error(e_RetrieveError,
1218
- "virInterfaceLookupByMACString", conn));
1284
+ iface = virInterfaceLookupByMACString(ruby_libvirt_connect_get(c),
1285
+ StringValueCStr(mac));
1286
+ ruby_libvirt_raise_error_if(iface == NULL, e_RetrieveError,
1287
+ "virInterfaceLookupByMACString",
1288
+ ruby_libvirt_connect_get(c));
1219
1289
 
1220
- return interface_new(iface, c);
1290
+ return ruby_libvirt_interface_new(iface, c);
1221
1291
  }
1222
1292
 
1223
1293
  /*
1224
1294
  * call-seq:
1225
1295
  * conn.define_interface_xml(xml, flags=0) -> Libvirt::Interface
1226
1296
  *
1227
- * Call +virInterfaceDefineXML+[http://www.libvirt.org/html/libvirt-libvirt.html#virInterfaceDefineXML]
1297
+ * Call virInterfaceDefineXML[http://www.libvirt.org/html/libvirt-libvirt.html#virInterfaceDefineXML]
1228
1298
  * to define a new interface from xml.
1229
1299
  */
1230
- static VALUE libvirt_conn_define_interface_xml(int argc, VALUE *argv, VALUE c) {
1300
+ static VALUE libvirt_connect_define_interface_xml(int argc, VALUE *argv,
1301
+ VALUE c)
1302
+ {
1231
1303
  virInterfacePtr iface;
1232
- virConnectPtr conn = connect_get(c);
1233
1304
  VALUE xml, flags;
1234
1305
 
1235
1306
  rb_scan_args(argc, argv, "11", &xml, &flags);
1236
1307
 
1237
- if (NIL_P(flags))
1238
- flags = INT2NUM(0);
1308
+ iface = virInterfaceDefineXML(ruby_libvirt_connect_get(c),
1309
+ StringValueCStr(xml),
1310
+ ruby_libvirt_value_to_uint(flags));
1311
+ ruby_libvirt_raise_error_if(iface == NULL, e_DefinitionError,
1312
+ "virInterfaceDefineXML",
1313
+ ruby_libvirt_connect_get(c));
1239
1314
 
1240
- iface = virInterfaceDefineXML(conn, StringValueCStr(xml), NUM2UINT(flags));
1241
- _E(iface == NULL, create_error(e_DefinitionError, "virInterfaceDefineXML",
1242
- conn));
1243
-
1244
- return interface_new(iface, c);
1315
+ return ruby_libvirt_interface_new(iface, c);
1245
1316
  }
1246
1317
  #endif
1247
1318
 
@@ -1249,139 +1320,151 @@ static VALUE libvirt_conn_define_interface_xml(int argc, VALUE *argv, VALUE c) {
1249
1320
  * call-seq:
1250
1321
  * conn.num_of_networks -> fixnum
1251
1322
  *
1252
- * Call +virConnectNumOfNetworks+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectNumOfNetworks]
1323
+ * Call virConnectNumOfNetworks[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectNumOfNetworks]
1253
1324
  * to retrieve the number of active networks on this connection.
1254
1325
  */
1255
- static VALUE libvirt_conn_num_of_networks(VALUE s) {
1256
- gen_conn_num_of(s, Networks);
1326
+ static VALUE libvirt_connect_num_of_networks(VALUE c)
1327
+ {
1328
+ gen_conn_num_of(c, Networks);
1257
1329
  }
1258
1330
 
1259
1331
  /*
1260
1332
  * call-seq:
1261
1333
  * conn.list_networks -> list
1262
1334
  *
1263
- * Call +virConnectListNetworks+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListNetworks]
1335
+ * Call virConnectListNetworks[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListNetworks]
1264
1336
  * to retrieve a list of active network names on this connection.
1265
1337
  */
1266
- static VALUE libvirt_conn_list_networks(VALUE s) {
1267
- gen_conn_list_names(s, Networks);
1338
+ static VALUE libvirt_connect_list_networks(VALUE c)
1339
+ {
1340
+ gen_conn_list_names(c, Networks);
1268
1341
  }
1269
1342
 
1270
1343
  /*
1271
1344
  * call-seq:
1272
1345
  * conn.num_of_defined_networks -> fixnum
1273
1346
  *
1274
- * Call +virConnectNumOfDefinedNetworks+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectNumOfDefinedNetworks]
1347
+ * Call virConnectNumOfDefinedNetworks[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectNumOfDefinedNetworks]
1275
1348
  * to retrieve the number of inactive networks on this connection.
1276
1349
  */
1277
- static VALUE libvirt_conn_num_of_defined_networks(VALUE s) {
1278
- gen_conn_num_of(s, DefinedNetworks);
1350
+ static VALUE libvirt_connect_num_of_defined_networks(VALUE c)
1351
+ {
1352
+ gen_conn_num_of(c, DefinedNetworks);
1279
1353
  }
1280
1354
 
1281
1355
  /*
1282
1356
  * call-seq:
1283
1357
  * conn.list_of_defined_networks -> list
1284
1358
  *
1285
- * Call +virConnectListDefinedNetworks+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListDefinedNetworks]
1359
+ * Call virConnectListDefinedNetworks[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListDefinedNetworks]
1286
1360
  * to retrieve a list of inactive network names on this connection.
1287
1361
  */
1288
- static VALUE libvirt_conn_list_defined_networks(VALUE s) {
1289
- gen_conn_list_names(s, DefinedNetworks);
1362
+ static VALUE libvirt_connect_list_defined_networks(VALUE c)
1363
+ {
1364
+ gen_conn_list_names(c, DefinedNetworks);
1290
1365
  }
1291
1366
 
1292
1367
  /*
1293
1368
  * call-seq:
1294
1369
  * conn.lookup_network_by_name(name) -> Libvirt::Network
1295
1370
  *
1296
- * Call +virNetworkLookupByName+[http://www.libvirt.org/html/libvirt-libvirt.html#virNetworkLookupByName]
1371
+ * Call virNetworkLookupByName[http://www.libvirt.org/html/libvirt-libvirt.html#virNetworkLookupByName]
1297
1372
  * to retrieve a network object by name.
1298
1373
  */
1299
- static VALUE libvirt_conn_lookup_network_by_name(VALUE c, VALUE name) {
1374
+ static VALUE libvirt_connect_lookup_network_by_name(VALUE c, VALUE name)
1375
+ {
1300
1376
  virNetworkPtr netw;
1301
- virConnectPtr conn = connect_get(c);
1302
1377
 
1303
- netw = virNetworkLookupByName(conn, StringValueCStr(name));
1304
- _E(netw == NULL, create_error(e_RetrieveError, "virNetworkLookupByName",
1305
- conn));
1378
+ netw = virNetworkLookupByName(ruby_libvirt_connect_get(c),
1379
+ StringValueCStr(name));
1380
+ ruby_libvirt_raise_error_if(netw == NULL, e_RetrieveError,
1381
+ "virNetworkLookupByName",
1382
+ ruby_libvirt_connect_get(c));
1306
1383
 
1307
- return network_new(netw, c);
1384
+ return ruby_libvirt_network_new(netw, c);
1308
1385
  }
1309
1386
 
1310
1387
  /*
1311
1388
  * call-seq:
1312
1389
  * conn.lookup_network_by_uuid(uuid) -> Libvirt::Network
1313
1390
  *
1314
- * Call +virNetworkLookupByUUIDString+[http://www.libvirt.org/html/libvirt-libvirt.html#virNetworkLookupByUUIDString]
1391
+ * Call virNetworkLookupByUUIDString[http://www.libvirt.org/html/libvirt-libvirt.html#virNetworkLookupByUUIDString]
1315
1392
  * to retrieve a network object by UUID.
1316
1393
  */
1317
- static VALUE libvirt_conn_lookup_network_by_uuid(VALUE c, VALUE uuid) {
1394
+ static VALUE libvirt_connect_lookup_network_by_uuid(VALUE c, VALUE uuid)
1395
+ {
1318
1396
  virNetworkPtr netw;
1319
- virConnectPtr conn = connect_get(c);
1320
1397
 
1321
- netw = virNetworkLookupByUUIDString(conn, StringValueCStr(uuid));
1322
- _E(netw == NULL, create_error(e_RetrieveError, "virNetworkLookupByUUID",
1323
- conn));
1398
+ netw = virNetworkLookupByUUIDString(ruby_libvirt_connect_get(c),
1399
+ StringValueCStr(uuid));
1400
+ ruby_libvirt_raise_error_if(netw == NULL, e_RetrieveError,
1401
+ "virNetworkLookupByUUID",
1402
+ ruby_libvirt_connect_get(c));
1324
1403
 
1325
- return network_new(netw, c);
1404
+ return ruby_libvirt_network_new(netw, c);
1326
1405
  }
1327
1406
 
1328
1407
  /*
1329
1408
  * call-seq:
1330
1409
  * conn.create_network_xml(xml) -> Libvirt::Network
1331
1410
  *
1332
- * Call +virNetworkCreateXML+[http://www.libvirt.org/html/libvirt-libvirt.html#virNetworkCreateXML]
1411
+ * Call virNetworkCreateXML[http://www.libvirt.org/html/libvirt-libvirt.html#virNetworkCreateXML]
1333
1412
  * to start a new transient network from xml.
1334
1413
  */
1335
- static VALUE libvirt_conn_create_network_xml(VALUE c, VALUE xml) {
1414
+ static VALUE libvirt_connect_create_network_xml(VALUE c, VALUE xml)
1415
+ {
1336
1416
  virNetworkPtr netw;
1337
- virConnectPtr conn = connect_get(c);
1338
1417
 
1339
- netw = virNetworkCreateXML(conn, StringValueCStr(xml));
1340
- _E(netw == NULL, create_error(e_Error, "virNetworkCreateXML", conn));
1418
+ netw = virNetworkCreateXML(ruby_libvirt_connect_get(c),
1419
+ StringValueCStr(xml));
1420
+ ruby_libvirt_raise_error_if(netw == NULL, e_Error, "virNetworkCreateXML",
1421
+ ruby_libvirt_connect_get(c));
1341
1422
 
1342
- return network_new(netw, c);
1423
+ return ruby_libvirt_network_new(netw, c);
1343
1424
  }
1344
1425
 
1345
1426
  /*
1346
1427
  * call-seq:
1347
1428
  * conn.define_network_xml(xml) -> Libvirt::Network
1348
1429
  *
1349
- * Call +virNetworkDefineXML+[http://www.libvirt.org/html/libvirt-libvirt.html#virNetworkDefineXML]
1430
+ * Call virNetworkDefineXML[http://www.libvirt.org/html/libvirt-libvirt.html#virNetworkDefineXML]
1350
1431
  * to define a new permanent network from xml.
1351
1432
  */
1352
- static VALUE libvirt_conn_define_network_xml(VALUE c, VALUE xml) {
1433
+ static VALUE libvirt_connect_define_network_xml(VALUE c, VALUE xml)
1434
+ {
1353
1435
  virNetworkPtr netw;
1354
- virConnectPtr conn = connect_get(c);
1355
1436
 
1356
- netw = virNetworkDefineXML(conn, StringValueCStr(xml));
1357
- _E(netw == NULL, create_error(e_DefinitionError, "virNetworkDefineXML",
1358
- conn));
1437
+ netw = virNetworkDefineXML(ruby_libvirt_connect_get(c),
1438
+ StringValueCStr(xml));
1439
+ ruby_libvirt_raise_error_if(netw == NULL, e_DefinitionError,
1440
+ "virNetworkDefineXML",
1441
+ ruby_libvirt_connect_get(c));
1359
1442
 
1360
- return network_new(netw, c);
1443
+ return ruby_libvirt_network_new(netw, c);
1361
1444
  }
1362
1445
 
1363
1446
  #if HAVE_TYPE_VIRNODEDEVICEPTR
1364
- extern VALUE nodedevice_new(virNodeDevicePtr s, VALUE conn);
1365
1447
 
1366
1448
  /*
1367
1449
  * call-seq:
1368
1450
  * conn.num_of_nodedevices(cap=nil, flags=0) -> fixnum
1369
1451
  *
1370
- * Call +virNodeNumOfDevices+[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeNumOfDevices]
1452
+ * Call virNodeNumOfDevices[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeNumOfDevices]
1371
1453
  * to retrieve the number of node devices on this connection.
1372
1454
  */
1373
- static VALUE libvirt_conn_num_of_nodedevices(int argc, VALUE *argv, VALUE c) {
1455
+ static VALUE libvirt_connect_num_of_nodedevices(int argc, VALUE *argv, VALUE c)
1456
+ {
1374
1457
  int result;
1375
- virConnectPtr conn = connect_get(c);
1376
1458
  VALUE cap, flags;
1377
1459
 
1378
1460
  rb_scan_args(argc, argv, "02", &cap, &flags);
1379
1461
 
1380
- if (NIL_P(flags))
1381
- flags = INT2NUM(0);
1382
-
1383
- result = virNodeNumOfDevices(conn, get_string_or_nil(cap), NUM2UINT(flags));
1384
- _E(result < 0, create_error(e_RetrieveError, "virNodeNumOfDevices", conn));
1462
+ result = virNodeNumOfDevices(ruby_libvirt_connect_get(c),
1463
+ ruby_libvirt_get_cstring_or_null(cap),
1464
+ ruby_libvirt_value_to_uint(flags));
1465
+ ruby_libvirt_raise_error_if(result < 0, e_RetrieveError,
1466
+ "virNodeNumOfDevices",
1467
+ ruby_libvirt_connect_get(c));
1385
1468
 
1386
1469
  return INT2NUM(result);
1387
1470
  }
@@ -1390,58 +1473,61 @@ static VALUE libvirt_conn_num_of_nodedevices(int argc, VALUE *argv, VALUE c) {
1390
1473
  * call-seq:
1391
1474
  * conn.list_nodedevices(cap=nil, flags=0) -> list
1392
1475
  *
1393
- * Call +virNodeListDevices+[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeListDevices]
1476
+ * Call virNodeListDevices[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeListDevices]
1394
1477
  * to retrieve a list of node device names on this connection.
1395
1478
  */
1396
- static VALUE libvirt_conn_list_nodedevices(int argc, VALUE *argv, VALUE c) {
1479
+ static VALUE libvirt_connect_list_nodedevices(int argc, VALUE *argv, VALUE c)
1480
+ {
1397
1481
  int r, num;
1398
- virConnectPtr conn = connect_get(c);
1399
- VALUE cap, flags_val;
1482
+ VALUE cap, flags;
1400
1483
  char *capstr;
1401
1484
  char **names;
1402
- unsigned int flags;
1403
1485
 
1404
- rb_scan_args(argc, argv, "02", &cap, &flags_val);
1486
+ rb_scan_args(argc, argv, "02", &cap, &flags);
1405
1487
 
1406
- if (NIL_P(flags_val))
1407
- flags = 0;
1408
- else
1409
- flags = NUM2UINT(flags_val);
1488
+ if (TYPE(flags) != T_NIL && TYPE(flags) != T_FIXNUM) {
1489
+ rb_raise(rb_eTypeError,
1490
+ "wrong argument type (expected Number)");
1491
+ }
1410
1492
 
1411
- capstr = get_string_or_nil(cap);
1493
+ capstr = ruby_libvirt_get_cstring_or_null(cap);
1412
1494
 
1413
- num = virNodeNumOfDevices(conn, capstr, 0);
1414
- _E(num < 0, create_error(e_RetrieveError, "virNodeNumOfDevices", conn));
1415
- if (num == 0)
1495
+ num = virNodeNumOfDevices(ruby_libvirt_connect_get(c), capstr, 0);
1496
+ ruby_libvirt_raise_error_if(num < 0, e_RetrieveError,
1497
+ "virNodeNumOfDevices",
1498
+ ruby_libvirt_connect_get(c));
1499
+ if (num == 0) {
1416
1500
  /* if num is 0, don't call virNodeListDevices function */
1417
1501
  return rb_ary_new2(num);
1418
-
1419
- names = ALLOC_N(char *, num);
1420
- r = virNodeListDevices(conn, capstr, names, num, flags);
1421
- if (r < 0) {
1422
- xfree(names);
1423
- rb_exc_raise(create_error(e_RetrieveError, "virNodeListDevices", conn));
1424
1502
  }
1425
1503
 
1426
- return gen_list(num, &names);
1504
+ names = alloca(sizeof(char *) * num);
1505
+ r = virNodeListDevices(ruby_libvirt_connect_get(c), capstr, names, num,
1506
+ ruby_libvirt_value_to_uint(flags));
1507
+ ruby_libvirt_raise_error_if(r < 0, e_RetrieveError, "virNodeListDevices",
1508
+ ruby_libvirt_connect_get(c));
1509
+
1510
+ return ruby_libvirt_generate_list(num, names);
1427
1511
  }
1428
1512
 
1429
1513
  /*
1430
1514
  * call-seq:
1431
1515
  * conn.lookup_nodedevice_by_name(name) -> Libvirt::NodeDevice
1432
1516
  *
1433
- * Call +virNodeDeviceLookupByName+[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeDeviceLookupByName]
1517
+ * Call virNodeDeviceLookupByName[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeDeviceLookupByName]
1434
1518
  * to retrieve a nodedevice object by name.
1435
1519
  */
1436
- static VALUE libvirt_conn_lookup_nodedevice_by_name(VALUE c, VALUE name) {
1520
+ static VALUE libvirt_connect_lookup_nodedevice_by_name(VALUE c, VALUE name)
1521
+ {
1437
1522
  virNodeDevicePtr nodedev;
1438
- virConnectPtr conn = connect_get(c);
1439
1523
 
1440
- nodedev = virNodeDeviceLookupByName(conn, StringValueCStr(name));
1441
- _E(nodedev == NULL, create_error(e_RetrieveError,
1442
- "virNodeDeviceLookupByName", conn));
1524
+ nodedev = virNodeDeviceLookupByName(ruby_libvirt_connect_get(c),
1525
+ StringValueCStr(name));
1526
+ ruby_libvirt_raise_error_if(nodedev == NULL, e_RetrieveError,
1527
+ "virNodeDeviceLookupByName",
1528
+ ruby_libvirt_connect_get(c));
1443
1529
 
1444
- return nodedevice_new(nodedev, c);
1530
+ return ruby_libvirt_nodedevice_new(nodedev, c);
1445
1531
 
1446
1532
  }
1447
1533
 
@@ -1450,194 +1536,206 @@ static VALUE libvirt_conn_lookup_nodedevice_by_name(VALUE c, VALUE name) {
1450
1536
  * call-seq:
1451
1537
  * conn.create_nodedevice_xml(xml, flags=0) -> Libvirt::NodeDevice
1452
1538
  *
1453
- * Call +virNodeDeviceCreateXML+[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeDeviceCreateXML]
1539
+ * Call virNodeDeviceCreateXML[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeDeviceCreateXML]
1454
1540
  * to create a new node device from xml.
1455
1541
  */
1456
- static VALUE libvirt_conn_create_nodedevice_xml(int argc, VALUE *argv,
1457
- VALUE c) {
1542
+ static VALUE libvirt_connect_create_nodedevice_xml(int argc, VALUE *argv,
1543
+ VALUE c)
1544
+ {
1458
1545
  virNodeDevicePtr nodedev;
1459
- virConnectPtr conn = connect_get(c);
1460
1546
  VALUE xml, flags;
1461
1547
 
1462
1548
  rb_scan_args(argc, argv, "11", &xml, &flags);
1463
1549
 
1464
- if (NIL_P(flags))
1465
- flags = INT2NUM(0);
1466
-
1467
- nodedev = virNodeDeviceCreateXML(conn, StringValueCStr(xml),
1468
- NUM2UINT(flags));
1469
- _E(nodedev == NULL, create_error(e_Error, "virNodeDeviceCreateXML", conn));
1550
+ nodedev = virNodeDeviceCreateXML(ruby_libvirt_connect_get(c),
1551
+ StringValueCStr(xml),
1552
+ ruby_libvirt_value_to_uint(flags));
1553
+ ruby_libvirt_raise_error_if(nodedev == NULL, e_Error,
1554
+ "virNodeDeviceCreateXML",
1555
+ ruby_libvirt_connect_get(c));
1470
1556
 
1471
- return nodedevice_new(nodedev, c);
1557
+ return ruby_libvirt_nodedevice_new(nodedev, c);
1472
1558
  }
1473
1559
  #endif
1474
1560
  #endif
1475
1561
 
1476
1562
  #if HAVE_TYPE_VIRNWFILTERPTR
1477
- extern VALUE nwfilter_new(virNWFilterPtr nw, VALUE conn);
1478
1563
 
1479
1564
  /*
1480
1565
  * call-seq:
1481
1566
  * conn.num_of_nwfilters -> fixnum
1482
1567
  *
1483
- * Call +virConnectNumOfNWFilters+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectNumOfNWFilters]
1568
+ * Call virConnectNumOfNWFilters[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectNumOfNWFilters]
1484
1569
  * to retrieve the number of network filters on this connection.
1485
1570
  */
1486
- static VALUE libvirt_conn_num_of_nwfilters(VALUE s) {
1487
- gen_conn_num_of(s, NWFilters);
1571
+ static VALUE libvirt_connect_num_of_nwfilters(VALUE c)
1572
+ {
1573
+ gen_conn_num_of(c, NWFilters);
1488
1574
  }
1489
1575
 
1490
1576
  /*
1491
1577
  * call-seq:
1492
1578
  * conn.list_nwfilters -> list
1493
1579
  *
1494
- * Call +virConnectListNWFilters+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListNWFilters]
1580
+ * Call virConnectListNWFilters[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListNWFilters]
1495
1581
  * to retrieve a list of network filter names on this connection.
1496
1582
  */
1497
- static VALUE libvirt_conn_list_nwfilters(VALUE s) {
1498
- gen_conn_list_names(s, NWFilters);
1583
+ static VALUE libvirt_connect_list_nwfilters(VALUE c)
1584
+ {
1585
+ gen_conn_list_names(c, NWFilters);
1499
1586
  }
1500
1587
 
1501
1588
  /*
1502
1589
  * call-seq:
1503
1590
  * conn.lookup_nwfilter_by_name(name) -> Libvirt::NWFilter
1504
1591
  *
1505
- * Call +virNWFilterLookupByName+[http://www.libvirt.org/html/libvirt-libvirt.html#virNWFilterLookupByName]
1592
+ * Call virNWFilterLookupByName[http://www.libvirt.org/html/libvirt-libvirt.html#virNWFilterLookupByName]
1506
1593
  * to retrieve a network filter object by name.
1507
1594
  */
1508
- static VALUE libvirt_conn_lookup_nwfilter_by_name(VALUE c, VALUE name) {
1595
+ static VALUE libvirt_connect_lookup_nwfilter_by_name(VALUE c, VALUE name)
1596
+ {
1509
1597
  virNWFilterPtr nwfilter;
1510
- virConnectPtr conn = connect_get(c);
1511
1598
 
1512
- nwfilter = virNWFilterLookupByName(conn, StringValueCStr(name));
1513
- _E(nwfilter == NULL, create_error(e_RetrieveError,
1514
- "virNWFilterLookupByName", conn));
1599
+ nwfilter = virNWFilterLookupByName(ruby_libvirt_connect_get(c),
1600
+ StringValueCStr(name));
1601
+ ruby_libvirt_raise_error_if(nwfilter == NULL, e_RetrieveError,
1602
+ "virNWFilterLookupByName",
1603
+ ruby_libvirt_connect_get(c));
1515
1604
 
1516
- return nwfilter_new(nwfilter, c);
1605
+ return ruby_libvirt_nwfilter_new(nwfilter, c);
1517
1606
  }
1518
1607
 
1519
1608
  /*
1520
1609
  * call-seq:
1521
1610
  * conn.lookup_nwfilter_by_uuid(uuid) -> Libvirt::NWFilter
1522
1611
  *
1523
- * Call +virNWFilterLookupByUUIDString+[http://www.libvirt.org/html/libvirt-libvirt.html#virNWFilterLookupByUUIDString]
1612
+ * Call virNWFilterLookupByUUIDString[http://www.libvirt.org/html/libvirt-libvirt.html#virNWFilterLookupByUUIDString]
1524
1613
  * to retrieve a network filter object by UUID.
1525
1614
  */
1526
- static VALUE libvirt_conn_lookup_nwfilter_by_uuid(VALUE c, VALUE uuid) {
1615
+ static VALUE libvirt_connect_lookup_nwfilter_by_uuid(VALUE c, VALUE uuid)
1616
+ {
1527
1617
  virNWFilterPtr nwfilter;
1528
- virConnectPtr conn = connect_get(c);
1529
1618
 
1530
- nwfilter = virNWFilterLookupByUUIDString(conn, StringValueCStr(uuid));
1531
- _E(nwfilter == NULL, create_error(e_RetrieveError,
1532
- "virNWFilterLookupByUUIDString", conn));
1619
+ nwfilter = virNWFilterLookupByUUIDString(ruby_libvirt_connect_get(c),
1620
+ StringValueCStr(uuid));
1621
+ ruby_libvirt_raise_error_if(nwfilter == NULL, e_RetrieveError,
1622
+ "virNWFilterLookupByUUIDString",
1623
+ ruby_libvirt_connect_get(c));
1533
1624
 
1534
- return nwfilter_new(nwfilter, c);
1625
+ return ruby_libvirt_nwfilter_new(nwfilter, c);
1535
1626
  }
1536
1627
 
1537
1628
  /*
1538
1629
  * call-seq:
1539
1630
  * conn.define_nwfilter_xml(xml) -> Libvirt::NWFilter
1540
1631
  *
1541
- * Call +virNWFilterDefineXML+[http://www.libvirt.org/html/libvirt-libvirt.html#virNWFilterDefineXML]
1632
+ * Call virNWFilterDefineXML[http://www.libvirt.org/html/libvirt-libvirt.html#virNWFilterDefineXML]
1542
1633
  * to define a new network filter from xml.
1543
1634
  */
1544
- static VALUE libvirt_conn_define_nwfilter_xml(VALUE c, VALUE xml) {
1635
+ static VALUE libvirt_connect_define_nwfilter_xml(VALUE c, VALUE xml)
1636
+ {
1545
1637
  virNWFilterPtr nwfilter;
1546
- virConnectPtr conn = connect_get(c);
1547
1638
 
1548
- nwfilter = virNWFilterDefineXML(conn, StringValueCStr(xml));
1549
- _E(nwfilter == NULL, create_error(e_DefinitionError, "virNWFilterDefineXML",
1550
- conn));
1639
+ nwfilter = virNWFilterDefineXML(ruby_libvirt_connect_get(c),
1640
+ StringValueCStr(xml));
1641
+ ruby_libvirt_raise_error_if(nwfilter == NULL, e_DefinitionError,
1642
+ "virNWFilterDefineXML",
1643
+ ruby_libvirt_connect_get(c));
1551
1644
 
1552
- return nwfilter_new(nwfilter, c);
1645
+ return ruby_libvirt_nwfilter_new(nwfilter, c);
1553
1646
  }
1554
1647
  #endif
1555
1648
 
1556
1649
  #if HAVE_TYPE_VIRSECRETPTR
1557
- extern VALUE secret_new(virSecretPtr s, VALUE conn);
1558
1650
 
1559
1651
  /*
1560
1652
  * call-seq:
1561
1653
  * conn.num_of_secrets -> fixnum
1562
1654
  *
1563
- * Call +virConnectNumOfSecrets+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectNumOfSecrets]
1655
+ * Call virConnectNumOfSecrets[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectNumOfSecrets]
1564
1656
  * to retrieve the number of secrets on this connection.
1565
1657
  */
1566
- static VALUE libvirt_conn_num_of_secrets(VALUE s) {
1567
- gen_conn_num_of(s, Secrets);
1658
+ static VALUE libvirt_connect_num_of_secrets(VALUE c)
1659
+ {
1660
+ gen_conn_num_of(c, Secrets);
1568
1661
  }
1569
1662
 
1570
1663
  /*
1571
1664
  * call-seq:
1572
1665
  * conn.list_secrets -> list
1573
1666
  *
1574
- * Call +virConnectListSecrets+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListSecrets]
1667
+ * Call virConnectListSecrets[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListSecrets]
1575
1668
  * to retrieve a list of secret UUIDs on this connection.
1576
1669
  */
1577
- static VALUE libvirt_conn_list_secrets(VALUE s) {
1578
- gen_conn_list_names(s, Secrets);
1670
+ static VALUE libvirt_connect_list_secrets(VALUE c)
1671
+ {
1672
+ gen_conn_list_names(c, Secrets);
1579
1673
  }
1580
1674
 
1581
1675
  /*
1582
1676
  * call-seq:
1583
1677
  * conn.lookup_secret_by_uuid(uuid) -> Libvirt::Secret
1584
1678
  *
1585
- * Call +virSecretLookupByUUID+[http://www.libvirt.org/html/libvirt-libvirt.html#virSecretLookupByUUID]
1679
+ * Call virSecretLookupByUUID[http://www.libvirt.org/html/libvirt-libvirt.html#virSecretLookupByUUID]
1586
1680
  * to retrieve a network object from uuid.
1587
1681
  */
1588
- static VALUE libvirt_conn_lookup_secret_by_uuid(VALUE c, VALUE uuid) {
1682
+ static VALUE libvirt_connect_lookup_secret_by_uuid(VALUE c, VALUE uuid)
1683
+ {
1589
1684
  virSecretPtr secret;
1590
- virConnectPtr conn = connect_get(c);
1591
1685
 
1592
- secret = virSecretLookupByUUIDString(conn, StringValueCStr(uuid));
1593
- _E(secret == NULL, create_error(e_RetrieveError, "virSecretLookupByUUID",
1594
- conn));
1686
+ secret = virSecretLookupByUUIDString(ruby_libvirt_connect_get(c),
1687
+ StringValueCStr(uuid));
1688
+ ruby_libvirt_raise_error_if(secret == NULL, e_RetrieveError,
1689
+ "virSecretLookupByUUID",
1690
+ ruby_libvirt_connect_get(c));
1595
1691
 
1596
- return secret_new(secret, c);
1692
+ return ruby_libvirt_secret_new(secret, c);
1597
1693
  }
1598
1694
 
1599
1695
  /*
1600
1696
  * call-seq:
1601
1697
  * conn.lookup_secret_by_usage(usagetype, usageID) -> Libvirt::Secret
1602
1698
  *
1603
- * Call +virSecretLookupByUsage+[http://www.libvirt.org/html/libvirt-libvirt.html#virSecretLookupByUsage]
1699
+ * Call virSecretLookupByUsage[http://www.libvirt.org/html/libvirt-libvirt.html#virSecretLookupByUsage]
1604
1700
  * to retrieve a secret by usagetype.
1605
1701
  */
1606
- static VALUE libvirt_conn_lookup_secret_by_usage(VALUE c, VALUE usagetype,
1607
- VALUE usageID) {
1702
+ static VALUE libvirt_connect_lookup_secret_by_usage(VALUE c, VALUE usagetype,
1703
+ VALUE usageID)
1704
+ {
1608
1705
  virSecretPtr secret;
1609
- virConnectPtr conn = connect_get(c);
1610
1706
 
1611
- secret = virSecretLookupByUsage(conn, NUM2UINT(usagetype),
1707
+ secret = virSecretLookupByUsage(ruby_libvirt_connect_get(c),
1708
+ NUM2UINT(usagetype),
1612
1709
  StringValueCStr(usageID));
1613
- _E(secret == NULL, create_error(e_RetrieveError, "virSecretLookupByUsage",
1614
- conn));
1710
+ ruby_libvirt_raise_error_if(secret == NULL, e_RetrieveError,
1711
+ "virSecretLookupByUsage",
1712
+ ruby_libvirt_connect_get(c));
1615
1713
 
1616
- return secret_new(secret, c);
1714
+ return ruby_libvirt_secret_new(secret, c);
1617
1715
  }
1618
1716
 
1619
1717
  /*
1620
1718
  * call-seq:
1621
1719
  * conn.define_secret_xml(xml, flags=0) -> Libvirt::Secret
1622
1720
  *
1623
- * Call +virSecretDefineXML+[http://www.libvirt.org/html/libvirt-libvirt.html#virSecretDefineXML]
1721
+ * Call virSecretDefineXML[http://www.libvirt.org/html/libvirt-libvirt.html#virSecretDefineXML]
1624
1722
  * to define a new secret from xml.
1625
1723
  */
1626
- static VALUE libvirt_conn_define_secret_xml(int argc, VALUE *argv, VALUE c) {
1724
+ static VALUE libvirt_connect_define_secret_xml(int argc, VALUE *argv, VALUE c)
1725
+ {
1627
1726
  virSecretPtr secret;
1628
- virConnectPtr conn = connect_get(c);
1629
1727
  VALUE xml, flags;
1630
1728
 
1631
1729
  rb_scan_args(argc, argv, "11", &xml, &flags);
1632
1730
 
1633
- if (NIL_P(flags))
1634
- flags = INT2NUM(0);
1731
+ secret = virSecretDefineXML(ruby_libvirt_connect_get(c),
1732
+ StringValueCStr(xml),
1733
+ ruby_libvirt_value_to_uint(flags));
1734
+ ruby_libvirt_raise_error_if(secret == NULL, e_DefinitionError,
1735
+ "virSecretDefineXML",
1736
+ ruby_libvirt_connect_get(c));
1635
1737
 
1636
- secret = virSecretDefineXML(conn, StringValueCStr(xml), NUM2UINT(flags));
1637
- _E(secret == NULL, create_error(e_DefinitionError, "virSecretDefineXML",
1638
- conn));
1639
-
1640
- return secret_new(secret, c);
1738
+ return ruby_libvirt_secret_new(secret, c);
1641
1739
  }
1642
1740
  #endif
1643
1741
 
@@ -1649,60 +1747,66 @@ VALUE pool_new(virStoragePoolPtr n, VALUE conn);
1649
1747
  * call-seq:
1650
1748
  * conn.list_storage_pools -> list
1651
1749
  *
1652
- * Call +virConnectListStoragePools+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListStoragePools]
1750
+ * Call virConnectListStoragePools[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListStoragePools]
1653
1751
  * to retrieve a list of active storage pool names on this connection.
1654
1752
  */
1655
- static VALUE libvirt_conn_list_storage_pools(VALUE s) {
1656
- gen_conn_list_names(s, StoragePools);
1753
+ static VALUE libvirt_connect_list_storage_pools(VALUE c)
1754
+ {
1755
+ gen_conn_list_names(c, StoragePools);
1657
1756
  }
1658
1757
 
1659
1758
  /*
1660
1759
  * call-seq:
1661
1760
  * conn.num_of_storage_pools -> fixnum
1662
1761
  *
1663
- * Call +virConnectNumOfStoragePools+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectNumOfStoragePools]
1762
+ * Call virConnectNumOfStoragePools[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectNumOfStoragePools]
1664
1763
  * to retrieve the number of active storage pools on this connection.
1665
1764
  */
1666
- static VALUE libvirt_conn_num_of_storage_pools(VALUE s) {
1667
- gen_conn_num_of(s, StoragePools);
1765
+ static VALUE libvirt_connect_num_of_storage_pools(VALUE c)
1766
+ {
1767
+ gen_conn_num_of(c, StoragePools);
1668
1768
  }
1669
1769
 
1670
1770
  /*
1671
1771
  * call-seq:
1672
1772
  * conn.list_defined_storage_pools -> list
1673
1773
  *
1674
- * Call +virConnectListDefinedStoragePools+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListDefinedStoragePools]
1774
+ * Call virConnectListDefinedStoragePools[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListDefinedStoragePools]
1675
1775
  * to retrieve a list of inactive storage pool names on this connection.
1676
1776
  */
1677
- static VALUE libvirt_conn_list_defined_storage_pools(VALUE s) {
1678
- gen_conn_list_names(s, DefinedStoragePools);
1777
+ static VALUE libvirt_connect_list_defined_storage_pools(VALUE c)
1778
+ {
1779
+ gen_conn_list_names(c, DefinedStoragePools);
1679
1780
  }
1680
1781
 
1681
1782
  /*
1682
1783
  * call-seq:
1683
1784
  * conn.num_of_defined_storage_pools -> fixnum
1684
1785
  *
1685
- * Call +virConnectNumOfDefinedStoragePools+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectNumOfDefinedStoragePools]
1786
+ * Call virConnectNumOfDefinedStoragePools[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectNumOfDefinedStoragePools]
1686
1787
  * to retrieve the number of inactive storage pools on this connection.
1687
1788
  */
1688
- static VALUE libvirt_conn_num_of_defined_storage_pools(VALUE s) {
1689
- gen_conn_num_of(s, DefinedStoragePools);
1789
+ static VALUE libvirt_connect_num_of_defined_storage_pools(VALUE c)
1790
+ {
1791
+ gen_conn_num_of(c, DefinedStoragePools);
1690
1792
  }
1691
1793
 
1692
1794
  /*
1693
1795
  * call-seq:
1694
1796
  * conn.lookup_storage_pool_by_name(name) -> Libvirt::StoragePool
1695
1797
  *
1696
- * Call +virStoragePoolLookupByName+[http://www.libvirt.org/html/libvirt-libvirt.html#virStoragePoolLookupByName]
1798
+ * Call virStoragePoolLookupByName[http://www.libvirt.org/html/libvirt-libvirt.html#virStoragePoolLookupByName]
1697
1799
  * to retrieve a storage pool object by name.
1698
1800
  */
1699
- static VALUE libvirt_conn_lookup_pool_by_name(VALUE c, VALUE name) {
1801
+ static VALUE libvirt_connect_lookup_pool_by_name(VALUE c, VALUE name)
1802
+ {
1700
1803
  virStoragePoolPtr pool;
1701
- virConnectPtr conn = connect_get(c);
1702
1804
 
1703
- pool = virStoragePoolLookupByName(conn, StringValueCStr(name));
1704
- _E(pool == NULL, create_error(e_RetrieveError, "virStoragePoolLookupByName",
1705
- conn));
1805
+ pool = virStoragePoolLookupByName(ruby_libvirt_connect_get(c),
1806
+ StringValueCStr(name));
1807
+ ruby_libvirt_raise_error_if(pool == NULL, e_RetrieveError,
1808
+ "virStoragePoolLookupByName",
1809
+ ruby_libvirt_connect_get(c));
1706
1810
 
1707
1811
  return pool_new(pool, c);
1708
1812
  }
@@ -1711,16 +1815,18 @@ static VALUE libvirt_conn_lookup_pool_by_name(VALUE c, VALUE name) {
1711
1815
  * call-seq:
1712
1816
  * conn.lookup_storage_pool_by_uuid(uuid) -> Libvirt::StoragePool
1713
1817
  *
1714
- * Call +virStoragePoolLookupByUUIDString+[http://www.libvirt.org/html/libvirt-libvirt.html#virStoragePoolLookupByUUIDString]
1818
+ * Call virStoragePoolLookupByUUIDString[http://www.libvirt.org/html/libvirt-libvirt.html#virStoragePoolLookupByUUIDString]
1715
1819
  * to retrieve a storage pool object by uuid.
1716
1820
  */
1717
- static VALUE libvirt_conn_lookup_pool_by_uuid(VALUE c, VALUE uuid) {
1821
+ static VALUE libvirt_connect_lookup_pool_by_uuid(VALUE c, VALUE uuid)
1822
+ {
1718
1823
  virStoragePoolPtr pool;
1719
- virConnectPtr conn = connect_get(c);
1720
1824
 
1721
- pool = virStoragePoolLookupByUUIDString(conn, StringValueCStr(uuid));
1722
- _E(pool == NULL, create_error(e_RetrieveError, "virStoragePoolLookupByUUID",
1723
- conn));
1825
+ pool = virStoragePoolLookupByUUIDString(ruby_libvirt_connect_get(c),
1826
+ StringValueCStr(uuid));
1827
+ ruby_libvirt_raise_error_if(pool == NULL, e_RetrieveError,
1828
+ "virStoragePoolLookupByUUID",
1829
+ ruby_libvirt_connect_get(c));
1724
1830
 
1725
1831
  return pool_new(pool, c);
1726
1832
  }
@@ -1729,21 +1835,22 @@ static VALUE libvirt_conn_lookup_pool_by_uuid(VALUE c, VALUE uuid) {
1729
1835
  * call-seq:
1730
1836
  * conn.create_storage_pool_xml(xml, flags=0) -> Libvirt::StoragePool
1731
1837
  *
1732
- * Call +virStoragePoolCreateXML+[http://www.libvirt.org/html/libvirt-libvirt.html#virStoragePoolCreateXML]
1838
+ * Call virStoragePoolCreateXML[http://www.libvirt.org/html/libvirt-libvirt.html#virStoragePoolCreateXML]
1733
1839
  * to start a new transient storage pool from xml.
1734
1840
  */
1735
- static VALUE libvirt_conn_create_pool_xml(int argc, VALUE *argv, VALUE c) {
1841
+ static VALUE libvirt_connect_create_pool_xml(int argc, VALUE *argv, VALUE c)
1842
+ {
1736
1843
  virStoragePoolPtr pool;
1737
- virConnectPtr conn = connect_get(c);
1738
1844
  VALUE xml, flags;
1739
1845
 
1740
1846
  rb_scan_args(argc, argv, "11", &xml, &flags);
1741
1847
 
1742
- if (NIL_P(flags))
1743
- flags = INT2NUM(0);
1744
-
1745
- pool = virStoragePoolCreateXML(conn, StringValueCStr(xml), NUM2UINT(flags));
1746
- _E(pool == NULL, create_error(e_Error, "virStoragePoolCreateXML", conn));
1848
+ pool = virStoragePoolCreateXML(ruby_libvirt_connect_get(c),
1849
+ StringValueCStr(xml),
1850
+ ruby_libvirt_value_to_uint(flags));
1851
+ ruby_libvirt_raise_error_if(pool == NULL, e_Error,
1852
+ "virStoragePoolCreateXML",
1853
+ ruby_libvirt_connect_get(c));
1747
1854
 
1748
1855
  return pool_new(pool, c);
1749
1856
  }
@@ -1752,22 +1859,22 @@ static VALUE libvirt_conn_create_pool_xml(int argc, VALUE *argv, VALUE c) {
1752
1859
  * call-seq:
1753
1860
  * conn.define_storage_pool_xml(xml, flags=0) -> Libvirt::StoragePool
1754
1861
  *
1755
- * Call +virStoragePoolDefineXML+[http://www.libvirt.org/html/libvirt-libvirt.html#virStoragePoolDefineXML]
1862
+ * Call virStoragePoolDefineXML[http://www.libvirt.org/html/libvirt-libvirt.html#virStoragePoolDefineXML]
1756
1863
  * to define a permanent storage pool from xml.
1757
1864
  */
1758
- static VALUE libvirt_conn_define_pool_xml(int argc, VALUE *argv, VALUE c) {
1865
+ static VALUE libvirt_connect_define_pool_xml(int argc, VALUE *argv, VALUE c)
1866
+ {
1759
1867
  virStoragePoolPtr pool;
1760
- virConnectPtr conn = connect_get(c);
1761
1868
  VALUE xml, flags;
1762
1869
 
1763
1870
  rb_scan_args(argc, argv, "11", &xml, &flags);
1764
1871
 
1765
- if (NIL_P(flags))
1766
- flags = INT2NUM(0);
1767
-
1768
- pool = virStoragePoolDefineXML(conn, StringValueCStr(xml), NUM2UINT(flags));
1769
- _E(pool == NULL, create_error(e_DefinitionError, "virStoragePoolDefineXML",
1770
- conn));
1872
+ pool = virStoragePoolDefineXML(ruby_libvirt_connect_get(c),
1873
+ StringValueCStr(xml),
1874
+ ruby_libvirt_value_to_uint(flags));
1875
+ ruby_libvirt_raise_error_if(pool == NULL, e_DefinitionError,
1876
+ "virStoragePoolDefineXML",
1877
+ ruby_libvirt_connect_get(c));
1771
1878
 
1772
1879
  return pool_new(pool, c);
1773
1880
  }
@@ -1776,21 +1883,22 @@ static VALUE libvirt_conn_define_pool_xml(int argc, VALUE *argv, VALUE c) {
1776
1883
  * call-seq:
1777
1884
  * conn.discover_storage_pool_sources(type, srcSpec=nil, flags=0) -> string
1778
1885
  *
1779
- * Call +virConnectFindStoragePoolSources+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectFindStoragePoolSources]
1886
+ * Call virConnectFindStoragePoolSources[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectFindStoragePoolSources]
1780
1887
  * to find the storage pool sources corresponding to type.
1781
1888
  */
1782
- static VALUE libvirt_conn_find_storage_pool_sources(int argc, VALUE *argv,
1783
- VALUE c) {
1784
- VALUE type, srcSpec_val, flags;
1785
-
1786
- rb_scan_args(argc, argv, "12", &type, &srcSpec_val, &flags);
1889
+ static VALUE libvirt_connect_find_storage_pool_sources(int argc, VALUE *argv,
1890
+ VALUE c)
1891
+ {
1892
+ VALUE type, srcSpec, flags;
1787
1893
 
1788
- if (NIL_P(flags))
1789
- flags = INT2NUM(0);
1894
+ rb_scan_args(argc, argv, "12", &type, &srcSpec, &flags);
1790
1895
 
1791
- gen_call_string(virConnectFindStoragePoolSources, conn(c), 1,
1792
- connect_get(c), StringValueCStr(type),
1793
- get_string_or_nil(srcSpec_val), NUM2UINT(flags));
1896
+ ruby_libvirt_generate_call_string(virConnectFindStoragePoolSources,
1897
+ ruby_libvirt_connect_get(c), 1,
1898
+ ruby_libvirt_connect_get(c),
1899
+ StringValueCStr(type),
1900
+ ruby_libvirt_get_cstring_or_null(srcSpec),
1901
+ ruby_libvirt_value_to_uint(flags));
1794
1902
  }
1795
1903
  #endif
1796
1904
 
@@ -1799,47 +1907,46 @@ static VALUE libvirt_conn_find_storage_pool_sources(int argc, VALUE *argv,
1799
1907
  * call-seq:
1800
1908
  * conn.sys_info(flags=0) -> string
1801
1909
  *
1802
- * Call +virConnectGetSysinfo+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectGetSysinfo]
1910
+ * Call virConnectGetSysinfo[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectGetSysinfo]
1803
1911
  * to get machine-specific information about the hypervisor. This may include
1804
1912
  * data such as the host UUID, the BIOS version, etc.
1805
1913
  */
1806
- static VALUE libvirt_conn_get_sys_info(int argc, VALUE *argv, VALUE c) {
1914
+ static VALUE libvirt_connect_sys_info(int argc, VALUE *argv, VALUE c)
1915
+ {
1807
1916
  VALUE flags;
1808
1917
 
1809
1918
  rb_scan_args(argc, argv, "01", &flags);
1810
1919
 
1811
- if (NIL_P(flags))
1812
- flags = INT2NUM(0);
1813
-
1814
- gen_call_string(virConnectGetSysinfo, conn(c), 1, connect_get(c),
1815
- NUM2UINT(flags));
1920
+ ruby_libvirt_generate_call_string(virConnectGetSysinfo,
1921
+ ruby_libvirt_connect_get(c), 1,
1922
+ ruby_libvirt_connect_get(c),
1923
+ ruby_libvirt_value_to_uint(flags));
1816
1924
  }
1817
1925
  #endif
1818
1926
 
1819
1927
  #if HAVE_TYPE_VIRSTREAMPTR
1820
- extern VALUE stream_new(virStreamPtr s, VALUE conn);
1821
1928
 
1822
1929
  /*
1823
1930
  * call-seq:
1824
1931
  * conn.stream(flags=0) -> Libvirt::Stream
1825
1932
  *
1826
- * Call +virStreamNew+[http://www.libvirt.org/html/libvirt-libvirt.html#virStreamNew]
1933
+ * Call virStreamNew[http://www.libvirt.org/html/libvirt-libvirt.html#virStreamNew]
1827
1934
  * to create a new stream.
1828
1935
  */
1829
- static VALUE libvirt_conn_stream(int argc, VALUE *argv, VALUE c) {
1936
+ static VALUE libvirt_connect_stream(int argc, VALUE *argv, VALUE c)
1937
+ {
1830
1938
  VALUE flags;
1831
1939
  virStreamPtr stream;
1832
1940
 
1833
1941
  rb_scan_args(argc, argv, "01", &flags);
1834
1942
 
1835
- if (NIL_P(flags))
1836
- flags = INT2NUM(0);
1943
+ stream = virStreamNew(ruby_libvirt_connect_get(c),
1944
+ ruby_libvirt_value_to_uint(flags));
1837
1945
 
1838
- stream = virStreamNew(connect_get(c), NUM2UINT(flags));
1946
+ ruby_libvirt_raise_error_if(stream == NULL, e_RetrieveError,
1947
+ "virStreamNew", ruby_libvirt_connect_get(c));
1839
1948
 
1840
- _E(stream == NULL, create_error(e_RetrieveError, "virStreamNew", conn(c)));
1841
-
1842
- return stream_new(stream, c);
1949
+ return ruby_libvirt_stream_new(stream, c);
1843
1950
  }
1844
1951
  #endif
1845
1952
 
@@ -1848,111 +1955,787 @@ static VALUE libvirt_conn_stream(int argc, VALUE *argv, VALUE c) {
1848
1955
  * call-seq:
1849
1956
  * conn.interface_change_begin(flags=0) -> nil
1850
1957
  *
1851
- * Call +virInterfaceChangeBegin+[http://www.libvirt.org/html/libvirt-libvirt.html#virInterfaceChangeBegin]
1958
+ * Call virInterfaceChangeBegin[http://www.libvirt.org/html/libvirt-libvirt.html#virInterfaceChangeBegin]
1852
1959
  * to create a restore point for interface changes. Once changes have been
1853
1960
  * made, conn.interface_change_commit can be used to commit the result or
1854
1961
  * conn.interface_change_rollback can be used to rollback to this restore point.
1855
1962
  */
1856
- static VALUE libvirt_conn_interface_change_begin(int argc, VALUE *argv,
1857
- VALUE c) {
1963
+ static VALUE libvirt_connect_interface_change_begin(int argc, VALUE *argv,
1964
+ VALUE c)
1965
+ {
1858
1966
  VALUE flags;
1859
1967
 
1860
1968
  rb_scan_args(argc, argv, "01", &flags);
1861
1969
 
1862
- gen_call_void(virInterfaceChangeBegin, conn(c), connect_get(c),
1863
- NUM2UINT(flags));
1970
+ ruby_libvirt_generate_call_nil(virInterfaceChangeBegin,
1971
+ ruby_libvirt_connect_get(c),
1972
+ ruby_libvirt_connect_get(c),
1973
+ ruby_libvirt_value_to_uint(flags));
1864
1974
  }
1865
1975
 
1866
1976
  /*
1867
1977
  * call-seq:
1868
1978
  * conn.interface_change_commit(flags=0) -> nil
1869
1979
  *
1870
- * Call +virInterfaceChangeCommit+[http://www.libvirt.org/html/libvirt-libvirt.html#virInterfaceChangeCommit]
1980
+ * Call virInterfaceChangeCommit[http://www.libvirt.org/html/libvirt-libvirt.html#virInterfaceChangeCommit]
1871
1981
  * to commit the interface changes since the last conn.interface_change_begin.
1872
1982
  */
1873
- static VALUE libvirt_conn_interface_change_commit(int argc, VALUE *argv,
1874
- VALUE c) {
1983
+ static VALUE libvirt_connect_interface_change_commit(int argc, VALUE *argv,
1984
+ VALUE c)
1985
+ {
1875
1986
  VALUE flags;
1876
1987
 
1877
1988
  rb_scan_args(argc, argv, "01", &flags);
1878
1989
 
1879
- gen_call_void(virInterfaceChangeCommit, conn(c), connect_get(c),
1880
- NUM2UINT(flags));
1990
+ ruby_libvirt_generate_call_nil(virInterfaceChangeCommit,
1991
+ ruby_libvirt_connect_get(c),
1992
+ ruby_libvirt_connect_get(c),
1993
+ ruby_libvirt_value_to_uint(flags));
1881
1994
  }
1882
1995
 
1883
1996
  /*
1884
1997
  * call-seq:
1885
1998
  * conn.interface_change_rollback(flags=0) -> nil
1886
1999
  *
1887
- * Call +virInterfaceChangeRollback+[http://www.libvirt.org/html/libvirt-libvirt.html#virInterfaceChangeRollback]
2000
+ * Call virInterfaceChangeRollback[http://www.libvirt.org/html/libvirt-libvirt.html#virInterfaceChangeRollback]
1888
2001
  * to rollback to the restore point saved by conn.interface_change_begin.
1889
2002
  */
1890
- static VALUE libvirt_conn_interface_change_rollback(int argc, VALUE *argv,
1891
- VALUE c) {
2003
+ static VALUE libvirt_connect_interface_change_rollback(int argc, VALUE *argv,
2004
+ VALUE c)
2005
+ {
1892
2006
  VALUE flags;
1893
2007
 
1894
2008
  rb_scan_args(argc, argv, "01", &flags);
1895
2009
 
1896
- gen_call_void(virInterfaceChangeRollback, conn(c), connect_get(c),
1897
- NUM2UINT(flags));
2010
+ ruby_libvirt_generate_call_nil(virInterfaceChangeRollback,
2011
+ ruby_libvirt_connect_get(c),
2012
+ ruby_libvirt_connect_get(c),
2013
+ ruby_libvirt_value_to_uint(flags));
1898
2014
  }
1899
2015
  #endif
1900
2016
 
2017
+ #if HAVE_VIRNODEGETCPUSTATS
2018
+ static void cpu_stats_set(void *voidparams, int i, VALUE result)
2019
+ {
2020
+ virNodeCPUStatsPtr params = (virNodeCPUStatsPtr)voidparams;
2021
+
2022
+ rb_hash_aset(result, rb_str_new2(params[i].field),
2023
+ ULL2NUM(params[i].value));
2024
+ }
2025
+
2026
+ static char *cpu_stats_nparams(VALUE d, unsigned int flags, void *opaque,
2027
+ int *nparams)
2028
+ {
2029
+ int intparam = *((int *)opaque);
2030
+
2031
+ if (virNodeGetCPUStats(ruby_libvirt_connect_get(d), intparam, NULL,
2032
+ nparams, flags) < 0) {
2033
+ return "virNodeGetCPUStats";
2034
+ }
2035
+
2036
+ return NULL;
2037
+ }
2038
+
2039
+ static char *cpu_stats_get(VALUE d, unsigned int flags, void *voidparams,
2040
+ int *nparams, void *opaque)
2041
+ {
2042
+ int intparam = *((int *)opaque);
2043
+ virNodeCPUStatsPtr params = (virNodeCPUStatsPtr)voidparams;
2044
+
2045
+ if (virNodeGetCPUStats(ruby_libvirt_connect_get(d), intparam, params,
2046
+ nparams, flags) < 0) {
2047
+ return "virNodeGetCPUStats";
2048
+ }
2049
+
2050
+ return NULL;
2051
+ }
2052
+
1901
2053
  /*
1902
- * Class Libvirt::Connect
2054
+ * call-seq:
2055
+ * conn.node_cpu_stats(cpuNum=-1, flags=0) -> Hash
2056
+ *
2057
+ * Call virNodeGetCPUStats[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeGetCPUStats]
2058
+ * to retrieve cpu statistics from the virtualization host.
1903
2059
  */
1904
- void init_connect()
2060
+ static VALUE libvirt_connect_node_cpu_stats(int argc, VALUE *argv, VALUE c)
1905
2061
  {
1906
- c_connect = rb_define_class_under(m_libvirt, "Connect", rb_cObject);
2062
+ VALUE intparam, flags;
2063
+ int tmp;
1907
2064
 
1908
- /*
1909
- * Class Libvirt::Connect::Nodeinfo
1910
- */
1911
- c_node_info = rb_define_class_under(c_connect, "Nodeinfo", rb_cObject);
1912
- rb_define_attr(c_node_info, "model", 1, 0);
1913
- rb_define_attr(c_node_info, "memory", 1, 0);
1914
- rb_define_attr(c_node_info, "cpus", 1, 0);
1915
- rb_define_attr(c_node_info, "mhz", 1, 0);
1916
- rb_define_attr(c_node_info, "nodes", 1, 0);
1917
- rb_define_attr(c_node_info, "sockets", 1, 0);
1918
- rb_define_attr(c_node_info, "cores", 1, 0);
1919
- rb_define_attr(c_node_info, "threads", 1, 0);
2065
+ rb_scan_args(argc, argv, "02", &intparam, &flags);
1920
2066
 
1921
- /*
1922
- * Class Libvirt::Connect::NodeSecurityModel
1923
- */
1924
- c_node_security_model = rb_define_class_under(c_connect,
1925
- "NodeSecurityModel",
1926
- rb_cObject);
1927
- rb_define_attr(c_node_security_model, "model", 1, 0);
1928
- rb_define_attr(c_node_security_model, "doi", 1, 0);
2067
+ tmp = ruby_libvirt_value_to_int(intparam);
1929
2068
 
1930
- rb_define_method(c_connect, "close", libvirt_conn_close, 0);
1931
- rb_define_method(c_connect, "closed?", libvirt_conn_closed_p, 0);
1932
- rb_define_method(c_connect, "type", libvirt_conn_type, 0);
1933
- rb_define_method(c_connect, "version", libvirt_conn_version, 0);
1934
- #if HAVE_VIRCONNECTGETLIBVERSION
1935
- rb_define_method(c_connect, "libversion", libvirt_conn_libversion, 0);
1936
- #endif
1937
- rb_define_method(c_connect, "hostname", libvirt_conn_hostname, 0);
1938
- rb_define_method(c_connect, "uri", libvirt_conn_uri, 0);
1939
- rb_define_method(c_connect, "max_vcpus", libvirt_conn_max_vcpus, -1);
1940
- rb_define_method(c_connect, "node_get_info", libvirt_conn_node_get_info, 0);
1941
- rb_define_method(c_connect, "node_free_memory",
1942
- libvirt_conn_node_free_memory, 0);
1943
- rb_define_method(c_connect, "node_cells_free_memory",
1944
- libvirt_conn_node_cells_free_memory, -1);
1945
- #if HAVE_VIRNODEGETSECURITYMODEL
1946
- rb_define_method(c_connect, "node_get_security_model",
1947
- libvirt_conn_node_get_security_model, 0);
1948
- #endif
1949
- #if HAVE_VIRCONNECTISENCRYPTED
1950
- rb_define_method(c_connect, "encrypted?", libvirt_conn_encrypted_p, 0);
1951
- #endif
1952
- #if HAVE_VIRCONNECTISSECURE
1953
- rb_define_method(c_connect, "secure?", libvirt_conn_secure_p, 0);
2069
+ return ruby_libvirt_get_parameters(c, ruby_libvirt_value_to_uint(flags),
2070
+ (void *)&tmp, sizeof(virNodeCPUStats),
2071
+ cpu_stats_nparams, cpu_stats_get,
2072
+ cpu_stats_set);
2073
+ }
1954
2074
  #endif
1955
- rb_define_method(c_connect, "capabilities", libvirt_conn_capabilities, 0);
2075
+
2076
+ #if HAVE_VIRNODEGETMEMORYSTATS
2077
+ static void memory_stats_set(void *voidparams, int i, VALUE result)
2078
+ {
2079
+ virNodeMemoryStatsPtr params = (virNodeMemoryStatsPtr)voidparams;
2080
+
2081
+ rb_hash_aset(result, rb_str_new2(params[i].field),
2082
+ ULL2NUM(params[i].value));
2083
+ }
2084
+
2085
+ static char *memory_stats_nparams(VALUE d, unsigned int flags, void *opaque,
2086
+ int *nparams)
2087
+ {
2088
+ int intparam = *((int *)opaque);
2089
+
2090
+ if (virNodeGetMemoryStats(ruby_libvirt_connect_get(d), intparam, NULL,
2091
+ nparams, flags) < 0) {
2092
+ return "virNodeGetMemoryStats";
2093
+ }
2094
+
2095
+ return NULL;
2096
+ }
2097
+
2098
+ static char *memory_stats_get(VALUE d, unsigned int flags, void *voidparams,
2099
+ int *nparams, void *opaque)
2100
+ {
2101
+ int intparam = *((int *)opaque);
2102
+ virNodeMemoryStatsPtr params = (virNodeMemoryStatsPtr)voidparams;
2103
+
2104
+ if (virNodeGetMemoryStats(ruby_libvirt_connect_get(d), intparam, params,
2105
+ nparams, flags) < 0) {
2106
+ return "virNodeGetMemoryStats";
2107
+ }
2108
+
2109
+ return NULL;
2110
+ }
2111
+
2112
+ /*
2113
+ * call-seq:
2114
+ * conn.node_memory_stats(cellNum=-1, flags=0) -> Hash
2115
+ *
2116
+ * Call virNodeGetMemoryStats[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeGetMemoryStats]
2117
+ * to retrieve memory statistics from the virtualization host.
2118
+ */
2119
+ static VALUE libvirt_connect_node_memory_stats(int argc, VALUE *argv, VALUE c)
2120
+ {
2121
+ VALUE intparam, flags;
2122
+ int tmp;
2123
+
2124
+ rb_scan_args(argc, argv, "02", &intparam, &flags);
2125
+
2126
+ tmp = ruby_libvirt_value_to_int(intparam);
2127
+
2128
+ return ruby_libvirt_get_parameters(c, ruby_libvirt_value_to_uint(flags),
2129
+ (void *)&tmp, sizeof(virNodeMemoryStats),
2130
+ memory_stats_nparams, memory_stats_get,
2131
+ memory_stats_set);
2132
+ }
2133
+ #endif
2134
+
2135
+ #if HAVE_VIRDOMAINSAVEIMAGEGETXMLDESC
2136
+ /*
2137
+ * call-seq:
2138
+ * conn.save_image_xml_desc(filename, flags=0) -> string
2139
+ *
2140
+ * Call virDomainSaveImageGetXMLDesc[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainSaveImageGetXMLDesc]
2141
+ * to get the XML corresponding to a save file.
2142
+ */
2143
+ static VALUE libvirt_connect_save_image_xml_desc(int argc, VALUE *argv, VALUE c)
2144
+ {
2145
+ VALUE filename, flags;
2146
+
2147
+ rb_scan_args(argc, argv, "11", &filename, &flags);
2148
+
2149
+ ruby_libvirt_generate_call_string(virDomainSaveImageGetXMLDesc,
2150
+ ruby_libvirt_connect_get(c), 1,
2151
+ ruby_libvirt_connect_get(c),
2152
+ StringValueCStr(filename),
2153
+ ruby_libvirt_value_to_uint(flags));
2154
+ }
2155
+
2156
+ /*
2157
+ * call-seq:
2158
+ * conn.define_save_image_xml(filename, newxml, flags=0) -> nil
2159
+ *
2160
+ * Call virDomainSaveImageDefineXML[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainSaveImageDefineXML]
2161
+ * to define new XML for a saved image.
2162
+ */
2163
+ static VALUE libvirt_connect_define_save_image_xml(int argc, VALUE *argv,
2164
+ VALUE c)
2165
+ {
2166
+ VALUE filename, newxml, flags;
2167
+
2168
+ rb_scan_args(argc, argv, "21", &filename, &newxml, &flags);
2169
+
2170
+ ruby_libvirt_generate_call_nil(virDomainSaveImageDefineXML,
2171
+ ruby_libvirt_connect_get(c),
2172
+ ruby_libvirt_connect_get(c),
2173
+ StringValueCStr(filename),
2174
+ StringValueCStr(newxml),
2175
+ ruby_libvirt_value_to_uint(flags));
2176
+ }
2177
+ #endif
2178
+
2179
+ #if HAVE_VIRNODESUSPENDFORDURATION
2180
+ /*
2181
+ * call-seq:
2182
+ * conn.node_suspend_for_duration(target, duration, flags=0) -> nil
2183
+ *
2184
+ * Call virNodeSuspendForDuration[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeSuspendForDuration]
2185
+ * to suspend the hypervisor for the specified duration.
2186
+ */
2187
+ static VALUE libvirt_connect_node_suspend_for_duration(int argc, VALUE *argv,
2188
+ VALUE c)
2189
+ {
2190
+ VALUE target, duration, flags;
2191
+
2192
+ rb_scan_args(argc, argv, "21", &target, &duration, &flags);
2193
+
2194
+ ruby_libvirt_generate_call_nil(virNodeSuspendForDuration,
2195
+ ruby_libvirt_connect_get(c),
2196
+ ruby_libvirt_connect_get(c),
2197
+ NUM2UINT(target), NUM2ULL(duration),
2198
+ ruby_libvirt_value_to_uint(flags));
2199
+ }
2200
+ #endif
2201
+
2202
+ #if HAVE_VIRNODEGETMEMORYPARAMETERS
2203
+ static char *node_memory_nparams(VALUE d, unsigned int flags, void *opaque,
2204
+ int *nparams)
2205
+ {
2206
+ if (virNodeGetMemoryParameters(ruby_libvirt_connect_get(d), NULL, nparams,
2207
+ flags) < 0) {
2208
+ return "virNodeGetMemoryParameters";
2209
+ }
2210
+
2211
+ return NULL;
2212
+ }
2213
+
2214
+ static char *node_memory_get(VALUE d, unsigned int flags, void *voidparams,
2215
+ int *nparams, void *opaque)
2216
+ {
2217
+ virTypedParameterPtr params = (virTypedParameterPtr)voidparams;
2218
+
2219
+ if (virNodeGetMemoryParameters(ruby_libvirt_connect_get(d), params, nparams,
2220
+ flags) < 0) {
2221
+ return "virNodeGetMemoryParameters";
2222
+ }
2223
+ return NULL;
2224
+ }
2225
+
2226
+ static char *node_memory_set(VALUE d, unsigned int flags,
2227
+ virTypedParameterPtr params, int nparams,
2228
+ void *opauqe)
2229
+ {
2230
+ if (virNodeSetMemoryParameters(ruby_libvirt_connect_get(d), params, nparams,
2231
+ flags) < 0) {
2232
+ return "virNodeSetMemoryParameters";
2233
+ }
2234
+ return NULL;
2235
+ }
2236
+
2237
+ /*
2238
+ * call-seq:
2239
+ * conn.node_memory_parameters(flags=0) -> Hash
2240
+ *
2241
+ * Call virNodeGetMemoryParameters[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeGetMemoryParameters]
2242
+ * to get information about memory on the host node.
2243
+ */
2244
+ static VALUE libvirt_connect_node_memory_parameters(int argc, VALUE *argv,
2245
+ VALUE c)
2246
+ {
2247
+ VALUE flags;
2248
+
2249
+ rb_scan_args(argc, argv, "01", &flags);
2250
+
2251
+ return ruby_libvirt_get_typed_parameters(c,
2252
+ ruby_libvirt_value_to_uint(flags),
2253
+ NULL, node_memory_nparams,
2254
+ node_memory_get);
2255
+ }
2256
+
2257
+ static struct ruby_libvirt_typed_param memory_allowed[] = {
2258
+ {VIR_NODE_MEMORY_SHARED_PAGES_TO_SCAN, VIR_TYPED_PARAM_UINT},
2259
+ {VIR_NODE_MEMORY_SHARED_SLEEP_MILLISECS, VIR_TYPED_PARAM_UINT},
2260
+ {VIR_NODE_MEMORY_SHARED_PAGES_SHARED, VIR_TYPED_PARAM_ULLONG},
2261
+ {VIR_NODE_MEMORY_SHARED_PAGES_SHARING, VIR_TYPED_PARAM_ULLONG},
2262
+ {VIR_NODE_MEMORY_SHARED_PAGES_UNSHARED, VIR_TYPED_PARAM_ULLONG},
2263
+ {VIR_NODE_MEMORY_SHARED_PAGES_VOLATILE, VIR_TYPED_PARAM_ULLONG},
2264
+ {VIR_NODE_MEMORY_SHARED_FULL_SCANS, VIR_TYPED_PARAM_ULLONG},
2265
+ #if HAVE_CONST_VIR_NODE_MEMORY_SHARED_MERGE_ACROSS_NODES
2266
+ {VIR_NODE_MEMORY_SHARED_MERGE_ACROSS_NODES, VIR_TYPED_PARAM_UINT},
2267
+ #endif
2268
+ };
2269
+
2270
+ /*
2271
+ * call-seq:
2272
+ * conn.node_memory_parameters = Hash,flags=0
2273
+ *
2274
+ * Call virNodeSetMemoryParameters[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeSetMemoryParameters]
2275
+ * to set the memory parameters for this host node.
2276
+ */
2277
+ static VALUE libvirt_connect_node_memory_parameters_equal(VALUE c, VALUE input)
2278
+ {
2279
+ VALUE hash, flags;
2280
+
2281
+ ruby_libvirt_assign_hash_and_flags(input, &hash, &flags);
2282
+
2283
+ return ruby_libvirt_set_typed_parameters(c, hash, NUM2UINT(flags), NULL,
2284
+ memory_allowed,
2285
+ ARRAY_SIZE(memory_allowed),
2286
+ node_memory_set);
2287
+ }
2288
+ #endif
2289
+
2290
+ #if HAVE_VIRNODEGETCPUMAP
2291
+ struct cpu_map_field_to_value {
2292
+ VALUE result;
2293
+ int cpu;
2294
+ int used;
2295
+ };
2296
+
2297
+ static VALUE cpu_map_field_to_value(VALUE input)
2298
+ {
2299
+ struct cpu_map_field_to_value *ftv = (struct cpu_map_field_to_value *)input;
2300
+ char cpuname[10];
2301
+
2302
+ snprintf(cpuname, sizeof(cpuname), "%d", ftv->cpu);
2303
+ rb_hash_aset(ftv->result, rb_str_new2(cpuname), ftv->used ? Qtrue : Qfalse);
2304
+
2305
+ return Qnil;
2306
+ }
2307
+
2308
+ /*
2309
+ * call-seq:
2310
+ * conn.node_cpu_map -> Hash
2311
+ *
2312
+ * Call virNodeGetCPUMap[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeGetCPUMap]
2313
+ * to get a map of online host CPUs.
2314
+ */
2315
+ static VALUE libvirt_connect_node_cpu_map(int argc, VALUE *argv, VALUE c)
2316
+ {
2317
+ VALUE flags, result;
2318
+ unsigned char *map;
2319
+ unsigned int online;
2320
+ int ret, i, exception = 0;
2321
+ struct cpu_map_field_to_value ftv;
2322
+
2323
+ rb_scan_args(argc, argv, "01", &flags);
2324
+
2325
+ ret = virNodeGetCPUMap(ruby_libvirt_connect_get(c), &map, &online,
2326
+ ruby_libvirt_value_to_uint(flags));
2327
+ ruby_libvirt_raise_error_if(ret < 0, e_RetrieveError, "virNodeGetCPUMap",
2328
+ ruby_libvirt_connect_get(c));
2329
+
2330
+ result = rb_hash_new();
2331
+
2332
+ for (i = 0; i < ret; i++) {
2333
+ ftv.result = result;
2334
+ ftv.cpu = i;
2335
+ ftv.used = VIR_CPU_USED(map, i);
2336
+ rb_protect(cpu_map_field_to_value, (VALUE)&ftv, &exception);
2337
+ if (exception) {
2338
+ free(map);
2339
+ rb_jump_tag(exception);
2340
+ }
2341
+ }
2342
+
2343
+ free(map);
2344
+
2345
+ return result;
2346
+ }
2347
+ #endif
2348
+
2349
+ #if HAVE_VIRCONNECTSETKEEPALIVE
2350
+ /*
2351
+ * call-seq:
2352
+ * conn.set_keepalive(interval, count) -> fixnum
2353
+ *
2354
+ * Call virConnectSetKeepAlive[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectSetKeepAlive]
2355
+ * to start sending keepalive messages. Deprecated; use conn.keepalive=
2356
+ * instead.
2357
+ */
2358
+ static VALUE libvirt_connect_set_keepalive(VALUE c, VALUE interval, VALUE count)
2359
+ {
2360
+ ruby_libvirt_generate_call_int(virConnectSetKeepAlive,
2361
+ ruby_libvirt_connect_get(c),
2362
+ ruby_libvirt_connect_get(c),
2363
+ NUM2INT(interval), NUM2UINT(count));
2364
+ }
2365
+
2366
+ /*
2367
+ * call-seq:
2368
+ * conn.keepalive = interval,count
2369
+ *
2370
+ * Call virConnectSetKeepAlive[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectSetKeepAlive]
2371
+ * to start sending keepalive messages.
2372
+ */
2373
+ static VALUE libvirt_connect_keepalive_equal(VALUE c, VALUE in)
2374
+ {
2375
+ VALUE interval, count;
2376
+
2377
+ Check_Type(in, T_ARRAY);
2378
+
2379
+ if (RARRAY_LEN(in) != 2) {
2380
+ rb_raise(rb_eArgError, "wrong number of arguments (%ld for 2)",
2381
+ RARRAY_LEN(in));
2382
+ }
2383
+
2384
+ interval = rb_ary_entry(in, 0);
2385
+ count = rb_ary_entry(in, 1);
2386
+
2387
+ ruby_libvirt_generate_call_int(virConnectSetKeepAlive,
2388
+ ruby_libvirt_connect_get(c),
2389
+ ruby_libvirt_connect_get(c),
2390
+ NUM2INT(interval), NUM2UINT(count));
2391
+ }
2392
+ #endif
2393
+
2394
+ #if HAVE_VIRCONNECTLISTALLDOMAINS
2395
+ /*
2396
+ * call-seq:
2397
+ * conn.list_all_domains(flags=0) -> array
2398
+ *
2399
+ * Call virConnectListAllDomains[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListAllDomains]
2400
+ * to get an array of domain objects for all domains.
2401
+ */
2402
+ static VALUE libvirt_connect_list_all_domains(int argc, VALUE *argv, VALUE c)
2403
+ {
2404
+ ruby_libvirt_generate_call_list_all(virDomainPtr, argc, argv,
2405
+ virConnectListAllDomains,
2406
+ ruby_libvirt_connect_get(c), c,
2407
+ ruby_libvirt_domain_new, virDomainFree);
2408
+ }
2409
+ #endif
2410
+
2411
+ #if HAVE_VIRCONNECTLISTALLNETWORKS
2412
+ /*
2413
+ * call-seq:
2414
+ * conn.list_all_networks(flags=0) -> array
2415
+ *
2416
+ * Call virConnectListAllNetworks[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListAllNetworks]
2417
+ * to get an array of network objects for all networks.
2418
+ */
2419
+ static VALUE libvirt_connect_list_all_networks(int argc, VALUE *argv, VALUE c)
2420
+ {
2421
+ ruby_libvirt_generate_call_list_all(virNetworkPtr, argc, argv,
2422
+ virConnectListAllNetworks,
2423
+ ruby_libvirt_connect_get(c), c,
2424
+ ruby_libvirt_network_new,
2425
+ virNetworkFree);
2426
+ }
2427
+ #endif
2428
+
2429
+ #if HAVE_VIRCONNECTLISTALLINTERFACES
2430
+ /*
2431
+ * call-seq:
2432
+ * conn.list_all_interfaces(flags=0) -> array
2433
+ *
2434
+ * Call virConnectListAllInterfaces[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListAllInterfaces]
2435
+ * to get an array of interface objects for all interfaces.
2436
+ */
2437
+ static VALUE libvirt_connect_list_all_interfaces(int argc, VALUE *argv, VALUE c)
2438
+ {
2439
+ ruby_libvirt_generate_call_list_all(virInterfacePtr, argc, argv,
2440
+ virConnectListAllInterfaces,
2441
+ ruby_libvirt_connect_get(c), c,
2442
+ ruby_libvirt_interface_new,
2443
+ virInterfaceFree);
2444
+ }
2445
+ #endif
2446
+
2447
+ #if HAVE_VIRCONNECTLISTALLSECRETS
2448
+ /*
2449
+ * call-seq:
2450
+ * conn.list_all_secrets(flags=0) -> array
2451
+ *
2452
+ * Call virConnectListAllSecrets[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListAllSecrets]
2453
+ * to get an array of secret objects for all secrets.
2454
+ */
2455
+ static VALUE libvirt_connect_list_all_secrets(int argc, VALUE *argv, VALUE c)
2456
+ {
2457
+ ruby_libvirt_generate_call_list_all(virSecretPtr, argc, argv,
2458
+ virConnectListAllSecrets,
2459
+ ruby_libvirt_connect_get(c), c,
2460
+ ruby_libvirt_secret_new, virSecretFree);
2461
+ }
2462
+ #endif
2463
+
2464
+ #if HAVE_VIRCONNECTLISTALLNODEDEVICES
2465
+ /*
2466
+ * call-seq:
2467
+ * conn.list_all_nodedevices(flags=0) -> array
2468
+ *
2469
+ * Call virConnectListAllNodeDevices[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListAllNodeDevices]
2470
+ * to get an array of nodedevice objects for all nodedevices.
2471
+ */
2472
+ static VALUE libvirt_connect_list_all_nodedevices(int argc, VALUE *argv,
2473
+ VALUE c)
2474
+ {
2475
+ ruby_libvirt_generate_call_list_all(virNodeDevicePtr, argc, argv,
2476
+ virConnectListAllNodeDevices,
2477
+ ruby_libvirt_connect_get(c), c,
2478
+ ruby_libvirt_nodedevice_new,
2479
+ virNodeDeviceFree);
2480
+ }
2481
+ #endif
2482
+
2483
+ #if HAVE_VIRCONNECTLISTALLSTORAGEPOOLS
2484
+ /*
2485
+ * call-seq:
2486
+ * conn.list_all_storage_pools(flags=0) -> array
2487
+ *
2488
+ * Call virConnectListAllStoragePools[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListAllStoragePools]
2489
+ * to get an array of storage pool objects for all storage pools.
2490
+ */
2491
+ static VALUE libvirt_connect_list_all_storage_pools(int argc, VALUE *argv,
2492
+ VALUE c)
2493
+ {
2494
+ ruby_libvirt_generate_call_list_all(virStoragePoolPtr, argc, argv,
2495
+ virConnectListAllStoragePools,
2496
+ ruby_libvirt_connect_get(c), c,
2497
+ pool_new, virStoragePoolFree);
2498
+ }
2499
+ #endif
2500
+
2501
+ #if HAVE_VIRCONNECTLISTALLNWFILTERS
2502
+ /*
2503
+ * call-seq:
2504
+ * conn.list_all_nwfilters(flags=0) -> array
2505
+ *
2506
+ * Call virConnectListAllNWFilters[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListAllNWFilters]
2507
+ * to get an array of nwfilters for all nwfilter objects.
2508
+ */
2509
+ static VALUE libvirt_connect_list_all_nwfilters(int argc, VALUE *argv, VALUE c)
2510
+ {
2511
+ ruby_libvirt_generate_call_list_all(virNWFilterPtr, argc, argv,
2512
+ virConnectListAllNWFilters,
2513
+ ruby_libvirt_connect_get(c), c,
2514
+ ruby_libvirt_nwfilter_new,
2515
+ virNWFilterFree);
2516
+ }
2517
+ #endif
2518
+
2519
+ #if HAVE_VIRCONNECTISALIVE
2520
+ /*
2521
+ * call-seq:
2522
+ * conn.alive? -> [True|False]
2523
+ *
2524
+ * Call virConnectIsAlive[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectIsAlive]
2525
+ * to determine if the connection is alive.
2526
+ */
2527
+ static VALUE libvirt_connect_alive_p(VALUE c)
2528
+ {
2529
+ ruby_libvirt_generate_call_truefalse(virConnectIsAlive,
2530
+ ruby_libvirt_connect_get(c),
2531
+ ruby_libvirt_connect_get(c));
2532
+ }
2533
+ #endif
2534
+
2535
+ #if HAVE_VIRDOMAINCREATEXMLWITHFILES
2536
+ /*
2537
+ * call-seq:
2538
+ * conn.create_domain_xml_with_files(xml, fds=nil, flags=0) -> Libvirt::Domain
2539
+ *
2540
+ * Call virDomainCreateXMLWithFiles[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainCreateXMLWithFiles]
2541
+ * to launch a new guest domain with a set of open file descriptors.
2542
+ */
2543
+ static VALUE libvirt_connect_create_domain_xml_with_files(int argc, VALUE *argv,
2544
+ VALUE c)
2545
+ {
2546
+ VALUE xml, fds, flags;
2547
+ int *files;
2548
+ unsigned int numfiles, i;
2549
+ virDomainPtr dom;
2550
+
2551
+ rb_scan_args(argc, argv, "12", &xml, &fds, &flags);
2552
+
2553
+ Check_Type(xml, T_STRING);
2554
+
2555
+ if (TYPE(fds) == T_NIL) {
2556
+ files = NULL;
2557
+ numfiles = 0;
2558
+ }
2559
+ else if (TYPE(fds) == T_ARRAY) {
2560
+ numfiles = RARRAY_LEN(fds);
2561
+ files = alloca(numfiles * sizeof(int));
2562
+ for (i = 0; i < numfiles; i++) {
2563
+ files[i] = NUM2INT(rb_ary_entry(fds, i));
2564
+ }
2565
+ }
2566
+ else {
2567
+ rb_raise(rb_eTypeError, "wrong argument type (expected Array)");
2568
+ }
2569
+
2570
+ dom = virDomainCreateXMLWithFiles(ruby_libvirt_connect_get(c),
2571
+ ruby_libvirt_get_cstring_or_null(xml),
2572
+ numfiles, files,
2573
+ ruby_libvirt_value_to_uint(flags));
2574
+ ruby_libvirt_raise_error_if(dom == NULL, e_Error,
2575
+ "virDomainCreateXMLWithFiles",
2576
+ ruby_libvirt_connect_get(c));
2577
+
2578
+ return ruby_libvirt_domain_new(dom, c);
2579
+ }
2580
+ #endif
2581
+
2582
+ #if HAVE_VIRDOMAINQEMUATTACH
2583
+ /*
2584
+ * call-seq:
2585
+ * conn.qemu_attach(pid, flags=0) -> Libvirt::Domain
2586
+ *
2587
+ * Call virDomainQemuAttach[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainQemuAttach]
2588
+ * to attach to the Qemu process pid.
2589
+ */
2590
+ static VALUE libvirt_connect_qemu_attach(int argc, VALUE *argv, VALUE c)
2591
+ {
2592
+ VALUE pid, flags;
2593
+ virDomainPtr dom;
2594
+
2595
+ rb_scan_args(argc, argv, "11", &pid, &flags);
2596
+
2597
+ dom = virDomainQemuAttach(ruby_libvirt_connect_get(c), NUM2UINT(pid),
2598
+ ruby_libvirt_value_to_uint(flags));
2599
+ ruby_libvirt_raise_error_if(dom == NULL, e_Error, "virDomainQemuAttach",
2600
+ ruby_libvirt_connect_get(c));
2601
+
2602
+ return ruby_libvirt_domain_new(dom, c);
2603
+ }
2604
+ #endif
2605
+
2606
+ #if HAVE_VIRCONNECTGETCPUMODELNAMES
2607
+ struct model_name_args {
2608
+ VALUE result;
2609
+ int i;
2610
+ char *value;
2611
+ };
2612
+
2613
+ static VALUE model_name_wrap(VALUE arg)
2614
+ {
2615
+ struct model_name_args *e = (struct model_name_args *)arg;
2616
+ VALUE elem;
2617
+
2618
+ elem = rb_str_new2(e->value);
2619
+
2620
+ rb_ary_store(e->result, e->i, elem);
2621
+
2622
+ return Qnil;
2623
+ }
2624
+
2625
+ /*
2626
+ * call-seq:
2627
+ * conn.cpu_model_names(arch, flags=0) -> Array
2628
+ *
2629
+ * Call virConnectGetCPUModelNames[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectGetCPUModelNames]
2630
+ * to get an array of CPU model names.
2631
+ */
2632
+ static VALUE libvirt_connect_cpu_model_names(int argc, VALUE *argv, VALUE c)
2633
+ {
2634
+ VALUE arch, flags, result;
2635
+ char **models;
2636
+ int i = 0, j, elems = 0;
2637
+ struct model_name_args args;
2638
+ int exception;
2639
+
2640
+ rb_scan_args(argc, argv, "11", &arch, &flags);
2641
+
2642
+ elems = virConnectGetCPUModelNames(ruby_libvirt_connect_get(c),
2643
+ StringValueCStr(arch), &models,
2644
+ ruby_libvirt_value_to_uint(flags));
2645
+ ruby_libvirt_raise_error_if(elems < 0, e_RetrieveError,
2646
+ "virConnectGetCPUModelNames",
2647
+ ruby_libvirt_connect_get(c));
2648
+
2649
+ result = rb_protect(ruby_libvirt_ary_new2_wrap, (VALUE)&elems, &exception);
2650
+ if (exception) {
2651
+ goto error;
2652
+ }
2653
+
2654
+ for (i = 0; i < elems; i++) {
2655
+ args.result = result;
2656
+ args.i = i;
2657
+ args.value = models[i];
2658
+
2659
+ rb_protect(model_name_wrap, (VALUE)&args, &exception);
2660
+ if (exception) {
2661
+ goto error;
2662
+ }
2663
+ free(models[i]);
2664
+ }
2665
+ free(models);
2666
+
2667
+ return result;
2668
+
2669
+ error:
2670
+ for (j = i; j < elems; j++) {
2671
+ free(models[j]);
2672
+ }
2673
+ free(models);
2674
+
2675
+ rb_jump_tag(exception);
2676
+ return Qnil;
2677
+ }
2678
+ #endif
2679
+
2680
+ /*
2681
+ * Class Libvirt::Connect
2682
+ */
2683
+ void ruby_libvirt_connect_init(void)
2684
+ {
2685
+ c_connect = rb_define_class_under(m_libvirt, "Connect", rb_cObject);
2686
+
2687
+ /*
2688
+ * Class Libvirt::Connect::Nodeinfo
2689
+ */
2690
+ c_node_info = rb_define_class_under(c_connect, "Nodeinfo", rb_cObject);
2691
+ rb_define_attr(c_node_info, "model", 1, 0);
2692
+ rb_define_attr(c_node_info, "memory", 1, 0);
2693
+ rb_define_attr(c_node_info, "cpus", 1, 0);
2694
+ rb_define_attr(c_node_info, "mhz", 1, 0);
2695
+ rb_define_attr(c_node_info, "nodes", 1, 0);
2696
+ rb_define_attr(c_node_info, "sockets", 1, 0);
2697
+ rb_define_attr(c_node_info, "cores", 1, 0);
2698
+ rb_define_attr(c_node_info, "threads", 1, 0);
2699
+
2700
+ /*
2701
+ * Class Libvirt::Connect::NodeSecurityModel
2702
+ */
2703
+ c_node_security_model = rb_define_class_under(c_connect,
2704
+ "NodeSecurityModel",
2705
+ rb_cObject);
2706
+ rb_define_attr(c_node_security_model, "model", 1, 0);
2707
+ rb_define_attr(c_node_security_model, "doi", 1, 0);
2708
+
2709
+ rb_define_method(c_connect, "close", libvirt_connect_close, 0);
2710
+ rb_define_method(c_connect, "closed?", libvirt_connect_closed_p, 0);
2711
+ rb_define_method(c_connect, "type", libvirt_connect_type, 0);
2712
+ rb_define_method(c_connect, "version", libvirt_connect_version, 0);
2713
+ #if HAVE_VIRCONNECTGETLIBVERSION
2714
+ rb_define_method(c_connect, "libversion", libvirt_connect_libversion, 0);
2715
+ #endif
2716
+ rb_define_method(c_connect, "hostname", libvirt_connect_hostname, 0);
2717
+ rb_define_method(c_connect, "uri", libvirt_connect_uri, 0);
2718
+ rb_define_method(c_connect, "max_vcpus", libvirt_connect_max_vcpus, -1);
2719
+ rb_define_method(c_connect, "node_info", libvirt_connect_node_info, 0);
2720
+ rb_define_alias(c_connect, "node_get_info", "node_info");
2721
+ rb_define_method(c_connect, "node_free_memory",
2722
+ libvirt_connect_node_free_memory, 0);
2723
+ rb_define_method(c_connect, "node_cells_free_memory",
2724
+ libvirt_connect_node_cells_free_memory, -1);
2725
+ #if HAVE_VIRNODEGETSECURITYMODEL
2726
+ rb_define_method(c_connect, "node_security_model",
2727
+ libvirt_connect_node_security_model, 0);
2728
+ rb_define_alias(c_connect, "node_get_security_model",
2729
+ "node_security_model");
2730
+ #endif
2731
+ #if HAVE_VIRCONNECTISENCRYPTED
2732
+ rb_define_method(c_connect, "encrypted?", libvirt_connect_encrypted_p, 0);
2733
+ #endif
2734
+ #if HAVE_VIRCONNECTISSECURE
2735
+ rb_define_method(c_connect, "secure?", libvirt_connect_secure_p, 0);
2736
+ #endif
2737
+ rb_define_method(c_connect, "capabilities", libvirt_connect_capabilities,
2738
+ 0);
1956
2739
 
1957
2740
  #if HAVE_VIRCONNECTCOMPARECPU
1958
2741
  rb_define_const(c_connect, "CPU_COMPARE_ERROR",
@@ -1964,11 +2747,16 @@ void init_connect()
1964
2747
  rb_define_const(c_connect, "CPU_COMPARE_SUPERSET",
1965
2748
  INT2NUM(VIR_CPU_COMPARE_SUPERSET));
1966
2749
 
1967
- rb_define_method(c_connect, "compare_cpu", libvirt_conn_compare_cpu, -1);
2750
+ rb_define_method(c_connect, "compare_cpu", libvirt_connect_compare_cpu, -1);
1968
2751
  #endif
1969
2752
 
1970
2753
  #if HAVE_VIRCONNECTBASELINECPU
1971
- rb_define_method(c_connect, "baseline_cpu", libvirt_conn_baseline_cpu, -1);
2754
+ rb_define_method(c_connect, "baseline_cpu", libvirt_connect_baseline_cpu,
2755
+ -1);
2756
+ #endif
2757
+ #if HAVE_CONST_VIR_CONNECT_BASELINE_CPU_EXPAND_FEATURES
2758
+ rb_define_const(c_connect, "BASELINE_CPU_EXPAND_FEATURES",
2759
+ INT2NUM(VIR_CONNECT_BASELINE_CPU_EXPAND_FEATURES));
1972
2760
  #endif
1973
2761
 
1974
2762
  /* In the libvirt development history, the events were
@@ -2101,165 +2889,430 @@ void init_connect()
2101
2889
  rb_define_const(c_connect, "DOMAIN_EVENT_ID_CONTROL_ERROR",
2102
2890
  INT2NUM(VIR_DOMAIN_EVENT_ID_CONTROL_ERROR));
2103
2891
  #endif
2892
+ #if HAVE_CONST_VIR_DOMAIN_EVENT_SHUTDOWN
2893
+ rb_define_const(c_connect, "DOMAIN_EVENT_SHUTDOWN",
2894
+ INT2NUM(VIR_DOMAIN_EVENT_SHUTDOWN));
2895
+ #endif
2896
+ #if HAVE_CONST_VIR_DOMAIN_EVENT_PMSUSPENDED
2897
+ rb_define_const(c_connect, "DOMAIN_EVENT_PMSUSPENDED",
2898
+ INT2NUM(VIR_DOMAIN_EVENT_PMSUSPENDED));
2899
+ #endif
2900
+ #if HAVE_CONST_VIR_DOMAIN_EVENT_CRASHED
2901
+ rb_define_const(c_connect, "DOMAIN_EVENT_CRASHED",
2902
+ INT2NUM(VIR_DOMAIN_EVENT_CRASHED));
2903
+ #endif
2904
+ #if HAVE_CONST_VIR_DOMAIN_EVENT_STARTED_WAKEUP
2905
+ rb_define_const(c_connect, "DOMAIN_EVENT_STARTED_WAKEUP",
2906
+ INT2NUM(VIR_DOMAIN_EVENT_STARTED_WAKEUP));
2907
+ #endif
2908
+ #if HAVE_CONST_VIR_DOMAIN_EVENT_SUSPENDED_RESTORED
2909
+ rb_define_const(c_connect, "DOMAIN_EVENT_SUSPENDED_RESTORED",
2910
+ INT2NUM(VIR_DOMAIN_EVENT_SUSPENDED_RESTORED));
2911
+ #endif
2912
+ #if HAVE_CONST_VIR_DOMAIN_EVENT_SUSPENDED_FROM_SNAPSHOT
2913
+ rb_define_const(c_connect, "DOMAIN_EVENT_SUSPENDED_FROM_SNAPSHOT",
2914
+ INT2NUM(VIR_DOMAIN_EVENT_SUSPENDED_FROM_SNAPSHOT));
2915
+ #endif
2916
+ #if HAVE_CONST_VIR_DOMAIN_EVENT_SUSPENDED_API_ERROR
2917
+ rb_define_const(c_connect, "DOMAIN_EVENT_SUSPENDED_API_ERROR",
2918
+ INT2NUM(VIR_DOMAIN_EVENT_SUSPENDED_API_ERROR));
2919
+ #endif
2920
+ #if HAVE_CONST_VIR_DOMAIN_EVENT_RESUMED_FROM_SNAPSHOT
2921
+ rb_define_const(c_connect, "DOMAIN_EVENT_RESUMED_FROM_SNAPSHOT",
2922
+ INT2NUM(VIR_DOMAIN_EVENT_RESUMED_FROM_SNAPSHOT));
2923
+ #endif
2924
+ #if HAVE_CONST_VIR_DOMAIN_EVENT_SHUTDOWN_FINISHED
2925
+ rb_define_const(c_connect, "DOMAIN_EVENT_SHUTDOWN_FINISHED",
2926
+ INT2NUM(VIR_DOMAIN_EVENT_SHUTDOWN_FINISHED));
2927
+ #endif
2928
+ #if HAVE_CONST_VIR_DOMAIN_EVENT_PMSUSPENDED_MEMORY
2929
+ rb_define_const(c_connect, "DOMAIN_EVENT_PMSUSPENDED_MEMORY",
2930
+ INT2NUM(VIR_DOMAIN_EVENT_PMSUSPENDED_MEMORY));
2931
+ #endif
2932
+ #if HAVE_CONST_VIR_DOMAIN_EVENT_PMSUSPENDED_DISK
2933
+ rb_define_const(c_connect, "DOMAIN_EVENT_PMSUSPENDED_DISK",
2934
+ INT2NUM(VIR_DOMAIN_EVENT_PMSUSPENDED_DISK));
2935
+ #endif
2936
+ #if HAVE_CONST_VIR_DOMAIN_EVENT_CRASHED_PANICKED
2937
+ rb_define_const(c_connect, "DOMAIN_EVENT_CRASHED_PANICKED",
2938
+ INT2NUM(VIR_DOMAIN_EVENT_CRASHED_PANICKED));
2939
+ #endif
2940
+ #if HAVE_CONST_VIR_DOMAIN_EVENT_GRAPHICS_ADDRESS_UNIX
2941
+ rb_define_const(c_connect, "DOMAIN_EVENT_GRAPHICS_ADDRESS_UNIX",
2942
+ INT2NUM(VIR_DOMAIN_EVENT_GRAPHICS_ADDRESS_UNIX));
2943
+ #endif
2104
2944
 
2105
2945
  #if HAVE_VIRCONNECTDOMAINEVENTREGISTER
2106
2946
  rb_define_method(c_connect, "domain_event_register",
2107
- libvirt_conn_domain_event_register, -1);
2947
+ libvirt_connect_domain_event_register, -1);
2108
2948
  rb_define_method(c_connect, "domain_event_deregister",
2109
- libvirt_conn_domain_event_deregister, 0);
2949
+ libvirt_connect_domain_event_deregister, 0);
2110
2950
  #endif
2111
2951
 
2112
2952
  #if HAVE_VIRCONNECTDOMAINEVENTREGISTERANY
2113
2953
  rb_define_method(c_connect, "domain_event_register_any",
2114
- libvirt_conn_domain_event_register_any, -1);
2954
+ libvirt_connect_domain_event_register_any, -1);
2115
2955
  rb_define_method(c_connect, "domain_event_deregister_any",
2116
- libvirt_conn_domain_event_deregister_any, 1);
2956
+ libvirt_connect_domain_event_deregister_any, 1);
2117
2957
  #endif
2118
2958
 
2119
2959
  /* Domain creation/lookup */
2120
2960
  rb_define_method(c_connect, "num_of_domains",
2121
- libvirt_conn_num_of_domains, 0);
2122
- rb_define_method(c_connect, "list_domains", libvirt_conn_list_domains, 0);
2961
+ libvirt_connect_num_of_domains, 0);
2962
+ rb_define_method(c_connect, "list_domains", libvirt_connect_list_domains,
2963
+ 0);
2123
2964
  rb_define_method(c_connect, "num_of_defined_domains",
2124
- libvirt_conn_num_of_defined_domains, 0);
2965
+ libvirt_connect_num_of_defined_domains, 0);
2125
2966
  rb_define_method(c_connect, "list_defined_domains",
2126
- libvirt_conn_list_defined_domains, 0);
2967
+ libvirt_connect_list_defined_domains, 0);
2127
2968
  rb_define_method(c_connect, "create_domain_linux",
2128
- libvirt_conn_create_linux, -1);
2969
+ libvirt_connect_create_linux, -1);
2129
2970
  #if HAVE_VIRDOMAINCREATEXML
2130
2971
  rb_define_method(c_connect, "create_domain_xml",
2131
- libvirt_conn_create_xml, -1);
2972
+ libvirt_connect_create_domain_xml, -1);
2132
2973
  #endif
2133
2974
  rb_define_method(c_connect, "lookup_domain_by_name",
2134
- libvirt_conn_lookup_domain_by_name, 1);
2975
+ libvirt_connect_lookup_domain_by_name, 1);
2135
2976
  rb_define_method(c_connect, "lookup_domain_by_id",
2136
- libvirt_conn_lookup_domain_by_id, 1);
2977
+ libvirt_connect_lookup_domain_by_id, 1);
2137
2978
  rb_define_method(c_connect, "lookup_domain_by_uuid",
2138
- libvirt_conn_lookup_domain_by_uuid, 1);
2979
+ libvirt_connect_lookup_domain_by_uuid, 1);
2139
2980
  rb_define_method(c_connect, "define_domain_xml",
2140
- libvirt_conn_define_domain_xml, 1);
2981
+ libvirt_connect_define_domain_xml, 1);
2141
2982
 
2142
2983
  #if HAVE_VIRCONNECTDOMAINXMLFROMNATIVE
2143
2984
  rb_define_method(c_connect, "domain_xml_from_native",
2144
- libvirt_conn_domain_xml_from_native, -1);
2985
+ libvirt_connect_domain_xml_from_native, -1);
2145
2986
  #endif
2146
2987
  #if HAVE_VIRCONNECTDOMAINXMLTONATIVE
2147
2988
  rb_define_method(c_connect, "domain_xml_to_native",
2148
- libvirt_conn_domain_xml_to_native, -1);
2989
+ libvirt_connect_domain_xml_to_native, -1);
2149
2990
  #endif
2150
2991
 
2151
2992
  #if HAVE_TYPE_VIRINTERFACEPTR
2152
2993
  /* Interface lookup/creation methods */
2153
2994
  rb_define_method(c_connect, "num_of_interfaces",
2154
- libvirt_conn_num_of_interfaces, 0);
2995
+ libvirt_connect_num_of_interfaces, 0);
2155
2996
  rb_define_method(c_connect, "list_interfaces",
2156
- libvirt_conn_list_interfaces, 0);
2997
+ libvirt_connect_list_interfaces, 0);
2157
2998
  rb_define_method(c_connect, "num_of_defined_interfaces",
2158
- libvirt_conn_num_of_defined_interfaces, 0);
2999
+ libvirt_connect_num_of_defined_interfaces, 0);
2159
3000
  rb_define_method(c_connect, "list_defined_interfaces",
2160
- libvirt_conn_list_defined_interfaces, 0);
3001
+ libvirt_connect_list_defined_interfaces, 0);
2161
3002
  rb_define_method(c_connect, "lookup_interface_by_name",
2162
- libvirt_conn_lookup_interface_by_name, 1);
3003
+ libvirt_connect_lookup_interface_by_name, 1);
2163
3004
  rb_define_method(c_connect, "lookup_interface_by_mac",
2164
- libvirt_conn_lookup_interface_by_mac, 1);
3005
+ libvirt_connect_lookup_interface_by_mac, 1);
2165
3006
  rb_define_method(c_connect, "define_interface_xml",
2166
- libvirt_conn_define_interface_xml, -1);
3007
+ libvirt_connect_define_interface_xml, -1);
2167
3008
  #endif
2168
3009
 
2169
3010
  /* Network lookup/creation methods */
2170
3011
  rb_define_method(c_connect, "num_of_networks",
2171
- libvirt_conn_num_of_networks, 0);
2172
- rb_define_method(c_connect, "list_networks", libvirt_conn_list_networks, 0);
3012
+ libvirt_connect_num_of_networks, 0);
3013
+ rb_define_method(c_connect, "list_networks", libvirt_connect_list_networks,
3014
+ 0);
2173
3015
  rb_define_method(c_connect, "num_of_defined_networks",
2174
- libvirt_conn_num_of_defined_networks, 0);
3016
+ libvirt_connect_num_of_defined_networks, 0);
2175
3017
  rb_define_method(c_connect, "list_defined_networks",
2176
- libvirt_conn_list_defined_networks, 0);
3018
+ libvirt_connect_list_defined_networks, 0);
2177
3019
  rb_define_method(c_connect, "lookup_network_by_name",
2178
- libvirt_conn_lookup_network_by_name, 1);
3020
+ libvirt_connect_lookup_network_by_name, 1);
2179
3021
  rb_define_method(c_connect, "lookup_network_by_uuid",
2180
- libvirt_conn_lookup_network_by_uuid, 1);
3022
+ libvirt_connect_lookup_network_by_uuid, 1);
2181
3023
  rb_define_method(c_connect, "create_network_xml",
2182
- libvirt_conn_create_network_xml, 1);
3024
+ libvirt_connect_create_network_xml, 1);
2183
3025
  rb_define_method(c_connect, "define_network_xml",
2184
- libvirt_conn_define_network_xml, 1);
3026
+ libvirt_connect_define_network_xml, 1);
2185
3027
 
2186
3028
  /* Node device lookup/creation methods */
2187
3029
  #if HAVE_TYPE_VIRNODEDEVICEPTR
2188
3030
  rb_define_method(c_connect, "num_of_nodedevices",
2189
- libvirt_conn_num_of_nodedevices, -1);
3031
+ libvirt_connect_num_of_nodedevices, -1);
2190
3032
  rb_define_method(c_connect, "list_nodedevices",
2191
- libvirt_conn_list_nodedevices, -1);
3033
+ libvirt_connect_list_nodedevices, -1);
2192
3034
  rb_define_method(c_connect, "lookup_nodedevice_by_name",
2193
- libvirt_conn_lookup_nodedevice_by_name, 1);
3035
+ libvirt_connect_lookup_nodedevice_by_name, 1);
2194
3036
  #if HAVE_VIRNODEDEVICECREATEXML
2195
3037
  rb_define_method(c_connect, "create_nodedevice_xml",
2196
- libvirt_conn_create_nodedevice_xml, -1);
3038
+ libvirt_connect_create_nodedevice_xml, -1);
2197
3039
  #endif
2198
3040
  #endif
2199
3041
 
2200
3042
  #if HAVE_TYPE_VIRNWFILTERPTR
2201
3043
  /* NWFilter lookup/creation methods */
2202
3044
  rb_define_method(c_connect, "num_of_nwfilters",
2203
- libvirt_conn_num_of_nwfilters, 0);
3045
+ libvirt_connect_num_of_nwfilters, 0);
2204
3046
  rb_define_method(c_connect, "list_nwfilters",
2205
- libvirt_conn_list_nwfilters, 0);
3047
+ libvirt_connect_list_nwfilters, 0);
2206
3048
  rb_define_method(c_connect, "lookup_nwfilter_by_name",
2207
- libvirt_conn_lookup_nwfilter_by_name, 1);
3049
+ libvirt_connect_lookup_nwfilter_by_name, 1);
2208
3050
  rb_define_method(c_connect, "lookup_nwfilter_by_uuid",
2209
- libvirt_conn_lookup_nwfilter_by_uuid, 1);
3051
+ libvirt_connect_lookup_nwfilter_by_uuid, 1);
2210
3052
  rb_define_method(c_connect, "define_nwfilter_xml",
2211
- libvirt_conn_define_nwfilter_xml, 1);
3053
+ libvirt_connect_define_nwfilter_xml, 1);
2212
3054
  #endif
2213
3055
 
2214
3056
  #if HAVE_TYPE_VIRSECRETPTR
2215
3057
  /* Secret lookup/creation methods */
2216
3058
  rb_define_method(c_connect, "num_of_secrets",
2217
- libvirt_conn_num_of_secrets, 0);
3059
+ libvirt_connect_num_of_secrets, 0);
2218
3060
  rb_define_method(c_connect, "list_secrets",
2219
- libvirt_conn_list_secrets, 0);
3061
+ libvirt_connect_list_secrets, 0);
2220
3062
  rb_define_method(c_connect, "lookup_secret_by_uuid",
2221
- libvirt_conn_lookup_secret_by_uuid, 1);
3063
+ libvirt_connect_lookup_secret_by_uuid, 1);
2222
3064
  rb_define_method(c_connect, "lookup_secret_by_usage",
2223
- libvirt_conn_lookup_secret_by_usage, 2);
3065
+ libvirt_connect_lookup_secret_by_usage, 2);
2224
3066
  rb_define_method(c_connect, "define_secret_xml",
2225
- libvirt_conn_define_secret_xml, -1);
3067
+ libvirt_connect_define_secret_xml, -1);
2226
3068
  #endif
2227
3069
 
2228
3070
  #if HAVE_TYPE_VIRSTORAGEPOOLPTR
2229
3071
  /* StoragePool lookup/creation methods */
2230
3072
  rb_define_method(c_connect, "num_of_storage_pools",
2231
- libvirt_conn_num_of_storage_pools, 0);
3073
+ libvirt_connect_num_of_storage_pools, 0);
2232
3074
  rb_define_method(c_connect, "list_storage_pools",
2233
- libvirt_conn_list_storage_pools, 0);
3075
+ libvirt_connect_list_storage_pools, 0);
2234
3076
  rb_define_method(c_connect, "num_of_defined_storage_pools",
2235
- libvirt_conn_num_of_defined_storage_pools, 0);
3077
+ libvirt_connect_num_of_defined_storage_pools, 0);
2236
3078
  rb_define_method(c_connect, "list_defined_storage_pools",
2237
- libvirt_conn_list_defined_storage_pools, 0);
3079
+ libvirt_connect_list_defined_storage_pools, 0);
2238
3080
  rb_define_method(c_connect, "lookup_storage_pool_by_name",
2239
- libvirt_conn_lookup_pool_by_name, 1);
3081
+ libvirt_connect_lookup_pool_by_name, 1);
2240
3082
  rb_define_method(c_connect, "lookup_storage_pool_by_uuid",
2241
- libvirt_conn_lookup_pool_by_uuid, 1);
3083
+ libvirt_connect_lookup_pool_by_uuid, 1);
2242
3084
  rb_define_method(c_connect, "create_storage_pool_xml",
2243
- libvirt_conn_create_pool_xml, -1);
3085
+ libvirt_connect_create_pool_xml, -1);
2244
3086
  rb_define_method(c_connect, "define_storage_pool_xml",
2245
- libvirt_conn_define_pool_xml, -1);
3087
+ libvirt_connect_define_pool_xml, -1);
2246
3088
  rb_define_method(c_connect, "discover_storage_pool_sources",
2247
- libvirt_conn_find_storage_pool_sources, -1);
3089
+ libvirt_connect_find_storage_pool_sources, -1);
2248
3090
  #endif
2249
3091
 
2250
3092
  #if HAVE_VIRCONNECTGETSYSINFO
2251
- rb_define_method(c_connect, "sys_info", libvirt_conn_get_sys_info, -1);
3093
+ rb_define_method(c_connect, "sys_info", libvirt_connect_sys_info, -1);
2252
3094
  #endif
2253
3095
  #if HAVE_TYPE_VIRSTREAMPTR
2254
- rb_define_method(c_connect, "stream", libvirt_conn_stream, -1);
3096
+ rb_define_method(c_connect, "stream", libvirt_connect_stream, -1);
2255
3097
  #endif
2256
3098
 
2257
3099
  #if HAVE_VIRINTERFACECHANGEBEGIN
2258
3100
  rb_define_method(c_connect, "interface_change_begin",
2259
- libvirt_conn_interface_change_begin, -1);
3101
+ libvirt_connect_interface_change_begin, -1);
2260
3102
  rb_define_method(c_connect, "interface_change_commit",
2261
- libvirt_conn_interface_change_commit, -1);
3103
+ libvirt_connect_interface_change_commit, -1);
2262
3104
  rb_define_method(c_connect, "interface_change_rollback",
2263
- libvirt_conn_interface_change_rollback, -1);
3105
+ libvirt_connect_interface_change_rollback, -1);
3106
+ #endif
3107
+
3108
+ #if HAVE_VIRNODEGETCPUSTATS
3109
+ rb_define_method(c_connect, "node_cpu_stats",
3110
+ libvirt_connect_node_cpu_stats, -1);
3111
+ #endif
3112
+ #if HAVE_CONST_VIR_NODE_CPU_STATS_ALL_CPUS
3113
+ rb_define_const(c_connect, "NODE_CPU_STATS_ALL_CPUS",
3114
+ INT2NUM(VIR_NODE_CPU_STATS_ALL_CPUS));
3115
+ #endif
3116
+ #if HAVE_VIRNODEGETMEMORYSTATS
3117
+ rb_define_method(c_connect, "node_memory_stats",
3118
+ libvirt_connect_node_memory_stats, -1);
3119
+ #endif
3120
+ #if HAVE_CONST_VIR_NODE_MEMORY_STATS_ALL_CELLS
3121
+ rb_define_const(c_connect, "NODE_MEMORY_STATS_ALL_CELLS",
3122
+ INT2NUM(VIR_NODE_MEMORY_STATS_ALL_CELLS));
3123
+ #endif
3124
+
3125
+ #if HAVE_VIRDOMAINSAVEIMAGEGETXMLDESC
3126
+ rb_define_method(c_connect, "save_image_xml_desc",
3127
+ libvirt_connect_save_image_xml_desc, -1);
3128
+ rb_define_method(c_connect, "define_save_image_xml",
3129
+ libvirt_connect_define_save_image_xml, -1);
3130
+ #endif
3131
+
3132
+ #if HAVE_VIRNODESUSPENDFORDURATION
3133
+ rb_define_const(c_connect, "NODE_SUSPEND_TARGET_MEM",
3134
+ INT2NUM(VIR_NODE_SUSPEND_TARGET_MEM));
3135
+ rb_define_const(c_connect, "NODE_SUSPEND_TARGET_DISK",
3136
+ INT2NUM(VIR_NODE_SUSPEND_TARGET_DISK));
3137
+ rb_define_const(c_connect, "NODE_SUSPEND_TARGET_HYBRID",
3138
+ INT2NUM(VIR_NODE_SUSPEND_TARGET_HYBRID));
3139
+
3140
+ rb_define_method(c_connect, "node_suspend_for_duration",
3141
+ libvirt_connect_node_suspend_for_duration, -1);
3142
+ #endif
3143
+
3144
+ #if HAVE_VIRNODEGETMEMORYPARAMETERS
3145
+ rb_define_method(c_connect, "node_memory_parameters",
3146
+ libvirt_connect_node_memory_parameters, -1);
3147
+ rb_define_method(c_connect, "node_memory_parameters=",
3148
+ libvirt_connect_node_memory_parameters_equal, 1);
3149
+ #endif
3150
+
3151
+ #if HAVE_VIRNODEGETCPUMAP
3152
+ rb_define_method(c_connect, "node_cpu_map",
3153
+ libvirt_connect_node_cpu_map, -1);
3154
+ rb_define_alias(c_connect, "node_get_cpu_map", "node_cpu_map");
3155
+ #endif
3156
+
3157
+ #if HAVE_VIRCONNECTSETKEEPALIVE
3158
+ rb_define_method(c_connect, "set_keepalive",
3159
+ libvirt_connect_set_keepalive, 2);
3160
+ rb_define_method(c_connect, "keepalive=", libvirt_connect_keepalive_equal,
3161
+ 1);
3162
+ #endif
3163
+
3164
+ #if HAVE_VIRCONNECTLISTALLDOMAINS
3165
+ rb_define_const(c_connect, "LIST_DOMAINS_ACTIVE",
3166
+ INT2NUM(VIR_CONNECT_LIST_DOMAINS_ACTIVE));
3167
+ rb_define_const(c_connect, "LIST_DOMAINS_INACTIVE",
3168
+ INT2NUM(VIR_CONNECT_LIST_DOMAINS_INACTIVE));
3169
+ rb_define_const(c_connect, "LIST_DOMAINS_PERSISTENT",
3170
+ INT2NUM(VIR_CONNECT_LIST_DOMAINS_PERSISTENT));
3171
+ rb_define_const(c_connect, "LIST_DOMAINS_TRANSIENT",
3172
+ INT2NUM(VIR_CONNECT_LIST_DOMAINS_TRANSIENT));
3173
+ rb_define_const(c_connect, "LIST_DOMAINS_RUNNING",
3174
+ INT2NUM(VIR_CONNECT_LIST_DOMAINS_RUNNING));
3175
+ rb_define_const(c_connect, "LIST_DOMAINS_PAUSED",
3176
+ INT2NUM(VIR_CONNECT_LIST_DOMAINS_PAUSED));
3177
+ rb_define_const(c_connect, "LIST_DOMAINS_SHUTOFF",
3178
+ INT2NUM(VIR_CONNECT_LIST_DOMAINS_SHUTOFF));
3179
+ rb_define_const(c_connect, "LIST_DOMAINS_OTHER",
3180
+ INT2NUM(VIR_CONNECT_LIST_DOMAINS_OTHER));
3181
+ rb_define_const(c_connect, "LIST_DOMAINS_MANAGEDSAVE",
3182
+ INT2NUM(VIR_CONNECT_LIST_DOMAINS_MANAGEDSAVE));
3183
+ rb_define_const(c_connect, "LIST_DOMAINS_NO_MANAGEDSAVE",
3184
+ INT2NUM(VIR_CONNECT_LIST_DOMAINS_NO_MANAGEDSAVE));
3185
+ rb_define_const(c_connect, "LIST_DOMAINS_AUTOSTART",
3186
+ INT2NUM(VIR_CONNECT_LIST_DOMAINS_AUTOSTART));
3187
+ rb_define_const(c_connect, "LIST_DOMAINS_NO_AUTOSTART",
3188
+ INT2NUM(VIR_CONNECT_LIST_DOMAINS_NO_AUTOSTART));
3189
+ rb_define_const(c_connect, "LIST_DOMAINS_HAS_SNAPSHOT",
3190
+ INT2NUM(VIR_CONNECT_LIST_DOMAINS_HAS_SNAPSHOT));
3191
+ rb_define_const(c_connect, "LIST_DOMAINS_NO_SNAPSHOT",
3192
+ INT2NUM(VIR_CONNECT_LIST_DOMAINS_NO_SNAPSHOT));
3193
+ rb_define_method(c_connect, "list_all_domains",
3194
+ libvirt_connect_list_all_domains, -1);
3195
+ #endif
3196
+ #if HAVE_VIRCONNECTLISTALLNETWORKS
3197
+ rb_define_const(c_connect, "LIST_NETWORKS_ACTIVE",
3198
+ INT2NUM(VIR_CONNECT_LIST_NETWORKS_ACTIVE));
3199
+ rb_define_const(c_connect, "LIST_NETWORKS_INACTIVE",
3200
+ INT2NUM(VIR_CONNECT_LIST_NETWORKS_INACTIVE));
3201
+ rb_define_const(c_connect, "LIST_NETWORKS_PERSISTENT",
3202
+ INT2NUM(VIR_CONNECT_LIST_NETWORKS_PERSISTENT));
3203
+ rb_define_const(c_connect, "LIST_NETWORKS_TRANSIENT",
3204
+ INT2NUM(VIR_CONNECT_LIST_NETWORKS_TRANSIENT));
3205
+ rb_define_const(c_connect, "LIST_NETWORKS_AUTOSTART",
3206
+ INT2NUM(VIR_CONNECT_LIST_NETWORKS_AUTOSTART));
3207
+ rb_define_const(c_connect, "LIST_NETWORKS_NO_AUTOSTART",
3208
+ INT2NUM(VIR_CONNECT_LIST_NETWORKS_NO_AUTOSTART));
3209
+ rb_define_method(c_connect, "list_all_networks",
3210
+ libvirt_connect_list_all_networks, -1);
3211
+ #endif
3212
+ #if HAVE_VIRCONNECTLISTALLINTERFACES
3213
+ rb_define_const(c_connect, "LIST_INTERFACES_INACTIVE",
3214
+ INT2NUM(VIR_CONNECT_LIST_INTERFACES_INACTIVE));
3215
+ rb_define_const(c_connect, "LIST_INTERFACES_ACTIVE",
3216
+ INT2NUM(VIR_CONNECT_LIST_INTERFACES_ACTIVE));
3217
+ rb_define_method(c_connect, "list_all_interfaces",
3218
+ libvirt_connect_list_all_interfaces, -1);
3219
+ #endif
3220
+ #if HAVE_VIRCONNECTLISTALLSECRETS
3221
+ rb_define_const(c_connect, "LIST_SECRETS_EPHEMERAL",
3222
+ INT2NUM(VIR_CONNECT_LIST_SECRETS_EPHEMERAL));
3223
+ rb_define_const(c_connect, "LIST_SECRETS_NO_EPHEMERAL",
3224
+ INT2NUM(VIR_CONNECT_LIST_SECRETS_NO_EPHEMERAL));
3225
+ rb_define_const(c_connect, "LIST_SECRETS_PRIVATE",
3226
+ INT2NUM(VIR_CONNECT_LIST_SECRETS_PRIVATE));
3227
+ rb_define_const(c_connect, "LIST_SECRETS_NO_PRIVATE",
3228
+ INT2NUM(VIR_CONNECT_LIST_SECRETS_NO_PRIVATE));
3229
+ rb_define_method(c_connect, "list_all_secrets",
3230
+ libvirt_connect_list_all_secrets, -1);
3231
+ #endif
3232
+ #if HAVE_VIRCONNECTLISTALLNODEDEVICES
3233
+ rb_define_const(c_connect, "LIST_NODE_DEVICES_CAP_SYSTEM",
3234
+ INT2NUM(VIR_CONNECT_LIST_NODE_DEVICES_CAP_SYSTEM));
3235
+ rb_define_const(c_connect, "LIST_NODE_DEVICES_CAP_PCI_DEV",
3236
+ INT2NUM(VIR_CONNECT_LIST_NODE_DEVICES_CAP_PCI_DEV));
3237
+ rb_define_const(c_connect, "LIST_NODE_DEVICES_CAP_USB_DEV",
3238
+ INT2NUM(VIR_CONNECT_LIST_NODE_DEVICES_CAP_USB_DEV));
3239
+ rb_define_const(c_connect, "LIST_NODE_DEVICES_CAP_USB_INTERFACE",
3240
+ INT2NUM(VIR_CONNECT_LIST_NODE_DEVICES_CAP_USB_INTERFACE));
3241
+ rb_define_const(c_connect, "LIST_NODE_DEVICES_CAP_NET",
3242
+ INT2NUM(VIR_CONNECT_LIST_NODE_DEVICES_CAP_NET));
3243
+ rb_define_const(c_connect, "LIST_NODE_DEVICES_CAP_SCSI_HOST",
3244
+ INT2NUM(VIR_CONNECT_LIST_NODE_DEVICES_CAP_SCSI_HOST));
3245
+ rb_define_const(c_connect, "LIST_NODE_DEVICES_CAP_SCSI_TARGET",
3246
+ INT2NUM(VIR_CONNECT_LIST_NODE_DEVICES_CAP_SCSI_TARGET));
3247
+ rb_define_const(c_connect, "LIST_NODE_DEVICES_CAP_SCSI",
3248
+ INT2NUM(VIR_CONNECT_LIST_NODE_DEVICES_CAP_SCSI));
3249
+ rb_define_const(c_connect, "LIST_NODE_DEVICES_CAP_STORAGE",
3250
+ INT2NUM(VIR_CONNECT_LIST_NODE_DEVICES_CAP_STORAGE));
3251
+ #if HAVE_CONST_VIR_CONNECT_LIST_NODE_DEVICES_CAP_FC_HOST
3252
+ rb_define_const(c_connect, "LIST_NODE_DEVICES_CAP_FC_HOST",
3253
+ INT2NUM(VIR_CONNECT_LIST_NODE_DEVICES_CAP_FC_HOST));
3254
+ rb_define_const(c_connect, "LIST_NODE_DEVICES_CAP_VPORTS",
3255
+ INT2NUM(VIR_CONNECT_LIST_NODE_DEVICES_CAP_VPORTS));
3256
+ #endif
3257
+ #if HAVE_CONST_VIR_CONNECT_LIST_NODE_DEVICES_CAP_SCSI_GENERIC
3258
+ rb_define_const(c_connect, "LIST_NODE_DEVICES_CAP_SCSI_GENERIC",
3259
+ INT2NUM(VIR_CONNECT_LIST_NODE_DEVICES_CAP_SCSI_GENERIC));
3260
+ #endif
3261
+ rb_define_method(c_connect, "list_all_nodedevices",
3262
+ libvirt_connect_list_all_nodedevices, -1);
3263
+ #endif
3264
+ #if HAVE_VIRCONNECTLISTALLSTORAGEPOOLS
3265
+ rb_define_const(c_connect, "LIST_STORAGE_POOLS_INACTIVE",
3266
+ INT2NUM(VIR_CONNECT_LIST_STORAGE_POOLS_INACTIVE));
3267
+ rb_define_const(c_connect, "LIST_STORAGE_POOLS_ACTIVE",
3268
+ INT2NUM(VIR_CONNECT_LIST_STORAGE_POOLS_ACTIVE));
3269
+ rb_define_const(c_connect, "LIST_STORAGE_POOLS_PERSISTENT",
3270
+ INT2NUM(VIR_CONNECT_LIST_STORAGE_POOLS_PERSISTENT));
3271
+ rb_define_const(c_connect, "LIST_STORAGE_POOLS_TRANSIENT",
3272
+ INT2NUM(VIR_CONNECT_LIST_STORAGE_POOLS_TRANSIENT));
3273
+ rb_define_const(c_connect, "LIST_STORAGE_POOLS_AUTOSTART",
3274
+ INT2NUM(VIR_CONNECT_LIST_STORAGE_POOLS_AUTOSTART));
3275
+ rb_define_const(c_connect, "LIST_STORAGE_POOLS_NO_AUTOSTART",
3276
+ INT2NUM(VIR_CONNECT_LIST_STORAGE_POOLS_NO_AUTOSTART));
3277
+ rb_define_const(c_connect, "LIST_STORAGE_POOLS_DIR",
3278
+ INT2NUM(VIR_CONNECT_LIST_STORAGE_POOLS_DIR));
3279
+ rb_define_const(c_connect, "LIST_STORAGE_POOLS_FS",
3280
+ INT2NUM(VIR_CONNECT_LIST_STORAGE_POOLS_FS));
3281
+ rb_define_const(c_connect, "LIST_STORAGE_POOLS_NETFS",
3282
+ INT2NUM(VIR_CONNECT_LIST_STORAGE_POOLS_NETFS));
3283
+ rb_define_const(c_connect, "LIST_STORAGE_POOLS_LOGICAL",
3284
+ INT2NUM(VIR_CONNECT_LIST_STORAGE_POOLS_LOGICAL));
3285
+ rb_define_const(c_connect, "LIST_STORAGE_POOLS_DISK",
3286
+ INT2NUM(VIR_CONNECT_LIST_STORAGE_POOLS_DISK));
3287
+ rb_define_const(c_connect, "LIST_STORAGE_POOLS_ISCSI",
3288
+ INT2NUM(VIR_CONNECT_LIST_STORAGE_POOLS_ISCSI));
3289
+ rb_define_const(c_connect, "LIST_STORAGE_POOLS_SCSI",
3290
+ INT2NUM(VIR_CONNECT_LIST_STORAGE_POOLS_SCSI));
3291
+ rb_define_const(c_connect, "LIST_STORAGE_POOLS_MPATH",
3292
+ INT2NUM(VIR_CONNECT_LIST_STORAGE_POOLS_MPATH));
3293
+ rb_define_const(c_connect, "LIST_STORAGE_POOLS_RBD",
3294
+ INT2NUM(VIR_CONNECT_LIST_STORAGE_POOLS_RBD));
3295
+ rb_define_const(c_connect, "LIST_STORAGE_POOLS_SHEEPDOG",
3296
+ INT2NUM(VIR_CONNECT_LIST_STORAGE_POOLS_SHEEPDOG));
3297
+ rb_define_method(c_connect, "list_all_storage_pools",
3298
+ libvirt_connect_list_all_storage_pools, -1);
3299
+ #endif
3300
+ #if HAVE_VIRCONNECTLISTALLNWFILTERS
3301
+ rb_define_method(c_connect, "list_all_nwfilters",
3302
+ libvirt_connect_list_all_nwfilters, -1);
3303
+ #endif
3304
+ #if HAVE_VIRCONNECTISALIVE
3305
+ rb_define_method(c_connect, "alive?", libvirt_connect_alive_p, 0);
3306
+ #endif
3307
+ #if HAVE_VIRDOMAINCREATEXMLWITHFILES
3308
+ rb_define_method(c_connect, "create_domain_xml_with_files",
3309
+ libvirt_connect_create_domain_xml_with_files, -1);
3310
+ #endif
3311
+ #if HAVE_VIRDOMAINQEMUATTACH
3312
+ rb_define_method(c_connect, "qemu_attach", libvirt_connect_qemu_attach, -1);
3313
+ #endif
3314
+ #if HAVE_VIRCONNECTGETCPUMODELNAMES
3315
+ rb_define_method(c_connect, "cpu_model_names",
3316
+ libvirt_connect_cpu_model_names, -1);
2264
3317
  #endif
2265
3318
  }