New upstream version 0.0.4
Guido Günther
12 years ago
0 | 2012-01-12 Daniel P. Berrange <berrange@redhat.com> | |
1 | ||
2 | Update NEWS & syms files for 0.0.4 release | |
3 | ||
4 | Support setting target attributes for console & channel devices | |
5 | ||
6 | 2012-01-12 Zeeshan Ali (Khattak) <zeeshanak@gnome.org> | |
7 | ||
8 | Add API to check if domain is persistent | |
9 | Add a predicate and property to check if domain is persistent or not. | |
10 | ||
11 | 2012-01-11 Daniel P. Berrange <berrange@redhat.com> | |
12 | ||
13 | Add support for shutdown event to avoid console warnings | |
14 | ||
15 | Add support for configuring serial, parallel & channel devices | |
16 | The basic config of serial, parallel & channel devices is just | |
17 | the same as console devices. Add basic stubs for these new | |
18 | devices | |
19 | ||
20 | 2012-01-09 Christophe Fergeau <cfergeau@redhat.com> | |
21 | ||
22 | Use g_simple_async_result_is_valid in _finish functions | |
23 | The _finish functions for async operations can be simplified by | |
24 | using g_simple_async_result_is_valid instead of doing the checks | |
25 | it does by ourselves. | |
26 | ||
27 | 2012-01-08 Christophe Fergeau <cfergeau@redhat.com> | |
28 | ||
29 | Follow glib conventions for SimpleAsyncResult source tag | |
30 | g_simple_async_result_is_valid() API documentation says that the | |
31 | source tag field for SimpleAsyncResult objects "by convention, is a | |
32 | pointer to the _async function corresponding to the _finish function from | |
33 | which this function is called" | |
34 | The stream functions were already following this convention, but | |
35 | other places were using the sync function name as the source tag. | |
36 | This commit uses the async function name everywhere. | |
37 | ||
38 | 2012-01-06 Zeeshan Ali (Khattak) <zeeshanak@gnome.org> | |
39 | ||
40 | API to save and suspend | |
41 | Its just a set of synchronous and asynchronous wrappers around | |
42 | virDomainManagedSave. | |
43 | ||
44 | API to suspend a domain | |
45 | ||
46 | Correct namespace prefix for GVirConfig symbols | |
47 | Breaks API and ABI on the fundamental level but lets fix this now while | |
48 | we don't guarantee any API/ABI stability. | |
49 | ||
50 | 2012-01-06 Christophe Fergeau <cfergeau@redhat.com> | |
51 | ||
52 | Don't mix g_new0 and g_slice_free | |
53 | There were 2 places where memory was allocated with g_new0 and was | |
54 | later freed with g_slice_free. This commit uses g_slice_new0 instead. | |
55 | After this, there are no other occurrences of g_new0 in gobject/ so | |
56 | the rest of the codebase should be safe from this issue. | |
57 | ||
58 | Add GVirConfigDomainDisk getters | |
59 | ||
60 | Add more parsing helpers to GVirConfigObject | |
61 | Add gvir_config_object_get_node_content_genum, | |
62 | gvir_config_object_get_attribute | |
63 | and gvir_config_object_get_attribute_genum to complement the existing | |
64 | methods. They all act on a child node of the current node. The | |
65 | _get_attribute functions can also act on the root node of the | |
66 | GVirConfigObject instance if it's passed NULL instead of a child name. | |
67 | ||
68 | Implement gvir_config_domain_get_devices | |
69 | There are some devices which we are not able to parse yet, in these | |
70 | cases a runtime debug warning is printed in debug mode to tell what's | |
71 | going on. | |
72 | ||
73 | Add gvir_config_object_foreach_child helper | |
74 | When iterating over xmlNodePtr children to parse an XML document | |
75 | describing a libvirt configuration item, we want to ignore blank | |
76 | nodes that may have been added to make the initial XML document | |
77 | "more human readable". Since this will be useful in several places, | |
78 | move this code to a helper function. | |
79 | ||
80 | Add gvir_config_object_new_from_tree | |
81 | This helper function will be useful to create instances of | |
82 | GVirConfigXXX objects when we already have a "top-level" instance | |
83 | (eg to create a GVirConfigDomainDisk using the tree stored in a | |
84 | GVirConfigDomain instance). | |
85 | ||
86 | Add helpers to parse xml trees | |
87 | This will be helpful to implement GVirConfig getters. | |
88 | ||
89 | Introduce libvirt-gconfig-private.h | |
90 | This header groups all libvirt-gconfig private headers. | |
91 | ||
92 | Add {replace,add}_with_attribute | |
93 | These functions may seem very specialized, and the same can easily | |
94 | be achieved with 2 separate API calls, but since this is something | |
95 | that is commonly done, these helpers save quite a few lines of code. | |
96 | ||
97 | Remove FIXME from gvir_config_domain_filesys_set_driver_type | |
98 | All that was missing to fix it was gvir_config_object_remove_attribute | |
99 | which now exists. | |
100 | ||
101 | Overwrite attributes in GVirObject::set_attribute | |
102 | Zeeshan reported an issue where calling | |
103 | gvir_config_domain_disk_set_target_dev several times would result in | |
104 | duplicated 'dev' attributes in the resulting XML instead of overwriting | |
105 | the existing 'dev' attribute. Since there are no cases interesting to | |
106 | libvirt-gconfig where having several attributes with the same name is | |
107 | useful, when calling gvir_config_object_set_attribute*, we can just | |
108 | remove attributes with the same names as the one we are setting. | |
109 | ||
110 | Add gvir_gconfig_object_remove_attribute helper | |
111 | ||
112 | 2012-01-04 Zeeshan Ali (Khattak) <zeeshanak@gnome.org> | |
113 | ||
114 | Add docs for gvir_config_domain_set/get_memory | |
115 | Its not obvious what units these functions deal with so docs are | |
116 | critical for these functions. | |
117 | ||
118 | Correct gvir_storage_pool_get_volumes' return annotation | |
119 | ||
120 | 2012-01-04 Christophe Fergeau <cfergeau@redhat.com> | |
121 | ||
122 | Call gvir_init_config() in GVirConfig test programs | |
123 | While not strictly necessary, this sets up glib logging properly on | |
124 | older glib so that debug logs are not shown by default. | |
125 | ||
126 | 2012-01-03 Christophe Fergeau <cfergeau@redhat.com> | |
127 | ||
128 | Add gvir_config_domain_graphics_vnc_set_password | |
129 | Based on the similar patch for SPICE | |
130 | ||
131 | 2012-01-02 Zeeshan Ali (Khattak) <zeeshanak@gnome.org> | |
132 | ||
133 | API to set SPICE password | |
134 | ||
135 | 2011-12-23 Christophe Fergeau <cfergeau@redhat.com> | |
136 | ||
137 | Fix gvir_config_domain_sound_set_model | |
138 | It's creating an unwanted extra <sound> XML node: | |
139 | <sound> | |
140 | <sound model="xxx"> | |
141 | </sound> | |
142 | instead of the correct | |
143 | <sound model="xxx"> | |
144 | ||
145 | 2011-12-22 Zeeshan Ali (Khattak) <zeeshanak@gnome.org> | |
146 | ||
147 | Bump version | |
148 | ||
149 | 2011-12-22 Christophe Fergeau <cfergeau@redhat.com> | |
150 | ||
151 | Add GVirConfigDomainSound | |
152 | ||
153 | Add python example for LibvirtGConfig | |
154 | ||
155 | 2011-12-19 Daniel P. Berrange <berrange@redhat.com> | |
156 | ||
157 | Ignore generated .vapi files | |
158 | ||
159 | Update min libvirt to 0.9.7 | |
160 | ||
161 | Update NEWS for 0.0.3 release | |
162 | ||
163 | Fix build by exporting missing gvir_config_xml_doc APIs | |
164 | ||
165 | Update version in all .sym files | |
166 | Since there are ABI changes, update the version in all .sym | |
167 | files to force a rebuild of apps | |
168 | ||
169 | Add binding for virDomainOpenGraphics | |
170 | ||
171 | Add binding for virDomainOpenConsole | |
172 | ||
173 | Add support for configuring network bridges | |
174 | ||
175 | 2011-12-15 Christophe Fergeau <cfergeau@redhat.com> | |
176 | ||
177 | Add annotations for gvir_stream_add_watch{_full} | |
178 | This should silence this compile warning: | |
179 | GEN LibvirtGObject-1.0.gir | |
180 | libvirt-gobject-stream.c:603: Warning: LibvirtGObject: | |
181 | gvir_stream_add_watch: a rgument func: Missing (scope) annotation for | |
182 | callback without GDestroyNotify (v alid: call, async) | |
183 | ||
184 | This also adds API documentation for these functions. | |
185 | ||
186 | Add gvir_config_storage_pool_set_pool_type | |
187 | ||
188 | 2011-12-13 Christophe Fergeau <cfergeau@redhat.com> | |
189 | ||
190 | Add GVirConfigStorage* to creation test | |
191 | ||
192 | Add methods to link GVirStorage* classes together | |
193 | GVirConfigStorageVolBackingStore and GVirConfigStorageVolTarget can be | |
194 | associated with a GVirConfigStorageVol. | |
195 | ||
196 | GVirConfigStoragePoolSource and GVirConfigStoragePoolTarget can be | |
197 | associated with a GVirConfigStoragePool. | |
198 | ||
199 | GVirConfigStoragePermissions can be set on either a | |
200 | GVirConfigStorageVolTarget or a GVirConfigStoragePoolTarget. | |
201 | ||
202 | Add GVirConfigStoragePermissions setters | |
203 | ||
204 | Add gvir_config_storage_pool_target_set_path | |
205 | ||
206 | Add GVirConfigStoragePoolSource setters | |
207 | ||
208 | Add GVirConfigStorageVolBackingStore setters | |
209 | ||
210 | Add gvir_config_storage_vol_target_set_format | |
211 | ||
212 | Add GObject boilerplate for GVirConfigStorage* | |
213 | We'll need several helper classes to implement configuration of | |
214 | storage pools and volumes. This commit introduces all of these | |
215 | in one go. It's just the GObject boilerplate, the actual code will | |
216 | come in other commits. GVirConfigStoragePermissions is namespaced this | |
217 | way because it will be used by both GVirConfigStoragePoolTarget and | |
218 | GVirConfigStorageVolTarget. | |
219 | ||
220 | Add GVirConfigStoragePool setters | |
221 | ||
222 | Add some GVirConfigStorageVol setters | |
223 | ||
224 | Add missing items in GVirConfigDomainVirtType | |
225 | Put all the items available in virDomainVirt | |
226 | ||
227 | Fix gvir_config_domain_disk_set_target_bus API | |
228 | The bus type is actually an enum, let's reflect that in | |
229 | libvirt-gconfig API | |
230 | ||
231 | Add GVirConfigDomainInterface setters | |
232 | These attributes are valid for all types deriving from | |
233 | GVirConfigDomainInterface so we add it to the base class. | |
234 | ||
235 | Add GVirConfigDomainInterfaceUser boilerplate | |
236 | ||
237 | 2011-12-07 Christophe Fergeau <cfergeau@redhat.com> | |
238 | ||
239 | Add "priority" argument to gvir_stream_add_watch_full | |
240 | This is more consistent with what all the other glib _full APIs | |
241 | are doing. | |
242 | ||
243 | 2011-12-07 Daniel P. Berrange <berrange@redhat.com> | |
244 | ||
245 | Only enable vala for Fedora 16 and later | |
246 | ||
247 | 2011-12-06 Daniel P. Berrange <berrange@redhat.com> | |
248 | ||
249 | Allow cancelling gvir_stream_send_all & gvir_stream_receive_all | |
250 | Add GCancellable parameters to gvir_stream_send_all and | |
251 | gvir_stream_receive_all to allow I/O to be interrupted | |
252 | before completion | |
253 | ||
254 | Add flags for controling how domains are started | |
255 | ||
256 | Fix copyright header on chardev related classes | |
257 | ||
258 | Add vala files to RPM spec | |
259 | ||
260 | 2011-12-06 Christophe Fergeau <cfergeau@redhat.com> | |
261 | ||
262 | Add test for GVirConfigConsole | |
263 | ||
264 | Add GVirConfigDomainChardevSourcePty | |
265 | ||
266 | Implement gvir_config_domain_chardev_add_source | |
267 | This is used to associate a ChardevSource (pty, file, ...) with a | |
268 | Chardev (console, serial, ...). | |
269 | ||
270 | Introduce GVirConfigDomainChardevSource | |
271 | ||
272 | Add objects for dealing with <console> devices | |
273 | Add an abstract GVirConfigDomainChardev object for <console>, | |
274 | <serial>, ... devices and a GVirConfigDomainConsole implementation. | |
275 | This needs to be completed with a separate GVirConfigDomainChardevSource | |
276 | inheritance tree which will be specialized to | |
277 | GVirConfigDomainChardevSourcePty, ... and GVirConfigDomainChardev will | |
278 | offer a helper function to attach a GVirConfigDomainChardevSource to | |
279 | a GVirConfigDomainChardev | |
280 | ||
281 | Use gvir_error_set_literal in more places | |
282 | GVirConnection has some gvir_set_error uses that can be replaced | |
283 | by gvir_set_error_set_literal. When passing a single string, this is | |
284 | safer since we are guaranteed that unwanted printf-format sequences | |
285 | in the string won't cause issues. | |
286 | ||
287 | 2011-12-05 Christophe Fergeau <cfergeau@redhat.com> | |
288 | ||
289 | Add gvir_config_domain_set_lifecycle | |
290 | This is used to control what happens (restart, stop, ...) to the VM | |
291 | when it crashes, shuts down, ... | |
292 | ||
293 | 2011-12-05 Zeeshan Ali (Khattak) <zeeshanak@gnome.org> | |
294 | ||
295 | Add wrapper for volume deletion API | |
296 | ||
297 | 2011-12-05 Daniel P. Berrange <berrange@redhat.com> | |
298 | ||
299 | Introduce gvir_set_error (and friends) & convert all code | |
300 | The pattern | |
301 | ||
302 | GError **error; | |
303 | .... | |
304 | *err = gvir_error_new(...) | |
305 | ||
306 | is dangerous because 'err' could be NULL, and it is tedious | |
307 | to expect everyone to check. Introduce a new set of APIs | |
308 | for setting errors | |
309 | ||
310 | gvir_set_error(err, ...) | |
311 | ||
312 | and convert all callers to this new pattern | |
313 | ||
314 | 2011-12-01 Daniel P. Berrange <berrange@redhat.com> | |
315 | ||
316 | Update copyright dates s/2010/2010-2011/ | |
317 | ||
318 | Add files for 'make syntax-check' rules from GNULIB | |
319 | The 'syntax-check' rule validates various coding style requirements. | |
320 | It is run as part of the regular automated builds | |
321 | ||
322 | * GNUmakefile, maint.mk: syntax-check rules (from GNULIB) | |
323 | * cfg.mk: Local extra rules & exclusions | |
324 | * build-aux/useless-if-before-free, | |
325 | build-aux/vc-list-files: Helpers for syntax check (from | |
326 | GNULIB) | |
327 | * autobuild.sh: Run syntax-check as part of build | |
328 | * configure.ac: Ensure GNUmakefile exists in VPATH builds | |
329 | ||
330 | Add <config.h> to test case files | |
331 | ||
332 | Remove trailing whitespace from autogen.sh | |
333 | ||
334 | Use test -d FOO && test -d BAR instead of test -d FOO -a -d BAR | |
335 | For greater portability do not rely on the test binary having | |
336 | a -a option | |
337 | ||
338 | Remove trailing blank lines from all files | |
339 | ||
340 | Remove use of '@' in makefiles | |
341 | * Makefile.am, python/Makefile.am: Remove use of @FOO@ in favour | |
342 | of $(FOO) | |
343 | ||
344 | Fix copyright header s/Red Hat/Red Hat, Inc./ | |
345 | ||
346 | Remove useless if before xmlFreeDoc | |
347 | ||
348 | Remove indentation with TABs from autogen.sh & conn-test.py | |
349 | ||
350 | Ensure that the generated XML is indented in a pretty format | |
351 | ||
352 | Add more files to ignore list | |
353 | ||
354 | Add the domain OS type for containers | |
355 | ||
356 | Add support for <memballoon> configuration | |
357 | ||
358 | Fix missing backslash in noinst_HEADERS for libvirt-gconfig | |
359 | ||
360 | 2011-12-01 Zeeshan Ali (Khattak) <zeeshanak@gnome.org> | |
361 | ||
362 | Correct size of GVirStoragePoolInfo.available | |
363 | ||
364 | Wrap storage volume info API | |
365 | ||
366 | Wrap storage pool info API | |
367 | ||
368 | 2011-12-01 Daniel P. Berrange <berrange@redhat.com> | |
369 | ||
370 | Fix file headers / description in gconfig classes | |
371 | ||
372 | Remove redundant #includes from all gconfig files | |
373 | The #include <string.h> and #include <libxml/tree.h> is not | |
374 | required in the vast majority of files | |
375 | ||
376 | Add support for setting security labels | |
377 | Add support for the <seclabel> element via a new object | |
378 | GVirConfigDomainSeclabel. | |
379 | ||
380 | * libvirt-gconfig-domain-seclabel.c, libvirt-gconfig-domain-seclabel.h, | |
381 | Makefile.am, libvirt-gconfig.h, libvirt-gconfig.sym: New objects | |
382 | * libvirt-gconfig-domain.c, libvirt-gconfig-domain.h: API to | |
383 | associate seclabel with an domain | |
384 | ||
385 | Add objects for dealing with SDL and VNC graphics config | |
386 | Add GVirConfigDomainGraphicsSdl and GVirConfigDomainGraphicsVnc | |
387 | Also change SPICE to use a signed int for port number and add | |
388 | ability to set autoport & tls port attributes | |
389 | ||
390 | * libvirt-gconfig/Makefile.am, | |
391 | libvirt-gconfig/libvirt-gconfig-domain-graphics-sdl.c, | |
392 | libvirt-gconfig/libvirt-gconfig-domain-graphics-sdl.h, | |
393 | libvirt-gconfig/libvirt-gconfig-domain-graphics-vnc.c, | |
394 | libvirt-gconfig/libvirt-gconfig-domain-graphics-vnc.h, | |
395 | libvirt-gconfig/libvirt-gconfig.h, | |
396 | libvirt-gconfig/libvirt-gconfig.sym: Add new objects | |
397 | * libvirt-gconfig/libvirt-gconfig-domain-graphics-spice.c, | |
398 | libvirt-gconfig/libvirt-gconfig-domain-graphics-spice.h: | |
399 | Add autoport & tls port setter, change port setter to use | |
400 | a signed int | |
401 | ||
402 | Add API for appending a new device to the domain | |
403 | The gvir_config_domain_set_devices API replaces the entire | |
404 | list of devices, but when building up a config incrementally | |
405 | it is useful to append device one at a time. Thus we need | |
406 | a gvir_config_domain_add_device method | |
407 | ||
408 | * libvirt-gconfig/libvirt-gconfig-domain.c, | |
409 | libvirt-gconfig/libvirt-gconfig-domain.h, | |
410 | libvirt-gconfig/libvirt-gconfig.syms: gvir_config_domain_add_device | |
411 | ||
412 | Add API for setting virt type | |
413 | Add gvir_config_domain_set_virt_type and | |
414 | gvir_config_domain_virt_type_get_type | |
415 | ||
416 | * libvirt-gconfig-domain.c, libvirt-gconfig-domain.h, | |
417 | libvirt-gconfig.h, libvirt-gconfig.sym: Add new APIs | |
418 | ||
419 | Ensure internal copy of URI is not NULL | |
420 | It is permissible to pass in NULL for a URI to libvirt, which | |
421 | causes it to probe for a supported driver. In such a case we | |
422 | should populate priv->uri with the resulting probed URI after | |
423 | opening the connection | |
424 | ||
425 | * libvirt-gobject/libvirt-gobject-connection.c: Populate URI | |
426 | after opening connection, if NULL | |
427 | ||
428 | Add support for setting <filesystem> elements | |
429 | Create a new GVirConfigDomainFilesys object for dealing with | |
430 | the <filesystem> element. | |
431 | ||
432 | * libvirt-gconfig-domain-filesys.c, libvirt-gconfig-domain-filesys.h, | |
433 | Makefile.am, libvirt-gconfig.sym, libvirt-gconfig.h: New | |
434 | GVirConfigDomainFilesys object | |
435 | * libvirt-gconfig-object.c, libvirt-gconfig-object-private.h: Add | |
436 | gvir_config_object_delete_node for removing an XML node | |
437 | ||
438 | Add setters for kernel/ramdisk/cmdline/init in GVirConfigDomainOS | |
439 | Enable setting of the <kernel>, <ramdisk>, <cmdline> and <init> | |
440 | elements inside <os>...</os>. | |
441 | ||
442 | * libvirt-gconfig/libvirt-gconfig-domain-os.c, | |
443 | libvirt-gconfig/libvirt-gconfig-domain-os.h, | |
444 | libvirt-gconfig/libvirt-gconfig.sym: Add new setters | |
445 | ||
446 | 2011-11-30 Christophe Fergeau <cfergeau@redhat.com> | |
447 | ||
448 | Fix potential race in GVirObjectConnection::domain_event_cb | |
449 | This method starts by looking up a domain in priv->domains, and later, | |
450 | depending on the kind of event that occurred, it may remove this | |
451 | domain from priv->domains. While the individual operations (lookup, | |
452 | removal) are protected by priv->lock, there is no guarantee that the | |
453 | looked up domain and even priv->domains will stay unchanged when | |
454 | priv->lock isn't held. | |
455 | ||
456 | In particular, gvir_connection_close will destroy priv->domains which | |
457 | will unreference all the domains it contains (potentially destroying | |
458 | them too), and gvir_connection_fetch_domains will change priv->domains | |
459 | value. | |
460 | ||
461 | To avoid these issues, this commit takes a reference on priv->domains | |
462 | so that it doesn't get away behind our back, and it takes a reference | |
463 | on the looked up domain too to ensure it stays alive for the duration | |
464 | of domain_event_cb run. | |
465 | ||
466 | Fix memory leaks in test-domain-create | |
467 | Before the introduction of GVirConfigXmlDoc, we couldn't | |
468 | destroy the objects deriving from GVirConfigObject without | |
469 | memory corruption. Now that we have GVirConfigXmlDoc, we can | |
470 | make sure the memory we allocate for our various | |
471 | GVirConfigObject instances are properly cleaned up. | |
472 | ||
473 | Return a GVirConfigObject from gvir_config_object_replace_child | |
474 | This makes it possible to use the other GVirConfigObject helpers | |
475 | with the new child, and hides libxml from one more place in our API. | |
476 | ||
477 | Return a GVirConfigObject from gvir_config_object_add_child | |
478 | This makes it possible to use the other GVirConfigObject helpers | |
479 | with the new child, and hides libxml from one more place in our API. | |
480 | ||
481 | Simplify GVirConfigDomainGraphicsSpice creation | |
482 | Now that we have gvir_config_object_set_attribute, we can use | |
483 | the gvir_config_object_new{_from_xml} helpers. | |
484 | ||
485 | Simplify GVirConfigDomainInterfaceNetwork creation | |
486 | Now that we have gvir_config_object_set_attribute, we can use | |
487 | the gvir_config_object_new{_from_xml} helpers. | |
488 | ||
489 | Use gvir_config_object_set_attribute where appropriate | |
490 | ||
491 | Add gvir_config_object_set_attribute{_with_type} | |
492 | ||
493 | Use gvir_config_object_attach where appropriate | |
494 | This allows us to properly refcount the underlying xmlDocPtr (and | |
495 | the associated xmlNodes) to avoid trying to free twice the same | |
496 | xmlNodes when disposing of GVirConfigObject referencing the same | |
497 | nodes. | |
498 | ||
499 | Add gvir_config_object_attach | |
500 | It's needed to be able to keep track of references on the underlying | |
501 | GVirConfigXmlDoc when building a bigger xml tree from smaller | |
502 | separate xml nodes. | |
503 | ||
504 | GVirConfigObject is no longer an abstract type | |
505 | Since we want to use GVirConfigObject as a simple wrapper over | |
506 | xmlNodePtr, we need to be able to create instances of this type for | |
507 | "arbitrary" xml nodes. | |
508 | ||
509 | Set GVirConfigObject::doc during object creation | |
510 | Now that we have a refcounted GVirConfigXmlDoc type, make sure we use | |
511 | it when creating objects deriving from GVirConfigObject. | |
512 | ||
513 | Add GVirConfigObject::doc property | |
514 | It will be used to refcount the xml data and make sure we only | |
515 | free it when all references have went away. | |
516 | ||
517 | Add GVirConfigXmlDoc type | |
518 | This class derives from GObject and wraps an xmlDocPtr. It will be | |
519 | useful to refcount xmlDoc so that it can be shared between multiple | |
520 | GVirConfigObject instances. | |
521 | ||
522 | Fix gvir_config_domain_clock_set_variable_offset | |
523 | It was creating an extra <clock> node as a child of the "main" one | |
524 | which is not what was intended | |
525 | ||
526 | 2011-11-30 Zeeshan Ali (Khattak) <zeeshanak@gnome.org> | |
527 | ||
528 | Remove transient domain reference on shutdown | |
529 | ||
530 | Rely on libvirt API to detect transient domains | |
531 | ||
532 | 2011-11-29 Christophe Fergeau <cfergeau@redhat.com> | |
533 | ||
534 | gir: use libraries from build tree, not installed ones | |
535 | If we don't explicitly mention path to our uninstalled libraries | |
536 | to g-ir-scanner, it will use installed libvirt-* libraries instead | |
537 | of the ones we just built to run a binary during the generation of | |
538 | the gir file. However this binary will have been compiled with the | |
539 | uninstalled ones, | |
540 | This is an issue if the installed libraries are not ABI compatible | |
541 | with the uninstalled one, and will cause a compile failure because | |
542 | the binary will fail to run. | |
543 | This fix has been suggested by Colin Walters (gobject-introspection | |
544 | maintainer). | |
545 | ||
546 | gir: Use --pkg=libxml-2.0 instead of LIBXML2_CFLAGS | |
547 | g-ir-scanner has a standard way of getting the flags for libraries | |
548 | providing .pc files, this commit uses this --pkg flag for libxml | |
549 | instead of using LIBXML2_CFLAGS we computed ourselves. | |
550 | ||
551 | Fix make distcheck | |
552 | Do not ship autogenerated glib enum definitions in the tarball, | |
553 | otherwise they won't get regenerated in the build directory when | |
554 | using a tarball, and rules trying to find these files in the build | |
555 | directory will fail (eg the gir generation rule) | |
556 | ||
557 | Cleanup GIR generation rules | |
558 | Remove some redundant arguments (--pkg seems unneeded when | |
559 | --include is used), most include paths are unneeded, ... | |
560 | ||
561 | Fix GIR generation | |
562 | Overriding PKG_CONFIG_PATH when generating LibvirtGObject-1.0.gir | |
563 | is wrong since this means that if glib/gio/... are installed in | |
564 | a prefix that is not one of the default pkg-config paths, then | |
565 | they won't be found. PKG_CONFIG_PATH is overridden so that | |
566 | g-ir-scanner can find LibvirtGLib-1.0 and LibvirtGConfig-1.0 in | |
567 | the build tree. Since g-ir-scanner provides --include-uninstalled | |
568 | for that purpose, use that instead. | |
569 | ||
570 | Link libvirt-gobject with gthread | |
571 | It uses GMutex so it needs to be linked with gthread | |
572 | ||
573 | Add various missing packages to libvirt-gobject-1.0.pc | |
574 | ||
575 | 2011-11-29 Daniel P. Berrange <berrange@redhat.com> | |
576 | ||
577 | Ensure debug defaults to off for all glib versions | |
578 | The previous patch changed all code to directly call g_debug(). | |
579 | This relies on the fact that glib >= 2.31 defaults to not | |
580 | printing debug messages. The result is that for older glib we | |
581 | now pollute the stderr with debug messages. | |
582 | ||
583 | This introduces 3 env vars for controlling libvirt debug, | |
584 | though on glib >= 2.31 the standard G_LOG_MESSAGES env can | |
585 | be used instead. | |
586 | ||
587 | * libvirt-glib/libvirt-glib-main.c: Check for LIBVIRT_GLIB_DEBUG | |
588 | env var | |
589 | * libvirt-gobject/libvirt-gobject-main.c: Check for | |
590 | LIBVIRT_GOBJECT_DEBUG env var | |
591 | * libvirt-gconfig/libvirt-gconfig-main.c: Check for | |
592 | LIBVIRT_GCONFIG_DEBUG env var | |
593 | * libvirt-gconfig/libvirt-gconfig-main.h, libvirt-gconfig/libvirt-gconfig.h, | |
594 | libvirt-gconfig/libvirt-gconfig.sym: Add new files | |
595 | * libvirt-gconfig/Makefile.am, libvirt-glib/Makefile.am, | |
596 | libvirt-gobject/Makefile.am: Set a default G_LOG_DOMAIN to | |
597 | allow filtering the library messages | |
598 | ||
599 | 2011-11-29 Zeeshan Ali (Khattak) <zeeshanak@gnome.org> | |
600 | ||
601 | Remove now redundant debug system | |
602 | GLib >= 2.31 filters debug messages by default now[1] and provides ways | |
603 | to output debug log from selected domains only. This patch won't be any | |
604 | good without defining proper fine-grained log domains though. | |
605 | ||
606 | http://blogs.gnome.org/mclasen/2011/11/09/better-logging/ | |
607 | ||
608 | Ensure 'domain-added' signal on transient domain creation | |
609 | ||
610 | 2011-11-29 Daniel P. Berrange <berrange@redhat.com> | |
611 | ||
612 | Convert GVirInputStream/GVirOutputStream over to use watches | |
613 | Since virStreamEventAddCallback only allows a single callback | |
614 | to be registered, GVirInputStream/GVirOutputStream should not | |
615 | use that directly. Instead they should use the gvir_stream_add_watch | |
616 | function | |
617 | ||
618 | * libvirt-gobject/libvirt-gobject-input-stream.c, | |
619 | libvirt-gobject/libvirt-gobject-output-stream.c: Convert to | |
620 | use gvir_stream_add_watch | |
621 | ||
622 | Cleanup streams coding style violations | |
623 | ||
624 | Add missing exports of GVirStream APIs | |
625 | * libvirt-gobject/libvirt-gobject.sym: Export gvir_stream_receive, | |
626 | gvir_stream_send, gvir_stream_send_all | |
627 | ||
628 | Add support for creating watches on streams | |
629 | The GIO GInputStream/GOutputStream async model for I/O does not | |
630 | work for working with non-blocking bi-directional streams. To | |
631 | allow that to be done more effectively, add an API to allow | |
632 | main loop watches to be registered against streams. | |
633 | ||
634 | Since the libvirt level virStreamEventAddCallback API only allows | |
635 | a single callback to be registered to a stream at any time, the | |
636 | GVirStream object needs to be multiplexing of multiple watches into | |
637 | a single libvirt level callback. | |
638 | ||
639 | Watches can be removed in the normal way with g_source_remove | |
640 | ||
641 | * libvirt-gobject/libvirt-gobject-stream.c, | |
642 | libvirt-gobject/libvirt-gobject-stream.h, | |
643 | libvirt-gobject/libvirt-gobject.sym: Add gvir_stream_add_watch | |
644 | ||
645 | Document some of the coding style conventions required | |
646 | * HACKING: Add notes on coding style conventions | |
647 | ||
648 | 2011-11-24 Zeeshan Ali (Khattak) <zeeshanak@gnome.org> | |
649 | ||
650 | Bump version | |
651 | ||
652 | 2011-11-24 Daniel P. Berrange <berrange@redhat.com> | |
653 | ||
654 | Fix VPATH build wrt enum types | |
655 | * libvirt-gconfig/Makefile.am: Built files should live in builddir | |
656 | * libvirt-gconfig/libvirt-gconfig.sym: Export enum types | |
657 | ||
658 | 2011-11-23 Christophe Fergeau <cfergeau@redhat.com> | |
659 | ||
660 | Don't memset GObject private data to 0 | |
661 | The GObject private data allocated with g_type_class_add_private | |
662 | will be automatically zero'ed when the GObject is created so we | |
663 | don't need to memset it to 0. | |
664 | ||
665 | Add GVirConfigDomainVideo | |
666 | -- | |
667 | v2: use g_return_if_fail to test function args for sanity | |
668 | v3: rename to GVirConfigDomainVideo | |
669 | ||
670 | Add basic GVirConfigDomainGraphicsSpice | |
671 | Only the (non-TLS) port can be set on it | |
672 | ||
673 | -- | |
674 | v2: rename to GVirConfigDeviceGraphicsSpice | |
675 | fix node creation (missing "type" attribute) | |
676 | derive GVirConfigDeviceGraphicsSpice from GVirConfigDeviceGraphics | |
677 | use g_return_if_fail to test function args for sanity | |
678 | v3: rename to GVirConfigDomainGraphicsSpice | |
679 | ||
680 | Add GObject boilerplate for GVirConfigDomainGraphics | |
681 | This is an abstract type which will be used as a base class for the | |
682 | various type of <graphics> devices (spice, vnc, ...) | |
683 | ||
684 | -- | |
685 | v3: rename to GVirConfigDomainGraphics | |
686 | ||
687 | Add GVirConfigDomainInput | |
688 | -- | |
689 | v2: use enum for input bus type | |
690 | use g_return_if_fail to test function args for sanity | |
691 | v3: rename to GVirConfigDomainInput | |
692 | ||
693 | Add <network> to creation test | |
694 | ||
695 | Add gvir_config_domain_interface_network_set_source | |
696 | ||
697 | Add GVirConfigDomainInterfaceNetwork | |
698 | -- | |
699 | v2: use g_return_if_fail to test function args for sanity | |
700 | v3: rename to GVirConfigDomainInterfaceNetwork | |
701 | ||
702 | Add GObject boilerplate for GVirConfigDomainInterface | |
703 | This base class is mainly useful as a generic type when we manipulate | |
704 | list of interfaces regardless of their actual type. | |
705 | ||
706 | -- | |
707 | v3: rename to GVirConfigDomainInterface since GVirConfigInterface | |
708 | has a different purpose | |
709 | ||
710 | Add test for adding a disk device | |
711 | ||
712 | More GVirConfigDomainDisk setters | |
713 | -- | |
714 | v2: fix gvir_config_device_disk_set_source | |
715 | use g_return_if_fail to test function args for sanity | |
716 | ||
717 | Add gvir_config_object_add_child | |
718 | It's similar to gvir_config_object_replace_child except that if the | |
719 | current node already has a child with the correct name, it returns | |
720 | the existing child instead of replacing it. | |
721 | ||
722 | -- | |
723 | v2: instead of adding an argument to gvir_config_object_new_child, | |
724 | split the function in 2 separate ones, gvir_config_object_add_child | |
725 | and gvir_config_object_replace_child. | |
726 | use g_return_if_fail to test function args for sanity | |
727 | ||
728 | Add gvir_config_domain_set_devices | |
729 | -- | |
730 | v2: use g_return_if_fail to test function args for sanity | |
731 | ||
732 | Add various GVirConfigDomainDisk setters | |
733 | -- | |
734 | v2: use g_return_if_fail to test function args for sanity | |
735 | ||
736 | Add gobject boilerplate for GVirConfigDomainDisk | |
737 | -- | |
738 | v3: rename to GVirConfigDomainDisk | |
739 | ||
740 | Add gobject boilerplate for GVirConfigDomainDevice | |
741 | This is an abstract type which will be used as a base class for | |
742 | all objects stored in the <devices> section of a domain. | |
743 | ||
744 | -- | |
745 | v3: rename to GVirConfigDomainDevice | |
746 | ||
747 | Add GVirConfigDomain::vcpu | |
748 | ||
749 | Add test for GVirConfigDomainOs | |
750 | ||
751 | Implement gvir_config_domain_set_os | |
752 | -- | |
753 | v2: use g_return_if_fail to test function args for sanity | |
754 | ||
755 | Add some GVirConfigDomainOs setters | |
756 | -- | |
757 | v2: merged several related commits | |
758 | use safer g_strcmp0 for string comparison | |
759 | use g_return_if_fail to test function args for sanity | |
760 | ||
761 | Add gobject boilerplate for GVirConfigDomainOs | |
762 | -- | |
763 | v3: rename from GVirConfigOs to GVirConfigDomainOs | |
764 | ||
765 | Create clock object in domain creation test | |
766 | ||
767 | Add gvir_config_genum_get_nick helper | |
768 | We will often need to convert from an enum to its string | |
769 | representation, add an helper for that to avoid duplicating that | |
770 | code. | |
771 | ||
772 | -- | |
773 | v2: moved before gvir_config_clock_set_offset implementation since | |
774 | it needs it | |
775 | ||
776 | Use glib-mkenums to register enums with glib | |
777 | We don't currently have any enum in our API, but we will need some. | |
778 | This commit adds the generation of libvirt-gconfig-enum-types.[ch] | |
779 | using glib-mkenums. These files will register the various enums | |
780 | that will get added to libvirt-gconfig header files with glib. | |
781 | ||
782 | -- | |
783 | v2: move libvirt-gconfig-enum-types.h to HEADERS in Makefile.am so that | |
784 | it's installed | |
785 | ||
786 | Add gvir_config_domain_set_clock | |
787 | The implementation is likely to need to be completed later. We | |
788 | might want to store pointers from GVirConfigDomain to the associated | |
789 | GVirConfigDomainClock, from GVirConfigDomainClock to the GVirConfigDomain | |
790 | that contains it. Since I'm not sure yet if they will be needed, I chose | |
791 | to keep the implementation simple. | |
792 | ||
793 | -- | |
794 | v2: use g_return_if_fail to test function args for sanity | |
795 | ||
796 | Add some GVirDomainConfigClock setters | |
797 | -- | |
798 | v2: use g_return_if_fail to test function args for sanity | |
799 | v3: fix typo in gvir_config_domain_clock_set_variable_offset | |
800 | ("timezone" -> "adjustment") | |
801 | ||
802 | 2011-11-22 Christophe Fergeau <cfergeau@redhat.com> | |
803 | ||
804 | Add gobject boilerplate for GVirConfigDomain{Clock,Timer} | |
805 | -- | |
806 | v3: rename from GVirConfig* to GVirConfigDomain* | |
807 | ||
808 | Use new helpers to simplify gvir_config_domain_set_features | |
809 | ||
810 | Add gvir_config_object_replace_child helper | |
811 | This allows us to factor the code to add an XML node to a config | |
812 | object. | |
813 | ||
814 | -- | |
815 | v2: use g_return_if_fail to test function args for sanity | |
816 | ||
817 | replace object | |
818 | ||
819 | Make some GVirConfigObject helpers private | |
820 | At this point, I'm not sure how/if the library user should be able | |
821 | to directly manipulate the XML data wrapped by a GVirConfigObject. | |
822 | It's preferrable to hide this API from the user until we have a | |
823 | clearer idea how to expose it. | |
824 | ||
825 | Remove unused prototype for gvir_config_object_parse | |
826 | There is no corresponding implementation so no need to keep this | |
827 | prototype. | |
828 | ||
829 | Remove unneeded blank line in *_class_init | |
830 | ||
0 | 831 | 2011-11-22 Daniel P. Berrange <berrange@redhat.com> |
1 | 832 | |
2 | 833 | Update NEWs with more 0.0.2 release notes |
5 | 5 | pkgconfigdir = $(libdir)/pkgconfig |
6 | 6 | pkgconfig_DATA = libvirt-glib-1.0.pc libvirt-gconfig-1.0.pc libvirt-gobject-1.0.pc |
7 | 7 | |
8 | EXTRA_DIST = @PACKAGE@.spec $(pkgconfig_DATA:%.pc=%.pc.in) | |
8 | EXTRA_DIST = $(PACKAGE).spec $(pkgconfig_DATA:%.pc=%.pc.in) | |
9 | 9 | |
10 | DISTCLEAN_FILES = @PACKAGE@.spec $(pkgconfig_DATA) | |
10 | DISTCLEAN_FILES = $(PACKAGE).spec $(pkgconfig_DATA) | |
11 | 11 | |
12 | 12 | DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc=yes --enable-introspection=yes |
13 | 13 |
175 | 175 | GIO2_LIBS = @GIO2_LIBS@ |
176 | 176 | GLIB2_CFLAGS = @GLIB2_CFLAGS@ |
177 | 177 | GLIB2_LIBS = @GLIB2_LIBS@ |
178 | GLIB_MKENUMS = @GLIB_MKENUMS@ | |
178 | 179 | GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ |
179 | 180 | GOBJECT2_LIBS = @GOBJECT2_LIBS@ |
180 | 181 | GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@ |
183 | 184 | GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ |
184 | 185 | GTHREAD2_LIBS = @GTHREAD2_LIBS@ |
185 | 186 | GTKDOC_CHECK = @GTKDOC_CHECK@ |
187 | GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ | |
188 | GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ | |
186 | 189 | GTKDOC_MKPDF = @GTKDOC_MKPDF@ |
187 | 190 | GTKDOC_REBASE = @GTKDOC_REBASE@ |
188 | 191 | G_IR_COMPILER = @G_IR_COMPILER@ |
301 | 304 | ACLOCAL_AMFLAGS = -I m4 |
302 | 305 | pkgconfigdir = $(libdir)/pkgconfig |
303 | 306 | pkgconfig_DATA = libvirt-glib-1.0.pc libvirt-gconfig-1.0.pc libvirt-gobject-1.0.pc |
304 | EXTRA_DIST = @PACKAGE@.spec $(pkgconfig_DATA:%.pc=%.pc.in) | |
305 | DISTCLEAN_FILES = @PACKAGE@.spec $(pkgconfig_DATA) | |
307 | EXTRA_DIST = $(PACKAGE).spec $(pkgconfig_DATA:%.pc=%.pc.in) | |
308 | DISTCLEAN_FILES = $(PACKAGE).spec $(pkgconfig_DATA) | |
306 | 309 | DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc=yes --enable-introspection=yes |
307 | 310 | all: config.h |
308 | 311 | $(MAKE) $(AM_MAKEFLAGS) all-recursive |
0 | 0.0.4 - Jan 12, 2012 | |
1 | ==================== | |
2 | ||
3 | - Add support for configuring sound, serial, parallel | |
4 | and channel devices | |
5 | - Add support for newer libvirt shutdown event | |
6 | - Add support for setting SPICE/VNC passwords | |
7 | - Fix storage pool annotations | |
8 | - Improve docs for memory APIs | |
9 | - Fix problem with duplicated attributes | |
10 | - Many internal XML helper API cleanups/additions | |
11 | - Add API for retrieving list of all devices | |
12 | - Fix mixup between g_new0/g_slice_free | |
13 | - Change namespace for GVirConfig APIs (breaks ABI | |
14 | and API) | |
15 | - New APIs for save/suspend | |
16 | ||
17 | 0.0.3 - Dec 19, 2011 | |
18 | ==================== | |
19 | ||
20 | - Flesh out API in libvirt-gconfig to allow basic domain | |
21 | configuration | |
22 | - Don't memset private data fields, since glib already | |
23 | ensures this | |
24 | - Fix VPATH builds | |
25 | - Add syntax-check rules ensuring coding style compliance | |
26 | - Describe coding style in HACKING file | |
27 | - Expand libvirt-gobject API to allow watches on streams | |
28 | - Simplify debug system with new glib | |
29 | - Fix libvirt-gobject pkg-config file | |
30 | - Fix domain event handlig wrt transient guests | |
31 | - Don't crash if given a NULL uri to connect to | |
32 | - Expand libvirt-gobject API for storage pools & volumes | |
33 | - Fix some crashes in error paths where GError instance | |
34 | was NULL | |
35 | - Add vala files to the RPM | |
36 | - Add binding for open domain consoles & graphics | |
37 | ||
0 | 38 | 0.0.2 - Nov 22, 2011 |
1 | 39 | ==================== |
2 | 40 | |
17 | 55 | ==================== |
18 | 56 | |
19 | 57 | First public release. |
20 |
26 | 26 | dnl GTK_DOC_CHECK([minimum-gtk-doc-version]) |
27 | 27 | AC_DEFUN([GTK_DOC_CHECK], |
28 | 28 | [ |
29 | AC_REQUIRE([PKG_PROG_PKG_CONFIG]) | |
29 | 30 | AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first |
30 | 31 | AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first |
31 | 32 | |
53 | 54 | AC_MSG_ERROR([gtk-doc not installed and --enable-gtk-doc requested]))], |
54 | 55 | [PKG_CHECK_EXISTS([gtk-doc >= $1],, |
55 | 56 | AC_MSG_ERROR([You need to have gtk-doc >= $1 installed to build $PACKAGE_NAME]))]) |
57 | dnl don't check for glib if we build glib | |
58 | if test "x$PACKAGE_NAME" != "xglib"; then | |
59 | dnl don't fail if someone does not have glib | |
60 | PKG_CHECK_MODULES(GTKDOC_DEPS, glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0,,) | |
61 | fi | |
56 | 62 | fi |
57 | 63 | |
58 | 64 | AC_MSG_CHECKING([whether to build gtk-doc documentation]) |
0 | 0 | #! /bin/sh |
1 | 1 | # Guess values for system-dependent variables and create Makefiles. |
2 | # Generated by GNU Autoconf 2.68 for libvirt-glib 0.0.2. | |
2 | # Generated by GNU Autoconf 2.68 for libvirt-glib 0.0.4. | |
3 | 3 | # |
4 | 4 | # |
5 | 5 | # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, |
566 | 566 | # Identity of this package. |
567 | 567 | PACKAGE_NAME='libvirt-glib' |
568 | 568 | PACKAGE_TARNAME='libvirt-glib' |
569 | PACKAGE_VERSION='0.0.2' | |
570 | PACKAGE_STRING='libvirt-glib 0.0.2' | |
569 | PACKAGE_VERSION='0.0.4' | |
570 | PACKAGE_STRING='libvirt-glib 0.0.4' | |
571 | 571 | PACKAGE_BUGREPORT='' |
572 | 572 | PACKAGE_URL='' |
573 | 573 | |
635 | 635 | CYGWIN_EXTRA_PYTHON_LIBADD |
636 | 636 | CYGWIN_EXTRA_LIBADD |
637 | 637 | CYGWIN_EXTRA_LDFLAGS |
638 | GLIB_MKENUMS | |
638 | 639 | GTK_DOC_USE_REBASE_FALSE |
639 | 640 | GTK_DOC_USE_REBASE_TRUE |
640 | 641 | GTK_DOC_USE_LIBTOOL_FALSE |
645 | 646 | GTK_DOC_BUILD_HTML_TRUE |
646 | 647 | ENABLE_GTK_DOC_FALSE |
647 | 648 | ENABLE_GTK_DOC_TRUE |
649 | GTKDOC_DEPS_LIBS | |
650 | GTKDOC_DEPS_CFLAGS | |
648 | 651 | HTML_DIR |
649 | 652 | GTKDOC_MKPDF |
650 | 653 | GTKDOC_REBASE |
828 | 831 | GIO2_LIBS |
829 | 832 | LIBXML2_CFLAGS |
830 | 833 | LIBXML2_LIBS |
834 | GTKDOC_DEPS_CFLAGS | |
835 | GTKDOC_DEPS_LIBS | |
831 | 836 | GOBJECT_INTROSPECTION_CFLAGS |
832 | 837 | GOBJECT_INTROSPECTION_LIBS' |
833 | 838 | |
1372 | 1377 | # Omit some internal or obsolete options to make the list less imposing. |
1373 | 1378 | # This message is too long to be a string in the A/UX 3.1 sh. |
1374 | 1379 | cat <<_ACEOF |
1375 | \`configure' configures libvirt-glib 0.0.2 to adapt to many kinds of systems. | |
1380 | \`configure' configures libvirt-glib 0.0.4 to adapt to many kinds of systems. | |
1376 | 1381 | |
1377 | 1382 | Usage: $0 [OPTION]... [VAR=VALUE]... |
1378 | 1383 | |
1442 | 1447 | |
1443 | 1448 | if test -n "$ac_init_help"; then |
1444 | 1449 | case $ac_init_help in |
1445 | short | recursive ) echo "Configuration of libvirt-glib 0.0.2:";; | |
1450 | short | recursive ) echo "Configuration of libvirt-glib 0.0.4:";; | |
1446 | 1451 | esac |
1447 | 1452 | cat <<\_ACEOF |
1448 | 1453 | |
1515 | 1520 | C compiler flags for LIBXML2, overriding pkg-config |
1516 | 1521 | LIBXML2_LIBS |
1517 | 1522 | linker flags for LIBXML2, overriding pkg-config |
1523 | GTKDOC_DEPS_CFLAGS | |
1524 | C compiler flags for GTKDOC_DEPS, overriding pkg-config | |
1525 | GTKDOC_DEPS_LIBS | |
1526 | linker flags for GTKDOC_DEPS, overriding pkg-config | |
1518 | 1527 | GOBJECT_INTROSPECTION_CFLAGS |
1519 | 1528 | C compiler flags for GOBJECT_INTROSPECTION, overriding |
1520 | 1529 | pkg-config |
1587 | 1596 | test -n "$ac_init_help" && exit $ac_status |
1588 | 1597 | if $ac_init_version; then |
1589 | 1598 | cat <<\_ACEOF |
1590 | libvirt-glib configure 0.0.2 | |
1599 | libvirt-glib configure 0.0.4 | |
1591 | 1600 | generated by GNU Autoconf 2.68 |
1592 | 1601 | |
1593 | 1602 | Copyright (C) 2010 Free Software Foundation, Inc. |
1865 | 1874 | This file contains any messages produced by compilers while |
1866 | 1875 | running configure, to aid debugging if configure makes a mistake. |
1867 | 1876 | |
1868 | It was created by libvirt-glib $as_me 0.0.2, which was | |
1877 | It was created by libvirt-glib $as_me 0.0.4, which was | |
1869 | 1878 | generated by GNU Autoconf 2.68. Invocation command line was |
1870 | 1879 | |
1871 | 1880 | $ $0 $@ |
2684 | 2693 | |
2685 | 2694 | # Define the identity of the package. |
2686 | 2695 | PACKAGE='libvirt-glib' |
2687 | VERSION='0.0.2' | |
2696 | VERSION='0.0.4' | |
2688 | 2697 | |
2689 | 2698 | |
2690 | 2699 | cat >>confdefs.h <<_ACEOF |
2809 | 2818 | AM_BACKSLASH='\' |
2810 | 2819 | |
2811 | 2820 | |
2812 | LIBVIRT_REQUIRED=0.9.4 | |
2821 | LIBVIRT_REQUIRED=0.9.7 | |
2813 | 2822 | GLIB2_REQUIRED=2.10.0 |
2814 | 2823 | GOBJECT2_REQUIRED=2.10.0 |
2815 | 2824 | GIO_REQUIRED=2.10.0 |
11694 | 11703 | $as_echo "#define _GNU_SOURCE /**/" >>confdefs.h |
11695 | 11704 | |
11696 | 11705 | |
11706 | # Autoconf 2.61a.99 and earlier don't support linking a file only | |
11707 | # in VPATH builds. But since GNUmakefile is for maintainer use | |
11708 | # only, it does not matter if we skip the link with older autoconf. | |
11709 | # Automake 1.10.1 and earlier try to remove GNUmakefile in non-VPATH | |
11710 | # builds, so use a shell variable to bypass this. | |
11711 | GNUmakefile=GNUmakefile | |
11712 | ac_config_links="$ac_config_links $GNUmakefile:$GNUmakefile" | |
11713 | ||
11714 | ||
11697 | 11715 | |
11698 | 11716 | |
11699 | 11717 | # Check whether --enable-compile-warnings was given. |
12466 | 12484 | |
12467 | 12485 | |
12468 | 12486 | |
12487 | ||
12469 | 12488 | # Extract the first word of "gtkdoc-check", so it can be a program name with args. |
12470 | 12489 | set dummy gtkdoc-check; ac_word=$2 |
12471 | 12490 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 |
12623 | 12642 | else |
12624 | 12643 | as_fn_error $? "You need to have gtk-doc >= 1.10 installed to build $PACKAGE_NAME" "$LINENO" 5 |
12625 | 12644 | fi |
12645 | if test "x$PACKAGE_NAME" != "xglib"; then | |
12646 | ||
12647 | pkg_failed=no | |
12648 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTKDOC_DEPS" >&5 | |
12649 | $as_echo_n "checking for GTKDOC_DEPS... " >&6; } | |
12650 | ||
12651 | if test -n "$GTKDOC_DEPS_CFLAGS"; then | |
12652 | pkg_cv_GTKDOC_DEPS_CFLAGS="$GTKDOC_DEPS_CFLAGS" | |
12653 | elif test -n "$PKG_CONFIG"; then | |
12654 | if test -n "$PKG_CONFIG" && \ | |
12655 | { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0\""; } >&5 | |
12656 | ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0") 2>&5 | |
12657 | ac_status=$? | |
12658 | $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 | |
12659 | test $ac_status = 0; }; then | |
12660 | pkg_cv_GTKDOC_DEPS_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>/dev/null` | |
12661 | else | |
12662 | pkg_failed=yes | |
12663 | fi | |
12664 | else | |
12665 | pkg_failed=untried | |
12666 | fi | |
12667 | if test -n "$GTKDOC_DEPS_LIBS"; then | |
12668 | pkg_cv_GTKDOC_DEPS_LIBS="$GTKDOC_DEPS_LIBS" | |
12669 | elif test -n "$PKG_CONFIG"; then | |
12670 | if test -n "$PKG_CONFIG" && \ | |
12671 | { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0\""; } >&5 | |
12672 | ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0") 2>&5 | |
12673 | ac_status=$? | |
12674 | $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 | |
12675 | test $ac_status = 0; }; then | |
12676 | pkg_cv_GTKDOC_DEPS_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>/dev/null` | |
12677 | else | |
12678 | pkg_failed=yes | |
12679 | fi | |
12680 | else | |
12681 | pkg_failed=untried | |
12682 | fi | |
12683 | ||
12684 | ||
12685 | ||
12686 | if test $pkg_failed = yes; then | |
12687 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 | |
12688 | $as_echo "no" >&6; } | |
12689 | ||
12690 | if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then | |
12691 | _pkg_short_errors_supported=yes | |
12692 | else | |
12693 | _pkg_short_errors_supported=no | |
12694 | fi | |
12695 | if test $_pkg_short_errors_supported = yes; then | |
12696 | GTKDOC_DEPS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>&1` | |
12697 | else | |
12698 | GTKDOC_DEPS_PKG_ERRORS=`$PKG_CONFIG --print-errors "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>&1` | |
12699 | fi | |
12700 | # Put the nasty error message in config.log where it belongs | |
12701 | echo "$GTKDOC_DEPS_PKG_ERRORS" >&5 | |
12702 | ||
12703 | as_fn_error $? "Package requirements (glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0) were not met: | |
12704 | ||
12705 | $GTKDOC_DEPS_PKG_ERRORS | |
12706 | ||
12707 | Consider adjusting the PKG_CONFIG_PATH environment variable if you | |
12708 | installed software in a non-standard prefix. | |
12709 | ||
12710 | Alternatively, you may set the environment variables GTKDOC_DEPS_CFLAGS | |
12711 | and GTKDOC_DEPS_LIBS to avoid the need to call pkg-config. | |
12712 | See the pkg-config man page for more details." "$LINENO" 5 | |
12713 | ||
12714 | elif test $pkg_failed = untried; then | |
12715 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 | |
12716 | $as_echo "no" >&6; } | |
12717 | { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 | |
12718 | $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} | |
12719 | as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it | |
12720 | is in your PATH or set the PKG_CONFIG environment variable to the full | |
12721 | path to pkg-config. | |
12722 | ||
12723 | Alternatively, you may set the environment variables GTKDOC_DEPS_CFLAGS | |
12724 | and GTKDOC_DEPS_LIBS to avoid the need to call pkg-config. | |
12725 | See the pkg-config man page for more details. | |
12726 | ||
12727 | To get pkg-config, see <http://pkg-config.freedesktop.org/>. | |
12728 | See \`config.log' for more details" "$LINENO" 5; } | |
12729 | ||
12730 | else | |
12731 | GTKDOC_DEPS_CFLAGS=$pkg_cv_GTKDOC_DEPS_CFLAGS | |
12732 | GTKDOC_DEPS_LIBS=$pkg_cv_GTKDOC_DEPS_LIBS | |
12733 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 | |
12734 | $as_echo "yes" >&6; } | |
12735 | ||
12736 | fi | |
12737 | fi | |
12626 | 12738 | fi |
12627 | 12739 | |
12628 | 12740 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build gtk-doc documentation" >&5 |
12690 | 12802 | GTK_DOC_USE_REBASE_FALSE= |
12691 | 12803 | fi |
12692 | 12804 | |
12805 | ||
12806 | ||
12807 | # Setup GLIB_MKENUMS to use glib-mkenums even if GLib is uninstalled. | |
12808 | GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0` | |
12693 | 12809 | |
12694 | 12810 | |
12695 | 12811 | CYGWIN_EXTRA_LDFLAGS= |
12871 | 12987 | fi |
12872 | 12988 | if test "$PYTHON_VERSION" != "" |
12873 | 12989 | then |
12874 | if test -r $with_python/include/python$PYTHON_VERSION/Python.h -a \ | |
12875 | -d $with_python/lib/python$PYTHON_VERSION/site-packages | |
12990 | if test -r $with_python/include/python$PYTHON_VERSION/Python.h && \ | |
12991 | test -d $with_python/lib/python$PYTHON_VERSION/site-packages | |
12876 | 12992 | then |
12877 | 12993 | PYTHON_INCLUDES=$with_python/include/python$PYTHON_VERSION |
12878 | 12994 | PYTHON_SITE_PACKAGES=$libdir/python$PYTHON_VERSION/site-packages |
13686 | 13802 | # report actual input values of CONFIG_FILES etc. instead of their |
13687 | 13803 | # values after options handling. |
13688 | 13804 | ac_log=" |
13689 | This file was extended by libvirt-glib $as_me 0.0.2, which was | |
13805 | This file was extended by libvirt-glib $as_me 0.0.4, which was | |
13690 | 13806 | generated by GNU Autoconf 2.68. Invocation command line was |
13691 | 13807 | |
13692 | 13808 | CONFIG_FILES = $CONFIG_FILES |
13713 | 13829 | # Files that config.status was made for. |
13714 | 13830 | config_files="$ac_config_files" |
13715 | 13831 | config_headers="$ac_config_headers" |
13832 | config_links="$ac_config_links" | |
13716 | 13833 | config_commands="$ac_config_commands" |
13717 | 13834 | |
13718 | 13835 | _ACEOF |
13743 | 13860 | Configuration headers: |
13744 | 13861 | $config_headers |
13745 | 13862 | |
13863 | Configuration links: | |
13864 | $config_links | |
13865 | ||
13746 | 13866 | Configuration commands: |
13747 | 13867 | $config_commands |
13748 | 13868 | |
13752 | 13872 | cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 |
13753 | 13873 | ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" |
13754 | 13874 | ac_cs_version="\\ |
13755 | libvirt-glib config.status 0.0.2 | |
13875 | libvirt-glib config.status 0.0.4 | |
13756 | 13876 | configured by $0, generated by GNU Autoconf 2.68, |
13757 | 13877 | with options \\"\$ac_cs_config\\" |
13758 | 13878 | |
14151 | 14271 | |
14152 | 14272 | |
14153 | 14273 | |
14274 | GNUmakefile=$GNUmakefile | |
14154 | 14275 | |
14155 | 14276 | _ACEOF |
14156 | 14277 | |
14163 | 14284 | "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; |
14164 | 14285 | "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; |
14165 | 14286 | "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; |
14287 | "$GNUmakefile") CONFIG_LINKS="$CONFIG_LINKS $GNUmakefile:$GNUmakefile" ;; | |
14166 | 14288 | "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; |
14167 | 14289 | "libvirt-glib/Makefile") CONFIG_FILES="$CONFIG_FILES libvirt-glib/Makefile" ;; |
14168 | 14290 | "libvirt-gconfig/Makefile") CONFIG_FILES="$CONFIG_FILES libvirt-gconfig/Makefile" ;; |
14193 | 14315 | if $ac_need_defaults; then |
14194 | 14316 | test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files |
14195 | 14317 | test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers |
14318 | test "${CONFIG_LINKS+set}" = set || CONFIG_LINKS=$config_links | |
14196 | 14319 | test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands |
14197 | 14320 | fi |
14198 | 14321 | |
14490 | 14613 | fi # test -n "$CONFIG_HEADERS" |
14491 | 14614 | |
14492 | 14615 | |
14493 | eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" | |
14616 | eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :L $CONFIG_LINKS :C $CONFIG_COMMANDS" | |
14494 | 14617 | shift |
14495 | 14618 | for ac_tag |
14496 | 14619 | do |
14767 | 14890 | } |
14768 | 14891 | s/.*/./; q'`/stamp-h$_am_stamp_count |
14769 | 14892 | ;; |
14770 | ||
14893 | :L) | |
14894 | # | |
14895 | # CONFIG_LINK | |
14896 | # | |
14897 | ||
14898 | if test "$ac_source" = "$ac_file" && test "$srcdir" = '.'; then | |
14899 | : | |
14900 | else | |
14901 | # Prefer the file from the source tree if names are identical. | |
14902 | if test "$ac_source" = "$ac_file" || test ! -r "$ac_source"; then | |
14903 | ac_source=$srcdir/$ac_source | |
14904 | fi | |
14905 | ||
14906 | { $as_echo "$as_me:${as_lineno-$LINENO}: linking $ac_source to $ac_file" >&5 | |
14907 | $as_echo "$as_me: linking $ac_source to $ac_file" >&6;} | |
14908 | ||
14909 | if test ! -r "$ac_source"; then | |
14910 | as_fn_error $? "$ac_source: file not found" "$LINENO" 5 | |
14911 | fi | |
14912 | rm -f "$ac_file" | |
14913 | ||
14914 | # Try a relative symlink, then a hard link, then a copy. | |
14915 | case $ac_source in | |
14916 | [\\/$]* | ?:[\\/]* ) ac_rel_source=$ac_source ;; | |
14917 | *) ac_rel_source=$ac_top_build_prefix$ac_source ;; | |
14918 | esac | |
14919 | ln -s "$ac_rel_source" "$ac_file" 2>/dev/null || | |
14920 | ln "$ac_source" "$ac_file" 2>/dev/null || | |
14921 | cp -p "$ac_source" "$ac_file" || | |
14922 | as_fn_error $? "cannot link or copy $ac_source to $ac_file" "$LINENO" 5 | |
14923 | fi | |
14924 | ;; | |
14771 | 14925 | :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 |
14772 | 14926 | $as_echo "$as_me: executing $ac_file commands" >&6;} |
14773 | 14927 | ;; |
0 | AC_INIT(libvirt-glib, 0.0.2) | |
0 | AC_INIT(libvirt-glib, 0.0.4) | |
1 | 1 | AC_CONFIG_SRCDIR(libvirt-glib/libvirt-glib-main.c) |
2 | 2 | AC_CONFIG_AUX_DIR([build-aux]) |
3 | 3 | AM_CONFIG_HEADER(config.h) |
8 | 8 | |
9 | 9 | AM_SILENT_RULES([yes]) |
10 | 10 | |
11 | LIBVIRT_REQUIRED=0.9.4 | |
11 | LIBVIRT_REQUIRED=0.9.7 | |
12 | 12 | GLIB2_REQUIRED=2.10.0 |
13 | 13 | GOBJECT2_REQUIRED=2.10.0 |
14 | 14 | GIO_REQUIRED=2.10.0 |
39 | 39 | |
40 | 40 | AC_DEFINE([_GNU_SOURCE], [], [Enable GNU extensions]) |
41 | 41 | |
42 | # Autoconf 2.61a.99 and earlier don't support linking a file only | |
43 | # in VPATH builds. But since GNUmakefile is for maintainer use | |
44 | # only, it does not matter if we skip the link with older autoconf. | |
45 | # Automake 1.10.1 and earlier try to remove GNUmakefile in non-VPATH | |
46 | # builds, so use a shell variable to bypass this. | |
47 | GNUmakefile=GNUmakefile | |
48 | m4_if(m4_version_compare([2.61a.100], | |
49 | m4_defn([m4_PACKAGE_VERSION])), [1], [], | |
50 | [AC_CONFIG_LINKS([$GNUmakefile:$GNUmakefile], [], | |
51 | [GNUmakefile=$GNUmakefile])]) | |
52 | ||
42 | 53 | LIBVIRT_GLIB_COMPILE_WARNINGS([maximum]) |
43 | 54 | |
44 | 55 | PKG_CHECK_MODULES(LIBVIRT, libvirt >= $LIBVIRT_REQUIRED) |
49 | 60 | PKG_CHECK_MODULES(LIBXML2, libxml-2.0 >= $LIBXML2_REQUIRED) |
50 | 61 | |
51 | 62 | GTK_DOC_CHECK([1.10],[--flavour no-tmpl]) |
63 | ||
64 | # Setup GLIB_MKENUMS to use glib-mkenums even if GLib is uninstalled. | |
65 | GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0` | |
66 | AC_SUBST(GLIB_MKENUMS) | |
52 | 67 | |
53 | 68 | dnl Extra link-time flags for Cygwin. |
54 | 69 | dnl Copied from libxml2 configure.in, but I removed mingw changes |
133 | 148 | fi |
134 | 149 | if test "$PYTHON_VERSION" != "" |
135 | 150 | then |
136 | if test -r $with_python/include/python$PYTHON_VERSION/Python.h -a \ | |
137 | -d $with_python/lib/python$PYTHON_VERSION/site-packages | |
151 | if test -r $with_python/include/python$PYTHON_VERSION/Python.h && \ | |
152 | test -d $with_python/lib/python$PYTHON_VERSION/site-packages | |
138 | 153 | then |
139 | 154 | PYTHON_INCLUDES=$with_python/include/python$PYTHON_VERSION |
140 | 155 | PYTHON_SITE_PACKAGES=$libdir/python$PYTHON_VERSION/site-packages |
128 | 128 | GIO2_LIBS = @GIO2_LIBS@ |
129 | 129 | GLIB2_CFLAGS = @GLIB2_CFLAGS@ |
130 | 130 | GLIB2_LIBS = @GLIB2_LIBS@ |
131 | GLIB_MKENUMS = @GLIB_MKENUMS@ | |
131 | 132 | GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ |
132 | 133 | GOBJECT2_LIBS = @GOBJECT2_LIBS@ |
133 | 134 | GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@ |
136 | 137 | GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ |
137 | 138 | GTHREAD2_LIBS = @GTHREAD2_LIBS@ |
138 | 139 | GTKDOC_CHECK = @GTKDOC_CHECK@ |
140 | GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ | |
141 | GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ | |
139 | 142 | GTKDOC_MKPDF = @GTKDOC_MKPDF@ |
140 | 143 | GTKDOC_REBASE = @GTKDOC_REBASE@ |
141 | 144 | G_IR_COMPILER = @G_IR_COMPILER@ |
0 | <SECTION> | |
1 | <FILE>libvirt-gconfig-enum-types</FILE> | |
2 | GVIR_CONFIG_TYPE_DOMAIN_CHANNEL_TARGET_TYPE | |
3 | GVIR_CONFIG_TYPE_DOMAIN_CLOCK_OFFSET | |
4 | GVIR_CONFIG_TYPE_DOMAIN_CONSOLE_TARGET_TYPE | |
5 | GVIR_CONFIG_TYPE_DOMAIN_DISK_BUS | |
6 | GVIR_CONFIG_TYPE_DOMAIN_DISK_GUEST_DEVICE_TYPE | |
7 | GVIR_CONFIG_TYPE_DOMAIN_DISK_SNAPSHOT_TYPE | |
8 | GVIR_CONFIG_TYPE_DOMAIN_DISK_TYPE | |
9 | GVIR_CONFIG_TYPE_DOMAIN_FILESYS_ACCESS_TYPE | |
10 | GVIR_CONFIG_TYPE_DOMAIN_FILESYS_DRIVER_TYPE | |
11 | GVIR_CONFIG_TYPE_DOMAIN_FILESYS_TYPE | |
12 | GVIR_CONFIG_TYPE_DOMAIN_INPUT_BUS | |
13 | GVIR_CONFIG_TYPE_DOMAIN_INPUT_DEVICE_TYPE | |
14 | GVIR_CONFIG_TYPE_DOMAIN_INTERFACE_LINK_STATE | |
15 | GVIR_CONFIG_TYPE_DOMAIN_LIFECYCLE_ACTION | |
16 | GVIR_CONFIG_TYPE_DOMAIN_LIFECYCLE_EVENT | |
17 | GVIR_CONFIG_TYPE_DOMAIN_MEMBALLOON_MODEL | |
18 | GVIR_CONFIG_TYPE_DOMAIN_OS_BOOT_DEVICE | |
19 | GVIR_CONFIG_TYPE_DOMAIN_OS_SM_BIOS_MODE | |
20 | GVIR_CONFIG_TYPE_DOMAIN_OS_TYPE | |
21 | GVIR_CONFIG_TYPE_DOMAIN_SECLABEL_TYPE | |
22 | GVIR_CONFIG_TYPE_DOMAIN_SOUND_MODEL | |
23 | GVIR_CONFIG_TYPE_DOMAIN_VIDEO_MODEL | |
24 | GVIR_CONFIG_TYPE_DOMAIN_VIRT_TYPE | |
25 | GVIR_CONFIG_TYPE_STORAGE_POOL_TYPE | |
26 | <SUBSECTION Standard> | |
27 | gvir_config_domain_channel_target_type_get_type | |
28 | gvir_config_domain_clock_offset_get_type | |
29 | gvir_config_domain_console_target_type_get_type | |
30 | gvir_config_domain_disk_bus_get_type | |
31 | gvir_config_domain_disk_guest_device_type_get_type | |
32 | gvir_config_domain_disk_snapshot_type_get_type | |
33 | gvir_config_domain_disk_type_get_type | |
34 | gvir_config_domain_filesys_access_type_get_type | |
35 | gvir_config_domain_filesys_driver_type_get_type | |
36 | gvir_config_domain_filesys_type_get_type | |
37 | gvir_config_domain_input_bus_get_type | |
38 | gvir_config_domain_input_device_type_get_type | |
39 | gvir_config_domain_interface_link_state_get_type | |
40 | gvir_config_domain_lifecycle_action_get_type | |
41 | gvir_config_domain_lifecycle_event_get_type | |
42 | gvir_config_domain_memballoon_model_get_type | |
43 | gvir_config_domain_os_boot_device_get_type | |
44 | gvir_config_domain_os_sm_bios_mode_get_type | |
45 | gvir_config_domain_os_type_get_type | |
46 | gvir_config_domain_seclabel_type_get_type | |
47 | gvir_config_domain_sound_model_get_type | |
48 | gvir_config_domain_video_model_get_type | |
49 | gvir_config_domain_virt_type_get_type | |
50 | gvir_config_storage_pool_type_get_type | |
51 | </SECTION> | |
52 |
0 | gvir_config_domain_channel_target_type_get_type | |
1 | gvir_config_domain_clock_offset_get_type | |
2 | gvir_config_domain_console_target_type_get_type | |
3 | gvir_config_domain_disk_bus_get_type | |
4 | gvir_config_domain_disk_guest_device_type_get_type | |
5 | gvir_config_domain_disk_snapshot_type_get_type | |
6 | gvir_config_domain_disk_type_get_type | |
7 | gvir_config_domain_filesys_access_type_get_type | |
8 | gvir_config_domain_filesys_driver_type_get_type | |
9 | gvir_config_domain_filesys_type_get_type | |
10 | gvir_config_domain_input_bus_get_type | |
11 | gvir_config_domain_input_device_type_get_type | |
12 | gvir_config_domain_interface_link_state_get_type | |
13 | gvir_config_domain_lifecycle_action_get_type | |
14 | gvir_config_domain_lifecycle_event_get_type | |
15 | gvir_config_domain_memballoon_model_get_type | |
16 | gvir_config_domain_os_boot_device_get_type | |
17 | gvir_config_domain_os_sm_bios_mode_get_type | |
18 | gvir_config_domain_os_type_get_type | |
19 | gvir_config_domain_seclabel_type_get_type | |
20 | gvir_config_domain_sound_model_get_type | |
21 | gvir_config_domain_video_model_get_type | |
22 | gvir_config_domain_virt_type_get_type | |
23 | gvir_config_storage_pool_type_get_type |
38 | 38 | $(top_builddir)/libvirt-gconfig/libvirt-gconfig-1.0.la |
39 | 39 | |
40 | 40 | include $(top_srcdir)/gtk-doc.make |
41 |
95 | 95 | GIO2_LIBS = @GIO2_LIBS@ |
96 | 96 | GLIB2_CFLAGS = @GLIB2_CFLAGS@ |
97 | 97 | GLIB2_LIBS = @GLIB2_LIBS@ |
98 | GLIB_MKENUMS = @GLIB_MKENUMS@ | |
98 | 99 | GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ |
99 | 100 | GOBJECT2_LIBS = @GOBJECT2_LIBS@ |
100 | 101 | GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@ |
103 | 104 | GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ |
104 | 105 | GTHREAD2_LIBS = @GTHREAD2_LIBS@ |
105 | 106 | GTKDOC_CHECK = @GTKDOC_CHECK@ |
107 | GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ | |
108 | GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ | |
106 | 109 | GTKDOC_MKPDF = @GTKDOC_MKPDF@ |
107 | 110 | GTKDOC_REBASE = @GTKDOC_REBASE@ |
108 | 111 | G_IR_COMPILER = @G_IR_COMPILER@ |
0 | <?xml version="1.0" encoding="utf-8" standalone="no"?> | |
1 | <!DOCTYPE book PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ""> | |
2 | <book xmlns="http://www.devhelp.net/book" title="Libvirt-gconfig Reference Manual" link="index.html" author="" name="Libvirt-gconfig"> | |
3 | <chapters> | |
4 | <sub name="Libvirt-gconfig" link="ch01.html"/> | |
5 | <sub name="Object Hierarchy" link="object-tree.html"/> | |
6 | <sub name="API Index" link="api-index-full.html"/> | |
7 | </chapters> | |
8 | <functions/> | |
9 | </book> |
6 | 6 | <link rel="home" href="index.html" title="Libvirt-gconfig Reference Manual"> |
7 | 7 | <link rel="up" href="index.html" title="Libvirt-gconfig Reference Manual"> |
8 | 8 | <link rel="prev" href="object-tree.html" title="Object Hierarchy"> |
9 | <meta name="generator" content="GTK-Doc V1.17 (XML mode)"> | |
9 | <meta name="generator" content="GTK-Doc V1.18 (XML mode)"> | |
10 | 10 | <link rel="stylesheet" href="style.css" type="text/css"> |
11 | 11 | </head> |
12 | 12 | <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> |
13 | <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"> | |
13 | <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"> | |
14 | <tr valign="middle"> | |
14 | 15 | <td><a accesskey="p" href="object-tree.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> |
15 | 16 | <td> </td> |
16 | 17 | <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> |
17 | 18 | <th width="100%" align="center">Libvirt-gconfig Reference Manual</th> |
18 | 19 | <td> </td> |
19 | </tr></table> | |
20 | </tr> | |
21 | <tr><td colspan="5" class="shortcuts"><a class="shortcut" href="#idxC">C</a></td></tr> | |
22 | </table> | |
20 | 23 | <div class="index"> |
21 | 24 | <div class="titlepage"><div><div><h2 class="title"> |
22 | 25 | <a name="api-index-full"></a>API Index</h2></div></div></div> |
23 | <a name="idx"></a> | |
26 | <a name="idx"></a><a name="idxC"></a><h3 class="title">C</h3> | |
27 | <dt> | |
28 | GVIR_CONFIG_TYPE_DOMAIN_CHANNEL_TARGET_TYPE, macro in libvirt-gconfig-enum-types | |
29 | </dt> | |
30 | <dd></dd> | |
31 | <dt> | |
32 | GVIR_CONFIG_TYPE_DOMAIN_CLOCK_OFFSET, macro in libvirt-gconfig-enum-types | |
33 | </dt> | |
34 | <dd></dd> | |
35 | <dt> | |
36 | GVIR_CONFIG_TYPE_DOMAIN_CONSOLE_TARGET_TYPE, macro in libvirt-gconfig-enum-types | |
37 | </dt> | |
38 | <dd></dd> | |
39 | <dt> | |
40 | GVIR_CONFIG_TYPE_DOMAIN_DISK_BUS, macro in libvirt-gconfig-enum-types | |
41 | </dt> | |
42 | <dd></dd> | |
43 | <dt> | |
44 | GVIR_CONFIG_TYPE_DOMAIN_DISK_GUEST_DEVICE_TYPE, macro in libvirt-gconfig-enum-types | |
45 | </dt> | |
46 | <dd></dd> | |
47 | <dt> | |
48 | GVIR_CONFIG_TYPE_DOMAIN_DISK_SNAPSHOT_TYPE, macro in libvirt-gconfig-enum-types | |
49 | </dt> | |
50 | <dd></dd> | |
51 | <dt> | |
52 | GVIR_CONFIG_TYPE_DOMAIN_DISK_TYPE, macro in libvirt-gconfig-enum-types | |
53 | </dt> | |
54 | <dd></dd> | |
55 | <dt> | |
56 | GVIR_CONFIG_TYPE_DOMAIN_FILESYS_ACCESS_TYPE, macro in libvirt-gconfig-enum-types | |
57 | </dt> | |
58 | <dd></dd> | |
59 | <dt> | |
60 | GVIR_CONFIG_TYPE_DOMAIN_FILESYS_DRIVER_TYPE, macro in libvirt-gconfig-enum-types | |
61 | </dt> | |
62 | <dd></dd> | |
63 | <dt> | |
64 | GVIR_CONFIG_TYPE_DOMAIN_FILESYS_TYPE, macro in libvirt-gconfig-enum-types | |
65 | </dt> | |
66 | <dd></dd> | |
67 | <dt> | |
68 | GVIR_CONFIG_TYPE_DOMAIN_INPUT_BUS, macro in libvirt-gconfig-enum-types | |
69 | </dt> | |
70 | <dd></dd> | |
71 | <dt> | |
72 | GVIR_CONFIG_TYPE_DOMAIN_INPUT_DEVICE_TYPE, macro in libvirt-gconfig-enum-types | |
73 | </dt> | |
74 | <dd></dd> | |
75 | <dt> | |
76 | GVIR_CONFIG_TYPE_DOMAIN_INTERFACE_LINK_STATE, macro in libvirt-gconfig-enum-types | |
77 | </dt> | |
78 | <dd></dd> | |
79 | <dt> | |
80 | GVIR_CONFIG_TYPE_DOMAIN_LIFECYCLE_ACTION, macro in libvirt-gconfig-enum-types | |
81 | </dt> | |
82 | <dd></dd> | |
83 | <dt> | |
84 | GVIR_CONFIG_TYPE_DOMAIN_LIFECYCLE_EVENT, macro in libvirt-gconfig-enum-types | |
85 | </dt> | |
86 | <dd></dd> | |
87 | <dt> | |
88 | GVIR_CONFIG_TYPE_DOMAIN_MEMBALLOON_MODEL, macro in libvirt-gconfig-enum-types | |
89 | </dt> | |
90 | <dd></dd> | |
91 | <dt> | |
92 | GVIR_CONFIG_TYPE_DOMAIN_OS_BOOT_DEVICE, macro in libvirt-gconfig-enum-types | |
93 | </dt> | |
94 | <dd></dd> | |
95 | <dt> | |
96 | GVIR_CONFIG_TYPE_DOMAIN_OS_SM_BIOS_MODE, macro in libvirt-gconfig-enum-types | |
97 | </dt> | |
98 | <dd></dd> | |
99 | <dt> | |
100 | GVIR_CONFIG_TYPE_DOMAIN_OS_TYPE, macro in libvirt-gconfig-enum-types | |
101 | </dt> | |
102 | <dd></dd> | |
103 | <dt> | |
104 | GVIR_CONFIG_TYPE_DOMAIN_SECLABEL_TYPE, macro in libvirt-gconfig-enum-types | |
105 | </dt> | |
106 | <dd></dd> | |
107 | <dt> | |
108 | GVIR_CONFIG_TYPE_DOMAIN_SOUND_MODEL, macro in libvirt-gconfig-enum-types | |
109 | </dt> | |
110 | <dd></dd> | |
111 | <dt> | |
112 | GVIR_CONFIG_TYPE_DOMAIN_VIDEO_MODEL, macro in libvirt-gconfig-enum-types | |
113 | </dt> | |
114 | <dd></dd> | |
115 | <dt> | |
116 | GVIR_CONFIG_TYPE_DOMAIN_VIRT_TYPE, macro in libvirt-gconfig-enum-types | |
117 | </dt> | |
118 | <dd></dd> | |
119 | <dt> | |
120 | GVIR_CONFIG_TYPE_STORAGE_POOL_TYPE, macro in libvirt-gconfig-enum-types | |
121 | </dt> | |
122 | <dd></dd> | |
24 | 123 | </div> |
25 | 124 | <div class="footer"> |
26 | 125 | <hr> |
27 | Generated by GTK-Doc V1.17</div> | |
126 | Generated by GTK-Doc V1.18</div> | |
28 | 127 | </body> |
29 | 128 | </html>⏎ |
7 | 7 | <link rel="up" href="index.html" title="Libvirt-gconfig Reference Manual"> |
8 | 8 | <link rel="prev" href="index.html" title="Libvirt-gconfig Reference Manual"> |
9 | 9 | <link rel="next" href="object-tree.html" title="Object Hierarchy"> |
10 | <meta name="generator" content="GTK-Doc V1.17 (XML mode)"> | |
10 | <meta name="generator" content="GTK-Doc V1.18 (XML mode)"> | |
11 | 11 | <link rel="stylesheet" href="style.css" type="text/css"> |
12 | 12 | </head> |
13 | 13 | <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> |
20 | 20 | </tr></table> |
21 | 21 | <div class="chapter"> |
22 | 22 | <div class="titlepage"><div><div><h2 class="title"> |
23 | <a name="id410353"></a>Libvirt-gconfig</h2></div></div></div> | |
23 | <a name="id486980"></a>Libvirt-gconfig</h2></div></div></div> | |
24 | 24 | <span style="color: red"><xi:include></xi:include></span><span style="color: red"><xi:include></xi:include></span><span style="color: red"><xi:include></xi:include></span><span style="color: red"><xi:include></xi:include></span><span style="color: red"><xi:include></xi:include></span><span style="color: red"><xi:include></xi:include></span><span style="color: red"><xi:include></xi:include></span><span style="color: red"><xi:include></xi:include></span><span style="color: red"><xi:include></xi:include></span><span style="color: red"><xi:include></xi:include></span><span style="color: red"><xi:include></xi:include></span> |
25 | 25 | </div> |
26 | 26 | <div class="footer"> |
27 | 27 | <hr> |
28 | Generated by GTK-Doc V1.17</div> | |
28 | Generated by GTK-Doc V1.18</div> | |
29 | 29 | </body> |
30 | 30 | </html>⏎ |
5 | 5 | <meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> |
6 | 6 | <link rel="home" href="index.html" title="Libvirt-gconfig Reference Manual"> |
7 | 7 | <link rel="next" href="ch01.html" title="Libvirt-gconfig"> |
8 | <meta name="generator" content="GTK-Doc V1.17 (XML mode)"> | |
8 | <meta name="generator" content="GTK-Doc V1.18 (XML mode)"> | |
9 | 9 | <link rel="stylesheet" href="style.css" type="text/css"> |
10 | 10 | </head> |
11 | 11 | <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> |
22 | 22 | </div> |
23 | 23 | <div class="footer"> |
24 | 24 | <hr> |
25 | Generated by GTK-Doc V1.17</div> | |
25 | Generated by GTK-Doc V1.18</div> | |
26 | 26 | </body> |
27 | 27 | </html>⏎ |
7 | 7 | <link rel="up" href="index.html" title="Libvirt-gconfig Reference Manual"> |
8 | 8 | <link rel="prev" href="ch01.html" title="Libvirt-gconfig"> |
9 | 9 | <link rel="next" href="api-index-full.html" title="API Index"> |
10 | <meta name="generator" content="GTK-Doc V1.17 (XML mode)"> | |
10 | <meta name="generator" content="GTK-Doc V1.18 (XML mode)"> | |
11 | 11 | <link rel="stylesheet" href="style.css" type="text/css"> |
12 | 12 | </head> |
13 | 13 | <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> |
26 | 26 | </div> |
27 | 27 | <div class="footer"> |
28 | 28 | <hr> |
29 | Generated by GTK-Doc V1.17</div> | |
29 | Generated by GTK-Doc V1.18</div> | |
30 | 30 | </body> |
31 | 31 | </html>⏎ |
40 | 40 | $(top_builddir)/libvirt-glib/libvirt-glib-1.0.la |
41 | 41 | |
42 | 42 | include $(top_srcdir)/gtk-doc.make |
43 |
95 | 95 | GIO2_LIBS = @GIO2_LIBS@ |
96 | 96 | GLIB2_CFLAGS = @GLIB2_CFLAGS@ |
97 | 97 | GLIB2_LIBS = @GLIB2_LIBS@ |
98 | GLIB_MKENUMS = @GLIB_MKENUMS@ | |
98 | 99 | GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ |
99 | 100 | GOBJECT2_LIBS = @GOBJECT2_LIBS@ |
100 | 101 | GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@ |
103 | 104 | GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ |
104 | 105 | GTHREAD2_LIBS = @GTHREAD2_LIBS@ |
105 | 106 | GTKDOC_CHECK = @GTKDOC_CHECK@ |
107 | GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ | |
108 | GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ | |
106 | 109 | GTKDOC_MKPDF = @GTKDOC_MKPDF@ |
107 | 110 | GTKDOC_REBASE = @GTKDOC_REBASE@ |
108 | 111 | G_IR_COMPILER = @G_IR_COMPILER@ |
0 | <?xml version="1.0" encoding="utf-8" standalone="no"?> | |
1 | <!DOCTYPE book PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ""> | |
2 | <book xmlns="http://www.devhelp.net/book" title="Libvirt-glib Reference Manual" link="index.html" author="" name="Libvirt-glib"> | |
3 | <chapters> | |
4 | <sub name="Libvirt-glib" link="ch01.html"/> | |
5 | <sub name="Object Hierarchy" link="object-tree.html"/> | |
6 | <sub name="API Index" link="api-index-full.html"/> | |
7 | </chapters> | |
8 | <functions/> | |
9 | </book> |
6 | 6 | <link rel="home" href="index.html" title="Libvirt-glib Reference Manual"> |
7 | 7 | <link rel="up" href="index.html" title="Libvirt-glib Reference Manual"> |
8 | 8 | <link rel="prev" href="object-tree.html" title="Object Hierarchy"> |
9 | <meta name="generator" content="GTK-Doc V1.17 (XML mode)"> | |
9 | <meta name="generator" content="GTK-Doc V1.18 (XML mode)"> | |
10 | 10 | <link rel="stylesheet" href="style.css" type="text/css"> |
11 | 11 | </head> |
12 | 12 | <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> |
24 | 24 | </div> |
25 | 25 | <div class="footer"> |
26 | 26 | <hr> |
27 | Generated by GTK-Doc V1.17</div> | |
27 | Generated by GTK-Doc V1.18</div> | |
28 | 28 | </body> |
29 | 29 | </html>⏎ |
7 | 7 | <link rel="up" href="index.html" title="Libvirt-glib Reference Manual"> |
8 | 8 | <link rel="prev" href="index.html" title="Libvirt-glib Reference Manual"> |
9 | 9 | <link rel="next" href="object-tree.html" title="Object Hierarchy"> |
10 | <meta name="generator" content="GTK-Doc V1.17 (XML mode)"> | |
10 | <meta name="generator" content="GTK-Doc V1.18 (XML mode)"> | |
11 | 11 | <link rel="stylesheet" href="style.css" type="text/css"> |
12 | 12 | </head> |
13 | 13 | <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> |
20 | 20 | </tr></table> |
21 | 21 | <div class="chapter"> |
22 | 22 | <div class="titlepage"><div><div><h2 class="title"> |
23 | <a name="id479404"></a>Libvirt-glib</h2></div></div></div> | |
23 | <a name="id533095"></a>Libvirt-glib</h2></div></div></div> | |
24 | 24 | <span style="color: red"><xi:include></xi:include></span><span style="color: red"><xi:include></xi:include></span><span style="color: red"><xi:include></xi:include></span> |
25 | 25 | </div> |
26 | 26 | <div class="footer"> |
27 | 27 | <hr> |
28 | Generated by GTK-Doc V1.17</div> | |
28 | Generated by GTK-Doc V1.18</div> | |
29 | 29 | </body> |
30 | 30 | </html>⏎ |
5 | 5 | <meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> |
6 | 6 | <link rel="home" href="index.html" title="Libvirt-glib Reference Manual"> |
7 | 7 | <link rel="next" href="ch01.html" title="Libvirt-glib"> |
8 | <meta name="generator" content="GTK-Doc V1.17 (XML mode)"> | |
8 | <meta name="generator" content="GTK-Doc V1.18 (XML mode)"> | |
9 | 9 | <link rel="stylesheet" href="style.css" type="text/css"> |
10 | 10 | </head> |
11 | 11 | <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> |
22 | 22 | </div> |
23 | 23 | <div class="footer"> |
24 | 24 | <hr> |
25 | Generated by GTK-Doc V1.17</div> | |
25 | Generated by GTK-Doc V1.18</div> | |
26 | 26 | </body> |
27 | 27 | </html>⏎ |
7 | 7 | <link rel="up" href="index.html" title="Libvirt-glib Reference Manual"> |
8 | 8 | <link rel="prev" href="ch01.html" title="Libvirt-glib"> |
9 | 9 | <link rel="next" href="api-index-full.html" title="API Index"> |
10 | <meta name="generator" content="GTK-Doc V1.17 (XML mode)"> | |
10 | <meta name="generator" content="GTK-Doc V1.18 (XML mode)"> | |
11 | 11 | <link rel="stylesheet" href="style.css" type="text/css"> |
12 | 12 | </head> |
13 | 13 | <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> |
26 | 26 | </div> |
27 | 27 | <div class="footer"> |
28 | 28 | <hr> |
29 | Generated by GTK-Doc V1.17</div> | |
29 | Generated by GTK-Doc V1.18</div> | |
30 | 30 | </body> |
31 | 31 | </html>⏎ |
0 | 0 | <SECTION> |
1 | 1 | <FILE>libvirt-gobject-enums</FILE> |
2 | <SUBSECTION Standard> | |
3 | GVIR_TYPE_DOMAIN_START_FLAGS | |
2 | 4 | GVIR_TYPE_DOMAIN_STATE |
5 | gvir_domain_start_flags_get_type | |
3 | 6 | gvir_domain_state_get_type |
4 | 7 | </SECTION> |
5 | 8 |
40 | 40 | $(top_builddir)/libvirt-gobject/libvirt-gobject-1.0.la |
41 | 41 | |
42 | 42 | include $(top_srcdir)/gtk-doc.make |
43 |
95 | 95 | GIO2_LIBS = @GIO2_LIBS@ |
96 | 96 | GLIB2_CFLAGS = @GLIB2_CFLAGS@ |
97 | 97 | GLIB2_LIBS = @GLIB2_LIBS@ |
98 | GLIB_MKENUMS = @GLIB_MKENUMS@ | |
98 | 99 | GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ |
99 | 100 | GOBJECT2_LIBS = @GOBJECT2_LIBS@ |
100 | 101 | GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@ |
103 | 104 | GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ |
104 | 105 | GTHREAD2_LIBS = @GTHREAD2_LIBS@ |
105 | 106 | GTKDOC_CHECK = @GTKDOC_CHECK@ |
107 | GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ | |
108 | GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ | |
106 | 109 | GTKDOC_MKPDF = @GTKDOC_MKPDF@ |
107 | 110 | GTKDOC_REBASE = @GTKDOC_REBASE@ |
108 | 111 | G_IR_COMPILER = @G_IR_COMPILER@ |
0 | <?xml version="1.0" encoding="utf-8" standalone="no"?> | |
1 | <!DOCTYPE book PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ""> | |
2 | <book xmlns="http://www.devhelp.net/book" title="Libvirt-gobject Reference Manual" link="index.html" author="" name="Libvirt-gobject"> | |
3 | <chapters> | |
4 | <sub name="Libvirt-gobject" link="ch01.html"/> | |
5 | <sub name="Object Hierarchy" link="object-tree.html"/> | |
6 | <sub name="API Index" link="api-index-full.html"/> | |
7 | </chapters> | |
8 | <functions/> | |
9 | </book> |
6 | 6 | <link rel="home" href="index.html" title="Libvirt-gobject Reference Manual"> |
7 | 7 | <link rel="up" href="index.html" title="Libvirt-gobject Reference Manual"> |
8 | 8 | <link rel="prev" href="object-tree.html" title="Object Hierarchy"> |
9 | <meta name="generator" content="GTK-Doc V1.17 (XML mode)"> | |
9 | <meta name="generator" content="GTK-Doc V1.18 (XML mode)"> | |
10 | 10 | <link rel="stylesheet" href="style.css" type="text/css"> |
11 | 11 | </head> |
12 | 12 | <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> |
13 | <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"> | |
14 | <tr valign="middle"> | |
13 | <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"> | |
15 | 14 | <td><a accesskey="p" href="object-tree.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> |
16 | 15 | <td> </td> |
17 | 16 | <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> |
18 | 17 | <th width="100%" align="center">Libvirt-gobject Reference Manual</th> |
19 | 18 | <td> </td> |
20 | </tr> | |
21 | <tr><td colspan="5" class="shortcuts"> | |
22 | <a class="shortcut" href="#idxD">D</a> | |
23 | | | |
24 | <a class="shortcut" href="#idxT">T</a> | |
25 | </td></tr> | |
26 | </table> | |
19 | </tr></table> | |
27 | 20 | <div class="index"> |
28 | 21 | <div class="titlepage"><div><div><h2 class="title"> |
29 | 22 | <a name="api-index-full"></a>API Index</h2></div></div></div> |
30 | <a name="idx"></a><a name="idxD"></a><h3 class="title">D</h3> | |
31 | <dt> | |
32 | gvir_domain_state_get_type, function in libvirt-gobject-enums | |
33 | </dt> | |
34 | <dd></dd> | |
35 | <a name="idxT"></a><h3 class="title">T</h3> | |
36 | <dt> | |
37 | GVIR_TYPE_DOMAIN_STATE, macro in libvirt-gobject-enums | |
38 | </dt> | |
39 | <dd></dd> | |
23 | <a name="idx"></a> | |
40 | 24 | </div> |
41 | 25 | <div class="footer"> |
42 | 26 | <hr> |
43 | Generated by GTK-Doc V1.17</div> | |
27 | Generated by GTK-Doc V1.18</div> | |
44 | 28 | </body> |
45 | 29 | </html>⏎ |
7 | 7 | <link rel="up" href="index.html" title="Libvirt-gobject Reference Manual"> |
8 | 8 | <link rel="prev" href="index.html" title="Libvirt-gobject Reference Manual"> |
9 | 9 | <link rel="next" href="object-tree.html" title="Object Hierarchy"> |
10 | <meta name="generator" content="GTK-Doc V1.17 (XML mode)"> | |
10 | <meta name="generator" content="GTK-Doc V1.18 (XML mode)"> | |
11 | 11 | <link rel="stylesheet" href="style.css" type="text/css"> |
12 | 12 | </head> |
13 | 13 | <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> |
20 | 20 | </tr></table> |
21 | 21 | <div class="chapter"> |
22 | 22 | <div class="titlepage"><div><div><h2 class="title"> |
23 | <a name="id382227"></a>Libvirt-gobject</h2></div></div></div> | |
23 | <a name="id383591"></a>Libvirt-gobject</h2></div></div></div> | |
24 | 24 | <span style="color: red"><xi:include></xi:include></span><span style="color: red"><xi:include></xi:include></span><span style="color: red"><xi:include></xi:include></span><span style="color: red"><xi:include></xi:include></span><span style="color: red"><xi:include></xi:include></span><span style="color: red"><xi:include></xi:include></span><span style="color: red"><xi:include></xi:include></span><span style="color: red"><xi:include></xi:include></span><span style="color: red"><xi:include></xi:include></span><span style="color: red"><xi:include></xi:include></span><span style="color: red"><xi:include></xi:include></span><span style="color: red"><xi:include></xi:include></span> |
25 | 25 | </div> |
26 | 26 | <div class="footer"> |
27 | 27 | <hr> |
28 | Generated by GTK-Doc V1.17</div> | |
28 | Generated by GTK-Doc V1.18</div> | |
29 | 29 | </body> |
30 | 30 | </html>⏎ |
5 | 5 | <meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> |
6 | 6 | <link rel="home" href="index.html" title="Libvirt-gobject Reference Manual"> |
7 | 7 | <link rel="next" href="ch01.html" title="Libvirt-gobject"> |
8 | <meta name="generator" content="GTK-Doc V1.17 (XML mode)"> | |
8 | <meta name="generator" content="GTK-Doc V1.18 (XML mode)"> | |
9 | 9 | <link rel="stylesheet" href="style.css" type="text/css"> |
10 | 10 | </head> |
11 | 11 | <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> |
22 | 22 | </div> |
23 | 23 | <div class="footer"> |
24 | 24 | <hr> |
25 | Generated by GTK-Doc V1.17</div> | |
25 | Generated by GTK-Doc V1.18</div> | |
26 | 26 | </body> |
27 | 27 | </html>⏎ |
7 | 7 | <link rel="up" href="index.html" title="Libvirt-gobject Reference Manual"> |
8 | 8 | <link rel="prev" href="ch01.html" title="Libvirt-gobject"> |
9 | 9 | <link rel="next" href="api-index-full.html" title="API Index"> |
10 | <meta name="generator" content="GTK-Doc V1.17 (XML mode)"> | |
10 | <meta name="generator" content="GTK-Doc V1.18 (XML mode)"> | |
11 | 11 | <link rel="stylesheet" href="style.css" type="text/css"> |
12 | 12 | </head> |
13 | 13 | <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> |
26 | 26 | </div> |
27 | 27 | <div class="footer"> |
28 | 28 | <hr> |
29 | Generated by GTK-Doc V1.17</div> | |
29 | Generated by GTK-Doc V1.18</div> | |
30 | 30 | </body> |
31 | 31 | </html>⏎ |
0 | 0 | |
1 | 1 | noinst_PROGRAMS = event-test conn-test |
2 | 2 | |
3 | EXTRA_DIST = event-test.py | |
3 | EXTRA_DIST = event-test.py config-demo.py | |
4 | 4 | |
5 | 5 | event_test_CFLAGS = \ |
6 | 6 | $(WARN_CFLAGS) \ |
132 | 132 | GIO2_LIBS = @GIO2_LIBS@ |
133 | 133 | GLIB2_CFLAGS = @GLIB2_CFLAGS@ |
134 | 134 | GLIB2_LIBS = @GLIB2_LIBS@ |
135 | GLIB_MKENUMS = @GLIB_MKENUMS@ | |
135 | 136 | GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ |
136 | 137 | GOBJECT2_LIBS = @GOBJECT2_LIBS@ |
137 | 138 | GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@ |
140 | 141 | GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ |
141 | 142 | GTHREAD2_LIBS = @GTHREAD2_LIBS@ |
142 | 143 | GTKDOC_CHECK = @GTKDOC_CHECK@ |
144 | GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ | |
145 | GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ | |
143 | 146 | GTKDOC_MKPDF = @GTKDOC_MKPDF@ |
144 | 147 | GTKDOC_REBASE = @GTKDOC_REBASE@ |
145 | 148 | G_IR_COMPILER = @G_IR_COMPILER@ |
254 | 257 | top_build_prefix = @top_build_prefix@ |
255 | 258 | top_builddir = @top_builddir@ |
256 | 259 | top_srcdir = @top_srcdir@ |
257 | EXTRA_DIST = event-test.py | |
260 | EXTRA_DIST = event-test.py config-demo.py | |
258 | 261 | event_test_CFLAGS = \ |
259 | 262 | $(WARN_CFLAGS) \ |
260 | 263 | $(GLIB2_CFLAGS) \ |
0 | #!/usr/bin/python | |
1 | ||
2 | from gi.repository import LibvirtGConfig; | |
3 | ||
4 | domain = LibvirtGConfig.Domain.new() | |
5 | domain.set_name("foo") | |
6 | domain.set_memory(1024*1024*1024) | |
7 | domain.set_vcpus(2) | |
8 | domain.set_lifecycle(LibvirtGConfig.DomainLifecycleEvent.ON_POWEROFF, | |
9 | LibvirtGConfig.DomainLifecycleAction.DESTROY) | |
10 | ||
11 | clock = LibvirtGConfig.DomainClock.new() | |
12 | clock.set_offset(LibvirtGConfig.DomainClockOffset.UTC) | |
13 | domain.set_clock(clock) | |
14 | ||
15 | os = LibvirtGConfig.DomainOs.new() | |
16 | os.set_os_type(LibvirtGConfig.DomainOsType.HVM) | |
17 | os.set_arch("x86_64") | |
18 | devices = [ LibvirtGConfig.DomainOsBootDevice.CDROM, | |
19 | LibvirtGConfig.DomainOsBootDevice.NETWORK ] | |
20 | os.set_boot_devices(devices) | |
21 | domain.set_os(os) | |
22 | ||
23 | disk = LibvirtGConfig.DomainDisk.new() | |
24 | disk.set_type(LibvirtGConfig.DomainDiskType.FILE) | |
25 | disk.set_guest_device_type(LibvirtGConfig.DomainDiskGuestDeviceType.DISK) | |
26 | disk.set_source("/tmp/foo/bar") | |
27 | disk.set_driver_name("qemu") | |
28 | disk.set_driver_type("qcow2") | |
29 | disk.set_target_bus(LibvirtGConfig.DomainDiskBus.IDE) | |
30 | disk.set_target_dev("hda") | |
31 | domain.add_device(disk) | |
32 | ||
33 | interface = LibvirtGConfig.DomainInterfaceNetwork.new() | |
34 | interface.set_source("default") | |
35 | domain.add_device(interface) | |
36 | ||
37 | interface = LibvirtGConfig.DomainInterfaceUser.new() | |
38 | interface.set_ifname("eth0") | |
39 | interface.set_link_state(LibvirtGConfig.DomainInterfaceLinkState.UP) | |
40 | interface.set_mac("00:11:22:33:44:55") | |
41 | interface.set_model("foo") | |
42 | domain.add_device(interface) | |
43 | ||
44 | input = LibvirtGConfig.DomainInput.new() | |
45 | input.set_device_type(LibvirtGConfig.DomainInputDeviceType.TABLET) | |
46 | input.set_bus(LibvirtGConfig.DomainInputBus.USB) | |
47 | domain.add_device(input) | |
48 | ||
49 | graphics = LibvirtGConfig.DomainGraphicsSpice.new() | |
50 | graphics.set_port(1234) | |
51 | domain.add_device(graphics) | |
52 | ||
53 | video = LibvirtGConfig.DomainVideo.new() | |
54 | video.set_model(LibvirtGConfig.DomainVideoModel.QXL) | |
55 | domain.add_device(video) | |
56 | ||
57 | console = LibvirtGConfig.DomainConsole.new() | |
58 | pty = LibvirtGConfig.DomainChardevSourcePty.new() | |
59 | console.set_source(pty) | |
60 | domain.add_device(console) | |
61 | ||
62 | print domain.to_xml() | |
63 | ||
64 | ||
65 | pool = LibvirtGConfig.StoragePool.new() | |
66 | pool.set_pool_type(LibvirtGConfig.StoragePoolType.DIR) | |
67 | ||
68 | pool_source = LibvirtGConfig.StoragePoolSource.new() | |
69 | pool_source.set_directory("/foo/bar") | |
70 | pool.set_source(pool_source) | |
71 | ||
72 | perms = LibvirtGConfig.StoragePermissions.new() | |
73 | perms.set_owner(1001) | |
74 | perms.set_group(1005) | |
75 | perms.set_mode(0744) | |
76 | perms.set_label("virt_image_t") | |
77 | ||
78 | pool_target = LibvirtGConfig.StoragePoolTarget.new() | |
79 | pool_target.set_path("/dev/disk/by-path") | |
80 | pool_target.set_permissions(perms) | |
81 | pool.set_target(pool_target) | |
82 | ||
83 | print pool.to_xml() | |
84 | ||
85 | ||
86 | vol = LibvirtGConfig.StorageVol.new() | |
87 | vol.set_name("my-vol") | |
88 | vol.set_capacity(0xdeadbeef) | |
89 | ||
90 | vol_target = LibvirtGConfig.StorageVolTarget.new() | |
91 | vol_target.set_format("qcow2") | |
92 | vol_target.set_permissions(perms) | |
93 | vol.set_target(vol_target) | |
94 | ||
95 | print vol.to_xml() |
0 | 0 | /* |
1 | 1 | * conn-test.c: test libvirt gobject integration |
2 | 2 | * |
3 | * Copyright (C) 2010 Red Hat | |
3 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
71 | 71 | |
72 | 72 | return 0; |
73 | 73 | } |
74 |
5 | 5 | #include <libvirt/libvirt.h> |
6 | 6 | #include <libvirt-glib/libvirt-glib.h> |
7 | 7 | |
8 | #define DEBUG0(fmt) printf("%s:%d :: " fmt "\n", __FUNCTION__, __LINE__) | |
9 | #define DEBUG(fmt, ...) printf("%s:%d: " fmt "\n", __FUNCTION__, __LINE__, __VA_ARGS__) | |
10 | 8 | #define STREQ(a,b) (strcmp((a),(b)) == 0) |
11 | 9 | |
12 | 10 | #ifndef ATTRIBUTE_UNUSED |
170 | 168 | return -1; |
171 | 169 | } |
172 | 170 | |
173 | DEBUG0("Registering domain event cbs"); | |
171 | g_debug("Registering domain event cbs"); | |
174 | 172 | |
175 | 173 | /* Add 2 callbacks to prove this works with more than just one */ |
176 | 174 | virConnectDomainEventRegister(dconn, myDomainEventCallback1, NULL, NULL); |
184 | 182 | printf("done\n"); |
185 | 183 | return 0; |
186 | 184 | } |
187 |
0 | 0 | SUBDIRS = . tests |
1 | 1 | |
2 | EXTRA_DIST = libvirt-gconfig.sym | |
2 | EXTRA_DIST = \ | |
3 | libvirt-gconfig.sym \ | |
4 | libvirt-gconfig-enum-types.h.template \ | |
5 | libvirt-gconfig-enum-types.c.template | |
3 | 6 | |
4 | 7 | lib_LTLIBRARIES = libvirt-gconfig-1.0.la |
5 | 8 | |
6 | 9 | GCONFIG_HEADER_FILES = \ |
7 | 10 | libvirt-gconfig.h \ |
11 | libvirt-gconfig-main.h \ | |
8 | 12 | libvirt-gconfig-object.h \ |
9 | 13 | libvirt-gconfig-capabilities.h \ |
10 | 14 | libvirt-gconfig-domain.h \ |
15 | libvirt-gconfig-domain-channel.h \ | |
16 | libvirt-gconfig-domain-chardev.h \ | |
17 | libvirt-gconfig-domain-chardev-source.h \ | |
18 | libvirt-gconfig-domain-chardev-source-pty.h \ | |
19 | libvirt-gconfig-domain-clock.h \ | |
20 | libvirt-gconfig-domain-console.h \ | |
21 | libvirt-gconfig-domain-device.h \ | |
22 | libvirt-gconfig-domain-disk.h \ | |
23 | libvirt-gconfig-domain-filesys.h \ | |
24 | libvirt-gconfig-domain-graphics.h \ | |
25 | libvirt-gconfig-domain-graphics-sdl.h \ | |
26 | libvirt-gconfig-domain-graphics-spice.h \ | |
27 | libvirt-gconfig-domain-graphics-vnc.h \ | |
28 | libvirt-gconfig-domain-input.h \ | |
29 | libvirt-gconfig-domain-interface.h \ | |
30 | libvirt-gconfig-domain-interface-bridge.h \ | |
31 | libvirt-gconfig-domain-interface-network.h \ | |
32 | libvirt-gconfig-domain-interface-user.h \ | |
33 | libvirt-gconfig-domain-memballoon.h \ | |
34 | libvirt-gconfig-domain-os.h \ | |
35 | libvirt-gconfig-domain-parallel.h \ | |
36 | libvirt-gconfig-domain-seclabel.h \ | |
37 | libvirt-gconfig-domain-serial.h \ | |
11 | 38 | libvirt-gconfig-domain-snapshot.h \ |
39 | libvirt-gconfig-domain-sound.h \ | |
40 | libvirt-gconfig-domain-timer.h \ | |
41 | libvirt-gconfig-domain-video.h \ | |
12 | 42 | libvirt-gconfig-helpers.h \ |
13 | 43 | libvirt-gconfig-interface.h \ |
14 | 44 | libvirt-gconfig-network.h \ |
15 | 45 | libvirt-gconfig-network-filter.h \ |
16 | 46 | libvirt-gconfig-node-device.h \ |
17 | 47 | libvirt-gconfig-secret.h \ |
48 | libvirt-gconfig-storage-permissions.h \ | |
18 | 49 | libvirt-gconfig-storage-pool.h \ |
19 | libvirt-gconfig-storage-vol.h | |
50 | libvirt-gconfig-storage-pool-source.h \ | |
51 | libvirt-gconfig-storage-pool-target.h \ | |
52 | libvirt-gconfig-storage-vol.h \ | |
53 | libvirt-gconfig-storage-vol-backing-store.h \ | |
54 | libvirt-gconfig-storage-vol-target.h | |
20 | 55 | noinst_HEADERS = \ |
21 | libvirt-gconfig-helpers-private.h | |
56 | libvirt-gconfig-private.h \ | |
57 | libvirt-gconfig-domain-device-private.h \ | |
58 | libvirt-gconfig-helpers-private.h \ | |
59 | libvirt-gconfig-object-private.h \ | |
60 | libvirt-gconfig-xml-doc.h | |
22 | 61 | GCONFIG_SOURCE_FILES = \ |
23 | 62 | libvirt-gconfig-object.c \ |
63 | libvirt-gconfig-main.c \ | |
24 | 64 | libvirt-gconfig-capabilities.c \ |
25 | 65 | libvirt-gconfig-domain.c \ |
66 | libvirt-gconfig-domain-channel.c \ | |
67 | libvirt-gconfig-domain-chardev.c \ | |
68 | libvirt-gconfig-domain-chardev-source.c \ | |
69 | libvirt-gconfig-domain-chardev-source-pty.c \ | |
70 | libvirt-gconfig-domain-clock.c \ | |
71 | libvirt-gconfig-domain-console.c \ | |
72 | libvirt-gconfig-domain-device.c \ | |
73 | libvirt-gconfig-domain-disk.c \ | |
74 | libvirt-gconfig-domain-filesys.c \ | |
75 | libvirt-gconfig-domain-graphics.c \ | |
76 | libvirt-gconfig-domain-graphics-sdl.c \ | |
77 | libvirt-gconfig-domain-graphics-spice.c \ | |
78 | libvirt-gconfig-domain-graphics-vnc.c \ | |
79 | libvirt-gconfig-domain-input.c \ | |
80 | libvirt-gconfig-domain-interface.c \ | |
81 | libvirt-gconfig-domain-interface-bridge.c \ | |
82 | libvirt-gconfig-domain-interface-network.c \ | |
83 | libvirt-gconfig-domain-interface-user.c \ | |
84 | libvirt-gconfig-domain-memballoon.c \ | |
85 | libvirt-gconfig-domain-os.c \ | |
86 | libvirt-gconfig-domain-parallel.c \ | |
87 | libvirt-gconfig-domain-seclabel.c \ | |
88 | libvirt-gconfig-domain-serial.c \ | |
26 | 89 | libvirt-gconfig-domain-snapshot.c \ |
90 | libvirt-gconfig-domain-sound.c \ | |
91 | libvirt-gconfig-domain-timer.c \ | |
92 | libvirt-gconfig-domain-video.c \ | |
27 | 93 | libvirt-gconfig-helpers.c \ |
28 | 94 | libvirt-gconfig-interface.c \ |
29 | 95 | libvirt-gconfig-network.c \ |
30 | 96 | libvirt-gconfig-network-filter.c \ |
31 | 97 | libvirt-gconfig-node-device.c \ |
32 | 98 | libvirt-gconfig-secret.c \ |
99 | libvirt-gconfig-storage-permissions.c \ | |
33 | 100 | libvirt-gconfig-storage-pool.c \ |
34 | libvirt-gconfig-storage-vol.c | |
101 | libvirt-gconfig-storage-pool-source.c \ | |
102 | libvirt-gconfig-storage-pool-target.c \ | |
103 | libvirt-gconfig-storage-vol.c \ | |
104 | libvirt-gconfig-storage-vol-backing-store.c \ | |
105 | libvirt-gconfig-storage-vol-target.c \ | |
106 | libvirt-gconfig-xml-doc.c | |
35 | 107 | |
36 | 108 | libvirt_gconfig_1_0_ladir = $(includedir)/libvirt-gconfig-1.0/libvirt-gconfig |
37 | 109 | libvirt_gconfig_1_0_la_HEADERS = \ |
38 | 110 | $(GCONFIG_HEADER_FILES) |
111 | nodist_libvirt_gconfig_1_0_la_HEADERS = \ | |
112 | $(builddir)/libvirt-gconfig-enum-types.h | |
39 | 113 | libvirt_gconfig_1_0_la_SOURCES = \ |
40 | 114 | $(libvirt_gconfig_1_0_la_HEADERS) \ |
41 | 115 | $(GCONFIG_SOURCE_FILES) |
116 | nodist_libvirt_gconfig_1_0_la_SOURCES = \ | |
117 | $(builddir)/libvirt-gconfig-enum-types.c | |
42 | 118 | libvirt_gconfig_1_0_la_CFLAGS = \ |
119 | -DG_LOG_DOMAIN="\"Libvirt.GConfig\"" \ | |
43 | 120 | -DDATADIR="\"$(datadir)\"" \ |
44 | 121 | -DLIBVIRT_GCONFIG_BUILD \ |
45 | 122 | $(COVERAGE_CFLAGS) \ |
59 | 136 | -Wl,--version-script=$(srcdir)/libvirt-gconfig.sym \ |
60 | 137 | -version-info $(LIBVIRT_GLIB_VERSION_INFO) |
61 | 138 | |
139 | BUILT_SOURCES = \ | |
140 | libvirt-gconfig-enum-types.c \ | |
141 | libvirt-gconfig-enum-types.h | |
142 | ||
143 | CLEANFILES = $(BUILT_SOURCES) | |
144 | ||
145 | libvirt-gconfig-enum-types.h: $(GCONFIG_HEADER_FILES) libvirt-gconfig-enum-types.h.template | |
146 | $(AM_V_GEN) ( $(GLIB_MKENUMS) --template $(srcdir)/libvirt-gconfig-enum-types.h.template $(GCONFIG_HEADER_FILES:%=$(srcdir)/%) ) | \ | |
147 | sed -e "s/G_TYPE_VIR_CONFIG/GVIR_CONFIG_TYPE/" -e "s/g_vir/gvir/" > libvirt-gconfig-enum-types.h | |
148 | ||
149 | libvirt-gconfig-enum-types.c: $(GCONFIG_HEADER_FILES) libvirt-gconfig-enum-types.c.template | |
150 | $(AM_V_GEN) ( $(GLIB_MKENUMS) --template $(srcdir)/libvirt-gconfig-enum-types.c.template $(GCONFIG_HEADER_FILES:%=$(srcdir)/%) ) | \ | |
151 | sed -e "s/G_TYPE_VIR_CONFIG/GVIR_CONFIG_TYPE/" -e "s/g_vir/gvir/" > libvirt-gconfig-enum-types.c | |
152 | ||
62 | 153 | if WITH_GOBJECT_INTROSPECTION |
63 | 154 | |
64 | 155 | LibvirtGConfig-1.0.gir: libvirt-gconfig-1.0.la $(G_IR_SCANNER) Makefile.am |
69 | 160 | --nsversion 1.0 \ |
70 | 161 | --include GObject-2.0 \ |
71 | 162 | --identifier-prefix=GVirConfig \ |
72 | --symbol-prefix=gvir \ | |
163 | --symbol-prefix=gvir_config \ | |
73 | 164 | --library=$(builddir)/libvirt-gconfig-1.0.la \ |
74 | 165 | --output $@ \ |
166 | -I$(top_builddir) \ | |
75 | 167 | -I$(top_srcdir) \ |
76 | -I$(top_builddir) \ | |
77 | $(LIBXML2_CFLAGS) \ | |
78 | 168 | --verbose \ |
79 | --pkg=gobject-2.0 \ | |
80 | 169 | --c-include="libvirt-gconfig/libvirt-gconfig.h" \ |
170 | --pkg=libxml-2.0 \ | |
81 | 171 | --pkg-export=libvirt-gconfig-1.0 \ |
82 | $(srcdir)/libvirt-gconfig.h \ | |
172 | $(srcdir)/libvirt-gconfig.h \ | |
83 | 173 | $(GCONFIG_SOURCE_FILES:%=$(srcdir)/%) \ |
84 | $(GCONFIG_HEADER_FILES:%=$(srcdir)/%) | |
174 | $(GCONFIG_HEADER_FILES:%=$(srcdir)/%) \ | |
175 | $(builddir)/libvirt-gconfig-enum-types.c \ | |
176 | $(builddir)/libvirt-gconfig-enum-types.h | |
177 | ||
85 | 178 | |
86 | 179 | girdir = $(datadir)/gir-1.0 |
87 | 180 | gir_DATA = LibvirtGConfig-1.0.gir |
95 | 188 | --includedir=$(girdir) \ |
96 | 189 | -o $@ $< |
97 | 190 | |
98 | CLEANFILES = $(gir_DATA) $(typelibs_DATA) | |
191 | CLEANFILES += $(gir_DATA) $(typelibs_DATA) | |
99 | 192 | |
100 | 193 | endif # WITH_GOBJECT_INTROSPECTION |
35 | 35 | POST_UNINSTALL = : |
36 | 36 | build_triplet = @build@ |
37 | 37 | host_triplet = @host@ |
38 | @WITH_GOBJECT_INTROSPECTION_TRUE@am__append_1 = $(gir_DATA) $(typelibs_DATA) | |
38 | 39 | subdir = libvirt-gconfig |
39 | 40 | DIST_COMMON = $(libvirt_gconfig_1_0_la_HEADERS) $(noinst_HEADERS) \ |
40 | 41 | $(srcdir)/Makefile.am $(srcdir)/Makefile.in |
70 | 71 | sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' |
71 | 72 | am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(girdir)" \ |
72 | 73 | "$(DESTDIR)$(typelibsdir)" \ |
74 | "$(DESTDIR)$(libvirt_gconfig_1_0_ladir)" \ | |
73 | 75 | "$(DESTDIR)$(libvirt_gconfig_1_0_ladir)" |
74 | 76 | LTLIBRARIES = $(lib_LTLIBRARIES) |
75 | 77 | am__DEPENDENCIES_1 = |
76 | 78 | am__objects_1 = |
77 | 79 | am__objects_2 = $(am__objects_1) |
78 | 80 | am__objects_3 = libvirt_gconfig_1_0_la-libvirt-gconfig-object.lo \ |
81 | libvirt_gconfig_1_0_la-libvirt-gconfig-main.lo \ | |
79 | 82 | libvirt_gconfig_1_0_la-libvirt-gconfig-capabilities.lo \ |
80 | 83 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain.lo \ |
84 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-channel.lo \ | |
85 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-chardev.lo \ | |
86 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-chardev-source.lo \ | |
87 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-chardev-source-pty.lo \ | |
88 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-clock.lo \ | |
89 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-console.lo \ | |
90 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-device.lo \ | |
91 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-disk.lo \ | |
92 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-filesys.lo \ | |
93 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-graphics.lo \ | |
94 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-graphics-sdl.lo \ | |
95 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-graphics-spice.lo \ | |
96 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-graphics-vnc.lo \ | |
97 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-input.lo \ | |
98 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-interface.lo \ | |
99 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-interface-bridge.lo \ | |
100 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-interface-network.lo \ | |
101 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-interface-user.lo \ | |
102 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-memballoon.lo \ | |
103 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-os.lo \ | |
104 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-parallel.lo \ | |
105 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-seclabel.lo \ | |
106 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-serial.lo \ | |
81 | 107 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-snapshot.lo \ |
108 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-sound.lo \ | |
109 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-timer.lo \ | |
110 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-video.lo \ | |
82 | 111 | libvirt_gconfig_1_0_la-libvirt-gconfig-helpers.lo \ |
83 | 112 | libvirt_gconfig_1_0_la-libvirt-gconfig-interface.lo \ |
84 | 113 | libvirt_gconfig_1_0_la-libvirt-gconfig-network.lo \ |
85 | 114 | libvirt_gconfig_1_0_la-libvirt-gconfig-network-filter.lo \ |
86 | 115 | libvirt_gconfig_1_0_la-libvirt-gconfig-node-device.lo \ |
87 | 116 | libvirt_gconfig_1_0_la-libvirt-gconfig-secret.lo \ |
117 | libvirt_gconfig_1_0_la-libvirt-gconfig-storage-permissions.lo \ | |
88 | 118 | libvirt_gconfig_1_0_la-libvirt-gconfig-storage-pool.lo \ |
89 | libvirt_gconfig_1_0_la-libvirt-gconfig-storage-vol.lo | |
119 | libvirt_gconfig_1_0_la-libvirt-gconfig-storage-pool-source.lo \ | |
120 | libvirt_gconfig_1_0_la-libvirt-gconfig-storage-pool-target.lo \ | |
121 | libvirt_gconfig_1_0_la-libvirt-gconfig-storage-vol.lo \ | |
122 | libvirt_gconfig_1_0_la-libvirt-gconfig-storage-vol-backing-store.lo \ | |
123 | libvirt_gconfig_1_0_la-libvirt-gconfig-storage-vol-target.lo \ | |
124 | libvirt_gconfig_1_0_la-libvirt-gconfig-xml-doc.lo | |
90 | 125 | am_libvirt_gconfig_1_0_la_OBJECTS = $(am__objects_2) $(am__objects_3) |
91 | libvirt_gconfig_1_0_la_OBJECTS = $(am_libvirt_gconfig_1_0_la_OBJECTS) | |
126 | nodist_libvirt_gconfig_1_0_la_OBJECTS = \ | |
127 | libvirt_gconfig_1_0_la-libvirt-gconfig-enum-types.lo | |
128 | libvirt_gconfig_1_0_la_OBJECTS = $(am_libvirt_gconfig_1_0_la_OBJECTS) \ | |
129 | $(nodist_libvirt_gconfig_1_0_la_OBJECTS) | |
92 | 130 | AM_V_lt = $(am__v_lt_$(V)) |
93 | 131 | am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) |
94 | 132 | am__v_lt_0 = --silent |
122 | 160 | AM_V_GEN = $(am__v_GEN_$(V)) |
123 | 161 | am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) |
124 | 162 | am__v_GEN_0 = @echo " GEN " $@; |
125 | SOURCES = $(libvirt_gconfig_1_0_la_SOURCES) | |
163 | SOURCES = $(libvirt_gconfig_1_0_la_SOURCES) \ | |
164 | $(nodist_libvirt_gconfig_1_0_la_SOURCES) | |
126 | 165 | DIST_SOURCES = $(libvirt_gconfig_1_0_la_SOURCES) |
127 | 166 | RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ |
128 | 167 | html-recursive info-recursive install-data-recursive \ |
132 | 171 | installcheck-recursive installdirs-recursive pdf-recursive \ |
133 | 172 | ps-recursive uninstall-recursive |
134 | 173 | DATA = $(gir_DATA) $(typelibs_DATA) |
135 | HEADERS = $(libvirt_gconfig_1_0_la_HEADERS) $(noinst_HEADERS) | |
174 | HEADERS = $(libvirt_gconfig_1_0_la_HEADERS) \ | |
175 | $(nodist_libvirt_gconfig_1_0_la_HEADERS) $(noinst_HEADERS) | |
136 | 176 | RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ |
137 | 177 | distclean-recursive maintainer-clean-recursive |
138 | 178 | AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ |
203 | 243 | GIO2_LIBS = @GIO2_LIBS@ |
204 | 244 | GLIB2_CFLAGS = @GLIB2_CFLAGS@ |
205 | 245 | GLIB2_LIBS = @GLIB2_LIBS@ |
246 | GLIB_MKENUMS = @GLIB_MKENUMS@ | |
206 | 247 | GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ |
207 | 248 | GOBJECT2_LIBS = @GOBJECT2_LIBS@ |
208 | 249 | GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@ |
211 | 252 | GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ |
212 | 253 | GTHREAD2_LIBS = @GTHREAD2_LIBS@ |
213 | 254 | GTKDOC_CHECK = @GTKDOC_CHECK@ |
255 | GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ | |
256 | GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ | |
214 | 257 | GTKDOC_MKPDF = @GTKDOC_MKPDF@ |
215 | 258 | GTKDOC_REBASE = @GTKDOC_REBASE@ |
216 | 259 | G_IR_COMPILER = @G_IR_COMPILER@ |
326 | 369 | top_builddir = @top_builddir@ |
327 | 370 | top_srcdir = @top_srcdir@ |
328 | 371 | SUBDIRS = . tests |
329 | EXTRA_DIST = libvirt-gconfig.sym | |
372 | EXTRA_DIST = \ | |
373 | libvirt-gconfig.sym \ | |
374 | libvirt-gconfig-enum-types.h.template \ | |
375 | libvirt-gconfig-enum-types.c.template | |
376 | ||
330 | 377 | lib_LTLIBRARIES = libvirt-gconfig-1.0.la |
331 | 378 | GCONFIG_HEADER_FILES = \ |
332 | 379 | libvirt-gconfig.h \ |
380 | libvirt-gconfig-main.h \ | |
333 | 381 | libvirt-gconfig-object.h \ |
334 | 382 | libvirt-gconfig-capabilities.h \ |
335 | 383 | libvirt-gconfig-domain.h \ |
384 | libvirt-gconfig-domain-channel.h \ | |
385 | libvirt-gconfig-domain-chardev.h \ | |
386 | libvirt-gconfig-domain-chardev-source.h \ | |
387 | libvirt-gconfig-domain-chardev-source-pty.h \ | |
388 | libvirt-gconfig-domain-clock.h \ | |
389 | libvirt-gconfig-domain-console.h \ | |
390 | libvirt-gconfig-domain-device.h \ | |
391 | libvirt-gconfig-domain-disk.h \ | |
392 | libvirt-gconfig-domain-filesys.h \ | |
393 | libvirt-gconfig-domain-graphics.h \ | |
394 | libvirt-gconfig-domain-graphics-sdl.h \ | |
395 | libvirt-gconfig-domain-graphics-spice.h \ | |
396 | libvirt-gconfig-domain-graphics-vnc.h \ | |
397 | libvirt-gconfig-domain-input.h \ | |
398 | libvirt-gconfig-domain-interface.h \ | |
399 | libvirt-gconfig-domain-interface-bridge.h \ | |
400 | libvirt-gconfig-domain-interface-network.h \ | |
401 | libvirt-gconfig-domain-interface-user.h \ | |
402 | libvirt-gconfig-domain-memballoon.h \ | |
403 | libvirt-gconfig-domain-os.h \ | |
404 | libvirt-gconfig-domain-parallel.h \ | |
405 | libvirt-gconfig-domain-seclabel.h \ | |
406 | libvirt-gconfig-domain-serial.h \ | |
336 | 407 | libvirt-gconfig-domain-snapshot.h \ |
408 | libvirt-gconfig-domain-sound.h \ | |
409 | libvirt-gconfig-domain-timer.h \ | |
410 | libvirt-gconfig-domain-video.h \ | |
337 | 411 | libvirt-gconfig-helpers.h \ |
338 | 412 | libvirt-gconfig-interface.h \ |
339 | 413 | libvirt-gconfig-network.h \ |
340 | 414 | libvirt-gconfig-network-filter.h \ |
341 | 415 | libvirt-gconfig-node-device.h \ |
342 | 416 | libvirt-gconfig-secret.h \ |
417 | libvirt-gconfig-storage-permissions.h \ | |
343 | 418 | libvirt-gconfig-storage-pool.h \ |
344 | libvirt-gconfig-storage-vol.h | |
419 | libvirt-gconfig-storage-pool-source.h \ | |
420 | libvirt-gconfig-storage-pool-target.h \ | |
421 | libvirt-gconfig-storage-vol.h \ | |
422 | libvirt-gconfig-storage-vol-backing-store.h \ | |
423 | libvirt-gconfig-storage-vol-target.h | |
345 | 424 | |
346 | 425 | noinst_HEADERS = \ |
347 | libvirt-gconfig-helpers-private.h | |
426 | libvirt-gconfig-private.h \ | |
427 | libvirt-gconfig-domain-device-private.h \ | |
428 | libvirt-gconfig-helpers-private.h \ | |
429 | libvirt-gconfig-object-private.h \ | |
430 | libvirt-gconfig-xml-doc.h | |
348 | 431 | |
349 | 432 | GCONFIG_SOURCE_FILES = \ |
350 | 433 | libvirt-gconfig-object.c \ |
434 | libvirt-gconfig-main.c \ | |
351 | 435 | libvirt-gconfig-capabilities.c \ |
352 | 436 | libvirt-gconfig-domain.c \ |
437 | libvirt-gconfig-domain-channel.c \ | |
438 | libvirt-gconfig-domain-chardev.c \ | |
439 | libvirt-gconfig-domain-chardev-source.c \ | |
440 | libvirt-gconfig-domain-chardev-source-pty.c \ | |
441 | libvirt-gconfig-domain-clock.c \ | |
442 | libvirt-gconfig-domain-console.c \ | |
443 | libvirt-gconfig-domain-device.c \ | |
444 | libvirt-gconfig-domain-disk.c \ | |
445 | libvirt-gconfig-domain-filesys.c \ | |
446 | libvirt-gconfig-domain-graphics.c \ | |
447 | libvirt-gconfig-domain-graphics-sdl.c \ | |
448 | libvirt-gconfig-domain-graphics-spice.c \ | |
449 | libvirt-gconfig-domain-graphics-vnc.c \ | |
450 | libvirt-gconfig-domain-input.c \ | |
451 | libvirt-gconfig-domain-interface.c \ | |
452 | libvirt-gconfig-domain-interface-bridge.c \ | |
453 | libvirt-gconfig-domain-interface-network.c \ | |
454 | libvirt-gconfig-domain-interface-user.c \ | |
455 | libvirt-gconfig-domain-memballoon.c \ | |
456 | libvirt-gconfig-domain-os.c \ | |
457 | libvirt-gconfig-domain-parallel.c \ | |
458 | libvirt-gconfig-domain-seclabel.c \ | |
459 | libvirt-gconfig-domain-serial.c \ | |
353 | 460 | libvirt-gconfig-domain-snapshot.c \ |
461 | libvirt-gconfig-domain-sound.c \ | |
462 | libvirt-gconfig-domain-timer.c \ | |
463 | libvirt-gconfig-domain-video.c \ | |
354 | 464 | libvirt-gconfig-helpers.c \ |
355 | 465 | libvirt-gconfig-interface.c \ |
356 | 466 | libvirt-gconfig-network.c \ |
357 | 467 | libvirt-gconfig-network-filter.c \ |
358 | 468 | libvirt-gconfig-node-device.c \ |
359 | 469 | libvirt-gconfig-secret.c \ |
470 | libvirt-gconfig-storage-permissions.c \ | |
360 | 471 | libvirt-gconfig-storage-pool.c \ |
361 | libvirt-gconfig-storage-vol.c | |
472 | libvirt-gconfig-storage-pool-source.c \ | |
473 | libvirt-gconfig-storage-pool-target.c \ | |
474 | libvirt-gconfig-storage-vol.c \ | |
475 | libvirt-gconfig-storage-vol-backing-store.c \ | |
476 | libvirt-gconfig-storage-vol-target.c \ | |
477 | libvirt-gconfig-xml-doc.c | |
362 | 478 | |
363 | 479 | libvirt_gconfig_1_0_ladir = $(includedir)/libvirt-gconfig-1.0/libvirt-gconfig |
364 | 480 | libvirt_gconfig_1_0_la_HEADERS = \ |
365 | 481 | $(GCONFIG_HEADER_FILES) |
366 | 482 | |
483 | nodist_libvirt_gconfig_1_0_la_HEADERS = \ | |
484 | $(builddir)/libvirt-gconfig-enum-types.h | |
485 | ||
367 | 486 | libvirt_gconfig_1_0_la_SOURCES = \ |
368 | 487 | $(libvirt_gconfig_1_0_la_HEADERS) \ |
369 | 488 | $(GCONFIG_SOURCE_FILES) |
370 | 489 | |
490 | nodist_libvirt_gconfig_1_0_la_SOURCES = \ | |
491 | $(builddir)/libvirt-gconfig-enum-types.c | |
492 | ||
371 | 493 | libvirt_gconfig_1_0_la_CFLAGS = \ |
494 | -DG_LOG_DOMAIN="\"Libvirt.GConfig\"" \ | |
372 | 495 | -DDATADIR="\"$(datadir)\"" \ |
373 | 496 | -DLIBVIRT_GCONFIG_BUILD \ |
374 | 497 | $(COVERAGE_CFLAGS) \ |
391 | 514 | -Wl,--version-script=$(srcdir)/libvirt-gconfig.sym \ |
392 | 515 | -version-info $(LIBVIRT_GLIB_VERSION_INFO) |
393 | 516 | |
517 | BUILT_SOURCES = \ | |
518 | libvirt-gconfig-enum-types.c \ | |
519 | libvirt-gconfig-enum-types.h | |
520 | ||
521 | CLEANFILES = $(BUILT_SOURCES) $(am__append_1) | |
394 | 522 | @WITH_GOBJECT_INTROSPECTION_TRUE@girdir = $(datadir)/gir-1.0 |
395 | 523 | @WITH_GOBJECT_INTROSPECTION_TRUE@gir_DATA = LibvirtGConfig-1.0.gir |
396 | 524 | @WITH_GOBJECT_INTROSPECTION_TRUE@typelibsdir = $(libdir)/girepository-1.0 |
397 | 525 | @WITH_GOBJECT_INTROSPECTION_TRUE@typelibs_DATA = LibvirtGConfig-1.0.typelib |
398 | @WITH_GOBJECT_INTROSPECTION_TRUE@CLEANFILES = $(gir_DATA) $(typelibs_DATA) | |
399 | all: all-recursive | |
526 | all: $(BUILT_SOURCES) | |
527 | $(MAKE) $(AM_MAKEFLAGS) all-recursive | |
400 | 528 | |
401 | 529 | .SUFFIXES: |
402 | 530 | .SUFFIXES: .c .lo .o .obj |
471 | 599 | -rm -f *.tab.c |
472 | 600 | |
473 | 601 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-capabilities.Plo@am__quote@ |
602 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-channel.Plo@am__quote@ | |
603 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-chardev-source-pty.Plo@am__quote@ | |
604 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-chardev-source.Plo@am__quote@ | |
605 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-chardev.Plo@am__quote@ | |
606 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-clock.Plo@am__quote@ | |
607 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-console.Plo@am__quote@ | |
608 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-device.Plo@am__quote@ | |
609 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-disk.Plo@am__quote@ | |
610 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-filesys.Plo@am__quote@ | |
611 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-graphics-sdl.Plo@am__quote@ | |
612 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-graphics-spice.Plo@am__quote@ | |
613 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-graphics-vnc.Plo@am__quote@ | |
614 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-graphics.Plo@am__quote@ | |
615 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-input.Plo@am__quote@ | |
616 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-interface-bridge.Plo@am__quote@ | |
617 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-interface-network.Plo@am__quote@ | |
618 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-interface-user.Plo@am__quote@ | |
619 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-interface.Plo@am__quote@ | |
620 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-memballoon.Plo@am__quote@ | |
621 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-os.Plo@am__quote@ | |
622 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-parallel.Plo@am__quote@ | |
623 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-seclabel.Plo@am__quote@ | |
624 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-serial.Plo@am__quote@ | |
474 | 625 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-snapshot.Plo@am__quote@ |
626 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-sound.Plo@am__quote@ | |
627 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-timer.Plo@am__quote@ | |
628 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-video.Plo@am__quote@ | |
475 | 629 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain.Plo@am__quote@ |
630 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-enum-types.Plo@am__quote@ | |
476 | 631 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-helpers.Plo@am__quote@ |
477 | 632 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-interface.Plo@am__quote@ |
633 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-main.Plo@am__quote@ | |
478 | 634 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-network-filter.Plo@am__quote@ |
479 | 635 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-network.Plo@am__quote@ |
480 | 636 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-node-device.Plo@am__quote@ |
481 | 637 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-object.Plo@am__quote@ |
482 | 638 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-secret.Plo@am__quote@ |
639 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-storage-permissions.Plo@am__quote@ | |
640 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-storage-pool-source.Plo@am__quote@ | |
641 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-storage-pool-target.Plo@am__quote@ | |
483 | 642 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-storage-pool.Plo@am__quote@ |
643 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-storage-vol-backing-store.Plo@am__quote@ | |
644 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-storage-vol-target.Plo@am__quote@ | |
484 | 645 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-storage-vol.Plo@am__quote@ |
646 | @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-xml-doc.Plo@am__quote@ | |
485 | 647 | |
486 | 648 | .c.o: |
487 | 649 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< |
515 | 677 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ |
516 | 678 | @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-object.lo `test -f 'libvirt-gconfig-object.c' || echo '$(srcdir)/'`libvirt-gconfig-object.c |
517 | 679 | |
680 | libvirt_gconfig_1_0_la-libvirt-gconfig-main.lo: libvirt-gconfig-main.c | |
681 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -MT libvirt_gconfig_1_0_la-libvirt-gconfig-main.lo -MD -MP -MF $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-main.Tpo -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-main.lo `test -f 'libvirt-gconfig-main.c' || echo '$(srcdir)/'`libvirt-gconfig-main.c | |
682 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-main.Tpo $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-main.Plo | |
683 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | |
684 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libvirt-gconfig-main.c' object='libvirt_gconfig_1_0_la-libvirt-gconfig-main.lo' libtool=yes @AMDEPBACKSLASH@ | |
685 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | |
686 | @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-main.lo `test -f 'libvirt-gconfig-main.c' || echo '$(srcdir)/'`libvirt-gconfig-main.c | |
687 | ||
518 | 688 | libvirt_gconfig_1_0_la-libvirt-gconfig-capabilities.lo: libvirt-gconfig-capabilities.c |
519 | 689 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -MT libvirt_gconfig_1_0_la-libvirt-gconfig-capabilities.lo -MD -MP -MF $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-capabilities.Tpo -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-capabilities.lo `test -f 'libvirt-gconfig-capabilities.c' || echo '$(srcdir)/'`libvirt-gconfig-capabilities.c |
520 | 690 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-capabilities.Tpo $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-capabilities.Plo |
531 | 701 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ |
532 | 702 | @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain.lo `test -f 'libvirt-gconfig-domain.c' || echo '$(srcdir)/'`libvirt-gconfig-domain.c |
533 | 703 | |
704 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-channel.lo: libvirt-gconfig-domain-channel.c | |
705 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -MT libvirt_gconfig_1_0_la-libvirt-gconfig-domain-channel.lo -MD -MP -MF $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-channel.Tpo -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-channel.lo `test -f 'libvirt-gconfig-domain-channel.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-channel.c | |
706 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-channel.Tpo $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-channel.Plo | |
707 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | |
708 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libvirt-gconfig-domain-channel.c' object='libvirt_gconfig_1_0_la-libvirt-gconfig-domain-channel.lo' libtool=yes @AMDEPBACKSLASH@ | |
709 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | |
710 | @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-channel.lo `test -f 'libvirt-gconfig-domain-channel.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-channel.c | |
711 | ||
712 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-chardev.lo: libvirt-gconfig-domain-chardev.c | |
713 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -MT libvirt_gconfig_1_0_la-libvirt-gconfig-domain-chardev.lo -MD -MP -MF $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-chardev.Tpo -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-chardev.lo `test -f 'libvirt-gconfig-domain-chardev.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-chardev.c | |
714 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-chardev.Tpo $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-chardev.Plo | |
715 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | |
716 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libvirt-gconfig-domain-chardev.c' object='libvirt_gconfig_1_0_la-libvirt-gconfig-domain-chardev.lo' libtool=yes @AMDEPBACKSLASH@ | |
717 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | |
718 | @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-chardev.lo `test -f 'libvirt-gconfig-domain-chardev.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-chardev.c | |
719 | ||
720 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-chardev-source.lo: libvirt-gconfig-domain-chardev-source.c | |
721 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -MT libvirt_gconfig_1_0_la-libvirt-gconfig-domain-chardev-source.lo -MD -MP -MF $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-chardev-source.Tpo -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-chardev-source.lo `test -f 'libvirt-gconfig-domain-chardev-source.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-chardev-source.c | |
722 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-chardev-source.Tpo $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-chardev-source.Plo | |
723 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | |
724 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libvirt-gconfig-domain-chardev-source.c' object='libvirt_gconfig_1_0_la-libvirt-gconfig-domain-chardev-source.lo' libtool=yes @AMDEPBACKSLASH@ | |
725 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | |
726 | @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-chardev-source.lo `test -f 'libvirt-gconfig-domain-chardev-source.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-chardev-source.c | |
727 | ||
728 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-chardev-source-pty.lo: libvirt-gconfig-domain-chardev-source-pty.c | |
729 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -MT libvirt_gconfig_1_0_la-libvirt-gconfig-domain-chardev-source-pty.lo -MD -MP -MF $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-chardev-source-pty.Tpo -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-chardev-source-pty.lo `test -f 'libvirt-gconfig-domain-chardev-source-pty.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-chardev-source-pty.c | |
730 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-chardev-source-pty.Tpo $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-chardev-source-pty.Plo | |
731 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | |
732 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libvirt-gconfig-domain-chardev-source-pty.c' object='libvirt_gconfig_1_0_la-libvirt-gconfig-domain-chardev-source-pty.lo' libtool=yes @AMDEPBACKSLASH@ | |
733 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | |
734 | @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-chardev-source-pty.lo `test -f 'libvirt-gconfig-domain-chardev-source-pty.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-chardev-source-pty.c | |
735 | ||
736 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-clock.lo: libvirt-gconfig-domain-clock.c | |
737 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -MT libvirt_gconfig_1_0_la-libvirt-gconfig-domain-clock.lo -MD -MP -MF $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-clock.Tpo -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-clock.lo `test -f 'libvirt-gconfig-domain-clock.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-clock.c | |
738 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-clock.Tpo $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-clock.Plo | |
739 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | |
740 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libvirt-gconfig-domain-clock.c' object='libvirt_gconfig_1_0_la-libvirt-gconfig-domain-clock.lo' libtool=yes @AMDEPBACKSLASH@ | |
741 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | |
742 | @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-clock.lo `test -f 'libvirt-gconfig-domain-clock.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-clock.c | |
743 | ||
744 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-console.lo: libvirt-gconfig-domain-console.c | |
745 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -MT libvirt_gconfig_1_0_la-libvirt-gconfig-domain-console.lo -MD -MP -MF $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-console.Tpo -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-console.lo `test -f 'libvirt-gconfig-domain-console.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-console.c | |
746 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-console.Tpo $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-console.Plo | |
747 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | |
748 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libvirt-gconfig-domain-console.c' object='libvirt_gconfig_1_0_la-libvirt-gconfig-domain-console.lo' libtool=yes @AMDEPBACKSLASH@ | |
749 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | |
750 | @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-console.lo `test -f 'libvirt-gconfig-domain-console.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-console.c | |
751 | ||
752 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-device.lo: libvirt-gconfig-domain-device.c | |
753 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -MT libvirt_gconfig_1_0_la-libvirt-gconfig-domain-device.lo -MD -MP -MF $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-device.Tpo -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-device.lo `test -f 'libvirt-gconfig-domain-device.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-device.c | |
754 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-device.Tpo $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-device.Plo | |
755 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | |
756 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libvirt-gconfig-domain-device.c' object='libvirt_gconfig_1_0_la-libvirt-gconfig-domain-device.lo' libtool=yes @AMDEPBACKSLASH@ | |
757 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | |
758 | @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-device.lo `test -f 'libvirt-gconfig-domain-device.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-device.c | |
759 | ||
760 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-disk.lo: libvirt-gconfig-domain-disk.c | |
761 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -MT libvirt_gconfig_1_0_la-libvirt-gconfig-domain-disk.lo -MD -MP -MF $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-disk.Tpo -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-disk.lo `test -f 'libvirt-gconfig-domain-disk.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-disk.c | |
762 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-disk.Tpo $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-disk.Plo | |
763 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | |
764 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libvirt-gconfig-domain-disk.c' object='libvirt_gconfig_1_0_la-libvirt-gconfig-domain-disk.lo' libtool=yes @AMDEPBACKSLASH@ | |
765 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | |
766 | @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-disk.lo `test -f 'libvirt-gconfig-domain-disk.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-disk.c | |
767 | ||
768 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-filesys.lo: libvirt-gconfig-domain-filesys.c | |
769 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -MT libvirt_gconfig_1_0_la-libvirt-gconfig-domain-filesys.lo -MD -MP -MF $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-filesys.Tpo -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-filesys.lo `test -f 'libvirt-gconfig-domain-filesys.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-filesys.c | |
770 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-filesys.Tpo $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-filesys.Plo | |
771 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | |
772 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libvirt-gconfig-domain-filesys.c' object='libvirt_gconfig_1_0_la-libvirt-gconfig-domain-filesys.lo' libtool=yes @AMDEPBACKSLASH@ | |
773 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | |
774 | @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-filesys.lo `test -f 'libvirt-gconfig-domain-filesys.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-filesys.c | |
775 | ||
776 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-graphics.lo: libvirt-gconfig-domain-graphics.c | |
777 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -MT libvirt_gconfig_1_0_la-libvirt-gconfig-domain-graphics.lo -MD -MP -MF $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-graphics.Tpo -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-graphics.lo `test -f 'libvirt-gconfig-domain-graphics.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-graphics.c | |
778 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-graphics.Tpo $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-graphics.Plo | |
779 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | |
780 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libvirt-gconfig-domain-graphics.c' object='libvirt_gconfig_1_0_la-libvirt-gconfig-domain-graphics.lo' libtool=yes @AMDEPBACKSLASH@ | |
781 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | |
782 | @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-graphics.lo `test -f 'libvirt-gconfig-domain-graphics.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-graphics.c | |
783 | ||
784 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-graphics-sdl.lo: libvirt-gconfig-domain-graphics-sdl.c | |
785 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -MT libvirt_gconfig_1_0_la-libvirt-gconfig-domain-graphics-sdl.lo -MD -MP -MF $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-graphics-sdl.Tpo -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-graphics-sdl.lo `test -f 'libvirt-gconfig-domain-graphics-sdl.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-graphics-sdl.c | |
786 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-graphics-sdl.Tpo $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-graphics-sdl.Plo | |
787 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | |
788 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libvirt-gconfig-domain-graphics-sdl.c' object='libvirt_gconfig_1_0_la-libvirt-gconfig-domain-graphics-sdl.lo' libtool=yes @AMDEPBACKSLASH@ | |
789 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | |
790 | @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-graphics-sdl.lo `test -f 'libvirt-gconfig-domain-graphics-sdl.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-graphics-sdl.c | |
791 | ||
792 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-graphics-spice.lo: libvirt-gconfig-domain-graphics-spice.c | |
793 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -MT libvirt_gconfig_1_0_la-libvirt-gconfig-domain-graphics-spice.lo -MD -MP -MF $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-graphics-spice.Tpo -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-graphics-spice.lo `test -f 'libvirt-gconfig-domain-graphics-spice.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-graphics-spice.c | |
794 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-graphics-spice.Tpo $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-graphics-spice.Plo | |
795 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | |
796 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libvirt-gconfig-domain-graphics-spice.c' object='libvirt_gconfig_1_0_la-libvirt-gconfig-domain-graphics-spice.lo' libtool=yes @AMDEPBACKSLASH@ | |
797 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | |
798 | @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-graphics-spice.lo `test -f 'libvirt-gconfig-domain-graphics-spice.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-graphics-spice.c | |
799 | ||
800 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-graphics-vnc.lo: libvirt-gconfig-domain-graphics-vnc.c | |
801 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -MT libvirt_gconfig_1_0_la-libvirt-gconfig-domain-graphics-vnc.lo -MD -MP -MF $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-graphics-vnc.Tpo -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-graphics-vnc.lo `test -f 'libvirt-gconfig-domain-graphics-vnc.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-graphics-vnc.c | |
802 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-graphics-vnc.Tpo $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-graphics-vnc.Plo | |
803 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | |
804 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libvirt-gconfig-domain-graphics-vnc.c' object='libvirt_gconfig_1_0_la-libvirt-gconfig-domain-graphics-vnc.lo' libtool=yes @AMDEPBACKSLASH@ | |
805 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | |
806 | @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-graphics-vnc.lo `test -f 'libvirt-gconfig-domain-graphics-vnc.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-graphics-vnc.c | |
807 | ||
808 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-input.lo: libvirt-gconfig-domain-input.c | |
809 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -MT libvirt_gconfig_1_0_la-libvirt-gconfig-domain-input.lo -MD -MP -MF $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-input.Tpo -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-input.lo `test -f 'libvirt-gconfig-domain-input.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-input.c | |
810 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-input.Tpo $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-input.Plo | |
811 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | |
812 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libvirt-gconfig-domain-input.c' object='libvirt_gconfig_1_0_la-libvirt-gconfig-domain-input.lo' libtool=yes @AMDEPBACKSLASH@ | |
813 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | |
814 | @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-input.lo `test -f 'libvirt-gconfig-domain-input.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-input.c | |
815 | ||
816 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-interface.lo: libvirt-gconfig-domain-interface.c | |
817 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -MT libvirt_gconfig_1_0_la-libvirt-gconfig-domain-interface.lo -MD -MP -MF $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-interface.Tpo -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-interface.lo `test -f 'libvirt-gconfig-domain-interface.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-interface.c | |
818 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-interface.Tpo $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-interface.Plo | |
819 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | |
820 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libvirt-gconfig-domain-interface.c' object='libvirt_gconfig_1_0_la-libvirt-gconfig-domain-interface.lo' libtool=yes @AMDEPBACKSLASH@ | |
821 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | |
822 | @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-interface.lo `test -f 'libvirt-gconfig-domain-interface.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-interface.c | |
823 | ||
824 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-interface-bridge.lo: libvirt-gconfig-domain-interface-bridge.c | |
825 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -MT libvirt_gconfig_1_0_la-libvirt-gconfig-domain-interface-bridge.lo -MD -MP -MF $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-interface-bridge.Tpo -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-interface-bridge.lo `test -f 'libvirt-gconfig-domain-interface-bridge.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-interface-bridge.c | |
826 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-interface-bridge.Tpo $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-interface-bridge.Plo | |
827 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | |
828 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libvirt-gconfig-domain-interface-bridge.c' object='libvirt_gconfig_1_0_la-libvirt-gconfig-domain-interface-bridge.lo' libtool=yes @AMDEPBACKSLASH@ | |
829 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | |
830 | @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-interface-bridge.lo `test -f 'libvirt-gconfig-domain-interface-bridge.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-interface-bridge.c | |
831 | ||
832 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-interface-network.lo: libvirt-gconfig-domain-interface-network.c | |
833 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -MT libvirt_gconfig_1_0_la-libvirt-gconfig-domain-interface-network.lo -MD -MP -MF $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-interface-network.Tpo -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-interface-network.lo `test -f 'libvirt-gconfig-domain-interface-network.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-interface-network.c | |
834 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-interface-network.Tpo $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-interface-network.Plo | |
835 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | |
836 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libvirt-gconfig-domain-interface-network.c' object='libvirt_gconfig_1_0_la-libvirt-gconfig-domain-interface-network.lo' libtool=yes @AMDEPBACKSLASH@ | |
837 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | |
838 | @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-interface-network.lo `test -f 'libvirt-gconfig-domain-interface-network.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-interface-network.c | |
839 | ||
840 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-interface-user.lo: libvirt-gconfig-domain-interface-user.c | |
841 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -MT libvirt_gconfig_1_0_la-libvirt-gconfig-domain-interface-user.lo -MD -MP -MF $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-interface-user.Tpo -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-interface-user.lo `test -f 'libvirt-gconfig-domain-interface-user.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-interface-user.c | |
842 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-interface-user.Tpo $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-interface-user.Plo | |
843 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | |
844 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libvirt-gconfig-domain-interface-user.c' object='libvirt_gconfig_1_0_la-libvirt-gconfig-domain-interface-user.lo' libtool=yes @AMDEPBACKSLASH@ | |
845 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | |
846 | @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-interface-user.lo `test -f 'libvirt-gconfig-domain-interface-user.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-interface-user.c | |
847 | ||
848 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-memballoon.lo: libvirt-gconfig-domain-memballoon.c | |
849 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -MT libvirt_gconfig_1_0_la-libvirt-gconfig-domain-memballoon.lo -MD -MP -MF $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-memballoon.Tpo -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-memballoon.lo `test -f 'libvirt-gconfig-domain-memballoon.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-memballoon.c | |
850 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-memballoon.Tpo $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-memballoon.Plo | |
851 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | |
852 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libvirt-gconfig-domain-memballoon.c' object='libvirt_gconfig_1_0_la-libvirt-gconfig-domain-memballoon.lo' libtool=yes @AMDEPBACKSLASH@ | |
853 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | |
854 | @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-memballoon.lo `test -f 'libvirt-gconfig-domain-memballoon.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-memballoon.c | |
855 | ||
856 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-os.lo: libvirt-gconfig-domain-os.c | |
857 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -MT libvirt_gconfig_1_0_la-libvirt-gconfig-domain-os.lo -MD -MP -MF $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-os.Tpo -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-os.lo `test -f 'libvirt-gconfig-domain-os.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-os.c | |
858 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-os.Tpo $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-os.Plo | |
859 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | |
860 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libvirt-gconfig-domain-os.c' object='libvirt_gconfig_1_0_la-libvirt-gconfig-domain-os.lo' libtool=yes @AMDEPBACKSLASH@ | |
861 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | |
862 | @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-os.lo `test -f 'libvirt-gconfig-domain-os.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-os.c | |
863 | ||
864 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-parallel.lo: libvirt-gconfig-domain-parallel.c | |
865 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -MT libvirt_gconfig_1_0_la-libvirt-gconfig-domain-parallel.lo -MD -MP -MF $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-parallel.Tpo -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-parallel.lo `test -f 'libvirt-gconfig-domain-parallel.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-parallel.c | |
866 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-parallel.Tpo $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-parallel.Plo | |
867 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | |
868 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libvirt-gconfig-domain-parallel.c' object='libvirt_gconfig_1_0_la-libvirt-gconfig-domain-parallel.lo' libtool=yes @AMDEPBACKSLASH@ | |
869 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | |
870 | @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-parallel.lo `test -f 'libvirt-gconfig-domain-parallel.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-parallel.c | |
871 | ||
872 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-seclabel.lo: libvirt-gconfig-domain-seclabel.c | |
873 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -MT libvirt_gconfig_1_0_la-libvirt-gconfig-domain-seclabel.lo -MD -MP -MF $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-seclabel.Tpo -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-seclabel.lo `test -f 'libvirt-gconfig-domain-seclabel.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-seclabel.c | |
874 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-seclabel.Tpo $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-seclabel.Plo | |
875 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | |
876 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libvirt-gconfig-domain-seclabel.c' object='libvirt_gconfig_1_0_la-libvirt-gconfig-domain-seclabel.lo' libtool=yes @AMDEPBACKSLASH@ | |
877 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | |
878 | @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-seclabel.lo `test -f 'libvirt-gconfig-domain-seclabel.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-seclabel.c | |
879 | ||
880 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-serial.lo: libvirt-gconfig-domain-serial.c | |
881 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -MT libvirt_gconfig_1_0_la-libvirt-gconfig-domain-serial.lo -MD -MP -MF $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-serial.Tpo -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-serial.lo `test -f 'libvirt-gconfig-domain-serial.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-serial.c | |
882 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-serial.Tpo $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-serial.Plo | |
883 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | |
884 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libvirt-gconfig-domain-serial.c' object='libvirt_gconfig_1_0_la-libvirt-gconfig-domain-serial.lo' libtool=yes @AMDEPBACKSLASH@ | |
885 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | |
886 | @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-serial.lo `test -f 'libvirt-gconfig-domain-serial.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-serial.c | |
887 | ||
534 | 888 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-snapshot.lo: libvirt-gconfig-domain-snapshot.c |
535 | 889 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -MT libvirt_gconfig_1_0_la-libvirt-gconfig-domain-snapshot.lo -MD -MP -MF $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-snapshot.Tpo -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-snapshot.lo `test -f 'libvirt-gconfig-domain-snapshot.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-snapshot.c |
536 | 890 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-snapshot.Tpo $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-snapshot.Plo |
539 | 893 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ |
540 | 894 | @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-snapshot.lo `test -f 'libvirt-gconfig-domain-snapshot.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-snapshot.c |
541 | 895 | |
896 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-sound.lo: libvirt-gconfig-domain-sound.c | |
897 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -MT libvirt_gconfig_1_0_la-libvirt-gconfig-domain-sound.lo -MD -MP -MF $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-sound.Tpo -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-sound.lo `test -f 'libvirt-gconfig-domain-sound.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-sound.c | |
898 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-sound.Tpo $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-sound.Plo | |
899 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | |
900 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libvirt-gconfig-domain-sound.c' object='libvirt_gconfig_1_0_la-libvirt-gconfig-domain-sound.lo' libtool=yes @AMDEPBACKSLASH@ | |
901 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | |
902 | @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-sound.lo `test -f 'libvirt-gconfig-domain-sound.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-sound.c | |
903 | ||
904 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-timer.lo: libvirt-gconfig-domain-timer.c | |
905 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -MT libvirt_gconfig_1_0_la-libvirt-gconfig-domain-timer.lo -MD -MP -MF $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-timer.Tpo -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-timer.lo `test -f 'libvirt-gconfig-domain-timer.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-timer.c | |
906 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-timer.Tpo $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-timer.Plo | |
907 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | |
908 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libvirt-gconfig-domain-timer.c' object='libvirt_gconfig_1_0_la-libvirt-gconfig-domain-timer.lo' libtool=yes @AMDEPBACKSLASH@ | |
909 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | |
910 | @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-timer.lo `test -f 'libvirt-gconfig-domain-timer.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-timer.c | |
911 | ||
912 | libvirt_gconfig_1_0_la-libvirt-gconfig-domain-video.lo: libvirt-gconfig-domain-video.c | |
913 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -MT libvirt_gconfig_1_0_la-libvirt-gconfig-domain-video.lo -MD -MP -MF $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-video.Tpo -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-video.lo `test -f 'libvirt-gconfig-domain-video.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-video.c | |
914 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-video.Tpo $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-domain-video.Plo | |
915 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | |
916 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libvirt-gconfig-domain-video.c' object='libvirt_gconfig_1_0_la-libvirt-gconfig-domain-video.lo' libtool=yes @AMDEPBACKSLASH@ | |
917 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | |
918 | @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-domain-video.lo `test -f 'libvirt-gconfig-domain-video.c' || echo '$(srcdir)/'`libvirt-gconfig-domain-video.c | |
919 | ||
542 | 920 | libvirt_gconfig_1_0_la-libvirt-gconfig-helpers.lo: libvirt-gconfig-helpers.c |
543 | 921 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -MT libvirt_gconfig_1_0_la-libvirt-gconfig-helpers.lo -MD -MP -MF $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-helpers.Tpo -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-helpers.lo `test -f 'libvirt-gconfig-helpers.c' || echo '$(srcdir)/'`libvirt-gconfig-helpers.c |
544 | 922 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-helpers.Tpo $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-helpers.Plo |
587 | 965 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ |
588 | 966 | @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-secret.lo `test -f 'libvirt-gconfig-secret.c' || echo '$(srcdir)/'`libvirt-gconfig-secret.c |
589 | 967 | |
968 | libvirt_gconfig_1_0_la-libvirt-gconfig-storage-permissions.lo: libvirt-gconfig-storage-permissions.c | |
969 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -MT libvirt_gconfig_1_0_la-libvirt-gconfig-storage-permissions.lo -MD -MP -MF $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-storage-permissions.Tpo -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-storage-permissions.lo `test -f 'libvirt-gconfig-storage-permissions.c' || echo '$(srcdir)/'`libvirt-gconfig-storage-permissions.c | |
970 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-storage-permissions.Tpo $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-storage-permissions.Plo | |
971 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | |
972 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libvirt-gconfig-storage-permissions.c' object='libvirt_gconfig_1_0_la-libvirt-gconfig-storage-permissions.lo' libtool=yes @AMDEPBACKSLASH@ | |
973 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | |
974 | @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-storage-permissions.lo `test -f 'libvirt-gconfig-storage-permissions.c' || echo '$(srcdir)/'`libvirt-gconfig-storage-permissions.c | |
975 | ||
590 | 976 | libvirt_gconfig_1_0_la-libvirt-gconfig-storage-pool.lo: libvirt-gconfig-storage-pool.c |
591 | 977 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -MT libvirt_gconfig_1_0_la-libvirt-gconfig-storage-pool.lo -MD -MP -MF $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-storage-pool.Tpo -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-storage-pool.lo `test -f 'libvirt-gconfig-storage-pool.c' || echo '$(srcdir)/'`libvirt-gconfig-storage-pool.c |
592 | 978 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-storage-pool.Tpo $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-storage-pool.Plo |
595 | 981 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ |
596 | 982 | @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-storage-pool.lo `test -f 'libvirt-gconfig-storage-pool.c' || echo '$(srcdir)/'`libvirt-gconfig-storage-pool.c |
597 | 983 | |
984 | libvirt_gconfig_1_0_la-libvirt-gconfig-storage-pool-source.lo: libvirt-gconfig-storage-pool-source.c | |
985 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -MT libvirt_gconfig_1_0_la-libvirt-gconfig-storage-pool-source.lo -MD -MP -MF $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-storage-pool-source.Tpo -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-storage-pool-source.lo `test -f 'libvirt-gconfig-storage-pool-source.c' || echo '$(srcdir)/'`libvirt-gconfig-storage-pool-source.c | |
986 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-storage-pool-source.Tpo $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-storage-pool-source.Plo | |
987 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | |
988 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libvirt-gconfig-storage-pool-source.c' object='libvirt_gconfig_1_0_la-libvirt-gconfig-storage-pool-source.lo' libtool=yes @AMDEPBACKSLASH@ | |
989 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | |
990 | @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-storage-pool-source.lo `test -f 'libvirt-gconfig-storage-pool-source.c' || echo '$(srcdir)/'`libvirt-gconfig-storage-pool-source.c | |
991 | ||
992 | libvirt_gconfig_1_0_la-libvirt-gconfig-storage-pool-target.lo: libvirt-gconfig-storage-pool-target.c | |
993 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -MT libvirt_gconfig_1_0_la-libvirt-gconfig-storage-pool-target.lo -MD -MP -MF $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-storage-pool-target.Tpo -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-storage-pool-target.lo `test -f 'libvirt-gconfig-storage-pool-target.c' || echo '$(srcdir)/'`libvirt-gconfig-storage-pool-target.c | |
994 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-storage-pool-target.Tpo $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-storage-pool-target.Plo | |
995 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | |
996 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libvirt-gconfig-storage-pool-target.c' object='libvirt_gconfig_1_0_la-libvirt-gconfig-storage-pool-target.lo' libtool=yes @AMDEPBACKSLASH@ | |
997 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | |
998 | @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-storage-pool-target.lo `test -f 'libvirt-gconfig-storage-pool-target.c' || echo '$(srcdir)/'`libvirt-gconfig-storage-pool-target.c | |
999 | ||
598 | 1000 | libvirt_gconfig_1_0_la-libvirt-gconfig-storage-vol.lo: libvirt-gconfig-storage-vol.c |
599 | 1001 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -MT libvirt_gconfig_1_0_la-libvirt-gconfig-storage-vol.lo -MD -MP -MF $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-storage-vol.Tpo -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-storage-vol.lo `test -f 'libvirt-gconfig-storage-vol.c' || echo '$(srcdir)/'`libvirt-gconfig-storage-vol.c |
600 | 1002 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-storage-vol.Tpo $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-storage-vol.Plo |
602 | 1004 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libvirt-gconfig-storage-vol.c' object='libvirt_gconfig_1_0_la-libvirt-gconfig-storage-vol.lo' libtool=yes @AMDEPBACKSLASH@ |
603 | 1005 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ |
604 | 1006 | @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-storage-vol.lo `test -f 'libvirt-gconfig-storage-vol.c' || echo '$(srcdir)/'`libvirt-gconfig-storage-vol.c |
1007 | ||
1008 | libvirt_gconfig_1_0_la-libvirt-gconfig-storage-vol-backing-store.lo: libvirt-gconfig-storage-vol-backing-store.c | |
1009 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -MT libvirt_gconfig_1_0_la-libvirt-gconfig-storage-vol-backing-store.lo -MD -MP -MF $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-storage-vol-backing-store.Tpo -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-storage-vol-backing-store.lo `test -f 'libvirt-gconfig-storage-vol-backing-store.c' || echo '$(srcdir)/'`libvirt-gconfig-storage-vol-backing-store.c | |
1010 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-storage-vol-backing-store.Tpo $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-storage-vol-backing-store.Plo | |
1011 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | |
1012 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libvirt-gconfig-storage-vol-backing-store.c' object='libvirt_gconfig_1_0_la-libvirt-gconfig-storage-vol-backing-store.lo' libtool=yes @AMDEPBACKSLASH@ | |
1013 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | |
1014 | @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-storage-vol-backing-store.lo `test -f 'libvirt-gconfig-storage-vol-backing-store.c' || echo '$(srcdir)/'`libvirt-gconfig-storage-vol-backing-store.c | |
1015 | ||
1016 | libvirt_gconfig_1_0_la-libvirt-gconfig-storage-vol-target.lo: libvirt-gconfig-storage-vol-target.c | |
1017 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -MT libvirt_gconfig_1_0_la-libvirt-gconfig-storage-vol-target.lo -MD -MP -MF $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-storage-vol-target.Tpo -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-storage-vol-target.lo `test -f 'libvirt-gconfig-storage-vol-target.c' || echo '$(srcdir)/'`libvirt-gconfig-storage-vol-target.c | |
1018 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-storage-vol-target.Tpo $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-storage-vol-target.Plo | |
1019 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | |
1020 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libvirt-gconfig-storage-vol-target.c' object='libvirt_gconfig_1_0_la-libvirt-gconfig-storage-vol-target.lo' libtool=yes @AMDEPBACKSLASH@ | |
1021 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | |
1022 | @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-storage-vol-target.lo `test -f 'libvirt-gconfig-storage-vol-target.c' || echo '$(srcdir)/'`libvirt-gconfig-storage-vol-target.c | |
1023 | ||
1024 | libvirt_gconfig_1_0_la-libvirt-gconfig-xml-doc.lo: libvirt-gconfig-xml-doc.c | |
1025 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -MT libvirt_gconfig_1_0_la-libvirt-gconfig-xml-doc.lo -MD -MP -MF $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-xml-doc.Tpo -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-xml-doc.lo `test -f 'libvirt-gconfig-xml-doc.c' || echo '$(srcdir)/'`libvirt-gconfig-xml-doc.c | |
1026 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-xml-doc.Tpo $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-xml-doc.Plo | |
1027 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | |
1028 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libvirt-gconfig-xml-doc.c' object='libvirt_gconfig_1_0_la-libvirt-gconfig-xml-doc.lo' libtool=yes @AMDEPBACKSLASH@ | |
1029 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | |
1030 | @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-xml-doc.lo `test -f 'libvirt-gconfig-xml-doc.c' || echo '$(srcdir)/'`libvirt-gconfig-xml-doc.c | |
1031 | ||
1032 | libvirt_gconfig_1_0_la-libvirt-gconfig-enum-types.lo: $(builddir)/libvirt-gconfig-enum-types.c | |
1033 | @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -MT libvirt_gconfig_1_0_la-libvirt-gconfig-enum-types.lo -MD -MP -MF $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-enum-types.Tpo -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-enum-types.lo `test -f '$(builddir)/libvirt-gconfig-enum-types.c' || echo '$(srcdir)/'`$(builddir)/libvirt-gconfig-enum-types.c | |
1034 | @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-enum-types.Tpo $(DEPDIR)/libvirt_gconfig_1_0_la-libvirt-gconfig-enum-types.Plo | |
1035 | @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ | |
1036 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(builddir)/libvirt-gconfig-enum-types.c' object='libvirt_gconfig_1_0_la-libvirt-gconfig-enum-types.lo' libtool=yes @AMDEPBACKSLASH@ | |
1037 | @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ | |
1038 | @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libvirt_gconfig_1_0_la_CFLAGS) $(CFLAGS) -c -o libvirt_gconfig_1_0_la-libvirt-gconfig-enum-types.lo `test -f '$(builddir)/libvirt-gconfig-enum-types.c' || echo '$(srcdir)/'`$(builddir)/libvirt-gconfig-enum-types.c | |
605 | 1039 | |
606 | 1040 | mostlyclean-libtool: |
607 | 1041 | -rm -f *.lo |
664 | 1098 | uninstall-libvirt_gconfig_1_0_laHEADERS: |
665 | 1099 | @$(NORMAL_UNINSTALL) |
666 | 1100 | @list='$(libvirt_gconfig_1_0_la_HEADERS)'; test -n "$(libvirt_gconfig_1_0_ladir)" || list=; \ |
1101 | files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ | |
1102 | test -n "$$files" || exit 0; \ | |
1103 | echo " ( cd '$(DESTDIR)$(libvirt_gconfig_1_0_ladir)' && rm -f" $$files ")"; \ | |
1104 | cd "$(DESTDIR)$(libvirt_gconfig_1_0_ladir)" && rm -f $$files | |
1105 | install-nodist_libvirt_gconfig_1_0_laHEADERS: $(nodist_libvirt_gconfig_1_0_la_HEADERS) | |
1106 | @$(NORMAL_INSTALL) | |
1107 | test -z "$(libvirt_gconfig_1_0_ladir)" || $(MKDIR_P) "$(DESTDIR)$(libvirt_gconfig_1_0_ladir)" | |
1108 | @list='$(nodist_libvirt_gconfig_1_0_la_HEADERS)'; test -n "$(libvirt_gconfig_1_0_ladir)" || list=; \ | |
1109 | for p in $$list; do \ | |
1110 | if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ | |
1111 | echo "$$d$$p"; \ | |
1112 | done | $(am__base_list) | \ | |
1113 | while read files; do \ | |
1114 | echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libvirt_gconfig_1_0_ladir)'"; \ | |
1115 | $(INSTALL_HEADER) $$files "$(DESTDIR)$(libvirt_gconfig_1_0_ladir)" || exit $$?; \ | |
1116 | done | |
1117 | ||
1118 | uninstall-nodist_libvirt_gconfig_1_0_laHEADERS: | |
1119 | @$(NORMAL_UNINSTALL) | |
1120 | @list='$(nodist_libvirt_gconfig_1_0_la_HEADERS)'; test -n "$(libvirt_gconfig_1_0_ladir)" || list=; \ | |
667 | 1121 | files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ |
668 | 1122 | test -n "$$files" || exit 0; \ |
669 | 1123 | echo " ( cd '$(DESTDIR)$(libvirt_gconfig_1_0_ladir)' && rm -f" $$files ")"; \ |
863 | 1317 | fi; \ |
864 | 1318 | done |
865 | 1319 | check-am: all-am |
866 | check: check-recursive | |
1320 | check: $(BUILT_SOURCES) | |
1321 | $(MAKE) $(AM_MAKEFLAGS) check-recursive | |
867 | 1322 | all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS) |
868 | 1323 | installdirs: installdirs-recursive |
869 | 1324 | installdirs-am: |
870 | for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(girdir)" "$(DESTDIR)$(typelibsdir)" "$(DESTDIR)$(libvirt_gconfig_1_0_ladir)"; do \ | |
1325 | for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(girdir)" "$(DESTDIR)$(typelibsdir)" "$(DESTDIR)$(libvirt_gconfig_1_0_ladir)" "$(DESTDIR)$(libvirt_gconfig_1_0_ladir)"; do \ | |
871 | 1326 | test -z "$$dir" || $(MKDIR_P) "$$dir"; \ |
872 | 1327 | done |
873 | install: install-recursive | |
1328 | install: $(BUILT_SOURCES) | |
1329 | $(MAKE) $(AM_MAKEFLAGS) install-recursive | |
874 | 1330 | install-exec: install-exec-recursive |
875 | 1331 | install-data: install-data-recursive |
876 | 1332 | uninstall: uninstall-recursive |
896 | 1352 | maintainer-clean-generic: |
897 | 1353 | @echo "This command is intended for maintainers to use" |
898 | 1354 | @echo "it deletes files that may require special tools to rebuild." |
1355 | -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) | |
899 | 1356 | clean: clean-recursive |
900 | 1357 | |
901 | 1358 | clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ |
920 | 1377 | info-am: |
921 | 1378 | |
922 | 1379 | install-data-am: install-girDATA install-libvirt_gconfig_1_0_laHEADERS \ |
1380 | install-nodist_libvirt_gconfig_1_0_laHEADERS \ | |
923 | 1381 | install-typelibsDATA |
924 | 1382 | |
925 | 1383 | install-dvi: install-dvi-recursive |
967 | 1425 | ps-am: |
968 | 1426 | |
969 | 1427 | uninstall-am: uninstall-girDATA uninstall-libLTLIBRARIES \ |
970 | uninstall-libvirt_gconfig_1_0_laHEADERS uninstall-typelibsDATA | |
971 | ||
972 | .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ | |
973 | install-am install-strip tags-recursive | |
1428 | uninstall-libvirt_gconfig_1_0_laHEADERS \ | |
1429 | uninstall-nodist_libvirt_gconfig_1_0_laHEADERS \ | |
1430 | uninstall-typelibsDATA | |
1431 | ||
1432 | .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check \ | |
1433 | ctags-recursive install install-am install-strip \ | |
1434 | tags-recursive | |
974 | 1435 | |
975 | 1436 | .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ |
976 | 1437 | all all-am check check-am clean clean-generic \ |
981 | 1442 | install-data-am install-dvi install-dvi-am install-exec \ |
982 | 1443 | install-exec-am install-girDATA install-html install-html-am \ |
983 | 1444 | install-info install-info-am install-libLTLIBRARIES \ |
984 | install-libvirt_gconfig_1_0_laHEADERS install-man install-pdf \ | |
1445 | install-libvirt_gconfig_1_0_laHEADERS install-man \ | |
1446 | install-nodist_libvirt_gconfig_1_0_laHEADERS install-pdf \ | |
985 | 1447 | install-pdf-am install-ps install-ps-am install-strip \ |
986 | 1448 | install-typelibsDATA installcheck installcheck-am installdirs \ |
987 | 1449 | installdirs-am maintainer-clean maintainer-clean-generic \ |
989 | 1451 | mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ |
990 | 1452 | uninstall uninstall-am uninstall-girDATA \ |
991 | 1453 | uninstall-libLTLIBRARIES \ |
992 | uninstall-libvirt_gconfig_1_0_laHEADERS uninstall-typelibsDATA | |
993 | ||
1454 | uninstall-libvirt_gconfig_1_0_laHEADERS \ | |
1455 | uninstall-nodist_libvirt_gconfig_1_0_laHEADERS \ | |
1456 | uninstall-typelibsDATA | |
1457 | ||
1458 | ||
1459 | libvirt-gconfig-enum-types.h: $(GCONFIG_HEADER_FILES) libvirt-gconfig-enum-types.h.template | |
1460 | $(AM_V_GEN) ( $(GLIB_MKENUMS) --template $(srcdir)/libvirt-gconfig-enum-types.h.template $(GCONFIG_HEADER_FILES:%=$(srcdir)/%) ) | \ | |
1461 | sed -e "s/G_TYPE_VIR_CONFIG/GVIR_CONFIG_TYPE/" -e "s/g_vir/gvir/" > libvirt-gconfig-enum-types.h | |
1462 | ||
1463 | libvirt-gconfig-enum-types.c: $(GCONFIG_HEADER_FILES) libvirt-gconfig-enum-types.c.template | |
1464 | $(AM_V_GEN) ( $(GLIB_MKENUMS) --template $(srcdir)/libvirt-gconfig-enum-types.c.template $(GCONFIG_HEADER_FILES:%=$(srcdir)/%) ) | \ | |
1465 | sed -e "s/G_TYPE_VIR_CONFIG/GVIR_CONFIG_TYPE/" -e "s/g_vir/gvir/" > libvirt-gconfig-enum-types.c | |
994 | 1466 | |
995 | 1467 | @WITH_GOBJECT_INTROSPECTION_TRUE@LibvirtGConfig-1.0.gir: libvirt-gconfig-1.0.la $(G_IR_SCANNER) Makefile.am |
996 | 1468 | @WITH_GOBJECT_INTROSPECTION_TRUE@ $(AM_V_GEN)$(G_IR_SCANNER) \ |
1000 | 1472 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --nsversion 1.0 \ |
1001 | 1473 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --include GObject-2.0 \ |
1002 | 1474 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --identifier-prefix=GVirConfig \ |
1003 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --symbol-prefix=gvir \ | |
1475 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --symbol-prefix=gvir_config \ | |
1004 | 1476 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --library=$(builddir)/libvirt-gconfig-1.0.la \ |
1005 | 1477 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --output $@ \ |
1478 | @WITH_GOBJECT_INTROSPECTION_TRUE@ -I$(top_builddir) \ | |
1006 | 1479 | @WITH_GOBJECT_INTROSPECTION_TRUE@ -I$(top_srcdir) \ |
1007 | @WITH_GOBJECT_INTROSPECTION_TRUE@ -I$(top_builddir) \ | |
1008 | @WITH_GOBJECT_INTROSPECTION_TRUE@ $(LIBXML2_CFLAGS) \ | |
1009 | 1480 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --verbose \ |
1010 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --pkg=gobject-2.0 \ | |
1011 | 1481 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --c-include="libvirt-gconfig/libvirt-gconfig.h" \ |
1482 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --pkg=libxml-2.0 \ | |
1012 | 1483 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --pkg-export=libvirt-gconfig-1.0 \ |
1013 | @WITH_GOBJECT_INTROSPECTION_TRUE@ $(srcdir)/libvirt-gconfig.h \ | |
1484 | @WITH_GOBJECT_INTROSPECTION_TRUE@ $(srcdir)/libvirt-gconfig.h \ | |
1014 | 1485 | @WITH_GOBJECT_INTROSPECTION_TRUE@ $(GCONFIG_SOURCE_FILES:%=$(srcdir)/%) \ |
1015 | @WITH_GOBJECT_INTROSPECTION_TRUE@ $(GCONFIG_HEADER_FILES:%=$(srcdir)/%) | |
1486 | @WITH_GOBJECT_INTROSPECTION_TRUE@ $(GCONFIG_HEADER_FILES:%=$(srcdir)/%) \ | |
1487 | @WITH_GOBJECT_INTROSPECTION_TRUE@ $(builddir)/libvirt-gconfig-enum-types.c \ | |
1488 | @WITH_GOBJECT_INTROSPECTION_TRUE@ $(builddir)/libvirt-gconfig-enum-types.h | |
1016 | 1489 | |
1017 | 1490 | @WITH_GOBJECT_INTROSPECTION_TRUE@%.typelib: %.gir |
1018 | 1491 | @WITH_GOBJECT_INTROSPECTION_TRUE@ $(AM_V_GEN)$(G_IR_COMPILER) \ |
0 | 0 | /* |
1 | * libvirt-gobject-config_capabilities.c: libvirt glib integration | |
1 | * libvirt-gconfig-capabilities.c: libvirt capabilities configuration | |
2 | 2 | * |
3 | 3 | * Copyright (C) 2008 Daniel P. Berrange |
4 | * Copyright (C) 2010 Red Hat | |
4 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
5 | 5 | * |
6 | 6 | * This library is free software; you can redistribute it and/or |
7 | 7 | * modify it under the terms of the GNU Lesser General Public |
22 | 22 | |
23 | 23 | #include <config.h> |
24 | 24 | |
25 | #include <string.h> | |
26 | ||
27 | 25 | #include "libvirt-gconfig/libvirt-gconfig.h" |
28 | 26 | |
29 | extern gboolean debugFlag; | |
30 | ||
31 | #define DEBUG(fmt, ...) do { if (G_UNLIKELY(debugFlag)) g_debug(fmt, ## __VA_ARGS__); } while (0) | |
32 | ||
33 | 27 | #define GVIR_CONFIG_CAPABILITIES_GET_PRIVATE(obj) \ |
34 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_TYPE_CONFIG_CAPABILITIES, GVirConfigCapabilitiesPrivate)) | |
28 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_CAPABILITIES, GVirConfigCapabilitiesPrivate)) | |
35 | 29 | |
36 | 30 | struct _GVirConfigCapabilitiesPrivate |
37 | 31 | { |
38 | 32 | gboolean unused; |
39 | 33 | }; |
40 | 34 | |
41 | G_DEFINE_TYPE(GVirConfigCapabilities, gvir_config_capabilities, GVIR_TYPE_CONFIG_OBJECT); | |
35 | G_DEFINE_TYPE(GVirConfigCapabilities, gvir_config_capabilities, GVIR_CONFIG_TYPE_OBJECT); | |
42 | 36 | |
43 | 37 | |
44 | 38 | static void gvir_config_capabilities_class_init(GVirConfigCapabilitiesClass *klass) |
45 | 39 | { |
46 | ||
47 | 40 | g_type_class_add_private(klass, sizeof(GVirConfigCapabilitiesPrivate)); |
48 | 41 | } |
49 | 42 | |
50 | 43 | |
51 | 44 | static void gvir_config_capabilities_init(GVirConfigCapabilities *conn) |
52 | 45 | { |
53 | GVirConfigCapabilitiesPrivate *priv; | |
46 | g_debug("Init GVirConfigCapabilities=%p", conn); | |
54 | 47 | |
55 | DEBUG("Init GVirConfigCapabilities=%p", conn); | |
56 | ||
57 | priv = conn->priv = GVIR_CONFIG_CAPABILITIES_GET_PRIVATE(conn); | |
58 | ||
59 | memset(priv, 0, sizeof(*priv)); | |
48 | conn->priv = GVIR_CONFIG_CAPABILITIES_GET_PRIVATE(conn); | |
60 | 49 | } |
61 | 50 | |
62 | 51 | |
66 | 55 | |
67 | 56 | /* FIXME: what is the XML root of the capability node? I suspect it is |
68 | 57 | * either 'guest' or 'host' */ |
69 | object = gvir_config_object_new(GVIR_TYPE_CONFIG_CAPABILITIES, | |
58 | object = gvir_config_object_new(GVIR_CONFIG_TYPE_CAPABILITIES, | |
70 | 59 | "capabilities", |
71 | 60 | DATADIR "/libvirt/schemas/capability.rng"); |
72 | 61 | return GVIR_CONFIG_CAPABILITIES(object); |
79 | 68 | |
80 | 69 | /* FIXME: what is the XML root of the capability node? I suspect it is |
81 | 70 | * either 'guest' or 'host' */ |
82 | object = gvir_config_object_new_from_xml(GVIR_TYPE_CONFIG_CAPABILITIES, | |
71 | object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_CAPABILITIES, | |
83 | 72 | "capabilities", |
84 | 73 | DATADIR "/libvirt/schemas/capability.rng", |
85 | 74 | xml, error); |
0 | 0 | /* |
1 | * libvirt-gobject-capabilities-config.c: libvirt gobject integration | |
1 | * libvirt-gconfig-capabilities.c: libvirt capabilities configuration | |
2 | 2 | * |
3 | * Copyright (C) 2010 Red Hat | |
3 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
28 | 28 | |
29 | 29 | G_BEGIN_DECLS |
30 | 30 | |
31 | #define GVIR_TYPE_CONFIG_CAPABILITIES (gvir_config_capabilities_get_type ()) | |
32 | #define GVIR_CONFIG_CAPABILITIES(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_TYPE_CONFIG_CAPABILITIES, GVirConfigCapabilities)) | |
33 | #define GVIR_CONFIG_CAPABILITIES_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_TYPE_CONFIG_CAPABILITIES, GVirConfigCapabilitiesClass)) | |
34 | #define GVIR_IS_CONFIG_CAPABILITIES(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_TYPE_CONFIG_CAPABILITIES)) | |
35 | #define GVIR_IS_CONFIG_CAPABILITIES_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_TYPE_CONFIG_CAPABILITIES)) | |
36 | #define GVIR_CONFIG_CAPABILITIES_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_TYPE_CONFIG_CAPABILITIES, GVirConfigCapabilitiesClass)) | |
31 | #define GVIR_CONFIG_TYPE_CAPABILITIES (gvir_config_capabilities_get_type ()) | |
32 | #define GVIR_CONFIG_CAPABILITIES(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_CAPABILITIES, GVirConfigCapabilities)) | |
33 | #define GVIR_CONFIG_CAPABILITIES_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_CAPABILITIES, GVirConfigCapabilitiesClass)) | |
34 | #define GVIR_CONFIG_IS_CAPABILITIES(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_CAPABILITIES)) | |
35 | #define GVIR_CONFIG_IS_CAPABILITIES_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_CAPABILITIES)) | |
36 | #define GVIR_CONFIG_CAPABILITIES_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_CAPABILITIES, GVirConfigCapabilitiesClass)) | |
37 | 37 | |
38 | 38 | typedef struct _GVirConfigCapabilities GVirConfigCapabilities; |
39 | 39 | typedef struct _GVirConfigCapabilitiesPrivate GVirConfigCapabilitiesPrivate; |
0 | /* | |
1 | * libvirt-gconfig-domain-channel.c: libvirt domain channel configuration | |
2 | * | |
3 | * Copyright (C) 2011-2012 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Daniel P. Berrange <berrange@redhat.com> | |
20 | */ | |
21 | ||
22 | #include <config.h> | |
23 | ||
24 | #include "libvirt-gconfig/libvirt-gconfig.h" | |
25 | #include "libvirt-gconfig/libvirt-gconfig-private.h" | |
26 | ||
27 | #define GVIR_CONFIG_DOMAIN_CHANNEL_GET_PRIVATE(obj) \ | |
28 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_CHANNEL, GVirConfigDomainChannelPrivate)) | |
29 | ||
30 | struct _GVirConfigDomainChannelPrivate | |
31 | { | |
32 | gboolean unused; | |
33 | }; | |
34 | ||
35 | G_DEFINE_TYPE(GVirConfigDomainChannel, gvir_config_domain_channel, GVIR_CONFIG_TYPE_DOMAIN_CHARDEV); | |
36 | ||
37 | ||
38 | static void gvir_config_domain_channel_class_init(GVirConfigDomainChannelClass *klass) | |
39 | { | |
40 | g_type_class_add_private(klass, sizeof(GVirConfigDomainChannelPrivate)); | |
41 | } | |
42 | ||
43 | ||
44 | static void gvir_config_domain_channel_init(GVirConfigDomainChannel *channel) | |
45 | { | |
46 | g_debug("Init GVirConfigDomainChannel=%p", channel); | |
47 | ||
48 | channel->priv = GVIR_CONFIG_DOMAIN_CHANNEL_GET_PRIVATE(channel); | |
49 | } | |
50 | ||
51 | GVirConfigDomainChannel *gvir_config_domain_channel_new(void) | |
52 | { | |
53 | GVirConfigObject *object; | |
54 | ||
55 | object = gvir_config_object_new(GVIR_CONFIG_TYPE_DOMAIN_CHANNEL, | |
56 | "channel", NULL); | |
57 | return GVIR_CONFIG_DOMAIN_CHANNEL(object); | |
58 | } | |
59 | ||
60 | GVirConfigDomainChannel *gvir_config_domain_channel_new_from_xml(const gchar *xml, | |
61 | GError **error) | |
62 | { | |
63 | GVirConfigObject *object; | |
64 | ||
65 | object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_DOMAIN_CHANNEL, | |
66 | "channel", NULL, xml, error); | |
67 | if (object == NULL) | |
68 | return NULL; | |
69 | return GVIR_CONFIG_DOMAIN_CHANNEL(object); | |
70 | } | |
71 | ||
72 | ||
73 | void gvir_config_domain_channel_set_target_type(GVirConfigDomainChannel *channel, | |
74 | GVirConfigDomainChannelTargetType type) | |
75 | { | |
76 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_CHANNEL(channel)); | |
77 | ||
78 | gvir_config_object_add_child_with_attribute_enum(GVIR_CONFIG_OBJECT(channel), | |
79 | "target", "type", | |
80 | GVIR_CONFIG_TYPE_DOMAIN_CHANNEL_TARGET_TYPE, | |
81 | type); | |
82 | } | |
83 | ||
84 | ||
85 | void gvir_config_domain_channel_set_target_name(GVirConfigDomainChannel *channel, | |
86 | const gchar *name) | |
87 | { | |
88 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_CHANNEL(channel)); | |
89 | ||
90 | gvir_config_object_add_child_with_attribute(GVIR_CONFIG_OBJECT(channel), | |
91 | "target", "name", name); | |
92 | } |
0 | /* | |
1 | * libvirt-gconfig-domain-channel.h: libvirt domain channel configuration | |
2 | * | |
3 | * Copyright (C) 2011-2012 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Daniel P. Berrange <berrange@redhat.com> | |
20 | */ | |
21 | ||
22 | #if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) | |
23 | #error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." | |
24 | #endif | |
25 | ||
26 | #ifndef __LIBVIRT_GCONFIG_DOMAIN_CHANNEL_H__ | |
27 | #define __LIBVIRT_GCONFIG_DOMAIN_CHANNEL_H__ | |
28 | ||
29 | G_BEGIN_DECLS | |
30 | ||
31 | #define GVIR_CONFIG_TYPE_DOMAIN_CHANNEL (gvir_config_domain_channel_get_type ()) | |
32 | #define GVIR_CONFIG_DOMAIN_CHANNEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_DOMAIN_CHANNEL, GVirConfigDomainChannel)) | |
33 | #define GVIR_CONFIG_DOMAIN_CHANNEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_DOMAIN_CHANNEL, GVirConfigDomainChannelClass)) | |
34 | #define GVIR_CONFIG_IS_DOMAIN_CHANNEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_DOMAIN_CHANNEL)) | |
35 | #define GVIR_CONFIG_IS_DOMAIN_CHANNEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_DOMAIN_CHANNEL)) | |
36 | #define GVIR_CONFIG_DOMAIN_CHANNEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_DOMAIN_CHANNEL, GVirConfigDomainChannelClass)) | |
37 | ||
38 | typedef struct _GVirConfigDomainChannel GVirConfigDomainChannel; | |
39 | typedef struct _GVirConfigDomainChannelPrivate GVirConfigDomainChannelPrivate; | |
40 | typedef struct _GVirConfigDomainChannelClass GVirConfigDomainChannelClass; | |
41 | ||
42 | struct _GVirConfigDomainChannel | |
43 | { | |
44 | GVirConfigDomainChardev parent; | |
45 | ||
46 | GVirConfigDomainChannelPrivate *priv; | |
47 | ||
48 | /* Do not add fields to this struct */ | |
49 | }; | |
50 | ||
51 | struct _GVirConfigDomainChannelClass | |
52 | { | |
53 | GVirConfigDomainChardevClass parent_class; | |
54 | ||
55 | gpointer padding[20]; | |
56 | }; | |
57 | ||
58 | typedef enum { | |
59 | GVIR_CONFIG_DOMAIN_CONSOLE_TARGET_GUESTFWD, | |
60 | GVIR_CONFIG_DOMAIN_CHANNEL_TARGET_VIRTIO, | |
61 | } GVirConfigDomainChannelTargetType; | |
62 | ||
63 | ||
64 | GType gvir_config_domain_channel_get_type(void); | |
65 | GVirConfigDomainChannel *gvir_config_domain_channel_new(void); | |
66 | GVirConfigDomainChannel *gvir_config_domain_channel_new_from_xml(const gchar *xml, | |
67 | GError **error); | |
68 | ||
69 | void gvir_config_domain_channel_set_target_type(GVirConfigDomainChannel *channel, | |
70 | GVirConfigDomainChannelTargetType type); | |
71 | void gvir_config_domain_channel_set_target_name(GVirConfigDomainChannel *channel, | |
72 | const gchar *name); | |
73 | ||
74 | ||
75 | G_END_DECLS | |
76 | ||
77 | #endif /* __LIBVIRT_GCONFIG_DOMAIN_CHANNEL_H__ */ |
0 | /* | |
1 | * libvirt-gconfig-domain-chardev-source-pty.c: libvirt domain chardev pty configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Christophe Fergeau <cfergeau@redhat.com> | |
20 | */ | |
21 | ||
22 | #include <config.h> | |
23 | ||
24 | #include "libvirt-gconfig/libvirt-gconfig.h" | |
25 | #include "libvirt-gconfig/libvirt-gconfig-private.h" | |
26 | ||
27 | #define GVIR_CONFIG_DOMAIN_CHARDEV_SOURCE_PTY_GET_PRIVATE(obj) \ | |
28 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_CHARDEV_SOURCE_PTY, GVirConfigDomainChardevSourcePtyPrivate)) | |
29 | ||
30 | struct _GVirConfigDomainChardevSourcePtyPrivate | |
31 | { | |
32 | gboolean unused; | |
33 | }; | |
34 | ||
35 | G_DEFINE_TYPE(GVirConfigDomainChardevSourcePty, gvir_config_domain_chardev_source_pty, GVIR_CONFIG_TYPE_DOMAIN_CHARDEV_SOURCE); | |
36 | ||
37 | ||
38 | static void gvir_config_domain_chardev_source_pty_class_init(GVirConfigDomainChardevSourcePtyClass *klass) | |
39 | { | |
40 | g_type_class_add_private(klass, sizeof(GVirConfigDomainChardevSourcePtyPrivate)); | |
41 | } | |
42 | ||
43 | ||
44 | static void gvir_config_domain_chardev_source_pty_init(GVirConfigDomainChardevSourcePty *source) | |
45 | { | |
46 | g_debug("Init GVirConfigDomainChardevSourcePty=%p", source); | |
47 | ||
48 | source->priv = GVIR_CONFIG_DOMAIN_CHARDEV_SOURCE_PTY_GET_PRIVATE(source); | |
49 | } | |
50 | ||
51 | ||
52 | GVirConfigDomainChardevSourcePty *gvir_config_domain_chardev_source_pty_new(void) | |
53 | { | |
54 | GVirConfigObject *object; | |
55 | ||
56 | /* the name of the root node is just a placeholder, it will be | |
57 | * overwritten when the GVirConfigDomainChardevSourcePty is attached to a | |
58 | * GVirConfigDomainChardevSourcePty | |
59 | */ | |
60 | object = gvir_config_object_new(GVIR_CONFIG_TYPE_DOMAIN_CHARDEV_SOURCE_PTY, "dummy", NULL); | |
61 | gvir_config_object_set_attribute(object, "type", "pty", NULL); | |
62 | return GVIR_CONFIG_DOMAIN_CHARDEV_SOURCE_PTY(object); | |
63 | } | |
64 | ||
65 | ||
66 | GVirConfigDomainChardevSourcePty *gvir_config_domain_chardev_source_pty_new_from_xml(const gchar *xml, | |
67 | GError **error) | |
68 | { | |
69 | GVirConfigObject *object; | |
70 | ||
71 | /* the name of the root node is just a placeholder, it will be | |
72 | * overwritten when the GVirConfigDomainChardevSourcePty is attached to a | |
73 | * GVirConfigDomainChardevSourcePty | |
74 | */ | |
75 | object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_DOMAIN_CHARDEV_SOURCE_PTY, | |
76 | "dummy", NULL, xml, error); | |
77 | gvir_config_object_set_attribute(object, "type", "pty", NULL); | |
78 | return GVIR_CONFIG_DOMAIN_CHARDEV_SOURCE_PTY(object); | |
79 | } | |
80 | ||
81 | void gvir_config_domain_source_pty_set_path(GVirConfigDomainChardevSourcePty *pty, | |
82 | const char *path) | |
83 | { | |
84 | GVirConfigObject *source; | |
85 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_CHARDEV_SOURCE_PTY(pty)); | |
86 | ||
87 | source = gvir_config_object_replace_child(GVIR_CONFIG_OBJECT(pty), | |
88 | "source"); | |
89 | g_return_if_fail(GVIR_CONFIG_IS_OBJECT(source)); | |
90 | gvir_config_object_set_node_content(GVIR_CONFIG_OBJECT(source), | |
91 | "path", path); | |
92 | g_object_unref(G_OBJECT(source)); | |
93 | } |
0 | /* | |
1 | * libvirt-gconfig-domain-chardev-source-pty.h: libvirt domain chardev pty configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Christophe Fergeau <cfergeau@redhat.com> | |
20 | */ | |
21 | ||
22 | #if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) | |
23 | #error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." | |
24 | #endif | |
25 | ||
26 | #ifndef __LIBVIRT_GCONFIG_DOMAIN_CHARDEV_SOURCE_PTY_H__ | |
27 | #define __LIBVIRT_GCONFIG_DOMAIN_CHARDEV_SOURCE_PTY_H__ | |
28 | ||
29 | G_BEGIN_DECLS | |
30 | ||
31 | #define GVIR_CONFIG_TYPE_DOMAIN_CHARDEV_SOURCE_PTY (gvir_config_domain_chardev_source_pty_get_type ()) | |
32 | #define GVIR_CONFIG_DOMAIN_CHARDEV_SOURCE_PTY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_DOMAIN_CHARDEV_SOURCE_PTY, GVirConfigDomainChardevSourcePty)) | |
33 | #define GVIR_CONFIG_DOMAIN_CHARDEV_SOURCE_PTY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_DOMAIN_CHARDEV_SOURCE_PTY, GVirConfigDomainChardevSourcePtyClass)) | |
34 | #define GVIR_CONFIG_IS_DOMAIN_CHARDEV_SOURCE_PTY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_DOMAIN_CHARDEV_SOURCE_PTY)) | |
35 | #define GVIR_CONFIG_IS_DOMAIN_CHARDEV_SOURCE_PTY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_DOMAIN_CHARDEV_SOURCE_PTY)) | |
36 | #define GVIR_CONFIG_DOMAIN_CHARDEV_SOURCE_PTY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_DOMAIN_CHARDEV_SOURCE_PTY, GVirConfigDomainChardevSourcePtyClass)) | |
37 | ||
38 | typedef struct _GVirConfigDomainChardevSourcePty GVirConfigDomainChardevSourcePty; | |
39 | typedef struct _GVirConfigDomainChardevSourcePtyPrivate GVirConfigDomainChardevSourcePtyPrivate; | |
40 | typedef struct _GVirConfigDomainChardevSourcePtyClass GVirConfigDomainChardevSourcePtyClass; | |
41 | ||
42 | struct _GVirConfigDomainChardevSourcePty | |
43 | { | |
44 | GVirConfigDomainChardevSource parent; | |
45 | ||
46 | GVirConfigDomainChardevSourcePtyPrivate *priv; | |
47 | ||
48 | /* Do not add fields to this struct */ | |
49 | }; | |
50 | ||
51 | struct _GVirConfigDomainChardevSourcePtyClass | |
52 | { | |
53 | GVirConfigDomainChardevSourceClass parent_class; | |
54 | ||
55 | gpointer padding[20]; | |
56 | }; | |
57 | ||
58 | ||
59 | GType gvir_config_domain_chardev_source_pty_get_type(void); | |
60 | ||
61 | GVirConfigDomainChardevSourcePty *gvir_config_domain_chardev_source_pty_new(void); | |
62 | GVirConfigDomainChardevSourcePty *gvir_config_domain_chardev_source_pty_new_from_xml(const gchar *xml, | |
63 | GError **error); | |
64 | void gvir_config_domain_source_pty_set_path(GVirConfigDomainChardevSourcePty *pty, | |
65 | const char *path); | |
66 | ||
67 | G_END_DECLS | |
68 | ||
69 | #endif /* __LIBVIRT_GCONFIG_DOMAIN_CHARDEV_SOURCE_PTY_H__ */ |
0 | /* | |
1 | * libvirt-gconfig-domain-chardev-source.c: libvirt domain chardev source base class | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Christophe Fergeau <cfergeau@redhat.com> | |
20 | */ | |
21 | ||
22 | #include <config.h> | |
23 | ||
24 | #include "libvirt-gconfig/libvirt-gconfig.h" | |
25 | ||
26 | #define GVIR_CONFIG_DOMAIN_CHARDEV_SOURCE_GET_PRIVATE(obj) \ | |
27 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_CHARDEV_SOURCE, GVirConfigDomainChardevSourcePrivate)) | |
28 | ||
29 | struct _GVirConfigDomainChardevSourcePrivate | |
30 | { | |
31 | gboolean unused; | |
32 | }; | |
33 | ||
34 | G_DEFINE_ABSTRACT_TYPE(GVirConfigDomainChardevSource, gvir_config_domain_chardev_source, GVIR_CONFIG_TYPE_OBJECT); | |
35 | ||
36 | ||
37 | static void gvir_config_domain_chardev_source_class_init(GVirConfigDomainChardevSourceClass *klass) | |
38 | { | |
39 | g_type_class_add_private(klass, sizeof(GVirConfigDomainChardevSourcePrivate)); | |
40 | } | |
41 | ||
42 | ||
43 | static void gvir_config_domain_chardev_source_init(GVirConfigDomainChardevSource *source) | |
44 | { | |
45 | g_debug("Init GVirConfigDomainChardevSource=%p", source); | |
46 | ||
47 | source->priv = GVIR_CONFIG_DOMAIN_CHARDEV_SOURCE_GET_PRIVATE(source); | |
48 | } |
0 | /* | |
1 | * libvirt-gconfig-domain-chardev-source.h: libvirt domain chardev source base class | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Christophe Fergeau <cfergeau@redhat.com> | |
20 | */ | |
21 | ||
22 | #if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) | |
23 | #error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." | |
24 | #endif | |
25 | ||
26 | #ifndef __LIBVIRT_GCONFIG_DOMAIN_CHARDEV_SOURCE_H__ | |
27 | #define __LIBVIRT_GCONFIG_DOMAIN_CHARDEV_SOURCE_H__ | |
28 | ||
29 | G_BEGIN_DECLS | |
30 | ||
31 | #define GVIR_CONFIG_TYPE_DOMAIN_CHARDEV_SOURCE (gvir_config_domain_chardev_source_get_type ()) | |
32 | #define GVIR_CONFIG_DOMAIN_CHARDEV_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_DOMAIN_CHARDEV_SOURCE, GVirConfigDomainChardevSource)) | |
33 | #define GVIR_CONFIG_DOMAIN_CHARDEV_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_DOMAIN_CHARDEV_SOURCE, GVirConfigDomainChardevSourceClass)) | |
34 | #define GVIR_CONFIG_IS_DOMAIN_CHARDEV_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_DOMAIN_CHARDEV_SOURCE)) | |
35 | #define GVIR_CONFIG_IS_DOMAIN_CHARDEV_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_DOMAIN_CHARDEV_SOURCE)) | |
36 | #define GVIR_CONFIG_DOMAIN_CHARDEV_SOURCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_DOMAIN_CHARDEV_SOURCE, GVirConfigDomainChardevSourceClass)) | |
37 | ||
38 | typedef struct _GVirConfigDomainChardevSource GVirConfigDomainChardevSource; | |
39 | typedef struct _GVirConfigDomainChardevSourcePrivate GVirConfigDomainChardevSourcePrivate; | |
40 | typedef struct _GVirConfigDomainChardevSourceClass GVirConfigDomainChardevSourceClass; | |
41 | ||
42 | struct _GVirConfigDomainChardevSource | |
43 | { | |
44 | GVirConfigObject parent; | |
45 | ||
46 | GVirConfigDomainChardevSourcePrivate *priv; | |
47 | ||
48 | /* Do not add fields to this struct */ | |
49 | }; | |
50 | ||
51 | struct _GVirConfigDomainChardevSourceClass | |
52 | { | |
53 | GVirConfigObjectClass parent_class; | |
54 | ||
55 | gpointer padding[20]; | |
56 | }; | |
57 | ||
58 | ||
59 | GType gvir_config_domain_chardev_source_get_type(void); | |
60 | ||
61 | G_END_DECLS | |
62 | ||
63 | #endif /* __LIBVIRT_GCONFIG_DOMAIN_CHARDEV_SOURCE_H__ */ |
0 | /* | |
1 | * libvirt-gconfig-domain-chardev.c: libvirt domain chardev configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Christophe Fergeau <cfergeau@redhat.com> | |
20 | */ | |
21 | ||
22 | #include <config.h> | |
23 | ||
24 | #include "libvirt-gconfig/libvirt-gconfig.h" | |
25 | #include "libvirt-gconfig/libvirt-gconfig-private.h" | |
26 | ||
27 | #define GVIR_CONFIG_DOMAIN_CHARDEV_GET_PRIVATE(obj) \ | |
28 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_CHARDEV, GVirConfigDomainChardevPrivate)) | |
29 | ||
30 | struct _GVirConfigDomainChardevPrivate | |
31 | { | |
32 | gboolean unused; | |
33 | }; | |
34 | ||
35 | G_DEFINE_ABSTRACT_TYPE(GVirConfigDomainChardev, gvir_config_domain_chardev, GVIR_CONFIG_TYPE_DOMAIN_DEVICE) | |
36 | ||
37 | static void gvir_config_domain_chardev_class_init(GVirConfigDomainChardevClass *klass) | |
38 | { | |
39 | g_type_class_add_private(klass, sizeof(GVirConfigDomainChardevPrivate)); | |
40 | } | |
41 | ||
42 | ||
43 | static void gvir_config_domain_chardev_init(GVirConfigDomainChardev *chardev) | |
44 | { | |
45 | g_debug("Init GVirConfigDomainChardev=%p", chardev); | |
46 | ||
47 | chardev->priv = GVIR_CONFIG_DOMAIN_CHARDEV_GET_PRIVATE(chardev); | |
48 | } | |
49 | ||
50 | static void prepend_prop(xmlNodePtr node, xmlAttrPtr prop) | |
51 | { | |
52 | if (node->properties == NULL) { | |
53 | node->properties = prop; | |
54 | } else { | |
55 | prop->next = node->properties; | |
56 | node->properties->prev = prop; | |
57 | node->properties = prop; | |
58 | } | |
59 | } | |
60 | ||
61 | void gvir_config_domain_chardev_set_source(GVirConfigDomainChardev *chardev, | |
62 | GVirConfigDomainChardevSource *source) | |
63 | { | |
64 | xmlNodePtr chardev_node; | |
65 | xmlNodePtr source_node; | |
66 | xmlNodePtr child; | |
67 | xmlAttrPtr attr; | |
68 | ||
69 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_CHARDEV(chardev)); | |
70 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_CHARDEV_SOURCE(source)); | |
71 | ||
72 | chardev_node = gvir_config_object_get_xml_node(GVIR_CONFIG_OBJECT(chardev)); | |
73 | source_node = gvir_config_object_get_xml_node(GVIR_CONFIG_OBJECT(source)); | |
74 | ||
75 | g_return_if_fail((chardev_node != NULL) && (source_node != NULL)); | |
76 | ||
77 | for (child = source_node->children; child != NULL; child = child->next) { | |
78 | xmlUnlinkNode(child); | |
79 | xmlAddChild(chardev_node, child); | |
80 | } | |
81 | ||
82 | for (attr = source_node->properties; attr != NULL; attr = attr->next) { | |
83 | xmlAttrPtr new_attr; | |
84 | new_attr = xmlCopyProp(chardev_node, attr); | |
85 | prepend_prop(chardev_node, new_attr); | |
86 | } | |
87 | } |
0 | /* | |
1 | * libvirt-gconfig-domain-chardev.h: libvirt domain chardev configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Daniel P. Berrange <berrange@redhat.com> | |
20 | */ | |
21 | ||
22 | #if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) | |
23 | #error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." | |
24 | #endif | |
25 | ||
26 | #ifndef __LIBVIRT_GCONFIG_DOMAIN_CHARDEV_H__ | |
27 | #define __LIBVIRT_GCONFIG_DOMAIN_CHARDEV_H__ | |
28 | ||
29 | #include <libvirt-gconfig/libvirt-gconfig-domain-chardev-source.h> | |
30 | ||
31 | G_BEGIN_DECLS | |
32 | ||
33 | #define GVIR_CONFIG_TYPE_DOMAIN_CHARDEV (gvir_config_domain_chardev_get_type ()) | |
34 | #define GVIR_CONFIG_DOMAIN_CHARDEV(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_DOMAIN_CHARDEV, GVirConfigDomainChardev)) | |
35 | #define GVIR_CONFIG_DOMAIN_CHARDEV_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_DOMAIN_CHARDEV, GVirConfigDomainChardevClass)) | |
36 | #define GVIR_CONFIG_IS_DOMAIN_CHARDEV(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_DOMAIN_CHARDEV)) | |
37 | #define GVIR_CONFIG_IS_DOMAIN_CHARDEV_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_DOMAIN_CHARDEV)) | |
38 | #define GVIR_CONFIG_DOMAIN_CHARDEV_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_DOMAIN_CHARDEV, GVirConfigDomainChardevClass)) | |
39 | ||
40 | typedef struct _GVirConfigDomainChardev GVirConfigDomainChardev; | |
41 | typedef struct _GVirConfigDomainChardevPrivate GVirConfigDomainChardevPrivate; | |
42 | typedef struct _GVirConfigDomainChardevClass GVirConfigDomainChardevClass; | |
43 | ||
44 | struct _GVirConfigDomainChardev | |
45 | { | |
46 | GVirConfigDomainDevice parent; | |
47 | ||
48 | GVirConfigDomainChardevPrivate *priv; | |
49 | ||
50 | /* Do not add fields to this struct */ | |
51 | }; | |
52 | ||
53 | struct _GVirConfigDomainChardevClass | |
54 | { | |
55 | GVirConfigDomainDeviceClass parent_class; | |
56 | ||
57 | gpointer padding[20]; | |
58 | }; | |
59 | ||
60 | ||
61 | GType gvir_config_domain_chardev_get_type(void); | |
62 | void gvir_config_domain_chardev_set_source(GVirConfigDomainChardev *chardev, | |
63 | GVirConfigDomainChardevSource *source); | |
64 | ||
65 | G_END_DECLS | |
66 | ||
67 | #endif /* __LIBVIRT_GCONFIG_DOMAIN_CHARDEV_H__ */ |
0 | /* | |
1 | * libvirt-gconfig-domain-clock.c: libvirt domain clock configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Christophe Fergeau <cfergeau@redhat.com> | |
20 | */ | |
21 | ||
22 | #include <config.h> | |
23 | ||
24 | #include "libvirt-gconfig/libvirt-gconfig.h" | |
25 | #include "libvirt-gconfig/libvirt-gconfig-private.h" | |
26 | ||
27 | #define GVIR_CONFIG_DOMAIN_CLOCK_GET_PRIVATE(obj) \ | |
28 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_CLOCK, GVirConfigDomainClockPrivate)) | |
29 | ||
30 | struct _GVirConfigDomainClockPrivate | |
31 | { | |
32 | gboolean unused; | |
33 | }; | |
34 | ||
35 | G_DEFINE_TYPE(GVirConfigDomainClock, gvir_config_domain_clock, GVIR_CONFIG_TYPE_OBJECT); | |
36 | ||
37 | ||
38 | static void gvir_config_domain_clock_class_init(GVirConfigDomainClockClass *klass) | |
39 | { | |
40 | g_type_class_add_private(klass, sizeof(GVirConfigDomainClockPrivate)); | |
41 | } | |
42 | ||
43 | ||
44 | static void gvir_config_domain_clock_init(GVirConfigDomainClock *klock) | |
45 | { | |
46 | g_debug("Init GVirConfigDomainClock=%p", klock); | |
47 | ||
48 | klock->priv = GVIR_CONFIG_DOMAIN_CLOCK_GET_PRIVATE(klock); | |
49 | } | |
50 | ||
51 | ||
52 | GVirConfigDomainClock *gvir_config_domain_clock_new(void) | |
53 | { | |
54 | GVirConfigObject *object; | |
55 | ||
56 | object = gvir_config_object_new(GVIR_CONFIG_TYPE_DOMAIN_CLOCK, | |
57 | "clock", NULL); | |
58 | return GVIR_CONFIG_DOMAIN_CLOCK(object); | |
59 | } | |
60 | ||
61 | GVirConfigDomainClock *gvir_config_domain_clock_new_from_xml(const gchar *xml, | |
62 | GError **error) | |
63 | { | |
64 | GVirConfigObject *object; | |
65 | ||
66 | object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_DOMAIN_CLOCK, | |
67 | "clock", NULL, xml, error); | |
68 | return GVIR_CONFIG_DOMAIN_CLOCK(object); | |
69 | } | |
70 | ||
71 | void gvir_config_domain_clock_set_offset(GVirConfigDomainClock *klock, | |
72 | GVirConfigDomainClockOffset offset) | |
73 | { | |
74 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_CLOCK(klock)); | |
75 | ||
76 | gvir_config_object_set_attribute_with_type(GVIR_CONFIG_OBJECT(klock), | |
77 | "offset", | |
78 | GVIR_CONFIG_TYPE_DOMAIN_CLOCK_OFFSET, | |
79 | offset, | |
80 | NULL); | |
81 | } | |
82 | ||
83 | void gvir_config_domain_clock_set_timezone(GVirConfigDomainClock *klock, | |
84 | const char *tz) | |
85 | { | |
86 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_CLOCK(klock)); | |
87 | g_return_if_fail(tz != NULL); | |
88 | ||
89 | gvir_config_object_set_attribute(GVIR_CONFIG_OBJECT(klock), | |
90 | "timezone", tz, NULL); | |
91 | } | |
92 | ||
93 | void gvir_config_domain_clock_set_variable_offset(GVirConfigDomainClock *klock, | |
94 | gint seconds) | |
95 | { | |
96 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_CLOCK(klock)); | |
97 | ||
98 | gvir_config_object_set_attribute_with_type(GVIR_CONFIG_OBJECT(klock), | |
99 | "offset", G_TYPE_STRING, "variable", | |
100 | "adjustment", G_TYPE_INT, seconds, | |
101 | NULL); | |
102 | } |
0 | /* | |
1 | * libvirt-gconfig-domain-clock.h: libvirt domain clock configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Christophe Fergeau <cfergeau@redhat.com> | |
20 | */ | |
21 | ||
22 | #if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) | |
23 | #error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." | |
24 | #endif | |
25 | ||
26 | #ifndef __LIBVIRT_GCONFIG_DOMAIN_CLOCK_H__ | |
27 | #define __LIBVIRT_GCONFIG_DOMAIN_CLOCK_H__ | |
28 | ||
29 | G_BEGIN_DECLS | |
30 | ||
31 | #define GVIR_CONFIG_TYPE_DOMAIN_CLOCK (gvir_config_domain_clock_get_type ()) | |
32 | #define GVIR_CONFIG_DOMAIN_CLOCK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_DOMAIN_CLOCK, GVirConfigDomainClock)) | |
33 | #define GVIR_CONFIG_DOMAIN_CLOCK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_DOMAIN_CLOCK, GVirConfigDomainClockClass)) | |
34 | #define GVIR_CONFIG_IS_DOMAIN_CLOCK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_DOMAIN_CLOCK)) | |
35 | #define GVIR_CONFIG_IS_DOMAIN_CLOCK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_DOMAIN_CLOCK)) | |
36 | #define GVIR_CONFIG_DOMAIN_CLOCK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_DOMAIN_CLOCK, GVirConfigDomainClockClass)) | |
37 | ||
38 | typedef struct _GVirConfigDomainClock GVirConfigDomainClock; | |
39 | typedef struct _GVirConfigDomainClockPrivate GVirConfigDomainClockPrivate; | |
40 | typedef struct _GVirConfigDomainClockClass GVirConfigDomainClockClass; | |
41 | ||
42 | struct _GVirConfigDomainClock | |
43 | { | |
44 | GVirConfigObject parent; | |
45 | ||
46 | GVirConfigDomainClockPrivate *priv; | |
47 | ||
48 | /* Do not add fields to this struct */ | |
49 | }; | |
50 | ||
51 | struct _GVirConfigDomainClockClass | |
52 | { | |
53 | GVirConfigObjectClass parent_class; | |
54 | ||
55 | gpointer padding[20]; | |
56 | }; | |
57 | ||
58 | typedef enum { | |
59 | GVIR_CONFIG_DOMAIN_CLOCK_UTC, | |
60 | GVIR_CONFIG_DOMAIN_CLOCK_LOCALTIME, | |
61 | GVIR_CONFIG_DOMAIN_CLOCK_TIMEZONE, | |
62 | GVIR_CONFIG_DOMAIN_CLOCK_VARIABLE | |
63 | } GVirConfigDomainClockOffset; | |
64 | ||
65 | GType gvir_config_domain_clock_get_type(void); | |
66 | ||
67 | GVirConfigDomainClock *gvir_config_domain_clock_new(void); | |
68 | GVirConfigDomainClock *gvir_config_domain_clock_new_from_xml(const gchar *xml, | |
69 | GError **error); | |
70 | void gvir_config_domain_clock_set_offset(GVirConfigDomainClock *klock, | |
71 | GVirConfigDomainClockOffset offset); | |
72 | void gvir_config_domain_clock_set_timezone(GVirConfigDomainClock *klock, | |
73 | const char *tz); | |
74 | void gvir_config_domain_clock_set_variable_offset(GVirConfigDomainClock *klock, | |
75 | gint seconds); | |
76 | ||
77 | ||
78 | G_END_DECLS | |
79 | ||
80 | #endif /* __LIBVIRT_GCONFIG_DOMAIN_CLOCK_H__ */ |
0 | /* | |
1 | * libvirt-gconfig-domain-console.c: libvirt domain console configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Daniel P. Berrange <berrange@redhat.com> | |
20 | */ | |
21 | ||
22 | #include <config.h> | |
23 | ||
24 | #include "libvirt-gconfig/libvirt-gconfig.h" | |
25 | #include "libvirt-gconfig/libvirt-gconfig-private.h" | |
26 | ||
27 | #define GVIR_CONFIG_DOMAIN_CONSOLE_GET_PRIVATE(obj) \ | |
28 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_CONSOLE, GVirConfigDomainConsolePrivate)) | |
29 | ||
30 | struct _GVirConfigDomainConsolePrivate | |
31 | { | |
32 | gboolean unused; | |
33 | }; | |
34 | ||
35 | G_DEFINE_TYPE(GVirConfigDomainConsole, gvir_config_domain_console, GVIR_CONFIG_TYPE_DOMAIN_CHARDEV); | |
36 | ||
37 | ||
38 | static void gvir_config_domain_console_class_init(GVirConfigDomainConsoleClass *klass) | |
39 | { | |
40 | g_type_class_add_private(klass, sizeof(GVirConfigDomainConsolePrivate)); | |
41 | } | |
42 | ||
43 | ||
44 | static void gvir_config_domain_console_init(GVirConfigDomainConsole *console) | |
45 | { | |
46 | g_debug("Init GVirConfigDomainConsole=%p", console); | |
47 | ||
48 | console->priv = GVIR_CONFIG_DOMAIN_CONSOLE_GET_PRIVATE(console); | |
49 | } | |
50 | ||
51 | GVirConfigDomainConsole *gvir_config_domain_console_new(void) | |
52 | { | |
53 | GVirConfigObject *object; | |
54 | ||
55 | object = gvir_config_object_new(GVIR_CONFIG_TYPE_DOMAIN_CONSOLE, | |
56 | "console", NULL); | |
57 | return GVIR_CONFIG_DOMAIN_CONSOLE(object); | |
58 | } | |
59 | ||
60 | GVirConfigDomainConsole *gvir_config_domain_console_new_from_xml(const gchar *xml, | |
61 | GError **error) | |
62 | { | |
63 | GVirConfigObject *object; | |
64 | ||
65 | object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_DOMAIN_CONSOLE, | |
66 | "console", NULL, xml, error); | |
67 | if (object == NULL) | |
68 | return NULL; | |
69 | return GVIR_CONFIG_DOMAIN_CONSOLE(object); | |
70 | } | |
71 | ||
72 | void gvir_config_domain_console_set_target_type(GVirConfigDomainConsole *console, | |
73 | GVirConfigDomainConsoleTargetType type) | |
74 | { | |
75 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_CONSOLE(console)); | |
76 | ||
77 | gvir_config_object_add_child_with_attribute_enum(GVIR_CONFIG_OBJECT(console), | |
78 | "target", "type", | |
79 | GVIR_CONFIG_TYPE_DOMAIN_CONSOLE_TARGET_TYPE, | |
80 | type); | |
81 | } |
0 | /* | |
1 | * libvirt-gconfig-domain-console.h: libvirt domain console configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Daniel P. Berrange <berrange@redhat.com> | |
20 | */ | |
21 | ||
22 | #if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) | |
23 | #error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." | |
24 | #endif | |
25 | ||
26 | #ifndef __LIBVIRT_GCONFIG_DOMAIN_CONSOLE_H__ | |
27 | #define __LIBVIRT_GCONFIG_DOMAIN_CONSOLE_H__ | |
28 | ||
29 | G_BEGIN_DECLS | |
30 | ||
31 | #define GVIR_CONFIG_TYPE_DOMAIN_CONSOLE (gvir_config_domain_console_get_type ()) | |
32 | #define GVIR_CONFIG_DOMAIN_CONSOLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_DOMAIN_CONSOLE, GVirConfigDomainConsole)) | |
33 | #define GVIR_CONFIG_DOMAIN_CONSOLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_DOMAIN_CONSOLE, GVirConfigDomainConsoleClass)) | |
34 | #define GVIR_CONFIG_IS_DOMAIN_CONSOLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_DOMAIN_CONSOLE)) | |
35 | #define GVIR_CONFIG_IS_DOMAIN_CONSOLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_DOMAIN_CONSOLE)) | |
36 | #define GVIR_CONFIG_DOMAIN_CONSOLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_DOMAIN_CONSOLE, GVirConfigDomainConsoleClass)) | |
37 | ||
38 | typedef struct _GVirConfigDomainConsole GVirConfigDomainConsole; | |
39 | typedef struct _GVirConfigDomainConsolePrivate GVirConfigDomainConsolePrivate; | |
40 | typedef struct _GVirConfigDomainConsoleClass GVirConfigDomainConsoleClass; | |
41 | ||
42 | struct _GVirConfigDomainConsole | |
43 | { | |
44 | GVirConfigDomainChardev parent; | |
45 | ||
46 | GVirConfigDomainConsolePrivate *priv; | |
47 | ||
48 | /* Do not add fields to this struct */ | |
49 | }; | |
50 | ||
51 | struct _GVirConfigDomainConsoleClass | |
52 | { | |
53 | GVirConfigDomainChardevClass parent_class; | |
54 | ||
55 | gpointer padding[20]; | |
56 | }; | |
57 | ||
58 | ||
59 | typedef enum { | |
60 | GVIR_CONFIG_DOMAIN_CONSOLE_TARGET_XEN, | |
61 | GVIR_CONFIG_DOMAIN_CONSOLE_TARGET_SERIAL, | |
62 | GVIR_CONFIG_DOMAIN_CONSOLE_TARGET_UML, | |
63 | GVIR_CONFIG_DOMAIN_CONSOLE_TARGET_VIRTIO, | |
64 | GVIR_CONFIG_DOMAIN_CONSOLE_TARGET_LXC, | |
65 | GVIR_CONFIG_DOMAIN_CONSOLE_TARGET_OPENVZ, | |
66 | } GVirConfigDomainConsoleTargetType; | |
67 | ||
68 | GType gvir_config_domain_console_get_type(void); | |
69 | GVirConfigDomainConsole *gvir_config_domain_console_new(void); | |
70 | GVirConfigDomainConsole *gvir_config_domain_console_new_from_xml(const gchar *xml, | |
71 | GError **error); | |
72 | ||
73 | void gvir_config_domain_console_set_target_type(GVirConfigDomainConsole *console, | |
74 | GVirConfigDomainConsoleTargetType type); | |
75 | ||
76 | G_END_DECLS | |
77 | ||
78 | #endif /* __LIBVIRT_GCONFIG_DOMAIN_CONSOLE_H__ */ |
0 | /* | |
1 | * libvirt-gconfig-domain-device-private.h: libvirt domain device configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Christophe Fergeau <cfergeau@gmail.com> | |
20 | */ | |
21 | ||
22 | #ifndef __LIBVIRT_GCONFIG_DOMAIN_DEVICE_PRIVATE_H__ | |
23 | #define __LIBVIRT_GCONFIG_DOMAIN_DEVICE_PRIVATE_H__ | |
24 | ||
25 | #include <libvirt-gconfig/libvirt-gconfig-xml-doc.h> | |
26 | ||
27 | G_BEGIN_DECLS | |
28 | ||
29 | GVirConfigDomainDevice * | |
30 | gvir_config_domain_device_new_from_tree(GVirConfigXmlDoc *doc, | |
31 | xmlNodePtr tree); | |
32 | GVirConfigDomainDevice * | |
33 | gvir_config_domain_disk_new_from_tree(GVirConfigXmlDoc *doc, | |
34 | xmlNodePtr tree); | |
35 | GVirConfigDomainDevice * | |
36 | gvir_config_domain_graphics_new_from_tree(GVirConfigXmlDoc *doc, | |
37 | xmlNodePtr tree); | |
38 | GVirConfigDomainDevice * | |
39 | gvir_config_domain_interface_new_from_tree(GVirConfigXmlDoc *doc, | |
40 | xmlNodePtr tree); | |
41 | ||
42 | G_END_DECLS | |
43 | ||
44 | #endif /* __LIBVIRT_GCONFIG_DOMAIN_H__ */ |
0 | /* | |
1 | * libvirt-gconfig-domain-device.c: libvirt domain device configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Christophe Fergeau <cfergeau@gmail.com> | |
20 | */ | |
21 | ||
22 | #include <config.h> | |
23 | ||
24 | #include "libvirt-gconfig/libvirt-gconfig.h" | |
25 | #include "libvirt-gconfig/libvirt-gconfig-private.h" | |
26 | ||
27 | #define GVIR_CONFIG_DOMAIN_DEVICE_GET_PRIVATE(obj) \ | |
28 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_DEVICE, GVirConfigDomainDevicePrivate)) | |
29 | ||
30 | struct _GVirConfigDomainDevicePrivate | |
31 | { | |
32 | gboolean unused; | |
33 | }; | |
34 | ||
35 | G_DEFINE_ABSTRACT_TYPE(GVirConfigDomainDevice, gvir_config_domain_device, GVIR_CONFIG_TYPE_OBJECT); | |
36 | ||
37 | ||
38 | static void gvir_config_domain_device_class_init(GVirConfigDomainDeviceClass *klass) | |
39 | { | |
40 | g_type_class_add_private(klass, sizeof(GVirConfigDomainDevicePrivate)); | |
41 | } | |
42 | ||
43 | ||
44 | static void gvir_config_domain_device_init(GVirConfigDomainDevice *device) | |
45 | { | |
46 | g_debug("Init GVirConfigDomainDevice=%p", device); | |
47 | ||
48 | device->priv = GVIR_CONFIG_DOMAIN_DEVICE_GET_PRIVATE(device); | |
49 | } | |
50 | ||
51 | G_GNUC_INTERNAL GVirConfigDomainDevice * | |
52 | gvir_config_domain_device_new_from_tree(GVirConfigXmlDoc *doc, | |
53 | xmlNodePtr tree) | |
54 | { | |
55 | GType type; | |
56 | ||
57 | g_return_val_if_fail(GVIR_CONFIG_IS_XML_DOC(doc), NULL); | |
58 | g_return_val_if_fail(tree != NULL, NULL); | |
59 | g_return_val_if_fail(tree->name != NULL, NULL); | |
60 | ||
61 | if (xmlStrEqual(tree->name, (xmlChar*)"disk")) { | |
62 | return gvir_config_domain_disk_new_from_tree(doc, tree); | |
63 | } else if (xmlStrEqual(tree->name, (xmlChar*)"filesystem")) { | |
64 | type = GVIR_CONFIG_TYPE_DOMAIN_FILESYS; | |
65 | } else if (xmlStrEqual(tree->name, (xmlChar*)"controller")) { | |
66 | goto unimplemented; | |
67 | } else if (xmlStrEqual(tree->name, (xmlChar*)"lease")) { | |
68 | goto unimplemented; | |
69 | } else if (xmlStrEqual(tree->name, (xmlChar*)"hostdev")) { | |
70 | goto unimplemented; | |
71 | } else if (xmlStrEqual(tree->name, (xmlChar*)"redirdev")) { | |
72 | goto unimplemented; | |
73 | } else if (xmlStrEqual(tree->name, (xmlChar*)"smartcard")) { | |
74 | goto unimplemented; | |
75 | } else if (xmlStrEqual(tree->name, (xmlChar*)"interface")) { | |
76 | return gvir_config_domain_interface_new_from_tree(doc, tree); | |
77 | } else if (xmlStrEqual(tree->name, (xmlChar*)"input")) { | |
78 | type = GVIR_CONFIG_TYPE_DOMAIN_INPUT; | |
79 | } else if (xmlStrEqual(tree->name, (xmlChar*)"hub")) { | |
80 | goto unimplemented; | |
81 | } else if (xmlStrEqual(tree->name, (xmlChar*)"graphics")) { | |
82 | return gvir_config_domain_graphics_new_from_tree(doc, tree); | |
83 | } else if (xmlStrEqual(tree->name, (xmlChar*)"video")) { | |
84 | type = GVIR_CONFIG_TYPE_DOMAIN_VIDEO; | |
85 | } else if (xmlStrEqual(tree->name, (xmlChar*)"parallel")) { | |
86 | type = GVIR_CONFIG_TYPE_DOMAIN_PARALLEL; | |
87 | } else if (xmlStrEqual(tree->name, (xmlChar*)"serial")) { | |
88 | type = GVIR_CONFIG_TYPE_DOMAIN_SERIAL; | |
89 | } else if (xmlStrEqual(tree->name, (xmlChar*)"console")) { | |
90 | type = GVIR_CONFIG_TYPE_DOMAIN_CONSOLE; | |
91 | } else if (xmlStrEqual(tree->name, (xmlChar*)"channel")) { | |
92 | type = GVIR_CONFIG_TYPE_DOMAIN_CHANNEL; | |
93 | } else if (xmlStrEqual(tree->name, (xmlChar*)"watchdog")) { | |
94 | goto unimplemented; | |
95 | } else if (xmlStrEqual(tree->name, (xmlChar*)"sound")) { | |
96 | type = GVIR_CONFIG_TYPE_DOMAIN_SOUND; | |
97 | } else if (xmlStrEqual(tree->name, (xmlChar*)"memballoon")) { | |
98 | type = GVIR_CONFIG_TYPE_DOMAIN_MEMBALLOON; | |
99 | } else { | |
100 | g_debug("Unknown device node: %s", tree->name); | |
101 | return NULL; | |
102 | } | |
103 | ||
104 | g_return_val_if_fail(g_type_is_a(type, GVIR_CONFIG_TYPE_DOMAIN_DEVICE), NULL); | |
105 | ||
106 | return GVIR_CONFIG_DOMAIN_DEVICE(gvir_config_object_new_from_tree(type, doc, NULL, tree)); | |
107 | unimplemented: | |
108 | g_debug("Parsing of '%s' device nodes is unimplemented", tree->name); | |
109 | return NULL; | |
110 | } |
0 | /* | |
1 | * libvirt-gconfig-domain-device.h: libvirt domain device configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Christophe Fergeau <cfergeau@gmail.com> | |
20 | */ | |
21 | ||
22 | #if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) | |
23 | #error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." | |
24 | #endif | |
25 | ||
26 | #ifndef __LIBVIRT_GCONFIG_DOMAIN_DEVICE_H__ | |
27 | #define __LIBVIRT_GCONFIG_DOMAIN_DEVICE_H__ | |
28 | ||
29 | G_BEGIN_DECLS | |
30 | ||
31 | #define GVIR_CONFIG_TYPE_DOMAIN_DEVICE (gvir_config_domain_device_get_type ()) | |
32 | #define GVIR_CONFIG_DOMAIN_DEVICE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_DOMAIN_DEVICE, GVirConfigDomainDevice)) | |
33 | #define GVIR_CONFIG_DOMAIN_DEVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_DOMAIN_DEVICE, GVirConfigDomainDeviceClass)) | |
34 | #define GVIR_CONFIG_IS_DOMAIN_DEVICE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_DOMAIN_DEVICE)) | |
35 | #define GVIR_CONFIG_IS_DOMAIN_DEVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_DOMAIN_DEVICE)) | |
36 | #define GVIR_CONFIG_DOMAIN_DEVICE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_DOMAIN_DEVICE, GVirConfigDomainDeviceClass)) | |
37 | ||
38 | typedef struct _GVirConfigDomainDevice GVirConfigDomainDevice; | |
39 | typedef struct _GVirConfigDomainDevicePrivate GVirConfigDomainDevicePrivate; | |
40 | typedef struct _GVirConfigDomainDeviceClass GVirConfigDomainDeviceClass; | |
41 | ||
42 | struct _GVirConfigDomainDevice | |
43 | { | |
44 | GVirConfigObject parent; | |
45 | ||
46 | GVirConfigDomainDevicePrivate *priv; | |
47 | ||
48 | /* Do not add fields to this struct */ | |
49 | }; | |
50 | ||
51 | struct _GVirConfigDomainDeviceClass | |
52 | { | |
53 | GVirConfigObjectClass parent_class; | |
54 | ||
55 | gpointer padding[20]; | |
56 | }; | |
57 | ||
58 | ||
59 | GType gvir_config_domain_device_get_type(void); | |
60 | ||
61 | G_END_DECLS | |
62 | ||
63 | #endif /* __LIBVIRT_GCONFIG_DOMAIN_DEVICE_H__ */ |
0 | /* | |
1 | * libvirt-gconfig-domain-disk.c: libvirt domain disk configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Christophe Fergeau <cfergeau@gmail.com> | |
20 | */ | |
21 | ||
22 | #include <config.h> | |
23 | ||
24 | #include "libvirt-gconfig/libvirt-gconfig.h" | |
25 | #include "libvirt-gconfig/libvirt-gconfig-private.h" | |
26 | ||
27 | #define GVIR_CONFIG_DOMAIN_DISK_GET_PRIVATE(obj) \ | |
28 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_DISK, GVirConfigDomainDiskPrivate)) | |
29 | ||
30 | struct _GVirConfigDomainDiskPrivate | |
31 | { | |
32 | GVirConfigDomainDiskType type; | |
33 | }; | |
34 | ||
35 | G_DEFINE_TYPE(GVirConfigDomainDisk, gvir_config_domain_disk, GVIR_CONFIG_TYPE_DOMAIN_DEVICE); | |
36 | ||
37 | ||
38 | static void gvir_config_domain_disk_class_init(GVirConfigDomainDiskClass *klass) | |
39 | { | |
40 | g_type_class_add_private(klass, sizeof(GVirConfigDomainDiskPrivate)); | |
41 | } | |
42 | ||
43 | ||
44 | static void gvir_config_domain_disk_init(GVirConfigDomainDisk *disk) | |
45 | { | |
46 | g_debug("Init GVirConfigDomainDisk=%p", disk); | |
47 | ||
48 | disk->priv = GVIR_CONFIG_DOMAIN_DISK_GET_PRIVATE(disk); | |
49 | } | |
50 | ||
51 | ||
52 | GVirConfigDomainDisk *gvir_config_domain_disk_new(void) | |
53 | { | |
54 | GVirConfigObject *object; | |
55 | ||
56 | object = gvir_config_object_new(GVIR_CONFIG_TYPE_DOMAIN_DISK, | |
57 | "disk", NULL); | |
58 | return GVIR_CONFIG_DOMAIN_DISK(object); | |
59 | } | |
60 | ||
61 | GVirConfigDomainDisk *gvir_config_domain_disk_new_from_xml(const gchar *xml, | |
62 | GError **error) | |
63 | { | |
64 | GVirConfigObject *object; | |
65 | object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_DOMAIN_DISK, | |
66 | "disk", NULL, xml, error); | |
67 | ||
68 | return GVIR_CONFIG_DOMAIN_DISK(object); | |
69 | } | |
70 | ||
71 | GVirConfigDomainDevice * | |
72 | gvir_config_domain_disk_new_from_tree(GVirConfigXmlDoc *doc, | |
73 | xmlNodePtr tree) | |
74 | { | |
75 | GVirConfigObject *object; | |
76 | GVirConfigDomainDisk *disk; | |
77 | GVirConfigDomainDiskType type; | |
78 | xmlChar *type_str; | |
79 | ||
80 | type_str = gvir_config_xml_get_attribute_content(tree, "type"); | |
81 | if (type_str == NULL) | |
82 | return NULL; | |
83 | ||
84 | type = gvir_config_genum_get_value(GVIR_CONFIG_TYPE_DOMAIN_DISK_TYPE, | |
85 | (char *)type_str, | |
86 | GVIR_CONFIG_DOMAIN_DISK_FILE); | |
87 | xmlFree(type_str); | |
88 | if (type == -1) | |
89 | return NULL; | |
90 | ||
91 | object = gvir_config_object_new_from_tree(GVIR_CONFIG_TYPE_DOMAIN_DISK, | |
92 | doc, NULL, tree); | |
93 | disk = GVIR_CONFIG_DOMAIN_DISK(object); | |
94 | disk->priv->type = type; | |
95 | ||
96 | return GVIR_CONFIG_DOMAIN_DEVICE(object); | |
97 | } | |
98 | ||
99 | void gvir_config_domain_disk_set_type(GVirConfigDomainDisk *disk, | |
100 | GVirConfigDomainDiskType type) | |
101 | { | |
102 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_DISK(disk)); | |
103 | ||
104 | gvir_config_object_set_attribute_with_type(GVIR_CONFIG_OBJECT(disk), "type", | |
105 | GVIR_CONFIG_TYPE_DOMAIN_DISK_TYPE, | |
106 | type, NULL); | |
107 | disk->priv->type = type; | |
108 | } | |
109 | ||
110 | void gvir_config_domain_disk_set_guest_device_type(GVirConfigDomainDisk *disk, | |
111 | GVirConfigDomainDiskGuestDeviceType type) | |
112 | { | |
113 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_DISK(disk)); | |
114 | ||
115 | gvir_config_object_set_attribute_with_type(GVIR_CONFIG_OBJECT(disk), "device", | |
116 | GVIR_CONFIG_TYPE_DOMAIN_DISK_GUEST_DEVICE_TYPE, | |
117 | type, NULL); | |
118 | } | |
119 | ||
120 | void gvir_config_domain_disk_set_snapshot_type(GVirConfigDomainDisk *disk, | |
121 | GVirConfigDomainDiskSnapshotType type) | |
122 | { | |
123 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_DISK(disk)); | |
124 | ||
125 | gvir_config_object_set_attribute_with_type(GVIR_CONFIG_OBJECT(disk), "snapshot", | |
126 | GVIR_CONFIG_TYPE_DOMAIN_DISK_SNAPSHOT_TYPE, | |
127 | type, NULL); | |
128 | } | |
129 | ||
130 | void gvir_config_domain_disk_set_source(GVirConfigDomainDisk *disk, | |
131 | const char *source) | |
132 | { | |
133 | const char *attribute_name; | |
134 | ||
135 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_DISK(disk)); | |
136 | ||
137 | switch (disk->priv->type) { | |
138 | case GVIR_CONFIG_DOMAIN_DISK_FILE: | |
139 | attribute_name = "file"; | |
140 | break; | |
141 | case GVIR_CONFIG_DOMAIN_DISK_BLOCK: | |
142 | attribute_name = "dev"; | |
143 | break; | |
144 | case GVIR_CONFIG_DOMAIN_DISK_DIR: | |
145 | attribute_name = "dir"; | |
146 | break; | |
147 | case GVIR_CONFIG_DOMAIN_DISK_NETWORK: | |
148 | attribute_name = "protocol"; | |
149 | break; | |
150 | default: | |
151 | g_return_if_reached(); | |
152 | } | |
153 | gvir_config_object_replace_child_with_attribute(GVIR_CONFIG_OBJECT(disk), | |
154 | "source", | |
155 | attribute_name, source); | |
156 | } | |
157 | ||
158 | void gvir_config_domain_disk_set_driver_name(GVirConfigDomainDisk *disk, | |
159 | const char *driver_name) | |
160 | { | |
161 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_DISK(disk)); | |
162 | gvir_config_object_add_child_with_attribute(GVIR_CONFIG_OBJECT(disk), | |
163 | "driver", "name", driver_name); | |
164 | } | |
165 | ||
166 | void gvir_config_domain_disk_set_driver_type(GVirConfigDomainDisk *disk, | |
167 | const char *driver_type) | |
168 | { | |
169 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_DISK(disk)); | |
170 | gvir_config_object_add_child_with_attribute(GVIR_CONFIG_OBJECT(disk), | |
171 | "driver", "type", driver_type); | |
172 | } | |
173 | ||
174 | void gvir_config_domain_disk_set_target_bus(GVirConfigDomainDisk *disk, | |
175 | GVirConfigDomainDiskBus bus) | |
176 | { | |
177 | const char *bus_str; | |
178 | ||
179 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_DISK(disk)); | |
180 | bus_str = gvir_config_genum_get_nick(GVIR_CONFIG_TYPE_DOMAIN_DISK_BUS, bus); | |
181 | g_return_if_fail(bus_str != NULL); | |
182 | gvir_config_object_add_child_with_attribute(GVIR_CONFIG_OBJECT(disk), | |
183 | "target", "bus", bus_str); | |
184 | } | |
185 | ||
186 | void gvir_config_domain_disk_set_target_dev(GVirConfigDomainDisk *disk, | |
187 | const char *dev) | |
188 | { | |
189 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_DISK(disk)); | |
190 | gvir_config_object_add_child_with_attribute(GVIR_CONFIG_OBJECT(disk), | |
191 | "target", "dev", dev); | |
192 | } | |
193 | ||
194 | GVirConfigDomainDiskType | |
195 | gvir_config_domain_disk_get_disk_type(GVirConfigDomainDisk *disk) | |
196 | { | |
197 | return disk->priv->type; | |
198 | } | |
199 | ||
200 | GVirConfigDomainDiskGuestDeviceType | |
201 | gvir_config_domain_disk_get_guest_device_type(GVirConfigDomainDisk *disk) | |
202 | { | |
203 | g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_DISK(disk), | |
204 | GVIR_CONFIG_DOMAIN_DISK_GUEST_DEVICE_DISK); | |
205 | ||
206 | return gvir_config_object_get_attribute_genum(GVIR_CONFIG_OBJECT(disk), | |
207 | NULL, | |
208 | "device", | |
209 | GVIR_CONFIG_TYPE_DOMAIN_DISK_GUEST_DEVICE_TYPE, | |
210 | GVIR_CONFIG_DOMAIN_DISK_GUEST_DEVICE_DISK); | |
211 | } | |
212 | ||
213 | GVirConfigDomainDiskSnapshotType | |
214 | gvir_config_domain_disk_get_snapshot_type(GVirConfigDomainDisk *disk) | |
215 | { | |
216 | g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_DISK(disk), | |
217 | GVIR_CONFIG_DOMAIN_DISK_SNAPSHOT_NO); | |
218 | ||
219 | return gvir_config_object_get_attribute_genum(GVIR_CONFIG_OBJECT(disk), | |
220 | NULL, | |
221 | "snapshot", | |
222 | GVIR_CONFIG_TYPE_DOMAIN_DISK_SNAPSHOT_TYPE, | |
223 | GVIR_CONFIG_DOMAIN_DISK_SNAPSHOT_NO); | |
224 | } | |
225 | ||
226 | char * | |
227 | gvir_config_domain_disk_get_source(GVirConfigDomainDisk *disk) | |
228 | { | |
229 | const char *attribute_name; | |
230 | ||
231 | g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_DISK(disk), NULL); | |
232 | ||
233 | switch (disk->priv->type) { | |
234 | case GVIR_CONFIG_DOMAIN_DISK_FILE: | |
235 | attribute_name = "file"; | |
236 | break; | |
237 | case GVIR_CONFIG_DOMAIN_DISK_BLOCK: | |
238 | attribute_name = "dev"; | |
239 | break; | |
240 | case GVIR_CONFIG_DOMAIN_DISK_DIR: | |
241 | attribute_name = "dir"; | |
242 | break; | |
243 | case GVIR_CONFIG_DOMAIN_DISK_NETWORK: | |
244 | attribute_name = "protocol"; | |
245 | break; | |
246 | default: | |
247 | g_return_val_if_reached(NULL); | |
248 | } | |
249 | return gvir_config_object_get_attribute(GVIR_CONFIG_OBJECT(disk), | |
250 | "source", attribute_name); | |
251 | } | |
252 | ||
253 | char * | |
254 | gvir_config_domain_disk_get_driver_name(GVirConfigDomainDisk *disk) | |
255 | { | |
256 | g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_DISK(disk), NULL); | |
257 | ||
258 | return gvir_config_object_get_attribute(GVIR_CONFIG_OBJECT(disk), | |
259 | "driver", "name"); | |
260 | } | |
261 | ||
262 | char * | |
263 | gvir_config_domain_disk_get_driver_type(GVirConfigDomainDisk *disk) | |
264 | { | |
265 | g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_DISK(disk), NULL); | |
266 | ||
267 | return gvir_config_object_get_attribute(GVIR_CONFIG_OBJECT(disk), | |
268 | "driver", "type"); | |
269 | } | |
270 | ||
271 | GVirConfigDomainDiskBus | |
272 | gvir_config_domain_disk_get_target_bus(GVirConfigDomainDisk *disk) | |
273 | { | |
274 | /* FIXME: the default value depends on the "name" attribute, should we | |
275 | * copy what libvirt is doing here? | |
276 | */ | |
277 | g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_DISK(disk), | |
278 | GVIR_CONFIG_DOMAIN_DISK_BUS_IDE); | |
279 | ||
280 | return gvir_config_object_get_attribute_genum(GVIR_CONFIG_OBJECT(disk), | |
281 | "target", "snapshot", | |
282 | GVIR_CONFIG_TYPE_DOMAIN_DISK_BUS, | |
283 | GVIR_CONFIG_DOMAIN_DISK_BUS_IDE); | |
284 | } | |
285 | ||
286 | char * | |
287 | gvir_config_domain_disk_get_target_dev(GVirConfigDomainDisk *disk) | |
288 | { | |
289 | g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_DISK(disk), NULL); | |
290 | ||
291 | return gvir_config_object_get_attribute(GVIR_CONFIG_OBJECT(disk), | |
292 | "target", "dev"); | |
293 | } |
0 | /* | |
1 | * libvirt-gconfig-domain-disk.h: libvirt domain disk configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Christophe Fergeau <cfergeau@gmail.com> | |
20 | */ | |
21 | ||
22 | #if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) | |
23 | #error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." | |
24 | #endif | |
25 | ||
26 | #ifndef __LIBVIRT_GCONFIG_DOMAIN_DISK_H__ | |
27 | #define __LIBVIRT_GCONFIG_DOMAIN_DISK_H__ | |
28 | ||
29 | G_BEGIN_DECLS | |
30 | ||
31 | #define GVIR_CONFIG_TYPE_DOMAIN_DISK (gvir_config_domain_disk_get_type ()) | |
32 | #define GVIR_CONFIG_DOMAIN_DISK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_DOMAIN_DISK, GVirConfigDomainDisk)) | |
33 | #define GVIR_CONFIG_DOMAIN_DISK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_DOMAIN_DISK, GVirConfigDomainDiskClass)) | |
34 | #define GVIR_CONFIG_IS_DOMAIN_DISK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_DOMAIN_DISK)) | |
35 | #define GVIR_CONFIG_IS_DOMAIN_DISK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_DOMAIN_DISK)) | |
36 | #define GVIR_CONFIG_DOMAIN_DISK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_DOMAIN_DISK, GVirConfigDomainDiskClass)) | |
37 | ||
38 | typedef struct _GVirConfigDomainDisk GVirConfigDomainDisk; | |
39 | typedef struct _GVirConfigDomainDiskPrivate GVirConfigDomainDiskPrivate; | |
40 | typedef struct _GVirConfigDomainDiskClass GVirConfigDomainDiskClass; | |
41 | ||
42 | struct _GVirConfigDomainDisk | |
43 | { | |
44 | GVirConfigDomainDevice parent; | |
45 | ||
46 | GVirConfigDomainDiskPrivate *priv; | |
47 | ||
48 | /* Do not add fields to this struct */ | |
49 | }; | |
50 | ||
51 | struct _GVirConfigDomainDiskClass | |
52 | { | |
53 | GVirConfigDomainDeviceClass parent_class; | |
54 | ||
55 | gpointer padding[20]; | |
56 | }; | |
57 | ||
58 | typedef enum { | |
59 | GVIR_CONFIG_DOMAIN_DISK_FILE, | |
60 | GVIR_CONFIG_DOMAIN_DISK_BLOCK, | |
61 | GVIR_CONFIG_DOMAIN_DISK_DIR, | |
62 | GVIR_CONFIG_DOMAIN_DISK_NETWORK | |
63 | } GVirConfigDomainDiskType; | |
64 | ||
65 | typedef enum { | |
66 | GVIR_CONFIG_DOMAIN_DISK_BUS_IDE, | |
67 | GVIR_CONFIG_DOMAIN_DISK_BUS_FDC, | |
68 | GVIR_CONFIG_DOMAIN_DISK_BUS_SCSI, | |
69 | GVIR_CONFIG_DOMAIN_DISK_BUS_VIRTIO, | |
70 | GVIR_CONFIG_DOMAIN_DISK_BUS_XEN, | |
71 | GVIR_CONFIG_DOMAIN_DISK_BUS_USB, | |
72 | GVIR_CONFIG_DOMAIN_DISK_BUS_UML, | |
73 | GVIR_CONFIG_DOMAIN_DISK_BUS_SATA | |
74 | } GVirConfigDomainDiskBus; | |
75 | ||
76 | typedef enum { | |
77 | GVIR_CONFIG_DOMAIN_DISK_GUEST_DEVICE_DISK, | |
78 | GVIR_CONFIG_DOMAIN_DISK_GUEST_DEVICE_FLOPPY, | |
79 | GVIR_CONFIG_DOMAIN_DISK_GUEST_DEVICE_CDROM | |
80 | } GVirConfigDomainDiskGuestDeviceType; | |
81 | ||
82 | typedef enum { | |
83 | GVIR_CONFIG_DOMAIN_DISK_SNAPSHOT_NO, | |
84 | GVIR_CONFIG_DOMAIN_DISK_SNAPSHOT_INTERNAL, | |
85 | GVIR_CONFIG_DOMAIN_DISK_SNAPSHOT_EXTERNAL | |
86 | } GVirConfigDomainDiskSnapshotType; | |
87 | ||
88 | GType gvir_config_domain_disk_get_type(void); | |
89 | ||
90 | GVirConfigDomainDisk *gvir_config_domain_disk_new(void); | |
91 | GVirConfigDomainDisk *gvir_config_domain_disk_new_from_xml(const gchar *xml, | |
92 | GError **error); | |
93 | ||
94 | void gvir_config_domain_disk_set_type(GVirConfigDomainDisk *disk, | |
95 | GVirConfigDomainDiskType type); | |
96 | void gvir_config_domain_disk_set_guest_device_type(GVirConfigDomainDisk *disk, | |
97 | GVirConfigDomainDiskGuestDeviceType type); | |
98 | void gvir_config_domain_disk_set_snapshot_type(GVirConfigDomainDisk *disk, | |
99 | GVirConfigDomainDiskSnapshotType type); | |
100 | void gvir_config_domain_disk_set_source(GVirConfigDomainDisk *disk, | |
101 | const char *source); | |
102 | void gvir_config_domain_disk_set_driver_name(GVirConfigDomainDisk *disk, | |
103 | const char *driver_name); | |
104 | void gvir_config_domain_disk_set_driver_type(GVirConfigDomainDisk *disk, | |
105 | const char *driver_type); | |
106 | void gvir_config_domain_disk_set_target_bus(GVirConfigDomainDisk *disk, | |
107 | GVirConfigDomainDiskBus bus); | |
108 | void gvir_config_domain_disk_set_target_dev(GVirConfigDomainDisk *disk, | |
109 | const char *dev); | |
110 | ||
111 | GVirConfigDomainDiskType gvir_config_domain_disk_get_disk_type(GVirConfigDomainDisk *disk); | |
112 | GVirConfigDomainDiskGuestDeviceType gvir_config_domain_disk_get_guest_device_type(GVirConfigDomainDisk *disk); | |
113 | GVirConfigDomainDiskSnapshotType gvir_config_domain_disk_get_snapshot_type(GVirConfigDomainDisk *disk); | |
114 | char *gvir_config_domain_disk_get_source(GVirConfigDomainDisk *disk); | |
115 | char *gvir_config_domain_disk_get_driver_name(GVirConfigDomainDisk *disk); | |
116 | char *gvir_config_domain_disk_get_driver_type(GVirConfigDomainDisk *disk); | |
117 | GVirConfigDomainDiskBus gvir_config_domain_disk_get_target_bus(GVirConfigDomainDisk *disk); | |
118 | char *gvir_config_domain_disk_get_target_dev(GVirConfigDomainDisk *disk); | |
119 | ||
120 | G_END_DECLS | |
121 | ||
122 | #endif /* __LIBVIRT_GCONFIG_DOMAIN_DISK_H__ */ |
0 | /* | |
1 | * libvirt-gconfig-domain-filesys.c: libvirt domain filesystem configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Daniel P. Berrange <berrange@redhat.com> | |
20 | */ | |
21 | ||
22 | #include <config.h> | |
23 | ||
24 | #include "libvirt-gconfig/libvirt-gconfig.h" | |
25 | #include "libvirt-gconfig/libvirt-gconfig-private.h" | |
26 | ||
27 | #define GVIR_CONFIG_DOMAIN_FILESYS_GET_PRIVATE(obj) \ | |
28 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_FILESYS, GVirConfigDomainFilesysPrivate)) | |
29 | ||
30 | struct _GVirConfigDomainFilesysPrivate | |
31 | { | |
32 | GVirConfigDomainFilesysType type; | |
33 | }; | |
34 | ||
35 | G_DEFINE_TYPE(GVirConfigDomainFilesys, gvir_config_domain_filesys, GVIR_CONFIG_TYPE_DOMAIN_DEVICE); | |
36 | ||
37 | ||
38 | static void gvir_config_domain_filesys_class_init(GVirConfigDomainFilesysClass *klass) | |
39 | { | |
40 | g_type_class_add_private(klass, sizeof(GVirConfigDomainFilesysPrivate)); | |
41 | } | |
42 | ||
43 | ||
44 | static void gvir_config_domain_filesys_init(GVirConfigDomainFilesys *filesys) | |
45 | { | |
46 | g_debug("Init GVirConfigDomainFilesys=%p", filesys); | |
47 | ||
48 | filesys->priv = GVIR_CONFIG_DOMAIN_FILESYS_GET_PRIVATE(filesys); | |
49 | } | |
50 | ||
51 | ||
52 | GVirConfigDomainFilesys *gvir_config_domain_filesys_new(void) | |
53 | { | |
54 | GVirConfigObject *object; | |
55 | ||
56 | object = gvir_config_object_new(GVIR_CONFIG_TYPE_DOMAIN_FILESYS, | |
57 | "filesystem", NULL); | |
58 | return GVIR_CONFIG_DOMAIN_FILESYS(object); | |
59 | } | |
60 | ||
61 | GVirConfigDomainFilesys *gvir_config_domain_filesys_new_from_xml(const gchar *xml, | |
62 | GError **error) | |
63 | { | |
64 | GVirConfigObject *object; | |
65 | ||
66 | object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_DOMAIN_FILESYS, | |
67 | "filesystem", NULL, xml, error); | |
68 | return GVIR_CONFIG_DOMAIN_FILESYS(object); | |
69 | } | |
70 | ||
71 | void gvir_config_domain_filesys_set_type(GVirConfigDomainFilesys *filesys, | |
72 | GVirConfigDomainFilesysType type) | |
73 | { | |
74 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_FILESYS(filesys)); | |
75 | ||
76 | gvir_config_object_set_attribute_with_type(GVIR_CONFIG_OBJECT(filesys), | |
77 | "type", | |
78 | GVIR_CONFIG_TYPE_DOMAIN_FILESYS_TYPE, | |
79 | type, | |
80 | NULL); | |
81 | } | |
82 | ||
83 | void gvir_config_domain_filesys_set_access_type(GVirConfigDomainFilesys *filesys, | |
84 | GVirConfigDomainFilesysAccessType type) | |
85 | { | |
86 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_FILESYS(filesys)); | |
87 | ||
88 | gvir_config_object_set_attribute_with_type(GVIR_CONFIG_OBJECT(filesys), | |
89 | "accessmode", | |
90 | GVIR_CONFIG_TYPE_DOMAIN_FILESYS_ACCESS_TYPE, | |
91 | type, | |
92 | NULL); | |
93 | } | |
94 | ||
95 | void gvir_config_domain_filesys_set_driver_type(GVirConfigDomainFilesys *filesys, | |
96 | GVirConfigDomainFilesysDriverType type) | |
97 | { | |
98 | GVirConfigObject *node; | |
99 | ||
100 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_FILESYS(filesys)); | |
101 | node = gvir_config_object_add_child(GVIR_CONFIG_OBJECT(filesys), "driver"); | |
102 | g_return_if_fail(GVIR_CONFIG_IS_OBJECT(node)); | |
103 | if (type != GVIR_CONFIG_DOMAIN_FILESYS_DRIVER_DEFAULT) | |
104 | gvir_config_object_set_attribute_with_type( | |
105 | node, "type", | |
106 | GVIR_CONFIG_TYPE_DOMAIN_FILESYS_DRIVER_TYPE, | |
107 | type, NULL); | |
108 | else | |
109 | gvir_config_object_remove_attribute(node, "type"); | |
110 | g_object_unref(G_OBJECT(node)); | |
111 | } | |
112 | ||
113 | void gvir_config_domain_filesys_set_source(GVirConfigDomainFilesys *filesys, | |
114 | const char *source) | |
115 | { | |
116 | const char *attribute_name; | |
117 | ||
118 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_FILESYS(filesys)); | |
119 | ||
120 | switch (filesys->priv->type) { | |
121 | case GVIR_CONFIG_DOMAIN_FILESYS_MOUNT: | |
122 | attribute_name = "dir"; | |
123 | break; | |
124 | case GVIR_CONFIG_DOMAIN_FILESYS_FILE: | |
125 | attribute_name = "file"; | |
126 | break; | |
127 | case GVIR_CONFIG_DOMAIN_FILESYS_BLOCK: | |
128 | attribute_name = "dev"; | |
129 | break; | |
130 | case GVIR_CONFIG_DOMAIN_FILESYS_TEMPLATE: | |
131 | attribute_name = "name"; | |
132 | break; | |
133 | default: | |
134 | g_return_if_reached(); | |
135 | } | |
136 | ||
137 | gvir_config_object_replace_child_with_attribute(GVIR_CONFIG_OBJECT(filesys), | |
138 | "source", | |
139 | attribute_name, source); | |
140 | } | |
141 | ||
142 | ||
143 | void gvir_config_domain_filesys_set_target(GVirConfigDomainFilesys *filesys, | |
144 | const char *path) | |
145 | { | |
146 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_FILESYS(filesys)); | |
147 | gvir_config_object_add_child_with_attribute(GVIR_CONFIG_OBJECT(filesys), | |
148 | "target", "dir", path); | |
149 | } | |
150 | ||
151 | void gvir_config_domain_filesys_set_readonly(GVirConfigDomainFilesys *filesys, | |
152 | gboolean readonly) | |
153 | { | |
154 | if (readonly) { | |
155 | GVirConfigObject *node = gvir_config_object_replace_child(GVIR_CONFIG_OBJECT(filesys), "readonly"); | |
156 | g_object_unref(node); | |
157 | } else { | |
158 | gvir_config_object_delete_child(GVIR_CONFIG_OBJECT(filesys), "readonly"); | |
159 | } | |
160 | } |
0 | /* | |
1 | * libvirt-gconfig-domain-filesys.h: libvirt domain filesystem configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Daniel P. Berrange <berrange@redhat.com> | |
20 | */ | |
21 | ||
22 | #if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) | |
23 | #error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." | |
24 | #endif | |
25 | ||
26 | #ifndef __LIBVIRT_GCONFIG_DOMAIN_FILESYS_H__ | |
27 | #define __LIBVIRT_GCONFIG_DOMAIN_FILESYS_H__ | |
28 | ||
29 | G_BEGIN_DECLS | |
30 | ||
31 | #define GVIR_CONFIG_TYPE_DOMAIN_FILESYS (gvir_config_domain_filesys_get_type ()) | |
32 | #define GVIR_CONFIG_DOMAIN_FILESYS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_DOMAIN_FILESYS, GVirConfigDomainFilesys)) | |
33 | #define GVIR_CONFIG_DOMAIN_FILESYS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_DOMAIN_FILESYS, GVirConfigDomainFilesysClass)) | |
34 | #define GVIR_CONFIG_IS_DOMAIN_FILESYS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_DOMAIN_FILESYS)) | |
35 | #define GVIR_CONFIG_IS_DOMAIN_FILESYS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_DOMAIN_FILESYS)) | |
36 | #define GVIR_CONFIG_DOMAIN_FILESYS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_DOMAIN_FILESYS, GVirConfigDomainFilesysClass)) | |
37 | ||
38 | typedef struct _GVirConfigDomainFilesys GVirConfigDomainFilesys; | |
39 | typedef struct _GVirConfigDomainFilesysPrivate GVirConfigDomainFilesysPrivate; | |
40 | typedef struct _GVirConfigDomainFilesysClass GVirConfigDomainFilesysClass; | |
41 | ||
42 | struct _GVirConfigDomainFilesys | |
43 | { | |
44 | GVirConfigDomainDevice parent; | |
45 | ||
46 | GVirConfigDomainFilesysPrivate *priv; | |
47 | ||
48 | /* Do not add fields to this struct */ | |
49 | }; | |
50 | ||
51 | struct _GVirConfigDomainFilesysClass | |
52 | { | |
53 | GVirConfigDomainDeviceClass parent_class; | |
54 | ||
55 | gpointer padding[20]; | |
56 | }; | |
57 | ||
58 | typedef enum { | |
59 | GVIR_CONFIG_DOMAIN_FILESYS_MOUNT, | |
60 | GVIR_CONFIG_DOMAIN_FILESYS_BLOCK, | |
61 | GVIR_CONFIG_DOMAIN_FILESYS_FILE, | |
62 | GVIR_CONFIG_DOMAIN_FILESYS_TEMPLATE, | |
63 | } GVirConfigDomainFilesysType; | |
64 | ||
65 | typedef enum { | |
66 | GVIR_CONFIG_DOMAIN_FILESYS_ACCESS_PASSTHROUGH, | |
67 | GVIR_CONFIG_DOMAIN_FILESYS_ACCESS_MAPPED, | |
68 | GVIR_CONFIG_DOMAIN_FILESYS_ACCESS_SQUASHED, | |
69 | } GVirConfigDomainFilesysAccessType; | |
70 | ||
71 | typedef enum { | |
72 | GVIR_CONFIG_DOMAIN_FILESYS_DRIVER_DEFAULT, | |
73 | GVIR_CONFIG_DOMAIN_FILESYS_DRIVER_PATH, | |
74 | GVIR_CONFIG_DOMAIN_FILESYS_DRIVER_HANDLE, | |
75 | } GVirConfigDomainFilesysDriverType; | |
76 | ||
77 | GType gvir_config_domain_filesys_get_type(void); | |
78 | ||
79 | GVirConfigDomainFilesys *gvir_config_domain_filesys_new(void); | |
80 | GVirConfigDomainFilesys *gvir_config_domain_filesys_new_from_xml(const gchar *xml, | |
81 | GError **error); | |
82 | ||
83 | void gvir_config_domain_filesys_set_type(GVirConfigDomainFilesys *filesys, | |
84 | GVirConfigDomainFilesysType type); | |
85 | void gvir_config_domain_filesys_set_access_type(GVirConfigDomainFilesys *filesys, | |
86 | GVirConfigDomainFilesysAccessType type); | |
87 | void gvir_config_domain_filesys_set_driver_type(GVirConfigDomainFilesys *filesys, | |
88 | GVirConfigDomainFilesysDriverType type); | |
89 | void gvir_config_domain_filesys_set_source(GVirConfigDomainFilesys *filesys, | |
90 | const char *source); | |
91 | void gvir_config_domain_filesys_set_target(GVirConfigDomainFilesys *filesys, | |
92 | const char *target); | |
93 | void gvir_config_domain_filesys_set_readonly(GVirConfigDomainFilesys *filesys, | |
94 | gboolean readonly); | |
95 | G_END_DECLS | |
96 | ||
97 | #endif /* __LIBVIRT_GCONFIG_DOMAIN_FILESYS_H__ */ |
0 | /* | |
1 | * libvirt-gconfig-domain-graphics-sdl.c: libvirt domain SDL configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Daniel P. Berrange <berrange@redhat.com> | |
20 | */ | |
21 | ||
22 | #include <config.h> | |
23 | ||
24 | #include "libvirt-gconfig/libvirt-gconfig.h" | |
25 | #include "libvirt-gconfig/libvirt-gconfig-private.h" | |
26 | ||
27 | #define GVIR_CONFIG_DOMAIN_GRAPHICS_SDL_GET_PRIVATE(obj) \ | |
28 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS_SDL, GVirConfigDomainGraphicsSdlPrivate)) | |
29 | ||
30 | struct _GVirConfigDomainGraphicsSdlPrivate | |
31 | { | |
32 | gboolean unused; | |
33 | }; | |
34 | ||
35 | G_DEFINE_TYPE(GVirConfigDomainGraphicsSdl, gvir_config_domain_graphics_sdl, GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS); | |
36 | ||
37 | ||
38 | static void gvir_config_domain_graphics_sdl_class_init(GVirConfigDomainGraphicsSdlClass *klass) | |
39 | { | |
40 | g_type_class_add_private(klass, sizeof(GVirConfigDomainGraphicsSdlPrivate)); | |
41 | } | |
42 | ||
43 | ||
44 | static void gvir_config_domain_graphics_sdl_init(GVirConfigDomainGraphicsSdl *graphics_sdl) | |
45 | { | |
46 | g_debug("Init GVirConfigDomainGraphicsSdl=%p", graphics_sdl); | |
47 | ||
48 | graphics_sdl->priv = GVIR_CONFIG_DOMAIN_GRAPHICS_SDL_GET_PRIVATE(graphics_sdl); | |
49 | } | |
50 | ||
51 | ||
52 | GVirConfigDomainGraphicsSdl *gvir_config_domain_graphics_sdl_new(void) | |
53 | { | |
54 | GVirConfigObject *object; | |
55 | ||
56 | object = gvir_config_object_new(GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS_SDL, | |
57 | "graphics", NULL); | |
58 | gvir_config_object_set_attribute(object, "type", "sdl", NULL); | |
59 | return GVIR_CONFIG_DOMAIN_GRAPHICS_SDL(object); | |
60 | } | |
61 | ||
62 | GVirConfigDomainGraphicsSdl * | |
63 | gvir_config_domain_graphics_sdl_new_from_xml(const gchar *xml, | |
64 | GError **error) | |
65 | { | |
66 | GVirConfigObject *object; | |
67 | ||
68 | object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS_SDL, | |
69 | "graphics", NULL, xml, error); | |
70 | if (object == NULL) | |
71 | return NULL; | |
72 | gvir_config_object_set_attribute(object, "type", "sdl", NULL); | |
73 | return GVIR_CONFIG_DOMAIN_GRAPHICS_SDL(object); | |
74 | } | |
75 | ||
76 | void gvir_config_domain_graphics_sdl_set_xauthority(GVirConfigDomainGraphicsSdl *graphics, | |
77 | const gchar *path) | |
78 | { | |
79 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_GRAPHICS_SDL(graphics)); | |
80 | ||
81 | gvir_config_object_set_attribute(GVIR_CONFIG_OBJECT(graphics), | |
82 | "xauth", path, | |
83 | NULL); | |
84 | } | |
85 | ||
86 | void gvir_config_domain_graphics_sdl_set_display(GVirConfigDomainGraphicsSdl *graphics, | |
87 | const gchar *disp) | |
88 | { | |
89 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_GRAPHICS_SDL(graphics)); | |
90 | ||
91 | gvir_config_object_set_attribute(GVIR_CONFIG_OBJECT(graphics), | |
92 | "display", disp, | |
93 | NULL); | |
94 | } |
0 | /* | |
1 | * libvirt-gconfig-domain-graphics-sdl.h: libvirt domain SDL configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Daniel P. Berrange <berrange@redhat.com> | |
20 | */ | |
21 | ||
22 | #if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) | |
23 | #error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." | |
24 | #endif | |
25 | ||
26 | #ifndef __LIBVIRT_GCONFIG_DOMAIN_GRAPHICS_SDL_H__ | |
27 | #define __LIBVIRT_GCONFIG_DOMAIN_GRAPHICS_SDL_H__ | |
28 | ||
29 | G_BEGIN_DECLS | |
30 | ||
31 | #define GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS_SDL (gvir_config_domain_graphics_sdl_get_type ()) | |
32 | #define GVIR_CONFIG_DOMAIN_GRAPHICS_SDL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS_SDL, GVirConfigDomainGraphicsSdl)) | |
33 | #define GVIR_CONFIG_DOMAIN_GRAPHICS_SDL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS_SDL, GVirConfigDomainGraphicsSdlClass)) | |
34 | #define GVIR_CONFIG_IS_DOMAIN_GRAPHICS_SDL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS_SDL)) | |
35 | #define GVIR_CONFIG_IS_DOMAIN_GRAPHICS_SDL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS_SDL)) | |
36 | #define GVIR_CONFIG_DOMAIN_GRAPHICS_SDL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS_SDL, GVirConfigDomainGraphicsSdlClass)) | |
37 | ||
38 | typedef struct _GVirConfigDomainGraphicsSdl GVirConfigDomainGraphicsSdl; | |
39 | typedef struct _GVirConfigDomainGraphicsSdlPrivate GVirConfigDomainGraphicsSdlPrivate; | |
40 | typedef struct _GVirConfigDomainGraphicsSdlClass GVirConfigDomainGraphicsSdlClass; | |
41 | ||
42 | struct _GVirConfigDomainGraphicsSdl | |
43 | { | |
44 | GVirConfigDomainGraphics parent; | |
45 | ||
46 | GVirConfigDomainGraphicsSdlPrivate *priv; | |
47 | ||
48 | /* Do not add fields to this struct */ | |
49 | }; | |
50 | ||
51 | struct _GVirConfigDomainGraphicsSdlClass | |
52 | { | |
53 | GVirConfigDomainGraphicsClass parent_class; | |
54 | ||
55 | gpointer padding[20]; | |
56 | }; | |
57 | ||
58 | GType gvir_config_domain_graphics_sdl_get_type(void); | |
59 | ||
60 | GVirConfigDomainGraphicsSdl *gvir_config_domain_graphics_sdl_new(void); | |
61 | GVirConfigDomainGraphicsSdl *gvir_config_domain_graphics_sdl_new_from_xml(const gchar *xml, | |
62 | GError **error); | |
63 | void gvir_config_domain_graphics_sdl_set_xauthority(GVirConfigDomainGraphicsSdl *graphics, | |
64 | const gchar *path); | |
65 | void gvir_config_domain_graphics_sdl_set_display(GVirConfigDomainGraphicsSdl *graphics, | |
66 | const gchar *disp); | |
67 | ||
68 | G_END_DECLS | |
69 | ||
70 | #endif /* __LIBVIRT_GCONFIG_DOMAIN_GRAPHICS_SDL_H__ */ |
0 | /* | |
1 | * libvirt-gconfig-domain-graphics-spice.c: libvirt domain SPICE configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Christophe Fergeau <cfergeau@gmail.com> | |
20 | */ | |
21 | ||
22 | #include <config.h> | |
23 | ||
24 | #include "libvirt-gconfig/libvirt-gconfig.h" | |
25 | #include "libvirt-gconfig/libvirt-gconfig-private.h" | |
26 | ||
27 | #define GVIR_CONFIG_DOMAIN_GRAPHICS_SPICE_GET_PRIVATE(obj) \ | |
28 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS_SPICE, GVirConfigDomainGraphicsSpicePrivate)) | |
29 | ||
30 | struct _GVirConfigDomainGraphicsSpicePrivate | |
31 | { | |
32 | gboolean unused; | |
33 | }; | |
34 | ||
35 | G_DEFINE_TYPE(GVirConfigDomainGraphicsSpice, gvir_config_domain_graphics_spice, GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS); | |
36 | ||
37 | ||
38 | static void gvir_config_domain_graphics_spice_class_init(GVirConfigDomainGraphicsSpiceClass *klass) | |
39 | { | |
40 | g_type_class_add_private(klass, sizeof(GVirConfigDomainGraphicsSpicePrivate)); | |
41 | } | |
42 | ||
43 | ||
44 | static void gvir_config_domain_graphics_spice_init(GVirConfigDomainGraphicsSpice *graphics_spice) | |
45 | { | |
46 | g_debug("Init GVirConfigDomainGraphicsSpice=%p", graphics_spice); | |
47 | ||
48 | graphics_spice->priv = GVIR_CONFIG_DOMAIN_GRAPHICS_SPICE_GET_PRIVATE(graphics_spice); | |
49 | } | |
50 | ||
51 | ||
52 | GVirConfigDomainGraphicsSpice *gvir_config_domain_graphics_spice_new(void) | |
53 | { | |
54 | GVirConfigObject *object; | |
55 | ||
56 | object = gvir_config_object_new(GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS_SPICE, | |
57 | "graphics", NULL); | |
58 | gvir_config_object_set_attribute(object, "type", "spice", NULL); | |
59 | return GVIR_CONFIG_DOMAIN_GRAPHICS_SPICE(object); | |
60 | } | |
61 | ||
62 | GVirConfigDomainGraphicsSpice * | |
63 | gvir_config_domain_graphics_spice_new_from_xml(const gchar *xml, | |
64 | GError **error) | |
65 | { | |
66 | GVirConfigObject *object; | |
67 | ||
68 | object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS_SPICE, | |
69 | "graphics", NULL, xml, error); | |
70 | if (object == NULL) | |
71 | return NULL; | |
72 | gvir_config_object_set_attribute(object, "type", "spice", NULL); | |
73 | return GVIR_CONFIG_DOMAIN_GRAPHICS_SPICE(object); | |
74 | } | |
75 | ||
76 | void gvir_config_domain_graphics_spice_set_autoport(GVirConfigDomainGraphicsSpice *graphics, | |
77 | gboolean autoport) | |
78 | { | |
79 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_GRAPHICS_SPICE(graphics)); | |
80 | ||
81 | gvir_config_object_set_attribute_with_type(GVIR_CONFIG_OBJECT(graphics), | |
82 | "autoport", G_TYPE_BOOLEAN, autoport, | |
83 | NULL); | |
84 | } | |
85 | ||
86 | void gvir_config_domain_graphics_spice_set_password(GVirConfigDomainGraphicsSpice *graphics, | |
87 | const char *password) | |
88 | { | |
89 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_GRAPHICS_SPICE(graphics)); | |
90 | ||
91 | gvir_config_object_set_attribute(GVIR_CONFIG_OBJECT(graphics), | |
92 | "passwd", password, | |
93 | NULL); | |
94 | } | |
95 | ||
96 | void gvir_config_domain_graphics_spice_set_port(GVirConfigDomainGraphicsSpice *graphics, | |
97 | int port) | |
98 | { | |
99 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_GRAPHICS_SPICE(graphics)); | |
100 | ||
101 | gvir_config_object_set_attribute_with_type(GVIR_CONFIG_OBJECT(graphics), | |
102 | "port", G_TYPE_INT, port, | |
103 | NULL); | |
104 | } | |
105 | ||
106 | void gvir_config_domain_graphics_spice_set_tls_port(GVirConfigDomainGraphicsSpice *graphics, | |
107 | int port) | |
108 | { | |
109 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_GRAPHICS_SPICE(graphics)); | |
110 | ||
111 | gvir_config_object_set_attribute_with_type(GVIR_CONFIG_OBJECT(graphics), | |
112 | "tlsPort", G_TYPE_INT, port, | |
113 | NULL); | |
114 | } |
0 | /* | |
1 | * libvirt-gconfig-domain-graphics-spice.h: libvirt domain SPICE confiiguration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Christophe Fergeau <cfergeau@gmail.com> | |
20 | */ | |
21 | ||
22 | #if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) | |
23 | #error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." | |
24 | #endif | |
25 | ||
26 | #ifndef __LIBVIRT_GCONFIG_DOMAIN_GRAPHICS_SPICE_H__ | |
27 | #define __LIBVIRT_GCONFIG_DOMAIN_GRAPHICS_SPICE_H__ | |
28 | ||
29 | G_BEGIN_DECLS | |
30 | ||
31 | #define GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS_SPICE (gvir_config_domain_graphics_spice_get_type ()) | |
32 | #define GVIR_CONFIG_DOMAIN_GRAPHICS_SPICE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS_SPICE, GVirConfigDomainGraphicsSpice)) | |
33 | #define GVIR_CONFIG_DOMAIN_GRAPHICS_SPICE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS_SPICE, GVirConfigDomainGraphicsSpiceClass)) | |
34 | #define GVIR_CONFIG_IS_DOMAIN_GRAPHICS_SPICE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS_SPICE)) | |
35 | #define GVIR_CONFIG_IS_DOMAIN_GRAPHICS_SPICE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS_SPICE)) | |
36 | #define GVIR_CONFIG_DOMAIN_GRAPHICS_SPICE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS_SPICE, GVirConfigDomainGraphicsSpiceClass)) | |
37 | ||
38 | typedef struct _GVirConfigDomainGraphicsSpice GVirConfigDomainGraphicsSpice; | |
39 | typedef struct _GVirConfigDomainGraphicsSpicePrivate GVirConfigDomainGraphicsSpicePrivate; | |
40 | typedef struct _GVirConfigDomainGraphicsSpiceClass GVirConfigDomainGraphicsSpiceClass; | |
41 | ||
42 | struct _GVirConfigDomainGraphicsSpice | |
43 | { | |
44 | GVirConfigDomainGraphics parent; | |
45 | ||
46 | GVirConfigDomainGraphicsSpicePrivate *priv; | |
47 | ||
48 | /* Do not add fields to this struct */ | |
49 | }; | |
50 | ||
51 | struct _GVirConfigDomainGraphicsSpiceClass | |
52 | { | |
53 | GVirConfigDomainGraphicsClass parent_class; | |
54 | ||
55 | gpointer padding[20]; | |
56 | }; | |
57 | ||
58 | GType gvir_config_domain_graphics_spice_get_type(void); | |
59 | ||
60 | GVirConfigDomainGraphicsSpice *gvir_config_domain_graphics_spice_new(void); | |
61 | GVirConfigDomainGraphicsSpice *gvir_config_domain_graphics_spice_new_from_xml(const gchar *xml, | |
62 | GError **error); | |
63 | ||
64 | void gvir_config_domain_graphics_spice_set_autoport(GVirConfigDomainGraphicsSpice *graphics, | |
65 | gboolean autoport); | |
66 | ||
67 | void gvir_config_domain_graphics_spice_set_password(GVirConfigDomainGraphicsSpice *graphics, | |
68 | const char *password); | |
69 | ||
70 | void gvir_config_domain_graphics_spice_set_port(GVirConfigDomainGraphicsSpice *graphics, | |
71 | int port); | |
72 | ||
73 | void gvir_config_domain_graphics_spice_set_tls_port(GVirConfigDomainGraphicsSpice *graphics, | |
74 | int port); | |
75 | ||
76 | G_END_DECLS | |
77 | ||
78 | #endif /* __LIBVIRT_GCONFIG_DOMAIN_GRAPHICS_SPICE_H__ */ |
0 | /* | |
1 | * libvirt-gconfig-domain-graphics-vnc.c: libvirt domain VNC configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Daniel P. Berrange <berrange@redhat.com> | |
20 | */ | |
21 | ||
22 | #include <config.h> | |
23 | ||
24 | #include "libvirt-gconfig/libvirt-gconfig.h" | |
25 | #include "libvirt-gconfig/libvirt-gconfig-private.h" | |
26 | ||
27 | #define GVIR_CONFIG_DOMAIN_GRAPHICS_VNC_GET_PRIVATE(obj) \ | |
28 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS_VNC, GVirConfigDomainGraphicsVncPrivate)) | |
29 | ||
30 | struct _GVirConfigDomainGraphicsVncPrivate | |
31 | { | |
32 | gboolean unused; | |
33 | }; | |
34 | ||
35 | G_DEFINE_TYPE(GVirConfigDomainGraphicsVnc, gvir_config_domain_graphics_vnc, GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS); | |
36 | ||
37 | ||
38 | static void gvir_config_domain_graphics_vnc_class_init(GVirConfigDomainGraphicsVncClass *klass) | |
39 | { | |
40 | g_type_class_add_private(klass, sizeof(GVirConfigDomainGraphicsVncPrivate)); | |
41 | } | |
42 | ||
43 | ||
44 | static void gvir_config_domain_graphics_vnc_init(GVirConfigDomainGraphicsVnc *graphics_vnc) | |
45 | { | |
46 | g_debug("Init GVirConfigDomainGraphicsVnc=%p", graphics_vnc); | |
47 | ||
48 | graphics_vnc->priv = GVIR_CONFIG_DOMAIN_GRAPHICS_VNC_GET_PRIVATE(graphics_vnc); | |
49 | } | |
50 | ||
51 | ||
52 | GVirConfigDomainGraphicsVnc *gvir_config_domain_graphics_vnc_new(void) | |
53 | { | |
54 | GVirConfigObject *object; | |
55 | ||
56 | object = gvir_config_object_new(GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS_VNC, | |
57 | "graphics", NULL); | |
58 | gvir_config_object_set_attribute(object, "type", "vnc", NULL); | |
59 | return GVIR_CONFIG_DOMAIN_GRAPHICS_VNC(object); | |
60 | } | |
61 | ||
62 | GVirConfigDomainGraphicsVnc * | |
63 | gvir_config_domain_graphics_vnc_new_from_xml(const gchar *xml, | |
64 | GError **error) | |
65 | { | |
66 | GVirConfigObject *object; | |
67 | ||
68 | object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS_VNC, | |
69 | "graphics", NULL, xml, error); | |
70 | if (object == NULL) | |
71 | return NULL; | |
72 | gvir_config_object_set_attribute(object, "type", "vnc", NULL); | |
73 | return GVIR_CONFIG_DOMAIN_GRAPHICS_VNC(object); | |
74 | } | |
75 | ||
76 | ||
77 | void gvir_config_domain_graphics_vnc_set_autoport(GVirConfigDomainGraphicsVnc *graphics, | |
78 | gboolean autoport) | |
79 | { | |
80 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_GRAPHICS_VNC(graphics)); | |
81 | ||
82 | gvir_config_object_set_attribute_with_type(GVIR_CONFIG_OBJECT(graphics), | |
83 | "autoport", G_TYPE_BOOLEAN, autoport, | |
84 | NULL); | |
85 | } | |
86 | ||
87 | void gvir_config_domain_graphics_vnc_set_port(GVirConfigDomainGraphicsVnc *graphics, | |
88 | int port) | |
89 | { | |
90 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_GRAPHICS_VNC(graphics)); | |
91 | ||
92 | gvir_config_object_set_attribute_with_type(GVIR_CONFIG_OBJECT(graphics), | |
93 | "port", G_TYPE_INT, port, | |
94 | NULL); | |
95 | } | |
96 | ||
97 | void gvir_config_domain_graphics_vnc_set_password(GVirConfigDomainGraphicsVnc *graphics, | |
98 | const char *password) | |
99 | { | |
100 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_GRAPHICS_VNC(graphics)); | |
101 | ||
102 | gvir_config_object_set_attribute(GVIR_CONFIG_OBJECT(graphics), | |
103 | "passwd", password, | |
104 | NULL); | |
105 | } |
0 | /* | |
1 | * libvirt-gconfig-domain-graphics-vnc.h: libvirt domain VNC graphics configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Daniel P. Berrange <berrange@redhat.com> | |
20 | */ | |
21 | ||
22 | #if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) | |
23 | #error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." | |
24 | #endif | |
25 | ||
26 | #ifndef __LIBVIRT_GCONFIG_DOMAIN_GRAPHICS_VNC_H__ | |
27 | #define __LIBVIRT_GCONFIG_DOMAIN_GRAPHICS_VNC_H__ | |
28 | ||
29 | G_BEGIN_DECLS | |
30 | ||
31 | #define GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS_VNC (gvir_config_domain_graphics_vnc_get_type ()) | |
32 | #define GVIR_CONFIG_DOMAIN_GRAPHICS_VNC(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS_VNC, GVirConfigDomainGraphicsVnc)) | |
33 | #define GVIR_CONFIG_DOMAIN_GRAPHICS_VNC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS_VNC, GVirConfigDomainGraphicsVncClass)) | |
34 | #define GVIR_CONFIG_IS_DOMAIN_GRAPHICS_VNC(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS_VNC)) | |
35 | #define GVIR_CONFIG_IS_DOMAIN_GRAPHICS_VNC_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS_VNC)) | |
36 | #define GVIR_CONFIG_DOMAIN_GRAPHICS_VNC_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS_VNC, GVirConfigDomainGraphicsVncClass)) | |
37 | ||
38 | typedef struct _GVirConfigDomainGraphicsVnc GVirConfigDomainGraphicsVnc; | |
39 | typedef struct _GVirConfigDomainGraphicsVncPrivate GVirConfigDomainGraphicsVncPrivate; | |
40 | typedef struct _GVirConfigDomainGraphicsVncClass GVirConfigDomainGraphicsVncClass; | |
41 | ||
42 | struct _GVirConfigDomainGraphicsVnc | |
43 | { | |
44 | GVirConfigDomainGraphics parent; | |
45 | ||
46 | GVirConfigDomainGraphicsVncPrivate *priv; | |
47 | ||
48 | /* Do not add fields to this struct */ | |
49 | }; | |
50 | ||
51 | struct _GVirConfigDomainGraphicsVncClass | |
52 | { | |
53 | GVirConfigDomainGraphicsClass parent_class; | |
54 | ||
55 | gpointer padding[20]; | |
56 | }; | |
57 | ||
58 | GType gvir_config_domain_graphics_vnc_get_type(void); | |
59 | ||
60 | GVirConfigDomainGraphicsVnc *gvir_config_domain_graphics_vnc_new(void); | |
61 | GVirConfigDomainGraphicsVnc *gvir_config_domain_graphics_vnc_new_from_xml(const gchar *xml, | |
62 | GError **error); | |
63 | ||
64 | void gvir_config_domain_graphics_vnc_set_autoport(GVirConfigDomainGraphicsVnc *graphics, | |
65 | gboolean autoport); | |
66 | ||
67 | void gvir_config_domain_graphics_vnc_set_port(GVirConfigDomainGraphicsVnc *graphics, | |
68 | int port); | |
69 | ||
70 | void gvir_config_domain_graphics_vnc_set_password(GVirConfigDomainGraphicsVnc *graphics, | |
71 | const char *password); | |
72 | ||
73 | G_END_DECLS | |
74 | ||
75 | #endif /* __LIBVIRT_GCONFIG_DOMAIN_GRAPHICS_VNC_H__ */ |
0 | /* | |
1 | * libvirt-gconfig-domain-graphics.c: libvirt domain graphics configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Christophe Fergeau <cfergeau@gmail.com> | |
20 | */ | |
21 | ||
22 | #include <config.h> | |
23 | ||
24 | #include "libvirt-gconfig/libvirt-gconfig.h" | |
25 | #include "libvirt-gconfig/libvirt-gconfig-private.h" | |
26 | ||
27 | #define GVIR_CONFIG_DOMAIN_GRAPHICS_GET_PRIVATE(obj) \ | |
28 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS, GVirConfigDomainGraphicsPrivate)) | |
29 | ||
30 | struct _GVirConfigDomainGraphicsPrivate | |
31 | { | |
32 | gboolean unused; | |
33 | }; | |
34 | ||
35 | G_DEFINE_ABSTRACT_TYPE(GVirConfigDomainGraphics, gvir_config_domain_graphics, GVIR_CONFIG_TYPE_DOMAIN_DEVICE); | |
36 | ||
37 | ||
38 | static void gvir_config_domain_graphics_class_init(GVirConfigDomainGraphicsClass *klass) | |
39 | { | |
40 | g_type_class_add_private(klass, sizeof(GVirConfigDomainGraphicsPrivate)); | |
41 | } | |
42 | ||
43 | ||
44 | static void gvir_config_domain_graphics_init(GVirConfigDomainGraphics *graphics) | |
45 | { | |
46 | g_debug("Init GVirConfigDomainGraphics=%p", graphics); | |
47 | ||
48 | graphics->priv = GVIR_CONFIG_DOMAIN_GRAPHICS_GET_PRIVATE(graphics); | |
49 | } | |
50 | ||
51 | G_GNUC_INTERNAL GVirConfigDomainDevice * | |
52 | gvir_config_domain_graphics_new_from_tree(GVirConfigXmlDoc *doc, | |
53 | xmlNodePtr tree) | |
54 | { | |
55 | xmlChar *type; | |
56 | GType gtype; | |
57 | ||
58 | type = gvir_config_xml_get_attribute_content(tree, "type"); | |
59 | if (type == NULL) | |
60 | return NULL; | |
61 | ||
62 | if (xmlStrEqual(type, (xmlChar*)"sdl")) { | |
63 | gtype = GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS_SDL; | |
64 | } else if (xmlStrEqual(type, (xmlChar*)"vnc")) { | |
65 | gtype = GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS_VNC; | |
66 | } else if (xmlStrEqual(type, (xmlChar*)"spice")) { | |
67 | gtype = GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS_SPICE; | |
68 | } else if (xmlStrEqual(type, (xmlChar*)"rdp")) { | |
69 | goto unimplemented; | |
70 | } else if (xmlStrEqual(type, (xmlChar*)"desktop")) { | |
71 | goto unimplemented; | |
72 | } else { | |
73 | g_debug("Unknown graphics node: %s", type); | |
74 | return NULL; | |
75 | } | |
76 | xmlFree(type); | |
77 | ||
78 | return GVIR_CONFIG_DOMAIN_DEVICE(gvir_config_object_new_from_tree(gtype, doc, NULL, tree)); | |
79 | ||
80 | unimplemented: | |
81 | g_debug("Parsing of '%s' graphics nodes is unimplemented", type); | |
82 | return NULL; | |
83 | } |
0 | /* | |
1 | * libvirt-gconfig-domain-graphics.h: libvirt domain graphics configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Christophe Fergeau <cfergeau@gmail.com> | |
20 | */ | |
21 | ||
22 | #if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) | |
23 | #error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." | |
24 | #endif | |
25 | ||
26 | #ifndef __LIBVIRT_GCONFIG_DOMAIN_GRAPHICS_H__ | |
27 | #define __LIBVIRT_GCONFIG_DOMAIN_GRAPHICS_H__ | |
28 | ||
29 | G_BEGIN_DECLS | |
30 | ||
31 | #define GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS (gvir_config_domain_graphics_get_type ()) | |
32 | #define GVIR_CONFIG_DOMAIN_GRAPHICS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS, GVirConfigDomainGraphics)) | |
33 | #define GVIR_CONFIG_DOMAIN_GRAPHICS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS, GVirConfigDomainGraphicsClass)) | |
34 | #define GVIR_CONFIG_IS_DOMAIN_GRAPHICS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS)) | |
35 | #define GVIR_CONFIG_IS_DOMAIN_GRAPHICS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS)) | |
36 | #define GVIR_CONFIG_DOMAIN_GRAPHICS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS, GVirConfigDomainGraphicsClass)) | |
37 | ||
38 | typedef struct _GVirConfigDomainGraphics GVirConfigDomainGraphics; | |
39 | typedef struct _GVirConfigDomainGraphicsPrivate GVirConfigDomainGraphicsPrivate; | |
40 | typedef struct _GVirConfigDomainGraphicsClass GVirConfigDomainGraphicsClass; | |
41 | ||
42 | struct _GVirConfigDomainGraphics | |
43 | { | |
44 | GVirConfigDomainDevice parent; | |
45 | ||
46 | GVirConfigDomainGraphicsPrivate *priv; | |
47 | ||
48 | /* Do not add fields to this struct */ | |
49 | }; | |
50 | ||
51 | struct _GVirConfigDomainGraphicsClass | |
52 | { | |
53 | GVirConfigDomainDeviceClass parent_class; | |
54 | ||
55 | gpointer padding[20]; | |
56 | }; | |
57 | ||
58 | ||
59 | GType gvir_config_domain_graphics_get_type(void); | |
60 | ||
61 | G_END_DECLS | |
62 | ||
63 | #endif /* __LIBVIRT_GCONFIG_DOMAIN_GRAPHICS_H__ */ |
0 | /* | |
1 | * libvirt-gconfig-device-input.c: libvirt domain input configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Christophe Fergeau <cfergeau@gmail.com> | |
20 | */ | |
21 | ||
22 | #include <config.h> | |
23 | ||
24 | #include "libvirt-gconfig/libvirt-gconfig.h" | |
25 | #include "libvirt-gconfig/libvirt-gconfig-private.h" | |
26 | ||
27 | #define GVIR_CONFIG_DOMAIN_INPUT_GET_PRIVATE(obj) \ | |
28 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_INPUT, GVirConfigDomainInputPrivate)) | |
29 | ||
30 | struct _GVirConfigDomainInputPrivate | |
31 | { | |
32 | gboolean unused; | |
33 | }; | |
34 | ||
35 | G_DEFINE_TYPE(GVirConfigDomainInput, gvir_config_domain_input, GVIR_CONFIG_TYPE_DOMAIN_DEVICE); | |
36 | ||
37 | ||
38 | static void gvir_config_domain_input_class_init(GVirConfigDomainInputClass *klass) | |
39 | { | |
40 | g_type_class_add_private(klass, sizeof(GVirConfigDomainInputPrivate)); | |
41 | } | |
42 | ||
43 | ||
44 | static void gvir_config_domain_input_init(GVirConfigDomainInput *device_input) | |
45 | { | |
46 | g_debug("Init GVirConfigDomainInput=%p", device_input); | |
47 | ||
48 | device_input->priv = GVIR_CONFIG_DOMAIN_INPUT_GET_PRIVATE(device_input); | |
49 | } | |
50 | ||
51 | ||
52 | GVirConfigDomainInput *gvir_config_domain_input_new(void) | |
53 | { | |
54 | GVirConfigObject *object; | |
55 | ||
56 | object = gvir_config_object_new(GVIR_CONFIG_TYPE_DOMAIN_INPUT, | |
57 | "input", NULL); | |
58 | return GVIR_CONFIG_DOMAIN_INPUT(object); | |
59 | } | |
60 | ||
61 | GVirConfigDomainInput *gvir_config_domain_input_new_from_xml(const gchar *xml, | |
62 | GError **error) | |
63 | { | |
64 | GVirConfigObject *object; | |
65 | ||
66 | object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_DOMAIN_INPUT, | |
67 | "input", NULL, xml, error); | |
68 | return GVIR_CONFIG_DOMAIN_INPUT(object); | |
69 | } | |
70 | ||
71 | void gvir_config_domain_input_set_device_type(GVirConfigDomainInput *input, | |
72 | GVirConfigDomainInputDeviceType type) | |
73 | { | |
74 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_INPUT(input)); | |
75 | ||
76 | gvir_config_object_set_attribute_with_type(GVIR_CONFIG_OBJECT(input), "type", | |
77 | GVIR_CONFIG_TYPE_DOMAIN_INPUT_DEVICE_TYPE, | |
78 | type, NULL); | |
79 | } | |
80 | ||
81 | void gvir_config_domain_input_set_bus(GVirConfigDomainInput *input, | |
82 | GVirConfigDomainInputBus bus) | |
83 | { | |
84 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_INPUT(input)); | |
85 | ||
86 | gvir_config_object_set_attribute_with_type(GVIR_CONFIG_OBJECT(input), "bus", | |
87 | GVIR_CONFIG_TYPE_DOMAIN_INPUT_BUS, | |
88 | bus, NULL); | |
89 | } |
0 | /* | |
1 | * libvirt-gconfig-domain-input.c: libvirt domain input configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Christophe Fergeau <cfergeau@gmail.com> | |
20 | */ | |
21 | ||
22 | #if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) | |
23 | #error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." | |
24 | #endif | |
25 | ||
26 | #ifndef __LIBVIRT_GCONFIG_DOMAIN_INPUT_H__ | |
27 | #define __LIBVIRT_GCONFIG_DOMAIN_INPUT_H__ | |
28 | ||
29 | G_BEGIN_DECLS | |
30 | ||
31 | #define GVIR_CONFIG_TYPE_DOMAIN_INPUT (gvir_config_domain_input_get_type ()) | |
32 | #define GVIR_CONFIG_DOMAIN_INPUT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_DOMAIN_INPUT, GVirConfigDomainInput)) | |
33 | #define GVIR_CONFIG_DOMAIN_INPUT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_DOMAIN_INPUT, GVirConfigDomainInputClass)) | |
34 | #define GVIR_CONFIG_IS_DOMAIN_INPUT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_DOMAIN_INPUT)) | |
35 | #define GVIR_CONFIG_IS_DOMAIN_INPUT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_DOMAIN_INPUT)) | |
36 | #define GVIR_CONFIG_DOMAIN_INPUT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_DOMAIN_INPUT, GVirConfigDomainInputClass)) | |
37 | ||
38 | typedef struct _GVirConfigDomainInput GVirConfigDomainInput; | |
39 | typedef struct _GVirConfigDomainInputPrivate GVirConfigDomainInputPrivate; | |
40 | typedef struct _GVirConfigDomainInputClass GVirConfigDomainInputClass; | |
41 | ||
42 | struct _GVirConfigDomainInput | |
43 | { | |
44 | GVirConfigDomainDevice parent; | |
45 | ||
46 | GVirConfigDomainInputPrivate *priv; | |
47 | ||
48 | /* Do not add fields to this struct */ | |
49 | }; | |
50 | ||
51 | struct _GVirConfigDomainInputClass | |
52 | { | |
53 | GVirConfigDomainDeviceClass parent_class; | |
54 | ||
55 | gpointer padding[20]; | |
56 | }; | |
57 | ||
58 | typedef enum { | |
59 | GVIR_CONFIG_DOMAIN_INPUT_DEVICE_MOUSE, | |
60 | GVIR_CONFIG_DOMAIN_INPUT_DEVICE_TABLET | |
61 | } GVirConfigDomainInputDeviceType; | |
62 | ||
63 | typedef enum { | |
64 | GVIR_CONFIG_DOMAIN_INPUT_BUS_PS2, | |
65 | GVIR_CONFIG_DOMAIN_INPUT_BUS_USB, | |
66 | GVIR_CONFIG_DOMAIN_INPUT_BUS_XEN | |
67 | } GVirConfigDomainInputBus; | |
68 | ||
69 | GType gvir_config_domain_input_get_type(void); | |
70 | ||
71 | GVirConfigDomainInput *gvir_config_domain_input_new(void); | |
72 | GVirConfigDomainInput *gvir_config_domain_input_new_from_xml(const gchar *xml, | |
73 | GError **error); | |
74 | void gvir_config_domain_input_set_device_type(GVirConfigDomainInput *input, | |
75 | GVirConfigDomainInputDeviceType type); | |
76 | void gvir_config_domain_input_set_bus(GVirConfigDomainInput *input, | |
77 | GVirConfigDomainInputBus bus); | |
78 | ||
79 | G_END_DECLS | |
80 | ||
81 | #endif /* __LIBVIRT_GCONFIG_DOMAIN_INPUT_H__ */ |
0 | /* | |
1 | * libvirt-gconfig-domain-interface-bridge.c: libvirt domain interface configuration | |
2 | * | |
3 | * Copyright (C) 2008 Daniel P. Berrange | |
4 | * Copyright (C) 2011 Red Hat, Inc. | |
5 | * | |
6 | * This library is free software; you can redistribute it and/or | |
7 | * modify it under the terms of the GNU Lesser General Public | |
8 | * License as published by the Free Software Foundation; either | |
9 | * version 2.1 of the License, or (at your option) any later version. | |
10 | * | |
11 | * This library is distributed in the hope that it will be useful, | |
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
14 | * Lesser General Public License for more details. | |
15 | * | |
16 | * You should have received a copy of the GNU Lesser General Public | |
17 | * License along with this library; if not, write to the Free Software | |
18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
19 | * | |
20 | * Author: Daniel P. Berrange <berrange@redhat.com> | |
21 | * Author: Christophe Fergeau <cfergeau@redhat.com> | |
22 | */ | |
23 | ||
24 | #include <config.h> | |
25 | ||
26 | #include "libvirt-gconfig/libvirt-gconfig.h" | |
27 | #include "libvirt-gconfig/libvirt-gconfig-helpers-private.h" | |
28 | #include "libvirt-gconfig/libvirt-gconfig-object-private.h" | |
29 | ||
30 | #define GVIR_CONFIG_DOMAIN_INTERFACE_BRIDGE_GET_PRIVATE(obj) \ | |
31 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_INTERFACE_BRIDGE, GVirConfigDomainInterfaceBridgePrivate)) | |
32 | ||
33 | struct _GVirConfigDomainInterfaceBridgePrivate | |
34 | { | |
35 | gboolean unused; | |
36 | }; | |
37 | ||
38 | G_DEFINE_TYPE(GVirConfigDomainInterfaceBridge, gvir_config_domain_interface_bridge, GVIR_CONFIG_TYPE_DOMAIN_INTERFACE); | |
39 | ||
40 | ||
41 | static void gvir_config_domain_interface_bridge_class_init(GVirConfigDomainInterfaceBridgeClass *klass) | |
42 | { | |
43 | g_type_class_add_private(klass, sizeof(GVirConfigDomainInterfaceBridgePrivate)); | |
44 | } | |
45 | ||
46 | ||
47 | static void gvir_config_domain_interface_bridge_init(GVirConfigDomainInterfaceBridge *conn) | |
48 | { | |
49 | g_debug("Init GVirConfigDomainInterfaceBridge=%p", conn); | |
50 | ||
51 | conn->priv = GVIR_CONFIG_DOMAIN_INTERFACE_BRIDGE_GET_PRIVATE(conn); | |
52 | } | |
53 | ||
54 | ||
55 | GVirConfigDomainInterfaceBridge *gvir_config_domain_interface_bridge_new(void) | |
56 | { | |
57 | GVirConfigObject *object; | |
58 | ||
59 | object = gvir_config_object_new(GVIR_CONFIG_TYPE_DOMAIN_INTERFACE_BRIDGE, | |
60 | "interface", NULL); | |
61 | gvir_config_object_set_attribute(object, "type", "bridge", NULL); | |
62 | return GVIR_CONFIG_DOMAIN_INTERFACE_BRIDGE(object); | |
63 | } | |
64 | ||
65 | GVirConfigDomainInterfaceBridge *gvir_config_domain_interface_bridge_new_from_xml(const gchar *xml, | |
66 | GError **error) | |
67 | { | |
68 | GVirConfigObject *object; | |
69 | ||
70 | object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_DOMAIN_INTERFACE_BRIDGE, | |
71 | "interface", NULL, xml, error); | |
72 | if (object == NULL) | |
73 | return NULL; | |
74 | gvir_config_object_set_attribute(object, "type", "bridge", NULL); | |
75 | return GVIR_CONFIG_DOMAIN_INTERFACE_BRIDGE(object); | |
76 | } | |
77 | ||
78 | void gvir_config_domain_interface_bridge_set_source(GVirConfigDomainInterfaceBridge *interface, | |
79 | const char *brname) | |
80 | { | |
81 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_INTERFACE_BRIDGE(interface)); | |
82 | ||
83 | gvir_config_object_replace_child_with_attribute(GVIR_CONFIG_OBJECT(interface), | |
84 | "source", "bridge", brname); | |
85 | } |
0 | /* | |
1 | * libvirt-gconfig-domain-interface-bridge.c: libvirt domain interface configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Daniel P. Berrange <berrange@redhat.com> | |
20 | * Author: Christophe Fergeau <cfergeau@redhat.com> | |
21 | */ | |
22 | ||
23 | #if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) | |
24 | #error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." | |
25 | #endif | |
26 | ||
27 | #ifndef __LIBVIRT_GCONFIG_DOMAIN_INTERFACE_BRIDGE_H__ | |
28 | #define __LIBVIRT_GCONFIG_DOMAIN_INTERFACE_BRIDGE_H__ | |
29 | ||
30 | G_BEGIN_DECLS | |
31 | ||
32 | #define GVIR_CONFIG_TYPE_DOMAIN_INTERFACE_BRIDGE (gvir_config_domain_interface_bridge_get_type ()) | |
33 | #define GVIR_CONFIG_DOMAIN_INTERFACE_BRIDGE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_DOMAIN_INTERFACE, GVirConfigDomainInterfaceBridge)) | |
34 | #define GVIR_CONFIG_DOMAIN_INTERFACE_BRIDGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_DOMAIN_INTERFACE, GVirConfigDomainInterfaceBridgeClass)) | |
35 | #define GVIR_CONFIG_IS_DOMAIN_INTERFACE_BRIDGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_DOMAIN_INTERFACE)) | |
36 | #define GVIR_CONFIG_IS_DOMAIN_INTERFACE_BRIDGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_DOMAIN_INTERFACE)) | |
37 | #define GVIR_CONFIG_DOMAIN_INTERFACE_BRIDGE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_DOMAIN_INTERFACE, GVirConfigDomainInterfaceBridgeClass)) | |
38 | ||
39 | typedef struct _GVirConfigDomainInterfaceBridge GVirConfigDomainInterfaceBridge; | |
40 | typedef struct _GVirConfigDomainInterfaceBridgePrivate GVirConfigDomainInterfaceBridgePrivate; | |
41 | typedef struct _GVirConfigDomainInterfaceBridgeClass GVirConfigDomainInterfaceBridgeClass; | |
42 | ||
43 | struct _GVirConfigDomainInterfaceBridge | |
44 | { | |
45 | GVirConfigDomainInterface parent; | |
46 | ||
47 | GVirConfigDomainInterfaceBridgePrivate *priv; | |
48 | ||
49 | /* Do not add fields to this struct */ | |
50 | }; | |
51 | ||
52 | struct _GVirConfigDomainInterfaceBridgeClass | |
53 | { | |
54 | GVirConfigDomainInterfaceClass parent_class; | |
55 | ||
56 | gpointer padding[20]; | |
57 | }; | |
58 | ||
59 | GType gvir_config_domain_interface_bridge_get_type(void); | |
60 | ||
61 | GVirConfigDomainInterfaceBridge *gvir_config_domain_interface_bridge_new(void); | |
62 | GVirConfigDomainInterfaceBridge *gvir_config_domain_interface_bridge_new_from_xml(const gchar *xml, | |
63 | GError **error); | |
64 | void gvir_config_domain_interface_bridge_set_source(GVirConfigDomainInterfaceBridge *interface, | |
65 | const char *brname); | |
66 | ||
67 | G_END_DECLS | |
68 | ||
69 | #endif /* __LIBVIRT_GCONFIG_DOMAIN_INTERFACE_BRIDGE_H__ */ |
0 | /* | |
1 | * libvirt-gconfig-domain-interface-network.c: libvirt domain interface configuration | |
2 | * | |
3 | * Copyright (C) 2008 Daniel P. Berrange | |
4 | * Copyright (C) 2011 Red Hat, Inc. | |
5 | * | |
6 | * This library is free software; you can redistribute it and/or | |
7 | * modify it under the terms of the GNU Lesser General Public | |
8 | * License as published by the Free Software Foundation; either | |
9 | * version 2.1 of the License, or (at your option) any later version. | |
10 | * | |
11 | * This library is distributed in the hope that it will be useful, | |
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
14 | * Lesser General Public License for more details. | |
15 | * | |
16 | * You should have received a copy of the GNU Lesser General Public | |
17 | * License along with this library; if not, write to the Free Software | |
18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
19 | * | |
20 | * Author: Daniel P. Berrange <berrange@redhat.com> | |
21 | * Author: Christophe Fergeau <cfergeau@redhat.com> | |
22 | */ | |
23 | ||
24 | #include <config.h> | |
25 | ||
26 | #include "libvirt-gconfig/libvirt-gconfig.h" | |
27 | #include "libvirt-gconfig/libvirt-gconfig-private.h" | |
28 | ||
29 | #define GVIR_CONFIG_DOMAIN_INTERFACE_NETWORK_GET_PRIVATE(obj) \ | |
30 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_INTERFACE_NETWORK, GVirConfigDomainInterfaceNetworkPrivate)) | |
31 | ||
32 | struct _GVirConfigDomainInterfaceNetworkPrivate | |
33 | { | |
34 | gboolean unused; | |
35 | }; | |
36 | ||
37 | G_DEFINE_TYPE(GVirConfigDomainInterfaceNetwork, gvir_config_domain_interface_network, GVIR_CONFIG_TYPE_DOMAIN_INTERFACE); | |
38 | ||
39 | ||
40 | static void gvir_config_domain_interface_network_class_init(GVirConfigDomainInterfaceNetworkClass *klass) | |
41 | { | |
42 | g_type_class_add_private(klass, sizeof(GVirConfigDomainInterfaceNetworkPrivate)); | |
43 | } | |
44 | ||
45 | ||
46 | static void gvir_config_domain_interface_network_init(GVirConfigDomainInterfaceNetwork *conn) | |
47 | { | |
48 | g_debug("Init GVirConfigDomainInterfaceNetwork=%p", conn); | |
49 | ||
50 | conn->priv = GVIR_CONFIG_DOMAIN_INTERFACE_NETWORK_GET_PRIVATE(conn); | |
51 | } | |
52 | ||
53 | ||
54 | GVirConfigDomainInterfaceNetwork *gvir_config_domain_interface_network_new(void) | |
55 | { | |
56 | GVirConfigObject *object; | |
57 | ||
58 | object = gvir_config_object_new(GVIR_CONFIG_TYPE_DOMAIN_INTERFACE_NETWORK, | |
59 | "interface", NULL); | |
60 | gvir_config_object_set_attribute(object, "type", "network", NULL); | |
61 | return GVIR_CONFIG_DOMAIN_INTERFACE_NETWORK(object); | |
62 | } | |
63 | ||
64 | GVirConfigDomainInterfaceNetwork *gvir_config_domain_interface_network_new_from_xml(const gchar *xml, | |
65 | GError **error) | |
66 | { | |
67 | GVirConfigObject *object; | |
68 | ||
69 | object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_DOMAIN_INTERFACE_NETWORK, | |
70 | "interface", NULL, xml, error); | |
71 | if (object == NULL) | |
72 | return NULL; | |
73 | gvir_config_object_set_attribute(object, "type", "network", NULL); | |
74 | return GVIR_CONFIG_DOMAIN_INTERFACE_NETWORK(object); | |
75 | } | |
76 | ||
77 | void gvir_config_domain_interface_network_set_source(GVirConfigDomainInterfaceNetwork *interface, | |
78 | const char *source) | |
79 | { | |
80 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_INTERFACE_NETWORK(interface)); | |
81 | ||
82 | gvir_config_object_replace_child_with_attribute(GVIR_CONFIG_OBJECT(interface), | |
83 | "source", "network", source); | |
84 | } |
0 | /* | |
1 | * libvirt-gconfig-domain-interface-network.c: libvirt domain interface configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Daniel P. Berrange <berrange@redhat.com> | |
20 | * Author: Christophe Fergeau <cfergeau@redhat.com> | |
21 | */ | |
22 | ||
23 | #if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) | |
24 | #error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." | |
25 | #endif | |
26 | ||
27 | #ifndef __LIBVIRT_GCONFIG_DOMAIN_INTERFACE_NETWORK_H__ | |
28 | #define __LIBVIRT_GCONFIG_DOMAIN_INTERFACE_NETWORK_H__ | |
29 | ||
30 | G_BEGIN_DECLS | |
31 | ||
32 | #define GVIR_CONFIG_TYPE_DOMAIN_INTERFACE_NETWORK (gvir_config_domain_interface_network_get_type ()) | |
33 | #define GVIR_CONFIG_DOMAIN_INTERFACE_NETWORK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_DOMAIN_INTERFACE, GVirConfigDomainInterfaceNetwork)) | |
34 | #define GVIR_CONFIG_DOMAIN_INTERFACE_NETWORK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_DOMAIN_INTERFACE, GVirConfigDomainInterfaceNetworkClass)) | |
35 | #define GVIR_CONFIG_IS_DOMAIN_INTERFACE_NETWORK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_DOMAIN_INTERFACE)) | |
36 | #define GVIR_CONFIG_IS_DOMAIN_INTERFACE_NETWORK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_DOMAIN_INTERFACE)) | |
37 | #define GVIR_CONFIG_DOMAIN_INTERFACE_NETWORK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_DOMAIN_INTERFACE, GVirConfigDomainInterfaceNetworkClass)) | |
38 | ||
39 | typedef struct _GVirConfigDomainInterfaceNetwork GVirConfigDomainInterfaceNetwork; | |
40 | typedef struct _GVirConfigDomainInterfaceNetworkPrivate GVirConfigDomainInterfaceNetworkPrivate; | |
41 | typedef struct _GVirConfigDomainInterfaceNetworkClass GVirConfigDomainInterfaceNetworkClass; | |
42 | ||
43 | struct _GVirConfigDomainInterfaceNetwork | |
44 | { | |
45 | GVirConfigDomainInterface parent; | |
46 | ||
47 | GVirConfigDomainInterfaceNetworkPrivate *priv; | |
48 | ||
49 | /* Do not add fields to this struct */ | |
50 | }; | |
51 | ||
52 | struct _GVirConfigDomainInterfaceNetworkClass | |
53 | { | |
54 | GVirConfigDomainInterfaceClass parent_class; | |
55 | ||
56 | gpointer padding[20]; | |
57 | }; | |
58 | ||
59 | GType gvir_config_domain_interface_network_get_type(void); | |
60 | ||
61 | GVirConfigDomainInterfaceNetwork *gvir_config_domain_interface_network_new(void); | |
62 | GVirConfigDomainInterfaceNetwork *gvir_config_domain_interface_network_new_from_xml(const gchar *xml, | |
63 | GError **error); | |
64 | void gvir_config_domain_interface_network_set_source(GVirConfigDomainInterfaceNetwork *interface, | |
65 | const char *source); | |
66 | ||
67 | G_END_DECLS | |
68 | ||
69 | #endif /* __LIBVIRT_GCONFIG_DOMAIN_INTERFACE_NETWORK_H__ */ |
0 | /* | |
1 | * libvirt-gconfig-domain-interface-user.c: libvirt domain interface configuration | |
2 | * | |
3 | * Copyright (C) 2008 Daniel P. Berrange | |
4 | * Copyright (C) 2011 Red Hat, Inc. | |
5 | * | |
6 | * This library is free software; you can redistribute it and/or | |
7 | * modify it under the terms of the GNU Lesser General Public | |
8 | * License as published by the Free Software Foundation; either | |
9 | * version 2.1 of the License, or (at your option) any later version. | |
10 | * | |
11 | * This library is distributed in the hope that it will be useful, | |
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
14 | * Lesser General Public License for more details. | |
15 | * | |
16 | * You should have received a copy of the GNU Lesser General Public | |
17 | * License along with this library; if not, write to the Free Software | |
18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
19 | * | |
20 | * Author: Daniel P. Berrange <berrange@redhat.com> | |
21 | * Author: Christophe Fergeau <cfergeau@redhat.com> | |
22 | */ | |
23 | ||
24 | #include <config.h> | |
25 | ||
26 | #include "libvirt-gconfig/libvirt-gconfig.h" | |
27 | #include "libvirt-gconfig/libvirt-gconfig-private.h" | |
28 | ||
29 | #define GVIR_CONFIG_DOMAIN_INTERFACE_USER_GET_PRIVATE(obj) \ | |
30 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_INTERFACE_USER, GVirConfigDomainInterfaceUserPrivate)) | |
31 | ||
32 | struct _GVirConfigDomainInterfaceUserPrivate | |
33 | { | |
34 | gboolean unused; | |
35 | }; | |
36 | ||
37 | G_DEFINE_TYPE(GVirConfigDomainInterfaceUser, gvir_config_domain_interface_user, GVIR_CONFIG_TYPE_DOMAIN_INTERFACE); | |
38 | ||
39 | ||
40 | static void gvir_config_domain_interface_user_class_init(GVirConfigDomainInterfaceUserClass *klass) | |
41 | { | |
42 | g_type_class_add_private(klass, sizeof(GVirConfigDomainInterfaceUserPrivate)); | |
43 | } | |
44 | ||
45 | ||
46 | static void gvir_config_domain_interface_user_init(GVirConfigDomainInterfaceUser *conn) | |
47 | { | |
48 | g_debug("Init GVirConfigDomainInterfaceUser=%p", conn); | |
49 | ||
50 | conn->priv = GVIR_CONFIG_DOMAIN_INTERFACE_USER_GET_PRIVATE(conn); | |
51 | } | |
52 | ||
53 | ||
54 | GVirConfigDomainInterfaceUser *gvir_config_domain_interface_user_new(void) | |
55 | { | |
56 | GVirConfigObject *object; | |
57 | ||
58 | object = gvir_config_object_new(GVIR_CONFIG_TYPE_DOMAIN_INTERFACE_USER, | |
59 | "interface", NULL); | |
60 | gvir_config_object_set_attribute(object, "type", "user", NULL); | |
61 | return GVIR_CONFIG_DOMAIN_INTERFACE_USER(object); | |
62 | } | |
63 | ||
64 | GVirConfigDomainInterfaceUser *gvir_config_domain_interface_user_new_from_xml(const gchar *xml, | |
65 | GError **error) | |
66 | { | |
67 | GVirConfigObject *object; | |
68 | ||
69 | object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_DOMAIN_INTERFACE_USER, | |
70 | "interface", NULL, xml, error); | |
71 | if (object == NULL) | |
72 | return NULL; | |
73 | gvir_config_object_set_attribute(object, "type", "user", NULL); | |
74 | return GVIR_CONFIG_DOMAIN_INTERFACE_USER(object); | |
75 | } |
0 | /* | |
1 | * libvirt-gconfig-domain-interface-user.c: libvirt domain interface configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Daniel P. Berrange <berrange@redhat.com> | |
20 | * Author: Christophe Fergeau <cfergeau@redhat.com> | |
21 | */ | |
22 | ||
23 | #if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) | |
24 | #error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." | |
25 | #endif | |
26 | ||
27 | #ifndef __LIBVIRT_GCONFIG_DOMAIN_INTERFACE_USER_H__ | |
28 | #define __LIBVIRT_GCONFIG_DOMAIN_INTERFACE_USER_H__ | |
29 | ||
30 | G_BEGIN_DECLS | |
31 | ||
32 | #define GVIR_CONFIG_TYPE_DOMAIN_INTERFACE_USER (gvir_config_domain_interface_user_get_type ()) | |
33 | #define GVIR_CONFIG_DOMAIN_INTERFACE_USER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_DOMAIN_INTERFACE, GVirConfigDomainInterfaceUser)) | |
34 | #define GVIR_CONFIG_DOMAIN_INTERFACE_USER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_DOMAIN_INTERFACE, GVirConfigDomainInterfaceUserClass)) | |
35 | #define GVIR_CONFIG_IS_DOMAIN_INTERFACE_USER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_DOMAIN_INTERFACE)) | |
36 | #define GVIR_CONFIG_IS_DOMAIN_INTERFACE_USER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_DOMAIN_INTERFACE)) | |
37 | #define GVIR_CONFIG_DOMAIN_INTERFACE_USER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_DOMAIN_INTERFACE, GVirConfigDomainInterfaceUserClass)) | |
38 | ||
39 | typedef struct _GVirConfigDomainInterfaceUser GVirConfigDomainInterfaceUser; | |
40 | typedef struct _GVirConfigDomainInterfaceUserPrivate GVirConfigDomainInterfaceUserPrivate; | |
41 | typedef struct _GVirConfigDomainInterfaceUserClass GVirConfigDomainInterfaceUserClass; | |
42 | ||
43 | struct _GVirConfigDomainInterfaceUser | |
44 | { | |
45 | GVirConfigDomainInterface parent; | |
46 | ||
47 | GVirConfigDomainInterfaceUserPrivate *priv; | |
48 | ||
49 | /* Do not add fields to this struct */ | |
50 | }; | |
51 | ||
52 | struct _GVirConfigDomainInterfaceUserClass | |
53 | { | |
54 | GVirConfigDomainInterfaceClass parent_class; | |
55 | ||
56 | gpointer padding[20]; | |
57 | }; | |
58 | ||
59 | GType gvir_config_domain_interface_user_get_type(void); | |
60 | ||
61 | GVirConfigDomainInterfaceUser *gvir_config_domain_interface_user_new(void); | |
62 | GVirConfigDomainInterfaceUser *gvir_config_domain_interface_user_new_from_xml(const gchar *xml, | |
63 | GError **error); | |
64 | ||
65 | G_END_DECLS | |
66 | ||
67 | #endif /* __LIBVIRT_GCONFIG_DOMAIN_INTERFACE_USER_H__ */ |
0 | /* | |
1 | * libvirt-gconfig-domain-interface.c: libvirt domain interface configuration | |
2 | * | |
3 | * Copyright (C) 2008 Daniel P. Berrange | |
4 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
5 | * | |
6 | * This library is free software; you can redistribute it and/or | |
7 | * modify it under the terms of the GNU Lesser General Public | |
8 | * License as published by the Free Software Foundation; either | |
9 | * version 2.1 of the License, or (at your option) any later version. | |
10 | * | |
11 | * This library is distributed in the hope that it will be useful, | |
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
14 | * Lesser General Public License for more details. | |
15 | * | |
16 | * You should have received a copy of the GNU Lesser General Public | |
17 | * License along with this library; if not, write to the Free Software | |
18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
19 | * | |
20 | * Author: Daniel P. Berrange <berrange@redhat.com> | |
21 | * Christophe Fergeau <cfergeau@redhat.com> | |
22 | */ | |
23 | ||
24 | #include <config.h> | |
25 | ||
26 | #include "libvirt-gconfig/libvirt-gconfig.h" | |
27 | #include "libvirt-gconfig/libvirt-gconfig-private.h" | |
28 | ||
29 | #define GVIR_CONFIG_DOMAIN_INTERFACE_GET_PRIVATE(obj) \ | |
30 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_INTERFACE, GVirConfigDomainInterfacePrivate)) | |
31 | ||
32 | struct _GVirConfigDomainInterfacePrivate | |
33 | { | |
34 | gboolean unused; | |
35 | }; | |
36 | ||
37 | G_DEFINE_ABSTRACT_TYPE(GVirConfigDomainInterface, gvir_config_domain_interface, GVIR_CONFIG_TYPE_DOMAIN_DEVICE); | |
38 | ||
39 | ||
40 | static void gvir_config_domain_interface_class_init(GVirConfigDomainInterfaceClass *klass) | |
41 | { | |
42 | g_type_class_add_private(klass, sizeof(GVirConfigDomainInterfacePrivate)); | |
43 | } | |
44 | ||
45 | ||
46 | static void gvir_config_domain_interface_init(GVirConfigDomainInterface *interface) | |
47 | { | |
48 | g_debug("Init GVirConfigDomainInterface=%p", interface); | |
49 | ||
50 | interface->priv = GVIR_CONFIG_DOMAIN_INTERFACE_GET_PRIVATE(interface); | |
51 | } | |
52 | ||
53 | void gvir_config_domain_interface_set_ifname(GVirConfigDomainInterface *interface, | |
54 | const char *ifname) | |
55 | { | |
56 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_INTERFACE(interface)); | |
57 | ||
58 | gvir_config_object_replace_child_with_attribute(GVIR_CONFIG_OBJECT(interface), | |
59 | "target", "device", ifname); | |
60 | } | |
61 | ||
62 | void gvir_config_domain_interface_set_link_state(GVirConfigDomainInterface *interface, | |
63 | GVirConfigDomainInterfaceLinkState state) | |
64 | { | |
65 | GVirConfigObject *node; | |
66 | ||
67 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_INTERFACE(interface)); | |
68 | ||
69 | node = gvir_config_object_replace_child(GVIR_CONFIG_OBJECT(interface), | |
70 | "link"); | |
71 | g_return_if_fail(GVIR_CONFIG_IS_OBJECT(node)); | |
72 | gvir_config_object_set_attribute_with_type(node, | |
73 | "state", | |
74 | GVIR_CONFIG_TYPE_DOMAIN_INTERFACE_LINK_STATE, | |
75 | state, | |
76 | NULL); | |
77 | g_object_unref(G_OBJECT(node)); | |
78 | } | |
79 | ||
80 | void gvir_config_domain_interface_set_mac(GVirConfigDomainInterface *interface, | |
81 | const char *mac_address) | |
82 | { | |
83 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_INTERFACE(interface)); | |
84 | ||
85 | gvir_config_object_replace_child_with_attribute(GVIR_CONFIG_OBJECT(interface), | |
86 | "mac", "address", mac_address); | |
87 | } | |
88 | ||
89 | void gvir_config_domain_interface_set_model(GVirConfigDomainInterface *interface, | |
90 | const char *model) | |
91 | { | |
92 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_INTERFACE(interface)); | |
93 | ||
94 | gvir_config_object_replace_child_with_attribute(GVIR_CONFIG_OBJECT(interface), | |
95 | "model", "type", model); | |
96 | } | |
97 | ||
98 | G_GNUC_INTERNAL GVirConfigDomainDevice * | |
99 | gvir_config_domain_interface_new_from_tree(GVirConfigXmlDoc *doc, | |
100 | xmlNodePtr tree) | |
101 | { | |
102 | xmlChar *type; | |
103 | GType gtype; | |
104 | ||
105 | type = gvir_config_xml_get_attribute_content(tree, "type"); | |
106 | if (type == NULL) | |
107 | return NULL; | |
108 | ||
109 | if (xmlStrEqual(type, (xmlChar*)"network")) { | |
110 | gtype = GVIR_CONFIG_TYPE_DOMAIN_INTERFACE_NETWORK; | |
111 | } else if (xmlStrEqual(type, (xmlChar*)"user")) { | |
112 | gtype = GVIR_CONFIG_TYPE_DOMAIN_INTERFACE_USER; | |
113 | } else if (xmlStrEqual(type, (xmlChar*)"bridge")) { | |
114 | goto unimplemented; | |
115 | } else if (xmlStrEqual(type, (xmlChar*)"direct")) { | |
116 | goto unimplemented; | |
117 | } else if (xmlStrEqual(type, (xmlChar*)"server")) { | |
118 | goto unimplemented; | |
119 | } else if (xmlStrEqual(type, (xmlChar*)"mcast")) { | |
120 | goto unimplemented; | |
121 | } else if (xmlStrEqual(type, (xmlChar*)"ethernet")) { | |
122 | goto unimplemented; | |
123 | } else { | |
124 | g_debug("Unknown domain interface node: %s", type); | |
125 | return NULL; | |
126 | } | |
127 | xmlFree(type); | |
128 | ||
129 | return GVIR_CONFIG_DOMAIN_DEVICE(gvir_config_object_new_from_tree(gtype, doc, NULL, tree)); | |
130 | ||
131 | unimplemented: | |
132 | g_debug("Parsing of '%s' domain interface nodes is unimplemented", type); | |
133 | return NULL; | |
134 | } |
0 | /* | |
1 | * libvirt-gconfig-domain-interface.h: libvirt domain interface configuration | |
2 | * | |
3 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Daniel P. Berrange <berrange@redhat.com> | |
20 | */ | |
21 | ||
22 | #if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) | |
23 | #error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." | |
24 | #endif | |
25 | ||
26 | #ifndef __LIBVIRT_GCONFIG_DOMAIN_INTERFACE_H__ | |
27 | #define __LIBVIRT_GCONFIG_DOMAIN_INTERFACE_H__ | |
28 | ||
29 | G_BEGIN_DECLS | |
30 | ||
31 | #define GVIR_CONFIG_TYPE_DOMAIN_INTERFACE (gvir_config_domain_interface_get_type ()) | |
32 | #define GVIR_CONFIG_DOMAIN_INTERFACE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_DOMAIN_INTERFACE, GVirConfigDomainInterface)) | |
33 | #define GVIR_CONFIG_DOMAIN_INTERFACE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_DOMAIN_INTERFACE, GVirConfigDomainInterfaceClass)) | |
34 | #define GVIR_CONFIG_IS_DOMAIN_INTERFACE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_DOMAIN_INTERFACE)) | |
35 | #define GVIR_CONFIG_IS_DOMAIN_INTERFACE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_DOMAIN_INTERFACE)) | |
36 | #define GVIR_CONFIG_DOMAIN_INTERFACE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_DOMAIN_INTERFACE, GVirConfigDomainInterfaceClass)) | |
37 | ||
38 | typedef struct _GVirConfigDomainInterface GVirConfigDomainInterface; | |
39 | typedef struct _GVirConfigDomainInterfacePrivate GVirConfigDomainInterfacePrivate; | |
40 | typedef struct _GVirConfigDomainInterfaceClass GVirConfigDomainInterfaceClass; | |
41 | ||
42 | struct _GVirConfigDomainInterface | |
43 | { | |
44 | GVirConfigDomainDevice parent; | |
45 | ||
46 | GVirConfigDomainInterfacePrivate *priv; | |
47 | ||
48 | /* Do not add fields to this struct */ | |
49 | }; | |
50 | ||
51 | struct _GVirConfigDomainInterfaceClass | |
52 | { | |
53 | GVirConfigDomainDeviceClass parent_class; | |
54 | ||
55 | gpointer padding[20]; | |
56 | }; | |
57 | ||
58 | typedef enum { | |
59 | GVIR_CONFIG_DOMAIN_INTERFACE_LINK_STATE_DEFAULT, | |
60 | GVIR_CONFIG_DOMAIN_INTERFACE_LINK_STATE_UP, | |
61 | GVIR_CONFIG_DOMAIN_INTERFACE_LINK_STATE_DOWN | |
62 | } GVirConfigDomainInterfaceLinkState; | |
63 | ||
64 | GType gvir_config_domain_interface_get_type(void); | |
65 | ||
66 | void gvir_config_domain_interface_set_ifname(GVirConfigDomainInterface *interface, | |
67 | const char *ifname); | |
68 | void gvir_config_domain_interface_set_link_state(GVirConfigDomainInterface *interface, | |
69 | GVirConfigDomainInterfaceLinkState state); | |
70 | void gvir_config_domain_interface_set_mac(GVirConfigDomainInterface *interface, | |
71 | const char *mac_address); | |
72 | void gvir_config_domain_interface_set_model(GVirConfigDomainInterface *interface, | |
73 | const char *model); | |
74 | ||
75 | G_END_DECLS | |
76 | ||
77 | #endif /* __LIBVIRT_GCONFIG_DOMAIN_INTERFACE_H__ */ |
0 | /* | |
1 | * libvirt-gconfig-domain-memballoon.c: libvirt domain memballoon configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Daniel P. Berrange <berrange@redhat.com> | |
20 | */ | |
21 | ||
22 | #include <config.h> | |
23 | ||
24 | #include "libvirt-gconfig/libvirt-gconfig.h" | |
25 | #include "libvirt-gconfig/libvirt-gconfig-private.h" | |
26 | ||
27 | #define GVIR_CONFIG_DOMAIN_MEMBALLOON_GET_PRIVATE(obj) \ | |
28 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_MEMBALLOON, GVirConfigDomainMemballoonPrivate)) | |
29 | ||
30 | struct _GVirConfigDomainMemballoonPrivate | |
31 | { | |
32 | gboolean unused; | |
33 | }; | |
34 | ||
35 | G_DEFINE_TYPE(GVirConfigDomainMemballoon, gvir_config_domain_memballoon, GVIR_CONFIG_TYPE_DOMAIN_DEVICE); | |
36 | ||
37 | ||
38 | static void gvir_config_domain_memballoon_class_init(GVirConfigDomainMemballoonClass *klass) | |
39 | { | |
40 | g_type_class_add_private(klass, sizeof(GVirConfigDomainMemballoonPrivate)); | |
41 | } | |
42 | ||
43 | ||
44 | static void gvir_config_domain_memballoon_init(GVirConfigDomainMemballoon *memballoon) | |
45 | { | |
46 | g_debug("Init GVirConfigDomainMemballoon=%p", memballoon); | |
47 | ||
48 | memballoon->priv = GVIR_CONFIG_DOMAIN_MEMBALLOON_GET_PRIVATE(memballoon); | |
49 | } | |
50 | ||
51 | ||
52 | GVirConfigDomainMemballoon *gvir_config_domain_memballoon_new(void) | |
53 | { | |
54 | GVirConfigObject *object; | |
55 | ||
56 | object = gvir_config_object_new(GVIR_CONFIG_TYPE_DOMAIN_MEMBALLOON, | |
57 | "memballoon", NULL); | |
58 | return GVIR_CONFIG_DOMAIN_MEMBALLOON(object); | |
59 | } | |
60 | ||
61 | GVirConfigDomainMemballoon *gvir_config_domain_memballoon_new_from_xml(const gchar *xml, | |
62 | GError **error) | |
63 | { | |
64 | GVirConfigObject *object; | |
65 | ||
66 | object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_DOMAIN_MEMBALLOON, | |
67 | "memballoon", NULL, xml, error); | |
68 | return GVIR_CONFIG_DOMAIN_MEMBALLOON(object); | |
69 | } | |
70 | ||
71 | void gvir_config_domain_memballoon_set_model(GVirConfigDomainMemballoon *memballoon, | |
72 | GVirConfigDomainMemballoonModel model) | |
73 | { | |
74 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_MEMBALLOON(memballoon)); | |
75 | gvir_config_object_set_attribute_with_type(GVIR_CONFIG_OBJECT(memballoon), | |
76 | "model", | |
77 | GVIR_CONFIG_TYPE_DOMAIN_MEMBALLOON_MODEL, | |
78 | model, | |
79 | NULL); | |
80 | } |
0 | /* | |
1 | * libvirt-gconfig-domain-memballoon.h: libvirt domain memballoon configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Daniel P. Berrange <berrange@redhat.com> | |
20 | */ | |
21 | ||
22 | #if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) | |
23 | #error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." | |
24 | #endif | |
25 | ||
26 | #ifndef __LIBVIRT_GCONFIG_DOMAIN_MEMBALLOON_H__ | |
27 | #define __LIBVIRT_GCONFIG_DOMAIN_MEMBALLOON_H__ | |
28 | ||
29 | G_BEGIN_DECLS | |
30 | ||
31 | #define GVIR_CONFIG_TYPE_DOMAIN_MEMBALLOON (gvir_config_domain_memballoon_get_type ()) | |
32 | #define GVIR_CONFIG_DOMAIN_MEMBALLOON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_DOMAIN_MEMBALLOON, GVirConfigDomainMemballoon)) | |
33 | #define GVIR_CONFIG_DOMAIN_MEMBALLOON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_DOMAIN_MEMBALLOON, GVirConfigDomainMemballoonClass)) | |
34 | #define GVIR_CONFIG_IS_DOMAIN_MEMBALLOON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_DOMAIN_MEMBALLOON)) | |
35 | #define GVIR_CONFIG_IS_DOMAIN_MEMBALLOON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_DOMAIN_MEMBALLOON)) | |
36 | #define GVIR_CONFIG_DOMAIN_MEMBALLOON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_DOMAIN_MEMBALLOON, GVirConfigDomainMemballoonClass)) | |
37 | ||
38 | typedef struct _GVirConfigDomainMemballoon GVirConfigDomainMemballoon; | |
39 | typedef struct _GVirConfigDomainMemballoonPrivate GVirConfigDomainMemballoonPrivate; | |
40 | typedef struct _GVirConfigDomainMemballoonClass GVirConfigDomainMemballoonClass; | |
41 | ||
42 | struct _GVirConfigDomainMemballoon | |
43 | { | |
44 | GVirConfigDomainDevice parent; | |
45 | ||
46 | GVirConfigDomainMemballoonPrivate *priv; | |
47 | ||
48 | /* Do not add fields to this struct */ | |
49 | }; | |
50 | ||
51 | struct _GVirConfigDomainMemballoonClass | |
52 | { | |
53 | GVirConfigDomainDeviceClass parent_class; | |
54 | ||
55 | gpointer padding[20]; | |
56 | }; | |
57 | ||
58 | typedef enum { | |
59 | GVIR_CONFIG_DOMAIN_MEMBALLOON_MODEL_NONE, | |
60 | GVIR_CONFIG_DOMAIN_MEMBALLOON_MODEL_VIRTIO, | |
61 | } GVirConfigDomainMemballoonModel; | |
62 | ||
63 | GType gvir_config_domain_memballoon_get_type(void); | |
64 | ||
65 | GVirConfigDomainMemballoon *gvir_config_domain_memballoon_new(void); | |
66 | GVirConfigDomainMemballoon *gvir_config_domain_memballoon_new_from_xml(const gchar *xml, | |
67 | GError **error); | |
68 | void gvir_config_domain_memballoon_set_model(GVirConfigDomainMemballoon *memballoon, | |
69 | GVirConfigDomainMemballoonModel model); | |
70 | ||
71 | ||
72 | G_END_DECLS | |
73 | ||
74 | #endif /* __LIBVIRT_GCONFIG_DOMAIN_MEMBALLOON_H__ */ |
0 | /* | |
1 | * libvirt-gconfig-domain-os.c: libvirt domain OS configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Christophe Fergeau <cfergeau@gmail.com> | |
20 | */ | |
21 | ||
22 | #include <config.h> | |
23 | ||
24 | #include "libvirt-gconfig/libvirt-gconfig.h" | |
25 | #include "libvirt-gconfig/libvirt-gconfig-private.h" | |
26 | ||
27 | #define GVIR_CONFIG_DOMAIN_OS_GET_PRIVATE(obj) \ | |
28 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_OS, GVirConfigDomainOsPrivate)) | |
29 | ||
30 | struct _GVirConfigDomainOsPrivate | |
31 | { | |
32 | gboolean unused; | |
33 | }; | |
34 | ||
35 | G_DEFINE_TYPE(GVirConfigDomainOs, gvir_config_domain_os, GVIR_CONFIG_TYPE_OBJECT); | |
36 | ||
37 | ||
38 | static void gvir_config_domain_os_class_init(GVirConfigDomainOsClass *klass) | |
39 | { | |
40 | g_type_class_add_private(klass, sizeof(GVirConfigDomainOsPrivate)); | |
41 | } | |
42 | ||
43 | ||
44 | static void gvir_config_domain_os_init(GVirConfigDomainOs *os) | |
45 | { | |
46 | g_debug("Init GVirConfigDomainOs=%p", os); | |
47 | ||
48 | os->priv = GVIR_CONFIG_DOMAIN_OS_GET_PRIVATE(os); | |
49 | } | |
50 | ||
51 | ||
52 | GVirConfigDomainOs *gvir_config_domain_os_new(void) | |
53 | { | |
54 | GVirConfigObject *object; | |
55 | ||
56 | object = gvir_config_object_new(GVIR_CONFIG_TYPE_DOMAIN_OS, "os", NULL); | |
57 | return GVIR_CONFIG_DOMAIN_OS(object); | |
58 | } | |
59 | ||
60 | GVirConfigDomainOs *gvir_config_domain_os_new_from_xml(const gchar *xml, GError **error) | |
61 | { | |
62 | GVirConfigObject *object; | |
63 | ||
64 | object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_DOMAIN_OS, "os", | |
65 | NULL, xml, error); | |
66 | return GVIR_CONFIG_DOMAIN_OS(object); | |
67 | } | |
68 | ||
69 | void gvir_config_domain_os_set_os_type(GVirConfigDomainOs *os, | |
70 | GVirConfigDomainOsType type) | |
71 | { | |
72 | const char *type_str; | |
73 | ||
74 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_OS(os)); | |
75 | ||
76 | type_str = gvir_config_genum_get_nick(GVIR_CONFIG_TYPE_DOMAIN_OS_TYPE, type); | |
77 | g_return_if_fail(type_str != NULL); | |
78 | ||
79 | gvir_config_object_set_node_content(GVIR_CONFIG_OBJECT(os), | |
80 | "type", type_str); | |
81 | } | |
82 | ||
83 | void gvir_config_domain_os_set_kernel(GVirConfigDomainOs *os, | |
84 | const char * kernel) | |
85 | { | |
86 | gvir_config_object_set_node_content(GVIR_CONFIG_OBJECT(os), | |
87 | "kernel", kernel); | |
88 | } | |
89 | ||
90 | void gvir_config_domain_os_set_ramdisk(GVirConfigDomainOs *os, | |
91 | const char * ramdisk) | |
92 | { | |
93 | gvir_config_object_set_node_content(GVIR_CONFIG_OBJECT(os), | |
94 | "initrd", ramdisk); | |
95 | } | |
96 | ||
97 | void gvir_config_domain_os_set_cmdline(GVirConfigDomainOs *os, | |
98 | const char * cmdline) | |
99 | { | |
100 | gvir_config_object_set_node_content(GVIR_CONFIG_OBJECT(os), | |
101 | "cmdline", cmdline); | |
102 | } | |
103 | ||
104 | void gvir_config_domain_os_set_init(GVirConfigDomainOs *os, | |
105 | const char * init) | |
106 | { | |
107 | gvir_config_object_set_node_content(GVIR_CONFIG_OBJECT(os), | |
108 | "init", init); | |
109 | } | |
110 | ||
111 | void gvir_config_domain_os_set_loader(GVirConfigDomainOs *os, | |
112 | const char * loader) | |
113 | { | |
114 | gvir_config_object_set_node_content(GVIR_CONFIG_OBJECT(os), | |
115 | "loader", loader); | |
116 | } | |
117 | ||
118 | void gvir_config_domain_os_enable_boot_menu(GVirConfigDomainOs *os, | |
119 | gboolean enable) | |
120 | { | |
121 | GVirConfigObject *node; | |
122 | ||
123 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_OS(os)); | |
124 | ||
125 | node = gvir_config_object_replace_child(GVIR_CONFIG_OBJECT(os), "bootmenu"); | |
126 | g_return_if_fail(GVIR_CONFIG_IS_OBJECT(node)); | |
127 | gvir_config_object_set_attribute_with_type(node, "enable", | |
128 | G_TYPE_BOOLEAN, enable, | |
129 | NULL); | |
130 | g_object_unref(G_OBJECT(node)); | |
131 | } | |
132 | ||
133 | void gvir_config_domain_os_bios_enable_serial(GVirConfigDomainOs *os, | |
134 | gboolean enable) | |
135 | { | |
136 | GVirConfigObject *node; | |
137 | ||
138 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_OS(os)); | |
139 | ||
140 | node = gvir_config_object_replace_child(GVIR_CONFIG_OBJECT(os), "bios"); | |
141 | g_return_if_fail(GVIR_CONFIG_IS_OBJECT(node)); | |
142 | gvir_config_object_set_attribute_with_type(node, "useserial", | |
143 | G_TYPE_BOOLEAN, enable, | |
144 | NULL); | |
145 | g_object_unref(G_OBJECT(node)); | |
146 | } | |
147 | ||
148 | void gvir_config_domain_os_set_smbios_mode(GVirConfigDomainOs *os, | |
149 | GVirConfigDomainOsSmBiosMode mode) | |
150 | { | |
151 | GVirConfigObject *node; | |
152 | ||
153 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_OS(os)); | |
154 | ||
155 | node = gvir_config_object_replace_child(GVIR_CONFIG_OBJECT(os), "smbios"); | |
156 | g_return_if_fail(GVIR_CONFIG_IS_OBJECT(node)); | |
157 | gvir_config_object_set_attribute_with_type(node, "mode", | |
158 | GVIR_CONFIG_TYPE_DOMAIN_OS_SM_BIOS_MODE, | |
159 | mode, NULL); | |
160 | g_object_unref(G_OBJECT(node)); | |
161 | } | |
162 | ||
163 | /** | |
164 | * gvir_config_domain_os_set_boot_devices: | |
165 | * @boot_devices: (in) (element-type LibvirtGConfig.DomainOsBootDevice): | |
166 | */ | |
167 | void gvir_config_domain_os_set_boot_devices(GVirConfigDomainOs *os, GList *boot_devices) | |
168 | { | |
169 | GList *it; | |
170 | xmlNodePtr os_node; | |
171 | xmlNodePtr node; | |
172 | ||
173 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_OS(os)); | |
174 | ||
175 | os_node = gvir_config_object_get_xml_node(GVIR_CONFIG_OBJECT(os)); | |
176 | g_return_if_fail(os_node != NULL); | |
177 | ||
178 | node = os_node->children; | |
179 | while (node != NULL) { | |
180 | xmlNodePtr next_node; | |
181 | next_node = node->next; | |
182 | if (g_strcmp0("boot", (char *)node->name) == 0) { | |
183 | xmlUnlinkNode(node); | |
184 | xmlFreeNode(node); | |
185 | } | |
186 | node = next_node; | |
187 | } | |
188 | ||
189 | for (it = boot_devices; it != NULL; it = it->next) { | |
190 | const char *dev; | |
191 | ||
192 | dev = gvir_config_genum_get_nick(GVIR_CONFIG_TYPE_DOMAIN_OS_BOOT_DEVICE, | |
193 | GPOINTER_TO_INT(it->data)); | |
194 | g_warn_if_fail(dev != NULL); | |
195 | if (dev != NULL) { | |
196 | node = xmlNewDocNode(NULL, NULL, (xmlChar*)"boot", NULL); | |
197 | xmlNewProp(node, (xmlChar*)"dev", (xmlChar*)dev); | |
198 | xmlAddChild(os_node, node); | |
199 | } | |
200 | } | |
201 | } | |
202 | ||
203 | void gvir_config_domain_os_set_arch(GVirConfigDomainOs *os, const char *arch) | |
204 | { | |
205 | xmlNodePtr os_node; | |
206 | xmlNodePtr os_type_node; | |
207 | ||
208 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_OS(os)); | |
209 | ||
210 | os_node = gvir_config_object_get_xml_node(GVIR_CONFIG_OBJECT(os)); | |
211 | g_return_if_fail(os_node != NULL); | |
212 | ||
213 | os_type_node = gvir_config_xml_get_element(os_node, "type", NULL); | |
214 | g_return_if_fail(os_type_node != NULL); | |
215 | ||
216 | xmlNewProp(os_type_node, (xmlChar*)"arch", (xmlChar*)arch); | |
217 | } | |
218 | ||
219 | void gvir_config_domain_os_set_machine(GVirConfigDomainOs *os, const char *machine) | |
220 | { | |
221 | xmlNodePtr os_node; | |
222 | xmlNodePtr os_type_node; | |
223 | ||
224 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_OS(os)); | |
225 | ||
226 | os_node = gvir_config_object_get_xml_node(GVIR_CONFIG_OBJECT(os)); | |
227 | g_return_if_fail(os_node != NULL); | |
228 | ||
229 | os_type_node = gvir_config_xml_get_element(os_node, "type", NULL); | |
230 | g_return_if_fail(os_type_node != NULL); | |
231 | ||
232 | xmlNewProp(os_type_node, (xmlChar*)"machine", (xmlChar*)machine); | |
233 | } |
0 | /* | |
1 | * libvirt-gconfig-domain-os.c: libvirt domain OS configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Christophe Fergeau <cfergeau@gmail.com> | |
20 | */ | |
21 | ||
22 | #if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) | |
23 | #error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." | |
24 | #endif | |
25 | ||
26 | #ifndef __LIBVIRT_GCONFIG_DOMAIN_OS_H__ | |
27 | #define __LIBVIRT_GCONFIG_DOMAIN_OS_H__ | |
28 | ||
29 | G_BEGIN_DECLS | |
30 | ||
31 | #define GVIR_CONFIG_TYPE_DOMAIN_OS (gvir_config_domain_os_get_type ()) | |
32 | #define GVIR_CONFIG_DOMAIN_OS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_DOMAIN_OS, GVirConfigDomainOs)) | |
33 | #define GVIR_CONFIG_DOMAIN_OS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_DOMAIN_OS, GVirConfigDomainOsClass)) | |
34 | #define GVIR_CONFIG_IS_DOMAIN_OS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_DOMAIN_OS)) | |
35 | #define GVIR_CONFIG_IS_DOMAIN_OS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_DOMAIN_OS)) | |
36 | #define GVIR_CONFIG_DOMAIN_OS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_DOMAIN_OS, GVirConfigDomainOsClass)) | |
37 | ||
38 | typedef struct _GVirConfigDomainOs GVirConfigDomainOs; | |
39 | typedef struct _GVirConfigDomainOsPrivate GVirConfigDomainOsPrivate; | |
40 | typedef struct _GVirConfigDomainOsClass GVirConfigDomainOsClass; | |
41 | ||
42 | struct _GVirConfigDomainOs | |
43 | { | |
44 | GVirConfigObject parent; | |
45 | ||
46 | GVirConfigDomainOsPrivate *priv; | |
47 | ||
48 | /* Do not add fields to this struct */ | |
49 | }; | |
50 | ||
51 | struct _GVirConfigDomainOsClass | |
52 | { | |
53 | GVirConfigObjectClass parent_class; | |
54 | ||
55 | gpointer padding[20]; | |
56 | }; | |
57 | ||
58 | typedef enum { | |
59 | GVIR_CONFIG_DOMAIN_OS_TYPE_HVM, | |
60 | GVIR_CONFIG_DOMAIN_OS_TYPE_LINUX, | |
61 | GVIR_CONFIG_DOMAIN_OS_TYPE_EXE | |
62 | } GVirConfigDomainOsType; | |
63 | ||
64 | typedef enum { | |
65 | GVIR_CONFIG_DOMAIN_OS_SMBIOS_MODE_EMULATE, | |
66 | GVIR_CONFIG_DOMAIN_OS_SMBIOS_MODE_HOST, | |
67 | GVIR_CONFIG_DOMAIN_OS_SMBIOS_MODE_SYSINFO | |
68 | } GVirConfigDomainOsSmBiosMode; | |
69 | ||
70 | typedef enum { | |
71 | GVIR_CONFIG_DOMAIN_OS_BOOT_DEVICE_FD, | |
72 | GVIR_CONFIG_DOMAIN_OS_BOOT_DEVICE_HD, | |
73 | GVIR_CONFIG_DOMAIN_OS_BOOT_DEVICE_CDROM, | |
74 | GVIR_CONFIG_DOMAIN_OS_BOOT_DEVICE_NETWORK | |
75 | } GVirConfigDomainOsBootDevice; | |
76 | ||
77 | GType gvir_config_domain_os_get_type(void); | |
78 | ||
79 | GVirConfigDomainOs *gvir_config_domain_os_new(void); | |
80 | GVirConfigDomainOs *gvir_config_domain_os_new_from_xml(const gchar *xml, GError **error); | |
81 | ||
82 | void gvir_config_domain_os_set_os_type(GVirConfigDomainOs *os, GVirConfigDomainOsType type); | |
83 | void gvir_config_domain_os_set_arch(GVirConfigDomainOs *os, const char *arch); | |
84 | void gvir_config_domain_os_set_boot_devices(GVirConfigDomainOs *os, GList *boot_devices); | |
85 | void gvir_config_domain_os_set_kernel(GVirConfigDomainOs *os, const char *kernel); | |
86 | void gvir_config_domain_os_set_ramdisk(GVirConfigDomainOs *os, const char *ramdisk); | |
87 | void gvir_config_domain_os_set_cmdline(GVirConfigDomainOs *os, const char *cmdline); | |
88 | void gvir_config_domain_os_set_init(GVirConfigDomainOs *os, const char *init); | |
89 | void gvir_config_domain_os_set_loader(GVirConfigDomainOs *os, const char * loader); | |
90 | void gvir_config_domain_os_set_machine(GVirConfigDomainOs *os, const char *machine); | |
91 | void gvir_config_domain_os_set_smbios_mode(GVirConfigDomainOs *os, | |
92 | GVirConfigDomainOsSmBiosMode mode); | |
93 | void gvir_config_domain_os_enable_boot_menu(GVirConfigDomainOs *os, gboolean enable); | |
94 | void gvir_config_domain_os_bios_enable_serial(GVirConfigDomainOs *os, gboolean enable); | |
95 | ||
96 | G_END_DECLS | |
97 | ||
98 | #endif /* __LIBVIRT_GCONFIG_DOMAIN_OS_H__ */ |
0 | /* | |
1 | * libvirt-gconfig-domain-parallel.c: libvirt domain parallel configuration | |
2 | * | |
3 | * Copyright (C) 2011-2012 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Daniel P. Berrange <berrange@redhat.com> | |
20 | */ | |
21 | ||
22 | #include <config.h> | |
23 | ||
24 | #include "libvirt-gconfig/libvirt-gconfig.h" | |
25 | ||
26 | #define GVIR_CONFIG_DOMAIN_PARALLEL_GET_PRIVATE(obj) \ | |
27 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_PARALLEL, GVirConfigDomainParallelPrivate)) | |
28 | ||
29 | struct _GVirConfigDomainParallelPrivate | |
30 | { | |
31 | gboolean unused; | |
32 | }; | |
33 | ||
34 | G_DEFINE_TYPE(GVirConfigDomainParallel, gvir_config_domain_parallel, GVIR_CONFIG_TYPE_DOMAIN_CHARDEV); | |
35 | ||
36 | ||
37 | static void gvir_config_domain_parallel_class_init(GVirConfigDomainParallelClass *klass) | |
38 | { | |
39 | g_type_class_add_private(klass, sizeof(GVirConfigDomainParallelPrivate)); | |
40 | } | |
41 | ||
42 | ||
43 | static void gvir_config_domain_parallel_init(GVirConfigDomainParallel *parallel) | |
44 | { | |
45 | g_debug("Init GVirConfigDomainParallel=%p", parallel); | |
46 | ||
47 | parallel->priv = GVIR_CONFIG_DOMAIN_PARALLEL_GET_PRIVATE(parallel); | |
48 | } | |
49 | ||
50 | GVirConfigDomainParallel *gvir_config_domain_parallel_new(void) | |
51 | { | |
52 | GVirConfigObject *object; | |
53 | ||
54 | object = gvir_config_object_new(GVIR_CONFIG_TYPE_DOMAIN_PARALLEL, | |
55 | "parallel", NULL); | |
56 | return GVIR_CONFIG_DOMAIN_PARALLEL(object); | |
57 | } | |
58 | ||
59 | GVirConfigDomainParallel *gvir_config_domain_parallel_new_from_xml(const gchar *xml, | |
60 | GError **error) | |
61 | { | |
62 | GVirConfigObject *object; | |
63 | ||
64 | object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_DOMAIN_PARALLEL, | |
65 | "parallel", NULL, xml, error); | |
66 | if (object == NULL) | |
67 | return NULL; | |
68 | return GVIR_CONFIG_DOMAIN_PARALLEL(object); | |
69 | } |
0 | /* | |
1 | * libvirt-gconfig-domain-parallel.h: libvirt domain parallel configuration | |
2 | * | |
3 | * Copyright (C) 2011-2012 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Daniel P. Berrange <berrange@redhat.com> | |
20 | */ | |
21 | ||
22 | #if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) | |
23 | #error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." | |
24 | #endif | |
25 | ||
26 | #ifndef __LIBVIRT_GCONFIG_DOMAIN_PARALLEL_H__ | |
27 | #define __LIBVIRT_GCONFIG_DOMAIN_PARALLEL_H__ | |
28 | ||
29 | G_BEGIN_DECLS | |
30 | ||
31 | #define GVIR_CONFIG_TYPE_DOMAIN_PARALLEL (gvir_config_domain_parallel_get_type ()) | |
32 | #define GVIR_CONFIG_DOMAIN_PARALLEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_DOMAIN_PARALLEL, GVirConfigDomainParallel)) | |
33 | #define GVIR_CONFIG_DOMAIN_PARALLEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_DOMAIN_PARALLEL, GVirConfigDomainParallelClass)) | |
34 | #define GVIR_CONFIG_IS_DOMAIN_PARALLEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_DOMAIN_PARALLEL)) | |
35 | #define GVIR_CONFIG_IS_DOMAIN_PARALLEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_DOMAIN_PARALLEL)) | |
36 | #define GVIR_CONFIG_DOMAIN_PARALLEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_DOMAIN_PARALLEL, GVirConfigDomainParallelClass)) | |
37 | ||
38 | typedef struct _GVirConfigDomainParallel GVirConfigDomainParallel; | |
39 | typedef struct _GVirConfigDomainParallelPrivate GVirConfigDomainParallelPrivate; | |
40 | typedef struct _GVirConfigDomainParallelClass GVirConfigDomainParallelClass; | |
41 | ||
42 | struct _GVirConfigDomainParallel | |
43 | { | |
44 | GVirConfigDomainChardev parent; | |
45 | ||
46 | GVirConfigDomainParallelPrivate *priv; | |
47 | ||
48 | /* Do not add fields to this struct */ | |
49 | }; | |
50 | ||
51 | struct _GVirConfigDomainParallelClass | |
52 | { | |
53 | GVirConfigDomainChardevClass parent_class; | |
54 | ||
55 | gpointer padding[20]; | |
56 | }; | |
57 | ||
58 | ||
59 | GType gvir_config_domain_parallel_get_type(void); | |
60 | GVirConfigDomainParallel *gvir_config_domain_parallel_new(void); | |
61 | GVirConfigDomainParallel *gvir_config_domain_parallel_new_from_xml(const gchar *xml, | |
62 | GError **error); | |
63 | ||
64 | G_END_DECLS | |
65 | ||
66 | #endif /* __LIBVIRT_GCONFIG_DOMAIN_PARALLEL_H__ */ |
0 | /* | |
1 | * libvirt-gconfig-domain-seclabel.c: libvirt domain security label configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPSECLABELE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Bseclabelton, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Daniel P. Berrange <berrange@redhat.com> | |
20 | */ | |
21 | ||
22 | #include <config.h> | |
23 | ||
24 | #include "libvirt-gconfig/libvirt-gconfig.h" | |
25 | #include "libvirt-gconfig/libvirt-gconfig-private.h" | |
26 | ||
27 | #define GVIR_CONFIG_DOMAIN_SECLABEL_GET_PRIVATE(obj) \ | |
28 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_SECLABEL, GVirConfigDomainSeclabelPrivate)) | |
29 | ||
30 | struct _GVirConfigDomainSeclabelPrivate | |
31 | { | |
32 | gboolean unused; | |
33 | }; | |
34 | ||
35 | G_DEFINE_TYPE(GVirConfigDomainSeclabel, gvir_config_domain_seclabel, GVIR_CONFIG_TYPE_OBJECT); | |
36 | ||
37 | ||
38 | static void gvir_config_domain_seclabel_class_init(GVirConfigDomainSeclabelClass *klass) | |
39 | { | |
40 | g_type_class_add_private(klass, sizeof(GVirConfigDomainSeclabelPrivate)); | |
41 | } | |
42 | ||
43 | ||
44 | static void gvir_config_domain_seclabel_init(GVirConfigDomainSeclabel *seclabel) | |
45 | { | |
46 | g_debug("Init GVirConfigDomainSeclabel=%p", seclabel); | |
47 | ||
48 | seclabel->priv = GVIR_CONFIG_DOMAIN_SECLABEL_GET_PRIVATE(seclabel); | |
49 | } | |
50 | ||
51 | ||
52 | GVirConfigDomainSeclabel *gvir_config_domain_seclabel_new(void) | |
53 | { | |
54 | GVirConfigObject *object; | |
55 | ||
56 | object = gvir_config_object_new(GVIR_CONFIG_TYPE_DOMAIN_SECLABEL, "seclabel", NULL); | |
57 | return GVIR_CONFIG_DOMAIN_SECLABEL(object); | |
58 | } | |
59 | ||
60 | GVirConfigDomainSeclabel *gvir_config_domain_seclabel_new_from_xml(const gchar *xml, GError **error) | |
61 | { | |
62 | GVirConfigObject *object; | |
63 | ||
64 | object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_DOMAIN_SECLABEL, "seclabel", | |
65 | NULL, xml, error); | |
66 | return GVIR_CONFIG_DOMAIN_SECLABEL(object); | |
67 | } | |
68 | ||
69 | void gvir_config_domain_seclabel_set_type(GVirConfigDomainSeclabel *seclabel, | |
70 | GVirConfigDomainSeclabelType type) | |
71 | { | |
72 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_SECLABEL(seclabel)); | |
73 | ||
74 | gvir_config_object_set_attribute_with_type(GVIR_CONFIG_OBJECT(seclabel), | |
75 | "type", | |
76 | GVIR_CONFIG_TYPE_DOMAIN_SECLABEL_TYPE, | |
77 | type, NULL); | |
78 | } | |
79 | ||
80 | void gvir_config_domain_seclabel_set_model(GVirConfigDomainSeclabel *seclabel, | |
81 | const gchar *model) | |
82 | { | |
83 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_SECLABEL(seclabel)); | |
84 | ||
85 | gvir_config_object_set_attribute(GVIR_CONFIG_OBJECT(seclabel), | |
86 | "model", model, | |
87 | NULL); | |
88 | ||
89 | } | |
90 | ||
91 | void gvir_config_domain_seclabel_set_baselabel(GVirConfigDomainSeclabel *seclabel, | |
92 | const char *label) | |
93 | { | |
94 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_SECLABEL(seclabel)); | |
95 | ||
96 | gvir_config_object_set_node_content(GVIR_CONFIG_OBJECT(seclabel), | |
97 | "baselabel", label); | |
98 | } | |
99 | ||
100 | void gvir_config_domain_seclabel_set_label(GVirConfigDomainSeclabel *seclabel, | |
101 | const char *label) | |
102 | { | |
103 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_SECLABEL(seclabel)); | |
104 | ||
105 | gvir_config_object_set_node_content(GVIR_CONFIG_OBJECT(seclabel), | |
106 | "label", label); | |
107 | } |
0 | /* | |
1 | * libvirt-gconfig-domain-seclabel.h: libvirt domain security label configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Daniel P. Berrange <berrange@redhat.com> | |
20 | */ | |
21 | ||
22 | #if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) | |
23 | #error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." | |
24 | #endif | |
25 | ||
26 | #ifndef __LIBVIRT_GCONFIG_DOMAIN_SECLABEL_H__ | |
27 | #define __LIBVIRT_GCONFIG_DOMAIN_SECLABEL_H__ | |
28 | ||
29 | G_BEGIN_DECLS | |
30 | ||
31 | #define GVIR_CONFIG_TYPE_DOMAIN_SECLABEL (gvir_config_domain_seclabel_get_type ()) | |
32 | #define GVIR_CONFIG_DOMAIN_SECLABEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_DOMAIN_SECLABEL, GVirConfigDomainSeclabel)) | |
33 | #define GVIR_CONFIG_DOMAIN_SECLABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_DOMAIN_SECLABEL, GVirConfigDomainSeclabelClass)) | |
34 | #define GVIR_CONFIG_IS_DOMAIN_SECLABEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_DOMAIN_SECLABEL)) | |
35 | #define GVIR_CONFIG_IS_DOMAIN_SECLABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_DOMAIN_SECLABEL)) | |
36 | #define GVIR_CONFIG_DOMAIN_SECLABEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_DOMAIN_SECLABEL, GVirConfigDomainSeclabelClass)) | |
37 | ||
38 | typedef struct _GVirConfigDomainSeclabel GVirConfigDomainSeclabel; | |
39 | typedef struct _GVirConfigDomainSeclabelPrivate GVirConfigDomainSeclabelPrivate; | |
40 | typedef struct _GVirConfigDomainSeclabelClass GVirConfigDomainSeclabelClass; | |
41 | ||
42 | struct _GVirConfigDomainSeclabel | |
43 | { | |
44 | GVirConfigObject parent; | |
45 | ||
46 | GVirConfigDomainSeclabelPrivate *priv; | |
47 | ||
48 | /* Do not add fields to this struct */ | |
49 | }; | |
50 | ||
51 | struct _GVirConfigDomainSeclabelClass | |
52 | { | |
53 | GVirConfigObjectClass parent_class; | |
54 | ||
55 | gpointer padding[20]; | |
56 | }; | |
57 | ||
58 | typedef enum { | |
59 | GVIR_CONFIG_DOMAIN_SECLABEL_DYNAMIC, | |
60 | GVIR_CONFIG_DOMAIN_SECLABEL_STATIC | |
61 | } GVirConfigDomainSeclabelType; | |
62 | ||
63 | GType gvir_config_domain_seclabel_get_type(void); | |
64 | ||
65 | GVirConfigDomainSeclabel *gvir_config_domain_seclabel_new(void); | |
66 | GVirConfigDomainSeclabel *gvir_config_domain_seclabel_new_from_xml(const gchar *xml, GError **error); | |
67 | ||
68 | void gvir_config_domain_seclabel_set_type(GVirConfigDomainSeclabel *seclabel, GVirConfigDomainSeclabelType type); | |
69 | void gvir_config_domain_seclabel_set_model(GVirConfigDomainSeclabel *seclabel, const gchar *model); | |
70 | void gvir_config_domain_seclabel_set_baselabel(GVirConfigDomainSeclabel *seclabel, const gchar *label); | |
71 | void gvir_config_domain_seclabel_set_label(GVirConfigDomainSeclabel *seclabel, const gchar *label); | |
72 | ||
73 | G_END_DECLS | |
74 | ||
75 | #endif /* __LIBVIRT_GCONFIG_DOMAIN_SECLABEL_H__ */ |
0 | /* | |
1 | * libvirt-gconfig-domain-serial.c: libvirt domain serial configuration | |
2 | * | |
3 | * Copyright (C) 2011-2012 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Daniel P. Berrange <berrange@redhat.com> | |
20 | */ | |
21 | ||
22 | #include <config.h> | |
23 | ||
24 | #include "libvirt-gconfig/libvirt-gconfig.h" | |
25 | ||
26 | #define GVIR_CONFIG_DOMAIN_SERIAL_GET_PRIVATE(obj) \ | |
27 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_SERIAL, GVirConfigDomainSerialPrivate)) | |
28 | ||
29 | struct _GVirConfigDomainSerialPrivate | |
30 | { | |
31 | gboolean unused; | |
32 | }; | |
33 | ||
34 | G_DEFINE_TYPE(GVirConfigDomainSerial, gvir_config_domain_serial, GVIR_CONFIG_TYPE_DOMAIN_CHARDEV); | |
35 | ||
36 | ||
37 | static void gvir_config_domain_serial_class_init(GVirConfigDomainSerialClass *klass) | |
38 | { | |
39 | g_type_class_add_private(klass, sizeof(GVirConfigDomainSerialPrivate)); | |
40 | } | |
41 | ||
42 | ||
43 | static void gvir_config_domain_serial_init(GVirConfigDomainSerial *serial) | |
44 | { | |
45 | g_debug("Init GVirConfigDomainSerial=%p", serial); | |
46 | ||
47 | serial->priv = GVIR_CONFIG_DOMAIN_SERIAL_GET_PRIVATE(serial); | |
48 | } | |
49 | ||
50 | GVirConfigDomainSerial *gvir_config_domain_serial_new(void) | |
51 | { | |
52 | GVirConfigObject *object; | |
53 | ||
54 | object = gvir_config_object_new(GVIR_CONFIG_TYPE_DOMAIN_SERIAL, | |
55 | "serial", NULL); | |
56 | return GVIR_CONFIG_DOMAIN_SERIAL(object); | |
57 | } | |
58 | ||
59 | GVirConfigDomainSerial *gvir_config_domain_serial_new_from_xml(const gchar *xml, | |
60 | GError **error) | |
61 | { | |
62 | GVirConfigObject *object; | |
63 | ||
64 | object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_DOMAIN_SERIAL, | |
65 | "serial", NULL, xml, error); | |
66 | if (object == NULL) | |
67 | return NULL; | |
68 | return GVIR_CONFIG_DOMAIN_SERIAL(object); | |
69 | } |
0 | /* | |
1 | * libvirt-gconfig-domain-serial.h: libvirt domain serial configuration | |
2 | * | |
3 | * Copyright (C) 2011-2012 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Daniel P. Berrange <berrange@redhat.com> | |
20 | */ | |
21 | ||
22 | #if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) | |
23 | #error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." | |
24 | #endif | |
25 | ||
26 | #ifndef __LIBVIRT_GCONFIG_DOMAIN_SERIAL_H__ | |
27 | #define __LIBVIRT_GCONFIG_DOMAIN_SERIAL_H__ | |
28 | ||
29 | G_BEGIN_DECLS | |
30 | ||
31 | #define GVIR_CONFIG_TYPE_DOMAIN_SERIAL (gvir_config_domain_serial_get_type ()) | |
32 | #define GVIR_CONFIG_DOMAIN_SERIAL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_DOMAIN_SERIAL, GVirConfigDomainSerial)) | |
33 | #define GVIR_CONFIG_DOMAIN_SERIAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_DOMAIN_SERIAL, GVirConfigDomainSerialClass)) | |
34 | #define GVIR_CONFIG_IS_DOMAIN_SERIAL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_DOMAIN_SERIAL)) | |
35 | #define GVIR_CONFIG_IS_DOMAIN_SERIAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_DOMAIN_SERIAL)) | |
36 | #define GVIR_CONFIG_DOMAIN_SERIAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_DOMAIN_SERIAL, GVirConfigDomainSerialClass)) | |
37 | ||
38 | typedef struct _GVirConfigDomainSerial GVirConfigDomainSerial; | |
39 | typedef struct _GVirConfigDomainSerialPrivate GVirConfigDomainSerialPrivate; | |
40 | typedef struct _GVirConfigDomainSerialClass GVirConfigDomainSerialClass; | |
41 | ||
42 | struct _GVirConfigDomainSerial | |
43 | { | |
44 | GVirConfigDomainChardev parent; | |
45 | ||
46 | GVirConfigDomainSerialPrivate *priv; | |
47 | ||
48 | /* Do not add fields to this struct */ | |
49 | }; | |
50 | ||
51 | struct _GVirConfigDomainSerialClass | |
52 | { | |
53 | GVirConfigDomainChardevClass parent_class; | |
54 | ||
55 | gpointer padding[20]; | |
56 | }; | |
57 | ||
58 | ||
59 | GType gvir_config_domain_serial_get_type(void); | |
60 | GVirConfigDomainSerial *gvir_config_domain_serial_new(void); | |
61 | GVirConfigDomainSerial *gvir_config_domain_serial_new_from_xml(const gchar *xml, | |
62 | GError **error); | |
63 | ||
64 | G_END_DECLS | |
65 | ||
66 | #endif /* __LIBVIRT_GCONFIG_DOMAIN_SERIAL_H__ */ |
0 | 0 | /* |
1 | * libvirt-gobject-config_domain_snapshot.c: libvirt glib integration | |
1 | * libvirt-gconfig-domain-snapshot.c: libvirt domain snapshot configuration | |
2 | 2 | * |
3 | 3 | * Copyright (C) 2008 Daniel P. Berrange |
4 | * Copyright (C) 2010 Red Hat | |
4 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
5 | 5 | * |
6 | 6 | * This library is free software; you can redistribute it and/or |
7 | 7 | * modify it under the terms of the GNU Lesser General Public |
22 | 22 | |
23 | 23 | #include <config.h> |
24 | 24 | |
25 | #include <string.h> | |
26 | ||
27 | 25 | #include "libvirt-gconfig/libvirt-gconfig.h" |
28 | 26 | |
29 | extern gboolean debugFlag; | |
30 | ||
31 | #define DEBUG(fmt, ...) do { if (G_UNLIKELY(debugFlag)) g_debug(fmt, ## __VA_ARGS__); } while (0) | |
32 | ||
33 | 27 | #define GVIR_CONFIG_DOMAIN_SNAPSHOT_GET_PRIVATE(obj) \ |
34 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_TYPE_CONFIG_DOMAIN_SNAPSHOT, GVirConfigDomainSnapshotPrivate)) | |
28 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_SNAPSHOT, GVirConfigDomainSnapshotPrivate)) | |
35 | 29 | |
36 | 30 | struct _GVirConfigDomainSnapshotPrivate |
37 | 31 | { |
38 | 32 | gboolean unused; |
39 | 33 | }; |
40 | 34 | |
41 | G_DEFINE_TYPE(GVirConfigDomainSnapshot, gvir_config_domain_snapshot, GVIR_TYPE_CONFIG_OBJECT); | |
35 | G_DEFINE_TYPE(GVirConfigDomainSnapshot, gvir_config_domain_snapshot, GVIR_CONFIG_TYPE_OBJECT); | |
42 | 36 | |
43 | 37 | |
44 | 38 | static void gvir_config_domain_snapshot_class_init(GVirConfigDomainSnapshotClass *klass) |
45 | 39 | { |
46 | ||
47 | 40 | g_type_class_add_private(klass, sizeof(GVirConfigDomainSnapshotPrivate)); |
48 | 41 | } |
49 | 42 | |
50 | 43 | |
51 | 44 | static void gvir_config_domain_snapshot_init(GVirConfigDomainSnapshot *conn) |
52 | 45 | { |
53 | GVirConfigDomainSnapshotPrivate *priv; | |
46 | g_debug("Init GVirConfigDomainSnapshot=%p", conn); | |
54 | 47 | |
55 | DEBUG("Init GVirConfigDomainSnapshot=%p", conn); | |
56 | ||
57 | priv = conn->priv = GVIR_CONFIG_DOMAIN_SNAPSHOT_GET_PRIVATE(conn); | |
58 | ||
59 | memset(priv, 0, sizeof(*priv)); | |
48 | conn->priv = GVIR_CONFIG_DOMAIN_SNAPSHOT_GET_PRIVATE(conn); | |
60 | 49 | } |
61 | 50 | |
62 | 51 | |
64 | 53 | { |
65 | 54 | GVirConfigObject *object; |
66 | 55 | |
67 | object = gvir_config_object_new(GVIR_TYPE_CONFIG_DOMAIN_SNAPSHOT, | |
56 | object = gvir_config_object_new(GVIR_CONFIG_TYPE_DOMAIN_SNAPSHOT, | |
68 | 57 | "domainsnapshot", |
69 | 58 | DATADIR "/libvirt/schemas/domainsnapshot.rng"); |
70 | 59 | return GVIR_CONFIG_DOMAIN_SNAPSHOT(object); |
75 | 64 | { |
76 | 65 | GVirConfigObject *object; |
77 | 66 | |
78 | object = gvir_config_object_new_from_xml(GVIR_TYPE_CONFIG_DOMAIN_SNAPSHOT, | |
67 | object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_DOMAIN_SNAPSHOT, | |
79 | 68 | "domainsnapshot", |
80 | 69 | DATADIR "/libvirt/schemas/domainsnapshot.rng", |
81 | 70 | xml, error); |
0 | 0 | /* |
1 | * libvirt-gobject-domain_snapshot-config.c: libvirt gobject integration | |
1 | * libvirt-gconfig-domain-snapshot.h: libvirt domain snapshot configuration | |
2 | 2 | * |
3 | * Copyright (C) 2010 Red Hat | |
3 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
28 | 28 | |
29 | 29 | G_BEGIN_DECLS |
30 | 30 | |
31 | #define GVIR_TYPE_CONFIG_DOMAIN_SNAPSHOT (gvir_config_domain_snapshot_get_type ()) | |
32 | #define GVIR_CONFIG_DOMAIN_SNAPSHOT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_TYPE_CONFIG_DOMAIN_SNAPSHOT, GVirConfigDomainSnapshot)) | |
33 | #define GVIR_CONFIG_DOMAIN_SNAPSHOT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_TYPE_CONFIG_DOMAIN_SNAPSHOT, GVirConfigDomainSnapshotClass)) | |
34 | #define GVIR_IS_CONFIG_DOMAIN_SNAPSHOT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_TYPE_CONFIG_DOMAIN_SNAPSHOT)) | |
35 | #define GVIR_IS_CONFIG_DOMAIN_SNAPSHOT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_TYPE_CONFIG_DOMAIN_SNAPSHOT)) | |
36 | #define GVIR_CONFIG_DOMAIN_SNAPSHOT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_TYPE_CONFIG_DOMAIN_SNAPSHOT, GVirConfigDomainSnapshotClass)) | |
31 | #define GVIR_CONFIG_TYPE_DOMAIN_SNAPSHOT (gvir_config_domain_snapshot_get_type ()) | |
32 | #define GVIR_CONFIG_DOMAIN_SNAPSHOT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_DOMAIN_SNAPSHOT, GVirConfigDomainSnapshot)) | |
33 | #define GVIR_CONFIG_DOMAIN_SNAPSHOT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_DOMAIN_SNAPSHOT, GVirConfigDomainSnapshotClass)) | |
34 | #define GVIR_CONFIG_IS_DOMAIN_SNAPSHOT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_DOMAIN_SNAPSHOT)) | |
35 | #define GVIR_CONFIG_IS_DOMAIN_SNAPSHOT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_DOMAIN_SNAPSHOT)) | |
36 | #define GVIR_CONFIG_DOMAIN_SNAPSHOT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_DOMAIN_SNAPSHOT, GVirConfigDomainSnapshotClass)) | |
37 | 37 | |
38 | 38 | typedef struct _GVirConfigDomainSnapshot GVirConfigDomainSnapshot; |
39 | 39 | typedef struct _GVirConfigDomainSnapshotPrivate GVirConfigDomainSnapshotPrivate; |
0 | /* | |
1 | * libvirt-gconfig-domain-sound.c: libvirt domain sound configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Christophe Fergeau <cfergeau@redhat.com> | |
20 | */ | |
21 | ||
22 | #include <config.h> | |
23 | ||
24 | #include "libvirt-gconfig/libvirt-gconfig.h" | |
25 | #include "libvirt-gconfig/libvirt-gconfig-private.h" | |
26 | ||
27 | #define GVIR_CONFIG_DOMAIN_SOUND_GET_PRIVATE(obj) \ | |
28 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_SOUND, GVirConfigDomainSoundPrivate)) | |
29 | ||
30 | struct _GVirConfigDomainSoundPrivate | |
31 | { | |
32 | gboolean unused; | |
33 | }; | |
34 | ||
35 | G_DEFINE_TYPE(GVirConfigDomainSound, gvir_config_domain_sound, GVIR_CONFIG_TYPE_DOMAIN_DEVICE); | |
36 | ||
37 | ||
38 | static void gvir_config_domain_sound_class_init(GVirConfigDomainSoundClass *klass) | |
39 | { | |
40 | g_type_class_add_private(klass, sizeof(GVirConfigDomainSoundPrivate)); | |
41 | } | |
42 | ||
43 | ||
44 | static void gvir_config_domain_sound_init(GVirConfigDomainSound *sound) | |
45 | { | |
46 | g_debug("Init GVirConfigDomainSound=%p", sound); | |
47 | ||
48 | sound->priv = GVIR_CONFIG_DOMAIN_SOUND_GET_PRIVATE(sound); | |
49 | } | |
50 | ||
51 | ||
52 | GVirConfigDomainSound *gvir_config_domain_sound_new(void) | |
53 | { | |
54 | GVirConfigObject *object; | |
55 | ||
56 | object = gvir_config_object_new(GVIR_CONFIG_TYPE_DOMAIN_SOUND, | |
57 | "sound", NULL); | |
58 | return GVIR_CONFIG_DOMAIN_SOUND(object); | |
59 | } | |
60 | ||
61 | GVirConfigDomainSound *gvir_config_domain_sound_new_from_xml(const gchar *xml, | |
62 | GError **error) | |
63 | { | |
64 | GVirConfigObject *object; | |
65 | ||
66 | object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_DOMAIN_SOUND, | |
67 | "sound", NULL, xml, error); | |
68 | return GVIR_CONFIG_DOMAIN_SOUND(object); | |
69 | } | |
70 | ||
71 | void gvir_config_domain_sound_set_model(GVirConfigDomainSound *sound, | |
72 | GVirConfigDomainSoundModel model) | |
73 | { | |
74 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_SOUND(sound)); | |
75 | gvir_config_object_set_attribute_with_type(GVIR_CONFIG_OBJECT(sound), "model", | |
76 | GVIR_CONFIG_TYPE_DOMAIN_SOUND_MODEL, | |
77 | model, | |
78 | NULL); | |
79 | } |
0 | /* | |
1 | * libvirt-gconfig-domain-sound.h: libvirt domain sound configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Christophe Fergeau <cfergeau@redhat.com> | |
20 | */ | |
21 | ||
22 | #if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) | |
23 | #error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." | |
24 | #endif | |
25 | ||
26 | #ifndef __LIBVIRT_GCONFIG_DOMAIN_SOUND_H__ | |
27 | #define __LIBVIRT_GCONFIG_DOMAIN_SOUND_H__ | |
28 | ||
29 | G_BEGIN_DECLS | |
30 | ||
31 | #define GVIR_CONFIG_TYPE_DOMAIN_SOUND (gvir_config_domain_sound_get_type ()) | |
32 | #define GVIR_CONFIG_DOMAIN_SOUND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_DOMAIN_SOUND, GVirConfigDomainSound)) | |
33 | #define GVIR_CONFIG_DOMAIN_SOUND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_DOMAIN_SOUND, GVirConfigDomainSoundClass)) | |
34 | #define GVIR_CONFIG_IS_DOMAIN_SOUND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_DOMAIN_SOUND)) | |
35 | #define GVIR_CONFIG_IS_DOMAIN_SOUND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_DOMAIN_SOUND)) | |
36 | #define GVIR_CONFIG_DOMAIN_SOUND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_DOMAIN_SOUND, GVirConfigDomainSoundClass)) | |
37 | ||
38 | typedef struct _GVirConfigDomainSound GVirConfigDomainSound; | |
39 | typedef struct _GVirConfigDomainSoundPrivate GVirConfigDomainSoundPrivate; | |
40 | typedef struct _GVirConfigDomainSoundClass GVirConfigDomainSoundClass; | |
41 | ||
42 | struct _GVirConfigDomainSound | |
43 | { | |
44 | GVirConfigDomainDevice parent; | |
45 | ||
46 | GVirConfigDomainSoundPrivate *priv; | |
47 | ||
48 | /* Do not add fields to this struct */ | |
49 | }; | |
50 | ||
51 | struct _GVirConfigDomainSoundClass | |
52 | { | |
53 | GVirConfigDomainDeviceClass parent_class; | |
54 | ||
55 | gpointer padding[20]; | |
56 | }; | |
57 | ||
58 | typedef enum { | |
59 | GVIR_CONFIG_DOMAIN_SOUND_MODEL_SB16, | |
60 | GVIR_CONFIG_DOMAIN_SOUND_MODEL_ES1370, | |
61 | GVIR_CONFIG_DOMAIN_SOUND_MODEL_PCSPK, | |
62 | GVIR_CONFIG_DOMAIN_SOUND_MODEL_AC97, | |
63 | GVIR_CONFIG_DOMAIN_SOUND_MODEL_ICH6 | |
64 | } GVirConfigDomainSoundModel; | |
65 | ||
66 | GType gvir_config_domain_sound_get_type(void); | |
67 | ||
68 | GVirConfigDomainSound *gvir_config_domain_sound_new(void); | |
69 | GVirConfigDomainSound *gvir_config_domain_sound_new_from_xml(const gchar *xml, | |
70 | GError **error); | |
71 | void gvir_config_domain_sound_set_model(GVirConfigDomainSound *sound, | |
72 | GVirConfigDomainSoundModel model); | |
73 | ||
74 | G_END_DECLS | |
75 | ||
76 | #endif /* __LIBVIRT_GCONFIG_DOMAIN_SOUND_H__ */ |
0 | /* | |
1 | * libvirt-gconfig-domain-timer.c: libvirt domain timer configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Christophe Fergeau <cfergeau@gmail.com> | |
20 | */ | |
21 | ||
22 | #include <config.h> | |
23 | ||
24 | #include "libvirt-gconfig/libvirt-gconfig.h" | |
25 | ||
26 | #define GVIR_CONFIG_DOMAIN_TIMER_GET_PRIVATE(obj) \ | |
27 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_TIMER, GVirConfigDomainTimerPrivate)) | |
28 | ||
29 | struct _GVirConfigDomainTimerPrivate | |
30 | { | |
31 | gboolean unused; | |
32 | }; | |
33 | ||
34 | G_DEFINE_TYPE(GVirConfigDomainTimer, gvir_config_domain_timer, GVIR_CONFIG_TYPE_OBJECT); | |
35 | ||
36 | ||
37 | static void gvir_config_domain_timer_class_init(GVirConfigDomainTimerClass *klass) | |
38 | { | |
39 | g_type_class_add_private(klass, sizeof(GVirConfigDomainTimerPrivate)); | |
40 | } | |
41 | ||
42 | ||
43 | static void gvir_config_domain_timer_init(GVirConfigDomainTimer *timer) | |
44 | { | |
45 | g_debug("Init GVirConfigDomainTimer=%p", timer); | |
46 | ||
47 | timer->priv = GVIR_CONFIG_DOMAIN_TIMER_GET_PRIVATE(timer); | |
48 | } | |
49 | ||
50 | ||
51 | GVirConfigDomainTimer *gvir_config_domain_timer_new(void) | |
52 | { | |
53 | GVirConfigObject *object; | |
54 | ||
55 | object = gvir_config_object_new(GVIR_CONFIG_TYPE_DOMAIN_TIMER, "timer", NULL); | |
56 | return GVIR_CONFIG_DOMAIN_TIMER(object); | |
57 | } | |
58 | ||
59 | ||
60 | GVirConfigDomainTimer *gvir_config_domain_timer_new_from_xml(const gchar *xml, | |
61 | GError **error) | |
62 | { | |
63 | GVirConfigObject *object; | |
64 | ||
65 | object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_DOMAIN_TIMER, | |
66 | "timer", NULL, xml, error); | |
67 | return GVIR_CONFIG_DOMAIN_TIMER(object); | |
68 | } |
0 | /* | |
1 | * libvirt-gconfig-domain-timer.h: libvirt domain timer configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Christophe Fergeau <cfergeau@gmail.com> | |
20 | */ | |
21 | ||
22 | #if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) | |
23 | #error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." | |
24 | #endif | |
25 | ||
26 | #ifndef __LIBVIRT_GCONFIG_DOMAIN_TIMER_H__ | |
27 | #define __LIBVIRT_GCONFIG_DOMAIN_TIMER_H__ | |
28 | ||
29 | G_BEGIN_DECLS | |
30 | ||
31 | #define GVIR_CONFIG_TYPE_DOMAIN_TIMER (gvir_config_domain_timer_get_type ()) | |
32 | #define GVIR_CONFIG_DOMAIN_TIMER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_DOMAIN_TIMER, GVirConfigDomainTimer)) | |
33 | #define GVIR_CONFIG_DOMAIN_TIMER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_DOMAIN_TIMER, GVirConfigDomainTimerClass)) | |
34 | #define GVIR_CONFIG_IS_DOMAIN_TIMER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_DOMAIN_TIMER)) | |
35 | #define GVIR_CONFIG_IS_DOMAIN_TIMER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_DOMAIN_TIMER)) | |
36 | #define GVIR_CONFIG_DOMAIN_TIMER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_DOMAIN_TIMER, GVirConfigDomainTimerClass)) | |
37 | ||
38 | typedef struct _GVirConfigDomainTimer GVirConfigDomainTimer; | |
39 | typedef struct _GVirConfigDomainTimerPrivate GVirConfigDomainTimerPrivate; | |
40 | typedef struct _GVirConfigDomainTimerClass GVirConfigDomainTimerClass; | |
41 | ||
42 | struct _GVirConfigDomainTimer | |
43 | { | |
44 | GVirConfigObject parent; | |
45 | ||
46 | GVirConfigDomainTimerPrivate *priv; | |
47 | ||
48 | /* Do not add fields to this struct */ | |
49 | }; | |
50 | ||
51 | struct _GVirConfigDomainTimerClass | |
52 | { | |
53 | GVirConfigObjectClass parent_class; | |
54 | ||
55 | gpointer padding[20]; | |
56 | }; | |
57 | ||
58 | ||
59 | GType gvir_config_domain_timer_get_type(void); | |
60 | ||
61 | GVirConfigDomainTimer *gvir_config_domain_timer_new(void); | |
62 | GVirConfigDomainTimer *gvir_config_domain_timer_new_from_xml(const gchar *xml, | |
63 | GError **error); | |
64 | ||
65 | G_END_DECLS | |
66 | ||
67 | #endif /* __LIBVIRT_GCONFIG_DOMAIN_TIMER_H__ */ |
0 | /* | |
1 | * libvirt-gconfig-domain-video.c: libvirt domain video configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Christophe Fergeau <cfergeau@gmail.com> | |
20 | */ | |
21 | ||
22 | #include <config.h> | |
23 | ||
24 | #include "libvirt-gconfig/libvirt-gconfig.h" | |
25 | #include "libvirt-gconfig/libvirt-gconfig-private.h" | |
26 | ||
27 | #define GVIR_CONFIG_DOMAIN_VIDEO_GET_PRIVATE(obj) \ | |
28 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_VIDEO, GVirConfigDomainVideoPrivate)) | |
29 | ||
30 | struct _GVirConfigDomainVideoPrivate | |
31 | { | |
32 | gboolean unused; | |
33 | }; | |
34 | ||
35 | G_DEFINE_TYPE(GVirConfigDomainVideo, gvir_config_domain_video, GVIR_CONFIG_TYPE_DOMAIN_DEVICE); | |
36 | ||
37 | ||
38 | static void gvir_config_domain_video_class_init(GVirConfigDomainVideoClass *klass) | |
39 | { | |
40 | g_type_class_add_private(klass, sizeof(GVirConfigDomainVideoPrivate)); | |
41 | } | |
42 | ||
43 | ||
44 | static void gvir_config_domain_video_init(GVirConfigDomainVideo *video) | |
45 | { | |
46 | g_debug("Init GVirConfigDomainVideo=%p", video); | |
47 | ||
48 | video->priv = GVIR_CONFIG_DOMAIN_VIDEO_GET_PRIVATE(video); | |
49 | } | |
50 | ||
51 | ||
52 | GVirConfigDomainVideo *gvir_config_domain_video_new(void) | |
53 | { | |
54 | GVirConfigObject *object; | |
55 | ||
56 | object = gvir_config_object_new(GVIR_CONFIG_TYPE_DOMAIN_VIDEO, | |
57 | "video", NULL); | |
58 | return GVIR_CONFIG_DOMAIN_VIDEO(object); | |
59 | } | |
60 | ||
61 | GVirConfigDomainVideo *gvir_config_domain_video_new_from_xml(const gchar *xml, | |
62 | GError **error) | |
63 | { | |
64 | GVirConfigObject *object; | |
65 | ||
66 | object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_DOMAIN_VIDEO, | |
67 | "video", NULL, xml, error); | |
68 | return GVIR_CONFIG_DOMAIN_VIDEO(object); | |
69 | } | |
70 | ||
71 | void gvir_config_domain_video_set_model(GVirConfigDomainVideo *video, | |
72 | GVirConfigDomainVideoModel model) | |
73 | { | |
74 | GVirConfigObject *node; | |
75 | ||
76 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_VIDEO(video)); | |
77 | node = gvir_config_object_replace_child(GVIR_CONFIG_OBJECT(video), | |
78 | "model"); | |
79 | g_return_if_fail(GVIR_CONFIG_IS_OBJECT(node)); | |
80 | gvir_config_object_set_attribute_with_type(node, "type", | |
81 | GVIR_CONFIG_TYPE_DOMAIN_VIDEO_MODEL, | |
82 | model, | |
83 | NULL); | |
84 | g_object_unref(G_OBJECT(node)); | |
85 | } | |
86 | ||
87 | void gvir_config_domain_video_set_vram(GVirConfigDomainVideo *video, | |
88 | guint kbytes) | |
89 | { | |
90 | xmlNodePtr node; | |
91 | char *vram_str; | |
92 | ||
93 | node = gvir_config_object_get_xml_node(GVIR_CONFIG_OBJECT(video)); | |
94 | if (node == NULL) | |
95 | return; | |
96 | node = gvir_config_xml_get_element(node, "model", NULL); | |
97 | if (node == NULL) | |
98 | return; | |
99 | vram_str = g_strdup_printf("%u", kbytes); | |
100 | xmlNewProp(node, (xmlChar*)"vram", (xmlChar*)vram_str); | |
101 | g_free(vram_str); | |
102 | } | |
103 | ||
104 | void gvir_config_domain_video_set_heads(GVirConfigDomainVideo *video, | |
105 | guint head_count) | |
106 | { | |
107 | xmlNodePtr node; | |
108 | char *heads_str; | |
109 | ||
110 | node = gvir_config_object_get_xml_node(GVIR_CONFIG_OBJECT(video)); | |
111 | if (node == NULL) | |
112 | return; | |
113 | node = gvir_config_xml_get_element(node, "model", NULL); | |
114 | if (node == NULL) | |
115 | return; | |
116 | heads_str = g_strdup_printf("%u", head_count); | |
117 | xmlNewProp(node, (xmlChar*)"heads", (xmlChar*)heads_str); | |
118 | g_free(heads_str); | |
119 | } |
0 | /* | |
1 | * libvirt-gconfig-domain-video.h: libvirt domain video configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Christophe Fergeau <cfergeau@gmail.com> | |
20 | */ | |
21 | ||
22 | #if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) | |
23 | #error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." | |
24 | #endif | |
25 | ||
26 | #ifndef __LIBVIRT_GCONFIG_DOMAIN_VIDEO_H__ | |
27 | #define __LIBVIRT_GCONFIG_DOMAIN_VIDEO_H__ | |
28 | ||
29 | G_BEGIN_DECLS | |
30 | ||
31 | #define GVIR_CONFIG_TYPE_DOMAIN_VIDEO (gvir_config_domain_video_get_type ()) | |
32 | #define GVIR_CONFIG_DOMAIN_VIDEO(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_DOMAIN_VIDEO, GVirConfigDomainVideo)) | |
33 | #define GVIR_CONFIG_DOMAIN_VIDEO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_DOMAIN_VIDEO, GVirConfigDomainVideoClass)) | |
34 | #define GVIR_CONFIG_IS_DOMAIN_VIDEO(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_DOMAIN_VIDEO)) | |
35 | #define GVIR_CONFIG_IS_DOMAIN_VIDEO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_DOMAIN_VIDEO)) | |
36 | #define GVIR_CONFIG_DOMAIN_VIDEO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_DOMAIN_VIDEO, GVirConfigDomainVideoClass)) | |
37 | ||
38 | typedef struct _GVirConfigDomainVideo GVirConfigDomainVideo; | |
39 | typedef struct _GVirConfigDomainVideoPrivate GVirConfigDomainVideoPrivate; | |
40 | typedef struct _GVirConfigDomainVideoClass GVirConfigDomainVideoClass; | |
41 | ||
42 | struct _GVirConfigDomainVideo | |
43 | { | |
44 | GVirConfigDomainDevice parent; | |
45 | ||
46 | GVirConfigDomainVideoPrivate *priv; | |
47 | ||
48 | /* Do not add fields to this struct */ | |
49 | }; | |
50 | ||
51 | struct _GVirConfigDomainVideoClass | |
52 | { | |
53 | GVirConfigDomainDeviceClass parent_class; | |
54 | ||
55 | gpointer padding[20]; | |
56 | }; | |
57 | ||
58 | typedef enum { | |
59 | GVIR_CONFIG_DOMAIN_VIDEO_MODEL_VGA, | |
60 | GVIR_CONFIG_DOMAIN_VIDEO_MODEL_CIRRUS, | |
61 | GVIR_CONFIG_DOMAIN_VIDEO_MODEL_VMVGA, | |
62 | GVIR_CONFIG_DOMAIN_VIDEO_MODEL_XEN, | |
63 | GVIR_CONFIG_DOMAIN_VIDEO_MODEL_VBOX, | |
64 | GVIR_CONFIG_DOMAIN_VIDEO_MODEL_QXL | |
65 | } GVirConfigDomainVideoModel; | |
66 | ||
67 | GType gvir_config_domain_video_get_type(void); | |
68 | ||
69 | GVirConfigDomainVideo *gvir_config_domain_video_new(void); | |
70 | GVirConfigDomainVideo *gvir_config_domain_video_new_from_xml(const gchar *xml, | |
71 | GError **error); | |
72 | void gvir_config_domain_video_set_model(GVirConfigDomainVideo *video, | |
73 | GVirConfigDomainVideoModel model); | |
74 | void gvir_config_domain_video_set_vram(GVirConfigDomainVideo *video, | |
75 | guint kbytes); | |
76 | void gvir_config_domain_video_set_heads(GVirConfigDomainVideo *video, | |
77 | guint head_count); | |
78 | ||
79 | G_END_DECLS | |
80 | ||
81 | #endif /* __LIBVIRT_GCONFIG_DOMAIN_VIDEO_H__ */ |
0 | 0 | /* |
1 | * libvirt-gobject-config_domain.c: libvirt glib integration | |
1 | * libvirt-gconfig-domain.c: libvirt domain configuration | |
2 | 2 | * |
3 | 3 | * Copyright (C) 2008 Daniel P. Berrange |
4 | * Copyright (C) 2010 Red Hat | |
4 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
5 | 5 | * |
6 | 6 | * This library is free software; you can redistribute it and/or |
7 | 7 | * modify it under the terms of the GNU Lesser General Public |
22 | 22 | |
23 | 23 | #include <config.h> |
24 | 24 | |
25 | #include <string.h> | |
26 | ||
27 | 25 | #include "libvirt-gconfig/libvirt-gconfig.h" |
28 | #include "libvirt-gconfig/libvirt-gconfig-helpers-private.h" | |
29 | ||
30 | extern gboolean debugFlag; | |
31 | ||
32 | #define DEBUG(fmt, ...) do { if (G_UNLIKELY(debugFlag)) g_debug(fmt, ## __VA_ARGS__); } while (0) | |
26 | #include "libvirt-gconfig/libvirt-gconfig-private.h" | |
33 | 27 | |
34 | 28 | #define GVIR_CONFIG_DOMAIN_GET_PRIVATE(obj) \ |
35 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_TYPE_CONFIG_DOMAIN, GVirConfigDomainPrivate)) | |
29 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN, GVirConfigDomainPrivate)) | |
36 | 30 | |
37 | 31 | struct _GVirConfigDomainPrivate |
38 | 32 | { |
39 | 33 | gboolean unused; |
40 | 34 | }; |
41 | 35 | |
42 | G_DEFINE_TYPE(GVirConfigDomain, gvir_config_domain, GVIR_TYPE_CONFIG_OBJECT); | |
36 | G_DEFINE_TYPE(GVirConfigDomain, gvir_config_domain, GVIR_CONFIG_TYPE_OBJECT); | |
43 | 37 | |
44 | 38 | enum { |
45 | 39 | PROP_0, |
46 | 40 | PROP_NAME, |
47 | 41 | PROP_MEMORY, |
42 | PROP_VCPU, | |
48 | 43 | PROP_FEATURES |
49 | 44 | }; |
50 | 45 | |
62 | 57 | case PROP_MEMORY: |
63 | 58 | g_value_set_uint64(value, gvir_config_domain_get_memory(domain)); |
64 | 59 | break; |
60 | case PROP_VCPU: | |
61 | g_value_set_uint64(value, gvir_config_domain_get_vcpus(domain)); | |
62 | break; | |
65 | 63 | case PROP_FEATURES: |
66 | 64 | g_value_take_boxed(value, gvir_config_domain_get_features(domain)); |
67 | 65 | break; |
84 | 82 | break; |
85 | 83 | case PROP_MEMORY: |
86 | 84 | gvir_config_domain_set_memory(domain, g_value_get_uint64(value)); |
85 | break; | |
86 | case PROP_VCPU: | |
87 | gvir_config_domain_set_vcpus(domain, g_value_get_uint64(value)); | |
87 | 88 | break; |
88 | 89 | case PROP_FEATURES: |
89 | 90 | gvir_config_domain_set_features(domain, g_value_get_boxed(value)); |
121 | 122 | G_PARAM_READWRITE | |
122 | 123 | G_PARAM_STATIC_STRINGS)); |
123 | 124 | g_object_class_install_property(object_class, |
125 | PROP_VCPU, | |
126 | g_param_spec_uint64("vcpu", | |
127 | "Virtual CPUs", | |
128 | "Maximum Number of Guest Virtual CPUs", | |
129 | 0, G_MAXUINT64, | |
130 | 1, | |
131 | G_PARAM_READWRITE | | |
132 | G_PARAM_STATIC_STRINGS)); | |
133 | g_object_class_install_property(object_class, | |
124 | 134 | PROP_FEATURES, |
125 | 135 | g_param_spec_boxed("features", |
126 | 136 | "Features", |
133 | 143 | |
134 | 144 | static void gvir_config_domain_init(GVirConfigDomain *conn) |
135 | 145 | { |
136 | GVirConfigDomainPrivate *priv; | |
137 | ||
138 | DEBUG("Init GVirConfigDomain=%p", conn); | |
139 | ||
140 | priv = conn->priv = GVIR_CONFIG_DOMAIN_GET_PRIVATE(conn); | |
141 | ||
142 | memset(priv, 0, sizeof(*priv)); | |
146 | g_debug("Init GVirConfigDomain=%p", conn); | |
147 | ||
148 | conn->priv = GVIR_CONFIG_DOMAIN_GET_PRIVATE(conn); | |
143 | 149 | } |
144 | 150 | |
145 | 151 | |
148 | 154 | { |
149 | 155 | GVirConfigObject *object; |
150 | 156 | |
151 | object = gvir_config_object_new_from_xml(GVIR_TYPE_CONFIG_DOMAIN, | |
157 | object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_DOMAIN, | |
152 | 158 | "domain", |
153 | 159 | DATADIR "/libvirt/schemas/domain.rng", |
154 | 160 | xml, error); |
159 | 165 | { |
160 | 166 | GVirConfigObject *object; |
161 | 167 | |
162 | object = gvir_config_object_new(GVIR_TYPE_CONFIG_DOMAIN, | |
168 | object = gvir_config_object_new(GVIR_CONFIG_TYPE_DOMAIN, | |
163 | 169 | "domain", |
164 | 170 | DATADIR "/libvirt/schemas/domain.rng"); |
165 | 171 | return GVIR_CONFIG_DOMAIN(object); |
166 | 172 | } |
167 | 173 | |
174 | ||
175 | void gvir_config_domain_set_virt_type(GVirConfigDomain *domain, GVirConfigDomainVirtType type) | |
176 | { | |
177 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN(domain)); | |
178 | gvir_config_object_set_attribute_with_type(GVIR_CONFIG_OBJECT(domain), | |
179 | "type", | |
180 | GVIR_CONFIG_TYPE_DOMAIN_VIRT_TYPE, | |
181 | type, NULL); | |
182 | } | |
183 | ||
184 | ||
168 | 185 | char *gvir_config_domain_get_name(GVirConfigDomain *domain) |
169 | 186 | { |
170 | 187 | return gvir_config_object_get_node_content(GVIR_CONFIG_OBJECT(domain), |
178 | 195 | g_object_notify(G_OBJECT(domain), "name"); |
179 | 196 | } |
180 | 197 | |
198 | /** | |
199 | * gvir_config_domain_get_memory: | |
200 | * @domain: A domain configuration object. | |
201 | * | |
202 | * Returns: amount of RAM in kilobytes (i.e. blocks of 1024 bytes). | |
203 | */ | |
181 | 204 | guint64 gvir_config_domain_get_memory(GVirConfigDomain *domain) |
182 | 205 | { |
183 | 206 | return gvir_config_object_get_node_content_uint64(GVIR_CONFIG_OBJECT(domain), |
184 | 207 | "memory"); |
185 | 208 | } |
186 | 209 | |
210 | /** | |
211 | * gvir_config_domain_set_memory: | |
212 | * @domain: A domain configuration object. | |
213 | * @memory: The amount of RAM in kilobytes. | |
214 | * | |
215 | * Sets the amount of RAM allocated to @domain in kilobytes (i.e. blocks of 1024 bytes). | |
216 | */ | |
187 | 217 | void gvir_config_domain_set_memory(GVirConfigDomain *domain, guint64 memory) |
188 | 218 | { |
189 | 219 | gvir_config_object_set_node_content_uint64(GVIR_CONFIG_OBJECT(domain), |
191 | 221 | g_object_notify(G_OBJECT(domain), "memory"); |
192 | 222 | } |
193 | 223 | |
224 | guint64 gvir_config_domain_get_vcpus(GVirConfigDomain *domain) | |
225 | { | |
226 | return gvir_config_object_get_node_content_uint64(GVIR_CONFIG_OBJECT(domain), | |
227 | "vcpu"); | |
228 | } | |
229 | ||
230 | void gvir_config_domain_set_vcpus(GVirConfigDomain *domain, guint64 vcpu_count) | |
231 | { | |
232 | gvir_config_object_set_node_content_uint64(GVIR_CONFIG_OBJECT(domain), | |
233 | "vcpu", vcpu_count); | |
234 | g_object_notify(G_OBJECT(domain), "vcpu"); | |
235 | } | |
236 | ||
237 | static gboolean add_feature(xmlNodePtr node, gpointer opaque) | |
238 | { | |
239 | GPtrArray *features; | |
240 | g_return_val_if_fail(opaque != NULL, FALSE); | |
241 | ||
242 | features = (GPtrArray *)opaque; | |
243 | ||
244 | g_ptr_array_add(features, g_strdup((char *)node->name)); | |
245 | ||
246 | return TRUE; | |
247 | } | |
248 | ||
194 | 249 | /** |
195 | 250 | * gvir_config_domain_get_features: |
196 | 251 | * Returns: (transfer full): |
198 | 253 | GStrv gvir_config_domain_get_features(GVirConfigDomain *domain) |
199 | 254 | { |
200 | 255 | GPtrArray *features; |
201 | xmlNodePtr parent_node; | |
202 | xmlNodePtr node; | |
203 | xmlNodePtr it; | |
204 | ||
205 | parent_node = gvir_config_object_get_xml_node(GVIR_CONFIG_OBJECT(domain)); | |
206 | if (parent_node == NULL) | |
207 | return NULL; | |
208 | ||
209 | node = gvir_config_xml_get_element(parent_node, "features", NULL); | |
210 | if (node == NULL) | |
211 | return NULL; | |
256 | ||
257 | g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN(domain), NULL); | |
212 | 258 | |
213 | 259 | features = g_ptr_array_new(); |
214 | for (it = node->children; it != NULL; it = it->next) { | |
215 | g_ptr_array_add(features, g_strdup((char *)it->name)); | |
216 | } | |
260 | gvir_config_object_foreach_child(GVIR_CONFIG_OBJECT(domain), "features", | |
261 | add_feature, features); | |
217 | 262 | g_ptr_array_add(features, NULL); |
218 | 263 | |
219 | 264 | return (GStrv)g_ptr_array_free(features, FALSE); |
222 | 267 | void gvir_config_domain_set_features(GVirConfigDomain *domain, |
223 | 268 | const GStrv features) |
224 | 269 | { |
225 | xmlNodePtr parent_node; | |
226 | xmlNodePtr features_node; | |
227 | xmlNodePtr old_node; | |
270 | GVirConfigObject *features_node; | |
228 | 271 | GStrv it; |
229 | 272 | |
230 | parent_node = gvir_config_object_get_xml_node(GVIR_CONFIG_OBJECT(domain)); | |
231 | features_node = xmlNewDocNode(parent_node->doc, NULL, | |
232 | (xmlChar *)"features", NULL); | |
273 | features_node = gvir_config_object_replace_child(GVIR_CONFIG_OBJECT(domain), | |
274 | "features"); | |
275 | g_return_if_fail(GVIR_CONFIG_IS_OBJECT(features_node)); | |
233 | 276 | for (it = features; *it != NULL; it++) { |
234 | xmlNodePtr node; | |
235 | ||
236 | node = xmlNewDocNode(parent_node->doc, NULL, (xmlChar *)*it, NULL); | |
237 | xmlAddChild(features_node, node); | |
277 | GVirConfigObject *feature; | |
278 | feature = gvir_config_object_replace_child(GVIR_CONFIG_OBJECT(features_node), | |
279 | *it); | |
280 | g_object_unref(G_OBJECT(feature)); | |
238 | 281 | } |
239 | ||
240 | old_node = gvir_config_xml_get_element(parent_node, "features", NULL); | |
241 | if (old_node) { | |
242 | old_node = xmlReplaceNode(old_node, features_node); | |
243 | xmlFreeNode(old_node); | |
244 | } else { | |
245 | xmlAddChild(parent_node, features_node); | |
282 | g_object_unref(G_OBJECT(features_node)); | |
283 | g_object_notify(G_OBJECT(domain), "features"); | |
284 | } | |
285 | ||
286 | void gvir_config_domain_set_clock(GVirConfigDomain *domain, | |
287 | GVirConfigDomainClock *klock) | |
288 | { | |
289 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN(domain)); | |
290 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_CLOCK(klock)); | |
291 | ||
292 | gvir_config_object_attach(GVIR_CONFIG_OBJECT(domain), | |
293 | GVIR_CONFIG_OBJECT(klock)); | |
294 | } | |
295 | ||
296 | void gvir_config_domain_set_os(GVirConfigDomain *domain, | |
297 | GVirConfigDomainOs *os) | |
298 | { | |
299 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN(domain)); | |
300 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_OS(os)); | |
301 | ||
302 | gvir_config_object_attach(GVIR_CONFIG_OBJECT(domain), | |
303 | GVIR_CONFIG_OBJECT(os)); | |
304 | } | |
305 | ||
306 | void gvir_config_domain_set_seclabel(GVirConfigDomain *domain, | |
307 | GVirConfigDomainSeclabel *seclabel) | |
308 | { | |
309 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN(domain)); | |
310 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_SECLABEL(seclabel)); | |
311 | ||
312 | gvir_config_object_attach(GVIR_CONFIG_OBJECT(domain), | |
313 | GVIR_CONFIG_OBJECT(seclabel)); | |
314 | } | |
315 | ||
316 | void gvir_config_domain_set_lifecycle(GVirConfigDomain *domain, | |
317 | GVirConfigDomainLifecycleEvent event, | |
318 | GVirConfigDomainLifecycleAction action) | |
319 | { | |
320 | const char *event_str; | |
321 | const char *action_str; | |
322 | ||
323 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN(domain)); | |
324 | g_return_if_fail((event == GVIR_CONFIG_DOMAIN_LIFECYCLE_ON_CRASH) || | |
325 | ((action != GVIR_CONFIG_DOMAIN_LIFECYCLE_COREDUMP_DESTROY) && | |
326 | (action != GVIR_CONFIG_DOMAIN_LIFECYCLE_COREDUMP_RESTART))); | |
327 | ||
328 | event_str = gvir_config_genum_get_nick(GVIR_CONFIG_TYPE_DOMAIN_LIFECYCLE_EVENT, event); | |
329 | g_return_if_fail(event_str != NULL); | |
330 | action_str = gvir_config_genum_get_nick(GVIR_CONFIG_TYPE_DOMAIN_LIFECYCLE_ACTION, action); | |
331 | g_return_if_fail(action_str != NULL); | |
332 | ||
333 | gvir_config_object_set_node_content(GVIR_CONFIG_OBJECT(domain), | |
334 | event_str, action_str); | |
335 | } | |
336 | ||
337 | /** | |
338 | * gvir_config_domain_set_devices: | |
339 | * @devices: (in) (element-type LibvirtGConfig.DomainDevice): | |
340 | */ | |
341 | void gvir_config_domain_set_devices(GVirConfigDomain *domain, | |
342 | GList *devices) | |
343 | { | |
344 | GVirConfigObject *devices_node; | |
345 | GList *it; | |
346 | ||
347 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN(domain)); | |
348 | ||
349 | devices_node = gvir_config_object_new(GVIR_CONFIG_TYPE_OBJECT, | |
350 | "devices", NULL); | |
351 | for (it = devices; it != NULL; it = it->next) { | |
352 | if (!GVIR_CONFIG_IS_DOMAIN_DEVICE(it->data)) { | |
353 | g_warn_if_reached(); | |
354 | continue; | |
355 | } | |
356 | gvir_config_object_attach(devices_node, GVIR_CONFIG_OBJECT(it->data)); | |
246 | 357 | } |
247 | g_object_notify(G_OBJECT(domain), "features"); | |
248 | } | |
358 | ||
359 | gvir_config_object_attach(GVIR_CONFIG_OBJECT(domain), devices_node); | |
360 | g_object_unref(G_OBJECT(devices_node)); | |
361 | } | |
362 | ||
363 | void gvir_config_domain_add_device(GVirConfigDomain *domain, | |
364 | GVirConfigDomainDevice *device) | |
365 | { | |
366 | GVirConfigObject *devices_node; | |
367 | ||
368 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN(domain)); | |
369 | g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_DEVICE(device)); | |
370 | ||
371 | devices_node = gvir_config_object_add_child(GVIR_CONFIG_OBJECT(domain), | |
372 | "devices"); | |
373 | ||
374 | gvir_config_object_attach(devices_node, GVIR_CONFIG_OBJECT(device)); | |
375 | g_object_unref(G_OBJECT(devices_node)); | |
376 | } | |
377 | ||
378 | struct GetDeviceData { | |
379 | GVirConfigXmlDoc *doc; | |
380 | GList *devices; | |
381 | }; | |
382 | ||
383 | static gboolean add_device(xmlNodePtr node, gpointer opaque) | |
384 | { | |
385 | struct GetDeviceData* data = (struct GetDeviceData*)opaque; | |
386 | GVirConfigDomainDevice *device; | |
387 | ||
388 | device = gvir_config_domain_device_new_from_tree(data->doc, node); | |
389 | if (device != NULL) | |
390 | data->devices = g_list_append(data->devices, device); | |
391 | else | |
392 | g_debug("Failed to parse %s node", node->name); | |
393 | ||
394 | return TRUE; | |
395 | } | |
396 | ||
397 | /** | |
398 | * gvir_config_domain_get_devices: | |
399 | * | |
400 | * Gets the list of devices attached to @domain | |
401 | * | |
402 | * Returns: (element-type LibvirtGConfig.DomainDevice) (transfer full): | |
403 | * a newly allocated #GList of #GVirConfigDomainDevice. | |
404 | */ | |
405 | GList *gvir_config_domain_get_devices(GVirConfigDomain *domain) | |
406 | { | |
407 | struct GetDeviceData data; | |
408 | ||
409 | g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN(domain), NULL); | |
410 | ||
411 | g_object_get(G_OBJECT(domain), "doc", &data.doc, NULL); | |
412 | data.devices = NULL; | |
413 | gvir_config_object_foreach_child(GVIR_CONFIG_OBJECT(domain), "devices", | |
414 | add_device, &data); | |
415 | if (data.doc != NULL) { | |
416 | g_object_unref(G_OBJECT(data.doc)); | |
417 | } | |
418 | ||
419 | return data.devices; | |
420 | } |
0 | 0 | /* |
1 | * libvirt-gobject-domain-config.c: libvirt gobject integration | |
1 | * libvirt-gconfig-domain.h: libvirt domain configuration | |
2 | 2 | * |
3 | * Copyright (C) 2010 Red Hat | |
3 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
26 | 26 | #ifndef __LIBVIRT_GCONFIG_DOMAIN_H__ |
27 | 27 | #define __LIBVIRT_GCONFIG_DOMAIN_H__ |
28 | 28 | |
29 | #include <libvirt-gconfig/libvirt-gconfig-domain-clock.h> | |
30 | #include <libvirt-gconfig/libvirt-gconfig-domain-os.h> | |
31 | #include <libvirt-gconfig/libvirt-gconfig-domain-device.h> | |
32 | #include <libvirt-gconfig/libvirt-gconfig-domain-seclabel.h> | |
33 | ||
29 | 34 | G_BEGIN_DECLS |
30 | 35 | |
31 | #define GVIR_TYPE_CONFIG_DOMAIN (gvir_config_domain_get_type ()) | |
32 | #define GVIR_CONFIG_DOMAIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_TYPE_CONFIG_DOMAIN, GVirConfigDomain)) | |
33 | #define GVIR_CONFIG_DOMAIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_TYPE_CONFIG_DOMAIN, GVirConfigDomainClass)) | |
34 | #define GVIR_IS_CONFIG_DOMAIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_TYPE_CONFIG_DOMAIN)) | |
35 | #define GVIR_IS_CONFIG_DOMAIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_TYPE_CONFIG_DOMAIN)) | |
36 | #define GVIR_CONFIG_DOMAIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_TYPE_CONFIG_DOMAIN, GVirConfigDomainClass)) | |
36 | #define GVIR_CONFIG_TYPE_DOMAIN (gvir_config_domain_get_type ()) | |
37 | #define GVIR_CONFIG_DOMAIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_DOMAIN, GVirConfigDomain)) | |
38 | #define GVIR_CONFIG_DOMAIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_DOMAIN, GVirConfigDomainClass)) | |
39 | #define GVIR_CONFIG_IS_DOMAIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_DOMAIN)) | |
40 | #define GVIR_CONFIG_IS_DOMAIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_DOMAIN)) | |
41 | #define GVIR_CONFIG_DOMAIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_DOMAIN, GVirConfigDomainClass)) | |
37 | 42 | |
38 | 43 | typedef struct _GVirConfigDomain GVirConfigDomain; |
39 | 44 | typedef struct _GVirConfigDomainPrivate GVirConfigDomainPrivate; |
55 | 60 | gpointer padding[20]; |
56 | 61 | }; |
57 | 62 | |
63 | typedef enum { | |
64 | GVIR_CONFIG_DOMAIN_VIRT_QEMU, | |
65 | GVIR_CONFIG_DOMAIN_VIRT_KQEMU, | |
66 | GVIR_CONFIG_DOMAIN_VIRT_KVM, | |
67 | GVIR_CONFIG_DOMAIN_VIRT_XEN, | |
68 | GVIR_CONFIG_DOMAIN_VIRT_LXC, | |
69 | GVIR_CONFIG_DOMAIN_VIRT_UML, | |
70 | GVIR_CONFIG_DOMAIN_VIRT_OPENVZ, | |
71 | GVIR_CONFIG_DOMAIN_VIRT_VSERVER, | |
72 | GVIR_CONFIG_DOMAIN_VIRT_LDOM, | |
73 | GVIR_CONFIG_DOMAIN_VIRT_TEST, | |
74 | GVIR_CONFIG_DOMAIN_VIRT_VMWARE, | |
75 | GVIR_CONFIG_DOMAIN_VIRT_HYPERV, | |
76 | GVIR_CONFIG_DOMAIN_VIRT_VBOX, | |
77 | GVIR_CONFIG_DOMAIN_VIRT_ONE, | |
78 | GVIR_CONFIG_DOMAIN_VIRT_PHYP | |
79 | } GVirConfigDomainVirtType; | |
80 | ||
81 | typedef enum { | |
82 | GVIR_CONFIG_DOMAIN_LIFECYCLE_ON_POWEROFF, /*< nick=on_poweroff >*/ | |
83 | GVIR_CONFIG_DOMAIN_LIFECYCLE_ON_REBOOT, /*< nick=on_reboot >*/ | |
84 | GVIR_CONFIG_DOMAIN_LIFECYCLE_ON_CRASH /*< nick=on_crash >*/ | |
85 | } GVirConfigDomainLifecycleEvent; | |
86 | ||
87 | typedef enum { | |
88 | GVIR_CONFIG_DOMAIN_LIFECYCLE_DESTROY, | |
89 | GVIR_CONFIG_DOMAIN_LIFECYCLE_RESTART, | |
90 | GVIR_CONFIG_DOMAIN_LIFECYCLE_PRESERVE, | |
91 | GVIR_CONFIG_DOMAIN_LIFECYCLE_RENAME_RESTART, | |
92 | GVIR_CONFIG_DOMAIN_LIFECYCLE_COREDUMP_DESTROY, | |
93 | GVIR_CONFIG_DOMAIN_LIFECYCLE_COREDUMP_RESTART | |
94 | } GVirConfigDomainLifecycleAction; | |
58 | 95 | |
59 | 96 | GType gvir_config_domain_get_type(void); |
60 | 97 | |
61 | 98 | GVirConfigDomain *gvir_config_domain_new_from_xml(const gchar *xml, GError **error); |
62 | 99 | GVirConfigDomain *gvir_config_domain_new(void); |
63 | 100 | |
101 | void gvir_config_domain_set_virt_type(GVirConfigDomain *domain, GVirConfigDomainVirtType type); | |
64 | 102 | char *gvir_config_domain_get_name(GVirConfigDomain *domain); |
65 | 103 | void gvir_config_domain_set_name(GVirConfigDomain *domain, const char *name); |
66 | 104 | guint64 gvir_config_domain_get_memory(GVirConfigDomain *domain); |
67 | 105 | void gvir_config_domain_set_memory(GVirConfigDomain *domain, guint64 memory); |
106 | guint64 gvir_config_domain_get_vcpus(GVirConfigDomain *domain); | |
107 | void gvir_config_domain_set_vcpus(GVirConfigDomain *domain, | |
108 | guint64 vcpu_count); | |
68 | 109 | GStrv gvir_config_domain_get_features(GVirConfigDomain *domain); |
69 | 110 | void gvir_config_domain_set_features(GVirConfigDomain *domain, |
70 | 111 | const GStrv features); |
71 | ||
112 | void gvir_config_domain_set_clock(GVirConfigDomain *domain, | |
113 | GVirConfigDomainClock *klock); | |
114 | void gvir_config_domain_set_os(GVirConfigDomain *domain, | |
115 | GVirConfigDomainOs *os); | |
116 | void gvir_config_domain_set_seclabel(GVirConfigDomain *domain, | |
117 | GVirConfigDomainSeclabel *seclabel); | |
118 | void gvir_config_domain_set_devices(GVirConfigDomain *domain, | |
119 | GList *devices); | |
120 | void gvir_config_domain_add_device(GVirConfigDomain *domain, | |
121 | GVirConfigDomainDevice *device); | |
122 | GList *gvir_config_domain_get_devices(GVirConfigDomain *domain); | |
123 | void gvir_config_domain_set_lifecycle(GVirConfigDomain *domain, | |
124 | GVirConfigDomainLifecycleEvent event, | |
125 | GVirConfigDomainLifecycleAction action); | |
72 | 126 | |
73 | 127 | G_END_DECLS |
74 | 128 |
0 | /*** BEGIN file-header ***/ | |
1 | #include <libvirt-gconfig/libvirt-gconfig.h> | |
2 | ||
3 | /*** END file-header ***/ | |
4 | ||
5 | /*** BEGIN file-production ***/ | |
6 | /* enumerations from "@filename@" */ | |
7 | /*** END file-production ***/ | |
8 | ||
9 | /*** BEGIN value-header ***/ | |
10 | GType | |
11 | @enum_name@_get_type (void) | |
12 | { | |
13 | static volatile gsize g_define_type_id__volatile = 0; | |
14 | ||
15 | if (g_once_init_enter (&g_define_type_id__volatile)) | |
16 | { | |
17 | static const G@Type@Value values[] = { | |
18 | /*** END value-header ***/ | |
19 | ||
20 | /*** BEGIN value-production ***/ | |
21 | { @VALUENAME@, "@VALUENAME@", "@valuenick@" }, | |
22 | /*** END value-production ***/ | |
23 | ||
24 | /*** BEGIN value-tail ***/ | |
25 | { 0, NULL, NULL } | |
26 | }; | |
27 | GType g_define_type_id = | |
28 | g_@type@_register_static (g_intern_static_string ("@EnumName@"), values); | |
29 | g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); | |
30 | } | |
31 | ||
32 | return g_define_type_id__volatile; | |
33 | } | |
34 | ||
35 | /*** END value-tail ***/ |
0 | /*** BEGIN file-header ***/ | |
1 | #ifndef __LIBVIRT_GCONFIG_ENUM_TYPES_H__ | |
2 | #define __LIBVIRT_GCONFIG_ENUM_TYPES_H__ | |
3 | ||
4 | #include <libvirt-gconfig/libvirt-gconfig.h> | |
5 | ||
6 | G_BEGIN_DECLS | |
7 | /*** END file-header ***/ | |
8 | ||
9 | /*** BEGIN file-production ***/ | |
10 | ||
11 | /* enumerations from "@filename@" */ | |
12 | /*** END file-production ***/ | |
13 | ||
14 | /*** BEGIN value-header ***/ | |
15 | GType @enum_name@_get_type (void) G_GNUC_CONST; | |
16 | #define @ENUMPREFIX@_TYPE_@ENUMSHORT@ (@enum_name@_get_type ()) | |
17 | /*** END value-header ***/ | |
18 | ||
19 | /*** BEGIN file-tail ***/ | |
20 | G_END_DECLS | |
21 | ||
22 | #endif /* __LIBVIRT_GCONFIG_ENUM_TYPES_H__ */ | |
23 | /*** END file-tail ***/ |
0 | 0 | /* |
1 | * libvirt-gconfig-helpers.h: various GVirConfig helpers | |
1 | * libvirt-gconfig-helpers-private.h: libvirt configuration helpers | |
2 | 2 | * |
3 | * Copyright (C) 2010, 2011 Red Hat | |
3 | * Copyright (C) 2010, 2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
29 | 29 | |
30 | 30 | G_BEGIN_DECLS |
31 | 31 | |
32 | GError *gvir_xml_error_new(GQuark domain, gint code, | |
32 | GError *gvir_config_error_new(GQuark domain, gint code, | |
33 | const gchar *format, ...); | |
34 | void gvir_config_set_error(GError **err, | |
35 | GQuark domain, gint code, | |
33 | 36 | const gchar *format, ...); |
37 | void gvir_config_set_error_literal(GError **err, | |
38 | GQuark domain, gint code, | |
39 | const gchar *message); | |
40 | void gvir_config_set_error_valist(GError **err, | |
41 | GQuark domain, gint code, | |
42 | const gchar *format, | |
43 | va_list args); | |
34 | 44 | xmlNodePtr gvir_config_xml_parse(const char *xml, |
35 | 45 | const char *root_node, |
36 | 46 | GError **err); |
47 | typedef gboolean (*GVirConfigXmlNodeIterator)(xmlNodePtr node, gpointer opaque); | |
48 | void gvir_config_xml_foreach_child(xmlNodePtr node, | |
49 | GVirConfigXmlNodeIterator iter_func, | |
50 | gpointer opaque); | |
37 | 51 | xmlNode * gvir_config_xml_get_element (xmlNode *node, ...); |
38 | 52 | xmlChar * gvir_config_xml_get_child_element_content (xmlNode *node, |
39 | 53 | const char *child_name); |
40 | 54 | char *gvir_config_xml_get_child_element_content_glib (xmlNode *node, |
41 | 55 | const char *child_name); |
56 | xmlChar *gvir_config_xml_get_attribute_content(xmlNodePtr node, | |
57 | const char *attr_name); | |
58 | char *gvir_config_xml_get_attribute_content_glib(xmlNodePtr node, | |
59 | const char *attr_name); | |
60 | const char *gvir_config_genum_get_nick (GType enum_type, gint value); | |
61 | int gvir_config_genum_get_value (GType enum_type, const char *nick, gint default_value); | |
42 | 62 | G_END_DECLS |
43 | 63 | |
44 | 64 | #endif /* __LIBVIRT_GCONFIG_HELPERS_PRIVATE_H__ */ |
0 | 0 | /* |
1 | * libvirt-gconfig-helpers.c: various GVirConfig helpers | |
2 | * | |
3 | * Copyright (C) 2010, 2011 Red Hat | |
1 | * libvirt-gconfig-helpers.c: libvirt configuration helpers | |
2 | * | |
3 | * Copyright (C) 2010, 2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
35 | 35 | return g_quark_from_static_string("gvir-config-object"); |
36 | 36 | } |
37 | 37 | |
38 | static GError *gvir_xml_error_new_literal(GQuark domain, | |
39 | gint code, | |
40 | const gchar *message) | |
38 | static GError *gvir_config_error_new_literal(GQuark domain, | |
39 | gint code, | |
40 | const gchar *message) | |
41 | 41 | { |
42 | 42 | xmlErrorPtr xerr = xmlGetLastError(); |
43 | 43 | |
58 | 58 | } |
59 | 59 | |
60 | 60 | |
61 | GError *gvir_xml_error_new(GQuark domain, | |
62 | gint code, | |
63 | const gchar *format, | |
64 | ...) | |
61 | GError *gvir_config_error_new(GQuark domain, | |
62 | gint code, | |
63 | const gchar *format, | |
64 | ...) | |
65 | 65 | { |
66 | 66 | GError *err; |
67 | 67 | va_list args; |
71 | 71 | message = g_strdup_vprintf(format, args); |
72 | 72 | va_end(args); |
73 | 73 | |
74 | err = gvir_xml_error_new_literal(domain, code, message); | |
74 | err = gvir_config_error_new_literal(domain, code, message); | |
75 | 75 | |
76 | 76 | g_free(message); |
77 | 77 | |
78 | 78 | return err; |
79 | } | |
80 | ||
81 | ||
82 | void gvir_config_set_error(GError **err, | |
83 | GQuark domain, gint code, | |
84 | const gchar *format, ...) | |
85 | { | |
86 | va_list args; | |
87 | gchar *message; | |
88 | ||
89 | if (!err) | |
90 | return; | |
91 | ||
92 | va_start(args, format); | |
93 | message = g_strdup_vprintf(format, args); | |
94 | va_end(args); | |
95 | ||
96 | *err = gvir_config_error_new_literal(domain, code, message); | |
97 | ||
98 | g_free(message); | |
99 | } | |
100 | ||
101 | ||
102 | void gvir_config_set_error_literal(GError **err, | |
103 | GQuark domain, gint code, | |
104 | const gchar *message) | |
105 | { | |
106 | if (!err) | |
107 | return; | |
108 | ||
109 | *err = gvir_config_error_new_literal(domain, code, message); | |
110 | } | |
111 | ||
112 | ||
113 | void gvir_config_set_error_valist(GError **err, | |
114 | GQuark domain, gint code, | |
115 | const gchar *format, | |
116 | va_list args) | |
117 | { | |
118 | gchar *message; | |
119 | ||
120 | if (!err) | |
121 | return; | |
122 | ||
123 | message = g_strdup_vprintf(format, args); | |
124 | ||
125 | *err = gvir_config_error_new_literal(domain, code, message); | |
126 | ||
127 | g_free(message); | |
79 | 128 | } |
80 | 129 | |
81 | 130 | xmlNodePtr |
93 | 142 | |
94 | 143 | doc = xmlParseMemory(xml, strlen(xml)); |
95 | 144 | if (!doc) { |
96 | *err = gvir_xml_error_new(GVIR_CONFIG_OBJECT_ERROR, | |
97 | 0, | |
98 | "%s", | |
99 | "Unable to parse configuration"); | |
145 | gvir_config_set_error_literal(err, GVIR_CONFIG_OBJECT_ERROR, | |
146 | 0, | |
147 | "Unable to parse configuration"); | |
100 | 148 | return NULL; |
101 | 149 | } |
102 | 150 | if ((!doc->children) || (strcmp((char *)doc->children->name, root_node) != 0)) { |
103 | *err = g_error_new(GVIR_CONFIG_OBJECT_ERROR, | |
104 | 0, | |
105 | "XML data has no '%s' node", | |
106 | root_node); | |
151 | g_set_error(err, | |
152 | GVIR_CONFIG_OBJECT_ERROR, | |
153 | 0, | |
154 | "XML data has no '%s' node", | |
155 | root_node); | |
107 | 156 | xmlFreeDoc(doc); |
108 | 157 | return NULL; |
109 | 158 | } |
111 | 160 | return doc->children; |
112 | 161 | } |
113 | 162 | |
163 | void gvir_config_xml_foreach_child(xmlNodePtr node, | |
164 | GVirConfigXmlNodeIterator iter_func, | |
165 | gpointer opaque) | |
166 | { | |
167 | xmlNodePtr it; | |
168 | ||
169 | g_return_if_fail(iter_func != NULL); | |
170 | ||
171 | for (it = node->children; it != NULL; it = it->next) { | |
172 | gboolean cont; | |
173 | ||
174 | if (xmlIsBlankNode(it)) | |
175 | continue; | |
176 | cont = iter_func(it, opaque); | |
177 | if (!cont) | |
178 | break; | |
179 | } | |
180 | } | |
114 | 181 | |
115 | 182 | /* |
116 | 183 | * gvir_config_xml_get_element, gvir_config_xml_get_child_element_content |
160 | 227 | return xmlNodeGetContent (child_node); |
161 | 228 | } |
162 | 229 | |
230 | static char *libxml_str_to_glib(xmlChar *str) | |
231 | { | |
232 | char *g_str; | |
233 | ||
234 | if (str == NULL) | |
235 | return NULL; | |
236 | g_str = g_strdup((char *)str); | |
237 | xmlFree(str); | |
238 | ||
239 | return g_str; | |
240 | } | |
241 | ||
163 | 242 | char * |
164 | 243 | gvir_config_xml_get_child_element_content_glib (xmlNode *node, |
165 | 244 | const char *child_name) |
166 | 245 | { |
167 | 246 | xmlChar *content; |
168 | char *copy; | |
169 | 247 | |
170 | 248 | content = gvir_config_xml_get_child_element_content (node, child_name); |
171 | if (!content) | |
172 | return NULL; | |
173 | ||
174 | copy = g_strdup ((char *) content); | |
175 | ||
176 | xmlFree (content); | |
177 | ||
178 | return copy; | |
179 | } | |
249 | ||
250 | return libxml_str_to_glib(content); | |
251 | } | |
252 | ||
253 | G_GNUC_INTERNAL xmlChar * | |
254 | gvir_config_xml_get_attribute_content(xmlNodePtr node, const char *attr_name) | |
255 | { | |
256 | return xmlGetProp(node, (const xmlChar*)attr_name); | |
257 | } | |
258 | ||
259 | G_GNUC_INTERNAL char * | |
260 | gvir_config_xml_get_attribute_content_glib(xmlNodePtr node, const char *attr_name) | |
261 | { | |
262 | xmlChar *attr; | |
263 | ||
264 | attr = gvir_config_xml_get_attribute_content(node, attr_name); | |
265 | ||
266 | return libxml_str_to_glib(attr); | |
267 | } | |
268 | ||
269 | const char *gvir_config_genum_get_nick (GType enum_type, gint value) | |
270 | { | |
271 | GEnumClass *enum_class; | |
272 | GEnumValue *enum_value; | |
273 | ||
274 | g_return_val_if_fail (G_TYPE_IS_ENUM (enum_type), NULL); | |
275 | ||
276 | enum_class = g_type_class_ref(enum_type); | |
277 | enum_value = g_enum_get_value(enum_class, value); | |
278 | g_type_class_unref(enum_class); | |
279 | ||
280 | if (enum_value != NULL) | |
281 | return enum_value->value_nick; | |
282 | ||
283 | g_return_val_if_reached(NULL); | |
284 | } | |
285 | ||
286 | G_GNUC_INTERNAL int | |
287 | gvir_config_genum_get_value (GType enum_type, const char *nick, | |
288 | gint default_value) | |
289 | { | |
290 | GEnumClass *enum_class; | |
291 | GEnumValue *enum_value; | |
292 | ||
293 | g_return_val_if_fail(G_TYPE_IS_ENUM(enum_type), default_value); | |
294 | g_return_val_if_fail(nick != NULL, default_value); | |
295 | ||
296 | enum_class = g_type_class_ref(enum_type); | |
297 | enum_value = g_enum_get_value_by_nick(enum_class, nick); | |
298 | g_type_class_unref(enum_class); | |
299 | ||
300 | if (enum_value != NULL) | |
301 | return enum_value->value; | |
302 | ||
303 | g_return_val_if_reached(default_value); | |
304 | } |
0 | 0 | /* |
1 | * libvirt-gconfig-helpers.h: various GVirConfig helpers | |
1 | * libvirt-gconfig-helpers.h: libvirt configuration helpers | |
2 | 2 | * |
3 | * Copyright (C) 2010, 2011 Red Hat | |
3 | * Copyright (C) 2010, 2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
0 | 0 | /* |
1 | * libvirt-gobject-config_interface.c: libvirt glib integration | |
1 | * libvirt-gconfig-interface.c: libvirt interface configuration | |
2 | 2 | * |
3 | 3 | * Copyright (C) 2008 Daniel P. Berrange |
4 | * Copyright (C) 2010 Red Hat | |
4 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
5 | 5 | * |
6 | 6 | * This library is free software; you can redistribute it and/or |
7 | 7 | * modify it under the terms of the GNU Lesser General Public |
22 | 22 | |
23 | 23 | #include <config.h> |
24 | 24 | |
25 | #include <string.h> | |
26 | ||
27 | 25 | #include "libvirt-gconfig/libvirt-gconfig.h" |
28 | 26 | |
29 | extern gboolean debugFlag; | |
30 | ||
31 | #define DEBUG(fmt, ...) do { if (G_UNLIKELY(debugFlag)) g_debug(fmt, ## __VA_ARGS__); } while (0) | |
32 | ||
33 | 27 | #define GVIR_CONFIG_INTERFACE_GET_PRIVATE(obj) \ |
34 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_TYPE_CONFIG_INTERFACE, GVirConfigInterfacePrivate)) | |
28 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_INTERFACE, GVirConfigInterfacePrivate)) | |
35 | 29 | |
36 | 30 | struct _GVirConfigInterfacePrivate |
37 | 31 | { |
38 | 32 | gboolean unused; |
39 | 33 | }; |
40 | 34 | |
41 | G_DEFINE_TYPE(GVirConfigInterface, gvir_config_interface, GVIR_TYPE_CONFIG_OBJECT); | |
35 | G_DEFINE_TYPE(GVirConfigInterface, gvir_config_interface, GVIR_CONFIG_TYPE_OBJECT); | |
42 | 36 | |
43 | 37 | |
44 | 38 | static void gvir_config_interface_class_init(GVirConfigInterfaceClass *klass) |
45 | 39 | { |
46 | ||
47 | 40 | g_type_class_add_private(klass, sizeof(GVirConfigInterfacePrivate)); |
48 | 41 | } |
49 | 42 | |
50 | 43 | |
51 | 44 | static void gvir_config_interface_init(GVirConfigInterface *conn) |
52 | 45 | { |
53 | GVirConfigInterfacePrivate *priv; | |
46 | g_debug("Init GVirConfigInterface=%p", conn); | |
54 | 47 | |
55 | DEBUG("Init GVirConfigInterface=%p", conn); | |
56 | ||
57 | priv = conn->priv = GVIR_CONFIG_INTERFACE_GET_PRIVATE(conn); | |
58 | ||
59 | memset(priv, 0, sizeof(*priv)); | |
48 | conn->priv = GVIR_CONFIG_INTERFACE_GET_PRIVATE(conn); | |
60 | 49 | } |
61 | 50 | |
62 | 51 | |
64 | 53 | { |
65 | 54 | GVirConfigObject *object; |
66 | 55 | |
67 | object = gvir_config_object_new(GVIR_TYPE_CONFIG_INTERFACE, | |
56 | object = gvir_config_object_new(GVIR_CONFIG_TYPE_INTERFACE, | |
68 | 57 | "interface", |
69 | 58 | DATADIR "/libvirt/schemas/interface.rng"); |
70 | 59 | return GVIR_CONFIG_INTERFACE(object); |
75 | 64 | { |
76 | 65 | GVirConfigObject *object; |
77 | 66 | |
78 | object = gvir_config_object_new_from_xml(GVIR_TYPE_CONFIG_INTERFACE, | |
67 | object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_INTERFACE, | |
79 | 68 | "interface", |
80 | 69 | DATADIR "/libvirt/schemas/interface.rng", |
81 | 70 | xml, error); |
82 | 71 | return GVIR_CONFIG_INTERFACE(object); |
83 | 72 | } |
84 |
0 | 0 | /* |
1 | * libvirt-gobject-interface-config.c: libvirt gobject integration | |
1 | * libvirt-gconfig-interface.c: libvirt interface configuration | |
2 | 2 | * |
3 | * Copyright (C) 2010 Red Hat | |
3 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
28 | 28 | |
29 | 29 | G_BEGIN_DECLS |
30 | 30 | |
31 | #define GVIR_TYPE_CONFIG_INTERFACE (gvir_config_interface_get_type ()) | |
32 | #define GVIR_CONFIG_INTERFACE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_TYPE_CONFIG_INTERFACE, GVirConfigInterface)) | |
33 | #define GVIR_CONFIG_INTERFACE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_TYPE_CONFIG_INTERFACE, GVirConfigInterfaceClass)) | |
34 | #define GVIR_IS_CONFIG_INTERFACE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_TYPE_CONFIG_INTERFACE)) | |
35 | #define GVIR_IS_CONFIG_INTERFACE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_TYPE_CONFIG_INTERFACE)) | |
36 | #define GVIR_CONFIG_INTERFACE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_TYPE_CONFIG_INTERFACE, GVirConfigInterfaceClass)) | |
31 | #define GVIR_CONFIG_TYPE_INTERFACE (gvir_config_interface_get_type ()) | |
32 | #define GVIR_CONFIG_INTERFACE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_INTERFACE, GVirConfigInterface)) | |
33 | #define GVIR_CONFIG_INTERFACE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_INTERFACE, GVirConfigInterfaceClass)) | |
34 | #define GVIR_CONFIG_IS_INTERFACE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_INTERFACE)) | |
35 | #define GVIR_CONFIG_IS_INTERFACE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_INTERFACE)) | |
36 | #define GVIR_CONFIG_INTERFACE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_INTERFACE, GVirConfigInterfaceClass)) | |
37 | 37 | |
38 | 38 | typedef struct _GVirConfigInterface GVirConfigInterface; |
39 | 39 | typedef struct _GVirConfigInterfacePrivate GVirConfigInterfacePrivate; |
0 | /* | |
1 | * libvirt-gconfig-main.c: libvirt gconfig integration | |
2 | * | |
3 | * Copyright (C) 2008 Daniel P. Berrange | |
4 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
5 | * | |
6 | * This library is free software; you can redistribute it and/or | |
7 | * modify it under the terms of the GNU Lesser General Public | |
8 | * License as published by the Free Software Foundation; either | |
9 | * version 2.1 of the License, or (at your option) any later version. | |
10 | * | |
11 | * This library is distributed in the hope that it will be useful, | |
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
14 | * Lesser General Public License for more details. | |
15 | * | |
16 | * You should have received a copy of the GNU Lesser General Public | |
17 | * License along with this library; if not, write to the Free Software | |
18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
19 | * | |
20 | * Author: Daniel P. Berrange <berrange@redhat.com> | |
21 | */ | |
22 | ||
23 | #include <config.h> | |
24 | ||
25 | #include <stdlib.h> | |
26 | #include <stdio.h> | |
27 | ||
28 | #include "libvirt-glib/libvirt-glib.h" | |
29 | #include "libvirt-gconfig/libvirt-gconfig.h" | |
30 | ||
31 | /** | |
32 | * gvirt_config_init: | |
33 | * @argc: (inout): pointer to application's argc | |
34 | * @argv: (inout) (array length=argc) (allow-none): pointer to application's argv | |
35 | */ | |
36 | void gvir_config_init(int *argc, | |
37 | char ***argv) | |
38 | { | |
39 | GError *err = NULL; | |
40 | if (!gvir_config_init_check(argc, argv, &err)) { | |
41 | g_error("Could not initialize libvirt-gconfig: %s\n", | |
42 | err->message); | |
43 | } | |
44 | } | |
45 | ||
46 | static void gvir_log_handler(const gchar *log_domain G_GNUC_UNUSED, | |
47 | GLogLevelFlags log_level G_GNUC_UNUSED, | |
48 | const gchar *message, | |
49 | gpointer user_data) | |
50 | { | |
51 | if (user_data) | |
52 | fprintf(stderr, "%s\n", message); | |
53 | } | |
54 | ||
55 | ||
56 | /** | |
57 | * gvir_config_init_check: | |
58 | * @argc: (inout): pointer to application's argc | |
59 | * @argv: (inout) (array length=argc) (allow-none): pointer to application's argv | |
60 | * @err: pointer to a #GError to which a message will be posted on error | |
61 | */ | |
62 | gboolean gvir_config_init_check(int *argc G_GNUC_UNUSED, | |
63 | char ***argv G_GNUC_UNUSED, | |
64 | GError **err G_GNUC_UNUSED) | |
65 | { | |
66 | g_type_init(); | |
67 | ||
68 | /* GLib >= 2.31.0 debug is off by default, so we need to | |
69 | * enable it. Older versions are on by default, so we need | |
70 | * to disable it. | |
71 | */ | |
72 | #if GLIB_CHECK_VERSION(2, 31, 0) | |
73 | if (getenv("LIBVIRT_GCONFIG_DEBUG")) | |
74 | g_log_set_handler(G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, | |
75 | gvir_log_handler, (void*)0x1); | |
76 | #else | |
77 | if (!getenv("LIBVIRT_GCONFIG_DEBUG")) | |
78 | g_log_set_handler(G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, | |
79 | gvir_log_handler, NULL); | |
80 | #endif | |
81 | ||
82 | return TRUE; | |
83 | } |
0 | /* | |
1 | * libvirt-gconfig-main.h: libvirt gconfig integration | |
2 | * | |
3 | * Copyright (C) 2008 Daniel P. Berrange | |
4 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
5 | * | |
6 | * This library is free software; you can redistribute it and/or | |
7 | * modify it under the terms of the GNU Lesser General Public | |
8 | * License as published by the Free Software Foundation; either | |
9 | * version 2.1 of the License, or (at your option) any later version. | |
10 | * | |
11 | * This library is distributed in the hope that it will be useful, | |
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
14 | * Lesser General Public License for more details. | |
15 | * | |
16 | * You should have received a copy of the GNU Lesser General Public | |
17 | * License along with this library; if not, write to the Free Software | |
18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
19 | * | |
20 | * Author: Daniel P. Berrange <berrange@redhat.com> | |
21 | */ | |
22 | ||
23 | #if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) | |
24 | #error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." | |
25 | #endif | |
26 | ||
27 | #ifndef __LIBVIRT_GCONFIG_MAIN_H__ | |
28 | #define __LIBVIRT_GCONFIG_MAIN_H__ | |
29 | ||
30 | G_BEGIN_DECLS | |
31 | ||
32 | void gvir_config_init(int *argc, | |
33 | char ***argv); | |
34 | gboolean gvir_config_init_check(int *argc, | |
35 | char ***argv, | |
36 | GError **err); | |
37 | ||
38 | G_END_DECLS | |
39 | ||
40 | #endif /* __LIBVIRT_GCONFIG_MAIN_H__ */ |
0 | 0 | /* |
1 | * libvirt-gobject-config_network_filter.c: libvirt glib integration | |
1 | * libvirt-gconfig-network-filter.c: libvirt network filter configuration | |
2 | 2 | * |
3 | 3 | * Copyright (C) 2008 Daniel P. Berrange |
4 | * Copyright (C) 2010 Red Hat | |
4 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
5 | 5 | * |
6 | 6 | * This library is free software; you can redistribute it and/or |
7 | 7 | * modify it under the terms of the GNU Lesser General Public |
22 | 22 | |
23 | 23 | #include <config.h> |
24 | 24 | |
25 | #include <string.h> | |
26 | ||
27 | 25 | #include "libvirt-gconfig/libvirt-gconfig.h" |
28 | 26 | |
29 | extern gboolean debugFlag; | |
30 | ||
31 | #define DEBUG(fmt, ...) do { if (G_UNLIKELY(debugFlag)) g_debug(fmt, ## __VA_ARGS__); } while (0) | |
32 | ||
33 | 27 | #define GVIR_CONFIG_NETWORK_FILTER_GET_PRIVATE(obj) \ |
34 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_TYPE_CONFIG_NETWORK_FILTER, GVirConfigNetworkFilterPrivate)) | |
28 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_NETWORK_FILTER, GVirConfigNetworkFilterPrivate)) | |
35 | 29 | |
36 | 30 | struct _GVirConfigNetworkFilterPrivate |
37 | 31 | { |
38 | 32 | gboolean unused; |
39 | 33 | }; |
40 | 34 | |
41 | G_DEFINE_TYPE(GVirConfigNetworkFilter, gvir_config_network_filter, GVIR_TYPE_CONFIG_OBJECT); | |
35 | G_DEFINE_TYPE(GVirConfigNetworkFilter, gvir_config_network_filter, GVIR_CONFIG_TYPE_OBJECT); | |
42 | 36 | |
43 | 37 | |
44 | 38 | static void gvir_config_network_filter_class_init(GVirConfigNetworkFilterClass *klass) |
45 | 39 | { |
46 | ||
47 | 40 | g_type_class_add_private(klass, sizeof(GVirConfigNetworkFilterPrivate)); |
48 | 41 | } |
49 | 42 | |
50 | 43 | |
51 | 44 | static void gvir_config_network_filter_init(GVirConfigNetworkFilter *conn) |
52 | 45 | { |
53 | GVirConfigNetworkFilterPrivate *priv; | |
46 | g_debug("Init GVirConfigNetworkFilter=%p", conn); | |
54 | 47 | |
55 | DEBUG("Init GVirConfigNetworkFilter=%p", conn); | |
56 | ||
57 | priv = conn->priv = GVIR_CONFIG_NETWORK_FILTER_GET_PRIVATE(conn); | |
58 | ||
59 | memset(priv, 0, sizeof(*priv)); | |
48 | conn->priv = GVIR_CONFIG_NETWORK_FILTER_GET_PRIVATE(conn); | |
60 | 49 | } |
61 | 50 | |
62 | 51 | |
64 | 53 | { |
65 | 54 | GVirConfigObject *object; |
66 | 55 | |
67 | object = gvir_config_object_new(GVIR_TYPE_CONFIG_NETWORK_FILTER, | |
56 | object = gvir_config_object_new(GVIR_CONFIG_TYPE_NETWORK_FILTER, | |
68 | 57 | "filter", |
69 | 58 | DATADIR "/libvirt/schemas/nwfilter.rng"); |
70 | 59 | return GVIR_CONFIG_NETWORK_FILTER(object); |
75 | 64 | { |
76 | 65 | GVirConfigObject *object; |
77 | 66 | |
78 | object = gvir_config_object_new_from_xml(GVIR_TYPE_CONFIG_NETWORK_FILTER, | |
67 | object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_NETWORK_FILTER, | |
79 | 68 | "filter", |
80 | 69 | DATADIR "/libvirt/schemas/nwfilter.rng", |
81 | 70 | xml, error); |
0 | 0 | /* |
1 | * libvirt-gobject-nwfilter-config.c: libvirt gobject integration | |
1 | * libvirt-gconfig-network-filter.h: libvirt network filter configuration | |
2 | 2 | * |
3 | * Copyright (C) 2010 Red Hat | |
3 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
28 | 28 | |
29 | 29 | G_BEGIN_DECLS |
30 | 30 | |
31 | #define GVIR_TYPE_CONFIG_NETWORK_FILTER (gvir_config_network_filter_get_type ()) | |
32 | #define GVIR_CONFIG_NETWORK_FILTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_TYPE_CONFIG_NETWORK_FILTER, GVirConfigNetworkFilter)) | |
33 | #define GVIR_CONFIG_NETWORK_FILTER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_TYPE_CONFIG_NETWORK_FILTER, GVirConfigNetworkFilterClass)) | |
34 | #define GVIR_IS_CONFIG_NETWORK_FILTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_TYPE_CONFIG_NETWORK_FILTER)) | |
35 | #define GVIR_IS_CONFIG_NETWORK_FILTER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_TYPE_CONFIG_NETWORK_FILTER)) | |
36 | #define GVIR_CONFIG_NETWORK_FILTER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_TYPE_CONFIG_NETWORK_FILTER, GVirConfigNetworkFilterClass)) | |
31 | #define GVIR_CONFIG_TYPE_NETWORK_FILTER (gvir_config_network_filter_get_type ()) | |
32 | #define GVIR_CONFIG_NETWORK_FILTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_NETWORK_FILTER, GVirConfigNetworkFilter)) | |
33 | #define GVIR_CONFIG_NETWORK_FILTER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_NETWORK_FILTER, GVirConfigNetworkFilterClass)) | |
34 | #define GVIR_CONFIG_IS_NETWORK_FILTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_NETWORK_FILTER)) | |
35 | #define GVIR_CONFIG_IS_NETWORK_FILTER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_NETWORK_FILTER)) | |
36 | #define GVIR_CONFIG_NETWORK_FILTER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_NETWORK_FILTER, GVirConfigNetworkFilterClass)) | |
37 | 37 | |
38 | 38 | typedef struct _GVirConfigNetworkFilter GVirConfigNetworkFilter; |
39 | 39 | typedef struct _GVirConfigNetworkFilterPrivate GVirConfigNetworkFilterPrivate; |
0 | 0 | /* |
1 | * libvirt-gobject-config_network.c: libvirt glib integration | |
1 | * libvirt-gconfig-network.c: libvirt network configuration | |
2 | 2 | * |
3 | 3 | * Copyright (C) 2008 Daniel P. Berrange |
4 | * Copyright (C) 2010 Red Hat | |
4 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
5 | 5 | * |
6 | 6 | * This library is free software; you can redistribute it and/or |
7 | 7 | * modify it under the terms of the GNU Lesser General Public |
22 | 22 | |
23 | 23 | #include <config.h> |
24 | 24 | |
25 | #include <string.h> | |
26 | ||
27 | 25 | #include "libvirt-gconfig/libvirt-gconfig.h" |
28 | 26 | |
29 | extern gboolean debugFlag; | |
30 | ||
31 | #define DEBUG(fmt, ...) do { if (G_UNLIKELY(debugFlag)) g_debug(fmt, ## __VA_ARGS__); } while (0) | |
32 | ||
33 | 27 | #define GVIR_CONFIG_NETWORK_GET_PRIVATE(obj) \ |
34 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_TYPE_CONFIG_NETWORK, GVirConfigNetworkPrivate)) | |
28 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_NETWORK, GVirConfigNetworkPrivate)) | |
35 | 29 | |
36 | 30 | struct _GVirConfigNetworkPrivate |
37 | 31 | { |
38 | 32 | gboolean unused; |
39 | 33 | }; |
40 | 34 | |
41 | G_DEFINE_TYPE(GVirConfigNetwork, gvir_config_network, GVIR_TYPE_CONFIG_OBJECT); | |
35 | G_DEFINE_TYPE(GVirConfigNetwork, gvir_config_network, GVIR_CONFIG_TYPE_OBJECT); | |
42 | 36 | |
43 | 37 | |
44 | 38 | static void gvir_config_network_class_init(GVirConfigNetworkClass *klass) |
45 | 39 | { |
46 | ||
47 | 40 | g_type_class_add_private(klass, sizeof(GVirConfigNetworkPrivate)); |
48 | 41 | } |
49 | 42 | |
50 | 43 | |
51 | 44 | static void gvir_config_network_init(GVirConfigNetwork *conn) |
52 | 45 | { |
53 | GVirConfigNetworkPrivate *priv; | |
46 | g_debug("Init GVirConfigNetwork=%p", conn); | |
54 | 47 | |
55 | DEBUG("Init GVirConfigNetwork=%p", conn); | |
56 | ||
57 | priv = conn->priv = GVIR_CONFIG_NETWORK_GET_PRIVATE(conn); | |
58 | ||
59 | memset(priv, 0, sizeof(*priv)); | |
48 | conn->priv = GVIR_CONFIG_NETWORK_GET_PRIVATE(conn); | |
60 | 49 | } |
61 | 50 | |
62 | 51 | |
64 | 53 | { |
65 | 54 | GVirConfigObject *object; |
66 | 55 | |
67 | object = gvir_config_object_new(GVIR_TYPE_CONFIG_NETWORK, | |
56 | object = gvir_config_object_new(GVIR_CONFIG_TYPE_NETWORK, | |
68 | 57 | "network", |
69 | 58 | DATADIR "/libvirt/schemas/network.rng"); |
70 | 59 | return GVIR_CONFIG_NETWORK(object); |
75 | 64 | { |
76 | 65 | GVirConfigObject *object; |
77 | 66 | |
78 | object = gvir_config_object_new_from_xml(GVIR_TYPE_CONFIG_NETWORK, | |
67 | object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_NETWORK, | |
79 | 68 | "network", |
80 | 69 | DATADIR "/libvirt/schemas/network.rng", |
81 | 70 | xml, error); |
0 | 0 | /* |
1 | * libvirt-gobject-network-config.c: libvirt gobject integration | |
1 | * libvirt-gconfig-network.c: libvirt network configuration | |
2 | 2 | * |
3 | * Copyright (C) 2010 Red Hat | |
3 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
28 | 28 | |
29 | 29 | G_BEGIN_DECLS |
30 | 30 | |
31 | #define GVIR_TYPE_CONFIG_NETWORK (gvir_config_network_get_type ()) | |
32 | #define GVIR_CONFIG_NETWORK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_TYPE_CONFIG_NETWORK, GVirConfigNetwork)) | |
33 | #define GVIR_CONFIG_NETWORK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_TYPE_CONFIG_NETWORK, GVirConfigNetworkClass)) | |
34 | #define GVIR_IS_CONFIG_NETWORK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_TYPE_CONFIG_NETWORK)) | |
35 | #define GVIR_IS_CONFIG_NETWORK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_TYPE_CONFIG_NETWORK)) | |
36 | #define GVIR_CONFIG_NETWORK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_TYPE_CONFIG_NETWORK, GVirConfigNetworkClass)) | |
31 | #define GVIR_CONFIG_TYPE_NETWORK (gvir_config_network_get_type ()) | |
32 | #define GVIR_CONFIG_NETWORK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_NETWORK, GVirConfigNetwork)) | |
33 | #define GVIR_CONFIG_NETWORK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_NETWORK, GVirConfigNetworkClass)) | |
34 | #define GVIR_CONFIG_IS_NETWORK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_NETWORK)) | |
35 | #define GVIR_CONFIG_IS_NETWORK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_NETWORK)) | |
36 | #define GVIR_CONFIG_NETWORK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_NETWORK, GVirConfigNetworkClass)) | |
37 | 37 | |
38 | 38 | typedef struct _GVirConfigNetwork GVirConfigNetwork; |
39 | 39 | typedef struct _GVirConfigNetworkPrivate GVirConfigNetworkPrivate; |
0 | 0 | /* |
1 | * libvirt-gobject-config_node_device.c: libvirt glib integration | |
1 | * libvirt-gconfig-node-device.c: libvirt node device configuration | |
2 | 2 | * |
3 | 3 | * Copyright (C) 2008 Daniel P. Berrange |
4 | * Copyright (C) 2010 Red Hat | |
4 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
5 | 5 | * |
6 | 6 | * This library is free software; you can redistribute it and/or |
7 | 7 | * modify it under the terms of the GNU Lesser General Public |
22 | 22 | |
23 | 23 | #include <config.h> |
24 | 24 | |
25 | #include <string.h> | |
26 | ||
27 | 25 | #include "libvirt-gconfig/libvirt-gconfig.h" |
28 | 26 | |
29 | extern gboolean debugFlag; | |
30 | ||
31 | #define DEBUG(fmt, ...) do { if (G_UNLIKELY(debugFlag)) g_debug(fmt, ## __VA_ARGS__); } while (0) | |
32 | ||
33 | 27 | #define GVIR_CONFIG_NODE_DEVICE_GET_PRIVATE(obj) \ |
34 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_TYPE_CONFIG_NODE_DEVICE, GVirConfigNodeDevicePrivate)) | |
28 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_NODE_DEVICE, GVirConfigNodeDevicePrivate)) | |
35 | 29 | |
36 | 30 | struct _GVirConfigNodeDevicePrivate |
37 | 31 | { |
38 | 32 | gboolean unused; |
39 | 33 | }; |
40 | 34 | |
41 | G_DEFINE_TYPE(GVirConfigNodeDevice, gvir_config_node_device, GVIR_TYPE_CONFIG_OBJECT); | |
35 | G_DEFINE_TYPE(GVirConfigNodeDevice, gvir_config_node_device, GVIR_CONFIG_TYPE_OBJECT); | |
42 | 36 | |
43 | 37 | |
44 | 38 | static void gvir_config_node_device_class_init(GVirConfigNodeDeviceClass *klass) |
45 | 39 | { |
46 | ||
47 | 40 | g_type_class_add_private(klass, sizeof(GVirConfigNodeDevicePrivate)); |
48 | 41 | } |
49 | 42 | |
50 | 43 | |
51 | 44 | static void gvir_config_node_device_init(GVirConfigNodeDevice *conn) |
52 | 45 | { |
53 | GVirConfigNodeDevicePrivate *priv; | |
46 | g_debug("Init GVirConfigNodeDevice=%p", conn); | |
54 | 47 | |
55 | DEBUG("Init GVirConfigNodeDevice=%p", conn); | |
56 | ||
57 | priv = conn->priv = GVIR_CONFIG_NODE_DEVICE_GET_PRIVATE(conn); | |
58 | ||
59 | memset(priv, 0, sizeof(*priv)); | |
48 | conn->priv = GVIR_CONFIG_NODE_DEVICE_GET_PRIVATE(conn); | |
60 | 49 | } |
61 | 50 | |
62 | 51 | |
64 | 53 | { |
65 | 54 | GVirConfigObject *object; |
66 | 55 | |
67 | object = gvir_config_object_new(GVIR_TYPE_CONFIG_NODE_DEVICE, | |
56 | object = gvir_config_object_new(GVIR_CONFIG_TYPE_NODE_DEVICE, | |
68 | 57 | "device", |
69 | 58 | DATADIR "/libvirt/schemas/nodedev.rng"); |
70 | 59 | return GVIR_CONFIG_NODE_DEVICE(object); |
75 | 64 | { |
76 | 65 | GVirConfigObject *object; |
77 | 66 | |
78 | object = gvir_config_object_new_from_xml(GVIR_TYPE_CONFIG_NODE_DEVICE, | |
67 | object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_NODE_DEVICE, | |
79 | 68 | "device", |
80 | 69 | DATADIR "/libvirt/schemas/nodedev.rng", |
81 | 70 | xml, error); |
0 | 0 | /* |
1 | * libvirt-gobject-nodedevice-config.c: libvirt gobject integration | |
1 | * libvirt-gconfig-node-device.h: libvirt node device configuration | |
2 | 2 | * |
3 | * Copyright (C) 2010 Red Hat | |
3 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
28 | 28 | |
29 | 29 | G_BEGIN_DECLS |
30 | 30 | |
31 | #define GVIR_TYPE_CONFIG_NODE_DEVICE (gvir_config_node_device_get_type ()) | |
32 | #define GVIR_CONFIG_NODE_DEVICE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_TYPE_CONFIG_NODE_DEVICE, GVirConfigNodeDevice)) | |
33 | #define GVIR_CONFIG_NODE_DEVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_TYPE_CONFIG_NODE_DEVICE, GVirConfigNodeDeviceClass)) | |
34 | #define GVIR_IS_CONFIG_NODE_DEVICE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_TYPE_CONFIG_NODE_DEVICE)) | |
35 | #define GVIR_IS_CONFIG_NODE_DEVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_TYPE_CONFIG_NODE_DEVICE)) | |
36 | #define GVIR_CONFIG_NODE_DEVICE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_TYPE_CONFIG_NODE_DEVICE, GVirConfigNodeDeviceClass)) | |
31 | #define GVIR_CONFIG_TYPE_NODE_DEVICE (gvir_config_node_device_get_type ()) | |
32 | #define GVIR_CONFIG_NODE_DEVICE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_NODE_DEVICE, GVirConfigNodeDevice)) | |
33 | #define GVIR_CONFIG_NODE_DEVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_NODE_DEVICE, GVirConfigNodeDeviceClass)) | |
34 | #define GVIR_CONFIG_IS_NODE_DEVICE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_NODE_DEVICE)) | |
35 | #define GVIR_CONFIG_IS_NODE_DEVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_NODE_DEVICE)) | |
36 | #define GVIR_CONFIG_NODE_DEVICE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_NODE_DEVICE, GVirConfigNodeDeviceClass)) | |
37 | 37 | |
38 | 38 | typedef struct _GVirConfigNodeDevice GVirConfigNodeDevice; |
39 | 39 | typedef struct _GVirConfigNodeDevicePrivate GVirConfigNodeDevicePrivate; |
0 | /* | |
1 | * libvirt-gconfig-object-private.h: base object for XML configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Christophe Fergeau <cfergeau@redhat.com> | |
20 | */ | |
21 | #ifndef __LIBVIRT_GCONFIG_OBJECT_PRIVATE_H__ | |
22 | #define __LIBVIRT_GCONFIG_OBJECT_PRIVATE_H__ | |
23 | ||
24 | G_BEGIN_DECLS | |
25 | ||
26 | #include <libvirt-gconfig/libvirt-gconfig-xml-doc.h> | |
27 | ||
28 | GVirConfigObject *gvir_config_object_new_from_tree(GType type, | |
29 | GVirConfigXmlDoc *doc, | |
30 | const char *schema, | |
31 | xmlNodePtr tree); | |
32 | xmlNodePtr gvir_config_object_get_xml_node(GVirConfigObject *config); | |
33 | char *gvir_config_object_get_node_content(GVirConfigObject *object, | |
34 | const char *node_name); | |
35 | guint64 gvir_config_object_get_node_content_uint64(GVirConfigObject *object, | |
36 | const char *node_name); | |
37 | gint gvir_config_object_get_node_content_genum(GVirConfigObject *object, | |
38 | const char *node_name, | |
39 | GType enum_type, | |
40 | gint default_value); | |
41 | char *gvir_config_object_get_attribute(GVirConfigObject *object, | |
42 | const char *node_name, | |
43 | const char *attr_name); | |
44 | gint gvir_config_object_get_attribute_genum(GVirConfigObject *object, | |
45 | const char *node_name, | |
46 | const char *attr_name, | |
47 | GType enum_type, | |
48 | gint default_value); | |
49 | void gvir_config_object_set_node_content(GVirConfigObject *object, | |
50 | const char *node_name, | |
51 | const char *value); | |
52 | void gvir_config_object_set_node_content_uint64(GVirConfigObject *object, | |
53 | const char *node_name, | |
54 | guint64 value); | |
55 | GVirConfigObject *gvir_config_object_add_child(GVirConfigObject *object, | |
56 | const char *child_name); | |
57 | void gvir_config_object_add_child_with_attribute(GVirConfigObject *object, | |
58 | const char *child_name, | |
59 | const char *attr_name, | |
60 | const char *attr_value); | |
61 | void gvir_config_object_add_child_with_attribute_enum(GVirConfigObject *object, | |
62 | const char *child_name, | |
63 | const char *attr_name, | |
64 | GType attr_type, | |
65 | unsigned int attr_value); | |
66 | GVirConfigObject *gvir_config_object_replace_child(GVirConfigObject *object, | |
67 | const char *child_name); | |
68 | void gvir_config_object_replace_child_with_attribute(GVirConfigObject *object, | |
69 | const char *child_name, | |
70 | const char *attr_name, | |
71 | const char *attr_value); | |
72 | void gvir_config_object_delete_child(GVirConfigObject *object, | |
73 | const char *child_name); | |
74 | void gvir_config_object_set_child(GVirConfigObject *object, | |
75 | xmlNodePtr child); | |
76 | ||
77 | void gvir_config_object_attach(GVirConfigObject *parent, | |
78 | GVirConfigObject *child); | |
79 | void gvir_config_object_set_attribute(GVirConfigObject *object, | |
80 | ...) G_GNUC_NULL_TERMINATED; | |
81 | void gvir_config_object_set_attribute_with_type(GVirConfigObject *object, | |
82 | ...) G_GNUC_NULL_TERMINATED; | |
83 | void gvir_config_object_remove_attribute(GVirConfigObject *object, | |
84 | const char *attr_name); | |
85 | void gvir_config_object_foreach_child(GVirConfigObject *object, | |
86 | const char *parent_name, | |
87 | GVirConfigXmlNodeIterator iter_func, | |
88 | gpointer opaque); | |
89 | ||
90 | G_END_DECLS | |
91 | ||
92 | #endif /* __LIBVIRT_GCONFIG_OBJECT_H__ */ |
0 | 0 | /* |
1 | * libvirt-gconfig-config-object.c: base object for XML configuration | |
1 | * libvirt-gconfig-object.c: base object for XML configuration | |
2 | 2 | * |
3 | 3 | * Copyright (C) 2008 Daniel P. Berrange |
4 | * Copyright (C) 2010 Red Hat | |
4 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
5 | 5 | * |
6 | 6 | * This library is free software; you can redistribute it and/or |
7 | 7 | * modify it under the terms of the GNU Lesser General Public |
27 | 27 | #include <libxml/relaxng.h> |
28 | 28 | |
29 | 29 | #include "libvirt-gconfig/libvirt-gconfig.h" |
30 | #include "libvirt-gconfig/libvirt-gconfig-helpers-private.h" | |
31 | ||
32 | ||
33 | //extern gboolean debugFlag; | |
34 | gboolean debugFlag; | |
35 | ||
36 | #define DEBUG(fmt, ...) do { if (G_UNLIKELY(debugFlag)) g_debug(fmt, ## __VA_ARGS__); } while (0) | |
30 | #include "libvirt-gconfig/libvirt-gconfig-private.h" | |
37 | 31 | |
38 | 32 | #define GVIR_CONFIG_OBJECT_GET_PRIVATE(obj) \ |
39 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_TYPE_CONFIG_OBJECT, GVirConfigObjectPrivate)) | |
33 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_OBJECT, GVirConfigObjectPrivate)) | |
40 | 34 | |
41 | 35 | struct _GVirConfigObjectPrivate |
42 | 36 | { |
43 | 37 | gchar *schema; |
44 | 38 | |
39 | GVirConfigXmlDoc *doc; | |
45 | 40 | xmlNodePtr node; |
46 | 41 | }; |
47 | 42 | |
48 | G_DEFINE_ABSTRACT_TYPE(GVirConfigObject, gvir_config_object, G_TYPE_OBJECT); | |
43 | G_DEFINE_TYPE(GVirConfigObject, gvir_config_object, G_TYPE_OBJECT); | |
49 | 44 | |
50 | 45 | enum { |
51 | 46 | PROP_0, |
52 | 47 | PROP_SCHEMA, |
53 | PROP_NODE | |
48 | PROP_NODE, | |
49 | PROP_DOC | |
54 | 50 | }; |
55 | 51 | |
56 | 52 | |
71 | 67 | GValue *value, |
72 | 68 | GParamSpec *pspec) |
73 | 69 | { |
74 | GVirConfigObject *conn = GVIR_CONFIG_OBJECT(object); | |
75 | GVirConfigObjectPrivate *priv = conn->priv; | |
70 | GVirConfigObject *obj = GVIR_CONFIG_OBJECT(object); | |
71 | GVirConfigObjectPrivate *priv = obj->priv; | |
76 | 72 | |
77 | 73 | switch (prop_id) { |
78 | 74 | case PROP_SCHEMA: |
80 | 76 | break; |
81 | 77 | |
82 | 78 | case PROP_NODE: |
83 | g_value_set_pointer(value, gvir_config_object_get_xml_node(conn)); | |
79 | g_value_set_pointer(value, gvir_config_object_get_xml_node(obj)); | |
80 | break; | |
81 | ||
82 | case PROP_DOC: | |
83 | g_value_set_object(value, obj->priv->doc); | |
84 | 84 | break; |
85 | 85 | |
86 | 86 | default: |
93 | 93 | const GValue *value, |
94 | 94 | GParamSpec *pspec) |
95 | 95 | { |
96 | GVirConfigObject *conn = GVIR_CONFIG_OBJECT(object); | |
97 | GVirConfigObjectPrivate *priv = conn->priv; | |
96 | GVirConfigObject *obj = GVIR_CONFIG_OBJECT(object); | |
97 | GVirConfigObjectPrivate *priv = obj->priv; | |
98 | 98 | |
99 | 99 | switch (prop_id) { |
100 | 100 | case PROP_SCHEMA: |
102 | 102 | priv->schema = g_value_dup_string(value); |
103 | 103 | break; |
104 | 104 | |
105 | case PROP_NODE: { | |
106 | xmlNodePtr node; | |
107 | node = g_value_get_pointer(value); | |
108 | if ((priv->node != NULL) | |
109 | && (priv->node->doc != NULL) | |
110 | && (priv->node->doc != node->doc)) { | |
111 | xmlFreeDoc(priv->node->doc); | |
112 | } | |
113 | priv->node = node; | |
105 | case PROP_NODE: | |
106 | priv->node =g_value_get_pointer(value); | |
114 | 107 | break; |
115 | } | |
108 | ||
109 | case PROP_DOC: | |
110 | obj->priv->doc = g_value_dup_object(value); | |
111 | break; | |
116 | 112 | |
117 | 113 | default: |
118 | 114 | G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); |
125 | 121 | GVirConfigObject *conn = GVIR_CONFIG_OBJECT(object); |
126 | 122 | GVirConfigObjectPrivate *priv = conn->priv; |
127 | 123 | |
128 | DEBUG("Finalize GVirConfigObject=%p", conn); | |
124 | g_debug("Finalize GVirConfigObject=%p", conn); | |
129 | 125 | |
130 | 126 | g_free(priv->schema); |
131 | 127 | |
132 | /* FIXME: all objects describing a given XML document will share the | |
133 | * same document so we can't destroy it here like this, we need some | |
134 | * refcounting to know when to destroy it. | |
135 | */ | |
136 | if (priv->node) | |
137 | xmlFreeDoc(priv->node->doc); | |
128 | if (priv->doc != NULL) { | |
129 | g_object_unref(G_OBJECT(priv->doc)); | |
130 | priv->node = NULL; /* node belongs to doc, make sure not to free it */ | |
131 | } | |
132 | if (priv->node != NULL) { | |
133 | g_assert(priv->node->doc == NULL); | |
134 | xmlFreeNode(priv->node); | |
135 | } | |
138 | 136 | |
139 | 137 | G_OBJECT_CLASS(gvir_config_object_parent_class)->finalize(object); |
140 | 138 | } |
157 | 155 | G_PARAM_READABLE | |
158 | 156 | G_PARAM_WRITABLE | |
159 | 157 | G_PARAM_CONSTRUCT_ONLY | |
160 | G_PARAM_STATIC_NAME | | |
161 | G_PARAM_STATIC_NICK | | |
162 | G_PARAM_STATIC_BLURB)); | |
158 | G_PARAM_STATIC_STRINGS)); | |
163 | 159 | |
164 | 160 | g_object_class_install_property(object_class, |
165 | 161 | PROP_NODE, |
170 | 166 | G_PARAM_CONSTRUCT_ONLY | |
171 | 167 | G_PARAM_STATIC_STRINGS)); |
172 | 168 | |
169 | g_object_class_install_property(object_class, | |
170 | PROP_DOC, | |
171 | g_param_spec_object("doc", | |
172 | "XML Doc", | |
173 | "The XML doc this config object corresponds to", | |
174 | GVIR_CONFIG_TYPE_XML_DOC, | |
175 | G_PARAM_READWRITE | | |
176 | G_PARAM_CONSTRUCT_ONLY | | |
177 | G_PARAM_STATIC_STRINGS)); | |
178 | ||
173 | 179 | g_type_class_add_private(klass, sizeof(GVirConfigObjectPrivate)); |
174 | 180 | } |
175 | 181 | |
176 | 182 | |
177 | 183 | static void gvir_config_object_init(GVirConfigObject *conn) |
178 | 184 | { |
179 | GVirConfigObjectPrivate *priv; | |
180 | ||
181 | DEBUG("Init GVirConfigObject=%p", conn); | |
182 | ||
183 | priv = conn->priv = GVIR_CONFIG_OBJECT_GET_PRIVATE(conn); | |
184 | ||
185 | memset(priv, 0, sizeof(*priv)); | |
185 | g_debug("Init GVirConfigObject=%p", conn); | |
186 | ||
187 | conn->priv = GVIR_CONFIG_OBJECT_GET_PRIVATE(conn); | |
186 | 188 | } |
187 | 189 | |
188 | 190 | void gvir_config_object_validate(GVirConfigObject *config, |
197 | 199 | xmlSetStructuredErrorFunc(NULL, gvir_xml_structured_error_nop); |
198 | 200 | |
199 | 201 | if (!priv->node) { |
200 | *err = gvir_xml_error_new(GVIR_CONFIG_OBJECT_ERROR, | |
201 | 0, | |
202 | "%s", | |
203 | "No XML document associated with this config object"); | |
202 | gvir_config_set_error_literal(err, | |
203 | GVIR_CONFIG_OBJECT_ERROR, | |
204 | 0, | |
205 | "No XML document associated with this config object"); | |
204 | 206 | return; |
205 | 207 | } |
206 | 208 | |
207 | 209 | rngParser = xmlRelaxNGNewParserCtxt(priv->schema); |
208 | 210 | if (!rngParser) { |
209 | *err = gvir_xml_error_new(GVIR_CONFIG_OBJECT_ERROR, | |
210 | 0, | |
211 | "Unable to create RNG parser for %s", | |
212 | priv->schema); | |
211 | gvir_config_set_error(err, | |
212 | GVIR_CONFIG_OBJECT_ERROR, | |
213 | 0, | |
214 | "Unable to create RNG parser for %s", | |
215 | priv->schema); | |
213 | 216 | return; |
214 | 217 | } |
215 | 218 | |
216 | 219 | rng = xmlRelaxNGParse(rngParser); |
217 | 220 | if (!rng) { |
218 | *err = gvir_xml_error_new(GVIR_CONFIG_OBJECT_ERROR, | |
219 | 0, | |
220 | "Unable to parse RNG %s", | |
221 | priv->schema); | |
221 | gvir_config_set_error(err, | |
222 | GVIR_CONFIG_OBJECT_ERROR, | |
223 | 0, | |
224 | "Unable to parse RNG %s", | |
225 | priv->schema); | |
222 | 226 | xmlRelaxNGFreeParserCtxt(rngParser); |
223 | 227 | return; |
224 | 228 | } |
226 | 230 | |
227 | 231 | rngValid = xmlRelaxNGNewValidCtxt(rng); |
228 | 232 | if (!rngValid) { |
229 | *err = gvir_xml_error_new(GVIR_CONFIG_OBJECT_ERROR, | |
230 | 0, | |
231 | "Unable to create RNG validation context %s", | |
232 | priv->schema); | |
233 | gvir_config_set_error(err, | |
234 | GVIR_CONFIG_OBJECT_ERROR, | |
235 | 0, | |
236 | "Unable to create RNG validation context %s", | |
237 | priv->schema); | |
233 | 238 | xmlRelaxNGFree(rng); |
234 | 239 | return; |
235 | 240 | } |
236 | 241 | |
237 | 242 | if (xmlRelaxNGValidateDoc(rngValid, priv->node->doc) != 0) { |
238 | *err = gvir_xml_error_new(GVIR_CONFIG_OBJECT_ERROR, | |
239 | 0, | |
240 | "%s", | |
241 | "Unable to validate doc"); | |
243 | gvir_config_set_error_literal(err, | |
244 | GVIR_CONFIG_OBJECT_ERROR, | |
245 | 0, | |
246 | "Unable to validate doc"); | |
242 | 247 | xmlRelaxNGFreeValidCtxt(rngValid); |
243 | 248 | xmlRelaxNGFree(rng); |
244 | 249 | return; |
259 | 264 | if (node == NULL) |
260 | 265 | return NULL; |
261 | 266 | |
262 | xmlDocDumpMemory(node->doc, &doc, &size); | |
267 | xmlDocDumpFormatMemory(node->doc, &doc, &size, 1); | |
263 | 268 | |
264 | 269 | output_doc = g_strdup((gchar *)doc); |
265 | 270 | xmlFree(doc); |
276 | 281 | /* FIXME: will we always have one xmlNode per GConfig object? */ |
277 | 282 | /* FIXME: need to return the right node from subclasses */ |
278 | 283 | /* NB: the xmlNodePtr must not be freed by the caller */ |
279 | xmlNodePtr gvir_config_object_get_xml_node(GVirConfigObject *config) | |
284 | G_GNUC_INTERNAL xmlNodePtr | |
285 | gvir_config_object_get_xml_node(GVirConfigObject *config) | |
280 | 286 | { |
281 | 287 | return config->priv->node; |
282 | 288 | } |
283 | 289 | |
284 | char *gvir_config_object_get_node_content(GVirConfigObject *object, | |
285 | const char *node_name) | |
290 | G_GNUC_INTERNAL char * | |
291 | gvir_config_object_get_node_content(GVirConfigObject *object, | |
292 | const char *node_name) | |
286 | 293 | { |
287 | 294 | xmlNodePtr node; |
288 | 295 | |
293 | 300 | return gvir_config_xml_get_child_element_content_glib(node, node_name); |
294 | 301 | } |
295 | 302 | |
296 | /* FIXME: if there are multiple nodes with the same name, this function | |
297 | * won't behave as expected. Should we get rid of the duplicated node names | |
298 | * here? | |
299 | */ | |
300 | void gvir_config_object_set_node_content(GVirConfigObject *object, | |
301 | const char *node_name, | |
302 | const char *value) | |
303 | G_GNUC_INTERNAL char * | |
304 | gvir_config_object_get_attribute(GVirConfigObject *object, | |
305 | const char *node_name, | |
306 | const char *attr_name) | |
307 | { | |
308 | xmlNodePtr node; | |
309 | ||
310 | g_return_val_if_fail(attr_name != NULL, NULL); | |
311 | ||
312 | node = gvir_config_object_get_xml_node(GVIR_CONFIG_OBJECT(object)); | |
313 | if (node == NULL) | |
314 | return NULL; | |
315 | ||
316 | if (node_name != NULL) { | |
317 | node = gvir_config_xml_get_element(node, node_name, NULL); | |
318 | if (node == NULL) | |
319 | return NULL; | |
320 | } | |
321 | ||
322 | return gvir_config_xml_get_attribute_content_glib(node, attr_name); | |
323 | } | |
324 | ||
325 | static xmlNodePtr | |
326 | gvir_config_object_set_child_internal(GVirConfigObject *object, | |
327 | xmlNodePtr child, | |
328 | gboolean overwrite) | |
303 | 329 | { |
304 | 330 | xmlNodePtr parent_node; |
305 | 331 | xmlNodePtr old_node; |
332 | ||
333 | parent_node = gvir_config_object_get_xml_node(GVIR_CONFIG_OBJECT(object)); | |
334 | g_return_val_if_fail (parent_node != NULL, NULL); | |
335 | ||
336 | old_node = gvir_config_xml_get_element(parent_node, child->name, NULL); | |
337 | /* FIXME: should we make sure there are no multiple occurrences | |
338 | * of this node? | |
339 | */ | |
340 | if (old_node) { | |
341 | if (overwrite) { | |
342 | old_node = xmlReplaceNode(old_node, child); | |
343 | xmlFreeNode(old_node); | |
344 | } else { | |
345 | return old_node; | |
346 | } | |
347 | } else { | |
348 | xmlAddChild(parent_node, child); | |
349 | } | |
350 | ||
351 | return NULL; | |
352 | } | |
353 | ||
354 | G_GNUC_INTERNAL void | |
355 | gvir_config_object_set_child(GVirConfigObject *object, xmlNodePtr child) | |
356 | { | |
357 | gvir_config_object_set_child_internal(object, child, TRUE); | |
358 | } | |
359 | ||
360 | G_GNUC_INTERNAL void | |
361 | gvir_config_object_foreach_child(GVirConfigObject *object, | |
362 | const char *parent_name, | |
363 | GVirConfigXmlNodeIterator iter_func, | |
364 | gpointer opaque) | |
365 | { | |
366 | xmlNodePtr root_node; | |
367 | xmlNodePtr node; | |
368 | ||
369 | g_return_if_fail(GVIR_CONFIG_IS_OBJECT(object)); | |
370 | ||
371 | root_node = gvir_config_object_get_xml_node(object); | |
372 | g_return_if_fail(root_node != NULL); | |
373 | ||
374 | node = gvir_config_xml_get_element(root_node, parent_name, NULL); | |
375 | if (node == NULL) | |
376 | return; | |
377 | ||
378 | gvir_config_xml_foreach_child(node, iter_func, opaque); | |
379 | } | |
380 | ||
381 | G_GNUC_INTERNAL GVirConfigObject * | |
382 | gvir_config_object_add_child(GVirConfigObject *object, | |
383 | const char *child_name) | |
384 | { | |
306 | 385 | xmlNodePtr new_node; |
307 | xmlChar *encoded_name; | |
386 | xmlNodePtr old_node; | |
387 | ||
388 | g_return_val_if_fail(GVIR_CONFIG_IS_OBJECT(object), NULL); | |
389 | g_return_val_if_fail(child_name != NULL, NULL); | |
390 | ||
391 | new_node = xmlNewDocNode(NULL, NULL, (xmlChar *)child_name, NULL); | |
392 | old_node = gvir_config_object_set_child_internal(object, new_node, | |
393 | FALSE); | |
394 | if (old_node != NULL) { | |
395 | xmlFreeNode(new_node); | |
396 | return GVIR_CONFIG_OBJECT(g_object_new(GVIR_CONFIG_TYPE_OBJECT, | |
397 | "doc", object->priv->doc, | |
398 | "node", old_node, | |
399 | NULL)); | |
400 | } | |
401 | ||
402 | return GVIR_CONFIG_OBJECT(g_object_new(GVIR_CONFIG_TYPE_OBJECT, | |
403 | "doc", object->priv->doc, | |
404 | "node", new_node, | |
405 | NULL)); | |
406 | } | |
407 | ||
408 | G_GNUC_INTERNAL void | |
409 | gvir_config_object_add_child_with_attribute(GVirConfigObject *object, | |
410 | const char *child_name, | |
411 | const char *attr_name, | |
412 | const char *attr_value) | |
413 | { | |
414 | GVirConfigObject *child; | |
415 | ||
416 | child = gvir_config_object_add_child(object, child_name); | |
417 | gvir_config_object_set_attribute(child, attr_name, attr_value, NULL); | |
418 | g_object_unref(G_OBJECT(child)); | |
419 | } | |
420 | ||
421 | ||
422 | void gvir_config_object_add_child_with_attribute_enum(GVirConfigObject *object, | |
423 | const char *child_name, | |
424 | const char *attr_name, | |
425 | GType attr_type, | |
426 | unsigned int attr_value) | |
427 | { | |
428 | GVirConfigObject *child; | |
429 | ||
430 | child = gvir_config_object_add_child(object, child_name); | |
431 | gvir_config_object_set_attribute_with_type(child, attr_name, attr_type, attr_value, NULL); | |
432 | g_object_unref(G_OBJECT(child)); | |
433 | } | |
434 | ||
435 | ||
436 | G_GNUC_INTERNAL GVirConfigObject * | |
437 | gvir_config_object_replace_child(GVirConfigObject *object, | |
438 | const char *child_name) | |
439 | { | |
440 | xmlNodePtr new_node; | |
441 | ||
442 | g_return_val_if_fail(GVIR_CONFIG_IS_OBJECT(object), NULL); | |
443 | g_return_val_if_fail(child_name != NULL, NULL); | |
444 | ||
445 | new_node = xmlNewDocNode(NULL, NULL, (xmlChar *)child_name, NULL); | |
446 | gvir_config_object_set_child_internal(object, new_node, TRUE); | |
447 | ||
448 | return GVIR_CONFIG_OBJECT(g_object_new(GVIR_CONFIG_TYPE_OBJECT, | |
449 | "doc", object->priv->doc, | |
450 | "node", new_node, | |
451 | NULL)); | |
452 | } | |
453 | ||
454 | G_GNUC_INTERNAL void | |
455 | gvir_config_object_replace_child_with_attribute(GVirConfigObject *object, | |
456 | const char *child_name, | |
457 | const char *attr_name, | |
458 | const char *attr_value) | |
459 | { | |
460 | GVirConfigObject *child; | |
461 | ||
462 | child = gvir_config_object_replace_child(object, child_name); | |
463 | gvir_config_object_set_attribute(child, attr_name, attr_value, NULL); | |
464 | g_object_unref(G_OBJECT(child)); | |
465 | } | |
466 | ||
467 | G_GNUC_INTERNAL void | |
468 | gvir_config_object_delete_child(GVirConfigObject *object, | |
469 | const char *child_name) | |
470 | { | |
471 | xmlNodePtr parent_node; | |
472 | xmlNodePtr old_node; | |
473 | ||
474 | g_return_if_fail(GVIR_CONFIG_IS_OBJECT(object)); | |
475 | g_return_if_fail(child_name != NULL); | |
308 | 476 | |
309 | 477 | parent_node = gvir_config_object_get_xml_node(GVIR_CONFIG_OBJECT(object)); |
310 | encoded_name = xmlEncodeEntitiesReentrant(parent_node->doc, | |
478 | g_return_if_fail(parent_node != NULL); | |
479 | ||
480 | if (!(old_node = gvir_config_xml_get_element(parent_node, child_name, NULL))) | |
481 | return; | |
482 | ||
483 | /* FIXME: should we make sure there are no multiple occurrences | |
484 | * of this node? | |
485 | */ | |
486 | xmlUnlinkNode(old_node); | |
487 | xmlFreeNode(old_node); | |
488 | } | |
489 | ||
490 | ||
491 | G_GNUC_INTERNAL void | |
492 | gvir_config_object_set_node_content(GVirConfigObject *object, | |
493 | const char *node_name, | |
494 | const char *value) | |
495 | { | |
496 | xmlChar *encoded_data; | |
497 | GVirConfigObject *node; | |
498 | ||
499 | g_return_if_fail(GVIR_CONFIG_IS_OBJECT(object)); | |
500 | g_return_if_fail(node_name != NULL); | |
501 | g_return_if_fail(value != NULL); | |
502 | ||
503 | node = gvir_config_object_replace_child(object, node_name); | |
504 | g_return_if_fail(node != NULL); | |
505 | encoded_data = xmlEncodeEntitiesReentrant(node->priv->node->doc, | |
311 | 506 | (xmlChar *)value); |
312 | new_node = xmlNewDocNode(parent_node->doc, NULL, | |
313 | (xmlChar *)node_name, encoded_name); | |
314 | xmlFree(encoded_name); | |
315 | ||
316 | old_node = gvir_config_xml_get_element(parent_node, node_name, NULL); | |
317 | if (old_node) { | |
318 | old_node = xmlReplaceNode(old_node, new_node); | |
319 | xmlFreeNode(old_node); | |
320 | } else { | |
321 | xmlAddChild(parent_node, new_node); | |
322 | } | |
507 | xmlNodeSetContent(node->priv->node, encoded_data); | |
508 | xmlFree(encoded_data); | |
509 | g_object_unref(G_OBJECT(node)); | |
510 | } | |
511 | ||
512 | G_GNUC_INTERNAL void | |
513 | gvir_config_object_set_node_content_uint64(GVirConfigObject *object, | |
514 | const char *node_name, | |
515 | guint64 value) | |
516 | { | |
517 | char *str; | |
518 | ||
519 | g_return_if_fail(GVIR_CONFIG_IS_OBJECT(object)); | |
520 | g_return_if_fail(node_name != NULL); | |
521 | ||
522 | str = g_strdup_printf("%"G_GUINT64_FORMAT, value); | |
523 | gvir_config_object_set_node_content(object, node_name, str); | |
524 | g_free(str); | |
323 | 525 | } |
324 | 526 | |
325 | 527 | /* FIXME: how to notify of errors/node not found? */ |
326 | guint64 gvir_config_object_get_node_content_uint64(GVirConfigObject *object, | |
327 | const char *node_name) | |
528 | G_GNUC_INTERNAL guint64 | |
529 | gvir_config_object_get_node_content_uint64(GVirConfigObject *object, | |
530 | const char *node_name) | |
328 | 531 | { |
329 | 532 | xmlNodePtr node; |
330 | 533 | xmlChar *str; |
344 | 547 | return value; |
345 | 548 | } |
346 | 549 | |
347 | ||
348 | void gvir_config_object_set_node_content_uint64(GVirConfigObject *object, | |
349 | const char *node_name, | |
350 | guint64 value) | |
351 | { | |
352 | char *str; | |
353 | str = g_strdup_printf("%"G_GUINT64_FORMAT, value); | |
354 | gvir_config_object_set_node_content(object, node_name, str); | |
355 | g_free(str); | |
550 | G_GNUC_INTERNAL gint | |
551 | gvir_config_object_get_node_content_genum(GVirConfigObject *object, | |
552 | const char *node_name, | |
553 | GType enum_type, | |
554 | gint default_value) | |
555 | { | |
556 | xmlNodePtr node; | |
557 | xmlChar *str; | |
558 | gint value; | |
559 | ||
560 | node = gvir_config_object_get_xml_node(GVIR_CONFIG_OBJECT(object)); | |
561 | if (node == NULL) | |
562 | return default_value; | |
563 | ||
564 | str = gvir_config_xml_get_child_element_content(node, node_name); | |
565 | if (!str) | |
566 | return default_value; | |
567 | ||
568 | value = gvir_config_genum_get_value(enum_type, (char *)str, default_value); | |
569 | xmlFree(str); | |
570 | ||
571 | return value; | |
572 | } | |
573 | ||
574 | G_GNUC_INTERNAL gint | |
575 | gvir_config_object_get_attribute_genum(GVirConfigObject *object, | |
576 | const char *node_name, | |
577 | const char *attr_name, | |
578 | GType enum_type, | |
579 | gint default_value) | |
580 | { | |
581 | xmlNodePtr node; | |
582 | xmlChar *attr_val; | |
583 | gint value; | |
584 | ||
585 | g_return_val_if_fail(attr_name != NULL, default_value); | |
586 | ||
587 | node = gvir_config_object_get_xml_node(GVIR_CONFIG_OBJECT(object)); | |
588 | if (node == NULL) | |
589 | return default_value; | |
590 | ||
591 | if (node_name != NULL) { | |
592 | node = gvir_config_xml_get_element(node, node_name, NULL); | |
593 | if (node == NULL) | |
594 | return default_value; | |
595 | } | |
596 | ||
597 | attr_val = gvir_config_xml_get_attribute_content(node, attr_name); | |
598 | if (attr_val == NULL) | |
599 | return default_value; | |
600 | ||
601 | value = gvir_config_genum_get_value(enum_type, (char *)attr_val, | |
602 | default_value); | |
603 | xmlFree(attr_val); | |
604 | ||
605 | return value; | |
356 | 606 | } |
357 | 607 | |
358 | 608 | GVirConfigObject *gvir_config_object_new_from_xml(GType type, |
361 | 611 | const gchar *xml, |
362 | 612 | GError **error) |
363 | 613 | { |
614 | GVirConfigObject *object; | |
615 | GVirConfigXmlDoc *doc; | |
364 | 616 | xmlNodePtr node; |
365 | 617 | |
366 | 618 | node = gvir_config_xml_parse(xml, root_name, error); |
367 | 619 | if ((error != NULL) && (*error != NULL)) |
368 | 620 | return NULL; |
621 | doc = gvir_config_xml_doc_new(node->doc); | |
622 | object = GVIR_CONFIG_OBJECT(g_object_new(type, | |
623 | "doc", doc, | |
624 | "node", node, | |
625 | "schema", schema, | |
626 | NULL)); | |
627 | g_object_unref(G_OBJECT(doc)); | |
628 | ||
629 | return object; | |
630 | } | |
631 | ||
632 | G_GNUC_INTERNAL GVirConfigObject * | |
633 | gvir_config_object_new_from_tree(GType type, GVirConfigXmlDoc *doc, | |
634 | const char *schema, xmlNodePtr tree) | |
635 | { | |
636 | g_return_val_if_fail(g_type_is_a(type, GVIR_CONFIG_TYPE_OBJECT), NULL); | |
637 | g_return_val_if_fail(GVIR_CONFIG_IS_XML_DOC(doc), NULL); | |
638 | g_return_val_if_fail(tree != NULL, NULL); | |
639 | ||
369 | 640 | return GVIR_CONFIG_OBJECT(g_object_new(type, |
370 | "node", node, | |
641 | "doc", doc, | |
642 | "node", tree, | |
371 | 643 | "schema", schema, |
372 | 644 | NULL)); |
373 | 645 | } |
376 | 648 | const char *root_name, |
377 | 649 | const char *schema) |
378 | 650 | { |
651 | GVirConfigObject *object; | |
652 | GVirConfigXmlDoc *doc; | |
653 | xmlDocPtr xml_doc; | |
654 | xmlNodePtr node; | |
655 | ||
656 | doc = gvir_config_xml_doc_new(NULL); | |
657 | g_object_get(G_OBJECT(doc), "doc", &xml_doc, NULL); | |
658 | g_assert(xml_doc != NULL); | |
659 | node = xmlNewDocNode(xml_doc, NULL, (xmlChar *)root_name, NULL); | |
660 | xmlDocSetRootElement(xml_doc, node); | |
661 | object = GVIR_CONFIG_OBJECT(g_object_new(type, | |
662 | "doc", doc, | |
663 | "node", node, | |
664 | "schema", schema, | |
665 | NULL)); | |
666 | ||
667 | g_object_unref(G_OBJECT(doc)); | |
668 | ||
669 | return object; | |
670 | } | |
671 | ||
672 | G_GNUC_INTERNAL void | |
673 | gvir_config_object_set_attribute(GVirConfigObject *object, ...) | |
674 | { | |
379 | 675 | xmlDocPtr doc; |
380 | xmlNodePtr node; | |
381 | ||
382 | doc = xmlNewDoc((xmlChar *)"1.0"); | |
383 | node = xmlNewDocNode(doc, NULL, (xmlChar *)root_name, NULL); | |
384 | xmlDocSetRootElement(doc, node); | |
385 | return GVIR_CONFIG_OBJECT(g_object_new(type, | |
386 | "node", node, | |
387 | "schema", schema, | |
388 | NULL)); | |
389 | } | |
676 | va_list args; | |
677 | ||
678 | g_return_if_fail(GVIR_CONFIG_IS_OBJECT(object)); | |
679 | ||
680 | g_object_get(G_OBJECT(object->priv->doc), "doc", &doc, NULL); | |
681 | va_start(args, object); | |
682 | while (TRUE) { | |
683 | const char *name; | |
684 | const char *value; | |
685 | xmlChar *encoded_value; | |
686 | ||
687 | name = va_arg(args, const char *); | |
688 | if (name == NULL) { | |
689 | break; | |
690 | } | |
691 | gvir_config_object_remove_attribute(object, name); | |
692 | value = va_arg(args, const char *); | |
693 | if (value == NULL) { | |
694 | g_warn_if_reached(); | |
695 | break; | |
696 | } | |
697 | encoded_value = xmlEncodeEntitiesReentrant(doc, (xmlChar*)value); | |
698 | xmlNewProp(object->priv->node, (xmlChar *)name, encoded_value); | |
699 | xmlFree(encoded_value); | |
700 | } | |
701 | va_end(args); | |
702 | } | |
703 | ||
704 | G_GNUC_INTERNAL void | |
705 | gvir_config_object_set_attribute_with_type(GVirConfigObject *object, ...) | |
706 | { | |
707 | va_list args; | |
708 | ||
709 | g_return_if_fail(GVIR_CONFIG_IS_OBJECT(object)); | |
710 | ||
711 | va_start(args, object); | |
712 | while (TRUE) { | |
713 | const char *name; | |
714 | GType attr_type; | |
715 | char *str; | |
716 | ||
717 | ||
718 | name = va_arg(args, const char *); | |
719 | if (name == NULL) { | |
720 | break; | |
721 | } | |
722 | gvir_config_object_remove_attribute(object, name); | |
723 | ||
724 | attr_type = va_arg(args, GType); | |
725 | if (G_TYPE_IS_ENUM(attr_type)) { | |
726 | int val; | |
727 | const char *enum_str; | |
728 | val = va_arg(args, int); | |
729 | enum_str = gvir_config_genum_get_nick(attr_type, val); | |
730 | if (enum_str != NULL) { | |
731 | str = g_strdup(enum_str); | |
732 | } else { | |
733 | str = NULL; | |
734 | } | |
735 | } else switch (attr_type) { | |
736 | case G_TYPE_UINT64: { | |
737 | guint64 val; | |
738 | val = va_arg(args, guint64); | |
739 | str = g_strdup_printf("%"G_GUINT64_FORMAT, val); | |
740 | break; | |
741 | } | |
742 | case G_TYPE_UINT: { | |
743 | guint val; | |
744 | val = va_arg(args, guint); | |
745 | str = g_strdup_printf("%u", val); | |
746 | break; | |
747 | } | |
748 | case G_TYPE_INT: { | |
749 | gint val; | |
750 | val = va_arg(args, gint); | |
751 | str = g_strdup_printf("%d", val); | |
752 | break; | |
753 | } | |
754 | case G_TYPE_STRING: { | |
755 | xmlDocPtr doc; | |
756 | xmlChar *enc_str; | |
757 | ||
758 | str = va_arg(args, char *); | |
759 | g_object_get(G_OBJECT(object->priv->doc), "doc", &doc, NULL); | |
760 | enc_str = xmlEncodeEntitiesReentrant(doc, (xmlChar*)str); | |
761 | str = g_strdup((char *)enc_str); | |
762 | xmlFree(enc_str); | |
763 | break; | |
764 | } | |
765 | case G_TYPE_BOOLEAN: { | |
766 | gboolean val; | |
767 | val = va_arg(args, gboolean); | |
768 | str = g_strdup_printf("%s", val?"yes":"no"); | |
769 | break; | |
770 | } | |
771 | default: | |
772 | g_warning("Unhandled type: %s", g_type_name(attr_type)); | |
773 | g_assert_not_reached(); | |
774 | } | |
775 | ||
776 | if (str != NULL) { | |
777 | xmlNewProp(object->priv->node, (xmlChar *)name, (xmlChar *)str); | |
778 | g_free(str); | |
779 | } | |
780 | } | |
781 | va_end(args); | |
782 | } | |
783 | ||
784 | G_GNUC_INTERNAL void | |
785 | gvir_config_object_attach(GVirConfigObject *parent, GVirConfigObject *child) | |
786 | { | |
787 | g_return_if_fail(GVIR_CONFIG_IS_OBJECT(parent)); | |
788 | g_return_if_fail(GVIR_CONFIG_IS_OBJECT(child)); | |
789 | ||
790 | xmlUnlinkNode(child->priv->node); | |
791 | xmlAddChild(parent->priv->node, child->priv->node); | |
792 | if (child->priv->doc != NULL) { | |
793 | g_object_unref(G_OBJECT(child->priv->doc)); | |
794 | child->priv->doc = NULL; | |
795 | } | |
796 | if (parent->priv->doc != NULL) { | |
797 | child->priv->doc = g_object_ref(G_OBJECT(parent->priv->doc)); | |
798 | } | |
799 | } | |
800 | ||
801 | G_GNUC_INTERNAL void | |
802 | gvir_config_object_remove_attribute(GVirConfigObject *object, | |
803 | const char *attr_name) | |
804 | { | |
805 | int status; | |
806 | ||
807 | do { | |
808 | status = xmlUnsetProp(object->priv->node, (xmlChar *)attr_name); | |
809 | } while (status == 0); | |
810 | } |
0 | 0 | /* |
1 | * libvirt-gconfig-config-object.c: base object for XML configuration | |
1 | * libvirt-gconfig-object.h: base object for XML configuration | |
2 | 2 | * |
3 | * Copyright (C) 2010 Red Hat | |
3 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
28 | 28 | |
29 | 29 | G_BEGIN_DECLS |
30 | 30 | |
31 | #define GVIR_TYPE_CONFIG_OBJECT (gvir_config_object_get_type ()) | |
32 | #define GVIR_CONFIG_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_TYPE_CONFIG_OBJECT, GVirConfigObject)) | |
33 | #define GVIR_CONFIG_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_TYPE_CONFIG_OBJECT, GVirConfigObjectClass)) | |
34 | #define GVIR_IS_CONFIG_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_TYPE_CONFIG_OBJECT)) | |
35 | #define GVIR_IS_CONFIG_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_TYPE_CONFIG_OBJECT)) | |
36 | #define GVIR_CONFIG_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_TYPE_CONFIG_OBJECT, GVirConfigObjectClass)) | |
31 | #define GVIR_CONFIG_TYPE_OBJECT (gvir_config_object_get_type ()) | |
32 | #define GVIR_CONFIG_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_OBJECT, GVirConfigObject)) | |
33 | #define GVIR_CONFIG_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_OBJECT, GVirConfigObjectClass)) | |
34 | #define GVIR_CONFIG_IS_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_OBJECT)) | |
35 | #define GVIR_CONFIG_IS_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_OBJECT)) | |
36 | #define GVIR_CONFIG_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_OBJECT, GVirConfigObjectClass)) | |
37 | 37 | |
38 | 38 | typedef struct _GVirConfigObject GVirConfigObject; |
39 | 39 | typedef struct _GVirConfigObjectPrivate GVirConfigObjectPrivate; |
72 | 72 | gchar *gvir_config_object_to_xml(GVirConfigObject *config); |
73 | 73 | |
74 | 74 | const gchar *gvir_config_object_get_schema(GVirConfigObject *config); |
75 | xmlNodePtr gvir_config_object_get_xml_node(GVirConfigObject *config); | |
76 | char *gvir_config_object_get_node_content(GVirConfigObject *object, | |
77 | const char *node_name); | |
78 | guint64 gvir_config_object_get_node_content_uint64(GVirConfigObject *object, | |
79 | const char *node_name); | |
80 | void gvir_config_object_set_node_content(GVirConfigObject *object, | |
81 | const char *node_name, | |
82 | const char *value); | |
83 | void gvir_config_object_set_node_content_uint64(GVirConfigObject *object, | |
84 | const char *node_name, | |
85 | guint64 value); | |
86 | ||
87 | /* FIXME: move to a libvirt-gconfig-helpers.h file? */ | |
88 | xmlNodePtr gvir_config_object_parse(const char *xml, const char *root_node, GError **err); | |
89 | 75 | |
90 | 76 | G_END_DECLS |
91 | 77 |
0 | /* | |
1 | * libvirt-gconfig-private.h: libvirt domain device configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Christophe Fergeau <cfergeau@gmail.com> | |
20 | */ | |
21 | ||
22 | #ifndef __LIBVIRT_GCONFIG_PRIVATE_H__ | |
23 | #define __LIBVIRT_GCONFIG_PRIVATE_H__ | |
24 | ||
25 | #include <libvirt-gconfig/libvirt-gconfig-domain-device-private.h> | |
26 | #include <libvirt-gconfig/libvirt-gconfig-helpers-private.h> | |
27 | #include <libvirt-gconfig/libvirt-gconfig-object-private.h> | |
28 | #include <libvirt-gconfig/libvirt-gconfig-xml-doc.h> | |
29 | ||
30 | #endif /* __LIBVIRT_GCONFIG_PRIVATE_H__ */ |
0 | 0 | /* |
1 | * libvirt-gobject-config_secret.c: libvirt glib integration | |
1 | * libvirt-gconfig-secret.c: libvirt secret configuration | |
2 | 2 | * |
3 | 3 | * Copyright (C) 2008 Daniel P. Berrange |
4 | * Copyright (C) 2010 Red Hat | |
4 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
5 | 5 | * |
6 | 6 | * This library is free software; you can redistribute it and/or |
7 | 7 | * modify it under the terms of the GNU Lesser General Public |
22 | 22 | |
23 | 23 | #include <config.h> |
24 | 24 | |
25 | #include <string.h> | |
26 | ||
27 | 25 | #include "libvirt-gconfig/libvirt-gconfig.h" |
28 | 26 | |
29 | extern gboolean debugFlag; | |
30 | ||
31 | #define DEBUG(fmt, ...) do { if (G_UNLIKELY(debugFlag)) g_debug(fmt, ## __VA_ARGS__); } while (0) | |
32 | ||
33 | 27 | #define GVIR_CONFIG_SECRET_GET_PRIVATE(obj) \ |
34 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_TYPE_CONFIG_SECRET, GVirConfigSecretPrivate)) | |
28 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_SECRET, GVirConfigSecretPrivate)) | |
35 | 29 | |
36 | 30 | struct _GVirConfigSecretPrivate |
37 | 31 | { |
38 | 32 | gboolean unused; |
39 | 33 | }; |
40 | 34 | |
41 | G_DEFINE_TYPE(GVirConfigSecret, gvir_config_secret, GVIR_TYPE_CONFIG_OBJECT); | |
35 | G_DEFINE_TYPE(GVirConfigSecret, gvir_config_secret, GVIR_CONFIG_TYPE_OBJECT); | |
42 | 36 | |
43 | 37 | |
44 | 38 | static void gvir_config_secret_class_init(GVirConfigSecretClass *klass) |
45 | 39 | { |
46 | ||
47 | 40 | g_type_class_add_private(klass, sizeof(GVirConfigSecretPrivate)); |
48 | 41 | } |
49 | 42 | |
50 | 43 | |
51 | 44 | static void gvir_config_secret_init(GVirConfigSecret *conn) |
52 | 45 | { |
53 | GVirConfigSecretPrivate *priv; | |
46 | g_debug("Init GVirConfigSecret=%p", conn); | |
54 | 47 | |
55 | DEBUG("Init GVirConfigSecret=%p", conn); | |
56 | ||
57 | priv = conn->priv = GVIR_CONFIG_SECRET_GET_PRIVATE(conn); | |
58 | ||
59 | memset(priv, 0, sizeof(*priv)); | |
48 | conn->priv = GVIR_CONFIG_SECRET_GET_PRIVATE(conn); | |
60 | 49 | } |
61 | 50 | |
62 | 51 | |
64 | 53 | { |
65 | 54 | GVirConfigObject *object; |
66 | 55 | |
67 | object = gvir_config_object_new(GVIR_TYPE_CONFIG_SECRET, | |
56 | object = gvir_config_object_new(GVIR_CONFIG_TYPE_SECRET, | |
68 | 57 | "secret", |
69 | 58 | DATADIR "/libvirt/schemas/secret.rng"); |
70 | 59 | return GVIR_CONFIG_SECRET(object); |
75 | 64 | { |
76 | 65 | GVirConfigObject *object; |
77 | 66 | |
78 | object = gvir_config_object_new_from_xml(GVIR_TYPE_CONFIG_SECRET, | |
67 | object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_SECRET, | |
79 | 68 | "secret", |
80 | 69 | DATADIR "/libvirt/schemas/secret.rng", |
81 | 70 | xml, error); |
0 | 0 | /* |
1 | * libvirt-gobject-secret-config.c: libvirt gobject integration | |
1 | * libvirt-gconfig-secret.h: libvirt secret configuration | |
2 | 2 | * |
3 | * Copyright (C) 2010 Red Hat | |
3 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
28 | 28 | |
29 | 29 | G_BEGIN_DECLS |
30 | 30 | |
31 | #define GVIR_TYPE_CONFIG_SECRET (gvir_config_secret_get_type ()) | |
32 | #define GVIR_CONFIG_SECRET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_TYPE_CONFIG_SECRET, GVirConfigSecret)) | |
33 | #define GVIR_CONFIG_SECRET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_TYPE_CONFIG_SECRET, GVirConfigSecretClass)) | |
34 | #define GVIR_IS_CONFIG_SECRET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_TYPE_CONFIG_SECRET)) | |
35 | #define GVIR_IS_CONFIG_SECRET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_TYPE_CONFIG_SECRET)) | |
36 | #define GVIR_CONFIG_SECRET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_TYPE_CONFIG_SECRET, GVirConfigSecretClass)) | |
31 | #define GVIR_CONFIG_TYPE_SECRET (gvir_config_secret_get_type ()) | |
32 | #define GVIR_CONFIG_SECRET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_SECRET, GVirConfigSecret)) | |
33 | #define GVIR_CONFIG_SECRET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_SECRET, GVirConfigSecretClass)) | |
34 | #define GVIR_CONFIG_IS_SECRET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_SECRET)) | |
35 | #define GVIR_CONFIG_IS_SECRET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_SECRET)) | |
36 | #define GVIR_CONFIG_SECRET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_SECRET, GVirConfigSecretClass)) | |
37 | 37 | |
38 | 38 | typedef struct _GVirConfigSecret GVirConfigSecret; |
39 | 39 | typedef struct _GVirConfigSecretPrivate GVirConfigSecretPrivate; |
0 | /* | |
1 | * libvirt-gconfig-storage-permissions.c: libvirt storage permissions configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Christophe Fergeau <cfergeau@redhat.com> | |
20 | */ | |
21 | ||
22 | #include <config.h> | |
23 | ||
24 | #include "libvirt-gconfig/libvirt-gconfig.h" | |
25 | #include "libvirt-gconfig/libvirt-gconfig-private.h" | |
26 | ||
27 | #define GVIR_CONFIG_STORAGE_PERMISSIONS_GET_PRIVATE(obj) \ | |
28 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_STORAGE_PERMISSIONS, GVirConfigStoragePermissionsPrivate)) | |
29 | ||
30 | struct _GVirConfigStoragePermissionsPrivate | |
31 | { | |
32 | gboolean unused; | |
33 | }; | |
34 | ||
35 | G_DEFINE_TYPE(GVirConfigStoragePermissions, gvir_config_storage_permissions, GVIR_CONFIG_TYPE_OBJECT); | |
36 | ||
37 | ||
38 | static void gvir_config_storage_permissions_class_init(GVirConfigStoragePermissionsClass *klass) | |
39 | { | |
40 | g_type_class_add_private(klass, sizeof(GVirConfigStoragePermissionsPrivate)); | |
41 | } | |
42 | ||
43 | ||
44 | static void gvir_config_storage_permissions_init(GVirConfigStoragePermissions *perms) | |
45 | { | |
46 | g_debug("Init GVirConfigStoragePermissions=%p", perms); | |
47 | ||
48 | perms->priv = GVIR_CONFIG_STORAGE_PERMISSIONS_GET_PRIVATE(perms); | |
49 | } | |
50 | ||
51 | ||
52 | GVirConfigStoragePermissions *gvir_config_storage_permissions_new(void) | |
53 | { | |
54 | GVirConfigObject *object; | |
55 | ||
56 | object = gvir_config_object_new(GVIR_CONFIG_TYPE_STORAGE_PERMISSIONS, | |
57 | "permissions", NULL); | |
58 | return GVIR_CONFIG_STORAGE_PERMISSIONS(object); | |
59 | } | |
60 | ||
61 | GVirConfigStoragePermissions *gvir_config_storage_permissions_new_from_xml(const gchar *xml, | |
62 | GError **error) | |
63 | { | |
64 | GVirConfigObject *object; | |
65 | ||
66 | object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_STORAGE_PERMISSIONS, | |
67 | "permissions", NULL, | |
68 | xml, error); | |
69 | return GVIR_CONFIG_STORAGE_PERMISSIONS(object); | |
70 | } | |
71 | ||
72 | void gvir_config_storage_permissions_set_group(GVirConfigStoragePermissions *perms, | |
73 | guint group) | |
74 | { | |
75 | g_return_if_fail(GVIR_CONFIG_IS_STORAGE_PERMISSIONS(perms)); | |
76 | ||
77 | gvir_config_object_set_node_content_uint64(GVIR_CONFIG_OBJECT(perms), | |
78 | "group", group); | |
79 | } | |
80 | ||
81 | void gvir_config_storage_permissions_set_label(GVirConfigStoragePermissions *perms, | |
82 | const char *label) | |
83 | { | |
84 | g_return_if_fail(GVIR_CONFIG_IS_STORAGE_PERMISSIONS(perms)); | |
85 | ||
86 | gvir_config_object_set_node_content(GVIR_CONFIG_OBJECT(perms), | |
87 | "label", label); | |
88 | } | |
89 | ||
90 | void gvir_config_storage_permissions_set_mode(GVirConfigStoragePermissions *perms, | |
91 | guint mode) | |
92 | { | |
93 | g_return_if_fail(GVIR_CONFIG_IS_STORAGE_PERMISSIONS(perms)); | |
94 | ||
95 | gvir_config_object_set_node_content_uint64(GVIR_CONFIG_OBJECT(perms), | |
96 | "mode", mode); | |
97 | } | |
98 | ||
99 | void gvir_config_storage_permissions_set_owner(GVirConfigStoragePermissions *perms, | |
100 | guint owner) | |
101 | { | |
102 | g_return_if_fail(GVIR_CONFIG_IS_STORAGE_PERMISSIONS(perms)); | |
103 | ||
104 | gvir_config_object_set_node_content_uint64(GVIR_CONFIG_OBJECT(perms), | |
105 | "owner", owner); | |
106 | } |
0 | /* | |
1 | * libvirt-gconfig-storage-permissions.h: libvirt storage permissions configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Christophe Fergeau | |
20 | */ | |
21 | ||
22 | #if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) | |
23 | #error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." | |
24 | #endif | |
25 | ||
26 | #ifndef __LIBVIRT_GCONFIG_STORAGE_PERMISSIONS_H__ | |
27 | #define __LIBVIRT_GCONFIG_STORAGE_PERMISSIONS_H__ | |
28 | ||
29 | G_BEGIN_DECLS | |
30 | ||
31 | #define GVIR_CONFIG_TYPE_STORAGE_PERMISSIONS (gvir_config_storage_permissions_get_type ()) | |
32 | #define GVIR_CONFIG_STORAGE_PERMISSIONS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_STORAGE_PERMISSIONS, GVirConfigStoragePermissions)) | |
33 | #define GVIR_CONFIG_STORAGE_PERMISSIONS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_STORAGE_PERMISSIONS, GVirConfigStoragePermissionsClass)) | |
34 | #define GVIR_CONFIG_IS_STORAGE_PERMISSIONS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_STORAGE_PERMISSIONS)) | |
35 | #define GVIR_CONFIG_IS_STORAGE_PERMISSIONS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_STORAGE_PERMISSIONS)) | |
36 | #define GVIR_CONFIG_STORAGE_PERMISSIONS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_STORAGE_PERMISSIONS, GVirConfigStoragePermissionsClass)) | |
37 | ||
38 | typedef struct _GVirConfigStoragePermissions GVirConfigStoragePermissions; | |
39 | typedef struct _GVirConfigStoragePermissionsPrivate GVirConfigStoragePermissionsPrivate; | |
40 | typedef struct _GVirConfigStoragePermissionsClass GVirConfigStoragePermissionsClass; | |
41 | ||
42 | struct _GVirConfigStoragePermissions | |
43 | { | |
44 | GVirConfigObject parent; | |
45 | ||
46 | GVirConfigStoragePermissionsPrivate *priv; | |
47 | ||
48 | /* Do not add fields to this struct */ | |
49 | }; | |
50 | ||
51 | struct _GVirConfigStoragePermissionsClass | |
52 | { | |
53 | GVirConfigObjectClass parent_class; | |
54 | ||
55 | gpointer padding[20]; | |
56 | }; | |
57 | ||
58 | ||
59 | GType gvir_config_storage_permissions_get_type(void); | |
60 | ||
61 | GVirConfigStoragePermissions *gvir_config_storage_permissions_new(void); | |
62 | GVirConfigStoragePermissions *gvir_config_storage_permissions_new_from_xml(const gchar *xml, | |
63 | GError **error); | |
64 | ||
65 | void gvir_config_storage_permissions_set_group(GVirConfigStoragePermissions *perms, | |
66 | guint group); | |
67 | void gvir_config_storage_permissions_set_label(GVirConfigStoragePermissions *perms, | |
68 | const char *label); | |
69 | void gvir_config_storage_permissions_set_mode(GVirConfigStoragePermissions *perms, | |
70 | guint mode); | |
71 | void gvir_config_storage_permissions_set_owner(GVirConfigStoragePermissions *perms, | |
72 | guint owner); | |
73 | ||
74 | G_END_DECLS | |
75 | ||
76 | #endif /* __LIBVIRT_GCONFIG_STORAGE_PERMISSIONS_H__ */ |
0 | /* | |
1 | * libvirt-gconfig-storage-pool-source.c: libvirt storage pool source configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Christophe Fergeau <cfergeau@redhat.com> | |
20 | */ | |
21 | ||
22 | #include <config.h> | |
23 | ||
24 | #include "libvirt-gconfig/libvirt-gconfig.h" | |
25 | #include "libvirt-gconfig/libvirt-gconfig-private.h" | |
26 | ||
27 | ||
28 | #define GVIR_CONFIG_STORAGE_POOL_SOURCE_GET_PRIVATE(obj) \ | |
29 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_STORAGE_POOL_SOURCE, GVirConfigStoragePoolSourcePrivate)) | |
30 | ||
31 | struct _GVirConfigStoragePoolSourcePrivate | |
32 | { | |
33 | gboolean unused; | |
34 | }; | |
35 | ||
36 | G_DEFINE_TYPE(GVirConfigStoragePoolSource, gvir_config_storage_pool_source, GVIR_CONFIG_TYPE_OBJECT); | |
37 | ||
38 | ||
39 | static void gvir_config_storage_pool_source_class_init(GVirConfigStoragePoolSourceClass *klass) | |
40 | { | |
41 | g_type_class_add_private(klass, sizeof(GVirConfigStoragePoolSourcePrivate)); | |
42 | } | |
43 | ||
44 | ||
45 | static void gvir_config_storage_pool_source_init(GVirConfigStoragePoolSource *source) | |
46 | { | |
47 | g_debug("Init GVirConfigStoragePoolSource=%p", source); | |
48 | ||
49 | source->priv = GVIR_CONFIG_STORAGE_POOL_SOURCE_GET_PRIVATE(source); | |
50 | } | |
51 | ||
52 | ||
53 | GVirConfigStoragePoolSource *gvir_config_storage_pool_source_new(void) | |
54 | { | |
55 | GVirConfigObject *object; | |
56 | ||
57 | object = gvir_config_object_new(GVIR_CONFIG_TYPE_STORAGE_POOL_SOURCE, | |
58 | "source", NULL); | |
59 | return GVIR_CONFIG_STORAGE_POOL_SOURCE(object); | |
60 | } | |
61 | ||
62 | GVirConfigStoragePoolSource *gvir_config_storage_pool_source_new_from_xml(const gchar *xml, | |
63 | GError **error) | |
64 | { | |
65 | GVirConfigObject *object; | |
66 | ||
67 | object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_STORAGE_POOL_SOURCE, | |
68 | "source", NULL, | |
69 | xml, error); | |
70 | return GVIR_CONFIG_STORAGE_POOL_SOURCE(object); | |
71 | } | |
72 | ||
73 | void gvir_config_storage_pool_source_set_adapter(GVirConfigStoragePoolSource *source, | |
74 | const char *adapter) | |
75 | { | |
76 | GVirConfigObject *node; | |
77 | ||
78 | g_return_if_fail(GVIR_CONFIG_IS_STORAGE_POOL_SOURCE(source)); | |
79 | ||
80 | node = gvir_config_object_replace_child(GVIR_CONFIG_OBJECT(source), "adapter"); | |
81 | g_return_if_fail(GVIR_CONFIG_IS_OBJECT(node)); | |
82 | gvir_config_object_set_attribute(node, "name", adapter, NULL); | |
83 | g_object_unref(G_OBJECT(node)); | |
84 | } | |
85 | ||
86 | void gvir_config_storage_pool_source_set_device_path(GVirConfigStoragePoolSource *source, | |
87 | const char *device_path) | |
88 | { | |
89 | GVirConfigObject *node; | |
90 | ||
91 | g_return_if_fail(GVIR_CONFIG_IS_STORAGE_POOL_SOURCE(source)); | |
92 | ||
93 | node = gvir_config_object_add_child(GVIR_CONFIG_OBJECT(source), "device"); | |
94 | g_return_if_fail(GVIR_CONFIG_IS_OBJECT(node)); | |
95 | gvir_config_object_set_attribute(node, "path", device_path, NULL); | |
96 | g_object_unref(G_OBJECT(node)); | |
97 | } | |
98 | ||
99 | void gvir_config_storage_pool_source_set_directory(GVirConfigStoragePoolSource *source, | |
100 | const char *directory) | |
101 | { | |
102 | GVirConfigObject *node; | |
103 | ||
104 | g_return_if_fail(GVIR_CONFIG_IS_STORAGE_POOL_SOURCE(source)); | |
105 | ||
106 | node = gvir_config_object_replace_child(GVIR_CONFIG_OBJECT(source), "directory"); | |
107 | g_return_if_fail(GVIR_CONFIG_IS_OBJECT(node)); | |
108 | gvir_config_object_set_attribute(node, "path", directory, NULL); | |
109 | g_object_unref(G_OBJECT(node)); | |
110 | } | |
111 | ||
112 | void gvir_config_storage_pool_source_set_format(GVirConfigStoragePoolSource *source, | |
113 | const char *format) | |
114 | { | |
115 | GVirConfigObject *node; | |
116 | ||
117 | g_return_if_fail(GVIR_CONFIG_IS_STORAGE_POOL_SOURCE(source)); | |
118 | ||
119 | node = gvir_config_object_replace_child(GVIR_CONFIG_OBJECT(source), "format"); | |
120 | g_return_if_fail(GVIR_CONFIG_IS_OBJECT(node)); | |
121 | gvir_config_object_set_attribute(node, "type", format, NULL); | |
122 | g_object_unref(G_OBJECT(node)); | |
123 | } | |
124 | ||
125 | void gvir_config_storage_pool_source_set_host(GVirConfigStoragePoolSource *source, | |
126 | const char *host) | |
127 | { | |
128 | GVirConfigObject *node; | |
129 | ||
130 | g_return_if_fail(GVIR_CONFIG_IS_STORAGE_POOL_SOURCE(source)); | |
131 | ||
132 | node = gvir_config_object_replace_child(GVIR_CONFIG_OBJECT(source), "host"); | |
133 | g_return_if_fail(GVIR_CONFIG_IS_OBJECT(node)); | |
134 | gvir_config_object_set_attribute(node, "name", host, NULL); | |
135 | g_object_unref(G_OBJECT(node)); | |
136 | } | |
137 | ||
138 | void gvir_config_storage_pool_source_set_name(GVirConfigStoragePoolSource *source, | |
139 | const char *name) | |
140 | { | |
141 | g_return_if_fail(GVIR_CONFIG_IS_STORAGE_POOL_SOURCE(source)); | |
142 | ||
143 | gvir_config_object_set_node_content(GVIR_CONFIG_OBJECT(source), | |
144 | "name", name); | |
145 | } | |
146 | ||
147 | void gvir_config_storage_pool_source_set_product(GVirConfigStoragePoolSource *source, | |
148 | const char *product) | |
149 | { | |
150 | GVirConfigObject *node; | |
151 | ||
152 | g_return_if_fail(GVIR_CONFIG_IS_STORAGE_POOL_SOURCE(source)); | |
153 | ||
154 | node = gvir_config_object_replace_child(GVIR_CONFIG_OBJECT(source), "product"); | |
155 | g_return_if_fail(GVIR_CONFIG_IS_OBJECT(node)); | |
156 | gvir_config_object_set_attribute(node, "name", product, NULL); | |
157 | g_object_unref(G_OBJECT(node)); | |
158 | } | |
159 | ||
160 | void gvir_config_storage_pool_source_set_vendor(GVirConfigStoragePoolSource *source, | |
161 | const char *vendor) | |
162 | { | |
163 | GVirConfigObject *node; | |
164 | ||
165 | g_return_if_fail(GVIR_CONFIG_IS_STORAGE_POOL_SOURCE(source)); | |
166 | ||
167 | node = gvir_config_object_replace_child(GVIR_CONFIG_OBJECT(source), "vendor"); | |
168 | g_return_if_fail(GVIR_CONFIG_IS_OBJECT(node)); | |
169 | gvir_config_object_set_attribute(node, "name", vendor, NULL); | |
170 | g_object_unref(G_OBJECT(node)); | |
171 | } |
0 | /* | |
1 | * libvirt-gconfig-storage-pool-target.c: libvirt storage pool target configuration | |
2 | * | |
3 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Christophe Fergeau <cfergeau@redhat.com> | |
20 | */ | |
21 | ||
22 | #if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) | |
23 | #error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." | |
24 | #endif | |
25 | ||
26 | #ifndef __LIBVIRT_GCONFIG_STORAGE_POOL_SOURCE_H__ | |
27 | #define __LIBVIRT_GCONFIG_STORAGE_POOL_SOURCE_H__ | |
28 | ||
29 | G_BEGIN_DECLS | |
30 | ||
31 | #define GVIR_CONFIG_TYPE_STORAGE_POOL_SOURCE (gvir_config_storage_pool_source_get_type ()) | |
32 | #define GVIR_CONFIG_STORAGE_POOL_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_STORAGE_POOL_SOURCE, GVirConfigStoragePoolSource)) | |
33 | #define GVIR_CONFIG_STORAGE_POOL_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_STORAGE_POOL_SOURCE, GVirConfigStoragePoolSourceClass)) | |
34 | #define GVIR_CONFIG_IS_STORAGE_POOL_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_STORAGE_POOL_SOURCE)) | |
35 | #define GVIR_CONFIG_IS_STORAGE_POOL_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_STORAGE_POOL_SOURCE)) | |
36 | #define GVIR_CONFIG_STORAGE_POOL_SOURCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_STORAGE_POOL_SOURCE, GVirConfigStoragePoolSourceClass)) | |
37 | ||
38 | typedef struct _GVirConfigStoragePoolSource GVirConfigStoragePoolSource; | |
39 | typedef struct _GVirConfigStoragePoolSourcePrivate GVirConfigStoragePoolSourcePrivate; | |
40 | typedef struct _GVirConfigStoragePoolSourceClass GVirConfigStoragePoolSourceClass; | |
41 | ||
42 | struct _GVirConfigStoragePoolSource | |
43 | { | |
44 | GVirConfigObject parent; | |
45 | ||
46 | GVirConfigStoragePoolSourcePrivate *priv; | |
47 | ||
48 | /* Do not add fields to this struct */ | |
49 | }; | |
50 | ||
51 | struct _GVirConfigStoragePoolSourceClass | |
52 | { | |
53 | GVirConfigObjectClass parent_class; | |
54 | ||
55 | gpointer padding[20]; | |
56 | }; | |
57 | ||
58 | ||
59 | GType gvir_config_storage_pool_source_get_type(void); | |
60 | ||
61 | GVirConfigStoragePoolSource *gvir_config_storage_pool_source_new(void); | |
62 | GVirConfigStoragePoolSource *gvir_config_storage_pool_source_new_from_xml(const gchar *xml, | |
63 | GError **error); | |
64 | ||
65 | void gvir_config_storage_pool_source_set_adapter(GVirConfigStoragePoolSource *source, | |
66 | const char *adapter); | |
67 | void gvir_config_storage_pool_source_set_device_path(GVirConfigStoragePoolSource *source, | |
68 | const char *device_path); | |
69 | void gvir_config_storage_pool_source_set_directory(GVirConfigStoragePoolSource *source, | |
70 | const char *directory); | |
71 | void gvir_config_storage_pool_source_set_format(GVirConfigStoragePoolSource *source, | |
72 | const char *format); | |
73 | void gvir_config_storage_pool_source_set_host(GVirConfigStoragePoolSource *source, | |
74 | const char *host); | |
75 | void gvir_config_storage_pool_source_set_name(GVirConfigStoragePoolSource *source, | |
76 | const char *name); | |
77 | void gvir_config_storage_pool_source_set_product(GVirConfigStoragePoolSource *source, | |
78 | const char *product); | |
79 | void gvir_config_storage_pool_source_set_vendor(GVirConfigStoragePoolSource *source, | |
80 | const char *vendor); | |
81 | ||
82 | G_END_DECLS | |
83 | ||
84 | #endif /* __LIBVIRT_GCONFIG_STORAGE_POOL_SOURCE_H__ */ |
0 | /* | |
1 | * libvirt-gconfig-storage-pool-target.c: libvirt storage pool target configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Christophe Fergeau <cfergeau@redhat.com> | |
20 | */ | |
21 | ||
22 | #include <config.h> | |
23 | ||
24 | #include "libvirt-gconfig/libvirt-gconfig.h" | |
25 | #include "libvirt-gconfig/libvirt-gconfig-private.h" | |
26 | ||
27 | ||
28 | #define GVIR_CONFIG_STORAGE_POOL_TARGET_GET_PRIVATE(obj) \ | |
29 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_STORAGE_POOL_TARGET, GVirConfigStoragePoolTargetPrivate)) | |
30 | ||
31 | struct _GVirConfigStoragePoolTargetPrivate | |
32 | { | |
33 | gboolean unused; | |
34 | }; | |
35 | ||
36 | G_DEFINE_TYPE(GVirConfigStoragePoolTarget, gvir_config_storage_pool_target, GVIR_CONFIG_TYPE_OBJECT); | |
37 | ||
38 | ||
39 | static void gvir_config_storage_pool_target_class_init(GVirConfigStoragePoolTargetClass *klass) | |
40 | { | |
41 | g_type_class_add_private(klass, sizeof(GVirConfigStoragePoolTargetPrivate)); | |
42 | } | |
43 | ||
44 | ||
45 | static void gvir_config_storage_pool_target_init(GVirConfigStoragePoolTarget *target) | |
46 | { | |
47 | g_debug("Init GVirConfigStoragePoolTarget=%p", target); | |
48 | ||
49 | target->priv = GVIR_CONFIG_STORAGE_POOL_TARGET_GET_PRIVATE(target); | |
50 | } | |
51 | ||
52 | ||
53 | GVirConfigStoragePoolTarget *gvir_config_storage_pool_target_new(void) | |
54 | { | |
55 | GVirConfigObject *object; | |
56 | ||
57 | object = gvir_config_object_new(GVIR_CONFIG_TYPE_STORAGE_POOL_TARGET, | |
58 | "target", NULL); | |
59 | return GVIR_CONFIG_STORAGE_POOL_TARGET(object); | |
60 | } | |
61 | ||
62 | GVirConfigStoragePoolTarget *gvir_config_storage_pool_target_new_from_xml(const gchar *xml, | |
63 | GError **error) | |
64 | { | |
65 | GVirConfigObject *object; | |
66 | ||
67 | object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_STORAGE_POOL_TARGET, | |
68 | "target", NULL, | |
69 | xml, error); | |
70 | return GVIR_CONFIG_STORAGE_POOL_TARGET(object); | |
71 | } | |
72 | ||
73 | void gvir_config_storage_pool_target_set_path(GVirConfigStoragePoolTarget *target, | |
74 | const char *path) | |
75 | { | |
76 | g_return_if_fail(GVIR_CONFIG_IS_STORAGE_POOL_TARGET(target)); | |
77 | ||
78 | gvir_config_object_set_node_content(GVIR_CONFIG_OBJECT(target), | |
79 | "path", path); | |
80 | } | |
81 | ||
82 | void gvir_config_storage_pool_target_set_permissions(GVirConfigStoragePoolTarget *target, | |
83 | GVirConfigStoragePermissions *perms) | |
84 | { | |
85 | g_return_if_fail(GVIR_CONFIG_IS_STORAGE_POOL_TARGET(target)); | |
86 | g_return_if_fail(GVIR_CONFIG_IS_STORAGE_PERMISSIONS(perms)); | |
87 | ||
88 | gvir_config_object_attach(GVIR_CONFIG_OBJECT(target), | |
89 | GVIR_CONFIG_OBJECT(perms)); | |
90 | } |
0 | /* | |
1 | * libvirt-gconfig-storage-pool-target.h: libvirt storage pool target configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Christophe Fergeau <cfergeau@redhat.com> | |
20 | */ | |
21 | ||
22 | #if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) | |
23 | #error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." | |
24 | #endif | |
25 | ||
26 | #ifndef __LIBVIRT_GCONFIG_STORAGE_POOL_TARGET_H__ | |
27 | #define __LIBVIRT_GCONFIG_STORAGE_POOL_TARGET_H__ | |
28 | ||
29 | G_BEGIN_DECLS | |
30 | ||
31 | #define GVIR_CONFIG_TYPE_STORAGE_POOL_TARGET (gvir_config_storage_pool_target_get_type ()) | |
32 | #define GVIR_CONFIG_STORAGE_POOL_TARGET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_STORAGE_POOL_TARGET, GVirConfigStoragePoolTarget)) | |
33 | #define GVIR_CONFIG_STORAGE_POOL_TARGET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_STORAGE_POOL_TARGET, GVirConfigStoragePoolTargetClass)) | |
34 | #define GVIR_CONFIG_IS_STORAGE_POOL_TARGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_STORAGE_POOL_TARGET)) | |
35 | #define GVIR_CONFIG_IS_STORAGE_POOL_TARGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_STORAGE_POOL_TARGET)) | |
36 | #define GVIR_CONFIG_STORAGE_POOL_TARGET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_STORAGE_POOL_TARGET, GVirConfigStoragePoolTargetClass)) | |
37 | ||
38 | typedef struct _GVirConfigStoragePoolTarget GVirConfigStoragePoolTarget; | |
39 | typedef struct _GVirConfigStoragePoolTargetPrivate GVirConfigStoragePoolTargetPrivate; | |
40 | typedef struct _GVirConfigStoragePoolTargetClass GVirConfigStoragePoolTargetClass; | |
41 | ||
42 | struct _GVirConfigStoragePoolTarget | |
43 | { | |
44 | GVirConfigObject parent; | |
45 | ||
46 | GVirConfigStoragePoolTargetPrivate *priv; | |
47 | ||
48 | /* Do not add fields to this struct */ | |
49 | }; | |
50 | ||
51 | struct _GVirConfigStoragePoolTargetClass | |
52 | { | |
53 | GVirConfigObjectClass parent_class; | |
54 | ||
55 | gpointer padding[20]; | |
56 | }; | |
57 | ||
58 | ||
59 | GType gvir_config_storage_pool_target_get_type(void); | |
60 | ||
61 | GVirConfigStoragePoolTarget *gvir_config_storage_pool_target_new(void); | |
62 | GVirConfigStoragePoolTarget *gvir_config_storage_pool_target_new_from_xml(const gchar *xml, | |
63 | GError **error); | |
64 | ||
65 | void gvir_config_storage_pool_target_set_path(GVirConfigStoragePoolTarget *target, | |
66 | const char *path); | |
67 | void gvir_config_storage_pool_target_set_permissions(GVirConfigStoragePoolTarget *target, | |
68 | GVirConfigStoragePermissions *perms); | |
69 | ||
70 | G_END_DECLS | |
71 | ||
72 | #endif /* __LIBVIRT_GCONFIG_STORAGE_POOL_TARGET_H__ */ |
0 | 0 | /* |
1 | * libvirt-gconfig-storage-pool.c: libvirt glib integration | |
1 | * libvirt-gconfig-storage-pool.c: libvirt storage pool configuration | |
2 | 2 | * |
3 | 3 | * Copyright (C) 2008 Daniel P. Berrange |
4 | * Copyright (C) 2010 Red Hat | |
4 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
5 | 5 | * |
6 | 6 | * This library is free software; you can redistribute it and/or |
7 | 7 | * modify it under the terms of the GNU Lesser General Public |
17 | 17 | * License along with this library; if not, write to the Free Software |
18 | 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
19 | 19 | * |
20 | * Author: Daniel P. Berrange <berrange@redhat.com> | |
20 | * Authors: Daniel P. Berrange <berrange@redhat.com> | |
21 | * Christophe Fergeau <cfergeau@redhat.com> | |
21 | 22 | */ |
22 | 23 | |
23 | 24 | #include <config.h> |
24 | 25 | |
25 | #include <string.h> | |
26 | ||
27 | 26 | #include "libvirt-gconfig/libvirt-gconfig.h" |
28 | ||
29 | extern gboolean debugFlag; | |
30 | ||
31 | #define DEBUG(fmt, ...) do { if (G_UNLIKELY(debugFlag)) g_debug(fmt, ## __VA_ARGS__); } while (0) | |
27 | #include "libvirt-gconfig/libvirt-gconfig-private.h" | |
32 | 28 | |
33 | 29 | #define GVIR_CONFIG_STORAGE_POOL_GET_PRIVATE(obj) \ |
34 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_TYPE_CONFIG_STORAGE_POOL, GVirConfigStoragePoolPrivate)) | |
30 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_STORAGE_POOL, GVirConfigStoragePoolPrivate)) | |
35 | 31 | |
36 | 32 | struct _GVirConfigStoragePoolPrivate |
37 | 33 | { |
38 | 34 | gboolean unused; |
39 | 35 | }; |
40 | 36 | |
41 | G_DEFINE_TYPE(GVirConfigStoragePool, gvir_config_storage_pool, GVIR_TYPE_CONFIG_OBJECT); | |
37 | G_DEFINE_TYPE(GVirConfigStoragePool, gvir_config_storage_pool, GVIR_CONFIG_TYPE_OBJECT); | |
42 | 38 | |
43 | 39 | |
44 | 40 | static void gvir_config_storage_pool_class_init(GVirConfigStoragePoolClass *klass) |
45 | 41 | { |
46 | ||
47 | 42 | g_type_class_add_private(klass, sizeof(GVirConfigStoragePoolPrivate)); |
48 | 43 | } |
49 | 44 | |
50 | 45 | |
51 | 46 | static void gvir_config_storage_pool_init(GVirConfigStoragePool *conn) |
52 | 47 | { |
53 | GVirConfigStoragePoolPrivate *priv; | |
48 | g_debug("Init GVirConfigStoragePool=%p", conn); | |
54 | 49 | |
55 | DEBUG("Init GVirConfigStoragePool=%p", conn); | |
56 | ||
57 | priv = conn->priv = GVIR_CONFIG_STORAGE_POOL_GET_PRIVATE(conn); | |
58 | ||
59 | memset(priv, 0, sizeof(*priv)); | |
50 | conn->priv = GVIR_CONFIG_STORAGE_POOL_GET_PRIVATE(conn); | |
60 | 51 | } |
61 | 52 | |
62 | 53 | |
64 | 55 | { |
65 | 56 | GVirConfigObject *object; |
66 | 57 | |
67 | object = gvir_config_object_new(GVIR_TYPE_CONFIG_STORAGE_POOL, | |
58 | object = gvir_config_object_new(GVIR_CONFIG_TYPE_STORAGE_POOL, | |
68 | 59 | "pool", |
69 | 60 | DATADIR "/libvirt/schemas/storagepool.rng"); |
70 | 61 | return GVIR_CONFIG_STORAGE_POOL(object); |
75 | 66 | { |
76 | 67 | GVirConfigObject *object; |
77 | 68 | |
78 | object = gvir_config_object_new_from_xml(GVIR_TYPE_CONFIG_STORAGE_POOL, | |
69 | object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_STORAGE_POOL, | |
79 | 70 | "pool", |
80 | 71 | DATADIR "/libvirt/schemas/storagepool.rng", |
81 | 72 | xml, error); |
82 | 73 | return GVIR_CONFIG_STORAGE_POOL(object); |
83 | 74 | } |
75 | ||
76 | void gvir_config_storage_pool_set_pool_type(GVirConfigStoragePool *pool, | |
77 | GVirConfigStoragePoolType type) | |
78 | { | |
79 | g_return_if_fail(GVIR_CONFIG_IS_STORAGE_POOL(pool)); | |
80 | ||
81 | gvir_config_object_set_attribute_with_type(GVIR_CONFIG_OBJECT(pool), | |
82 | "type", | |
83 | GVIR_CONFIG_TYPE_STORAGE_POOL_TYPE, | |
84 | type, | |
85 | NULL); | |
86 | } | |
87 | ||
88 | void gvir_config_storage_pool_set_name(GVirConfigStoragePool *pool, | |
89 | const char *name) | |
90 | { | |
91 | g_return_if_fail(GVIR_CONFIG_IS_STORAGE_POOL(pool)); | |
92 | ||
93 | gvir_config_object_set_node_content(GVIR_CONFIG_OBJECT(pool), | |
94 | "name", name); | |
95 | } | |
96 | ||
97 | void gvir_config_storage_pool_set_uuid(GVirConfigStoragePool *pool, | |
98 | const char *uuid) | |
99 | { | |
100 | g_return_if_fail(GVIR_CONFIG_IS_STORAGE_POOL(pool)); | |
101 | ||
102 | gvir_config_object_set_node_content(GVIR_CONFIG_OBJECT(pool), | |
103 | "uuid", uuid); | |
104 | } | |
105 | ||
106 | void gvir_config_storage_pool_set_capacity(GVirConfigStoragePool *pool, | |
107 | guint64 capacity) | |
108 | { | |
109 | g_return_if_fail(GVIR_CONFIG_IS_STORAGE_POOL(pool)); | |
110 | ||
111 | gvir_config_object_set_node_content_uint64(GVIR_CONFIG_OBJECT(pool), | |
112 | "capacity", capacity); | |
113 | } | |
114 | ||
115 | void gvir_config_storage_pool_set_allocation(GVirConfigStoragePool *pool, | |
116 | guint64 allocation) | |
117 | { | |
118 | g_return_if_fail(GVIR_CONFIG_IS_STORAGE_POOL(pool)); | |
119 | ||
120 | gvir_config_object_set_node_content_uint64(GVIR_CONFIG_OBJECT(pool), | |
121 | "allocation", allocation); | |
122 | } | |
123 | ||
124 | void gvir_config_storage_pool_set_available(GVirConfigStoragePool *pool, | |
125 | guint64 available) | |
126 | { | |
127 | g_return_if_fail(GVIR_CONFIG_IS_STORAGE_POOL(pool)); | |
128 | ||
129 | gvir_config_object_set_node_content_uint64(GVIR_CONFIG_OBJECT(pool), | |
130 | "available", available); | |
131 | } | |
132 | ||
133 | void gvir_config_storage_pool_set_source(GVirConfigStoragePool *pool, | |
134 | GVirConfigStoragePoolSource *source) | |
135 | { | |
136 | g_return_if_fail(GVIR_CONFIG_IS_STORAGE_POOL(pool)); | |
137 | g_return_if_fail(GVIR_CONFIG_IS_STORAGE_POOL_SOURCE(source)); | |
138 | ||
139 | gvir_config_object_attach(GVIR_CONFIG_OBJECT(pool), | |
140 | GVIR_CONFIG_OBJECT(source)); | |
141 | } | |
142 | ||
143 | void gvir_config_storage_pool_set_target(GVirConfigStoragePool *pool, | |
144 | GVirConfigStoragePoolTarget *target) | |
145 | { | |
146 | g_return_if_fail(GVIR_CONFIG_IS_STORAGE_POOL(pool)); | |
147 | g_return_if_fail(GVIR_CONFIG_IS_STORAGE_POOL_TARGET(target)); | |
148 | ||
149 | gvir_config_object_attach(GVIR_CONFIG_OBJECT(pool), | |
150 | GVIR_CONFIG_OBJECT(target)); | |
151 | } |
0 | 0 | /* |
1 | * libvirt-gobject-storage-pool-config.c: libvirt gobject integration | |
1 | * libvirt-gconfig-storage-pool.h: libvirt storage pool configuration | |
2 | 2 | * |
3 | * Copyright (C) 2010 Red Hat | |
3 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
26 | 26 | #ifndef __LIBVIRT_GCONFIG_STORAGE_POOL_H__ |
27 | 27 | #define __LIBVIRT_GCONFIG_STORAGE_POOL_H__ |
28 | 28 | |
29 | #include <libvirt-gconfig/libvirt-gconfig-storage-pool-source.h> | |
30 | #include <libvirt-gconfig/libvirt-gconfig-storage-pool-target.h> | |
31 | ||
29 | 32 | G_BEGIN_DECLS |
30 | 33 | |
31 | #define GVIR_TYPE_CONFIG_STORAGE_POOL (gvir_config_storage_pool_get_type ()) | |
32 | #define GVIR_CONFIG_STORAGE_POOL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_TYPE_CONFIG_STORAGE_POOL, GVirConfigStoragePool)) | |
33 | #define GVIR_CONFIG_STORAGE_POOL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_TYPE_CONFIG_STORAGE_POOL, GVirConfigStoragePoolClass)) | |
34 | #define GVIR_IS_CONFIG_STORAGE_POOL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_TYPE_CONFIG_STORAGE_POOL)) | |
35 | #define GVIR_IS_CONFIG_STORAGE_POOL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_TYPE_CONFIG_STORAGE_POOL)) | |
36 | #define GVIR_CONFIG_STORAGE_POOL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_TYPE_CONFIG_STORAGE_POOL, GVirConfigStoragePoolClass)) | |
34 | #define GVIR_CONFIG_TYPE_STORAGE_POOL (gvir_config_storage_pool_get_type ()) | |
35 | #define GVIR_CONFIG_STORAGE_POOL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_STORAGE_POOL, GVirConfigStoragePool)) | |
36 | #define GVIR_CONFIG_STORAGE_POOL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_STORAGE_POOL, GVirConfigStoragePoolClass)) | |
37 | #define GVIR_CONFIG_IS_STORAGE_POOL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_STORAGE_POOL)) | |
38 | #define GVIR_CONFIG_IS_STORAGE_POOL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_STORAGE_POOL)) | |
39 | #define GVIR_CONFIG_STORAGE_POOL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_STORAGE_POOL, GVirConfigStoragePoolClass)) | |
37 | 40 | |
38 | 41 | typedef struct _GVirConfigStoragePool GVirConfigStoragePool; |
39 | 42 | typedef struct _GVirConfigStoragePoolPrivate GVirConfigStoragePoolPrivate; |
55 | 58 | gpointer padding[20]; |
56 | 59 | }; |
57 | 60 | |
61 | typedef enum { | |
62 | GVIR_CONFIG_STORAGE_POOL_TYPE_DIR, | |
63 | GVIR_CONFIG_STORAGE_POOL_TYPE_FS, | |
64 | GVIR_CONFIG_STORAGE_POOL_TYPE_NETFS, | |
65 | GVIR_CONFIG_STORAGE_POOL_TYPE_LOGICAL, | |
66 | GVIR_CONFIG_STORAGE_POOL_TYPE_DISK, | |
67 | GVIR_CONFIG_STORAGE_POOL_TYPE_ISCSI, | |
68 | GVIR_CONFIG_STORAGE_POOL_TYPE_SCSI, | |
69 | GVIR_CONFIG_STORAGE_POOL_TYPE_MPATH | |
70 | } GVirConfigStoragePoolType; | |
58 | 71 | |
59 | 72 | GType gvir_config_storage_pool_get_type(void); |
60 | 73 | |
62 | 75 | GVirConfigStoragePool *gvir_config_storage_pool_new_from_xml(const gchar *xml, |
63 | 76 | GError **error); |
64 | 77 | |
78 | void gvir_config_storage_pool_set_allocation(GVirConfigStoragePool *pool, | |
79 | guint64 allocation); | |
80 | void gvir_config_storage_pool_set_available(GVirConfigStoragePool *pool, | |
81 | guint64 available); | |
82 | void gvir_config_storage_pool_set_capacity(GVirConfigStoragePool *pool, | |
83 | guint64 capacity); | |
84 | void gvir_config_storage_pool_set_name(GVirConfigStoragePool *pool, | |
85 | const char *name); | |
86 | void gvir_config_storage_pool_set_pool_type(GVirConfigStoragePool *pool, | |
87 | GVirConfigStoragePoolType type); | |
88 | void gvir_config_storage_pool_set_source(GVirConfigStoragePool *pool, | |
89 | GVirConfigStoragePoolSource *source); | |
90 | void gvir_config_storage_pool_set_target(GVirConfigStoragePool *pool, | |
91 | GVirConfigStoragePoolTarget *target); | |
92 | void gvir_config_storage_pool_set_uuid(GVirConfigStoragePool *pool, | |
93 | const char *uuid); | |
94 | ||
65 | 95 | G_END_DECLS |
66 | 96 | |
67 | 97 | #endif /* __LIBVIRT_GCONFIG_STORAGE_POOL_H__ */ |
0 | /* | |
1 | * libvirt-gconfig-storage-vol-backing-store.c: libvirt storage vol backing store configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Christophe Fergeau <cfergeau@redhat.com> | |
20 | */ | |
21 | ||
22 | #include <config.h> | |
23 | ||
24 | #include "libvirt-gconfig/libvirt-gconfig.h" | |
25 | #include "libvirt-gconfig/libvirt-gconfig-private.h" | |
26 | ||
27 | ||
28 | #define GVIR_CONFIG_STORAGE_VOL_BACKING_STORE_GET_PRIVATE(obj) \ | |
29 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_STORAGE_VOL_BACKING_STORE, GVirConfigStorageVolBackingStorePrivate)) | |
30 | ||
31 | struct _GVirConfigStorageVolBackingStorePrivate | |
32 | { | |
33 | gboolean unused; | |
34 | }; | |
35 | ||
36 | G_DEFINE_TYPE(GVirConfigStorageVolBackingStore, gvir_config_storage_vol_backing_store, GVIR_CONFIG_TYPE_OBJECT); | |
37 | ||
38 | ||
39 | static void gvir_config_storage_vol_backing_store_class_init(GVirConfigStorageVolBackingStoreClass *klass) | |
40 | { | |
41 | g_type_class_add_private(klass, sizeof(GVirConfigStorageVolBackingStorePrivate)); | |
42 | } | |
43 | ||
44 | ||
45 | static void gvir_config_storage_vol_backing_store_init(GVirConfigStorageVolBackingStore *backing_store) | |
46 | { | |
47 | g_debug("Init GVirConfigStorageVolBackingStore=%p", backing_store); | |
48 | ||
49 | backing_store->priv = GVIR_CONFIG_STORAGE_VOL_BACKING_STORE_GET_PRIVATE(backing_store); | |
50 | } | |
51 | ||
52 | ||
53 | GVirConfigStorageVolBackingStore *gvir_config_storage_vol_backing_store_new(void) | |
54 | { | |
55 | GVirConfigObject *object; | |
56 | ||
57 | object = gvir_config_object_new(GVIR_CONFIG_TYPE_STORAGE_VOL_BACKING_STORE, | |
58 | "backingStore", NULL); | |
59 | return GVIR_CONFIG_STORAGE_VOL_BACKING_STORE(object); | |
60 | } | |
61 | ||
62 | GVirConfigStorageVolBackingStore *gvir_config_storage_vol_backing_store_new_from_xml(const gchar *xml, | |
63 | GError **error) | |
64 | { | |
65 | GVirConfigObject *object; | |
66 | ||
67 | object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_STORAGE_VOL_BACKING_STORE, | |
68 | "backingStore", NULL, | |
69 | xml, error); | |
70 | return GVIR_CONFIG_STORAGE_VOL_BACKING_STORE(object); | |
71 | } | |
72 | ||
73 | void gvir_config_storage_vol_backing_store_set_format(GVirConfigStorageVolBackingStore *backing_store, | |
74 | const char *format) | |
75 | { | |
76 | GVirConfigObject *node; | |
77 | ||
78 | g_return_if_fail(GVIR_CONFIG_IS_STORAGE_VOL_BACKING_STORE(backing_store)); | |
79 | ||
80 | node = gvir_config_object_replace_child(GVIR_CONFIG_OBJECT(backing_store), "format"); | |
81 | g_return_if_fail(GVIR_CONFIG_IS_OBJECT(node)); | |
82 | gvir_config_object_set_attribute(node, "type", format, NULL); | |
83 | g_object_unref(G_OBJECT(node)); | |
84 | } | |
85 | ||
86 | void gvir_config_storage_vol_backing_store_set_path(GVirConfigStorageVolBackingStore *backing_store, | |
87 | const char *path) | |
88 | { | |
89 | g_return_if_fail(GVIR_CONFIG_IS_STORAGE_VOL_BACKING_STORE(backing_store)); | |
90 | ||
91 | gvir_config_object_set_node_content(GVIR_CONFIG_OBJECT(backing_store), | |
92 | "path", path); | |
93 | } |
0 | /* | |
1 | * libvirt-gconfig-storage-vol-backing-store.c: libvirt storage volume backing store configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Christophe Fergeau <cfergeau@redhat.com> | |
20 | */ | |
21 | ||
22 | #if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) | |
23 | #error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." | |
24 | #endif | |
25 | ||
26 | #ifndef __LIBVIRT_GCONFIG_STORAGE_VOL_BACKING_STORE_H__ | |
27 | #define __LIBVIRT_GCONFIG_STORAGE_VOL_BACKING_STORE_H__ | |
28 | ||
29 | G_BEGIN_DECLS | |
30 | ||
31 | #define GVIR_CONFIG_TYPE_STORAGE_VOL_BACKING_STORE (gvir_config_storage_vol_backing_store_get_type ()) | |
32 | #define GVIR_CONFIG_STORAGE_VOL_BACKING_STORE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_STORAGE_VOL_BACKING_STORE, GVirConfigStorageVolBackingStore)) | |
33 | #define GVIR_CONFIG_STORAGE_VOL_BACKING_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_STORAGE_VOL_BACKING_STORE, GVirConfigStorageVolBackingStoreClass)) | |
34 | #define GVIR_CONFIG_IS_STORAGE_VOL_BACKING_STORE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_STORAGE_VOL_BACKING_STORE)) | |
35 | #define GVIR_CONFIG_IS_STORAGE_VOL_BACKING_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_STORAGE_VOL_BACKING_STORE)) | |
36 | #define GVIR_CONFIG_STORAGE_VOL_BACKING_STORE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_STORAGE_VOL_BACKING_STORE, GVirConfigStorageVolBackingStoreClass)) | |
37 | ||
38 | typedef struct _GVirConfigStorageVolBackingStore GVirConfigStorageVolBackingStore; | |
39 | typedef struct _GVirConfigStorageVolBackingStorePrivate GVirConfigStorageVolBackingStorePrivate; | |
40 | typedef struct _GVirConfigStorageVolBackingStoreClass GVirConfigStorageVolBackingStoreClass; | |
41 | ||
42 | struct _GVirConfigStorageVolBackingStore | |
43 | { | |
44 | GVirConfigObject parent; | |
45 | ||
46 | GVirConfigStorageVolBackingStorePrivate *priv; | |
47 | ||
48 | /* Do not add fields to this struct */ | |
49 | }; | |
50 | ||
51 | struct _GVirConfigStorageVolBackingStoreClass | |
52 | { | |
53 | GVirConfigObjectClass parent_class; | |
54 | ||
55 | gpointer padding[20]; | |
56 | }; | |
57 | ||
58 | ||
59 | GType gvir_config_storage_vol_backing_store_get_type(void); | |
60 | ||
61 | GVirConfigStorageVolBackingStore *gvir_config_storage_vol_backing_store_new(void); | |
62 | GVirConfigStorageVolBackingStore *gvir_config_storage_vol_backing_store_new_from_xml(const gchar *xml, | |
63 | GError **error); | |
64 | void gvir_config_storage_vol_backing_store_set_format(GVirConfigStorageVolBackingStore *backing_store, | |
65 | const char *format); | |
66 | void gvir_config_storage_vol_backing_store_set_path(GVirConfigStorageVolBackingStore *backing_store, | |
67 | const char *path); | |
68 | ||
69 | G_END_DECLS | |
70 | ||
71 | #endif /* __LIBVIRT_GCONFIG_STORAGE_VOL_BACKING_STORE_H__ */ |
0 | /* | |
1 | * libvirt-gconfig-storage-vol-target.c: libvirt storage vol target configuration | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Christophe Fergeau <cfergeau@redhat.com> | |
20 | */ | |
21 | ||
22 | #include <config.h> | |
23 | ||
24 | #include "libvirt-gconfig/libvirt-gconfig.h" | |
25 | #include "libvirt-gconfig/libvirt-gconfig-private.h" | |
26 | ||
27 | ||
28 | #define GVIR_CONFIG_STORAGE_VOL_TARGET_GET_PRIVATE(obj) \ | |
29 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_STORAGE_VOL_TARGET, GVirConfigStorageVolTargetPrivate)) | |
30 | ||
31 | struct _GVirConfigStorageVolTargetPrivate | |
32 | { | |
33 | gboolean unused; | |
34 | }; | |
35 | ||
36 | G_DEFINE_TYPE(GVirConfigStorageVolTarget, gvir_config_storage_vol_target, GVIR_CONFIG_TYPE_OBJECT); | |
37 | ||
38 | ||
39 | static void gvir_config_storage_vol_target_class_init(GVirConfigStorageVolTargetClass *klass) | |
40 | { | |
41 | g_type_class_add_private(klass, sizeof(GVirConfigStorageVolTargetPrivate)); | |
42 | } | |
43 | ||
44 | ||
45 | static void gvir_config_storage_vol_target_init(GVirConfigStorageVolTarget *target) | |
46 | { | |
47 | g_debug("Init GVirConfigStorageVolTarget=%p", target); | |
48 | ||
49 | target->priv = GVIR_CONFIG_STORAGE_VOL_TARGET_GET_PRIVATE(target); | |
50 | } | |
51 | ||
52 | ||
53 | GVirConfigStorageVolTarget *gvir_config_storage_vol_target_new(void) | |
54 | { | |
55 | GVirConfigObject *object; | |
56 | ||
57 | object = gvir_config_object_new(GVIR_CONFIG_TYPE_STORAGE_VOL_TARGET, | |
58 | "target", NULL); | |
59 | return GVIR_CONFIG_STORAGE_VOL_TARGET(object); | |
60 | } | |
61 | ||
62 | GVirConfigStorageVolTarget *gvir_config_storage_vol_target_new_from_xml(const gchar *xml, | |
63 | GError **error) | |
64 | { | |
65 | GVirConfigObject *object; | |
66 | ||
67 | object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_STORAGE_VOL_TARGET, | |
68 | "target", NULL, | |
69 | xml, error); | |
70 | return GVIR_CONFIG_STORAGE_VOL_TARGET(object); | |
71 | } | |
72 | ||
73 | void gvir_config_storage_vol_target_set_format(GVirConfigStorageVolTarget *target, | |
74 | const char *format) | |
75 | { | |
76 | GVirConfigObject *node; | |
77 | ||
78 | g_return_if_fail(GVIR_CONFIG_IS_STORAGE_VOL_TARGET(target)); | |
79 | ||
80 | node = gvir_config_object_replace_child(GVIR_CONFIG_OBJECT(target), "format"); | |
81 | g_return_if_fail(GVIR_CONFIG_IS_OBJECT(node)); | |
82 | gvir_config_object_set_attribute(node, "type", format, NULL); | |
83 | g_object_unref(G_OBJECT(node)); | |
84 | } | |
85 | ||
86 | void gvir_config_storage_vol_target_set_permissions(GVirConfigStorageVolTarget *target, | |
87 | GVirConfigStoragePermissions *perms) | |
88 | { | |
89 | g_return_if_fail(GVIR_CONFIG_IS_STORAGE_VOL_TARGET(target)); | |
90 | g_return_if_fail(GVIR_CONFIG_IS_STORAGE_PERMISSIONS(perms)); | |
91 | ||
92 | gvir_config_object_attach(GVIR_CONFIG_OBJECT(target), | |
93 | GVIR_CONFIG_OBJECT(perms)); | |
94 | } |
0 | /* | |
1 | * libvirt-gconfig-storage-vol-target.c: libvirt storage volume target configuration | |
2 | * | |
3 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Christophe Fergeau <cfergeau@redhat.com> | |
20 | */ | |
21 | ||
22 | #if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) | |
23 | #error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." | |
24 | #endif | |
25 | ||
26 | #ifndef __LIBVIRT_GCONFIG_STORAGE_VOL_TARGET_H__ | |
27 | #define __LIBVIRT_GCONFIG_STORAGE_VOL_TARGET_H__ | |
28 | ||
29 | G_BEGIN_DECLS | |
30 | ||
31 | #define GVIR_CONFIG_TYPE_STORAGE_VOL_TARGET (gvir_config_storage_vol_target_get_type ()) | |
32 | #define GVIR_CONFIG_STORAGE_VOL_TARGET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_STORAGE_VOL_TARGET, GVirConfigStorageVolTarget)) | |
33 | #define GVIR_CONFIG_STORAGE_VOL_TARGET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_STORAGE_VOL_TARGET, GVirConfigStorageVolTargetClass)) | |
34 | #define GVIR_CONFIG_IS_STORAGE_VOL_TARGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_STORAGE_VOL_TARGET)) | |
35 | #define GVIR_CONFIG_IS_STORAGE_VOL_TARGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_STORAGE_VOL_TARGET)) | |
36 | #define GVIR_CONFIG_STORAGE_VOL_TARGET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_STORAGE_VOL_TARGET, GVirConfigStorageVolTargetClass)) | |
37 | ||
38 | typedef struct _GVirConfigStorageVolTarget GVirConfigStorageVolTarget; | |
39 | typedef struct _GVirConfigStorageVolTargetPrivate GVirConfigStorageVolTargetPrivate; | |
40 | typedef struct _GVirConfigStorageVolTargetClass GVirConfigStorageVolTargetClass; | |
41 | ||
42 | struct _GVirConfigStorageVolTarget | |
43 | { | |
44 | GVirConfigObject parent; | |
45 | ||
46 | GVirConfigStorageVolTargetPrivate *priv; | |
47 | ||
48 | /* Do not add fields to this struct */ | |
49 | }; | |
50 | ||
51 | struct _GVirConfigStorageVolTargetClass | |
52 | { | |
53 | GVirConfigObjectClass parent_class; | |
54 | ||
55 | gpointer padding[20]; | |
56 | }; | |
57 | ||
58 | ||
59 | GType gvir_config_storage_vol_target_get_type(void); | |
60 | ||
61 | GVirConfigStorageVolTarget *gvir_config_storage_vol_target_new(void); | |
62 | GVirConfigStorageVolTarget *gvir_config_storage_vol_target_new_from_xml(const gchar *xml, | |
63 | GError **error); | |
64 | ||
65 | void gvir_config_storage_vol_target_set_format(GVirConfigStorageVolTarget *target, | |
66 | const char *format); | |
67 | void gvir_config_storage_vol_target_set_permissions(GVirConfigStorageVolTarget *target, | |
68 | GVirConfigStoragePermissions *perms); | |
69 | ||
70 | G_END_DECLS | |
71 | ||
72 | #endif /* __LIBVIRT_GCONFIG_STORAGE_VOL_TARGET_H__ */ |
0 | 0 | /* |
1 | * libvirt-gobject-config_storage_vol.c: libvirt glib integration | |
1 | * libvirt-gconfig-storage-vol.c: libvirt storage vol configuration | |
2 | 2 | * |
3 | 3 | * Copyright (C) 2008 Daniel P. Berrange |
4 | * Copyright (C) 2010 Red Hat | |
4 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
5 | 5 | * |
6 | 6 | * This library is free software; you can redistribute it and/or |
7 | 7 | * modify it under the terms of the GNU Lesser General Public |
22 | 22 | |
23 | 23 | #include <config.h> |
24 | 24 | |
25 | #include <string.h> | |
25 | #include "libvirt-gconfig/libvirt-gconfig.h" | |
26 | #include "libvirt-gconfig/libvirt-gconfig-private.h" | |
26 | 27 | |
27 | #include "libvirt-gconfig/libvirt-gconfig.h" | |
28 | ||
29 | extern gboolean debugFlag; | |
30 | ||
31 | #define DEBUG(fmt, ...) do { if (G_UNLIKELY(debugFlag)) g_debug(fmt, ## __VA_ARGS__); } while (0) | |
32 | 28 | |
33 | 29 | #define GVIR_CONFIG_STORAGE_VOL_GET_PRIVATE(obj) \ |
34 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_TYPE_CONFIG_STORAGE_VOL, GVirConfigStorageVolPrivate)) | |
30 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_STORAGE_VOL, GVirConfigStorageVolPrivate)) | |
35 | 31 | |
36 | 32 | struct _GVirConfigStorageVolPrivate |
37 | 33 | { |
38 | 34 | gboolean unused; |
39 | 35 | }; |
40 | 36 | |
41 | G_DEFINE_TYPE(GVirConfigStorageVol, gvir_config_storage_vol, GVIR_TYPE_CONFIG_OBJECT); | |
37 | G_DEFINE_TYPE(GVirConfigStorageVol, gvir_config_storage_vol, GVIR_CONFIG_TYPE_OBJECT); | |
42 | 38 | |
43 | 39 | |
44 | 40 | static void gvir_config_storage_vol_class_init(GVirConfigStorageVolClass *klass) |
45 | 41 | { |
46 | ||
47 | 42 | g_type_class_add_private(klass, sizeof(GVirConfigStorageVolPrivate)); |
48 | 43 | } |
49 | 44 | |
50 | 45 | |
51 | 46 | static void gvir_config_storage_vol_init(GVirConfigStorageVol *conn) |
52 | 47 | { |
53 | GVirConfigStorageVolPrivate *priv; | |
48 | g_debug("Init GVirConfigStorageVol=%p", conn); | |
54 | 49 | |
55 | DEBUG("Init GVirConfigStorageVol=%p", conn); | |
56 | ||
57 | priv = conn->priv = GVIR_CONFIG_STORAGE_VOL_GET_PRIVATE(conn); | |
58 | ||
59 | memset(priv, 0, sizeof(*priv)); | |
50 | conn->priv = GVIR_CONFIG_STORAGE_VOL_GET_PRIVATE(conn); | |
60 | 51 | } |
61 | 52 | |
62 | 53 | |
64 | 55 | { |
65 | 56 | GVirConfigObject *object; |
66 | 57 | |
67 | object = gvir_config_object_new(GVIR_TYPE_CONFIG_STORAGE_VOL, | |
58 | object = gvir_config_object_new(GVIR_CONFIG_TYPE_STORAGE_VOL, | |
68 | 59 | "volume", |
69 | 60 | DATADIR "/libvirt/schemas/storage_vol.rng"); |
70 | 61 | return GVIR_CONFIG_STORAGE_VOL(object); |
75 | 66 | { |
76 | 67 | GVirConfigObject *object; |
77 | 68 | |
78 | object = gvir_config_object_new_from_xml(GVIR_TYPE_CONFIG_STORAGE_VOL, | |
69 | object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_STORAGE_VOL, | |
79 | 70 | "volume", |
80 | 71 | DATADIR "/libvirt/schemas/storage_vol.rng", |
81 | 72 | xml, error); |
82 | 73 | return GVIR_CONFIG_STORAGE_VOL(object); |
83 | 74 | } |
75 | ||
76 | void gvir_config_storage_vol_set_name(GVirConfigStorageVol *vol, | |
77 | const char *name) | |
78 | { | |
79 | g_return_if_fail(GVIR_CONFIG_IS_STORAGE_VOL(vol)); | |
80 | ||
81 | gvir_config_object_set_node_content(GVIR_CONFIG_OBJECT(vol), | |
82 | "name", name); | |
83 | } | |
84 | ||
85 | void gvir_config_storage_vol_set_capacity(GVirConfigStorageVol *vol, | |
86 | guint64 capacity) | |
87 | { | |
88 | g_return_if_fail(GVIR_CONFIG_IS_STORAGE_VOL(vol)); | |
89 | ||
90 | gvir_config_object_set_node_content_uint64(GVIR_CONFIG_OBJECT(vol), | |
91 | "capacity", capacity); | |
92 | } | |
93 | ||
94 | void gvir_config_storage_vol_set_allocation(GVirConfigStorageVol *vol, | |
95 | guint64 allocation) | |
96 | { | |
97 | g_return_if_fail(GVIR_CONFIG_IS_STORAGE_VOL(vol)); | |
98 | ||
99 | gvir_config_object_set_node_content_uint64(GVIR_CONFIG_OBJECT(vol), | |
100 | "allocation", allocation); | |
101 | } | |
102 | ||
103 | void gvir_config_storage_vol_set_target(GVirConfigStorageVol *vol, | |
104 | GVirConfigStorageVolTarget *target) | |
105 | { | |
106 | g_return_if_fail(GVIR_CONFIG_IS_STORAGE_VOL(vol)); | |
107 | g_return_if_fail(GVIR_CONFIG_IS_STORAGE_VOL_TARGET(target)); | |
108 | ||
109 | gvir_config_object_attach(GVIR_CONFIG_OBJECT(vol), | |
110 | GVIR_CONFIG_OBJECT(target)); | |
111 | } | |
112 | ||
113 | void gvir_config_storage_vol_set_backing_store(GVirConfigStorageVol *vol, | |
114 | GVirConfigStorageVolBackingStore *backing_store) | |
115 | { | |
116 | g_return_if_fail(GVIR_CONFIG_IS_STORAGE_VOL(vol)); | |
117 | g_return_if_fail(GVIR_CONFIG_IS_STORAGE_VOL_BACKING_STORE(backing_store)); | |
118 | ||
119 | gvir_config_object_attach(GVIR_CONFIG_OBJECT(vol), | |
120 | GVIR_CONFIG_OBJECT(backing_store)); | |
121 | } |
0 | 0 | /* |
1 | * libvirt-gobject-storage_vol-config.c: libvirt gobject integration | |
1 | * libvirt-gconfig-storage-vol.c: libvirt storage volume configuration | |
2 | 2 | * |
3 | * Copyright (C) 2010 Red Hat | |
3 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
26 | 26 | #ifndef __LIBVIRT_GCONFIG_STORAGE_VOL_H__ |
27 | 27 | #define __LIBVIRT_GCONFIG_STORAGE_VOL_H__ |
28 | 28 | |
29 | #include <libvirt-gconfig/libvirt-gconfig-storage-vol-backing-store.h> | |
30 | #include <libvirt-gconfig/libvirt-gconfig-storage-vol-target.h> | |
31 | ||
29 | 32 | G_BEGIN_DECLS |
30 | 33 | |
31 | #define GVIR_TYPE_CONFIG_STORAGE_VOL (gvir_config_storage_vol_get_type ()) | |
32 | #define GVIR_CONFIG_STORAGE_VOL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_TYPE_CONFIG_STORAGE_VOL, GVirConfigStorageVol)) | |
33 | #define GVIR_CONFIG_STORAGE_VOL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_TYPE_CONFIG_STORAGE_VOL, GVirConfigStorageVolClass)) | |
34 | #define GVIR_IS_CONFIG_STORAGE_VOL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_TYPE_CONFIG_STORAGE_VOL)) | |
35 | #define GVIR_IS_CONFIG_STORAGE_VOL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_TYPE_CONFIG_STORAGE_VOL)) | |
36 | #define GVIR_CONFIG_STORAGE_VOL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_TYPE_CONFIG_STORAGE_VOL, GVirConfigStorageVolClass)) | |
34 | #define GVIR_CONFIG_TYPE_STORAGE_VOL (gvir_config_storage_vol_get_type ()) | |
35 | #define GVIR_CONFIG_STORAGE_VOL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_STORAGE_VOL, GVirConfigStorageVol)) | |
36 | #define GVIR_CONFIG_STORAGE_VOL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_STORAGE_VOL, GVirConfigStorageVolClass)) | |
37 | #define GVIR_CONFIG_IS_STORAGE_VOL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_STORAGE_VOL)) | |
38 | #define GVIR_CONFIG_IS_STORAGE_VOL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_STORAGE_VOL)) | |
39 | #define GVIR_CONFIG_STORAGE_VOL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_STORAGE_VOL, GVirConfigStorageVolClass)) | |
37 | 40 | |
38 | 41 | typedef struct _GVirConfigStorageVol GVirConfigStorageVol; |
39 | 42 | typedef struct _GVirConfigStorageVolPrivate GVirConfigStorageVolPrivate; |
62 | 65 | GVirConfigStorageVol *gvir_config_storage_vol_new_from_xml(const gchar *xml, |
63 | 66 | GError **error); |
64 | 67 | |
68 | void gvir_config_storage_vol_set_allocation(GVirConfigStorageVol *vol, | |
69 | guint64 allocation); | |
70 | void gvir_config_storage_vol_set_backing_store(GVirConfigStorageVol *vol, | |
71 | GVirConfigStorageVolBackingStore *backing_store); | |
72 | void gvir_config_storage_vol_set_capacity(GVirConfigStorageVol *vol, | |
73 | guint64 capacity); | |
74 | void gvir_config_storage_vol_set_name(GVirConfigStorageVol *vol, | |
75 | const char *name); | |
76 | void gvir_config_storage_vol_set_target(GVirConfigStorageVol *vol, | |
77 | GVirConfigStorageVolTarget *target); | |
78 | ||
65 | 79 | G_END_DECLS |
66 | 80 | |
67 | 81 | #endif /* __LIBVIRT_GCONFIG_STORAGE_VOL_H__ */ |
0 | /* | |
1 | * libvirt-gconfig-xml-doc.c: libvirt XML document management | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Christophe Fergeau <cfergeau@gmail.com> | |
20 | */ | |
21 | ||
22 | #include <config.h> | |
23 | ||
24 | #include <string.h> | |
25 | ||
26 | #include "libvirt-gconfig/libvirt-gconfig.h" | |
27 | #include "libvirt-gconfig/libvirt-gconfig-xml-doc.h" | |
28 | ||
29 | extern gboolean debugFlag; | |
30 | ||
31 | #define GVIR_CONFIG_XML_DOC_GET_PRIVATE(obj) \ | |
32 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_XML_DOC, GVirConfigXmlDocPrivate)) | |
33 | ||
34 | struct _GVirConfigXmlDocPrivate | |
35 | { | |
36 | xmlDocPtr doc; | |
37 | }; | |
38 | ||
39 | G_DEFINE_TYPE(GVirConfigXmlDoc, gvir_config_xml_doc, G_TYPE_OBJECT); | |
40 | ||
41 | enum { | |
42 | PROP_0, | |
43 | PROP_DOC | |
44 | }; | |
45 | ||
46 | static void gvir_config_xml_doc_get_property(GObject *object, | |
47 | guint prop_id, | |
48 | GValue *value, | |
49 | GParamSpec *pspec) | |
50 | { | |
51 | GVirConfigXmlDoc *xml_doc = GVIR_CONFIG_XML_DOC(object); | |
52 | ||
53 | switch (prop_id) { | |
54 | case PROP_DOC: | |
55 | g_value_set_pointer(value, xml_doc->priv->doc); | |
56 | break; | |
57 | default: | |
58 | G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); | |
59 | } | |
60 | } | |
61 | ||
62 | static void gvir_config_xml_doc_set_property(GObject *object, | |
63 | guint prop_id, | |
64 | const GValue *value, | |
65 | GParamSpec *pspec) | |
66 | { | |
67 | GVirConfigXmlDoc *doc = GVIR_CONFIG_XML_DOC(object); | |
68 | ||
69 | switch (prop_id) { | |
70 | case PROP_DOC: | |
71 | doc->priv->doc = g_value_get_pointer(value); | |
72 | break; | |
73 | default: | |
74 | G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); | |
75 | } | |
76 | } | |
77 | ||
78 | static void gvir_config_xml_doc_finalize(GObject *object) | |
79 | { | |
80 | GVirConfigXmlDoc *doc = GVIR_CONFIG_XML_DOC(object); | |
81 | GVirConfigXmlDocPrivate *priv = doc->priv; | |
82 | ||
83 | g_debug("Finalize GVirConfigXmlDoc=%p", doc); | |
84 | ||
85 | xmlFreeDoc(priv->doc); | |
86 | ||
87 | G_OBJECT_CLASS(gvir_config_xml_doc_parent_class)->finalize(object); | |
88 | } | |
89 | ||
90 | static void gvir_config_xml_doc_class_init(GVirConfigXmlDocClass *klass) | |
91 | { | |
92 | GObjectClass *object_class = G_OBJECT_CLASS(klass); | |
93 | ||
94 | g_type_class_add_private(klass, sizeof(GVirConfigXmlDocPrivate)); | |
95 | ||
96 | object_class->finalize = gvir_config_xml_doc_finalize; | |
97 | object_class->get_property = gvir_config_xml_doc_get_property; | |
98 | object_class->set_property = gvir_config_xml_doc_set_property; | |
99 | ||
100 | g_object_class_install_property(object_class, | |
101 | PROP_DOC, | |
102 | g_param_spec_pointer("doc", | |
103 | "XML Doc", | |
104 | "The XML doc this config object corresponds to", | |
105 | G_PARAM_READWRITE | | |
106 | G_PARAM_CONSTRUCT_ONLY | | |
107 | G_PARAM_STATIC_STRINGS)); | |
108 | } | |
109 | ||
110 | ||
111 | static void gvir_config_xml_doc_init(GVirConfigXmlDoc *xml_doc) | |
112 | { | |
113 | GVirConfigXmlDocPrivate *priv; | |
114 | ||
115 | g_debug("Init GVirConfigXmlDoc=%p", xml_doc); | |
116 | ||
117 | priv = xml_doc->priv = GVIR_CONFIG_XML_DOC_GET_PRIVATE(xml_doc); | |
118 | ||
119 | memset(priv, 0, sizeof(*priv)); | |
120 | } | |
121 | ||
122 | ||
123 | GVirConfigXmlDoc *gvir_config_xml_doc_new(xmlDocPtr doc) | |
124 | { | |
125 | if (doc == NULL) { | |
126 | doc = xmlNewDoc((xmlChar *)"1.0"); | |
127 | } | |
128 | return GVIR_CONFIG_XML_DOC(g_object_new(GVIR_CONFIG_TYPE_XML_DOC, | |
129 | "doc", doc, | |
130 | NULL)); | |
131 | } |
0 | /* | |
1 | * libvirt-gobject-xml-doc.h: libvirt XML document management | |
2 | * | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | * | |
5 | * This library is free software; you can redistribute it and/or | |
6 | * modify it under the terms of the GNU Lesser General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2.1 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This library is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 | * Lesser General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU Lesser General Public | |
16 | * License along with this library; if not, write to the Free Software | |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
18 | * | |
19 | * Author: Christophe Fergeau <cfergeau@gmail.com> | |
20 | */ | |
21 | ||
22 | #if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) | |
23 | #error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." | |
24 | #endif | |
25 | ||
26 | #ifndef __LIBVIRT_GCONFIG_XML_DOC_H__ | |
27 | #define __LIBVIRT_GCONFIG_XML_DOC_H__ | |
28 | ||
29 | G_BEGIN_DECLS | |
30 | ||
31 | #define GVIR_CONFIG_TYPE_XML_DOC (gvir_config_xml_doc_get_type ()) | |
32 | #define GVIR_CONFIG_XML_DOC(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_XML_DOC, GVirConfigXmlDoc)) | |
33 | #define GVIR_CONFIG_XML_DOC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_XML_DOC, GVirConfigXmlDocClass)) | |
34 | #define GVIR_CONFIG_IS_XML_DOC(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_XML_DOC)) | |
35 | #define GVIR_CONFIG_IS_XML_DOC_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_XML_DOC)) | |
36 | #define GVIR_CONFIG_XML_DOC_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_XML_DOC, GVirConfigXmlDocClass)) | |
37 | ||
38 | typedef struct _GVirConfigXmlDoc GVirConfigXmlDoc; | |
39 | typedef struct _GVirConfigXmlDocPrivate GVirConfigXmlDocPrivate; | |
40 | typedef struct _GVirConfigXmlDocClass GVirConfigXmlDocClass; | |
41 | ||
42 | struct _GVirConfigXmlDoc | |
43 | { | |
44 | GObject parent; | |
45 | ||
46 | GVirConfigXmlDocPrivate *priv; | |
47 | ||
48 | /* Do not add fields to this struct */ | |
49 | }; | |
50 | ||
51 | struct _GVirConfigXmlDocClass | |
52 | { | |
53 | GObjectClass parent_class; | |
54 | ||
55 | gpointer padding[20]; | |
56 | }; | |
57 | ||
58 | ||
59 | GType gvir_config_xml_doc_get_type(void); | |
60 | ||
61 | GVirConfigXmlDoc *gvir_config_xml_doc_new(xmlDocPtr doc); | |
62 | ||
63 | G_END_DECLS | |
64 | ||
65 | #endif /* __LIBVIRT_GCONFIG_XML_DOC_H__ */ |
0 | 0 | /* |
1 | 1 | * libvirt-gconfig.h: libvirt gconfig integration |
2 | 2 | * |
3 | * Copyright (C) 2010 Red Hat | |
3 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
25 | 25 | #include <glib-object.h> |
26 | 26 | #include <libxml/tree.h> |
27 | 27 | |
28 | #include <libvirt-gconfig/libvirt-gconfig-helpers.h> | |
28 | #include <libvirt-gconfig/libvirt-gconfig-main.h> | |
29 | 29 | #include <libvirt-gconfig/libvirt-gconfig-object.h> |
30 | 30 | #include <libvirt-gconfig/libvirt-gconfig-capabilities.h> |
31 | 31 | #include <libvirt-gconfig/libvirt-gconfig-domain.h> |
32 | #include <libvirt-gconfig/libvirt-gconfig-domain-chardev.h> | |
33 | #include <libvirt-gconfig/libvirt-gconfig-domain-chardev-source.h> | |
34 | #include <libvirt-gconfig/libvirt-gconfig-domain-chardev-source-pty.h> | |
35 | #include <libvirt-gconfig/libvirt-gconfig-domain-channel.h> | |
36 | #include <libvirt-gconfig/libvirt-gconfig-domain-clock.h> | |
37 | #include <libvirt-gconfig/libvirt-gconfig-domain-console.h> | |
38 | #include <libvirt-gconfig/libvirt-gconfig-domain-device.h> | |
39 | #include <libvirt-gconfig/libvirt-gconfig-domain-disk.h> | |
40 | #include <libvirt-gconfig/libvirt-gconfig-domain-filesys.h> | |
41 | #include <libvirt-gconfig/libvirt-gconfig-domain-graphics.h> | |
42 | #include <libvirt-gconfig/libvirt-gconfig-domain-graphics-sdl.h> | |
43 | #include <libvirt-gconfig/libvirt-gconfig-domain-graphics-spice.h> | |
44 | #include <libvirt-gconfig/libvirt-gconfig-domain-graphics-vnc.h> | |
45 | #include <libvirt-gconfig/libvirt-gconfig-domain-input.h> | |
46 | #include <libvirt-gconfig/libvirt-gconfig-domain-interface.h> | |
47 | #include <libvirt-gconfig/libvirt-gconfig-domain-interface-bridge.h> | |
48 | #include <libvirt-gconfig/libvirt-gconfig-domain-interface-network.h> | |
49 | #include <libvirt-gconfig/libvirt-gconfig-domain-interface-user.h> | |
50 | #include <libvirt-gconfig/libvirt-gconfig-domain-memballoon.h> | |
51 | #include <libvirt-gconfig/libvirt-gconfig-domain-os.h> | |
52 | #include <libvirt-gconfig/libvirt-gconfig-domain-parallel.h> | |
53 | #include <libvirt-gconfig/libvirt-gconfig-domain-seclabel.h> | |
54 | #include <libvirt-gconfig/libvirt-gconfig-domain-serial.h> | |
32 | 55 | #include <libvirt-gconfig/libvirt-gconfig-domain-snapshot.h> |
56 | #include <libvirt-gconfig/libvirt-gconfig-domain-sound.h> | |
57 | #include <libvirt-gconfig/libvirt-gconfig-domain-timer.h> | |
58 | #include <libvirt-gconfig/libvirt-gconfig-domain-video.h> | |
59 | #include <libvirt-gconfig/libvirt-gconfig-enum-types.h> | |
60 | #include <libvirt-gconfig/libvirt-gconfig-helpers.h> | |
33 | 61 | #include <libvirt-gconfig/libvirt-gconfig-interface.h> |
34 | 62 | #include <libvirt-gconfig/libvirt-gconfig-network.h> |
63 | #include <libvirt-gconfig/libvirt-gconfig-network-filter.h> | |
35 | 64 | #include <libvirt-gconfig/libvirt-gconfig-node-device.h> |
36 | #include <libvirt-gconfig/libvirt-gconfig-network-filter.h> | |
37 | 65 | #include <libvirt-gconfig/libvirt-gconfig-secret.h> |
66 | #include <libvirt-gconfig/libvirt-gconfig-storage-permissions.h> | |
38 | 67 | #include <libvirt-gconfig/libvirt-gconfig-storage-pool.h> |
68 | #include <libvirt-gconfig/libvirt-gconfig-storage-pool-source.h> | |
69 | #include <libvirt-gconfig/libvirt-gconfig-storage-pool-target.h> | |
39 | 70 | #include <libvirt-gconfig/libvirt-gconfig-storage-vol.h> |
71 | #include <libvirt-gconfig/libvirt-gconfig-storage-vol-backing-store.h> | |
72 | #include <libvirt-gconfig/libvirt-gconfig-storage-vol-target.h> | |
40 | 73 | |
41 | 74 | #endif /* __LIBVIRT_GCONFIG_H__ */ |
0 | LIBVIRT_GOBJECT_0.0.1 { | |
0 | LIBVIRT_GCONFIG_0.0.4 { | |
1 | 1 | global: |
2 | gvir_config_init_check; | |
3 | gvir_config_init; | |
4 | ||
2 | 5 | gvir_config_capabilities_get_type; |
3 | 6 | gvir_config_capabilities_new; |
4 | 7 | gvir_config_capabilities_new_from_xml; |
5 | 8 | |
9 | gvir_config_domain_add_device; | |
6 | 10 | gvir_config_domain_get_type; |
11 | gvir_config_domain_lifecycle_action_get_type; | |
12 | gvir_config_domain_lifecycle_event_get_type; | |
7 | 13 | gvir_config_domain_new; |
8 | 14 | gvir_config_domain_new_from_xml; |
15 | gvir_config_domain_set_clock; | |
16 | gvir_config_domain_get_devices; | |
17 | gvir_config_domain_set_devices; | |
9 | 18 | gvir_config_domain_get_features; |
10 | 19 | gvir_config_domain_set_features; |
20 | gvir_config_domain_set_lifecycle; | |
11 | 21 | gvir_config_domain_get_memory; |
12 | 22 | gvir_config_domain_set_memory; |
13 | 23 | gvir_config_domain_get_name; |
14 | 24 | gvir_config_domain_set_name; |
25 | gvir_config_domain_set_os; | |
26 | gvir_config_domain_set_seclabel; | |
27 | gvir_config_domain_get_vcpus; | |
28 | gvir_config_domain_set_vcpus; | |
29 | gvir_config_domain_set_virt_type; | |
30 | gvir_config_domain_virt_type_get_type; | |
31 | ||
32 | gvir_config_domain_channel_get_type; | |
33 | gvir_config_domain_channel_new; | |
34 | gvir_config_domain_channel_new_from_xml; | |
35 | gvir_config_domain_channel_set_target_type; | |
36 | gvir_config_domain_channel_set_target_name; | |
37 | gvir_config_domain_channel_target_type_get_type; | |
38 | ||
39 | gvir_config_domain_chardev_get_type; | |
40 | gvir_config_domain_chardev_set_source; | |
41 | ||
42 | gvir_config_domain_chardev_source_get_type; | |
43 | ||
44 | gvir_config_domain_chardev_source_pty_get_type; | |
45 | gvir_config_domain_chardev_source_pty_new; | |
46 | gvir_config_domain_chardev_source_pty_new_from_xml; | |
47 | gvir_config_domain_source_pty_set_path; | |
48 | ||
49 | gvir_config_domain_clock_get_type; | |
50 | gvir_config_domain_clock_offset_get_type; | |
51 | gvir_config_domain_clock_new; | |
52 | gvir_config_domain_clock_new_from_xml; | |
53 | gvir_config_domain_clock_set_offset; | |
54 | gvir_config_domain_clock_set_timezone; | |
55 | gvir_config_domain_clock_set_variable_offset; | |
56 | ||
57 | gvir_config_domain_console_get_type; | |
58 | gvir_config_domain_console_new; | |
59 | gvir_config_domain_console_new_from_xml; | |
60 | gvir_config_domain_console_set_target_type; | |
61 | gvir_config_domain_console_target_type_get_type; | |
62 | ||
63 | gvir_config_domain_device_get_type; | |
64 | ||
65 | gvir_config_domain_disk_get_type; | |
66 | gvir_config_domain_disk_bus_get_type; | |
67 | gvir_config_domain_disk_guest_device_type_get_type; | |
68 | gvir_config_domain_disk_snapshot_type_get_type; | |
69 | gvir_config_domain_disk_type_get_type; | |
70 | gvir_config_domain_disk_new; | |
71 | gvir_config_domain_disk_new_from_xml; | |
72 | gvir_config_domain_disk_get_driver_name; | |
73 | gvir_config_domain_disk_set_driver_name; | |
74 | gvir_config_domain_disk_get_driver_type; | |
75 | gvir_config_domain_disk_set_driver_type; | |
76 | gvir_config_domain_disk_get_guest_device_type; | |
77 | gvir_config_domain_disk_set_guest_device_type; | |
78 | gvir_config_domain_disk_get_snapshot_type; | |
79 | gvir_config_domain_disk_set_snapshot_type; | |
80 | gvir_config_domain_disk_get_source; | |
81 | gvir_config_domain_disk_set_source; | |
82 | gvir_config_domain_disk_get_target_bus; | |
83 | gvir_config_domain_disk_set_target_bus; | |
84 | gvir_config_domain_disk_get_target_dev; | |
85 | gvir_config_domain_disk_set_target_dev; | |
86 | gvir_config_domain_disk_get_disk_type; | |
87 | gvir_config_domain_disk_set_type; | |
88 | ||
89 | gvir_config_domain_filesys_get_type; | |
90 | gvir_config_domain_filesys_type_get_type; | |
91 | gvir_config_domain_filesys_access_type_get_type; | |
92 | gvir_config_domain_filesys_driver_type_get_type; | |
93 | gvir_config_domain_filesys_new; | |
94 | gvir_config_domain_filesys_new_from_xml; | |
95 | gvir_config_domain_filesys_set_access_type; | |
96 | gvir_config_domain_filesys_set_driver_type; | |
97 | gvir_config_domain_filesys_set_readonly; | |
98 | gvir_config_domain_filesys_set_source; | |
99 | gvir_config_domain_filesys_set_target; | |
100 | gvir_config_domain_filesys_set_type; | |
101 | ||
102 | gvir_config_domain_graphics_get_type; | |
103 | ||
104 | gvir_config_domain_graphics_sdl_get_type; | |
105 | gvir_config_domain_graphics_sdl_new; | |
106 | gvir_config_domain_graphics_sdl_new_from_xml; | |
107 | gvir_config_domain_graphics_sdl_set_display; | |
108 | gvir_config_domain_graphics_sdl_set_xauthority; | |
109 | ||
110 | gvir_config_domain_graphics_spice_get_type; | |
111 | gvir_config_domain_graphics_spice_new; | |
112 | gvir_config_domain_graphics_spice_new_from_xml; | |
113 | gvir_config_domain_graphics_spice_set_autoport; | |
114 | gvir_config_domain_graphics_spice_set_port; | |
115 | gvir_config_domain_graphics_spice_set_tls_port; | |
116 | gvir_config_domain_graphics_spice_set_password; | |
117 | ||
118 | gvir_config_domain_graphics_vnc_get_type; | |
119 | gvir_config_domain_graphics_vnc_new; | |
120 | gvir_config_domain_graphics_vnc_new_from_xml; | |
121 | gvir_config_domain_graphics_vnc_set_autoport; | |
122 | gvir_config_domain_graphics_vnc_set_password; | |
123 | gvir_config_domain_graphics_vnc_set_port; | |
124 | ||
125 | gvir_config_domain_input_bus_get_type; | |
126 | gvir_config_domain_input_get_type; | |
127 | gvir_config_domain_input_device_type_get_type; | |
128 | gvir_config_domain_input_new; | |
129 | gvir_config_domain_input_new_from_xml; | |
130 | gvir_config_domain_input_set_device_type; | |
131 | gvir_config_domain_input_set_bus; | |
132 | ||
133 | gvir_config_domain_interface_get_type; | |
134 | gvir_config_domain_interface_link_state_get_type; | |
135 | gvir_config_domain_interface_set_ifname; | |
136 | gvir_config_domain_interface_set_link_state; | |
137 | gvir_config_domain_interface_set_mac; | |
138 | gvir_config_domain_interface_set_model; | |
139 | ||
140 | gvir_config_domain_interface_bridge_get_type; | |
141 | gvir_config_domain_interface_bridge_new; | |
142 | gvir_config_domain_interface_bridge_new_from_xml; | |
143 | gvir_config_domain_interface_bridge_set_source; | |
144 | ||
145 | gvir_config_domain_interface_network_get_type; | |
146 | gvir_config_domain_interface_network_new; | |
147 | gvir_config_domain_interface_network_new_from_xml; | |
148 | gvir_config_domain_interface_network_set_source; | |
149 | ||
150 | gvir_config_domain_interface_user_get_type; | |
151 | gvir_config_domain_interface_user_new; | |
152 | gvir_config_domain_interface_user_new_from_xml; | |
153 | ||
154 | gvir_config_domain_memballoon_get_type; | |
155 | gvir_config_domain_memballoon_model_get_type; | |
156 | gvir_config_domain_memballoon_new; | |
157 | gvir_config_domain_memballoon_new_from_xml; | |
158 | gvir_config_domain_memballoon_set_model; | |
159 | ||
160 | gvir_config_domain_os_get_type; | |
161 | gvir_config_domain_os_boot_device_get_type; | |
162 | gvir_config_domain_os_sm_bios_mode_get_type; | |
163 | gvir_config_domain_os_new; | |
164 | gvir_config_domain_os_new_from_xml; | |
165 | gvir_config_domain_os_set_os_type; | |
166 | gvir_config_domain_os_set_boot_devices; | |
167 | gvir_config_domain_os_set_cmdline; | |
168 | gvir_config_domain_os_set_init; | |
169 | gvir_config_domain_os_set_kernel; | |
170 | gvir_config_domain_os_set_loader; | |
171 | gvir_config_domain_os_set_ramdisk; | |
172 | gvir_config_domain_os_set_smbios_mode; | |
173 | gvir_config_domain_os_enable_boot_menu; | |
174 | gvir_config_domain_os_bios_enable_serial; | |
175 | gvir_config_domain_os_set_machine; | |
176 | gvir_config_domain_os_set_arch; | |
177 | gvir_config_domain_os_type_get_type; | |
178 | ||
179 | gvir_config_domain_parallel_get_type; | |
180 | gvir_config_domain_parallel_new; | |
181 | gvir_config_domain_parallel_new_from_xml; | |
182 | ||
183 | gvir_config_domain_seclabel_get_type; | |
184 | gvir_config_domain_seclabel_type_get_type; | |
185 | gvir_config_domain_seclabel_new; | |
186 | gvir_config_domain_seclabel_new_from_xml; | |
187 | gvir_config_domain_seclabel_set_type; | |
188 | gvir_config_domain_seclabel_set_model; | |
189 | gvir_config_domain_seclabel_set_baselabel; | |
190 | gvir_config_domain_seclabel_set_label; | |
191 | ||
192 | gvir_config_domain_serial_get_type; | |
193 | gvir_config_domain_serial_new; | |
194 | gvir_config_domain_serial_new_from_xml; | |
15 | 195 | |
16 | 196 | gvir_config_domain_snapshot_get_type; |
17 | 197 | gvir_config_domain_snapshot_new; |
18 | 198 | gvir_config_domain_snapshot_new_from_xml; |
199 | ||
200 | gvir_config_domain_sound_get_type; | |
201 | gvir_config_domain_sound_model_get_type; | |
202 | gvir_config_domain_sound_new; | |
203 | gvir_config_domain_sound_new_from_xml; | |
204 | gvir_config_domain_sound_set_model; | |
205 | ||
206 | gvir_config_domain_timer_get_type; | |
207 | gvir_config_domain_timer_new; | |
208 | gvir_config_domain_timer_new_from_xml; | |
209 | ||
210 | gvir_config_domain_video_get_type; | |
211 | gvir_config_domain_video_model_get_type; | |
212 | gvir_config_domain_video_new; | |
213 | gvir_config_domain_video_new_from_xml; | |
214 | gvir_config_domain_video_set_model; | |
215 | gvir_config_domain_video_set_vram; | |
216 | gvir_config_domain_video_set_heads; | |
19 | 217 | |
20 | 218 | gvir_config_interface_get_type; |
21 | 219 | gvir_config_interface_new; |
37 | 235 | gvir_config_object_error_quark; |
38 | 236 | gvir_config_object_new; |
39 | 237 | gvir_config_object_get_schema; |
40 | gvir_config_object_get_xml_node; | |
41 | 238 | gvir_config_object_to_xml; |
42 | 239 | gvir_config_object_validate; |
240 | gvir_config_object_attach; | |
241 | gvir_config_object_set_attribute; | |
242 | gvir_config_object_set_attribute_with_type; | |
43 | 243 | |
44 | 244 | gvir_config_secret_get_type; |
45 | 245 | gvir_config_secret_new; |
46 | 246 | gvir_config_secret_new_from_xml; |
47 | 247 | |
248 | gvir_config_storage_permissions_get_type; | |
249 | gvir_config_storage_permissions_new; | |
250 | gvir_config_storage_permissions_new_from_xml; | |
251 | gvir_config_storage_permissions_set_group; | |
252 | gvir_config_storage_permissions_set_label; | |
253 | gvir_config_storage_permissions_set_mode; | |
254 | gvir_config_storage_permissions_set_owner; | |
255 | ||
48 | 256 | gvir_config_storage_pool_get_type; |
257 | gvir_config_storage_pool_type_get_type; | |
49 | 258 | gvir_config_storage_pool_new; |
50 | 259 | gvir_config_storage_pool_new_from_xml; |
260 | gvir_config_storage_pool_set_allocation; | |
261 | gvir_config_storage_pool_set_available; | |
262 | gvir_config_storage_pool_set_capacity; | |
263 | gvir_config_storage_pool_set_name; | |
264 | gvir_config_storage_pool_set_pool_type; | |
265 | gvir_config_storage_pool_set_source; | |
266 | gvir_config_storage_pool_set_target; | |
267 | gvir_config_storage_pool_set_uuid; | |
268 | ||
269 | gvir_config_storage_pool_source_get_type; | |
270 | gvir_config_storage_pool_source_new; | |
271 | gvir_config_storage_pool_source_new_from_xml; | |
272 | gvir_config_storage_pool_source_set_adapter; | |
273 | gvir_config_storage_pool_source_set_device_path; | |
274 | gvir_config_storage_pool_source_set_directory; | |
275 | gvir_config_storage_pool_source_set_format; | |
276 | gvir_config_storage_pool_source_set_host; | |
277 | gvir_config_storage_pool_source_set_name; | |
278 | gvir_config_storage_pool_source_set_product; | |
279 | gvir_config_storage_pool_source_set_vendor; | |
280 | ||
281 | gvir_config_storage_pool_target_get_type; | |
282 | gvir_config_storage_pool_target_new; | |
283 | gvir_config_storage_pool_target_new_from_xml; | |
284 | gvir_config_storage_pool_target_set_path; | |
285 | gvir_config_storage_pool_target_set_permissions; | |
51 | 286 | |
52 | 287 | gvir_config_storage_vol_get_type; |
53 | 288 | gvir_config_storage_vol_new; |
54 | 289 | gvir_config_storage_vol_new_from_xml; |
55 | ||
290 | gvir_config_storage_vol_set_allocation; | |
291 | gvir_config_storage_vol_set_backing_store; | |
292 | gvir_config_storage_vol_set_capacity; | |
293 | gvir_config_storage_vol_set_name; | |
294 | gvir_config_storage_vol_set_target; | |
295 | ||
296 | gvir_config_storage_vol_backing_store_get_type; | |
297 | gvir_config_storage_vol_backing_store_new; | |
298 | gvir_config_storage_vol_backing_store_new_from_xml; | |
299 | gvir_config_storage_vol_backing_store_set_format; | |
300 | gvir_config_storage_vol_backing_store_set_path; | |
301 | ||
302 | gvir_config_storage_vol_target_get_type; | |
303 | gvir_config_storage_vol_target_new; | |
304 | gvir_config_storage_vol_target_new_from_xml; | |
305 | gvir_config_storage_vol_target_set_format; | |
306 | gvir_config_storage_vol_target_set_permissions; | |
307 | ||
308 | gvir_config_xml_doc_get_type; | |
309 | gvir_config_xml_doc_new; | |
56 | 310 | local: |
57 | 311 | *; |
58 | 312 | }; |
133 | 133 | GIO2_LIBS = @GIO2_LIBS@ |
134 | 134 | GLIB2_CFLAGS = @GLIB2_CFLAGS@ |
135 | 135 | GLIB2_LIBS = @GLIB2_LIBS@ |
136 | GLIB_MKENUMS = @GLIB_MKENUMS@ | |
136 | 137 | GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ |
137 | 138 | GOBJECT2_LIBS = @GOBJECT2_LIBS@ |
138 | 139 | GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@ |
141 | 142 | GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ |
142 | 143 | GTHREAD2_LIBS = @GTHREAD2_LIBS@ |
143 | 144 | GTKDOC_CHECK = @GTKDOC_CHECK@ |
145 | GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ | |
146 | GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ | |
144 | 147 | GTKDOC_MKPDF = @GTKDOC_MKPDF@ |
145 | 148 | GTKDOC_REBASE = @GTKDOC_REBASE@ |
146 | 149 | G_IR_COMPILER = @G_IR_COMPILER@ |
0 | 0 | /* |
1 | 1 | * test-domain-create.c: test libvirt-gconfig domain creation |
2 | 2 | * |
3 | * Copyright (C) 2011 Red Hat | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * Permission is hereby granted, free of charge, to any person obtaining a |
6 | 6 | * copy of this software and associated documentation files (the |
24 | 24 | * Author: Christophe Fergeau <cfergeau@redhat.com> |
25 | 25 | */ |
26 | 26 | |
27 | #include <config.h> | |
28 | ||
27 | 29 | #include <string.h> |
28 | 30 | #include <libvirt-gconfig/libvirt-gconfig.h> |
29 | 31 | |
30 | 32 | const char *features[] = { "foo", "bar", "baz", NULL }; |
31 | 33 | |
32 | int main(void) | |
34 | int main(int argc, char **argv) | |
33 | 35 | { |
34 | 36 | GVirConfigDomain *domain; |
35 | 37 | char *name; |
37 | 39 | unsigned int i; |
38 | 40 | char *xml; |
39 | 41 | |
40 | g_type_init(); | |
42 | gvir_config_init(&argc, &argv); | |
41 | 43 | |
42 | 44 | domain = gvir_config_domain_new(); |
43 | 45 | g_assert(domain != NULL); |
48 | 50 | g_free(name); |
49 | 51 | |
50 | 52 | gvir_config_domain_set_memory(domain, 1234); |
53 | gvir_config_domain_set_vcpus(domain, 3); | |
51 | 54 | g_assert(gvir_config_domain_get_memory(domain) == 1234); |
52 | 55 | |
53 | 56 | gvir_config_domain_set_features(domain, (const GStrv)features); |
58 | 61 | } |
59 | 62 | g_strfreev(feat); |
60 | 63 | |
64 | gvir_config_domain_set_lifecycle(domain, | |
65 | GVIR_CONFIG_DOMAIN_LIFECYCLE_ON_POWEROFF, | |
66 | GVIR_CONFIG_DOMAIN_LIFECYCLE_RESTART); | |
67 | ||
68 | /* clock node */ | |
69 | GVirConfigDomainClock *klock; | |
70 | ||
71 | klock = gvir_config_domain_clock_new(); | |
72 | gvir_config_domain_clock_set_offset(klock, GVIR_CONFIG_DOMAIN_CLOCK_UTC); | |
73 | gvir_config_domain_set_clock(domain, klock); | |
74 | g_object_unref(G_OBJECT(klock)); | |
75 | ||
76 | /* os node */ | |
77 | GVirConfigDomainOs *os; | |
78 | GList *devices = NULL; | |
79 | ||
80 | os = gvir_config_domain_os_new(); | |
81 | gvir_config_domain_os_set_os_type(os, GVIR_CONFIG_DOMAIN_OS_TYPE_HVM); | |
82 | gvir_config_domain_os_set_arch(os, "x86_64"); | |
83 | devices = g_list_append(devices, | |
84 | GINT_TO_POINTER(GVIR_CONFIG_DOMAIN_OS_BOOT_DEVICE_CDROM)); | |
85 | devices = g_list_append(devices, | |
86 | GINT_TO_POINTER(GVIR_CONFIG_DOMAIN_OS_BOOT_DEVICE_NETWORK)); | |
87 | gvir_config_domain_os_set_boot_devices(os, devices); | |
88 | g_list_free(devices); | |
89 | devices = NULL; | |
90 | gvir_config_domain_set_os(domain, os); | |
91 | g_object_unref(G_OBJECT(os)); | |
92 | ||
93 | /* disk node */ | |
94 | GVirConfigDomainDisk *disk; | |
95 | ||
96 | disk = gvir_config_domain_disk_new(); | |
97 | gvir_config_domain_disk_set_type(disk, GVIR_CONFIG_DOMAIN_DISK_FILE); | |
98 | gvir_config_domain_disk_set_guest_device_type(disk, GVIR_CONFIG_DOMAIN_DISK_GUEST_DEVICE_DISK); | |
99 | gvir_config_domain_disk_set_source(disk, "/tmp/foo/bar"); | |
100 | gvir_config_domain_disk_set_driver_name(disk, "foo"); | |
101 | gvir_config_domain_disk_set_driver_type(disk, "bar"); | |
102 | gvir_config_domain_disk_set_driver_name(disk, "qemu"); | |
103 | gvir_config_domain_disk_set_driver_type(disk, "qcow2"); | |
104 | gvir_config_domain_disk_set_target_bus(disk, GVIR_CONFIG_DOMAIN_DISK_BUS_IDE); | |
105 | gvir_config_domain_disk_set_target_dev(disk, "hda"); | |
106 | devices = g_list_append(devices, GVIR_CONFIG_DOMAIN_DEVICE(disk)); | |
107 | ||
108 | ||
109 | /* network interfaces node */ | |
110 | GVirConfigDomainInterface *interface; | |
111 | ||
112 | interface = GVIR_CONFIG_DOMAIN_INTERFACE(gvir_config_domain_interface_network_new()); | |
113 | gvir_config_domain_interface_network_set_source(GVIR_CONFIG_DOMAIN_INTERFACE_NETWORK(interface), | |
114 | "default"); | |
115 | devices = g_list_append(devices, GVIR_CONFIG_DOMAIN_DEVICE(interface)); | |
116 | ||
117 | interface = GVIR_CONFIG_DOMAIN_INTERFACE(gvir_config_domain_interface_user_new()); | |
118 | gvir_config_domain_interface_set_ifname(interface, "eth0"); | |
119 | gvir_config_domain_interface_set_link_state(interface, | |
120 | GVIR_CONFIG_DOMAIN_INTERFACE_LINK_STATE_UP); | |
121 | gvir_config_domain_interface_set_mac(interface, "00:11:22:33:44:55"); | |
122 | gvir_config_domain_interface_set_model(interface, "foo"); | |
123 | devices = g_list_append(devices, GVIR_CONFIG_DOMAIN_DEVICE(interface)); | |
124 | ||
125 | ||
126 | /* input node */ | |
127 | GVirConfigDomainInput *input; | |
128 | ||
129 | input = gvir_config_domain_input_new(); | |
130 | gvir_config_domain_input_set_device_type(input, | |
131 | GVIR_CONFIG_DOMAIN_INPUT_DEVICE_TABLET); | |
132 | gvir_config_domain_input_set_bus(input, GVIR_CONFIG_DOMAIN_INPUT_BUS_USB); | |
133 | devices = g_list_append(devices, GVIR_CONFIG_DOMAIN_DEVICE(input)); | |
134 | ||
135 | /* graphics node */ | |
136 | GVirConfigDomainGraphicsSpice *graphics; | |
137 | ||
138 | graphics = gvir_config_domain_graphics_spice_new(); | |
139 | gvir_config_domain_graphics_spice_set_port(graphics, 1234); | |
140 | devices = g_list_append(devices, GVIR_CONFIG_DOMAIN_DEVICE(graphics)); | |
141 | ||
142 | /* video node */ | |
143 | GVirConfigDomainVideo *video; | |
144 | ||
145 | video = gvir_config_domain_video_new(); | |
146 | gvir_config_domain_video_set_model(video, | |
147 | GVIR_CONFIG_DOMAIN_VIDEO_MODEL_QXL); | |
148 | devices = g_list_append(devices, GVIR_CONFIG_DOMAIN_DEVICE(video)); | |
149 | ||
150 | /* sound node */ | |
151 | GVirConfigDomainSound *sound; | |
152 | ||
153 | sound = gvir_config_domain_sound_new(); | |
154 | gvir_config_domain_sound_set_model(sound, | |
155 | GVIR_CONFIG_DOMAIN_SOUND_MODEL_ES1370); | |
156 | devices = g_list_append(devices, GVIR_CONFIG_DOMAIN_DEVICE(sound)); | |
157 | ||
158 | /* console node */ | |
159 | GVirConfigDomainConsole *console; | |
160 | GVirConfigDomainChardevSourcePty *pty; | |
161 | ||
162 | console = gvir_config_domain_console_new(); | |
163 | pty = gvir_config_domain_chardev_source_pty_new(); | |
164 | gvir_config_domain_chardev_set_source(GVIR_CONFIG_DOMAIN_CHARDEV(console), | |
165 | GVIR_CONFIG_DOMAIN_CHARDEV_SOURCE(pty)); | |
166 | g_object_unref(G_OBJECT(pty)); | |
167 | devices = g_list_append(devices, GVIR_CONFIG_DOMAIN_DEVICE(console)); | |
168 | ||
169 | gvir_config_domain_set_devices(domain, devices); | |
170 | g_list_foreach(devices, (GFunc)g_object_unref, NULL); | |
171 | g_list_free(devices); | |
172 | devices = NULL; | |
173 | ||
174 | ||
61 | 175 | xml = gvir_config_object_to_xml(GVIR_CONFIG_OBJECT(domain)); |
62 | g_print("%s\n", xml); | |
176 | g_print("%s\n\n", xml); | |
63 | 177 | g_free(xml); |
64 | 178 | g_object_unref(G_OBJECT(domain)); |
65 | 179 | |
180 | ||
181 | /* storage pool */ | |
182 | GVirConfigStoragePool *pool; | |
183 | GVirConfigStoragePoolSource *pool_source; | |
184 | GVirConfigStoragePoolTarget *pool_target; | |
185 | GVirConfigStoragePermissions *perms; | |
186 | ||
187 | pool = gvir_config_storage_pool_new(); | |
188 | gvir_config_storage_pool_set_pool_type(pool, GVIR_CONFIG_STORAGE_POOL_TYPE_DIR); | |
189 | ||
190 | pool_source = gvir_config_storage_pool_source_new(); | |
191 | gvir_config_storage_pool_source_set_directory(pool_source, "/foo/bar"); | |
192 | gvir_config_storage_pool_set_source(pool, pool_source); | |
193 | g_object_unref(G_OBJECT(pool_source)); | |
194 | ||
195 | perms = gvir_config_storage_permissions_new(); | |
196 | gvir_config_storage_permissions_set_owner(perms, 1001); | |
197 | gvir_config_storage_permissions_set_group(perms, 1007); | |
198 | gvir_config_storage_permissions_set_mode(perms, 0744); | |
199 | gvir_config_storage_permissions_set_label(perms, "virt_image_t"); | |
200 | ||
201 | pool_target = gvir_config_storage_pool_target_new(); | |
202 | gvir_config_storage_pool_target_set_path(pool_target, "/dev/disk/by-path"); | |
203 | gvir_config_storage_pool_target_set_permissions(pool_target, perms); | |
204 | g_object_unref(G_OBJECT(perms)); | |
205 | gvir_config_storage_pool_set_target(pool, pool_target); | |
206 | g_object_unref(G_OBJECT(pool_target)); | |
207 | ||
208 | xml = gvir_config_object_to_xml(GVIR_CONFIG_OBJECT(pool)); | |
209 | g_print("%s\n\n", xml); | |
210 | g_free(xml); | |
211 | g_object_unref(G_OBJECT(pool)); | |
212 | ||
213 | ||
214 | /* storage volume */ | |
215 | GVirConfigStorageVol *vol; | |
216 | GVirConfigStorageVolTarget *vol_target; | |
217 | ||
218 | vol = gvir_config_storage_vol_new(); | |
219 | gvir_config_storage_vol_set_name(vol, "my-volume"); | |
220 | gvir_config_storage_vol_set_capacity(vol, 1000000); | |
221 | ||
222 | perms = gvir_config_storage_permissions_new(); | |
223 | gvir_config_storage_permissions_set_owner(perms, 1001); | |
224 | gvir_config_storage_permissions_set_group(perms, 1007); | |
225 | gvir_config_storage_permissions_set_mode(perms, 0744); | |
226 | gvir_config_storage_permissions_set_label(perms, "virt_image_t"); | |
227 | ||
228 | vol_target = gvir_config_storage_vol_target_new(); | |
229 | gvir_config_storage_vol_target_set_format(vol_target, "qcow2"); | |
230 | gvir_config_storage_vol_target_set_permissions(vol_target, perms); | |
231 | g_object_unref(G_OBJECT(perms)); | |
232 | gvir_config_storage_vol_set_target(vol, vol_target); | |
233 | g_object_unref(G_OBJECT(vol_target)); | |
234 | ||
235 | xml = gvir_config_object_to_xml(GVIR_CONFIG_OBJECT(vol)); | |
236 | g_print("%s\n\n", xml); | |
237 | g_free(xml); | |
238 | g_object_unref(G_OBJECT(vol)); | |
239 | ||
66 | 240 | return 0; |
67 | 241 | } |
0 | 0 | /* |
1 | 1 | * test-domain-create.c: test libvirt-gconfig domain parsing |
2 | 2 | * |
3 | * Copyright (C) 2011 Red Hat | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * Permission is hereby granted, free of charge, to any person obtaining a |
6 | 6 | * copy of this software and associated documentation files (the |
24 | 24 | * Author: Christophe Fergeau <cfergeau@redhat.com> |
25 | 25 | */ |
26 | 26 | |
27 | #include <config.h> | |
28 | ||
27 | 29 | #include <string.h> |
28 | 30 | #include <libvirt-gconfig/libvirt-gconfig.h> |
29 | 31 | |
36 | 38 | char *xml; |
37 | 39 | GError *error = NULL; |
38 | 40 | |
41 | gvir_config_init(&argc, &argv); | |
39 | 42 | if (argc != 2) { |
40 | 43 | g_print("Usage: %s filename\n", argv[0]); |
41 | 44 | g_print("Attempt to parse the libvirt XML definition from filename\n"); |
15 | 15 | libvirt-glib-main.c |
16 | 16 | libvirt_glib_1_0_la_CFLAGS = \ |
17 | 17 | -DLIBVIRT_GLIB_BUILD \ |
18 | -DG_LOG_DOMAIN="\"Libvirt.GLib\"" \ | |
18 | 19 | $(COVERAGE_CFLAGS) \ |
19 | 20 | -I$(top_srcdir) \ |
20 | 21 | $(LIBVIRT_CFLAGS) \ |
46 | 47 | --identifier-prefix=GVir \ |
47 | 48 | --symbol-prefix=gvir \ |
48 | 49 | --library=$(builddir)/libvirt-glib-1.0.la \ |
49 | --add-include-path=$(builddir) \ | |
50 | 50 | --output $@ \ |
51 | 51 | -I$(top_srcdir) \ |
52 | -I$(srcdir) \ | |
53 | --pkg=glib-2.0 \ | |
52 | --verbose \ | |
54 | 53 | --pkg=gthread-2.0 \ |
55 | 54 | --c-include="libvirt-glib/libvirt-glib.h" \ |
56 | 55 | --pkg-export=libvirt-glib-1.0 \ |
155 | 155 | GIO2_LIBS = @GIO2_LIBS@ |
156 | 156 | GLIB2_CFLAGS = @GLIB2_CFLAGS@ |
157 | 157 | GLIB2_LIBS = @GLIB2_LIBS@ |
158 | GLIB_MKENUMS = @GLIB_MKENUMS@ | |
158 | 159 | GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ |
159 | 160 | GOBJECT2_LIBS = @GOBJECT2_LIBS@ |
160 | 161 | GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@ |
163 | 164 | GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ |
164 | 165 | GTHREAD2_LIBS = @GTHREAD2_LIBS@ |
165 | 166 | GTKDOC_CHECK = @GTKDOC_CHECK@ |
167 | GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ | |
168 | GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ | |
166 | 169 | GTKDOC_MKPDF = @GTKDOC_MKPDF@ |
167 | 170 | GTKDOC_REBASE = @GTKDOC_REBASE@ |
168 | 171 | G_IR_COMPILER = @G_IR_COMPILER@ |
294 | 297 | |
295 | 298 | libvirt_glib_1_0_la_CFLAGS = \ |
296 | 299 | -DLIBVIRT_GLIB_BUILD \ |
300 | -DG_LOG_DOMAIN="\"Libvirt.GLib\"" \ | |
297 | 301 | $(COVERAGE_CFLAGS) \ |
298 | 302 | -I$(top_srcdir) \ |
299 | 303 | $(LIBVIRT_CFLAGS) \ |
731 | 735 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --identifier-prefix=GVir \ |
732 | 736 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --symbol-prefix=gvir \ |
733 | 737 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --library=$(builddir)/libvirt-glib-1.0.la \ |
734 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --add-include-path=$(builddir) \ | |
735 | 738 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --output $@ \ |
736 | 739 | @WITH_GOBJECT_INTROSPECTION_TRUE@ -I$(top_srcdir) \ |
737 | @WITH_GOBJECT_INTROSPECTION_TRUE@ -I$(srcdir) \ | |
738 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --pkg=glib-2.0 \ | |
740 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --verbose \ | |
739 | 741 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --pkg=gthread-2.0 \ |
740 | 742 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --c-include="libvirt-glib/libvirt-glib.h" \ |
741 | 743 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --pkg-export=libvirt-glib-1.0 \ |
1 | 1 | * libvirt-glib-error.c: libvirt glib integration |
2 | 2 | * |
3 | 3 | * Copyright (C) 2008 Daniel P. Berrange |
4 | * Copyright (C) 2010 Red Hat | |
4 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
5 | 5 | * |
6 | 6 | * This library is free software; you can redistribute it and/or |
7 | 7 | * modify it under the terms of the GNU Lesser General Public |
126 | 126 | return err; |
127 | 127 | } |
128 | 128 | |
129 | ||
130 | /** | |
131 | * gvir_set_error: (skip) | |
132 | * @error: pointer to error location | |
133 | * @domain: error domain | |
134 | * @code: error code | |
135 | * @format: printf()-style format for error message | |
136 | * @Varargs: parameters for message format | |
137 | * | |
138 | * If @error is NULL this does nothing. Otherwise it | |
139 | * creates a new #GError with the given @domain and @code, | |
140 | * and a message formatted with @format, and stores it | |
141 | * in @error. | |
142 | */ | |
143 | void gvir_set_error(GError **error, | |
144 | GQuark domain, | |
145 | gint code, | |
146 | const gchar *format, | |
147 | ...) | |
148 | { | |
149 | va_list args; | |
150 | gchar *message; | |
151 | ||
152 | if (!error) | |
153 | return; | |
154 | ||
155 | va_start(args, format); | |
156 | message = g_strdup_vprintf(format, args); | |
157 | va_end(args); | |
158 | ||
159 | *error = gvir_error_new_literal(domain, code, message); | |
160 | ||
161 | g_free(message); | |
162 | } | |
163 | ||
164 | ||
165 | /** | |
166 | * gvir_set_error_literal: (skip) | |
167 | * @error: pointer to error location | |
168 | * @domain: error domain | |
169 | * @code: error code | |
170 | * @message: error message | |
171 | * | |
172 | * If @error is NULL this does nothing. Otherwise it | |
173 | * creates a new #GError and stores it in @error; unlike | |
174 | * gvir_set_error(), @message is not a printf()-style | |
175 | * format string. Use this function if @message contains | |
176 | * text you don't have control over, that could include | |
177 | * printf() escape sequences. | |
178 | */ | |
179 | void gvir_set_error_literal(GError **error, | |
180 | GQuark domain, | |
181 | gint code, | |
182 | const gchar *message) | |
183 | { | |
184 | if (!error) | |
185 | return; | |
186 | ||
187 | *error = gvir_error_new_literal(domain, code, message); | |
188 | } | |
189 | ||
190 | ||
191 | /** | |
192 | * gvir_set_error_valist: (skip) | |
193 | * @error: pointer to error location | |
194 | * @domain: error domain | |
195 | * @code: error code | |
196 | * @format: printf()-style format for error message | |
197 | * @args: #va_list of parameters for the message format | |
198 | * | |
199 | * If @error is NULL this does nothing. Otherwise it | |
200 | * creates a new #GError with the given @domain and @code, | |
201 | * and a message formatted with @format, and stores it | |
202 | * in @error. | |
203 | */ | |
204 | void gvir_set_error_valist(GError **error, | |
205 | GQuark domain, | |
206 | gint code, | |
207 | const gchar *format, | |
208 | va_list args) | |
209 | { | |
210 | gchar *message; | |
211 | if (!error) | |
212 | return; | |
213 | ||
214 | message = g_strdup_vprintf(format, args); | |
215 | *error = gvir_error_new_literal(domain, code, message); | |
216 | ||
217 | g_free(message); | |
218 | } |
1 | 1 | * libvirt-glib-error.h: libvirt glib integration |
2 | 2 | * |
3 | 3 | * Copyright (C) 2008 Daniel P. Berrange |
4 | * Copyright (C) 2010 Red Hat | |
4 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
5 | 5 | * |
6 | 6 | * This library is free software; you can redistribute it and/or |
7 | 7 | * modify it under the terms of the GNU Lesser General Public |
41 | 41 | const gchar *format, |
42 | 42 | va_list args); |
43 | 43 | |
44 | void gvir_set_error(GError **error, | |
45 | GQuark domain, | |
46 | gint code, | |
47 | const gchar *format, | |
48 | ...); | |
49 | ||
50 | void gvir_set_error_literal(GError **error, | |
51 | GQuark domain, | |
52 | gint code, | |
53 | const gchar *message); | |
54 | ||
55 | void gvir_set_error_valist(GError **error, | |
56 | GQuark domain, | |
57 | gint code, | |
58 | const gchar *format, | |
59 | va_list args); | |
60 | ||
61 | ||
44 | 62 | G_END_DECLS |
45 | 63 | |
46 | 64 | #endif /* __LIBVIRT_GLIB_ERROR_H__ */ |
1 | 1 | * libvirt-glib-event.c: libvirt glib integration |
2 | 2 | * |
3 | 3 | * Copyright (C) 2008 Daniel P. Berrange |
4 | * Copyright (C) 2010 Red Hat | |
4 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
5 | 5 | * |
6 | 6 | * This library is free software; you can redistribute it and/or |
7 | 7 | * modify it under the terms of the GNU Lesser General Public |
30 | 30 | |
31 | 31 | #include "libvirt-glib/libvirt-glib.h" |
32 | 32 | |
33 | extern gboolean debugFlag; | |
34 | ||
35 | #define DEBUG(fmt, ...) do { if (G_UNLIKELY(debugFlag)) g_debug(fmt, ## __VA_ARGS__); } while (0) | |
36 | ||
37 | 33 | struct gvir_event_handle |
38 | 34 | { |
39 | 35 | int watch; |
82 | 78 | if (condition & G_IO_ERR) |
83 | 79 | events |= VIR_EVENT_HANDLE_ERROR; |
84 | 80 | |
85 | DEBUG("Dispatch handler %d %d %p\n", data->fd, events, data->opaque); | |
81 | g_debug("Dispatch handler %d %d %p\n", data->fd, events, data->opaque); | |
86 | 82 | |
87 | 83 | (data->cb)(data->watch, data->fd, events, data->opaque); |
88 | 84 | |
118 | 114 | data->channel = g_io_channel_unix_new(fd); |
119 | 115 | data->ff = ff; |
120 | 116 | |
121 | DEBUG("Add handle %d %d %p\n", data->fd, events, data->opaque); | |
117 | g_debug("Add handle %d %d %p\n", data->fd, events, data->opaque); | |
122 | 118 | |
123 | 119 | data->source = g_io_add_watch(data->channel, |
124 | 120 | cond, |
167 | 163 | |
168 | 164 | data = gvir_event_handle_find(watch, NULL); |
169 | 165 | if (!data) { |
170 | DEBUG("Update for missing handle watch %d", watch); | |
166 | g_debug("Update for missing handle watch %d", watch); | |
171 | 167 | goto cleanup; |
172 | 168 | } |
173 | 169 | |
226 | 222 | |
227 | 223 | data = gvir_event_handle_find(watch, &idx); |
228 | 224 | if (!data) { |
229 | DEBUG("Remove of missing watch %d", watch); | |
230 | goto cleanup; | |
231 | } | |
232 | ||
233 | DEBUG("Remove handle %d %d\n", watch, data->fd); | |
225 | g_debug("Remove of missing watch %d", watch); | |
226 | goto cleanup; | |
227 | } | |
228 | ||
229 | g_debug("Remove handle %d %d\n", watch, data->fd); | |
234 | 230 | |
235 | 231 | if (!data->source) |
236 | 232 | goto cleanup; |
252 | 248 | gvir_event_timeout_dispatch(void *opaque) |
253 | 249 | { |
254 | 250 | struct gvir_event_timeout *data = opaque; |
255 | DEBUG("Dispatch timeout %p %p %d %p\n", data, data->cb, data->timer, data->opaque); | |
251 | g_debug("Dispatch timeout %p %p %d %p\n", data, data->cb, data->timer, data->opaque); | |
256 | 252 | (data->cb)(data->timer, data->opaque); |
257 | 253 | |
258 | 254 | return TRUE; |
282 | 278 | |
283 | 279 | g_ptr_array_add(timeouts, data); |
284 | 280 | |
285 | DEBUG("Add timeout %p %d %p %p %d\n", data, interval, cb, opaque, data->timer); | |
281 | g_debug("Add timeout %p %d %p %p %d\n", data, interval, cb, opaque, data->timer); | |
286 | 282 | |
287 | 283 | ret = data->timer; |
288 | 284 | |
328 | 324 | |
329 | 325 | data = gvir_event_timeout_find(timer, NULL); |
330 | 326 | if (!data) { |
331 | DEBUG("Update of missing timer %d", timer); | |
332 | goto cleanup; | |
333 | } | |
334 | ||
335 | DEBUG("Update timeout %p %d %d\n", data, timer, interval); | |
327 | g_debug("Update of missing timer %d", timer); | |
328 | goto cleanup; | |
329 | } | |
330 | ||
331 | g_debug("Update timeout %p %d %d\n", data, timer, interval); | |
336 | 332 | |
337 | 333 | if (interval >= 0) { |
338 | 334 | if (data->source) |
378 | 374 | |
379 | 375 | data = gvir_event_timeout_find(timer, &idx); |
380 | 376 | if (!data) { |
381 | DEBUG("Remove of missing timer %d", timer); | |
382 | goto cleanup; | |
383 | } | |
384 | ||
385 | DEBUG("Remove timeout %p %d\n", data, timer); | |
377 | g_debug("Remove of missing timer %d", timer); | |
378 | goto cleanup; | |
379 | } | |
380 | ||
381 | g_debug("Remove timeout %p %d\n", data, timer); | |
386 | 382 | |
387 | 383 | if (!data->source) |
388 | 384 | goto cleanup; |
419 | 415 | |
420 | 416 | g_once(&once, event_register_once, NULL); |
421 | 417 | } |
422 |
1 | 1 | * libvirt-glib-event.h: libvirt glib integration |
2 | 2 | * |
3 | 3 | * Copyright (C) 2008 Daniel P. Berrange |
4 | * Copyright (C) 2010 Red Hat | |
4 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
5 | 5 | * |
6 | 6 | * This library is free software; you can redistribute it and/or |
7 | 7 | * modify it under the terms of the GNU Lesser General Public |
1 | 1 | * libvirt-glib-main.c: libvirt glib integration |
2 | 2 | * |
3 | 3 | * Copyright (C) 2008 Daniel P. Berrange |
4 | * Copyright (C) 2010 Red Hat | |
4 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
5 | 5 | * |
6 | 6 | * This library is free software; you can redistribute it and/or |
7 | 7 | * modify it under the terms of the GNU Lesser General Public |
23 | 23 | #include <config.h> |
24 | 24 | |
25 | 25 | #include <stdlib.h> |
26 | #include <stdio.h> | |
26 | 27 | #include <libvirt/virterror.h> |
27 | 28 | |
28 | 29 | #include "libvirt-glib-main.h" |
29 | ||
30 | gboolean debugFlag = FALSE; | |
31 | ||
32 | #define DEBUG(fmt, ...) do { if (G_UNLIKELY(debugFlag)) g_debug(fmt, ## __VA_ARGS__); } while (0) | |
33 | 30 | |
34 | 31 | static void |
35 | 32 | gvir_error_func(gpointer opaque G_GNUC_UNUSED, |
36 | 33 | virErrorPtr err) |
37 | 34 | { |
38 | DEBUG("Error: %s", err->message); | |
35 | g_debug("Error: %s", err->message); | |
39 | 36 | } |
40 | 37 | |
41 | 38 | |
50 | 47 | } |
51 | 48 | |
52 | 49 | |
50 | static void gvir_log_handler(const gchar *log_domain G_GNUC_UNUSED, | |
51 | GLogLevelFlags log_level G_GNUC_UNUSED, | |
52 | const gchar *message, | |
53 | gpointer user_data) | |
54 | { | |
55 | if (user_data) | |
56 | fprintf(stderr, "%s\n", message); | |
57 | } | |
58 | ||
59 | ||
53 | 60 | gboolean gvir_init_check(int *argc G_GNUC_UNUSED, |
54 | 61 | char ***argv G_GNUC_UNUSED, |
55 | 62 | GError **err G_GNUC_UNUSED) |
56 | 63 | { |
57 | char *debugEnv = getenv("LIBVIRT_GLIB_DEBUG"); | |
58 | if (debugEnv && *debugEnv && *debugEnv != '0') | |
59 | debugFlag = 1; | |
60 | ||
61 | 64 | virSetErrorFunc(NULL, gvir_error_func); |
62 | 65 | if (!g_thread_supported()) |
63 | 66 | g_thread_init(NULL); |
64 | 67 | |
65 | 68 | virInitialize(); |
66 | 69 | |
70 | /* GLib >= 2.31.0 debug is off by default, so we need to | |
71 | * enable it. Older versions are on by default, so we need | |
72 | * to disable it. | |
73 | */ | |
74 | #if GLIB_CHECK_VERSION(2, 31, 0) | |
75 | if (getenv("LIBVIRT_GLIB_DEBUG")) | |
76 | g_log_set_handler(G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, | |
77 | gvir_log_handler, (void*)0x1); | |
78 | #else | |
79 | if (!getenv("LIBVIRT_GLIB_DEBUG")) | |
80 | g_log_set_handler(G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, | |
81 | gvir_log_handler, NULL); | |
82 | #endif | |
83 | ||
67 | 84 | return TRUE; |
68 | 85 | } |
69 |
1 | 1 | * libvirt-glib-main.c: libvirt glib integration |
2 | 2 | * |
3 | 3 | * Copyright (C) 2008 Daniel P. Berrange |
4 | * Copyright (C) 2010 Red Hat | |
4 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
5 | 5 | * |
6 | 6 | * This library is free software; you can redistribute it and/or |
7 | 7 | * modify it under the terms of the GNU Lesser General Public |
0 | 0 | /* |
1 | 1 | * libvirt-glib.h: libvirt glib integration |
2 | 2 | * |
3 | * Copyright (C) 2010 Red Hat | |
3 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
0 | LIBVIRT_GLIB_0.0.1 { | |
0 | LIBVIRT_GLIB_0.0.4 { | |
1 | 1 | global: |
2 | 2 | gvir_init; |
3 | 3 | gvir_init_check; |
6 | 6 | gvir_error_new; |
7 | 7 | gvir_error_new_valist; |
8 | 8 | gvir_error_new_literal; |
9 | gvir_set_error; | |
10 | gvir_set_error_valist; | |
11 | gvir_set_error_literal; | |
9 | 12 | |
10 | 13 | local: |
11 | 14 | *; |
1 | 1 | |
2 | 2 | %define with_introspection 0 |
3 | 3 | %define with_python 0 |
4 | %define with_vala 0 | |
4 | 5 | |
5 | 6 | %if 0%{?fedora} >= 15 |
6 | 7 | %define with_introspection 1 |
14 | 15 | %if 0%{?rhel} && 0%{?rhel} < 7 |
15 | 16 | %define with_python 1 |
16 | 17 | %endif |
17 | ||
18 | %if 0%{with_introspection} && 0%{?fedora} > 15 | |
19 | %define with_vala 1 | |
20 | %endif | |
18 | 21 | |
19 | 22 | Name: libvirt-glib |
20 | Version: 0.0.2 | |
23 | Version: 0.0.4 | |
21 | 24 | Release: 1%{?dist}%{?extra_release} |
22 | 25 | Summary: libvirt glib integration for events |
23 | 26 | Group: Development/Libraries |
27 | 30 | BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) |
28 | 31 | |
29 | 32 | BuildRequires: glib2-devel >= 2.10.0 |
30 | BuildRequires: libvirt-devel >= 0.9.4 | |
33 | BuildRequires: libvirt-devel >= 0.9.7 | |
31 | 34 | BuildRequires: python-devel |
32 | 35 | %if %{with_introspection} |
33 | 36 | BuildRequires: gobject-introspection-devel |
38 | 41 | BuildRequires: libxml2-devel |
39 | 42 | # Hack due to https://bugzilla.redhat.com/show_bug.cgi?id=613466 |
40 | 43 | BuildRequires: libtool |
44 | %if %{with_vala} | |
45 | BuildRequires: vala-tools | |
46 | %endif | |
41 | 47 | |
42 | 48 | %package devel |
43 | 49 | Group: Development/Libraries |
152 | 158 | %if %{with_introspection} |
153 | 159 | %{_libdir}/girepository-1.0/LibvirtGLib-1.0.typelib |
154 | 160 | %endif |
161 | %if %{with_vala} | |
162 | %{_datadir}/vala/vapi/libvirt-glib-1.0.vapi | |
163 | %endif | |
155 | 164 | |
156 | 165 | %files -n libvirt-gconfig |
157 | 166 | %{_libdir}/libvirt-gconfig-1.0.so.* |
158 | 167 | %if %{with_introspection} |
159 | 168 | %{_libdir}/girepository-1.0/LibvirtGConfig-1.0.typelib |
160 | 169 | %endif |
170 | %if %{with_vala} | |
171 | %{_datadir}/vala/vapi/libvirt-gconfig-1.0.vapi | |
172 | %endif | |
161 | 173 | |
162 | 174 | %files -n libvirt-gobject |
163 | 175 | %{_libdir}/libvirt-gobject-1.0.so.* |
164 | 176 | %if %{with_introspection} |
165 | 177 | %{_libdir}/girepository-1.0/LibvirtGObject-1.0.typelib |
178 | %endif | |
179 | %if %{with_vala} | |
180 | %{_datadir}/vala/vapi/libvirt-gobject-1.0.deps | |
181 | %{_datadir}/vala/vapi/libvirt-gobject-1.0.vapi | |
166 | 182 | %endif |
167 | 183 | |
168 | 184 | %files devel |
1 | 1 | |
2 | 2 | %define with_introspection 0 |
3 | 3 | %define with_python 0 |
4 | %define with_vala 0 | |
4 | 5 | |
5 | 6 | %if 0%{?fedora} >= 15 |
6 | 7 | %define with_introspection 1 |
14 | 15 | %if 0%{?rhel} && 0%{?rhel} < 7 |
15 | 16 | %define with_python 1 |
16 | 17 | %endif |
17 | ||
18 | %if 0%{with_introspection} && 0%{?fedora} > 15 | |
19 | %define with_vala 1 | |
20 | %endif | |
18 | 21 | |
19 | 22 | Name: @PACKAGE@ |
20 | 23 | Version: @VERSION@ |
27 | 30 | BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) |
28 | 31 | |
29 | 32 | BuildRequires: glib2-devel >= 2.10.0 |
30 | BuildRequires: libvirt-devel >= 0.9.4 | |
33 | BuildRequires: libvirt-devel >= 0.9.7 | |
31 | 34 | BuildRequires: python-devel |
32 | 35 | %if %{with_introspection} |
33 | 36 | BuildRequires: gobject-introspection-devel |
38 | 41 | BuildRequires: libxml2-devel |
39 | 42 | # Hack due to https://bugzilla.redhat.com/show_bug.cgi?id=613466 |
40 | 43 | BuildRequires: libtool |
44 | %if %{with_vala} | |
45 | BuildRequires: vala-tools | |
46 | %endif | |
41 | 47 | |
42 | 48 | %package devel |
43 | 49 | Group: Development/Libraries |
152 | 158 | %if %{with_introspection} |
153 | 159 | %{_libdir}/girepository-1.0/LibvirtGLib-1.0.typelib |
154 | 160 | %endif |
161 | %if %{with_vala} | |
162 | %{_datadir}/vala/vapi/libvirt-glib-1.0.vapi | |
163 | %endif | |
155 | 164 | |
156 | 165 | %files -n libvirt-gconfig |
157 | 166 | %{_libdir}/libvirt-gconfig-1.0.so.* |
158 | 167 | %if %{with_introspection} |
159 | 168 | %{_libdir}/girepository-1.0/LibvirtGConfig-1.0.typelib |
160 | 169 | %endif |
170 | %if %{with_vala} | |
171 | %{_datadir}/vala/vapi/libvirt-gconfig-1.0.vapi | |
172 | %endif | |
161 | 173 | |
162 | 174 | %files -n libvirt-gobject |
163 | 175 | %{_libdir}/libvirt-gobject-1.0.so.* |
164 | 176 | %if %{with_introspection} |
165 | 177 | %{_libdir}/girepository-1.0/LibvirtGObject-1.0.typelib |
178 | %endif | |
179 | %if %{with_vala} | |
180 | %{_datadir}/vala/vapi/libvirt-gobject-1.0.deps | |
181 | %{_datadir}/vala/vapi/libvirt-gobject-1.0.vapi | |
166 | 182 | %endif |
167 | 183 | |
168 | 184 | %files devel |
59 | 59 | nodist_libvirt_gobject_1_0_la_SOURCES = \ |
60 | 60 | $(GOBJECT_GENERATED_FILES) |
61 | 61 | libvirt_gobject_1_0_la_CFLAGS = \ |
62 | -DG_LOG_DOMAIN="\"Libvirt.GObject\"" \ | |
62 | 63 | -DDATADIR="\"$(datadir)\"" \ |
63 | 64 | -DLIBVIRT_GOBJECT_BUILD \ |
64 | 65 | $(COVERAGE_CFLAGS) \ |
65 | 66 | -I$(top_srcdir) \ |
67 | $(GIO2_CFLAGS) \ | |
68 | $(GOBJECT2_CFLAGS) \ | |
69 | $(GTHREAD2_CFLAGS) \ | |
66 | 70 | $(LIBVIRT_CFLAGS) \ |
67 | $(GOBJECT2_CFLAGS) \ | |
68 | $(GIO2_CFLAGS) \ | |
69 | 71 | $(LIBXML2_CFLAGS) \ |
70 | 72 | $(WARN_CFLAGS) |
71 | 73 | libvirt_gobject_1_0_la_LIBADD = \ |
74 | $(GIO2_LIBS) \ | |
75 | $(GOBJECT2_LIBS) \ | |
76 | $(GTHREAD2_LIBS) \ | |
72 | 77 | $(LIBVIRT_LIBS) \ |
73 | $(GOBJECT2_LIBS) \ | |
74 | $(GIO2_LIBS) \ | |
75 | 78 | ../libvirt-glib/libvirt-glib-1.0.la \ |
76 | 79 | ../libvirt-gconfig/libvirt-gconfig-1.0.la \ |
77 | 80 | $(CYGWIN_EXTRA_LIBADD) |
115 | 118 | if WITH_GOBJECT_INTROSPECTION |
116 | 119 | |
117 | 120 | LibvirtGObject-1.0.gir: libvirt-gobject-1.0.la $(G_IR_SCANNER) Makefile.am |
118 | $(AM_V_GEN)PKG_CONFIG_PATH=$(top_builddir) $(G_IR_SCANNER) \ | |
121 | $(AM_V_GEN)$(G_IR_SCANNER) \ | |
119 | 122 | --quiet \ |
120 | 123 | --warn-all \ |
121 | 124 | --namespace LibvirtGObject \ |
122 | 125 | --nsversion 1.0 \ |
123 | 126 | --include GObject-2.0 \ |
124 | 127 | --include Gio-2.0 \ |
125 | --include LibvirtGLib-1.0 \ | |
126 | --include LibvirtGConfig-1.0 \ | |
128 | --include-uninstalled $(top_builddir)/libvirt-glib/LibvirtGLib-1.0.gir \ | |
129 | --include-uninstalled $(top_builddir)/libvirt-gconfig/LibvirtGConfig-1.0.gir \ | |
127 | 130 | --identifier-prefix=GVir \ |
128 | 131 | --symbol-prefix=gvir \ |
132 | --library=$(top_builddir)/libvirt-glib/libvirt-glib-1.0.la \ | |
133 | --library=$(top_builddir)/libvirt-gconfig/libvirt-gconfig-1.0.la \ | |
129 | 134 | --library=$(builddir)/libvirt-gobject-1.0.la \ |
130 | --add-include-path=$(top_builddir)/libvirt-glib \ | |
131 | --add-include-path=$(top_builddir)/libvirt-gconfig \ | |
132 | 135 | --output $@ \ |
136 | -I$(top_builddir) \ | |
133 | 137 | -I$(top_srcdir) \ |
134 | -I$(top_builddir) \ | |
135 | $(LIBXML2_CFLAGS) \ | |
136 | 138 | --verbose \ |
137 | --pkg=gobject-2.0 \ | |
139 | --c-include="libvirt-gobject/libvirt-gobject.h" \ | |
138 | 140 | --pkg=gthread-2.0 \ |
139 | --c-include="libvirt-gobject/libvirt-gobject.h" \ | |
141 | --pkg=libxml-2.0 \ | |
140 | 142 | --pkg-export=libvirt-gobject-1.0 \ |
141 | 143 | $(srcdir)/libvirt-gobject.h \ |
142 | 144 | $(GOBJECT_SOURCE_FILES:%=$(srcdir)/%) \ |
178 | 178 | GIO2_LIBS = @GIO2_LIBS@ |
179 | 179 | GLIB2_CFLAGS = @GLIB2_CFLAGS@ |
180 | 180 | GLIB2_LIBS = @GLIB2_LIBS@ |
181 | GLIB_MKENUMS = @GLIB_MKENUMS@ | |
181 | 182 | GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ |
182 | 183 | GOBJECT2_LIBS = @GOBJECT2_LIBS@ |
183 | 184 | GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@ |
186 | 187 | GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ |
187 | 188 | GTHREAD2_LIBS = @GTHREAD2_LIBS@ |
188 | 189 | GTKDOC_CHECK = @GTKDOC_CHECK@ |
190 | GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ | |
191 | GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ | |
189 | 192 | GTKDOC_MKPDF = @GTKDOC_MKPDF@ |
190 | 193 | GTKDOC_REBASE = @GTKDOC_REBASE@ |
191 | 194 | G_IR_COMPILER = @G_IR_COMPILER@ |
364 | 367 | $(GOBJECT_GENERATED_FILES) |
365 | 368 | |
366 | 369 | libvirt_gobject_1_0_la_CFLAGS = \ |
370 | -DG_LOG_DOMAIN="\"Libvirt.GObject\"" \ | |
367 | 371 | -DDATADIR="\"$(datadir)\"" \ |
368 | 372 | -DLIBVIRT_GOBJECT_BUILD \ |
369 | 373 | $(COVERAGE_CFLAGS) \ |
370 | 374 | -I$(top_srcdir) \ |
375 | $(GIO2_CFLAGS) \ | |
376 | $(GOBJECT2_CFLAGS) \ | |
377 | $(GTHREAD2_CFLAGS) \ | |
371 | 378 | $(LIBVIRT_CFLAGS) \ |
372 | $(GOBJECT2_CFLAGS) \ | |
373 | $(GIO2_CFLAGS) \ | |
374 | 379 | $(LIBXML2_CFLAGS) \ |
375 | 380 | $(WARN_CFLAGS) |
376 | 381 | |
377 | 382 | libvirt_gobject_1_0_la_LIBADD = \ |
383 | $(GIO2_LIBS) \ | |
384 | $(GOBJECT2_LIBS) \ | |
385 | $(GTHREAD2_LIBS) \ | |
378 | 386 | $(LIBVIRT_LIBS) \ |
379 | $(GOBJECT2_LIBS) \ | |
380 | $(GIO2_LIBS) \ | |
381 | 387 | ../libvirt-glib/libvirt-glib-1.0.la \ |
382 | 388 | ../libvirt-gconfig/libvirt-gconfig-1.0.la \ |
383 | 389 | $(CYGWIN_EXTRA_LIBADD) |
997 | 1003 | $^ | sed -e 's/g_vir/gvir/g' | sed -e 's/_VIR_/_/g' > $@ |
998 | 1004 | |
999 | 1005 | @WITH_GOBJECT_INTROSPECTION_TRUE@LibvirtGObject-1.0.gir: libvirt-gobject-1.0.la $(G_IR_SCANNER) Makefile.am |
1000 | @WITH_GOBJECT_INTROSPECTION_TRUE@ $(AM_V_GEN)PKG_CONFIG_PATH=$(top_builddir) $(G_IR_SCANNER) \ | |
1006 | @WITH_GOBJECT_INTROSPECTION_TRUE@ $(AM_V_GEN)$(G_IR_SCANNER) \ | |
1001 | 1007 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --quiet \ |
1002 | 1008 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --warn-all \ |
1003 | 1009 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --namespace LibvirtGObject \ |
1004 | 1010 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --nsversion 1.0 \ |
1005 | 1011 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --include GObject-2.0 \ |
1006 | 1012 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --include Gio-2.0 \ |
1007 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --include LibvirtGLib-1.0 \ | |
1008 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --include LibvirtGConfig-1.0 \ | |
1013 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --include-uninstalled $(top_builddir)/libvirt-glib/LibvirtGLib-1.0.gir \ | |
1014 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --include-uninstalled $(top_builddir)/libvirt-gconfig/LibvirtGConfig-1.0.gir \ | |
1009 | 1015 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --identifier-prefix=GVir \ |
1010 | 1016 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --symbol-prefix=gvir \ |
1017 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --library=$(top_builddir)/libvirt-glib/libvirt-glib-1.0.la \ | |
1018 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --library=$(top_builddir)/libvirt-gconfig/libvirt-gconfig-1.0.la \ | |
1011 | 1019 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --library=$(builddir)/libvirt-gobject-1.0.la \ |
1012 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --add-include-path=$(top_builddir)/libvirt-glib \ | |
1013 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --add-include-path=$(top_builddir)/libvirt-gconfig \ | |
1014 | 1020 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --output $@ \ |
1021 | @WITH_GOBJECT_INTROSPECTION_TRUE@ -I$(top_builddir) \ | |
1015 | 1022 | @WITH_GOBJECT_INTROSPECTION_TRUE@ -I$(top_srcdir) \ |
1016 | @WITH_GOBJECT_INTROSPECTION_TRUE@ -I$(top_builddir) \ | |
1017 | @WITH_GOBJECT_INTROSPECTION_TRUE@ $(LIBXML2_CFLAGS) \ | |
1018 | 1023 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --verbose \ |
1019 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --pkg=gobject-2.0 \ | |
1024 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --c-include="libvirt-gobject/libvirt-gobject.h" \ | |
1020 | 1025 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --pkg=gthread-2.0 \ |
1021 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --c-include="libvirt-gobject/libvirt-gobject.h" \ | |
1026 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --pkg=libxml-2.0 \ | |
1022 | 1027 | @WITH_GOBJECT_INTROSPECTION_TRUE@ --pkg-export=libvirt-gobject-1.0 \ |
1023 | 1028 | @WITH_GOBJECT_INTROSPECTION_TRUE@ $(srcdir)/libvirt-gobject.h \ |
1024 | 1029 | @WITH_GOBJECT_INTROSPECTION_TRUE@ $(GOBJECT_SOURCE_FILES:%=$(srcdir)/%) \ |
0 | 0 | /* |
1 | 1 | * libvirt-gobject-compat.h: libvirt gobject integration |
2 | 2 | * |
3 | * Copyright (C) 2011 Red Hat | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
1 | 1 | * libvirt-gobject-connection.c: libvirt glib integration |
2 | 2 | * |
3 | 3 | * Copyright (C) 2008 Daniel P. Berrange |
4 | * Copyright (C) 2010 Red Hat | |
4 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
5 | 5 | * |
6 | 6 | * This library is free software; you can redistribute it and/or |
7 | 7 | * modify it under the terms of the GNU Lesser General Public |
28 | 28 | #include "libvirt-glib/libvirt-glib.h" |
29 | 29 | #include "libvirt-gobject/libvirt-gobject.h" |
30 | 30 | #include "libvirt-gobject-compat.h" |
31 | ||
32 | extern gboolean debugFlag; | |
33 | ||
34 | #define DEBUG(fmt, ...) do { if (G_UNLIKELY(debugFlag)) g_debug(fmt, ## __VA_ARGS__); } while (0) | |
35 | 31 | |
36 | 32 | #define GVIR_CONNECTION_GET_PRIVATE(obj) \ |
37 | 33 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_TYPE_CONNECTION, GVirConnectionPrivate)) |
127 | 123 | GVirConnection *conn = GVIR_CONNECTION(object); |
128 | 124 | GVirConnectionPrivate *priv = conn->priv; |
129 | 125 | |
130 | DEBUG("Finalize GVirConnection=%p", conn); | |
126 | g_debug("Finalize GVirConnection=%p", conn); | |
131 | 127 | |
132 | 128 | if (gvir_connection_is_open(conn)) |
133 | 129 | gvir_connection_close(conn); |
229 | 225 | { |
230 | 226 | GVirConnectionPrivate *priv; |
231 | 227 | |
232 | DEBUG("Init GVirConnection=%p", conn); | |
228 | g_debug("Init GVirConnection=%p", conn); | |
233 | 229 | |
234 | 230 | priv = conn->priv = GVIR_CONNECTION_GET_PRIVATE(conn); |
235 | 231 | |
260 | 256 | void *opaque) |
261 | 257 | { |
262 | 258 | gchar uuid[VIR_UUID_STRING_BUFLEN]; |
259 | GHashTable *doms; | |
263 | 260 | GVirConnection *gconn = opaque; |
264 | 261 | GVirDomain *gdom; |
265 | 262 | GVirConnectionPrivate *priv = gconn->priv; |
269 | 266 | return 0; |
270 | 267 | } |
271 | 268 | |
272 | DEBUG("%s: %s event:%d, detail:%d", G_STRFUNC, uuid, event, detail); | |
273 | ||
274 | g_mutex_lock(priv->lock); | |
275 | gdom = g_hash_table_lookup(priv->domains, uuid); | |
269 | g_debug("%s: %s event:%d, detail:%d", G_STRFUNC, uuid, event, detail); | |
270 | ||
271 | g_mutex_lock(priv->lock); | |
272 | doms = g_hash_table_ref(priv->domains); | |
273 | gdom = g_hash_table_lookup(doms, uuid); | |
274 | if (gdom != NULL) | |
275 | g_object_ref(G_OBJECT(gdom)); | |
276 | 276 | g_mutex_unlock(priv->lock); |
277 | 277 | |
278 | 278 | if (gdom == NULL) { |
279 | 279 | gdom = GVIR_DOMAIN(g_object_new(GVIR_TYPE_DOMAIN, "handle", dom, NULL)); |
280 | 280 | |
281 | 281 | g_mutex_lock(priv->lock); |
282 | g_hash_table_insert(priv->domains, (gpointer)gvir_domain_get_uuid(gdom), gdom); | |
282 | g_hash_table_insert(doms, (gpointer)gvir_domain_get_uuid(gdom), | |
283 | g_object_ref(G_OBJECT(gdom))); | |
283 | 284 | g_mutex_unlock(priv->lock); |
284 | 285 | } |
285 | 286 | |
296 | 297 | case VIR_DOMAIN_EVENT_UNDEFINED: |
297 | 298 | if (detail == VIR_DOMAIN_EVENT_UNDEFINED_REMOVED) { |
298 | 299 | g_mutex_lock(priv->lock); |
299 | g_hash_table_steal(priv->domains, uuid); | |
300 | g_hash_table_remove(doms, uuid); | |
300 | 301 | g_mutex_unlock(priv->lock); |
301 | 302 | |
302 | 303 | g_signal_emit(gconn, signals[VIR_DOMAIN_REMOVED], 0, gdom); |
303 | g_object_unref(gdom); | |
304 | 304 | } else |
305 | 305 | g_warn_if_reached(); |
306 | 306 | break; |
307 | 307 | |
308 | 308 | case VIR_DOMAIN_EVENT_STARTED: |
309 | if (detail == VIR_DOMAIN_EVENT_STARTED_BOOTED) | |
309 | if (detail == VIR_DOMAIN_EVENT_STARTED_BOOTED) { | |
310 | if (!virDomainIsPersistent(dom)) | |
311 | g_signal_emit(gconn, signals[VIR_DOMAIN_ADDED], 0, gdom); | |
310 | 312 | g_signal_emit_by_name(gdom, "started::booted"); |
311 | else if (detail == VIR_DOMAIN_EVENT_STARTED_MIGRATED) | |
313 | } else if (detail == VIR_DOMAIN_EVENT_STARTED_MIGRATED) | |
312 | 314 | g_signal_emit_by_name(gdom, "started::migrated"); |
313 | 315 | else if (detail == VIR_DOMAIN_EVENT_STARTED_RESTORED) |
314 | 316 | g_signal_emit_by_name(gdom, "started::restored"); |
363 | 365 | g_signal_emit_by_name(gdom, "stopped::from-snapshot"); |
364 | 366 | else |
365 | 367 | g_warn_if_reached(); |
368 | ||
369 | if (virDomainIsPersistent(dom) != 1) { | |
370 | g_mutex_lock(priv->lock); | |
371 | g_hash_table_remove(doms, uuid); | |
372 | g_mutex_unlock(priv->lock); | |
373 | ||
374 | g_signal_emit(gconn, signals[VIR_DOMAIN_REMOVED], 0, gdom); | |
375 | } | |
376 | break; | |
377 | ||
378 | case VIR_DOMAIN_EVENT_SHUTDOWN: | |
366 | 379 | break; |
367 | 380 | |
368 | 381 | default: |
369 | 382 | g_warn_if_reached(); |
370 | 383 | } |
371 | 384 | |
385 | g_object_unref(G_OBJECT(gdom)); | |
386 | g_hash_table_unref(doms); | |
372 | 387 | return 0; |
373 | 388 | } |
374 | 389 | |
388 | 403 | |
389 | 404 | g_mutex_lock(priv->lock); |
390 | 405 | if (priv->conn) { |
391 | if (err) | |
392 | *err = g_error_new(GVIR_CONNECTION_ERROR, | |
393 | 0, | |
394 | "Connection %s is already open", | |
395 | priv->uri); | |
406 | g_set_error(err, GVIR_CONNECTION_ERROR, | |
407 | 0, | |
408 | "Connection %s is already open", | |
409 | priv->uri); | |
396 | 410 | g_mutex_unlock(priv->lock); |
397 | 411 | return FALSE; |
398 | 412 | } |
399 | 413 | |
400 | 414 | if (!(priv->conn = virConnectOpen(priv->uri))) { |
401 | if (err) | |
402 | *err = gvir_error_new(GVIR_CONNECTION_ERROR, | |
403 | 0, | |
404 | "Unable to open %s", | |
405 | priv->uri); | |
415 | gvir_set_error(err, GVIR_CONNECTION_ERROR, | |
416 | 0, | |
417 | "Unable to open %s", | |
418 | priv->uri); | |
406 | 419 | g_mutex_unlock(priv->lock); |
407 | 420 | return FALSE; |
421 | } | |
422 | ||
423 | if (!priv->uri) { | |
424 | char *uri = virConnectGetURI(priv->conn); | |
425 | if (!uri) { | |
426 | gvir_set_error_literal(err, GVIR_CONNECTION_ERROR, | |
427 | 0, | |
428 | "Unable to get connection URI"); | |
429 | virConnectClose(priv->conn); | |
430 | priv->conn = NULL; | |
431 | g_mutex_unlock(priv->lock); | |
432 | return FALSE; | |
433 | } | |
434 | priv->uri = g_strdup(uri); | |
435 | free(uri); | |
408 | 436 | } |
409 | 437 | |
410 | 438 | if (virConnectDomainEventRegister(priv->conn, domain_event_cb, conn, NULL) != -1) |
452 | 480 | res = g_simple_async_result_new(G_OBJECT(conn), |
453 | 481 | callback, |
454 | 482 | user_data, |
455 | gvir_connection_open); | |
483 | gvir_connection_open_async); | |
456 | 484 | g_simple_async_result_run_in_thread(res, |
457 | 485 | gvir_connection_open_helper, |
458 | 486 | G_PRIORITY_DEFAULT, |
471 | 499 | GError **err) |
472 | 500 | { |
473 | 501 | g_return_val_if_fail(GVIR_IS_CONNECTION(conn), FALSE); |
474 | g_return_val_if_fail(G_IS_ASYNC_RESULT(result), FALSE); | |
475 | ||
476 | if (G_IS_SIMPLE_ASYNC_RESULT(result)) { | |
477 | GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT(result); | |
478 | g_warn_if_fail (g_simple_async_result_get_source_tag(simple) == gvir_connection_open); | |
479 | if (g_simple_async_result_propagate_error(simple, err)) | |
480 | return FALSE; | |
481 | } | |
502 | g_return_val_if_fail(g_simple_async_result_is_valid(result, G_OBJECT(conn), | |
503 | gvir_connection_open_async), | |
504 | FALSE); | |
505 | ||
506 | if (g_simple_async_result_propagate_error(G_SIMPLE_ASYNC_RESULT(result), err)) | |
507 | return FALSE; | |
482 | 508 | |
483 | 509 | return TRUE; |
484 | 510 | } |
498 | 524 | void gvir_connection_close(GVirConnection *conn) |
499 | 525 | { |
500 | 526 | GVirConnectionPrivate *priv = conn->priv; |
501 | DEBUG("Close GVirConnection=%p", conn); | |
527 | g_debug("Close GVirConnection=%p", conn); | |
502 | 528 | |
503 | 529 | g_mutex_lock(priv->lock); |
504 | 530 | |
541 | 567 | gint i; |
542 | 568 | |
543 | 569 | if ((n = count_func(vconn)) < 0) { |
544 | if (err) | |
545 | *err = gvir_error_new(GVIR_CONNECTION_ERROR, | |
546 | 0, | |
547 | "Unable to count %s", name); | |
570 | gvir_set_error(err, GVIR_CONNECTION_ERROR, | |
571 | 0, | |
572 | "Unable to count %s", name); | |
548 | 573 | goto error; |
549 | 574 | } |
550 | 575 | |
554 | 579 | |
555 | 580 | lst = g_new(gchar *, n); |
556 | 581 | if ((n = list_func(vconn, lst, n)) < 0) { |
557 | if (err) | |
558 | *err = gvir_error_new(GVIR_CONNECTION_ERROR, | |
559 | 0, | |
560 | "Unable to list %s %d", name, n); | |
582 | gvir_set_error(err, GVIR_CONNECTION_ERROR, | |
583 | 0, | |
584 | "Unable to list %s %d", name, n); | |
561 | 585 | goto error; |
562 | 586 | } |
563 | 587 | } |
594 | 618 | |
595 | 619 | g_mutex_lock(priv->lock); |
596 | 620 | if (!priv->conn) { |
597 | if (err) | |
598 | *err = g_error_new(GVIR_CONNECTION_ERROR, | |
599 | 0, | |
600 | "Connection is not open"); | |
621 | g_set_error_literal(err, GVIR_CONNECTION_ERROR, | |
622 | 0, | |
623 | "Connection is not open"); | |
601 | 624 | g_mutex_unlock(priv->lock); |
602 | 625 | goto cleanup; |
603 | 626 | } |
610 | 633 | goto cleanup; |
611 | 634 | |
612 | 635 | if ((nactive = virConnectNumOfDomains(vconn)) < 0) { |
613 | if (err) | |
614 | *err = gvir_error_new(GVIR_CONNECTION_ERROR, | |
615 | 0, | |
616 | "Unable to count domains"); | |
636 | gvir_set_error_literal(err, GVIR_CONNECTION_ERROR, | |
637 | 0, | |
638 | "Unable to count domains"); | |
617 | 639 | goto cleanup; |
618 | 640 | } |
619 | 641 | if (nactive) { |
622 | 644 | |
623 | 645 | active = g_new(gint, nactive); |
624 | 646 | if ((nactive = virConnectListDomains(vconn, active, nactive)) < 0) { |
625 | if (err) | |
626 | *err = gvir_error_new(GVIR_CONNECTION_ERROR, | |
627 | 0, | |
628 | "Unable to list domains"); | |
647 | gvir_set_error_literal(err, GVIR_CONNECTION_ERROR, | |
648 | 0, | |
649 | "Unable to list domains"); | |
629 | 650 | goto cleanup; |
630 | 651 | } |
631 | 652 | } |
726 | 747 | |
727 | 748 | g_mutex_lock(priv->lock); |
728 | 749 | if (!priv->conn) { |
729 | if (err) | |
730 | *err = g_error_new(GVIR_CONNECTION_ERROR, | |
731 | 0, | |
732 | "Connection is not open"); | |
750 | g_set_error_literal(err, GVIR_CONNECTION_ERROR, | |
751 | 0, | |
752 | "Connection is not open"); | |
733 | 753 | g_mutex_unlock(priv->lock); |
734 | 754 | goto cleanup; |
735 | 755 | } |
866 | 886 | res = g_simple_async_result_new(G_OBJECT(conn), |
867 | 887 | callback, |
868 | 888 | user_data, |
869 | gvir_connection_fetch_domains); | |
889 | gvir_connection_fetch_domains_async); | |
870 | 890 | g_simple_async_result_run_in_thread(res, |
871 | 891 | gvir_connection_fetch_domains_helper, |
872 | 892 | G_PRIORITY_DEFAULT, |
884 | 904 | GError **err) |
885 | 905 | { |
886 | 906 | g_return_val_if_fail(GVIR_IS_CONNECTION(conn), FALSE); |
887 | g_return_val_if_fail(G_IS_ASYNC_RESULT(result), FALSE); | |
888 | ||
889 | if (G_IS_SIMPLE_ASYNC_RESULT(result)) { | |
890 | GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT(result); | |
891 | g_warn_if_fail (g_simple_async_result_get_source_tag(simple) == gvir_connection_fetch_domains); | |
892 | if (g_simple_async_result_propagate_error(simple, err)) | |
893 | return FALSE; | |
894 | } | |
907 | g_return_val_if_fail(g_simple_async_result_is_valid(result, G_OBJECT(conn), | |
908 | gvir_connection_fetch_domains_async), | |
909 | FALSE); | |
910 | ||
911 | if (g_simple_async_result_propagate_error(G_SIMPLE_ASYNC_RESULT(result), err)) | |
912 | return FALSE; | |
895 | 913 | |
896 | 914 | return TRUE; |
897 | 915 | } |
927 | 945 | res = g_simple_async_result_new(G_OBJECT(conn), |
928 | 946 | callback, |
929 | 947 | user_data, |
930 | gvir_connection_fetch_storage_pools); | |
948 | gvir_connection_fetch_storage_pools_async); | |
931 | 949 | g_simple_async_result_run_in_thread(res, |
932 | 950 | gvir_connection_fetch_pools_helper, |
933 | 951 | G_PRIORITY_DEFAULT, |
945 | 963 | GError **err) |
946 | 964 | { |
947 | 965 | g_return_val_if_fail(GVIR_IS_CONNECTION(conn), FALSE); |
948 | g_return_val_if_fail(G_IS_ASYNC_RESULT(result), FALSE); | |
949 | ||
950 | if (G_IS_SIMPLE_ASYNC_RESULT(result)) { | |
951 | GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT(result); | |
952 | g_warn_if_fail (g_simple_async_result_get_source_tag(simple) == | |
953 | gvir_connection_fetch_storage_pools); | |
954 | if (g_simple_async_result_propagate_error(simple, err)) | |
955 | return FALSE; | |
956 | } | |
966 | g_return_val_if_fail(g_simple_async_result_is_valid(result, G_OBJECT(conn), | |
967 | gvir_connection_fetch_storage_pools_async), | |
968 | FALSE); | |
969 | ||
970 | if (g_simple_async_result_propagate_error(G_SIMPLE_ASYNC_RESULT(result), err)) | |
971 | return FALSE; | |
957 | 972 | |
958 | 973 | return TRUE; |
959 | 974 | } |
1209 | 1224 | handle = virDomainDefineXML(priv->conn, xml); |
1210 | 1225 | g_free(xml); |
1211 | 1226 | if (!handle) { |
1212 | if (err) | |
1213 | *err = gvir_error_new_literal(GVIR_CONNECTION_ERROR, | |
1214 | 0, | |
1215 | "Failed to create domain"); | |
1227 | gvir_set_error_literal(err, GVIR_CONNECTION_ERROR, | |
1228 | 0, | |
1229 | "Failed to create domain"); | |
1216 | 1230 | return NULL; |
1217 | 1231 | } |
1218 | 1232 | |
1257 | 1271 | handle = virDomainCreateXML(priv->conn, xml, flags); |
1258 | 1272 | g_free(xml); |
1259 | 1273 | if (!handle) { |
1260 | if (err) | |
1261 | *err = gvir_error_new_literal(GVIR_CONNECTION_ERROR, | |
1262 | 0, | |
1263 | "Failed to create domain"); | |
1274 | gvir_set_error_literal(err, GVIR_CONNECTION_ERROR, | |
1275 | 0, | |
1276 | "Failed to create domain"); | |
1264 | 1277 | return NULL; |
1265 | 1278 | } |
1266 | 1279 | |
1302 | 1315 | g_return_val_if_fail(xml != NULL, NULL); |
1303 | 1316 | |
1304 | 1317 | if (!(handle = virStoragePoolDefineXML(priv->conn, xml, flags))) { |
1305 | if (err) | |
1306 | *err = gvir_error_new_literal(GVIR_CONNECTION_ERROR, | |
1307 | flags, | |
1308 | "Failed to create storage pool"); | |
1318 | gvir_set_error_literal(err, GVIR_CONNECTION_ERROR, | |
1319 | flags, | |
1320 | "Failed to create storage pool"); | |
1309 | 1321 | return NULL; |
1310 | 1322 | } |
1311 | 1323 |
0 | 0 | /* |
1 | 1 | * libvirt-gobject-connection.h: libvirt gobject integration |
2 | 2 | * |
3 | * Copyright (C) 2010 Red Hat | |
3 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
0 | 0 | /* |
1 | 1 | * libvirt-gobject-domain-device-private.h: libvirt gobject integration |
2 | 2 | * |
3 | * Copyright (C) 2011 Red Hat | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
0 | 0 | /* |
1 | 1 | * libvirt-gobject-domain-device.c: libvirt gobject integration |
2 | 2 | * |
3 | * Copyright (C) 2011 Red Hat | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
28 | 28 | #include "libvirt-gobject/libvirt-gobject.h" |
29 | 29 | |
30 | 30 | #include "libvirt-gobject/libvirt-gobject-domain-device-private.h" |
31 | ||
32 | extern gboolean debugFlag; | |
33 | ||
34 | #define DEBUG(fmt, ...) do { if (G_UNLIKELY(debugFlag)) g_debug(fmt, ## __VA_ARGS__); } while (0) | |
35 | 31 | |
36 | 32 | #define GVIR_DOMAIN_DEVICE_GET_PRIVATE(obj) \ |
37 | 33 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_TYPE_DOMAIN_DEVICE, GVirDomainDevicePrivate)) |
92 | 88 | GVirDomainDevice *self = GVIR_DOMAIN_DEVICE(object); |
93 | 89 | GVirDomainDevicePrivate *priv = self->priv; |
94 | 90 | |
95 | DEBUG("Finalize GVirDomainDevice=%p", self); | |
91 | g_debug("Finalize GVirDomainDevice=%p", self); | |
96 | 92 | |
97 | 93 | g_clear_object(&priv->domain); |
98 | 94 | |
122 | 118 | |
123 | 119 | static void gvir_domain_device_init(GVirDomainDevice *self) |
124 | 120 | { |
125 | DEBUG("Init GVirDomainDevice=%p", self); | |
121 | g_debug("Init GVirDomainDevice=%p", self); | |
126 | 122 | |
127 | 123 | self->priv = GVIR_DOMAIN_DEVICE_GET_PRIVATE(self); |
128 | 124 | } |
0 | 0 | /* |
1 | 1 | * libvirt-gobject-domain-device.h: libvirt gobject integration |
2 | 2 | * |
3 | * Copyright (C) 2011 Red Hat | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
0 | 0 | /* |
1 | 1 | * libvirt-gobject-domain-disk.c: libvirt gobject integration |
2 | 2 | * |
3 | * Copyright (C) 2011 Red Hat | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
29 | 29 | #include "libvirt-gobject-compat.h" |
30 | 30 | |
31 | 31 | #include "libvirt-gobject/libvirt-gobject-domain-device-private.h" |
32 | ||
33 | extern gboolean debugFlag; | |
34 | ||
35 | #define DEBUG(fmt, ...) do { if (G_UNLIKELY(debugFlag)) g_debug(fmt, ## __VA_ARGS__); } while (0) | |
36 | 32 | |
37 | 33 | #define GVIR_DOMAIN_DISK_GET_PRIVATE(obj) \ |
38 | 34 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_TYPE_DOMAIN_DISK, GVirDomainDiskPrivate)) |
102 | 98 | GVirDomainDisk *self = GVIR_DOMAIN_DISK(object); |
103 | 99 | GVirDomainDiskPrivate *priv = self->priv; |
104 | 100 | |
105 | DEBUG("Finalize GVirDomainDisk=%p", self); | |
101 | g_debug("Finalize GVirDomainDisk=%p", self); | |
106 | 102 | |
107 | 103 | g_free(priv->path); |
108 | 104 | |
132 | 128 | |
133 | 129 | static void gvir_domain_disk_init(GVirDomainDisk *self) |
134 | 130 | { |
135 | DEBUG("Init GVirDomainDisk=%p", self); | |
131 | g_debug("Init GVirDomainDisk=%p", self); | |
136 | 132 | |
137 | 133 | self->priv = GVIR_DOMAIN_DISK_GET_PRIVATE(self); |
138 | 134 | } |
178 | 174 | handle = gvir_domain_device_get_domain_handle(GVIR_DOMAIN_DEVICE(self)); |
179 | 175 | |
180 | 176 | if (virDomainBlockStats(handle, priv->path, &stats, sizeof (stats)) < 0) { |
181 | if (err) | |
182 | *err = gvir_error_new_literal(GVIR_DOMAIN_DISK_ERROR, | |
183 | 0, | |
184 | "Unable to get domain disk stats"); | |
177 | gvir_set_error_literal(err, GVIR_DOMAIN_DISK_ERROR, | |
178 | 0, | |
179 | "Unable to get domain disk stats"); | |
185 | 180 | goto end; |
186 | 181 | } |
187 | 182 |
0 | 0 | /* |
1 | 1 | * libvirt-gobject-domain-disk.h: libvirt gobject integration |
2 | 2 | * |
3 | * Copyright (C) 2011 Red Hat | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
0 | 0 | /* |
1 | 1 | * libvirt-gobject-domain-interface.c: libvirt gobject integration |
2 | 2 | * |
3 | * Copyright (C) 2011 Red Hat | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
29 | 29 | #include "libvirt-gobject-compat.h" |
30 | 30 | |
31 | 31 | #include "libvirt-gobject/libvirt-gobject-domain-device-private.h" |
32 | ||
33 | extern gboolean debugFlag; | |
34 | ||
35 | #define DEBUG(fmt, ...) do { if (G_UNLIKELY(debugFlag)) g_debug(fmt, ## __VA_ARGS__); } while (0) | |
36 | 32 | |
37 | 33 | #define GVIR_DOMAIN_INTERFACE_GET_PRIVATE(obj) \ |
38 | 34 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_TYPE_DOMAIN_INTERFACE, GVirDomainInterfacePrivate)) |
102 | 98 | GVirDomainInterface *self = GVIR_DOMAIN_INTERFACE(object); |
103 | 99 | GVirDomainInterfacePrivate *priv = self->priv; |
104 | 100 | |
105 | DEBUG("Finalize GVirDomainInterface=%p", self); | |
101 | g_debug("Finalize GVirDomainInterface=%p", self); | |
106 | 102 | |
107 | 103 | g_free(priv->path); |
108 | 104 | |
132 | 128 | |
133 | 129 | static void gvir_domain_interface_init(GVirDomainInterface *self) |
134 | 130 | { |
135 | DEBUG("Init GVirDomainInterface=%p", self); | |
131 | g_debug("Init GVirDomainInterface=%p", self); | |
136 | 132 | |
137 | 133 | self->priv = GVIR_DOMAIN_INTERFACE_GET_PRIVATE(self); |
138 | 134 | } |
178 | 174 | handle = gvir_domain_device_get_domain_handle(GVIR_DOMAIN_DEVICE(self)); |
179 | 175 | |
180 | 176 | if (virDomainInterfaceStats(handle, priv->path, &stats, sizeof (stats)) < 0) { |
181 | if (err) | |
182 | *err = gvir_error_new_literal(GVIR_DOMAIN_INTERFACE_ERROR, | |
183 | 0, | |
184 | "Unable to get domain interface stats"); | |
177 | gvir_set_error_literal(err, GVIR_DOMAIN_INTERFACE_ERROR, | |
178 | 0, | |
179 | "Unable to get domain interface stats"); | |
185 | 180 | goto end; |
186 | 181 | } |
187 | 182 |
0 | 0 | /* |
1 | 1 | * libvirt-gobject-domain-interface.h: libvirt gobject integration |
2 | 2 | * |
3 | * Copyright (C) 2011 Red Hat | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
1 | 1 | * libvirt-gobject-domain_snapshot.c: libvirt glib integration |
2 | 2 | * |
3 | 3 | * Copyright (C) 2008 Daniel P. Berrange |
4 | * Copyright (C) 2010 Red Hat | |
4 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
5 | 5 | * |
6 | 6 | * This library is free software; you can redistribute it and/or |
7 | 7 | * modify it under the terms of the GNU Lesser General Public |
28 | 28 | #include "libvirt-glib/libvirt-glib.h" |
29 | 29 | #include "libvirt-gobject/libvirt-gobject.h" |
30 | 30 | #include "libvirt-gobject-compat.h" |
31 | ||
32 | extern gboolean debugFlag; | |
33 | ||
34 | #define DEBUG(fmt, ...) do { if (G_UNLIKELY(debugFlag)) g_debug(fmt, ## __VA_ARGS__); } while (0) | |
35 | 31 | |
36 | 32 | #define GVIR_DOMAIN_SNAPSHOT_GET_PRIVATE(obj) \ |
37 | 33 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_TYPE_DOMAIN_SNAPSHOT, GVirDomainSnapshotPrivate)) |
104 | 100 | GVirDomainSnapshot *conn = GVIR_DOMAIN_SNAPSHOT(object); |
105 | 101 | GVirDomainSnapshotPrivate *priv = conn->priv; |
106 | 102 | |
107 | DEBUG("Finalize GVirDomainSnapshot=%p", conn); | |
103 | g_debug("Finalize GVirDomainSnapshot=%p", conn); | |
108 | 104 | |
109 | 105 | virDomainSnapshotFree(priv->handle); |
110 | 106 | |
139 | 135 | |
140 | 136 | static void gvir_domain_snapshot_init(GVirDomainSnapshot *conn) |
141 | 137 | { |
142 | GVirDomainSnapshotPrivate *priv; | |
143 | ||
144 | DEBUG("Init GVirDomainSnapshot=%p", conn); | |
145 | ||
146 | priv = conn->priv = GVIR_DOMAIN_SNAPSHOT_GET_PRIVATE(conn); | |
147 | ||
148 | memset(priv, 0, sizeof(*priv)); | |
138 | g_debug("Init GVirDomainSnapshot=%p", conn); | |
139 | ||
140 | conn->priv = GVIR_DOMAIN_SNAPSHOT_GET_PRIVATE(conn); | |
149 | 141 | } |
150 | 142 | |
151 | 143 | typedef struct virDomainSnapshot GVirDomainSnapshotHandle; |
203 | 195 | gchar *xml; |
204 | 196 | |
205 | 197 | if (!(xml = virDomainSnapshotGetXMLDesc(priv->handle, flags))) { |
206 | *err = gvir_error_new_literal(GVIR_DOMAIN_SNAPSHOT_ERROR, | |
207 | 0, | |
208 | "Unable to get domain_snapshot XML config"); | |
198 | gvir_set_error_literal(err, GVIR_DOMAIN_SNAPSHOT_ERROR, | |
199 | 0, | |
200 | "Unable to get domain_snapshot XML config"); | |
209 | 201 | return NULL; |
210 | 202 | } |
211 | 203 |
0 | 0 | /* |
1 | 1 | * libvirt-gobject-domain_snapshot.c: libvirt gobject integration |
2 | 2 | * |
3 | * Copyright (C) 2010 Red Hat | |
3 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
1 | 1 | * libvirt-gobject-domain.c: libvirt glib integration |
2 | 2 | * |
3 | 3 | * Copyright (C) 2008 Daniel P. Berrange |
4 | * Copyright (C) 2010 Red Hat | |
4 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
5 | 5 | * |
6 | 6 | * This library is free software; you can redistribute it and/or |
7 | 7 | * modify it under the terms of the GNU Lesser General Public |
29 | 29 | #include "libvirt-gobject/libvirt-gobject.h" |
30 | 30 | #include "libvirt-gobject-compat.h" |
31 | 31 | |
32 | extern gboolean debugFlag; | |
33 | ||
34 | #define DEBUG(fmt, ...) do { if (G_UNLIKELY(debugFlag)) g_debug(fmt, ## __VA_ARGS__); } while (0) | |
35 | ||
36 | 32 | #define GVIR_DOMAIN_GET_PRIVATE(obj) \ |
37 | 33 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_TYPE_DOMAIN, GVirDomainPrivate)) |
38 | 34 | |
48 | 44 | enum { |
49 | 45 | PROP_0, |
50 | 46 | PROP_HANDLE, |
47 | PROP_PERSISTENT, | |
51 | 48 | }; |
52 | 49 | |
53 | 50 | enum { |
83 | 80 | g_value_set_boxed(value, priv->handle); |
84 | 81 | break; |
85 | 82 | |
83 | case PROP_PERSISTENT: | |
84 | g_value_set_boolean(value, gvir_domain_get_persistent (conn)); | |
85 | break; | |
86 | ||
86 | 87 | default: |
87 | 88 | G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); |
88 | 89 | } |
115 | 116 | GVirDomain *conn = GVIR_DOMAIN(object); |
116 | 117 | GVirDomainPrivate *priv = conn->priv; |
117 | 118 | |
118 | DEBUG("Finalize GVirDomain=%p", conn); | |
119 | g_debug("Finalize GVirDomain=%p", conn); | |
119 | 120 | |
120 | 121 | virDomainFree(priv->handle); |
121 | 122 | |
159 | 160 | G_PARAM_STATIC_NICK | |
160 | 161 | G_PARAM_STATIC_BLURB)); |
161 | 162 | |
163 | g_object_class_install_property(object_class, | |
164 | PROP_PERSISTENT, | |
165 | g_param_spec_boolean("persistent", | |
166 | "Persistent", | |
167 | "If domain is persistent", | |
168 | TRUE, | |
169 | G_PARAM_READABLE | | |
170 | G_PARAM_STATIC_NAME | | |
171 | G_PARAM_STATIC_NICK | | |
172 | G_PARAM_STATIC_BLURB)); | |
173 | ||
162 | 174 | signals[VIR_STARTED] = g_signal_new("started", |
163 | 175 | G_OBJECT_CLASS_TYPE(object_class), |
164 | 176 | G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | |
214 | 226 | |
215 | 227 | static void gvir_domain_init(GVirDomain *conn) |
216 | 228 | { |
217 | GVirDomainPrivate *priv; | |
218 | ||
219 | DEBUG("Init GVirDomain=%p", conn); | |
220 | ||
221 | priv = conn->priv = GVIR_DOMAIN_GET_PRIVATE(conn); | |
222 | ||
223 | memset(priv, 0, sizeof(*priv)); | |
229 | g_debug("Init GVirDomain=%p", conn); | |
230 | ||
231 | conn->priv = GVIR_DOMAIN_GET_PRIVATE(conn); | |
224 | 232 | } |
225 | 233 | |
226 | 234 | typedef struct virDomain GVirDomainHandle; |
286 | 294 | gint ret; |
287 | 295 | |
288 | 296 | if ((ret = virDomainGetID(priv->handle)) < 0) { |
289 | if (err) | |
290 | *err = gvir_error_new_literal(GVIR_DOMAIN_ERROR, | |
291 | 0, | |
292 | "Unable to get ID for domain"); | |
297 | gvir_set_error_literal(err, GVIR_DOMAIN_ERROR, | |
298 | 0, | |
299 | "Unable to get ID for domain"); | |
293 | 300 | } |
294 | 301 | return ret; |
295 | 302 | } |
312 | 319 | else |
313 | 320 | ret = virDomainCreate(priv->handle); |
314 | 321 | if (ret < 0) { |
315 | if (err) | |
316 | *err = gvir_error_new_literal(GVIR_DOMAIN_ERROR, | |
317 | 0, | |
318 | "Unable to start domain"); | |
322 | gvir_set_error_literal(err, GVIR_DOMAIN_ERROR, | |
323 | 0, | |
324 | "Unable to start domain"); | |
319 | 325 | return FALSE; |
320 | 326 | } |
321 | 327 | |
334 | 340 | GVirDomainPrivate *priv = dom->priv; |
335 | 341 | |
336 | 342 | if (virDomainResume(priv->handle) < 0) { |
337 | if (err) | |
338 | *err = gvir_error_new_literal(GVIR_DOMAIN_ERROR, | |
339 | 0, | |
340 | "Unable to resume domain"); | |
343 | gvir_set_error_literal(err, GVIR_DOMAIN_ERROR, | |
344 | 0, | |
345 | "Unable to resume domain"); | |
341 | 346 | return FALSE; |
342 | 347 | } |
343 | 348 | |
361 | 366 | else |
362 | 367 | ret = virDomainDestroy(priv->handle); |
363 | 368 | if (ret < 0) { |
364 | if (err) | |
365 | *err = gvir_error_new_literal(GVIR_DOMAIN_ERROR, | |
366 | 0, | |
367 | "Unable to stop domain"); | |
369 | gvir_set_error_literal(err, GVIR_DOMAIN_ERROR, | |
370 | 0, | |
371 | "Unable to stop domain"); | |
368 | 372 | return FALSE; |
369 | 373 | } |
370 | 374 | |
388 | 392 | else |
389 | 393 | ret = virDomainUndefine(priv->handle); |
390 | 394 | if (ret < 0) { |
391 | if (err) | |
392 | *err = gvir_error_new_literal(GVIR_DOMAIN_ERROR, | |
393 | 0, | |
394 | "Unable to delete domain"); | |
395 | gvir_set_error_literal(err, GVIR_DOMAIN_ERROR, | |
396 | 0, | |
397 | "Unable to delete domain"); | |
395 | 398 | return FALSE; |
396 | 399 | } |
397 | 400 | |
410 | 413 | GVirDomainPrivate *priv = dom->priv; |
411 | 414 | |
412 | 415 | if (virDomainShutdown(priv->handle) < 0) { |
413 | if (err) | |
414 | *err = gvir_error_new_literal(GVIR_DOMAIN_ERROR, | |
415 | 0, | |
416 | "Unable to shutdown domain"); | |
416 | gvir_set_error_literal(err, GVIR_DOMAIN_ERROR, | |
417 | 0, | |
418 | "Unable to shutdown domain"); | |
417 | 419 | return FALSE; |
418 | 420 | } |
419 | 421 | |
432 | 434 | GVirDomainPrivate *priv = dom->priv; |
433 | 435 | |
434 | 436 | if (virDomainReboot(priv->handle, flags) < 0) { |
435 | if (err) | |
436 | *err = gvir_error_new_literal(GVIR_DOMAIN_ERROR, | |
437 | 0, | |
438 | "Unable to reboot domain"); | |
437 | gvir_set_error_literal(err, GVIR_DOMAIN_ERROR, | |
438 | 0, | |
439 | "Unable to reboot domain"); | |
439 | 440 | return FALSE; |
440 | 441 | } |
441 | 442 | |
456 | 457 | gchar *xml; |
457 | 458 | |
458 | 459 | if (!(xml = virDomainGetXMLDesc(priv->handle, flags))) { |
459 | if (err) | |
460 | *err = gvir_error_new_literal(GVIR_DOMAIN_ERROR, | |
461 | 0, | |
462 | "Unable to get domain XML config"); | |
460 | gvir_set_error_literal(err, GVIR_DOMAIN_ERROR, | |
461 | 0, | |
462 | "Unable to get domain XML config"); | |
463 | 463 | return NULL; |
464 | 464 | } |
465 | 465 | |
495 | 495 | GVirDomainPrivate *priv = domain->priv; |
496 | 496 | |
497 | 497 | g_return_val_if_fail(GVIR_IS_DOMAIN (domain), FALSE); |
498 | g_return_val_if_fail(GVIR_IS_CONFIG_DOMAIN (conf), FALSE); | |
498 | g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN (conf), FALSE); | |
499 | 499 | g_return_val_if_fail(err == NULL || *err == NULL, FALSE); |
500 | 500 | |
501 | 501 | xml = gvir_config_object_to_xml(GVIR_CONFIG_OBJECT(conf)); |
503 | 503 | g_return_val_if_fail(xml != NULL, FALSE); |
504 | 504 | |
505 | 505 | if ((conn = virDomainGetConnect(priv->handle)) == NULL) { |
506 | if (err != NULL) | |
507 | *err = gvir_error_new_literal(GVIR_DOMAIN_ERROR, | |
508 | 0, | |
509 | "Failed to get domain connection"); | |
506 | gvir_set_error_literal(err, GVIR_DOMAIN_ERROR, | |
507 | 0, | |
508 | "Failed to get domain connection"); | |
510 | 509 | g_free (xml); |
511 | 510 | |
512 | 511 | return FALSE; |
516 | 515 | g_free (xml); |
517 | 516 | |
518 | 517 | if (handle == NULL) { |
519 | if (err != NULL) | |
520 | *err = gvir_error_new_literal(GVIR_DOMAIN_ERROR, | |
521 | 0, | |
522 | "Failed to set " | |
523 | "domain configuration"); | |
518 | gvir_set_error_literal(err, GVIR_DOMAIN_ERROR, | |
519 | 0, | |
520 | "Failed to set " | |
521 | "domain configuration"); | |
524 | 522 | return FALSE; |
525 | 523 | } |
526 | 524 | |
528 | 526 | virDomainFree(handle); |
529 | 527 | |
530 | 528 | if (g_strcmp0 (uuid, priv->uuid) != 0) { |
531 | if (err != NULL) | |
532 | *err = gvir_error_new_literal(GVIR_DOMAIN_ERROR, | |
533 | 0, | |
534 | "Failed to set " | |
535 | "domain configuration"); | |
529 | gvir_set_error_literal(err, GVIR_DOMAIN_ERROR, | |
530 | 0, | |
531 | "Failed to set " | |
532 | "domain configuration"); | |
536 | 533 | |
537 | 534 | return FALSE; |
538 | 535 | } |
553 | 550 | GVirDomainInfo *ret; |
554 | 551 | |
555 | 552 | if (virDomainGetInfo(priv->handle, &info) < 0) { |
556 | if (err) | |
557 | *err = gvir_error_new_literal(GVIR_DOMAIN_ERROR, | |
558 | 0, | |
559 | "Unable to get domain info"); | |
553 | gvir_set_error_literal(err, GVIR_DOMAIN_ERROR, | |
554 | 0, | |
555 | "Unable to get domain info"); | |
560 | 556 | return NULL; |
561 | 557 | } |
562 | 558 | |
598 | 594 | st, |
599 | 595 | monitor_id, |
600 | 596 | flags))) { |
601 | if (err) | |
602 | *err = gvir_error_new_literal(GVIR_DOMAIN_ERROR, | |
603 | 0, | |
604 | "Unable to take a screenshot"); | |
597 | gvir_set_error_literal(err, GVIR_DOMAIN_ERROR, | |
598 | 0, | |
599 | "Unable to take a screenshot"); | |
605 | 600 | goto end; |
606 | 601 | } |
607 | 602 | end: |
609 | 604 | virStreamFree(st); |
610 | 605 | return mime; |
611 | 606 | } |
607 | ||
608 | ||
609 | /** | |
610 | * gvir_domain_open_console: | |
611 | * @dom: (transfer none): the domain | |
612 | * @devname: (transfer none)(allow-none): the device name | |
613 | * @stream: (transfer none): stream to use as output | |
614 | * @flags: extra flags, currently unused | |
615 | * | |
616 | * Open a text console for the domain @dom, connecting it to the | |
617 | * stream @stream. If @devname is NULL, the default console will | |
618 | * be opened, otherwise @devname can be used to specify a non-default | |
619 | * console device. | |
620 | * | |
621 | * Returns: TRUE if the console was opened, FALSE otherwise. | |
622 | */ | |
623 | gboolean gvir_domain_open_console(GVirDomain *dom, | |
624 | GVirStream *stream, | |
625 | const gchar *devname, | |
626 | guint flags, | |
627 | GError **err) | |
628 | { | |
629 | GVirDomainPrivate *priv; | |
630 | virStreamPtr st = NULL; | |
631 | gboolean ret = FALSE; | |
632 | ||
633 | g_return_val_if_fail(GVIR_IS_DOMAIN(dom), FALSE); | |
634 | g_return_val_if_fail(GVIR_IS_STREAM(stream), FALSE); | |
635 | ||
636 | priv = dom->priv; | |
637 | g_object_get(stream, "handle", &st, NULL); | |
638 | ||
639 | if (virDomainOpenConsole(priv->handle, | |
640 | devname, | |
641 | st, | |
642 | flags) < 0) { | |
643 | gvir_set_error_literal(err, GVIR_DOMAIN_ERROR, | |
644 | 0, | |
645 | "Unable to open console"); | |
646 | goto cleanup; | |
647 | } | |
648 | ||
649 | ret = TRUE; | |
650 | cleanup: | |
651 | if (st != NULL) | |
652 | virStreamFree(st); | |
653 | return ret; | |
654 | } | |
655 | ||
656 | ||
657 | /** | |
658 | * gvir_domain_open_graphics: | |
659 | * @dom: the domain | |
660 | * @idx: the graphics index | |
661 | * @fd: pre-opened socket pair | |
662 | * @flags: extra flags, currently unused | |
663 | * | |
664 | * Open a connection to the local graphics display, connecting it to the | |
665 | * socket pair file descriptor passed in as @fd. | |
666 | * | |
667 | * Returns: TRUE if the graphics connection was opened, FALSE otherwise. | |
668 | */ | |
669 | gboolean gvir_domain_open_graphics(GVirDomain *dom, | |
670 | guint idx, | |
671 | int fd, | |
672 | unsigned int flags, | |
673 | GError **err) | |
674 | { | |
675 | GVirDomainPrivate *priv; | |
676 | gboolean ret = FALSE; | |
677 | ||
678 | g_return_val_if_fail(GVIR_IS_DOMAIN(dom), FALSE); | |
679 | ||
680 | priv = dom->priv; | |
681 | ||
682 | if (virDomainOpenGraphics(priv->handle, | |
683 | idx, | |
684 | fd, | |
685 | flags) < 0) { | |
686 | gvir_set_error_literal(err, GVIR_DOMAIN_ERROR, | |
687 | 0, | |
688 | "Unable to open graphics"); | |
689 | goto cleanup; | |
690 | } | |
691 | ||
692 | ret = TRUE; | |
693 | cleanup: | |
694 | return ret; | |
695 | } | |
696 | ||
697 | /** | |
698 | * gir_domain_suspend: | |
699 | * @dom: the domain to suspend | |
700 | * @err: Place-holder for possible errors | |
701 | * | |
702 | * Suspends an active domain, the process is frozen without further access to | |
703 | * CPU resources and I/O but the memory used by the domain at the hypervisor | |
704 | * level will stay allocated. Use gvir_domain_resume() to reactivate the domain. | |
705 | * | |
706 | * Returns: TRUE if domain was suspended successfully, FALSE otherwise. | |
707 | */ | |
708 | gboolean gvir_domain_suspend (GVirDomain *dom, | |
709 | GError **err) | |
710 | { | |
711 | gboolean ret = FALSE; | |
712 | ||
713 | g_return_val_if_fail(GVIR_IS_DOMAIN(dom), FALSE); | |
714 | ||
715 | if (virDomainSuspend(dom->priv->handle) < 0) { | |
716 | gvir_set_error_literal(err, GVIR_DOMAIN_ERROR, | |
717 | 0, | |
718 | "Unable to suspend domain"); | |
719 | goto cleanup; | |
720 | } | |
721 | ||
722 | ret = TRUE; | |
723 | cleanup: | |
724 | return ret; | |
725 | } | |
726 | ||
727 | /** | |
728 | * gvir_domain_save: | |
729 | * @dom: the domain to save and suspend | |
730 | * @flags: extra flags, currently unused | |
731 | * @err: Place-holder for possible errors | |
732 | * | |
733 | * Just like #gvir_domain_suspend but also saves the state of the domain on disk | |
734 | * and therefore makes it possible to restore the domain to its previous state | |
735 | * even after shutdown/reboot of host machine. | |
736 | * | |
737 | * Returns: TRUE if domain was saved and suspended successfully, FALSE otherwise. | |
738 | */ | |
739 | gboolean gvir_domain_save (GVirDomain *dom, | |
740 | unsigned int flags, | |
741 | GError **err) | |
742 | { | |
743 | g_return_val_if_fail(GVIR_IS_DOMAIN(dom), FALSE); | |
744 | ||
745 | if (virDomainManagedSave(dom->priv->handle, flags) < 0) { | |
746 | gvir_set_error_literal(err, GVIR_DOMAIN_ERROR, | |
747 | 0, | |
748 | "Unable to save and suspend domain"); | |
749 | return FALSE; | |
750 | } | |
751 | ||
752 | return TRUE; | |
753 | } | |
754 | ||
755 | typedef struct { | |
756 | guint flags; | |
757 | } DomainSaveData; | |
758 | ||
759 | static void domain_save_data_free(DomainSaveData *data) | |
760 | { | |
761 | g_slice_free (DomainSaveData, data); | |
762 | } | |
763 | ||
764 | static void | |
765 | gvir_domain_save_helper(GSimpleAsyncResult *res, | |
766 | GObject *object, | |
767 | GCancellable *cancellable G_GNUC_UNUSED) | |
768 | { | |
769 | GVirDomain *dom = GVIR_DOMAIN(object); | |
770 | DomainSaveData *data; | |
771 | GError *err = NULL; | |
772 | ||
773 | data = g_simple_async_result_get_op_res_gpointer (res); | |
774 | ||
775 | if (!gvir_domain_save(dom, data->flags, &err)) | |
776 | g_simple_async_result_take_error(res, err); | |
777 | } | |
778 | ||
779 | /** | |
780 | * gir_domain_save_async: | |
781 | * @dom: the domain to save and suspend | |
782 | * @flags: extra flags, currently unused | |
783 | * @cancellable: (allow-none)(transfer none): cancellation object | |
784 | * @callback: (scope async): completion callback | |
785 | * @user_data: (closure): opaque data for callback | |
786 | * | |
787 | * Asynchronous variant of #gvir_domain_save. | |
788 | */ | |
789 | void gvir_domain_save_async (GVirDomain *dom, | |
790 | unsigned int flags, | |
791 | GCancellable *cancellable, | |
792 | GAsyncReadyCallback callback, | |
793 | gpointer user_data) | |
794 | { | |
795 | GSimpleAsyncResult *res; | |
796 | DomainSaveData *data; | |
797 | ||
798 | g_return_if_fail(GVIR_IS_DOMAIN(dom)); | |
799 | ||
800 | data = g_slice_new0(DomainSaveData); | |
801 | data->flags = flags; | |
802 | ||
803 | res = g_simple_async_result_new(G_OBJECT(dom), | |
804 | callback, | |
805 | user_data, | |
806 | gvir_domain_save_async); | |
807 | g_simple_async_result_set_op_res_gpointer (res, data, (GDestroyNotify) domain_save_data_free); | |
808 | g_simple_async_result_run_in_thread(res, | |
809 | gvir_domain_save_helper, | |
810 | G_PRIORITY_DEFAULT, | |
811 | cancellable); | |
812 | g_object_unref(res); | |
813 | } | |
814 | ||
815 | /** | |
816 | * gir_domain_save_finish: | |
817 | * @dom: the domain to save and suspend | |
818 | * @result: (transfer none): async method result | |
819 | * @err: Place-holder for possible errors | |
820 | * | |
821 | * Finishes the operation started by #gvir_domain_save_async. | |
822 | * | |
823 | * Returns: TRUE if domain was saved and suspended successfully, FALSE otherwise. | |
824 | */ | |
825 | gboolean gvir_domain_save_finish (GVirDomain *dom, | |
826 | GAsyncResult *result, | |
827 | GError **err) | |
828 | { | |
829 | g_return_val_if_fail(GVIR_IS_DOMAIN(dom), FALSE); | |
830 | g_return_val_if_fail(g_simple_async_result_is_valid(result, G_OBJECT(dom), | |
831 | gvir_domain_save_async), | |
832 | FALSE); | |
833 | ||
834 | if (g_simple_async_result_propagate_error(G_SIMPLE_ASYNC_RESULT(result), err)) | |
835 | return FALSE; | |
836 | ||
837 | return TRUE; | |
838 | } | |
839 | ||
840 | /** | |
841 | * gvir_domain_get_persistent: | |
842 | * @dom: the domain | |
843 | * | |
844 | * Returns: TRUE if domain is persistent, FALSE otherwise. | |
845 | */ | |
846 | gboolean gvir_domain_get_persistent(GVirDomain *dom) | |
847 | { | |
848 | g_return_val_if_fail(GVIR_IS_DOMAIN(dom), FALSE); | |
849 | ||
850 | return virDomainIsPersistent(dom->priv->handle); | |
851 | } |
0 | 0 | /* |
1 | 1 | * libvirt-gobject-domain.c: libvirt gobject integration |
2 | 2 | * |
3 | * Copyright (C) 2010 Red Hat | |
3 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
79 | 79 | } GVirDomainState; |
80 | 80 | |
81 | 81 | |
82 | typedef enum { | |
83 | GVIR_DOMAIN_START_NONE = 0, | |
84 | GVIR_DOMAIN_START_PAUSED = (1 << 0), | |
85 | GVIR_DOMAIN_START_AUTODESTROY = (1 << 1), | |
86 | GVIR_DOMAIN_START_BYPASS_CACHE = (1 << 2), | |
87 | GVIR_DOMAIN_START_FORCE_BOOT = (1 << 3), | |
88 | } GVirDomainStartFlags; | |
89 | ||
82 | 90 | typedef struct _GVirDomainInfo GVirDomainInfo; |
83 | 91 | struct _GVirDomainInfo |
84 | 92 | { |
132 | 140 | guint flags, |
133 | 141 | GError **err); |
134 | 142 | |
143 | gboolean gvir_domain_open_console(GVirDomain *dom, | |
144 | GVirStream *stream, | |
145 | const gchar *devname, | |
146 | guint flags, | |
147 | GError **err); | |
148 | ||
149 | gboolean gvir_domain_open_graphics(GVirDomain *dom, | |
150 | guint idx, | |
151 | int fd, | |
152 | unsigned int flags, | |
153 | GError **err); | |
154 | ||
155 | gboolean gvir_domain_suspend (GVirDomain *dom, | |
156 | GError **err); | |
157 | gboolean gvir_domain_save (GVirDomain *dom, | |
158 | unsigned int flags, | |
159 | GError **err); | |
160 | void gvir_domain_save_async (GVirDomain *dom, | |
161 | unsigned int flags, | |
162 | GCancellable *cancellable, | |
163 | GAsyncReadyCallback callback, | |
164 | gpointer user_data); | |
165 | gboolean gvir_domain_save_finish (GVirDomain *dom, | |
166 | GAsyncResult *result, | |
167 | GError **err); | |
168 | gboolean gvir_domain_get_persistent(GVirDomain *dom); | |
169 | ||
135 | 170 | G_END_DECLS |
136 | 171 | |
137 | 172 | #endif /* __LIBVIRT_GOBJECT_DOMAIN_H__ */ |
0 | 0 | /* |
1 | 1 | * libvirt-gobject-input-stream.h: libvirt gobject integration |
2 | 2 | * |
3 | * Copyright (C) 2011 Red Hat | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
28 | 28 | #include "libvirt-glib/libvirt-glib.h" |
29 | 29 | #include "libvirt-gobject/libvirt-gobject.h" |
30 | 30 | #include "libvirt-gobject-input-stream.h" |
31 | ||
32 | extern gboolean debugFlag; | |
33 | ||
34 | #define DEBUG(fmt, ...) do { if (G_UNLIKELY(debugFlag)) g_debug(fmt, ## __VA_ARGS__); } while (0) | |
35 | 31 | |
36 | 32 | #define gvir_input_stream_get_type _gvir_input_stream_get_type |
37 | 33 | G_DEFINE_TYPE(GVirInputStream, gvir_input_stream, G_TYPE_INPUT_STREAM); |
53 | 49 | gsize count; |
54 | 50 | }; |
55 | 51 | |
56 | static void gvir_input_stream_get_property(GObject *object, | |
57 | guint prop_id, | |
58 | GValue *value, | |
52 | static void gvir_input_stream_get_property(GObject *object, | |
53 | guint prop_id, | |
54 | GValue *value, | |
59 | 55 | GParamSpec *pspec) |
60 | 56 | { |
61 | 57 | GVirInputStream *stream = GVIR_INPUT_STREAM(object); |
70 | 66 | } |
71 | 67 | } |
72 | 68 | |
73 | static void gvir_input_stream_set_property(GObject *object, | |
74 | guint prop_id, | |
69 | static void gvir_input_stream_set_property(GObject *object, | |
70 | guint prop_id, | |
75 | 71 | const GValue *value, |
76 | GParamSpec *pspec) | |
72 | GParamSpec *pspec) | |
77 | 73 | { |
78 | 74 | GVirInputStream *stream = GVIR_INPUT_STREAM(object); |
79 | 75 | |
91 | 87 | { |
92 | 88 | GVirInputStream *stream = GVIR_INPUT_STREAM(object); |
93 | 89 | |
94 | DEBUG("Finalize input stream GVirStream=%p", stream->priv->stream); | |
90 | g_debug("Finalize input stream GVirStream=%p", stream->priv->stream); | |
95 | 91 | stream->priv->stream = NULL; // unowned |
96 | 92 | |
97 | 93 | if (G_OBJECT_CLASS(gvir_input_stream_parent_class)->finalize) |
98 | 94 | (*G_OBJECT_CLASS(gvir_input_stream_parent_class)->finalize)(object); |
99 | 95 | } |
100 | 96 | |
101 | static void | |
102 | gvir_input_stream_read_ready (G_GNUC_UNUSED virStreamPtr st, | |
103 | int events, void *opaque) | |
104 | { | |
105 | GVirInputStream *stream = GVIR_INPUT_STREAM(opaque); | |
106 | GVirInputStreamPrivate *priv = stream->priv; | |
107 | GSimpleAsyncResult *simple; | |
97 | static gboolean | |
98 | gvir_input_stream_read_ready(GVirStream *stream, | |
99 | GVirStreamIOCondition cond, | |
100 | void *opaque) | |
101 | { | |
102 | GVirInputStream *input_stream = GVIR_INPUT_STREAM(opaque); | |
103 | GVirInputStreamPrivate *priv = input_stream->priv; | |
104 | GSimpleAsyncResult *simple = priv->result; | |
108 | 105 | GError *error = NULL; |
109 | 106 | gssize result; |
110 | 107 | |
111 | g_return_if_fail(events & VIR_STREAM_EVENT_READABLE); | |
112 | ||
113 | result = gvir_stream_receive(priv->stream, priv->buffer, priv->count, | |
108 | if (!(cond & GVIR_STREAM_IO_CONDITION_READABLE)) { | |
109 | g_warn_if_reached(); | |
110 | g_simple_async_result_set_error(simple, | |
111 | G_IO_ERROR, | |
112 | G_IO_ERROR_INVALID_ARGUMENT, | |
113 | "%s", | |
114 | "Expected stream to be readable"); | |
115 | goto cleanup; | |
116 | } | |
117 | ||
118 | result = gvir_stream_receive(stream, priv->buffer, priv->count, | |
114 | 119 | priv->cancellable, &error); |
115 | 120 | |
116 | 121 | if (g_error_matches(error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK)) { |
117 | 122 | g_warn_if_reached(); |
118 | return; | |
119 | } | |
120 | ||
121 | simple = stream->priv->result; | |
122 | stream->priv->result = NULL; | |
123 | g_simple_async_result_set_error(simple, | |
124 | G_IO_ERROR, | |
125 | G_IO_ERROR_INVALID_ARGUMENT, | |
126 | "%s", | |
127 | "Expected stream to be readable"); | |
128 | goto cleanup; | |
129 | } | |
123 | 130 | |
124 | 131 | if (result >= 0) |
125 | 132 | g_simple_async_result_set_op_res_gssize(simple, result); |
128 | 135 | g_simple_async_result_take_error(simple, error); |
129 | 136 | |
130 | 137 | if (priv->cancellable) { |
131 | g_object_unref(stream->priv->cancellable); | |
138 | g_object_unref(priv->cancellable); | |
132 | 139 | priv->cancellable = NULL; |
133 | 140 | } |
134 | 141 | |
142 | cleanup: | |
143 | priv->result = NULL; | |
135 | 144 | g_simple_async_result_complete(simple); |
136 | 145 | g_object_unref(simple); |
137 | ||
138 | return; | |
139 | } | |
140 | ||
141 | static void gvir_input_stream_read_async(GInputStream *stream, | |
142 | void *buffer, | |
143 | gsize count, | |
144 | G_GNUC_UNUSED int io_priority, | |
145 | GCancellable *cancellable, | |
146 | GAsyncReadyCallback callback, | |
147 | gpointer user_data) | |
146 | return FALSE; | |
147 | } | |
148 | ||
149 | static void gvir_input_stream_read_async(GInputStream *stream, | |
150 | void *buffer, | |
151 | gsize count, | |
152 | int io_priority G_GNUC_UNUSED, | |
153 | GCancellable *cancellable, | |
154 | GAsyncReadyCallback callback, | |
155 | gpointer user_data) | |
148 | 156 | { |
149 | 157 | GVirInputStream *input_stream = GVIR_INPUT_STREAM(stream); |
150 | virStreamPtr handle; | |
151 | 158 | |
152 | 159 | g_return_if_fail(GVIR_IS_INPUT_STREAM(stream)); |
153 | 160 | g_return_if_fail(input_stream->priv->result == NULL); |
154 | 161 | |
155 | g_object_get(input_stream->priv->stream, "handle", &handle, NULL); | |
156 | ||
157 | if (virStreamEventAddCallback(handle, VIR_STREAM_EVENT_READABLE, | |
158 | gvir_input_stream_read_ready, stream, NULL) < 0) { | |
159 | g_simple_async_report_error_in_idle(G_OBJECT(stream), | |
160 | callback, | |
161 | user_data, | |
162 | G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT, | |
163 | "Couldn't add event callback %s", | |
164 | G_STRFUNC); | |
165 | goto end; | |
166 | } | |
162 | gvir_stream_add_watch_full(input_stream->priv->stream, | |
163 | G_PRIORITY_DEFAULT, | |
164 | GVIR_STREAM_IO_CONDITION_READABLE, | |
165 | gvir_input_stream_read_ready, | |
166 | g_object_ref(stream), | |
167 | (GDestroyNotify)g_object_unref); | |
167 | 168 | |
168 | 169 | input_stream->priv->result = |
169 | 170 | g_simple_async_result_new(G_OBJECT(stream), callback, user_data, |
173 | 174 | input_stream->priv->cancellable = cancellable; |
174 | 175 | input_stream->priv->buffer = buffer; |
175 | 176 | input_stream->priv->count = count; |
176 | ||
177 | end: | |
178 | virStreamFree(handle); | |
179 | } | |
180 | ||
181 | ||
182 | static gssize gvir_input_stream_read_finish(GInputStream *stream, | |
183 | GAsyncResult *result, | |
184 | G_GNUC_UNUSED GError **error) | |
177 | } | |
178 | ||
179 | ||
180 | static gssize gvir_input_stream_read_finish(GInputStream *stream, | |
181 | GAsyncResult *result, | |
182 | GError **error G_GNUC_UNUSED) | |
185 | 183 | { |
186 | 184 | GVirInputStream *input_stream = GVIR_INPUT_STREAM(stream); |
187 | 185 | GSimpleAsyncResult *simple; |
189 | 187 | gssize count; |
190 | 188 | |
191 | 189 | g_return_val_if_fail(GVIR_IS_INPUT_STREAM(stream), -1); |
190 | g_return_val_if_fail(g_simple_async_result_is_valid(result, G_OBJECT(stream), | |
191 | gvir_input_stream_read_async), | |
192 | -1); | |
192 | 193 | g_object_get(input_stream->priv->stream, "handle", &handle, NULL); |
193 | 194 | |
194 | 195 | simple = G_SIMPLE_ASYNC_RESULT(result); |
195 | ||
196 | g_warn_if_fail(g_simple_async_result_get_source_tag(simple) == gvir_input_stream_read_async); | |
197 | 196 | |
198 | 197 | count = g_simple_async_result_get_op_res_gssize(simple); |
199 | 198 | |
232 | 231 | stream->priv = G_TYPE_INSTANCE_GET_PRIVATE(stream, GVIR_TYPE_INPUT_STREAM, GVirInputStreamPrivate); |
233 | 232 | } |
234 | 233 | |
235 | GVirInputStream* _gvir_input_stream_new(GVirStream *stream) | |
234 | GVirInputStream *_gvir_input_stream_new(GVirStream *stream) | |
236 | 235 | { |
237 | 236 | return GVIR_INPUT_STREAM(g_object_new(GVIR_TYPE_INPUT_STREAM, "stream", stream, NULL)); |
238 | 237 | } |
0 | 0 | /* |
1 | 1 | * libvirt-gobject-input-stream.h: libvirt gobject integration |
2 | 2 | * |
3 | * Copyright (C) 2011 Red Hat | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
32 | 32 | |
33 | 33 | G_BEGIN_DECLS |
34 | 34 | |
35 | #define GVIR_TYPE_INPUT_STREAM (_gvir_input_stream_get_type ()) | |
36 | #define GVIR_INPUT_STREAM(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ | |
37 | GVIR_TYPE_INPUT_STREAM, GVirInputStream)) | |
38 | #define GVIR_INPUT_STREAM_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), \ | |
39 | GVIR_TYPE_INPUT_STREAM, GVirInputStreamClass)) | |
40 | #define GVIR_IS_INPUT_STREAM(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \ | |
41 | GVIR_TYPE_INPUT_STREAM)) | |
42 | #define GVIR_IS_INPUT_STREAM_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), \ | |
43 | GVIR_TYPE_INPUT_STREAM)) | |
44 | #define GVIR_INPUT_STREAM_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), \ | |
45 | GVIR_TYPE_INPUT_STREAM, GVirInputStreamClass)) | |
35 | #define GVIR_TYPE_INPUT_STREAM (_gvir_input_stream_get_type ()) | |
36 | #define GVIR_INPUT_STREAM(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), GVIR_TYPE_INPUT_STREAM, GVirInputStream)) | |
37 | #define GVIR_INPUT_STREAM_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), GVIR_TYPE_INPUT_STREAM, GVirInputStreamClass)) | |
38 | #define GVIR_IS_INPUT_STREAM(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), GVIR_TYPE_INPUT_STREAM)) | |
39 | #define GVIR_IS_INPUT_STREAM_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), GVIR_TYPE_INPUT_STREAM)) | |
40 | #define GVIR_INPUT_STREAM_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), GVIR_TYPE_INPUT_STREAM, GVirInputStreamClass)) | |
46 | 41 | |
47 | typedef struct _GVirInputStreamPrivate GVirInputStreamPrivate; | |
48 | typedef struct _GVirInputStreamClass GVirInputStreamClass; | |
49 | typedef struct _GVirInputStream GVirInputStream; | |
42 | typedef struct _GVirInputStreamPrivate GVirInputStreamPrivate; | |
43 | typedef struct _GVirInputStreamClass GVirInputStreamClass; | |
44 | typedef struct _GVirInputStream GVirInputStream; | |
50 | 45 | |
51 | 46 | struct _GVirInputStreamClass |
52 | 47 | { |
59 | 54 | GVirInputStreamPrivate *priv; |
60 | 55 | }; |
61 | 56 | |
62 | GType _gvir_input_stream_get_type (void) G_GNUC_CONST; | |
63 | GVirInputStream * _gvir_input_stream_new (GVirStream *stream); | |
57 | GType _gvir_input_stream_get_type(void) G_GNUC_CONST; | |
58 | GVirInputStream *_gvir_input_stream_new(GVirStream *stream); | |
64 | 59 | |
65 | 60 | G_END_DECLS |
66 | 61 |
1 | 1 | * libvirt-gobject-interface.c: libvirt glib integration |
2 | 2 | * |
3 | 3 | * Copyright (C) 2008 Daniel P. Berrange |
4 | * Copyright (C) 2010 Red Hat | |
4 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
5 | 5 | * |
6 | 6 | * This library is free software; you can redistribute it and/or |
7 | 7 | * modify it under the terms of the GNU Lesser General Public |
27 | 27 | |
28 | 28 | #include "libvirt-glib/libvirt-glib.h" |
29 | 29 | #include "libvirt-gobject/libvirt-gobject.h" |
30 | ||
31 | extern gboolean debugFlag; | |
32 | ||
33 | #define DEBUG(fmt, ...) do { if (G_UNLIKELY(debugFlag)) g_debug(fmt, ## __VA_ARGS__); } while (0) | |
34 | 30 | |
35 | 31 | #define GVIR_INTERFACE_GET_PRIVATE(obj) \ |
36 | 32 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_TYPE_INTERFACE, GVirInterfacePrivate)) |
103 | 99 | GVirInterface *conn = GVIR_INTERFACE(object); |
104 | 100 | GVirInterfacePrivate *priv = conn->priv; |
105 | 101 | |
106 | DEBUG("Finalize GVirInterface=%p", conn); | |
102 | g_debug("Finalize GVirInterface=%p", conn); | |
107 | 103 | |
108 | 104 | virInterfaceFree(priv->handle); |
109 | 105 | |
138 | 134 | |
139 | 135 | static void gvir_interface_init(GVirInterface *conn) |
140 | 136 | { |
141 | GVirInterfacePrivate *priv; | |
137 | g_debug("Init GVirInterface=%p", conn); | |
142 | 138 | |
143 | DEBUG("Init GVirInterface=%p", conn); | |
144 | ||
145 | priv = conn->priv = GVIR_INTERFACE_GET_PRIVATE(conn); | |
146 | ||
147 | memset(priv, 0, sizeof(*priv)); | |
139 | conn->priv = GVIR_INTERFACE_GET_PRIVATE(conn); | |
148 | 140 | } |
149 | 141 | |
150 | 142 | typedef struct virInterface GVirInterfaceHandle; |
192 | 184 | gchar *xml; |
193 | 185 | |
194 | 186 | if (!(xml = virInterfaceGetXMLDesc(priv->handle, flags))) { |
195 | if (err) | |
196 | *err = gvir_error_new_literal(GVIR_INTERFACE_ERROR, | |
197 | 0, | |
198 | "Unable to get interface XML config"); | |
187 | gvir_set_error_literal(err, GVIR_INTERFACE_ERROR, | |
188 | 0, | |
189 | "Unable to get interface XML config"); | |
199 | 190 | return NULL; |
200 | 191 | } |
201 | 192 |
0 | 0 | /* |
1 | 1 | * libvirt-gobject-interface.c: libvirt gobject integration |
2 | 2 | * |
3 | * Copyright (C) 2010 Red Hat | |
3 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
1 | 1 | * libvirt-gobject-main.c: libvirt gobject integration |
2 | 2 | * |
3 | 3 | * Copyright (C) 2008 Daniel P. Berrange |
4 | * Copyright (C) 2010 Red Hat | |
4 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
5 | 5 | * |
6 | 6 | * This library is free software; you can redistribute it and/or |
7 | 7 | * modify it under the terms of the GNU Lesser General Public |
23 | 23 | #include <config.h> |
24 | 24 | |
25 | 25 | #include <stdlib.h> |
26 | #include <stdio.h> | |
26 | 27 | |
27 | 28 | #include "libvirt-glib/libvirt-glib.h" |
28 | 29 | #include "libvirt-gobject/libvirt-gobject.h" |
29 | ||
30 | gboolean debugFlag = FALSE; | |
31 | ||
32 | #define DEBUG(fmt, ...) do { if (G_UNLIKELY(debugFlag)) g_debug(fmt, ## __VA_ARGS__); } while (0) | |
33 | 30 | |
34 | 31 | /** |
35 | 32 | * gvir_init_object: |
46 | 43 | } |
47 | 44 | } |
48 | 45 | |
46 | static void gvir_log_handler(const gchar *log_domain G_GNUC_UNUSED, | |
47 | GLogLevelFlags log_level G_GNUC_UNUSED, | |
48 | const gchar *message, | |
49 | gpointer user_data) | |
50 | { | |
51 | if (user_data) | |
52 | fprintf(stderr, "%s\n", message); | |
53 | } | |
54 | ||
49 | 55 | |
50 | 56 | /** |
51 | 57 | * gvir_init_object_check: |
57 | 63 | char ***argv, |
58 | 64 | GError **err) |
59 | 65 | { |
60 | char *debugEnv = getenv("LIBVIRT_GOBJECT_DEBUG"); | |
61 | if (debugEnv && *debugEnv && *debugEnv != '0') | |
62 | debugFlag = 1; | |
63 | ||
64 | 66 | g_type_init(); |
65 | 67 | |
66 | 68 | gvir_event_register(); |
68 | 70 | if (!gvir_init_check(argc, argv, err)) |
69 | 71 | return FALSE; |
70 | 72 | |
73 | if (!gvir_config_init_check(argc, argv, err)) | |
74 | return FALSE; | |
75 | ||
76 | /* GLib >= 2.31.0 debug is off by default, so we need to | |
77 | * enable it. Older versions are on by default, so we need | |
78 | * to disable it. | |
79 | */ | |
80 | #if GLIB_CHECK_VERSION(2, 31, 0) | |
81 | if (getenv("LIBVIRT_GOBJECT_DEBUG")) | |
82 | g_log_set_handler(G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, | |
83 | gvir_log_handler, (void*)0x1); | |
84 | #else | |
85 | if (!getenv("LIBVIRT_GOBJECT_DEBUG")) | |
86 | g_log_set_handler(G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, | |
87 | gvir_log_handler, NULL); | |
88 | #endif | |
89 | ||
71 | 90 | return TRUE; |
72 | 91 | } |
73 |
1 | 1 | * libvirt-gobject-main.c: libvirt gobject integration |
2 | 2 | * |
3 | 3 | * Copyright (C) 2008 Daniel P. Berrange |
4 | * Copyright (C) 2010 Red Hat | |
4 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
5 | 5 | * |
6 | 6 | * This library is free software; you can redistribute it and/or |
7 | 7 | * modify it under the terms of the GNU Lesser General Public |
1 | 1 | * libvirt-gobject-manager.c: libvirt glib integration |
2 | 2 | * |
3 | 3 | * Copyright (C) 2008 Daniel P. Berrange |
4 | * Copyright (C) 2010 Red Hat | |
4 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
5 | 5 | * |
6 | 6 | * This library is free software; you can redistribute it and/or |
7 | 7 | * modify it under the terms of the GNU Lesser General Public |
27 | 27 | |
28 | 28 | #include "libvirt-glib/libvirt-glib.h" |
29 | 29 | #include "libvirt-gobject/libvirt-gobject.h" |
30 | ||
31 | extern gboolean debugFlag; | |
32 | ||
33 | #define DEBUG(fmt, ...) do { if (G_UNLIKELY(debugFlag)) g_debug(fmt, ## __VA_ARGS__); } while (0) | |
34 | 30 | |
35 | 31 | #define GVIR_MANAGER_GET_PRIVATE(obj) \ |
36 | 32 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_TYPE_MANAGER, GVirManagerPrivate)) |
65 | 61 | GVirManager *man = GVIR_MANAGER(object); |
66 | 62 | GVirManagerPrivate *priv = man->priv; |
67 | 63 | |
68 | DEBUG("Finalize GVirManager=%p", man); | |
64 | g_debug("Finalize GVirManager=%p", man); | |
69 | 65 | |
70 | 66 | GList *tmp = priv->connections; |
71 | 67 | while (tmp) { |
114 | 110 | { |
115 | 111 | GVirManagerPrivate *priv; |
116 | 112 | |
117 | DEBUG("Init GVirManager=%p", conn); | |
113 | g_debug("Init GVirManager=%p", conn); | |
118 | 114 | |
119 | 115 | priv = conn->priv = GVIR_MANAGER_GET_PRIVATE(conn); |
120 | ||
121 | memset(priv, 0, sizeof(*priv)); | |
122 | 116 | |
123 | 117 | priv->lock = g_mutex_new(); |
124 | 118 | } |
199 | 193 | } |
200 | 194 | return NULL; |
201 | 195 | } |
202 |
0 | 0 | /* |
1 | 1 | * libvirt-gobject-manager.h: libvirt gobject integration |
2 | 2 | * |
3 | * Copyright (C) 2010 Red Hat | |
3 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
1 | 1 | * libvirt-gobject-network_filter.c: libvirt glib integration |
2 | 2 | * |
3 | 3 | * Copyright (C) 2008 Daniel P. Berrange |
4 | * Copyright (C) 2010 Red Hat | |
4 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
5 | 5 | * |
6 | 6 | * This library is free software; you can redistribute it and/or |
7 | 7 | * modify it under the terms of the GNU Lesser General Public |
28 | 28 | #include "libvirt-glib/libvirt-glib.h" |
29 | 29 | #include "libvirt-gobject/libvirt-gobject.h" |
30 | 30 | #include "libvirt-gobject-compat.h" |
31 | ||
32 | extern gboolean debugFlag; | |
33 | ||
34 | #define DEBUG(fmt, ...) do { if (G_UNLIKELY(debugFlag)) g_debug(fmt, ## __VA_ARGS__); } while (0) | |
35 | 31 | |
36 | 32 | #define GVIR_NETWORK_FILTER_GET_PRIVATE(obj) \ |
37 | 33 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_TYPE_NETWORK_FILTER, GVirNetworkFilterPrivate)) |
105 | 101 | GVirNetworkFilter *nf = GVIR_NETWORK_FILTER(object); |
106 | 102 | GVirNetworkFilterPrivate *priv = nf->priv; |
107 | 103 | |
108 | DEBUG("Finalize GVirNetworkFilter=%p", nf); | |
104 | g_debug("Finalize GVirNetworkFilter=%p", nf); | |
109 | 105 | |
110 | 106 | virNWFilterFree(priv->handle); |
111 | 107 | |
155 | 151 | |
156 | 152 | static void gvir_network_filter_init(GVirNetworkFilter *conn) |
157 | 153 | { |
158 | GVirNetworkFilterPrivate *priv; | |
159 | ||
160 | DEBUG("Init GVirNetworkFilter=%p", conn); | |
161 | ||
162 | priv = conn->priv = GVIR_NETWORK_FILTER_GET_PRIVATE(conn); | |
163 | ||
164 | memset(priv, 0, sizeof(*priv)); | |
154 | g_debug("Init GVirNetworkFilter=%p", conn); | |
155 | ||
156 | conn->priv = GVIR_NETWORK_FILTER_GET_PRIVATE(conn); | |
165 | 157 | } |
166 | 158 | |
167 | 159 | typedef struct virNWFilter GVirNetworkFilterHandle; |
218 | 210 | gchar *xml; |
219 | 211 | |
220 | 212 | if (!(xml = virNWFilterGetXMLDesc(priv->handle, flags))) { |
221 | if (err) | |
222 | *err = gvir_error_new_literal(GVIR_NETWORK_FILTER_ERROR, | |
223 | 0, | |
224 | "Unable to get network_filter XML config"); | |
213 | gvir_set_error_literal(err, GVIR_NETWORK_FILTER_ERROR, | |
214 | 0, | |
215 | "Unable to get network_filter XML config"); | |
225 | 216 | return NULL; |
226 | 217 | } |
227 | 218 |
0 | 0 | /* |
1 | 1 | * libvirt-gobject-network_filter.c: libvirt gobject integration |
2 | 2 | * |
3 | * Copyright (C) 2010 Red Hat | |
3 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
1 | 1 | * libvirt-gobject-network.c: libvirt glib integration |
2 | 2 | * |
3 | 3 | * Copyright (C) 2008 Daniel P. Berrange |
4 | * Copyright (C) 2010 Red Hat | |
4 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
5 | 5 | * |
6 | 6 | * This library is free software; you can redistribute it and/or |
7 | 7 | * modify it under the terms of the GNU Lesser General Public |
28 | 28 | #include "libvirt-glib/libvirt-glib.h" |
29 | 29 | #include "libvirt-gobject/libvirt-gobject.h" |
30 | 30 | #include "libvirt-gobject-compat.h" |
31 | ||
32 | extern gboolean debugFlag; | |
33 | ||
34 | #define DEBUG(fmt, ...) do { if (G_UNLIKELY(debugFlag)) g_debug(fmt, ## __VA_ARGS__); } while (0) | |
35 | 31 | |
36 | 32 | #define GVIR_NETWORK_GET_PRIVATE(obj) \ |
37 | 33 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_TYPE_NETWORK, GVirNetworkPrivate)) |
105 | 101 | GVirNetwork *conn = GVIR_NETWORK(object); |
106 | 102 | GVirNetworkPrivate *priv = conn->priv; |
107 | 103 | |
108 | DEBUG("Finalize GVirNetwork=%p", conn); | |
104 | g_debug("Finalize GVirNetwork=%p", conn); | |
109 | 105 | |
110 | 106 | virNetworkFree(priv->handle); |
111 | 107 | |
153 | 149 | |
154 | 150 | static void gvir_network_init(GVirNetwork *conn) |
155 | 151 | { |
156 | GVirNetworkPrivate *priv; | |
157 | ||
158 | DEBUG("Init GVirNetwork=%p", conn); | |
159 | ||
160 | priv = conn->priv = GVIR_NETWORK_GET_PRIVATE(conn); | |
161 | ||
162 | memset(priv, 0, sizeof(*priv)); | |
152 | g_debug("Init GVirNetwork=%p", conn); | |
153 | ||
154 | conn->priv = GVIR_NETWORK_GET_PRIVATE(conn); | |
163 | 155 | } |
164 | 156 | |
165 | 157 | typedef struct virNetwork GVirNetworkHandle; |
214 | 206 | gchar *xml; |
215 | 207 | |
216 | 208 | if (!(xml = virNetworkGetXMLDesc(priv->handle, flags))) { |
217 | if (err) | |
218 | *err = gvir_error_new_literal(GVIR_NETWORK_ERROR, | |
219 | 0, | |
220 | "Unable to get network XML config"); | |
209 | gvir_set_error_literal(err, GVIR_NETWORK_ERROR, | |
210 | 0, | |
211 | "Unable to get network XML config"); | |
221 | 212 | return NULL; |
222 | 213 | } |
223 | 214 |
0 | 0 | /* |
1 | 1 | * libvirt-gobject-network.c: libvirt gobject integration |
2 | 2 | * |
3 | * Copyright (C) 2010 Red Hat | |
3 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
1 | 1 | * libvirt-gobject-node_device.c: libvirt glib integration |
2 | 2 | * |
3 | 3 | * Copyright (C) 2008 Daniel P. Berrange |
4 | * Copyright (C) 2010 Red Hat | |
4 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
5 | 5 | * |
6 | 6 | * This library is free software; you can redistribute it and/or |
7 | 7 | * modify it under the terms of the GNU Lesser General Public |
28 | 28 | #include "libvirt-glib/libvirt-glib.h" |
29 | 29 | #include "libvirt-gobject/libvirt-gobject.h" |
30 | 30 | #include "libvirt-gobject-compat.h" |
31 | ||
32 | extern gboolean debugFlag; | |
33 | ||
34 | #define DEBUG(fmt, ...) do { if (G_UNLIKELY(debugFlag)) g_debug(fmt, ## __VA_ARGS__); } while (0) | |
35 | 31 | |
36 | 32 | #define GVIR_NODE_DEVICE_GET_PRIVATE(obj) \ |
37 | 33 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_TYPE_NODE_DEVICE, GVirNodeDevicePrivate)) |
104 | 100 | GVirNodeDevice *conn = GVIR_NODE_DEVICE(object); |
105 | 101 | GVirNodeDevicePrivate *priv = conn->priv; |
106 | 102 | |
107 | DEBUG("Finalize GVirNodeDevice=%p", conn); | |
103 | g_debug("Finalize GVirNodeDevice=%p", conn); | |
108 | 104 | |
109 | 105 | virNodeDeviceFree(priv->handle); |
110 | 106 | |
139 | 135 | |
140 | 136 | static void gvir_node_device_init(GVirNodeDevice *conn) |
141 | 137 | { |
142 | GVirNodeDevicePrivate *priv; | |
138 | g_debug("Init GVirNodeDevice=%p", conn); | |
143 | 139 | |
144 | DEBUG("Init GVirNodeDevice=%p", conn); | |
145 | ||
146 | priv = conn->priv = GVIR_NODE_DEVICE_GET_PRIVATE(conn); | |
147 | ||
148 | memset(priv, 0, sizeof(*priv)); | |
140 | conn->priv = GVIR_NODE_DEVICE_GET_PRIVATE(conn); | |
149 | 141 | } |
150 | 142 | |
151 | 143 | typedef struct virNodeDevice GVirNodeDeviceHandle; |
193 | 185 | gchar *xml; |
194 | 186 | |
195 | 187 | if (!(xml = virNodeDeviceGetXMLDesc(priv->handle, flags))) { |
196 | if (err) | |
197 | *err = gvir_error_new_literal(GVIR_NODE_DEVICE_ERROR, | |
198 | 0, | |
199 | "Unable to get node_device XML config"); | |
188 | gvir_set_error_literal(err, GVIR_NODE_DEVICE_ERROR, | |
189 | 0, | |
190 | "Unable to get node_device XML config"); | |
200 | 191 | return NULL; |
201 | 192 | } |
202 | 193 |
0 | 0 | /* |
1 | 1 | * libvirt-gobject-node_device.c: libvirt gobject integration |
2 | 2 | * |
3 | * Copyright (C) 2010 Red Hat | |
3 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
0 | 0 | /* |
1 | 1 | * libvirt-gobject-output-stream.h: libvirt gobject integration |
2 | 2 | * |
3 | * Copyright (C) 2011 Red Hat | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
28 | 28 | #include "libvirt-glib/libvirt-glib.h" |
29 | 29 | #include "libvirt-gobject/libvirt-gobject.h" |
30 | 30 | #include "libvirt-gobject-output-stream.h" |
31 | ||
32 | extern gboolean debugFlag; | |
33 | ||
34 | #define DEBUG(fmt, ...) do { if (G_UNLIKELY(debugFlag)) g_debug(fmt, ## __VA_ARGS__); } while (0) | |
35 | 31 | |
36 | 32 | #define gvir_output_stream_get_type _gvir_output_stream_get_type |
37 | 33 | G_DEFINE_TYPE(GVirOutputStream, gvir_output_stream, G_TYPE_OUTPUT_STREAM); |
53 | 49 | gsize count; |
54 | 50 | }; |
55 | 51 | |
56 | static void gvir_output_stream_get_property(GObject *object, | |
57 | guint prop_id, | |
58 | GValue *value, | |
52 | static void gvir_output_stream_get_property(GObject *object, | |
53 | guint prop_id, | |
54 | GValue *value, | |
59 | 55 | GParamSpec *pspec) |
60 | 56 | { |
61 | 57 | GVirOutputStream *stream = GVIR_OUTPUT_STREAM(object); |
70 | 66 | } |
71 | 67 | } |
72 | 68 | |
73 | static void gvir_output_stream_set_property(GObject *object, | |
74 | guint prop_id, | |
69 | static void gvir_output_stream_set_property(GObject *object, | |
70 | guint prop_id, | |
75 | 71 | const GValue *value, |
76 | GParamSpec *pspec) | |
72 | GParamSpec *pspec) | |
77 | 73 | { |
78 | 74 | GVirOutputStream *stream = GVIR_OUTPUT_STREAM(object); |
79 | 75 | |
91 | 87 | { |
92 | 88 | GVirOutputStream *stream = GVIR_OUTPUT_STREAM(object); |
93 | 89 | |
94 | DEBUG("Finalize output stream GVirStream=%p", stream->priv->stream); | |
90 | g_debug("Finalize output stream GVirStream=%p", stream->priv->stream); | |
95 | 91 | stream->priv->stream = NULL; // unowned |
96 | 92 | |
97 | 93 | if (G_OBJECT_CLASS(gvir_output_stream_parent_class)->finalize) |
98 | 94 | (*G_OBJECT_CLASS(gvir_output_stream_parent_class)->finalize)(object); |
99 | 95 | } |
100 | 96 | |
101 | static void | |
102 | gvir_output_stream_write_ready(virStreamPtr st G_GNUC_UNUSED, | |
103 | int events, | |
97 | static gboolean | |
98 | gvir_output_stream_write_ready(GVirStream *stream, | |
99 | GVirStreamIOCondition cond, | |
104 | 100 | void *opaque) |
105 | 101 | { |
106 | GVirOutputStream *stream = GVIR_OUTPUT_STREAM(opaque); | |
107 | GVirOutputStreamPrivate *priv = stream->priv; | |
108 | GSimpleAsyncResult *simple; | |
102 | GVirOutputStream *output_stream = GVIR_OUTPUT_STREAM(opaque); | |
103 | GVirOutputStreamPrivate *priv = output_stream->priv; | |
104 | GSimpleAsyncResult *simple = priv->result; | |
109 | 105 | GError *error = NULL; |
110 | 106 | gssize result; |
111 | 107 | |
112 | g_return_if_fail(events & VIR_STREAM_EVENT_WRITABLE); | |
113 | ||
114 | result = gvir_stream_send(priv->stream, priv->buffer, priv->count, | |
108 | if (!(cond & GVIR_STREAM_IO_CONDITION_WRITABLE)) { | |
109 | g_warn_if_reached(); | |
110 | g_simple_async_result_set_error(simple, | |
111 | G_IO_ERROR, | |
112 | G_IO_ERROR_INVALID_ARGUMENT, | |
113 | "%s", | |
114 | "Expected stream to be writable"); | |
115 | goto cleanup; | |
116 | } | |
117 | ||
118 | result = gvir_stream_send(stream, priv->buffer, priv->count, | |
115 | 119 | priv->cancellable, &error); |
116 | 120 | |
117 | 121 | if (g_error_matches(error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK)) { |
118 | 122 | g_warn_if_reached(); |
119 | return; | |
120 | } | |
121 | ||
122 | simple = stream->priv->result; | |
123 | stream->priv->result = NULL; | |
123 | g_simple_async_result_set_error(simple, | |
124 | G_IO_ERROR, | |
125 | G_IO_ERROR_INVALID_ARGUMENT, | |
126 | "%s", | |
127 | "Expected stream to be writable"); | |
128 | goto cleanup; | |
129 | } | |
124 | 130 | |
125 | 131 | if (result >= 0) |
126 | 132 | g_simple_async_result_set_op_res_gssize(simple, result); |
129 | 135 | g_simple_async_result_take_error(simple, error); |
130 | 136 | |
131 | 137 | if (priv->cancellable) { |
132 | g_object_unref(stream->priv->cancellable); | |
138 | g_object_unref(priv->cancellable); | |
133 | 139 | priv->cancellable = NULL; |
134 | 140 | } |
135 | 141 | |
142 | cleanup: | |
143 | priv->result = NULL; | |
136 | 144 | g_simple_async_result_complete(simple); |
137 | 145 | g_object_unref(simple); |
138 | ||
139 | return; | |
146 | return FALSE; | |
140 | 147 | } |
141 | 148 | |
142 | 149 | static void gvir_output_stream_write_async(GOutputStream *stream, |
148 | 155 | gpointer user_data) |
149 | 156 | { |
150 | 157 | GVirOutputStream *output_stream = GVIR_OUTPUT_STREAM(stream); |
151 | virStreamPtr handle; | |
152 | 158 | |
153 | 159 | g_return_if_fail(GVIR_IS_OUTPUT_STREAM(stream)); |
154 | 160 | g_return_if_fail(output_stream->priv->result == NULL); |
155 | 161 | |
156 | g_object_get(output_stream->priv->stream, "handle", &handle, NULL); | |
157 | ||
158 | if (virStreamEventAddCallback(handle, VIR_STREAM_EVENT_WRITABLE, | |
159 | gvir_output_stream_write_ready, stream, NULL) < 0) { | |
160 | g_simple_async_report_error_in_idle(G_OBJECT(stream), | |
161 | callback, | |
162 | user_data, | |
163 | G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT, | |
164 | "Couldn't add event callback %s", | |
165 | G_STRFUNC); | |
166 | goto end; | |
167 | } | |
162 | gvir_stream_add_watch_full(output_stream->priv->stream, | |
163 | G_PRIORITY_DEFAULT, | |
164 | GVIR_STREAM_IO_CONDITION_WRITABLE, | |
165 | gvir_output_stream_write_ready, | |
166 | g_object_ref(stream), | |
167 | (GDestroyNotify)g_object_unref); | |
168 | 168 | |
169 | 169 | output_stream->priv->result = |
170 | 170 | g_simple_async_result_new(G_OBJECT(stream), callback, user_data, |
174 | 174 | output_stream->priv->cancellable = cancellable; |
175 | 175 | output_stream->priv->buffer = buffer; |
176 | 176 | output_stream->priv->count = count; |
177 | ||
178 | end: | |
179 | virStreamFree(handle); | |
180 | } | |
181 | ||
182 | ||
183 | static gssize gvir_output_stream_write_finish(GOutputStream *stream, | |
184 | GAsyncResult *result, | |
177 | } | |
178 | ||
179 | ||
180 | static gssize gvir_output_stream_write_finish(GOutputStream *stream, | |
181 | GAsyncResult *result, | |
185 | 182 | GError **error G_GNUC_UNUSED) |
186 | 183 | { |
187 | 184 | GVirOutputStream *output_stream = GVIR_OUTPUT_STREAM(stream); |
190 | 187 | gssize count; |
191 | 188 | |
192 | 189 | g_return_val_if_fail(GVIR_IS_OUTPUT_STREAM(stream), -1); |
190 | g_return_val_if_fail(g_simple_async_result_is_valid(result, G_OBJECT(stream), | |
191 | gvir_output_stream_write_async), | |
192 | -1); | |
193 | 193 | g_object_get(output_stream->priv->stream, "handle", &handle, NULL); |
194 | 194 | |
195 | 195 | simple = G_SIMPLE_ASYNC_RESULT(result); |
196 | ||
197 | g_warn_if_fail(g_simple_async_result_get_source_tag(simple) == gvir_output_stream_write_async); | |
198 | 196 | |
199 | 197 | count = g_simple_async_result_get_op_res_gssize(simple); |
200 | 198 |
0 | 0 | /* |
1 | 1 | * libvirt-gobject-output-stream.h: libvirt gobject integration |
2 | 2 | * |
3 | * Copyright (C) 2011 Red Hat | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
32 | 32 | |
33 | 33 | G_BEGIN_DECLS |
34 | 34 | |
35 | #define GVIR_TYPE_OUTPUT_STREAM (_gvir_output_stream_get_type ()) | |
36 | #define GVIR_OUTPUT_STREAM(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ | |
37 | GVIR_TYPE_OUTPUT_STREAM, GVirOutputStream)) | |
38 | #define GVIR_OUTPUT_STREAM_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), \ | |
39 | GVIR_TYPE_OUTPUT_STREAM, GVirOutputStreamClass)) | |
40 | #define GVIR_IS_OUTPUT_STREAM(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \ | |
41 | GVIR_TYPE_OUTPUT_STREAM)) | |
42 | #define GVIR_IS_OUTPUT_STREAM_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), \ | |
43 | GVIR_TYPE_OUTPUT_STREAM)) | |
44 | #define GVIR_OUTPUT_STREAM_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), \ | |
45 | GVIR_TYPE_OUTPUT_STREAM, GVirOutputStreamClass)) | |
35 | #define GVIR_TYPE_OUTPUT_STREAM (_gvir_output_stream_get_type ()) | |
36 | #define GVIR_OUTPUT_STREAM(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), GVIR_TYPE_OUTPUT_STREAM, GVirOutputStream)) | |
37 | #define GVIR_OUTPUT_STREAM_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), GVIR_TYPE_OUTPUT_STREAM, GVirOutputStreamClass)) | |
38 | #define GVIR_IS_OUTPUT_STREAM(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), GVIR_TYPE_OUTPUT_STREAM)) | |
39 | #define GVIR_IS_OUTPUT_STREAM_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), GVIR_TYPE_OUTPUT_STREAM)) | |
40 | #define GVIR_OUTPUT_STREAM_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), GVIR_TYPE_OUTPUT_STREAM, GVirOutputStreamClass)) | |
46 | 41 | |
47 | typedef struct _GVirOutputStreamPrivate GVirOutputStreamPrivate; | |
48 | typedef struct _GVirOutputStreamClass GVirOutputStreamClass; | |
49 | typedef struct _GVirOutputStream GVirOutputStream; | |
42 | typedef struct _GVirOutputStreamPrivate GVirOutputStreamPrivate; | |
43 | typedef struct _GVirOutputStreamClass GVirOutputStreamClass; | |
44 | typedef struct _GVirOutputStream GVirOutputStream; | |
50 | 45 | |
51 | 46 | struct _GVirOutputStreamClass |
52 | 47 | { |
59 | 54 | GVirOutputStreamPrivate *priv; |
60 | 55 | }; |
61 | 56 | |
62 | GType _gvir_output_stream_get_type (void) G_GNUC_CONST; | |
63 | GVirOutputStream * _gvir_output_stream_new (GVirStream *stream); | |
57 | GType _gvir_output_stream_get_type(void) G_GNUC_CONST; | |
58 | GVirOutputStream *_gvir_output_stream_new(GVirStream *stream); | |
64 | 59 | |
65 | 60 | G_END_DECLS |
66 | 61 |
1 | 1 | * libvirt-gobject-secret.c: libvirt glib integration |
2 | 2 | * |
3 | 3 | * Copyright (C) 2008 Daniel P. Berrange |
4 | * Copyright (C) 2010 Red Hat | |
4 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
5 | 5 | * |
6 | 6 | * This library is free software; you can redistribute it and/or |
7 | 7 | * modify it under the terms of the GNU Lesser General Public |
28 | 28 | #include "libvirt-glib/libvirt-glib.h" |
29 | 29 | #include "libvirt-gobject/libvirt-gobject.h" |
30 | 30 | #include "libvirt-gobject-compat.h" |
31 | ||
32 | extern gboolean debugFlag; | |
33 | ||
34 | #define DEBUG(fmt, ...) do { if (G_UNLIKELY(debugFlag)) g_debug(fmt, ## __VA_ARGS__); } while (0) | |
35 | 31 | |
36 | 32 | #define GVIR_SECRET_GET_PRIVATE(obj) \ |
37 | 33 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_TYPE_SECRET, GVirSecretPrivate)) |
105 | 101 | GVirSecret *conn = GVIR_SECRET(object); |
106 | 102 | GVirSecretPrivate *priv = conn->priv; |
107 | 103 | |
108 | DEBUG("Finalize GVirSecret=%p", conn); | |
104 | g_debug("Finalize GVirSecret=%p", conn); | |
109 | 105 | |
110 | 106 | virSecretFree(priv->handle); |
111 | 107 | |
155 | 151 | |
156 | 152 | static void gvir_secret_init(GVirSecret *conn) |
157 | 153 | { |
158 | GVirSecretPrivate *priv; | |
159 | ||
160 | DEBUG("Init GVirSecret=%p", conn); | |
161 | ||
162 | priv = conn->priv = GVIR_SECRET_GET_PRIVATE(conn); | |
163 | ||
164 | memset(priv, 0, sizeof(*priv)); | |
154 | g_debug("Init GVirSecret=%p", conn); | |
155 | ||
156 | conn->priv = GVIR_SECRET_GET_PRIVATE(conn); | |
165 | 157 | } |
166 | 158 | |
167 | 159 | typedef struct virSecret GVirSecretHandle; |
204 | 196 | gchar *xml; |
205 | 197 | |
206 | 198 | if (!(xml = virSecretGetXMLDesc(priv->handle, flags))) { |
207 | if (err) | |
208 | *err = gvir_error_new_literal(GVIR_SECRET_ERROR, | |
209 | 0, | |
210 | "Unable to get secret XML config"); | |
199 | gvir_set_error_literal(err, GVIR_SECRET_ERROR, | |
200 | 0, | |
201 | "Unable to get secret XML config"); | |
211 | 202 | return NULL; |
212 | 203 | } |
213 | 204 |
0 | 0 | /* |
1 | 1 | * libvirt-gobject-secret.c: libvirt gobject integration |
2 | 2 | * |
3 | * Copyright (C) 2010 Red Hat | |
3 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
1 | 1 | * libvirt-gobject-storage_pool.c: libvirt glib integration |
2 | 2 | * |
3 | 3 | * Copyright (C) 2008 Daniel P. Berrange |
4 | * Copyright (C) 2010 Red Hat | |
4 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
5 | 5 | * |
6 | 6 | * This library is free software; you can redistribute it and/or |
7 | 7 | * modify it under the terms of the GNU Lesser General Public |
28 | 28 | #include "libvirt-glib/libvirt-glib.h" |
29 | 29 | #include "libvirt-gobject/libvirt-gobject.h" |
30 | 30 | #include "libvirt-gobject-compat.h" |
31 | ||
32 | extern gboolean debugFlag; | |
33 | ||
34 | #define DEBUG(fmt, ...) do { if (G_UNLIKELY(debugFlag)) g_debug(fmt, ## __VA_ARGS__); } while (0) | |
35 | 31 | |
36 | 32 | #define GVIR_STORAGE_POOL_GET_PRIVATE(obj) \ |
37 | 33 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_TYPE_STORAGE_POOL, GVirStoragePoolPrivate)) |
108 | 104 | GVirStoragePool *pool = GVIR_STORAGE_POOL(object); |
109 | 105 | GVirStoragePoolPrivate *priv = pool->priv; |
110 | 106 | |
111 | DEBUG("Finalize GVirStoragePool=%p", pool); | |
107 | g_debug("Finalize GVirStoragePool=%p", pool); | |
112 | 108 | |
113 | 109 | if (priv->volumes) { |
114 | 110 | g_hash_table_unref(priv->volumes); |
167 | 163 | { |
168 | 164 | GVirStoragePoolPrivate *priv; |
169 | 165 | |
170 | DEBUG("Init GVirStoragePool=%p", pool); | |
166 | g_debug("Init GVirStoragePool=%p", pool); | |
171 | 167 | |
172 | 168 | priv = pool->priv = GVIR_STORAGE_POOL_GET_PRIVATE(pool); |
173 | ||
174 | memset(priv, 0, sizeof(*priv)); | |
175 | 169 | |
176 | 170 | priv->lock = g_mutex_new(); |
177 | 171 | } |
193 | 187 | |
194 | 188 | G_DEFINE_BOXED_TYPE(GVirStoragePoolHandle, gvir_storage_pool_handle, |
195 | 189 | gvir_storage_pool_handle_copy, gvir_storage_pool_handle_free) |
190 | ||
191 | static GVirStoragePoolInfo * | |
192 | gvir_storage_pool_info_copy(GVirStoragePoolInfo *info) | |
193 | { | |
194 | return g_slice_dup(GVirStoragePoolInfo, info); | |
195 | } | |
196 | ||
197 | static void | |
198 | gvir_storage_pool_info_free(GVirStoragePoolInfo *info) | |
199 | { | |
200 | g_slice_free(GVirStoragePoolInfo, info); | |
201 | } | |
202 | ||
203 | G_DEFINE_BOXED_TYPE(GVirStoragePoolInfo, gvir_storage_pool_info, | |
204 | gvir_storage_pool_info_copy, gvir_storage_pool_info_free) | |
196 | 205 | |
197 | 206 | const gchar *gvir_storage_pool_get_name(GVirStoragePool *pool) |
198 | 207 | { |
229 | 238 | gchar *xml; |
230 | 239 | |
231 | 240 | if (!(xml = virStoragePoolGetXMLDesc(priv->handle, flags))) { |
241 | gvir_set_error_literal(err, GVIR_STORAGE_POOL_ERROR, | |
242 | 0, | |
243 | "Unable to get storage_pool XML config"); | |
244 | return NULL; | |
245 | } | |
246 | ||
247 | GVirConfigStoragePool *conf = gvir_config_storage_pool_new_from_xml(xml, err); | |
248 | ||
249 | free(xml); | |
250 | return conf; | |
251 | } | |
252 | ||
253 | /** | |
254 | * gvir_storage_pool_get_info: | |
255 | * @pool: the storage_pool | |
256 | * Returns: (transfer full): the info | |
257 | */ | |
258 | GVirStoragePoolInfo *gvir_storage_pool_get_info(GVirStoragePool *pool, | |
259 | GError **err) | |
260 | { | |
261 | GVirStoragePoolPrivate *priv = pool->priv; | |
262 | virStoragePoolInfo info; | |
263 | GVirStoragePoolInfo *ret; | |
264 | ||
265 | if (virStoragePoolGetInfo(priv->handle, &info) < 0) { | |
232 | 266 | if (err) |
233 | 267 | *err = gvir_error_new_literal(GVIR_STORAGE_POOL_ERROR, |
234 | 268 | 0, |
235 | "Unable to get storage_pool XML config"); | |
269 | "Unable to get storage pool info"); | |
236 | 270 | return NULL; |
237 | 271 | } |
238 | 272 | |
239 | GVirConfigStoragePool *conf = gvir_config_storage_pool_new_from_xml(xml, err); | |
240 | ||
241 | free(xml); | |
242 | return conf; | |
273 | ret = g_slice_new(GVirStoragePoolInfo); | |
274 | ret->state = info.state; | |
275 | ret->capacity = info.capacity; | |
276 | ret->allocation = info.allocation; | |
277 | ret->available = info.available; | |
278 | ||
279 | return ret; | |
243 | 280 | } |
244 | 281 | |
245 | 282 | typedef gint (* CountFunction) (virStoragePoolPtr vpool); |
258 | 295 | gint i; |
259 | 296 | |
260 | 297 | if ((n = count_func(vpool)) < 0) { |
261 | *err = gvir_error_new(GVIR_STORAGE_POOL_ERROR, | |
262 | 0, | |
263 | "Unable to count %s", name); | |
298 | gvir_set_error(err, GVIR_STORAGE_POOL_ERROR, | |
299 | 0, | |
300 | "Unable to count %s", name); | |
264 | 301 | goto error; |
265 | 302 | } |
266 | 303 | |
270 | 307 | |
271 | 308 | lst = g_new(gchar *, n); |
272 | 309 | if ((n = list_func(vpool, lst, n)) < 0) { |
273 | *err = gvir_error_new(GVIR_STORAGE_POOL_ERROR, | |
274 | 0, | |
275 | "Unable to list %s %d", name, n); | |
310 | gvir_set_error(err, GVIR_STORAGE_POOL_ERROR, | |
311 | 0, | |
312 | "Unable to list %s %d", name, n); | |
276 | 313 | goto error; |
277 | 314 | } |
278 | 315 | } |
308 | 345 | vpool = priv->handle; |
309 | 346 | |
310 | 347 | if (virStoragePoolRefresh(vpool, 0) < 0) { |
311 | if (err) | |
312 | *err = gvir_error_new_literal(GVIR_STORAGE_POOL_ERROR, | |
313 | 0, | |
314 | "Unable to refresh storage pool"); | |
348 | gvir_set_error_literal(err, GVIR_STORAGE_POOL_ERROR, | |
349 | 0, | |
350 | "Unable to refresh storage pool"); | |
315 | 351 | goto cleanup; |
316 | 352 | } |
317 | 353 | |
400 | 436 | res = g_simple_async_result_new(G_OBJECT(pool), |
401 | 437 | callback, |
402 | 438 | user_data, |
403 | gvir_storage_pool_refresh); | |
439 | gvir_storage_pool_refresh_async); | |
404 | 440 | g_simple_async_result_run_in_thread(res, |
405 | 441 | gvir_storage_pool_refresh_helper, |
406 | 442 | G_PRIORITY_DEFAULT, |
418 | 454 | GError **err) |
419 | 455 | { |
420 | 456 | g_return_val_if_fail(GVIR_IS_STORAGE_POOL(pool), FALSE); |
421 | g_return_val_if_fail(G_IS_ASYNC_RESULT(result), FALSE); | |
422 | ||
423 | if (G_IS_SIMPLE_ASYNC_RESULT(result)) { | |
424 | GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT(result); | |
425 | g_warn_if_fail (g_simple_async_result_get_source_tag(simple) == | |
426 | gvir_storage_pool_refresh); | |
427 | if (g_simple_async_result_propagate_error(simple, err)) | |
428 | return FALSE; | |
429 | } | |
457 | g_return_val_if_fail(g_simple_async_result_is_valid(result, G_OBJECT(pool), | |
458 | gvir_storage_pool_refresh_async), | |
459 | FALSE); | |
460 | ||
461 | if (g_simple_async_result_propagate_error(G_SIMPLE_ASYNC_RESULT(result), | |
462 | err)) | |
463 | return FALSE; | |
430 | 464 | |
431 | 465 | return TRUE; |
432 | 466 | } |
440 | 474 | * gvir_storage_pool_get_volumes: |
441 | 475 | * @pool: the storage pool |
442 | 476 | * |
443 | * Return value: (element-type LibvirtGObject.StoragePool) (transfer full): List | |
477 | * Return value: (element-type LibvirtGObject.StorageVol) (transfer full): List | |
444 | 478 | * of #GVirStorageVol |
445 | 479 | */ |
446 | 480 | GList *gvir_storage_pool_get_volumes(GVirStoragePool *pool) |
500 | 534 | g_return_val_if_fail(xml != NULL, NULL); |
501 | 535 | |
502 | 536 | if (!(handle = virStorageVolCreateXML(priv->handle, xml, 0))) { |
503 | if (err) | |
504 | *err = gvir_error_new_literal(GVIR_STORAGE_POOL_ERROR, | |
505 | 0, | |
506 | "Failed to create volume"); | |
537 | gvir_set_error_literal(err, GVIR_STORAGE_POOL_ERROR, | |
538 | 0, | |
539 | "Failed to create volume"); | |
507 | 540 | return NULL; |
508 | 541 | } |
509 | 542 | |
535 | 568 | GError **err) |
536 | 569 | { |
537 | 570 | if (virStoragePoolBuild(pool->priv->handle, flags)) { |
538 | if (err) | |
539 | *err = gvir_error_new_literal(GVIR_STORAGE_POOL_ERROR, | |
540 | 0, | |
541 | "Failed to build storage pool"); | |
571 | gvir_set_error_literal(err, GVIR_STORAGE_POOL_ERROR, | |
572 | 0, | |
573 | "Failed to build storage pool"); | |
542 | 574 | return FALSE; |
543 | 575 | } |
544 | 576 | |
586 | 618 | GSimpleAsyncResult *res; |
587 | 619 | StoragePoolBuildData *data; |
588 | 620 | |
589 | data = g_new0(StoragePoolBuildData, 1); | |
621 | data = g_slice_new0(StoragePoolBuildData); | |
590 | 622 | data->flags = flags; |
591 | 623 | |
592 | 624 | res = g_simple_async_result_new(G_OBJECT(pool), |
593 | 625 | callback, |
594 | 626 | user_data, |
595 | gvir_storage_pool_build); | |
627 | gvir_storage_pool_build_async); | |
596 | 628 | g_object_set_data(G_OBJECT(res), "StoragePoolBuildData", data); |
597 | 629 | g_simple_async_result_run_in_thread(res, |
598 | 630 | gvir_storage_pool_build_helper, |
614 | 646 | GError **err) |
615 | 647 | { |
616 | 648 | g_return_val_if_fail(GVIR_IS_STORAGE_POOL(pool), FALSE); |
617 | g_return_val_if_fail(G_IS_ASYNC_RESULT(result), FALSE); | |
618 | ||
619 | if (G_IS_SIMPLE_ASYNC_RESULT(result)) { | |
620 | GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT(result); | |
621 | g_warn_if_fail (g_simple_async_result_get_source_tag(simple) == | |
622 | gvir_storage_pool_build); | |
623 | if (g_simple_async_result_propagate_error(simple, err)) | |
624 | return FALSE; | |
625 | } | |
649 | g_return_val_if_fail(g_simple_async_result_is_valid(result, G_OBJECT(pool), | |
650 | gvir_storage_pool_build_async), | |
651 | FALSE); | |
652 | ||
653 | if (g_simple_async_result_propagate_error(G_SIMPLE_ASYNC_RESULT(result), | |
654 | err)) | |
655 | return FALSE; | |
626 | 656 | |
627 | 657 | return TRUE; |
628 | 658 | } |
640 | 670 | GError **err) |
641 | 671 | { |
642 | 672 | if (virStoragePoolCreate(pool->priv->handle, flags)) { |
643 | if (err) | |
644 | *err = gvir_error_new_literal(GVIR_STORAGE_POOL_ERROR, | |
645 | 0, | |
646 | "Failed to start storage pool"); | |
673 | gvir_set_error_literal(err, GVIR_STORAGE_POOL_ERROR, | |
674 | 0, | |
675 | "Failed to start storage pool"); | |
647 | 676 | return FALSE; |
648 | 677 | } |
649 | 678 | |
687 | 716 | GSimpleAsyncResult *res; |
688 | 717 | StoragePoolBuildData *data; |
689 | 718 | |
690 | data = g_new0(StoragePoolBuildData, 1); | |
719 | data = g_slice_new0(StoragePoolBuildData); | |
691 | 720 | data->flags = flags; |
692 | 721 | |
693 | 722 | res = g_simple_async_result_new(G_OBJECT(pool), |
694 | 723 | callback, |
695 | 724 | user_data, |
696 | gvir_storage_pool_start); | |
725 | gvir_storage_pool_start_async); | |
697 | 726 | g_object_set_data(G_OBJECT(res), "StoragePoolBuildData", data); |
698 | 727 | g_simple_async_result_run_in_thread(res, |
699 | 728 | gvir_storage_pool_start_helper, |
715 | 744 | GError **err) |
716 | 745 | { |
717 | 746 | g_return_val_if_fail(GVIR_IS_STORAGE_POOL(pool), FALSE); |
718 | g_return_val_if_fail(G_IS_ASYNC_RESULT(result), FALSE); | |
719 | ||
720 | if (G_IS_SIMPLE_ASYNC_RESULT(result)) { | |
721 | GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT(result); | |
722 | g_warn_if_fail (g_simple_async_result_get_source_tag(simple) == | |
723 | gvir_storage_pool_start); | |
724 | if (g_simple_async_result_propagate_error(simple, err)) | |
725 | return FALSE; | |
726 | } | |
747 | g_return_val_if_fail(g_simple_async_result_is_valid(result, G_OBJECT(pool), | |
748 | gvir_storage_pool_start_async), | |
749 | FALSE); | |
750 | ||
751 | if (g_simple_async_result_propagate_error(G_SIMPLE_ASYNC_RESULT(result), | |
752 | err)) | |
753 | return FALSE; | |
727 | 754 | |
728 | 755 | return TRUE; |
729 | 756 | } |
0 | 0 | /* |
1 | 1 | * libvirt-gobject-storage_pool.c: libvirt gobject integration |
2 | 2 | * |
3 | * Copyright (C) 2010 Red Hat | |
3 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
35 | 35 | #define GVIR_IS_STORAGE_POOL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_TYPE_STORAGE_POOL)) |
36 | 36 | #define GVIR_STORAGE_POOL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_TYPE_STORAGE_POOL, GVirStoragePoolClass)) |
37 | 37 | |
38 | #define GVIR_TYPE_STORAGE_POOL_INFO (gvir_storage_pool_info_get_type()) | |
38 | 39 | #define GVIR_TYPE_STORAGE_POOL_HANDLE (gvir_storage_pool_handle_get_type()) |
39 | 40 | |
40 | 41 | typedef struct _GVirStoragePool GVirStoragePool; |
57 | 58 | gpointer padding[20]; |
58 | 59 | }; |
59 | 60 | |
61 | typedef enum { | |
62 | GVIR_STORAGE_POOL_STATE_INACTIVE = 0, /* Not running */ | |
63 | GVIR_STORAGE_POOL_STATE_BUILDING = 1, /* Initializing pool, not available */ | |
64 | GVIR_STORAGE_POOL_STATE_RUNNING = 2, /* Running normally */ | |
65 | GVIR_STORAGE_POOL_STATE_DEGRADED = 3, /* Running degraded */ | |
66 | GVIR_STORAGE_POOL_STATE_INACCESSIBLE = 4, /* Running, but not accessible */ | |
67 | } GVirStoragePoolState; | |
68 | ||
69 | typedef struct _GVirStoragePoolInfo GVirStoragePoolInfo; | |
70 | struct _GVirStoragePoolInfo | |
71 | { | |
72 | GVirStoragePoolState state; /* the state */ | |
73 | guint64 capacity; /* Logical size bytes */ | |
74 | guint64 allocation; /* Current allocation bytes */ | |
75 | guint64 available; /* Remaining free space bytes */ | |
76 | }; | |
60 | 77 | |
61 | 78 | GType gvir_storage_pool_get_type(void); |
79 | GType gvir_storage_pool_info_get_type(void); | |
62 | 80 | GType gvir_storage_pool_handle_get_type(void); |
63 | 81 | |
64 | 82 | const gchar *gvir_storage_pool_get_name(GVirStoragePool *pool); |
67 | 85 | GVirConfigStoragePool *gvir_storage_pool_get_config(GVirStoragePool *pool, |
68 | 86 | guint flags, |
69 | 87 | GError **err); |
88 | ||
89 | GVirStoragePoolInfo *gvir_storage_pool_get_info(GVirStoragePool *pool, | |
90 | GError **err); | |
70 | 91 | |
71 | 92 | gboolean gvir_storage_pool_refresh(GVirStoragePool *pool, |
72 | 93 | GCancellable *cancellable, |
1 | 1 | * libvirt-gobject-storage_vol.c: libvirt glib integration |
2 | 2 | * |
3 | 3 | * Copyright (C) 2008 Daniel P. Berrange |
4 | * Copyright (C) 2010 Red Hat | |
4 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
5 | 5 | * |
6 | 6 | * This library is free software; you can redistribute it and/or |
7 | 7 | * modify it under the terms of the GNU Lesser General Public |
28 | 28 | #include "libvirt-glib/libvirt-glib.h" |
29 | 29 | #include "libvirt-gobject/libvirt-gobject.h" |
30 | 30 | #include "libvirt-gobject-compat.h" |
31 | ||
32 | extern gboolean debugFlag; | |
33 | ||
34 | #define DEBUG(fmt, ...) do { if (G_UNLIKELY(debugFlag)) g_debug(fmt, ## __VA_ARGS__); } while (0) | |
35 | 31 | |
36 | 32 | #define GVIR_STORAGE_VOL_GET_PRIVATE(obj) \ |
37 | 33 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_TYPE_STORAGE_VOL, GVirStorageVolPrivate)) |
104 | 100 | GVirStorageVol *conn = GVIR_STORAGE_VOL(object); |
105 | 101 | GVirStorageVolPrivate *priv = conn->priv; |
106 | 102 | |
107 | DEBUG("Finalize GVirStorageVol=%p", conn); | |
103 | g_debug("Finalize GVirStorageVol=%p", conn); | |
108 | 104 | |
109 | 105 | virStorageVolFree(priv->handle); |
110 | 106 | |
139 | 135 | |
140 | 136 | static void gvir_storage_vol_init(GVirStorageVol *conn) |
141 | 137 | { |
142 | GVirStorageVolPrivate *priv; | |
143 | ||
144 | DEBUG("Init GVirStorageVol=%p", conn); | |
145 | ||
146 | priv = conn->priv = GVIR_STORAGE_VOL_GET_PRIVATE(conn); | |
147 | ||
148 | memset(priv, 0, sizeof(*priv)); | |
138 | g_debug("Init GVirStorageVol=%p", conn); | |
139 | ||
140 | conn->priv = GVIR_STORAGE_VOL_GET_PRIVATE(conn); | |
149 | 141 | } |
150 | 142 | |
151 | 143 | typedef struct virStorageVol GVirStorageVolHandle; |
165 | 157 | |
166 | 158 | G_DEFINE_BOXED_TYPE(GVirStorageVolHandle, gvir_storage_vol_handle, |
167 | 159 | gvir_storage_vol_handle_copy, gvir_storage_vol_handle_free) |
160 | ||
161 | static GVirStorageVolInfo * | |
162 | gvir_storage_vol_info_copy(GVirStorageVolInfo *info) | |
163 | { | |
164 | return g_slice_dup(GVirStorageVolInfo, info); | |
165 | } | |
166 | ||
167 | static void | |
168 | gvir_storage_vol_info_free(GVirStorageVolInfo *info) | |
169 | { | |
170 | g_slice_free(GVirStorageVolInfo, info); | |
171 | } | |
172 | ||
173 | G_DEFINE_BOXED_TYPE(GVirStorageVolInfo, gvir_storage_vol_info, | |
174 | gvir_storage_vol_info_copy, gvir_storage_vol_info_free) | |
168 | 175 | |
169 | 176 | const gchar *gvir_storage_vol_get_name(GVirStorageVol *vol) |
170 | 177 | { |
204 | 211 | gchar *xml; |
205 | 212 | |
206 | 213 | if (!(xml = virStorageVolGetXMLDesc(priv->handle, flags))) { |
214 | gvir_set_error_literal(err, GVIR_STORAGE_VOL_ERROR, | |
215 | 0, | |
216 | "Unable to get storage_vol XML config"); | |
217 | return NULL; | |
218 | } | |
219 | ||
220 | GVirConfigStorageVol *conf = gvir_config_storage_vol_new_from_xml(xml, err); | |
221 | ||
222 | free(xml); | |
223 | return conf; | |
224 | } | |
225 | ||
226 | /** | |
227 | * gvir_storage_vol_get_info: | |
228 | * @vol: the storage_vol | |
229 | * Returns: (transfer full): the info | |
230 | */ | |
231 | GVirStorageVolInfo *gvir_storage_vol_get_info(GVirStorageVol *vol, | |
232 | GError **err) | |
233 | { | |
234 | GVirStorageVolPrivate *priv = vol->priv; | |
235 | virStorageVolInfo info; | |
236 | GVirStorageVolInfo *ret; | |
237 | ||
238 | if (virStorageVolGetInfo(priv->handle, &info) < 0) { | |
207 | 239 | if (err) |
208 | 240 | *err = gvir_error_new_literal(GVIR_STORAGE_VOL_ERROR, |
209 | 241 | 0, |
210 | "Unable to get storage_vol XML config"); | |
242 | "Unable to get storage vol info"); | |
211 | 243 | return NULL; |
212 | 244 | } |
213 | 245 | |
214 | GVirConfigStorageVol *conf = gvir_config_storage_vol_new_from_xml(xml, err); | |
215 | ||
216 | free(xml); | |
217 | return conf; | |
218 | } | |
246 | ret = g_slice_new(GVirStorageVolInfo); | |
247 | ret->type = info.type; | |
248 | ret->capacity = info.capacity; | |
249 | ret->allocation = info.allocation; | |
250 | ||
251 | return ret; | |
252 | } | |
253 | ||
254 | /** | |
255 | * gvir_storage_vol_delete: | |
256 | * @vol: the storage volume to delete | |
257 | * @flags: the flags | |
258 | * @err: Return location for errors, or NULL | |
259 | * | |
260 | * Deletes the storage volume @vol. | |
261 | * | |
262 | * Returns: %TRUE on success, %FALSE otherwise | |
263 | */ | |
264 | gboolean gvir_storage_vol_delete(GVirStorageVol *vol, | |
265 | guint flags, | |
266 | GError **err) | |
267 | { | |
268 | if (virStorageVolDelete(vol->priv->handle, flags) < 0) { | |
269 | gvir_set_error_literal(err, | |
270 | GVIR_STORAGE_VOL_ERROR, | |
271 | 0, | |
272 | "Unable to delete storage volume"); | |
273 | return FALSE; | |
274 | } | |
275 | ||
276 | return TRUE; | |
277 | } |
0 | 0 | /* |
1 | 1 | * libvirt-gobject-storage_vol.c: libvirt gobject integration |
2 | 2 | * |
3 | * Copyright (C) 2010 Red Hat | |
3 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
35 | 35 | #define GVIR_IS_STORAGE_VOL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_TYPE_STORAGE_VOL)) |
36 | 36 | #define GVIR_STORAGE_VOL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_TYPE_STORAGE_VOL, GVirStorageVolClass)) |
37 | 37 | |
38 | #define GVIR_TYPE_STORAGE_VOL_INFO (gvir_storage_vol_info_get_type()) | |
38 | 39 | #define GVIR_TYPE_STORAGE_VOL_HANDLE (gvir_storage_vol_handle_get_type()) |
39 | 40 | |
40 | 41 | typedef struct _GVirStorageVol GVirStorageVol; |
57 | 58 | gpointer padding[20]; |
58 | 59 | }; |
59 | 60 | |
61 | typedef enum { | |
62 | GVIR_STORAGE_VOL_STATE_FILE = 0, /* Regular file based volume */ | |
63 | GVIR_STORAGE_VOL_STATE_BLOCK = 1, /* Block based volume */ | |
64 | GVIR_STORAGE_VOL_STATE_DIR = 2, /* Directory-passthrough based volume */ | |
65 | } GVirStorageVolType; | |
66 | ||
67 | typedef struct _GVirStorageVolInfo GVirStorageVolInfo; | |
68 | struct _GVirStorageVolInfo | |
69 | { | |
70 | GVirStorageVolType type; /* Type flags */ | |
71 | guint64 capacity; /* Logical size bytes */ | |
72 | guint64 allocation; /* Current allocation bytes */ | |
73 | }; | |
74 | ||
60 | 75 | GType gvir_storage_vol_get_type(void); |
76 | GType gvir_storage_vol_info_get_type(void); | |
61 | 77 | GType gvir_storage_vol_handle_get_type(void); |
62 | 78 | |
63 | 79 | const gchar *gvir_storage_vol_get_name(GVirStorageVol *vol); |
64 | 80 | const gchar *gvir_storage_vol_get_path(GVirStorageVol *vol); |
65 | 81 | |
82 | gboolean gvir_storage_vol_delete(GVirStorageVol *vol, | |
83 | guint flags, | |
84 | GError **err); | |
85 | ||
66 | 86 | GVirConfigStorageVol *gvir_storage_vol_get_config(GVirStorageVol *vol, |
67 | 87 | guint flags, |
68 | 88 | GError **err); |
89 | GVirStorageVolInfo *gvir_storage_vol_get_info(GVirStorageVol *vol, | |
90 | GError **err); | |
69 | 91 | |
70 | 92 | G_END_DECLS |
71 | 93 |
1 | 1 | * libvirt-gobject-stream.c: libvirt glib integration |
2 | 2 | * |
3 | 3 | * Copyright (C) 2008 Daniel P. Berrange |
4 | * Copyright (C) 2010 Red Hat | |
4 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
5 | 5 | * |
6 | 6 | * This library is free software; you can redistribute it and/or |
7 | 7 | * modify it under the terms of the GNU Lesser General Public |
33 | 33 | #include "libvirt-gobject/libvirt-gobject-input-stream.h" |
34 | 34 | #include "libvirt-gobject/libvirt-gobject-output-stream.h" |
35 | 35 | |
36 | extern gboolean debugFlag; | |
37 | ||
38 | #define DEBUG(fmt, ...) do { if (G_UNLIKELY(debugFlag)) g_debug(fmt, ## __VA_ARGS__); } while (0) | |
39 | ||
40 | 36 | #define GVIR_STREAM_GET_PRIVATE(obj) \ |
41 | 37 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_TYPE_STREAM, GVirStreamPrivate)) |
42 | 38 | |
45 | 41 | virStreamPtr handle; |
46 | 42 | GInputStream *input_stream; |
47 | 43 | GOutputStream *output_stream; |
44 | ||
45 | gboolean eventRegistered; | |
46 | int eventLast; | |
47 | GList *sources; | |
48 | 48 | }; |
49 | ||
50 | typedef struct { | |
51 | GSource source; | |
52 | GVirStreamIOCondition cond; | |
53 | GVirStreamIOCondition newCond; | |
54 | GVirStream *stream; | |
55 | } GVirStreamSource; | |
56 | ||
49 | 57 | |
50 | 58 | G_DEFINE_TYPE(GVirStream, gvir_stream, G_TYPE_IO_STREAM); |
51 | 59 | |
89 | 97 | |
90 | 98 | |
91 | 99 | static gboolean gvir_stream_close(GIOStream *io_stream, |
92 | GCancellable *cancellable, G_GNUC_UNUSED GError **error) | |
100 | GCancellable *cancellable, | |
101 | G_GNUC_UNUSED GError **error) | |
93 | 102 | { |
94 | 103 | GVirStream *self = GVIR_STREAM(io_stream); |
95 | 104 | |
103 | 112 | } |
104 | 113 | |
105 | 114 | |
106 | static void gvir_stream_close_async(GIOStream *stream, G_GNUC_UNUSED int io_priority, | |
107 | GCancellable *cancellable, GAsyncReadyCallback callback, | |
115 | static void gvir_stream_close_async(GIOStream *stream, | |
116 | int io_priority G_GNUC_UNUSED, | |
117 | GCancellable *cancellable, | |
118 | GAsyncReadyCallback callback, | |
108 | 119 | gpointer user_data) |
109 | 120 | { |
110 | 121 | GSimpleAsyncResult *res; |
133 | 144 | |
134 | 145 | |
135 | 146 | static gboolean |
136 | gvir_stream_close_finish(G_GNUC_UNUSED GIOStream *stream, | |
137 | G_GNUC_UNUSED GAsyncResult *result, | |
138 | G_GNUC_UNUSED GError **error) | |
147 | gvir_stream_close_finish(GIOStream *stream G_GNUC_UNUSED, | |
148 | GAsyncResult *result G_GNUC_UNUSED, | |
149 | GError **error G_GNUC_UNUSED) | |
139 | 150 | { |
140 | 151 | return TRUE; |
141 | 152 | } |
185 | 196 | { |
186 | 197 | GVirStream *self = GVIR_STREAM(object); |
187 | 198 | GVirStreamPrivate *priv = self->priv; |
188 | ||
189 | DEBUG("Finalize GVirStream=%p", self); | |
199 | GList *tmp; | |
200 | ||
201 | g_debug("Finalize GVirStream=%p", self); | |
190 | 202 | |
191 | 203 | if (self->priv->input_stream) |
192 | 204 | g_object_unref(self->priv->input_stream); |
197 | 209 | |
198 | 210 | virStreamFree(priv->handle); |
199 | 211 | } |
212 | ||
213 | tmp = priv->sources; | |
214 | while (tmp) { | |
215 | GVirStreamSource *source = tmp->data; | |
216 | g_source_destroy((GSource*)source); | |
217 | tmp = tmp->next; | |
218 | } | |
219 | g_list_free(priv->sources); | |
200 | 220 | |
201 | 221 | G_OBJECT_CLASS(gvir_stream_parent_class)->finalize(object); |
202 | 222 | } |
279 | 299 | * Returns: Number of bytes read, or 0 if the end of stream reached, |
280 | 300 | * or -1 on error. |
281 | 301 | */ |
282 | gssize gvir_stream_receive(GVirStream *self, gchar *buffer, gsize size, | |
283 | GCancellable *cancellable, GError **error) | |
302 | gssize gvir_stream_receive(GVirStream *self, | |
303 | gchar *buffer, | |
304 | gsize size, | |
305 | GCancellable *cancellable, | |
306 | GError **error) | |
284 | 307 | { |
285 | 308 | int got; |
286 | 309 | |
306 | 329 | GVirStream *self; |
307 | 330 | GVirStreamSinkFunc func; |
308 | 331 | gpointer user_data; |
332 | GCancellable *cancellable; | |
309 | 333 | }; |
310 | 334 | |
311 | 335 | static int |
312 | 336 | stream_sink(virStreamPtr st G_GNUC_UNUSED, |
313 | const char *bytes, size_t nbytes, void *opaque) | |
337 | const char *bytes, | |
338 | size_t nbytes, | |
339 | void *opaque) | |
314 | 340 | { |
315 | 341 | struct stream_sink_helper *helper = opaque; |
342 | ||
343 | if (g_cancellable_is_cancelled(helper->cancellable)) | |
344 | return -1; | |
316 | 345 | |
317 | 346 | return helper->func(helper->self, bytes, nbytes, helper->user_data); |
318 | 347 | } |
320 | 349 | /** |
321 | 350 | * gvir_stream_receive_all: |
322 | 351 | * @stream: the stream |
352 | * @cancellable: cancellation notifier | |
323 | 353 | * @func: (scope notified): the callback for writing data to application |
324 | 354 | * @user_data: (closure): data to be passed to @callback |
325 | 355 | * Returns: the number of bytes consumed or -1 upon error |
329 | 359 | * to virStreamRecv, for apps that do blocking-I/o. |
330 | 360 | */ |
331 | 361 | gssize |
332 | gvir_stream_receive_all(GVirStream *self, GVirStreamSinkFunc func, gpointer user_data, GError **err) | |
362 | gvir_stream_receive_all(GVirStream *self, | |
363 | GCancellable *cancellable, | |
364 | GVirStreamSinkFunc func, | |
365 | gpointer user_data, | |
366 | GError **err) | |
333 | 367 | { |
334 | 368 | struct stream_sink_helper helper = { |
335 | 369 | .self = self, |
336 | 370 | .func = func, |
337 | .user_data = user_data | |
371 | .user_data = user_data, | |
372 | .cancellable = cancellable, | |
338 | 373 | }; |
339 | 374 | int r; |
340 | 375 | |
343 | 378 | |
344 | 379 | r = virStreamRecvAll(self->priv->handle, stream_sink, &helper); |
345 | 380 | if (r < 0) { |
346 | if (err != NULL) | |
347 | *err = gvir_error_new_literal(GVIR_STREAM_ERROR, | |
348 | 0, | |
349 | "Unable to perform RecvAll"); | |
381 | gvir_set_error_literal(err, GVIR_STREAM_ERROR, | |
382 | 0, | |
383 | "Unable to perform RecvAll"); | |
350 | 384 | } |
351 | 385 | |
352 | 386 | return r; |
375 | 409 | * Returns: Number of bytes read, or 0 if the end of stream reached, |
376 | 410 | * or -1 on error. |
377 | 411 | */ |
378 | gssize gvir_stream_send(GVirStream *self, const gchar *buffer, gsize size, | |
379 | GCancellable *cancellable, GError **error) | |
412 | gssize gvir_stream_send(GVirStream *self, | |
413 | const gchar *buffer, | |
414 | gsize size, | |
415 | GCancellable *cancellable, | |
416 | GError **error) | |
380 | 417 | { |
381 | 418 | int got; |
382 | 419 | |
402 | 439 | GVirStream *self; |
403 | 440 | GVirStreamSourceFunc func; |
404 | 441 | gpointer user_data; |
442 | GCancellable *cancellable; | |
405 | 443 | }; |
406 | 444 | |
407 | 445 | static int |
408 | 446 | stream_source(virStreamPtr st G_GNUC_UNUSED, |
409 | char *bytes, size_t nbytes, void *opaque) | |
447 | char *bytes, | |
448 | size_t nbytes, | |
449 | void *opaque) | |
410 | 450 | { |
411 | 451 | struct stream_source_helper *helper = opaque; |
452 | ||
453 | if (g_cancellable_is_cancelled(helper->cancellable)) | |
454 | return -1; | |
412 | 455 | |
413 | 456 | return helper->func(helper->self, bytes, nbytes, helper->user_data); |
414 | 457 | } |
416 | 459 | /** |
417 | 460 | * gvir_stream_send_all: |
418 | 461 | * @stream: the stream |
462 | * @cancellable: cancellation notifier | |
419 | 463 | * @func: (scope notified): the callback for writing data to application |
420 | 464 | * @user_data: (closure): data to be passed to @callback |
421 | 465 | * Returns: the number of bytes consumed or -1 upon error |
425 | 469 | * to virStreamRecv, for apps that do blocking-I/o. |
426 | 470 | */ |
427 | 471 | gssize |
428 | gvir_stream_send_all(GVirStream *self, GVirStreamSourceFunc func, gpointer user_data, GError **err) | |
472 | gvir_stream_send_all(GVirStream *self, | |
473 | GCancellable *cancellable, | |
474 | GVirStreamSourceFunc func, | |
475 | gpointer user_data, | |
476 | GError **err) | |
429 | 477 | { |
430 | 478 | struct stream_source_helper helper = { |
431 | 479 | .self = self, |
432 | 480 | .func = func, |
433 | .user_data = user_data | |
481 | .user_data = user_data, | |
482 | .cancellable = cancellable, | |
434 | 483 | }; |
435 | 484 | int r; |
436 | 485 | |
439 | 488 | |
440 | 489 | r = virStreamSendAll(self->priv->handle, stream_source, &helper); |
441 | 490 | if (r < 0) { |
442 | if (err != NULL) | |
443 | *err = gvir_error_new_literal(GVIR_STREAM_ERROR, | |
444 | 0, | |
445 | "Unable to perform SendAll"); | |
491 | gvir_set_error_literal(err, GVIR_STREAM_ERROR, | |
492 | 0, | |
493 | "Unable to perform SendAll"); | |
446 | 494 | } |
447 | 495 | |
448 | 496 | return r; |
449 | 497 | } |
498 | ||
499 | ||
500 | static void gvir_stream_handle_events(virStreamPtr st G_GNUC_UNUSED, | |
501 | int events, | |
502 | void *opaque) | |
503 | { | |
504 | GVirStream *stream = GVIR_STREAM(opaque); | |
505 | GVirStreamPrivate *priv = stream->priv; | |
506 | GList *tmp = priv->sources; | |
507 | ||
508 | while (tmp) { | |
509 | GVirStreamSource *source = tmp->data; | |
510 | source->newCond = 0; | |
511 | if (source->cond & GVIR_STREAM_IO_CONDITION_READABLE) { | |
512 | if (events & VIR_STREAM_EVENT_READABLE) | |
513 | source->newCond |= GVIR_STREAM_IO_CONDITION_READABLE; | |
514 | if (events & VIR_STREAM_EVENT_HANGUP) | |
515 | source->newCond |= GVIR_STREAM_IO_CONDITION_HANGUP; | |
516 | if (events & VIR_STREAM_EVENT_ERROR) | |
517 | source->newCond |= GVIR_STREAM_IO_CONDITION_ERROR; | |
518 | } | |
519 | if (source->cond & GVIR_STREAM_IO_CONDITION_WRITABLE) { | |
520 | if (events & VIR_STREAM_EVENT_WRITABLE) | |
521 | source->newCond |= GVIR_STREAM_IO_CONDITION_WRITABLE; | |
522 | if (events & VIR_STREAM_EVENT_HANGUP) | |
523 | source->newCond |= GVIR_STREAM_IO_CONDITION_HANGUP; | |
524 | if (events & VIR_STREAM_EVENT_ERROR) | |
525 | source->newCond |= GVIR_STREAM_IO_CONDITION_ERROR; | |
526 | } | |
527 | tmp = tmp->next; | |
528 | } | |
529 | ||
530 | } | |
531 | ||
532 | ||
533 | static void gvir_stream_update_events(GVirStream *stream) | |
534 | { | |
535 | GVirStreamPrivate *priv = stream->priv; | |
536 | int mask = 0; | |
537 | GList *tmp = priv->sources; | |
538 | ||
539 | while (tmp) { | |
540 | GVirStreamSource *source = tmp->data; | |
541 | if (source->cond & GVIR_STREAM_IO_CONDITION_READABLE) | |
542 | mask |= VIR_STREAM_EVENT_READABLE; | |
543 | if (source->cond & GVIR_STREAM_IO_CONDITION_WRITABLE) | |
544 | mask |= VIR_STREAM_EVENT_WRITABLE; | |
545 | tmp = tmp->next; | |
546 | } | |
547 | ||
548 | if (mask) { | |
549 | if (priv->eventRegistered) { | |
550 | virStreamEventUpdateCallback(priv->handle, mask); | |
551 | } else { | |
552 | virStreamEventAddCallback(priv->handle, mask, | |
553 | gvir_stream_handle_events, | |
554 | g_object_ref(stream), | |
555 | g_object_unref); | |
556 | priv->eventRegistered = TRUE; | |
557 | } | |
558 | } else { | |
559 | if (priv->eventRegistered) { | |
560 | virStreamEventRemoveCallback(priv->handle); | |
561 | priv->eventRegistered = FALSE; | |
562 | } | |
563 | } | |
564 | } | |
565 | ||
566 | static gboolean gvir_stream_source_prepare(GSource *source, | |
567 | gint *timeout) | |
568 | { | |
569 | GVirStreamSource *gsource = (GVirStreamSource*)source; | |
570 | if (gsource->newCond) { | |
571 | *timeout = 0; | |
572 | return TRUE; | |
573 | } | |
574 | *timeout = -1; | |
575 | return FALSE; | |
576 | } | |
577 | ||
578 | static gboolean gvir_stream_source_check(GSource *source) | |
579 | { | |
580 | GVirStreamSource *gsource = (GVirStreamSource*)source; | |
581 | if (gsource->newCond) | |
582 | return TRUE; | |
583 | return FALSE; | |
584 | } | |
585 | ||
586 | static gboolean gvir_stream_source_dispatch(GSource *source, | |
587 | GSourceFunc callback, | |
588 | gpointer user_data) | |
589 | { | |
590 | GVirStreamSource *gsource = (GVirStreamSource*)source; | |
591 | GVirStreamIOFunc func = (GVirStreamIOFunc)callback; | |
592 | gboolean ret; | |
593 | ret = func(gsource->stream, gsource->newCond, user_data); | |
594 | gsource->newCond = 0; | |
595 | return ret; | |
596 | } | |
597 | ||
598 | static void gvir_stream_source_finalize(GSource *source) | |
599 | { | |
600 | GVirStreamSource *gsource = (GVirStreamSource*)source; | |
601 | GVirStreamPrivate *priv = gsource->stream->priv; | |
602 | ||
603 | priv->sources = g_list_remove(priv->sources, source); | |
604 | ||
605 | gvir_stream_update_events(gsource->stream); | |
606 | } | |
607 | ||
608 | GSourceFuncs gvir_stream_source_funcs = { | |
609 | .prepare = gvir_stream_source_prepare, | |
610 | .check = gvir_stream_source_check, | |
611 | .dispatch = gvir_stream_source_dispatch, | |
612 | .finalize = gvir_stream_source_finalize, | |
613 | }; | |
614 | ||
615 | ||
616 | /** | |
617 | * gvir_stream_add_watch: (skip): | |
618 | * @stream: the stream | |
619 | * @cond: the conditions to watch for (bitfield of #GVirStreamIOCondition) | |
620 | * @func: (closure opaque): the function to call when the condition is satisfied | |
621 | * @opaque: (closure): user data to pass to @func | |
622 | * | |
623 | * Adds a watch for @stream to the mainloop | |
624 | * | |
625 | * Returns: the event source id | |
626 | */ | |
627 | guint gvir_stream_add_watch(GVirStream *stream, | |
628 | GVirStreamIOCondition cond, | |
629 | GVirStreamIOFunc func, | |
630 | gpointer opaque) | |
631 | { | |
632 | return gvir_stream_add_watch_full(stream, | |
633 | G_PRIORITY_DEFAULT, | |
634 | cond, | |
635 | func, | |
636 | opaque, | |
637 | NULL); | |
638 | } | |
639 | ||
640 | /** | |
641 | * gvir_stream_add_watch_full: | |
642 | * @stream: the stream | |
643 | * @priority: the priority of the #GVirStream source | |
644 | * @cond: the conditions to watch for (bitfield of #GVirStreamIOCondition) | |
645 | * @func: (closure opaque): the function to call when the condition is satisfied | |
646 | * @opaque: (closure): user data to pass to @func | |
647 | * @notify: the function to call when the source is removed | |
648 | * | |
649 | * Adds a watch for @stream to the mainloop | |
650 | * | |
651 | * Returns: the event source id | |
652 | * Rename to: gvir_stream_add_watch | |
653 | */ | |
654 | guint gvir_stream_add_watch_full(GVirStream *stream, | |
655 | gint priority, | |
656 | GVirStreamIOCondition cond, | |
657 | GVirStreamIOFunc func, | |
658 | gpointer opaque, | |
659 | GDestroyNotify notify) | |
660 | { | |
661 | GVirStreamPrivate *priv = stream->priv; | |
662 | GVirStreamSource *source = (GVirStreamSource*)g_source_new(&gvir_stream_source_funcs, | |
663 | sizeof(GVirStreamSource)); | |
664 | guint ret; | |
665 | ||
666 | source->stream = stream; | |
667 | source->cond = cond; | |
668 | ||
669 | if (priority != G_PRIORITY_DEFAULT) | |
670 | g_source_set_priority((GSource*)source, priority); | |
671 | ||
672 | priv->sources = g_list_append(priv->sources, source); | |
673 | ||
674 | gvir_stream_update_events(source->stream); | |
675 | ||
676 | g_source_set_callback((GSource*)source, (GSourceFunc)func, opaque, notify); | |
677 | ret = g_source_attach((GSource*)source, g_main_context_default()); | |
678 | ||
679 | g_source_unref((GSource*)source); | |
680 | ||
681 | return ret; | |
682 | } |
0 | 0 | /* |
1 | 1 | * libvirt-gobject-stream.h: libvirt gobject integration |
2 | 2 | * |
3 | * Copyright (C) 2011 Red Hat | |
3 | * Copyright (C) 2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
92 | 92 | GType gvir_stream_get_type(void); |
93 | 93 | GType gvir_stream_handle_get_type(void); |
94 | 94 | |
95 | gssize gvir_stream_receive_all(GVirStream *stream, GVirStreamSinkFunc func, gpointer user_data, GError **error); | |
96 | gssize gvir_stream_receive(GVirStream *stream, gchar *buffer, gsize size, GCancellable *cancellable, GError **error); | |
95 | typedef enum { | |
96 | GVIR_STREAM_IO_CONDITION_READABLE = (1 << 0), | |
97 | GVIR_STREAM_IO_CONDITION_WRITABLE = (1 << 1), | |
98 | GVIR_STREAM_IO_CONDITION_HANGUP = (1 << 2), | |
99 | GVIR_STREAM_IO_CONDITION_ERROR = (1 << 3), | |
100 | } GVirStreamIOCondition; | |
97 | 101 | |
98 | gssize gvir_stream_send_all(GVirStream *stream, GVirStreamSourceFunc func, gpointer user_data, GError **error); | |
99 | gssize gvir_stream_send(GVirStream *stream, const gchar *buffer, gsize size, GCancellable *cancellable, GError **error); | |
102 | typedef gboolean (*GVirStreamIOFunc)(GVirStream *stream, | |
103 | GVirStreamIOCondition cond, | |
104 | gpointer opaque); | |
105 | ||
106 | guint gvir_stream_add_watch(GVirStream *stream, | |
107 | GVirStreamIOCondition cond, | |
108 | GVirStreamIOFunc func, | |
109 | gpointer opaque); | |
110 | guint gvir_stream_add_watch_full(GVirStream *stream, | |
111 | gint priority, | |
112 | GVirStreamIOCondition cond, | |
113 | GVirStreamIOFunc func, | |
114 | gpointer opaque, | |
115 | GDestroyNotify notify); | |
116 | ||
117 | gssize gvir_stream_receive_all(GVirStream *stream, | |
118 | GCancellable *cancellable, | |
119 | GVirStreamSinkFunc func, | |
120 | gpointer user_data, | |
121 | GError **error); | |
122 | gssize gvir_stream_receive(GVirStream *stream, | |
123 | gchar *buffer, | |
124 | gsize size, | |
125 | GCancellable *cancellable, | |
126 | GError **error); | |
127 | ||
128 | gssize gvir_stream_send_all(GVirStream *stream, | |
129 | GCancellable *cancellable, | |
130 | GVirStreamSourceFunc func, | |
131 | gpointer user_data, | |
132 | GError **error); | |
133 | gssize gvir_stream_send(GVirStream *stream, | |
134 | const gchar *buffer, | |
135 | gsize size, | |
136 | GCancellable *cancellable, | |
137 | GError **error); | |
100 | 138 | |
101 | 139 | G_END_DECLS |
102 | 140 |
0 | 0 | /* |
1 | 1 | * libvirt-gobject.h: libvirt gobject integration |
2 | 2 | * |
3 | * Copyright (C) 2010 Red Hat | |
3 | * Copyright (C) 2010-2011 Red Hat, Inc. | |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or |
6 | 6 | * modify it under the terms of the GNU Lesser General Public |
0 | LIBVIRT_GOBJECT_0.0.1 { | |
0 | LIBVIRT_GOBJECT_0.0.4 { | |
1 | 1 | global: |
2 | 2 | gvir_init_object; |
3 | 3 | gvir_init_object_check; |
43 | 43 | gvir_domain_handle_get_type; |
44 | 44 | gvir_domain_info_get_type; |
45 | 45 | gvir_domain_state_get_type; |
46 | gvir_domain_start_flags_get_type; | |
46 | 47 | gvir_domain_get_name; |
47 | 48 | gvir_domain_get_uuid; |
48 | 49 | gvir_domain_get_id; |
49 | 50 | gvir_domain_start; |
50 | 51 | gvir_domain_resume; |
51 | 52 | gvir_domain_stop; |
53 | gvir_domain_suspend; | |
54 | gvir_domain_save; | |
55 | gvir_domain_save_async; | |
56 | gvir_domain_save_finish; | |
52 | 57 | gvir_domain_delete; |
58 | gvir_domain_open_console; | |
59 | gvir_domain_open_graphics; | |
53 | 60 | gvir_domain_shutdown; |
54 | 61 | gvir_domain_reboot; |
55 | 62 | gvir_domain_get_config; |
56 | 63 | gvir_domain_set_config; |
57 | 64 | gvir_domain_get_info; |
65 | gvir_domain_get_persistent; | |
58 | 66 | gvir_domain_screenshot; |
59 | 67 | |
60 | 68 | gvir_domain_snapshot_get_type; |
90 | 98 | gvir_secret_get_config; |
91 | 99 | |
92 | 100 | gvir_storage_pool_get_type; |
101 | gvir_storage_pool_info_get_type; | |
93 | 102 | gvir_storage_pool_handle_get_type; |
94 | 103 | gvir_storage_pool_get_name; |
95 | 104 | gvir_storage_pool_get_uuid; |
96 | 105 | gvir_storage_pool_get_config; |
106 | gvir_storage_pool_get_info; | |
97 | 107 | gvir_storage_pool_refresh; |
98 | 108 | gvir_storage_pool_refresh_async; |
99 | 109 | gvir_storage_pool_refresh_finish; |
108 | 118 | gvir_storage_pool_start_finish; |
109 | 119 | |
110 | 120 | gvir_storage_vol_get_type; |
121 | gvir_storage_vol_info_get_type; | |
111 | 122 | gvir_storage_vol_handle_get_type; |
112 | 123 | gvir_storage_vol_get_name; |
113 | 124 | gvir_storage_vol_get_path; |
114 | 125 | gvir_storage_vol_get_config; |
126 | gvir_storage_vol_get_info; | |
127 | gvir_storage_vol_delete; | |
115 | 128 | |
116 | 129 | gvir_connection_handle_get_type; |
117 | 130 | |
123 | 136 | gvir_manager_find_connection_by_uri; |
124 | 137 | |
125 | 138 | gvir_stream_get_type; |
139 | gvir_stream_receive; | |
126 | 140 | gvir_stream_receive_all; |
141 | gvir_stream_send; | |
142 | gvir_stream_send_all; | |
127 | 143 | gvir_stream_handle_get_type; |
144 | gvir_stream_add_watch; | |
145 | gvir_stream_add_watch_full; | |
128 | 146 | |
129 | 147 | local: |
130 | 148 | *; |
5 | 5 | Name: libvirt-gobject |
6 | 6 | Version: @VERSION@ |
7 | 7 | Description: libvirt GObject library |
8 | Requires: gobject-2.0 libvirt-gconfig-1.0 | |
8 | Requires: gio-2.0 gobject-2.0 libvirt-gconfig-1.0 | |
9 | 9 | Libs: -L${libdir} -lvirt-gobject-1.0 |
10 | Libs.private: @LIBVIRT_LIBS@ | |
10 | Requires.private: gthread-2.0 libvirt | |
11 | 11 | Cflags: -I${includedir}/libvirt-gobject-1.0 |
16 | 16 | |
17 | 17 | BuildRequires: mingw32-filesystem >= 23 |
18 | 18 | BuildRequires: mingw32-glib2 |
19 | BuildRequires: mingw32-libvirt >= 0.9.4 | |
19 | BuildRequires: mingw32-libvirt >= 0.9.7 | |
20 | 20 | BuildRequires: pkgconfig |
21 | 21 | |
22 | 22 | BuildArch: noarch |
22 | 22 | |
23 | 23 | install-data-local: |
24 | 24 | $(mkinstalldirs) $(DESTDIR)$(pythondir) |
25 | @INSTALL@ -m 0644 $(srcdir)/libvirtglib.py $(DESTDIR)$(pythondir) | |
25 | $(INSTALL) -m 0644 $(srcdir)/libvirtglib.py $(DESTDIR)$(pythondir) | |
26 | 26 | |
27 | 27 | uninstall-local: |
28 | 28 | rm -f $(DESTDIR)$(pythondir)/libvirtglib.py |
31 | 31 | else |
32 | 32 | all: |
33 | 33 | endif |
34 |
150 | 150 | GIO2_LIBS = @GIO2_LIBS@ |
151 | 151 | GLIB2_CFLAGS = @GLIB2_CFLAGS@ |
152 | 152 | GLIB2_LIBS = @GLIB2_LIBS@ |
153 | GLIB_MKENUMS = @GLIB_MKENUMS@ | |
153 | 154 | GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ |
154 | 155 | GOBJECT2_LIBS = @GOBJECT2_LIBS@ |
155 | 156 | GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@ |
158 | 159 | GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ |
159 | 160 | GTHREAD2_LIBS = @GTHREAD2_LIBS@ |
160 | 161 | GTKDOC_CHECK = @GTKDOC_CHECK@ |
162 | GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ | |
163 | GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ | |
161 | 164 | GTKDOC_MKPDF = @GTKDOC_MKPDF@ |
162 | 165 | GTKDOC_REBASE = @GTKDOC_REBASE@ |
163 | 166 | G_IR_COMPILER = @G_IR_COMPILER@ |
609 | 612 | |
610 | 613 | @WITH_PYTHON_TRUE@install-data-local: |
611 | 614 | @WITH_PYTHON_TRUE@ $(mkinstalldirs) $(DESTDIR)$(pythondir) |
612 | @WITH_PYTHON_TRUE@ @INSTALL@ -m 0644 $(srcdir)/libvirtglib.py $(DESTDIR)$(pythondir) | |
615 | @WITH_PYTHON_TRUE@ $(INSTALL) -m 0644 $(srcdir)/libvirtglib.py $(DESTDIR)$(pythondir) | |
613 | 616 | |
614 | 617 | @WITH_PYTHON_TRUE@uninstall-local: |
615 | 618 | @WITH_PYTHON_TRUE@ rm -f $(DESTDIR)$(pythondir)/libvirtglib.py |
0 | 0 | /* |
1 | 1 | * libvirt-glib.c: Binding the glib event loop integration to python |
2 | 2 | * |
3 | * Copyright (C) 2008 Red Hat, Inc. | |
3 | * Copyright (C) 2008 Red Hat, Inc., Inc. | |
4 | 4 | * |
5 | 5 | * Daniel Berrange <berrange@redhat.com> |
6 | 6 | */ |
112 | 112 | GIO2_LIBS = @GIO2_LIBS@ |
113 | 113 | GLIB2_CFLAGS = @GLIB2_CFLAGS@ |
114 | 114 | GLIB2_LIBS = @GLIB2_LIBS@ |
115 | GLIB_MKENUMS = @GLIB_MKENUMS@ | |
115 | 116 | GOBJECT2_CFLAGS = @GOBJECT2_CFLAGS@ |
116 | 117 | GOBJECT2_LIBS = @GOBJECT2_LIBS@ |
117 | 118 | GOBJECT_INTROSPECTION_CFLAGS = @GOBJECT_INTROSPECTION_CFLAGS@ |
120 | 121 | GTHREAD2_CFLAGS = @GTHREAD2_CFLAGS@ |
121 | 122 | GTHREAD2_LIBS = @GTHREAD2_LIBS@ |
122 | 123 | GTKDOC_CHECK = @GTKDOC_CHECK@ |
124 | GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ | |
125 | GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ | |
123 | 126 | GTKDOC_MKPDF = @GTKDOC_MKPDF@ |
124 | 127 | GTKDOC_REBASE = @GTKDOC_REBASE@ |
125 | 128 | G_IR_COMPILER = @G_IR_COMPILER@ |