mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-08-19 17:50:04 +03:00
Compare commits
4189 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6f8e223780 | |||
| df90ca7661 | |||
| ed005221ff | |||
| 15770695d8 | |||
| e190754ed3 | |||
| 29da015aac | |||
| 8919b4d425 | |||
| 26752f3be1 | |||
| 8134d396fe | |||
| adc796c8eb | |||
| ec75b0cf59 | |||
| 53a1db4dfc | |||
| 415b14903e | |||
| db1fbbd86a | |||
| 5b26f2d8e6 | |||
| 11a7060250 | |||
| 1c46f4cc03 | |||
| df8225ac54 | |||
| b3a96d9049 | |||
| 06f81c63eb | |||
| f35a9fc164 | |||
| fb457c5c0c | |||
| 590c9c9acf | |||
| 47ae6d3d7e | |||
| 3003c46d13 | |||
| 6d9743158c | |||
| 17dedf7cb5 | |||
| ebc46fea6f | |||
| a4a287242e | |||
| 89144534eb | |||
| f9a9214629 | |||
| 39f8af3880 | |||
| 28e96d720b | |||
| 755b53f946 | |||
| 2bad82f71e | |||
| bf1f3f7a36 | |||
| a711633909 | |||
| 7d02393b1b | |||
| edfedfb414 | |||
| e214bcf37c | |||
| d72d92565b | |||
| c391291244 | |||
| f8f29b1fc2 | |||
| a73b389d12 | |||
| 4a4eb13e7a | |||
| 842b51ff5d | |||
| 4cc2b6d676 | |||
| 4efaf77b19 | |||
| 0c141c893a | |||
| f310b25341 | |||
| c212160260 | |||
| 8d616decc5 | |||
| 9b0244ae38 | |||
| 6c267f01b1 | |||
| cab5a52aa2 | |||
| c7a33939bc | |||
| d147b18de2 | |||
| 72a7f8b2a9 | |||
| c5ec45a3a4 | |||
| 30ec755ecb | |||
| ff5f7d7204 | |||
| 7057f39c51 | |||
| 9edceb3233 | |||
| 58406dd54e | |||
| 08fee18cc2 | |||
| 2b39cd355a | |||
| 322b1fd44b | |||
| 51d3fb0276 | |||
| c2160b137d | |||
| 788269e970 | |||
| 2dce970162 | |||
| 045a5722ab | |||
| 07be2403b6 | |||
| 7d38d7b49b | |||
| 31495ef6a1 | |||
| 08d42b52f1 | |||
| 02d57c2bce | |||
| b0f414c67b | |||
| 02988742b7 | |||
| 043f05fda4 | |||
| cbe6ebdb53 | |||
| d024d2ba36 | |||
| de3aadaa71 | |||
| 6c83e7ca6f | |||
| 460ca88b98 | |||
| fb8552f83a | |||
| 352b6df34d | |||
| bc8d9f2077 | |||
| 582c75ec45 | |||
| d0dabc2bf8 | |||
| 1443cbe840 | |||
| fc1da688c0 | |||
| b28a068b43 | |||
| 3cf642a0f9 | |||
| 6e5a04f034 | |||
| c37c321cc2 | |||
| c09f663a47 | |||
| 74231267f8 | |||
| 46c14d2045 | |||
| 070f61002f | |||
| cd2b18968d | |||
| 62f8674d62 | |||
| 734bbf0ea9 | |||
| 68e4793ae0 | |||
| 2502ebb30a | |||
| e7f3bad46e | |||
| 77da2487ea | |||
| 98fafb0c3e | |||
| 9cb08020e1 | |||
| f4365c73a2 | |||
| 1c72695c44 | |||
| f43dc26af7 | |||
| c833efd35b | |||
| 345ff369e5 | |||
| e72cc3c11d | |||
| 3bb3743934 | |||
| 627409d1f4 | |||
| e9364d9f2a | |||
| f4f91e7b24 | |||
| 2e56cfa7d2 | |||
| b490f2c1e0 | |||
| 53fc1d8afd | |||
| 3093daf184 | |||
| 97b68a4943 | |||
| 2b57478ef0 | |||
| ef77388ba4 | |||
| 20206a4bc9 | |||
| 1d45e1b622 | |||
| b1eb7f2e98 | |||
| fc6d5b2649 | |||
| 211dd1e9c5 | |||
| 2874a683e9 | |||
| d3e43bad98 | |||
| a5b7965a29 | |||
| ca3b22bb5c | |||
| ce49cfb48a | |||
| fa6da6608a | |||
| 3db47cb5d2 | |||
| b221973a11 | |||
| e5f31f461f | |||
| e82f917015 | |||
| 12f7ed9357 | |||
| 8b5bc6c479 | |||
| f9a4df5a5b | |||
| 4a1abb3f50 | |||
| ca1b7cc8e4 | |||
| 8b46a7bbdb | |||
| 1a5c465ee5 | |||
| 208b2ad879 | |||
| 55945841bc | |||
| 6456eef8b5 | |||
| a83fe2c23e | |||
| 1be3f095c9 | |||
| 953809dbe4 | |||
| 7842e544ca | |||
| 07f6c3a95f | |||
| dafd354d12 | |||
| 041aac8648 | |||
| 8b0cd87696 | |||
| fa0bb9f6b1 | |||
| 5ac0272370 | |||
| 047b024f1c | |||
| b4cead5949 | |||
| bbe29be9a8 | |||
| c444af1ac2 | |||
| 7f44743c52 | |||
| 0117b7da68 | |||
| 33737db1be | |||
| ddb4ae0ca9 | |||
| 6e6acb776b | |||
| 8d9c7a93bc | |||
| 572c6cc10a | |||
| 3db8607f34 | |||
| a8f75d2c7d | |||
| a34871d9a5 | |||
| a7fb2258ca | |||
| 60881161ea | |||
| e596dbb32a | |||
| 93500040f9 | |||
| fb3ebd0397 | |||
| c82d106ed1 | |||
| 60d05f7321 | |||
| f36eb6935d | |||
| 7488107fa8 | |||
| 7d47e813b4 | |||
| ddfd4dba95 | |||
| ebb0c19c48 | |||
| dd1058fa8f | |||
| fff6be0cc0 | |||
| e40a285bb7 | |||
| 5086f85cc1 | |||
| bfa6b73e43 | |||
| d5fda6d6bc | |||
| 0c31633834 | |||
| 0e1f4633d0 | |||
| 482e08a98a | |||
| 9c563e76e8 | |||
| afa3f0af1f | |||
| ba196952f5 | |||
| c020f6203e | |||
| 2f32d7afd5 | |||
| 377bc412ce | |||
| 8583b947b1 | |||
| 66823690e4 | |||
| e0037c2ee8 | |||
| 5e3537f88a | |||
| 575cf9a9ce | |||
| de5a60e1cc | |||
| b8ed797c7c | |||
| 7a3267cfcf | |||
| d6f9cf4222 | |||
| 2f26addb25 | |||
| 5adbd9cb4c | |||
| cc21fd9a91 | |||
| 82a3c81d8c | |||
| 2d3208029b | |||
| 8d63d82e5c | |||
| 5910472fa5 | |||
| c80651a5ae | |||
| 9d0adf2498 | |||
| ac23d911df | |||
| 54971d9170 | |||
| 8749256d0b | |||
| 20beb0c0db | |||
| 1f6fc519cd | |||
| 348c6fc0ab | |||
| 4da188ea3d | |||
| b6992818c6 | |||
| 6752d11997 | |||
| 7e1249f259 | |||
| 97d5c95d8e | |||
| e1b419ea25 | |||
| 6aacf84a3b | |||
| 33c721d323 | |||
| 92036c2edf | |||
| 894baa0af8 | |||
| 90fce23f24 | |||
| 10c681622a | |||
| dcf30d9c25 | |||
| e638a2461d | |||
| acd981e37f | |||
| 3f76a993c2 | |||
| 052893cf66 | |||
| feb93e9830 | |||
| c5a2fe243b | |||
| d54bad5d0e | |||
| b02db3518e | |||
| 272d5a9653 | |||
| 49ed0a2e1b | |||
| d564fcb3e1 | |||
| 11eeabd71b | |||
| a23675d36d | |||
| 6ab131bae2 | |||
| cff218f353 | |||
| bc5443f4c6 | |||
| 43beb82eca | |||
| 4d2adaa1d5 | |||
| 0058184c4e | |||
| 31e29fe524 | |||
| c4b2a93907 | |||
| a986892e61 | |||
| 933522a341 | |||
| 20701b17e2 | |||
| 93fedcf20f | |||
| 61fb697977 | |||
| 32d9e0707c | |||
| f30ccb2458 | |||
| 07c621d09c | |||
| d533a98ed6 | |||
| df5944ff02 | |||
| 5679c844de | |||
| b0aaed65ea | |||
| 8e8bda2614 | |||
| 6e5b5bbc0a | |||
| 0641f0f72c | |||
| 258d59cff9 | |||
| 83be64034a | |||
| d536f6b177 | |||
| 560758c900 | |||
| 2d665c9e2d | |||
| b48fb801dd | |||
| 39b3845fd7 | |||
| 2d550542ee | |||
| ba99a1b637 | |||
| d6644013d2 | |||
| de4d70873a | |||
| 02ddaddfa8 | |||
| 117d04fb1d | |||
| abb7694211 | |||
| ff45b4c26f | |||
| 152ccceb61 | |||
| d84bb6d6a3 | |||
| 6ef9d9da5e | |||
| c2c4abb43b | |||
| ff1d6f859c | |||
| 74c7a3463d | |||
| e8a1a730fe | |||
| 03ae900f02 | |||
| e915962a04 | |||
| 36a03bd2ee | |||
| c5be8bcb8f | |||
| 9a641564fb | |||
| 5603515127 | |||
| 78a6af1ff9 | |||
| 3876e010eb | |||
| 1c5891204d | |||
| 7cdf26637e | |||
| 23958aedf4 | |||
| 180d4b2b3b | |||
| d0616e354d | |||
| cc04c4ca95 | |||
| 563d7ee3a9 | |||
| 48445ccff9 | |||
| e6125e4938 | |||
| b5b8a6db69 | |||
| ea8d236b73 | |||
| 0e9b3a269b | |||
| 34a7f3f6be | |||
| 6bc4ea5af0 | |||
| 697426e440 | |||
| dc1a2fcce6 | |||
| 2de2d525fc | |||
| 062a25f078 | |||
| 70e05fa6d0 | |||
| 8acaeb730b | |||
| 5349cf1ed2 | |||
| 9017b9bcaf | |||
| 2256d8b86e | |||
| beccb0deca | |||
| 62ee19c763 | |||
| b0a3f8b6c5 | |||
| 9537c3d0c2 | |||
| 362bc09a4d | |||
| 7efa3937f0 | |||
| 44258473b8 | |||
| eca81e08be | |||
| b94b72b457 | |||
| e1fa3fb0fc | |||
| ee234bfd5b | |||
| 7f31e28c6e | |||
| 018fd697b6 | |||
| 5c77fddf4e | |||
| 9f87b631ce | |||
| c4157e5272 | |||
| b9c4db0d70 | |||
| 38eb50ae76 | |||
| 254ade373d | |||
| 2b50cae54e | |||
| d2ac3c2fdd | |||
| 94f7144183 | |||
| 5d65d32f2c | |||
| e984019688 | |||
| 34dcbbb470 | |||
| c90a1ad7d0 | |||
| 5054e89272 | |||
| ebacb31fb5 | |||
| 59fe163f2f | |||
| b9efc7dc3b | |||
| 7c66c033a9 | |||
| c179a0f63c | |||
| 5b0aed68b0 | |||
| 0eecdd685a | |||
| 05776e09fc | |||
| 7703c2c90a | |||
| db57a7bed8 | |||
| 84a3269a15 | |||
| 46bad5121f | |||
| 24aad9f7be | |||
| 270895063d | |||
| 87d2e4ba56 | |||
| 18b3096c40 | |||
| 50250aba36 | |||
| 34b3c64a98 | |||
| bdb844e996 | |||
| f7366d84f4 | |||
| ba1072f0ac | |||
| 5eec84aaa3 | |||
| 98fb83ce25 | |||
| 5fe816eccd | |||
| 4e041189f8 | |||
| 42f8b25b66 | |||
| 51cd0196e5 | |||
| 712048bd9a | |||
| 93e0b3c8d6 | |||
| ae42979a74 | |||
| d7e0fe6e9f | |||
| ed7813d28d | |||
| 71f99af5a4 | |||
| 75d88455f5 | |||
| b69bbebbba | |||
| 0c4010a1d7 | |||
| aea68ce906 | |||
| 35b6137696 | |||
| 29bca037aa | |||
| 1b9347b5f1 | |||
| 6b3ce82d98 | |||
| d707c86633 | |||
| 56c33caaec | |||
| fe4ff24af8 | |||
| 5c7c755f50 | |||
| 8fa9c22142 | |||
| 51d203c676 | |||
| 4ad65ab86a | |||
| 4ce54ef5c7 | |||
| 52ae076a94 | |||
| 21c6cfc213 | |||
| 5993321dc5 | |||
| e129a63775 | |||
| 4aa36a68a6 | |||
| 40648b156b | |||
| d1be0aefa9 | |||
| 87506c2bcf | |||
| 258923f2eb | |||
| 8d319a2f2d | |||
| d6daeb124b | |||
| 004aee6346 | |||
| eb9b653243 | |||
| 9db01465e5 | |||
| 2aed290ee9 | |||
| 98bd5e6c5a | |||
| 3022375da3 | |||
| 2a82a33ee4 | |||
| c85c9b3a26 | |||
| 647c26c886 | |||
| 68529bc596 | |||
| 96ac18591a | |||
| e2c059485c | |||
| e5c668a021 | |||
| 9772bebab7 | |||
| a980d123b5 | |||
| de8ecb12cb | |||
| cb06a9bfe5 | |||
| 1f7560e25d | |||
| 2788f4d1d4 | |||
| b34e082079 | |||
| b9a2552d2a | |||
| 53c4f9fa1c | |||
| 60aef9e467 | |||
| e07314f4c1 | |||
| 9fbb810cf4 | |||
| 871aa6e3c1 | |||
| 8274993f29 | |||
| ce380b8e6f | |||
| 84bc7ac06b | |||
| b1fab0c21c | |||
| 3f52921d43 | |||
| 7a056d0648 | |||
| 1d8099f4b6 | |||
| abce152a49 | |||
| c8f4dcca6a | |||
| 8f342c6f9a | |||
| 8138ec8693 | |||
| c6375aa796 | |||
| cad913060c | |||
| 8b3a89c486 | |||
| 5d4009b0d1 | |||
| 90302e7f8d | |||
| f3e098f3d8 | |||
| 9417eb0337 | |||
| e699a82474 | |||
| c35b5269af | |||
| 051df19e0e | |||
| 39f3fee4a4 | |||
| 7a2c6222a9 | |||
| 070da02fb5 | |||
| d2327278fb | |||
| 3a7f2fc3b2 | |||
| 7ca6a0996d | |||
| 77408cc0e1 | |||
| ec724071e9 | |||
| f9f6c34c5c | |||
| cf4dee3615 | |||
| c4896d378b | |||
| db336caa58 | |||
| fde060b8f5 | |||
| efd4ee7871 | |||
| f6770e8665 | |||
| 4f81919ad2 | |||
| 3fb992c659 | |||
| 41b087198d | |||
| c41873f40e | |||
| 2d73466f03 | |||
| 4aeb0e45e9 | |||
| 62170b9952 | |||
| c593aef7bc | |||
| 18fa9b18bc | |||
| a0dc452172 | |||
| 6e2f811443 | |||
| b6719eab9e | |||
| 53896e5f44 | |||
| e078fa3cec | |||
| cffe619bdf | |||
| 5e06ef743a | |||
| ad896a1cdd | |||
| 50bf3101a3 | |||
| 5cff81b147 | |||
| 9ec1825982 | |||
| 353dd14762 | |||
| cd7ee20a68 | |||
| 274f09cbc5 | |||
| 71057b1c58 | |||
| dc8dd7f8db | |||
| 29045d88ed | |||
| df032bab12 | |||
| fa30eaf3d3 | |||
| 1be3c3c8ee | |||
| f5926b54c0 | |||
| 5174b02fb9 | |||
| e7ebe9f357 | |||
| 9819b41a20 | |||
| 505242f817 | |||
| babaae9256 | |||
| 281c3c649b | |||
| bfcca58787 | |||
| 22de841a76 | |||
| e2e000cf1b | |||
| 3b106cead5 | |||
| c5337e8e43 | |||
| 55d444cc10 | |||
| cddd3ac8b0 | |||
| 631c4ce855 | |||
| 1670df676a | |||
| 39367b5674 | |||
| f21c6c6890 | |||
| c7f70f4357 | |||
| 4a2dd00e76 | |||
| aed4c08d4c | |||
| b5cc01ef2e | |||
| 98caf6db76 | |||
| ddf877cd9e | |||
| 9455323530 | |||
| 564f4c2f9a | |||
| 1aaa909116 | |||
| 1787fdff57 | |||
| 7ea025aed0 | |||
| 6df7d55d39 | |||
| df62337289 | |||
| 3d3af08879 | |||
| 9fd54a78dc | |||
| 4acab37f56 | |||
| fba503c368 | |||
| 9cea2af3fc | |||
| edb9d54bd1 | |||
| 3bf24abc8c | |||
| 7be5c26d74 | |||
| 2cdf29eda9 | |||
| 5874c6de5c | |||
| e26997f62b | |||
| ce4c82f116 | |||
| 71d5686f78 | |||
| f599156641 | |||
| 6c5450646c | |||
| 60466abbd6 | |||
| dd1a186f77 | |||
| 3c8877e743 | |||
| f8352e221f | |||
| d33b87268d | |||
| 2a788c6439 | |||
| ef962afb74 | |||
| 2df320609a | |||
| 1a253b38e2 | |||
| 1efb623674 | |||
| 2aca94bfd3 | |||
| a331b909c5 | |||
| ba32e11d41 | |||
| e68792c112 | |||
| 94dcf953ff | |||
| 36bcd7026b | |||
| 479dfbb084 | |||
| 0d7d699795 | |||
| 1870e70707 | |||
| ed510fce9c | |||
| 028db0bf5d | |||
| dbfa2ff572 | |||
| 8cf0ed02be | |||
| 552bdb9b35 | |||
| 9f337ef752 | |||
| 28b9a6c769 | |||
| 6f17a5d166 | |||
| 6449cb9014 | |||
| 23b1e5c0b0 | |||
| 86fe2ba6dc | |||
| fbf9fcbff4 | |||
| f7d32ce260 | |||
| 84fa113217 | |||
| fcd103bb2a | |||
| a4f9af057a | |||
| a6c77af617 | |||
| e9125be594 | |||
| 5a19c24611 | |||
| b290e48cf7 | |||
| 6c175fa3d1 | |||
| 8bd8bcaca8 | |||
| 7ece483dce | |||
| 67f34cd67b | |||
| 68d5d96bce | |||
| f2192637b0 | |||
| 5cec7af469 | |||
| 2127b42b46 | |||
| a3884f8705 | |||
| 1c91a0b44e | |||
| 49411f029a | |||
| d2e0bd1779 | |||
| 45274d4121 | |||
| 88151c7cbc | |||
| c572222a14 | |||
| 462c74c38a | |||
| 32c3c1f0b7 | |||
| 9b55a52b4f | |||
| 2f992d4be4 | |||
| 1bbe12de44 | |||
| 5dac5970a5 | |||
| 905709500a | |||
| a44b23ba63 | |||
| 5288b2ad8e | |||
| 1b747f0ded | |||
| d068f9609c | |||
| 6e41f30efc | |||
| 7a3da17a58 | |||
| 15c647a91e | |||
| d002c250cd | |||
| 8d30e5f74d | |||
| d9292cfefb | |||
| 8459218cbc | |||
| b3e8f9f415 | |||
| e7168f7965 | |||
| 96e5a2d4d5 | |||
| fba3dfd156 | |||
| f76c3493d8 | |||
| 4ee2b31804 | |||
| 8a7b4be5ab | |||
| 78151ec96e | |||
| d62f4c36c2 | |||
| 320ea3a47e | |||
| f983c32675 | |||
| cd2404a3c3 | |||
| d13eb9fc95 | |||
| 57dab74804 | |||
| 82cb2e73aa | |||
| 1778da7185 | |||
| 00e00510c5 | |||
| 2f047d4816 | |||
| 73b45bfbff | |||
| 56bac4a221 | |||
| ea54570efb | |||
| 2072d63c5b | |||
| e813200714 | |||
| 6cbc33063a | |||
| a77821c864 | |||
| a792bf240f | |||
| eff24046d8 | |||
| 6fc93f1e75 | |||
| 9d6614df86 | |||
| 8d773c0f4f | |||
| 0327ed8718 | |||
| 890af4ca8f | |||
| 3cda0eb487 | |||
| 00195f9f8d | |||
| 2f646237da | |||
| ffbfd2c813 | |||
| 63c0c9a77f | |||
| 50723581b0 | |||
| b4b0949dd7 | |||
| 25d5e16e9e | |||
| 7b5114f62b | |||
| 4eb8022260 | |||
| 062b0aa33b | |||
| 0e0f6021ce | |||
| bc2102104f | |||
| 0af0ded038 | |||
| 285d38931f | |||
| 0ec5cd0704 | |||
| 8bf6799b09 | |||
| 0fdf649672 | |||
| 188af565dd | |||
| 92a9e5df63 | |||
| 99123ba012 | |||
| 05e15ff812 | |||
| f3661756c1 | |||
| b522264b40 | |||
| 7fb3e43d36 | |||
| ad8bf13f7d | |||
| 5bbde877e7 | |||
| 86415b2d26 | |||
| 668150fc3d | |||
| 53456e62ed | |||
| 2b4e353168 | |||
| bf7354072f | |||
| b3bff9546b | |||
| e455b221be | |||
| 284805e666 | |||
| 661ae104c2 | |||
| 5982168290 | |||
| 19a863c435 | |||
| 447c586a0d | |||
| 508da563b9 | |||
| f0dc84d83f | |||
| e3a7137ac2 | |||
| 1130085cf0 | |||
| f85208eec6 | |||
| d498175aad | |||
| 065b6571bf | |||
| e4e20423ff | |||
| 929560384d | |||
| 965466c1ee | |||
| 46e9b0fb4e | |||
| f0c1c3f86a | |||
| c71a2100b1 | |||
| f895e611df | |||
| 67253251c5 | |||
| 9bcad69093 | |||
| 67203f6780 | |||
| 5607db6788 | |||
| ab952024f4 | |||
| c85f641390 | |||
| ced154cb54 | |||
| 6bb4986b0b | |||
| ee9083aba5 | |||
| 46a2ea3689 | |||
| 987e31edc9 | |||
| 71d793faaf | |||
| c5728cd618 | |||
| 32e6ac9c26 | |||
| 8613273458 | |||
| d51638d0ad | |||
| 6bae6677c8 | |||
| 097e07a63a | |||
| cef0967e02 | |||
| b7d4c300c3 | |||
| 747c536370 | |||
| ea7dc33786 | |||
| 4445723811 | |||
| 271945a148 | |||
| 156133597d | |||
| e36be6e7c7 | |||
| e07cf19fe5 | |||
| 5edaf95599 | |||
| f66636e3ca | |||
| 1cfbfaa697 | |||
| 84eb6effdd | |||
| 95c8ddd2ec | |||
| 7998714d60 | |||
| ca7db6cb80 | |||
| 8a7783c163 | |||
| 81e99f014b | |||
| 8d8815ea2a | |||
| 26be7a0a24 | |||
| c390bcfec5 | |||
| 67904847f0 | |||
| 67ef701779 | |||
| b9a3287e80 | |||
| 7233dc170f | |||
| 2f80b2a013 | |||
| e77ee32357 | |||
| 17f7220891 | |||
| 0f7ba8c21c | |||
| 3528d66641 | |||
| 190aaa2627 | |||
| 460e7b6a94 | |||
| 6d45d5855d | |||
| 91da9a7689 | |||
| 041a18be17 | |||
| bba36f7fc7 | |||
| 055d21d254 | |||
| d304352b19 | |||
| 09fafa1e21 | |||
| 65e97240e6 | |||
| b7a7b33651 | |||
| 5ee592208c | |||
| 7f4f1dd416 | |||
| 0ab6423579 | |||
| 20ffaf59dc | |||
| 68f63673da | |||
| 7f7849c996 | |||
| 3535092f3a | |||
| 73adc0e5b7 | |||
| 3fdb9ba760 | |||
| d36b4e92ac | |||
| b50ab42d41 | |||
| e10dc8666e | |||
| 598a0c00dc | |||
| caad0a8783 | |||
| 336fd879c0 | |||
| fc148ca133 | |||
| 0a33633579 | |||
| 257d90f3fb | |||
| bc3f582bb0 | |||
| e7d29e234c | |||
| 1216398da9 | |||
| b62cab6e09 | |||
| 2ef091efcc | |||
| 0ef58c3155 | |||
| 89d8cdfc7e | |||
| 0c842417ef | |||
| be7780b035 | |||
| fe2f1ba1db | |||
| b97befb6a2 | |||
| 2969eff86a | |||
| 2ed0b3f935 | |||
| 45b6e68e09 | |||
| 3cdc4cb613 | |||
| a31bc67503 | |||
| db481dca94 | |||
| e3c36a2575 | |||
| c78c9f5a9b | |||
| 3f1aa08af6 | |||
| 6d5c8a8f51 | |||
| 3a44152201 | |||
| f92c041a1c | |||
| 95a515fc44 | |||
| e6458393ab | |||
| eb9945d9ae | |||
| 102d25a822 | |||
| 5541cade86 | |||
| 74383bfc42 | |||
| 83988bd43b | |||
| 3ebbc241a1 | |||
| be2a53e6e0 | |||
| 7fbc2e37b8 | |||
| ca842a6bcb | |||
| f60e0150b8 | |||
| d376b7d63e | |||
| 2c555d87b0 | |||
| 8a7f4b8dc1 | |||
| ed3d86c9a9 | |||
| e29439bd14 | |||
| 3b04f3bb0f | |||
| 89a08ba63a | |||
| 12023373cd | |||
| b978f31a93 | |||
| 056623f3d7 | |||
| 7be9270c24 | |||
| 89bf843a6d | |||
| 36d8e7d8d7 | |||
| 0c39adef95 | |||
| f6876e10cf | |||
| d1c754168a | |||
| 06b835607f | |||
| 22e39d0ee4 | |||
| 2a13ecc9be | |||
| e839e33a96 | |||
| 095375925e | |||
| 0be3783316 | |||
| 618dc80c2f | |||
| d3b6fe5f9c | |||
| 1c36d0682a | |||
| 785d8580b3 | |||
| aa2f6f96dd | |||
| 5140a2f626 | |||
| ecb5cf7cb2 | |||
| 2e56fb2bcc | |||
| 4dbed7d9c4 | |||
| c101092adf | |||
| fbe65e5e1c | |||
| f5a6ce44ce | |||
| 1a4d5c9543 | |||
| 32884a7ef6 | |||
| ba918ac1b4 | |||
| 4697def66b | |||
| 703c165188 | |||
| 09ed07293f | |||
| 84a25570cb | |||
| 8c82479d83 | |||
| b70a1f455c | |||
| 57db02e8c0 | |||
| ede3bc1128 | |||
| 5c0e525c1c | |||
| 219305df44 | |||
| c7434706a2 | |||
| fd04fbaaaf | |||
| e8d6c28955 | |||
| ce5ced1d00 | |||
| e609aae673 | |||
| 1227d08640 | |||
| b50d48b158 | |||
| badfe6c75e | |||
| 6ef5a5beeb | |||
| 3c12a67b76 | |||
| a03121bcfe | |||
| 9882123d69 | |||
| 44f687297a | |||
| a8464c516b | |||
| 4acbb29821 | |||
| 2103d87c89 | |||
| a64e3b3e68 | |||
| cf1045338e | |||
| 04c7abd9c3 | |||
| b1a7ebfdec | |||
| 0d8aa35f60 | |||
| 4fee63fe1c | |||
| 0d3eee7fe8 | |||
| b85a53405c | |||
| 92bd859a29 | |||
| 7d575e09e2 | |||
| 84ef5aecca | |||
| bc0f737dd7 | |||
| 06973f7065 | |||
| 8540dadbe9 | |||
| 55946f23a6 | |||
| 24cc058e5e | |||
| 553447ac3b | |||
| 66d70a8f66 | |||
| e749d77619 | |||
| 23e93d95b5 | |||
| 77d118b4ce | |||
| 27efcfb7eb | |||
| aa7847d3ad | |||
| 20578bda74 | |||
| 74042b8fba | |||
| e4d7433ef0 | |||
| 200c83b29d | |||
| b9e2967a5e | |||
| eed2f8c3a9 | |||
| a3301b71f6 | |||
| 546d1f40a0 | |||
| 3647515788 | |||
| bef10f9a05 | |||
| b769339295 | |||
| 74e3b5578e | |||
| b2111ba3cd | |||
| bd3ff6b348 | |||
| 303cf4dbff | |||
| 7ca954cf26 | |||
| 1204e41f01 | |||
| f3439c7eae | |||
| 8ac0334ebd | |||
| b39c2068e4 | |||
| a09af3b004 | |||
| 67b2eb1042 | |||
| 482869633a | |||
| c56cf8d55f | |||
| 8ddff3e6cd | |||
| a79fb1c491 | |||
| ace4dca5df | |||
| f064dca7ea | |||
| 0f88dade23 | |||
| 083b901eb3 | |||
| 327d5fe072 | |||
| 0a42b9e2c5 | |||
| 53ed2c4c58 | |||
| 5365ff40d3 | |||
| 89bdf84bcd | |||
| c560fc4933 | |||
| f4a43df52b | |||
| c7b85e3710 | |||
| b738016b78 | |||
| 9ad255f975 | |||
| 38c9440a15 | |||
| 1a51d05f8b | |||
| f1ef0e31d2 | |||
| d2a9773457 | |||
| 0e69905d9f | |||
| 1edc59e71b | |||
| e530940e47 | |||
| f51e01f47d | |||
| 9b9e52a1cb | |||
| 582f04f064 | |||
| c5bad3ad21 | |||
| e563b3b326 | |||
| f66dcd044f | |||
| 3a6555b345 | |||
| 67b44811af | |||
| dca81d0472 | |||
| 9568c1d985 | |||
| 617075f49f | |||
| d5739ab56a | |||
| b4bf51253b | |||
| 27fc6782bc | |||
| 72919f3d35 | |||
| 14ee6a66f8 | |||
| 6ef20bb7ae | |||
| fbadc2b608 | |||
| 269556e557 | |||
| 7c7b194cf0 | |||
| ead3410f30 | |||
| b97c24b2e1 | |||
| 8ba9e794e6 | |||
| ee38d7e089 | |||
| b3e7890ada | |||
| 62f4ae153b | |||
| 3f8de891c5 | |||
| 12ed08bc3a | |||
| 37ce5600c0 | |||
| e52687e88f | |||
| 61497d958e | |||
| b4584612b4 | |||
| 3ec09478de | |||
| 7813a0f81c | |||
| 07e318b3db | |||
| 27e63c0037 | |||
| 081fd746f0 | |||
| 3f745ebe9f | |||
| 6d4bd59cf8 | |||
| bf6789d913 | |||
| 372a7f45c5 | |||
| f162252e25 | |||
| ad4dde3d50 | |||
| 6fe15e357d | |||
| 294adef356 | |||
| 148114e325 | |||
| 2bd559ff5d | |||
| 73b0b59667 | |||
| 7c5735dc2a | |||
| 7ac2787019 | |||
| b78fddea39 | |||
| 309647c81f | |||
| bc6a48c6cf | |||
| f89c67cf19 | |||
| dc03ae2c6d | |||
| e977f471f1 | |||
| 59467601c2 | |||
| 4a3d1ca3f1 | |||
| 55e642e586 | |||
| d15a67fa56 | |||
| 8c38b5dc2e | |||
| 09a33fd8a9 | |||
| 535db41be8 | |||
| 9ab3fac841 | |||
| b6b8009548 | |||
| 5d72a89442 | |||
| c841a1fa7f | |||
| a1b1ab1478 | |||
| 315baab944 | |||
| 78d1ee295d | |||
| fd5091db5f | |||
| 4b75e4df27 | |||
| cad2a4caed | |||
| 141dea6bc7 | |||
| 658341189b | |||
| 823a684f8d | |||
| c31a116b72 | |||
| dfab48ac54 | |||
| a3d22efd77 | |||
| 387941fb62 | |||
| 53c05341d4 | |||
| 605542c330 | |||
| 5130713ba1 | |||
| 7b5ae2f077 | |||
| 388f3cb565 | |||
| af7c18f7a2 | |||
| 618e1ab349 | |||
| 18e0cc7f72 | |||
| b39ea45292 | |||
| b2149d03b9 | |||
| 796840d2f0 | |||
| 8efec111fc | |||
| 2073ed6f20 | |||
| 6daa19da9a | |||
| 7357975000 | |||
| d3024a2cce | |||
| b65490a312 | |||
| 80de0a8c40 | |||
| 38536d6f7f | |||
| c4dcf043ca | |||
| a70e599d80 | |||
| f430ddb624 | |||
| 031366383a | |||
| 99edc443e9 | |||
| 0677e11125 | |||
| ce71b8654d | |||
| 9f013d5779 | |||
| f8b1b4bab9 | |||
| 910b019f93 | |||
| d6126f764f | |||
| 65842bf669 | |||
| c39554bf49 | |||
| caa805ea64 | |||
| d47ef780f2 | |||
| 658952a38a | |||
| e3042683bd | |||
| 69cf62adac | |||
| a82a87f26b | |||
| 5dee786d7b | |||
| 314ced3951 | |||
| 46ef463135 | |||
| 9140756d30 | |||
| 0a5befc4c0 | |||
| fe46a7e686 | |||
| f972dc2d5c | |||
| d5c6183def | |||
| a5ab900d26 | |||
| 8ce5e2c1ab | |||
| 3b9027c401 | |||
| ed9c14a7ef | |||
| ce039c3ea5 | |||
| 906b1650b5 | |||
| daeb6f6b40 | |||
| 343205d705 | |||
| 79ad308781 | |||
| 314190a0ad | |||
| f0ea7ab328 | |||
| 26bd7bef58 | |||
| c3e73528f1 | |||
| 53b7dae139 | |||
| a7e80e6bfd | |||
| 04ebf058d5 | |||
| 6eed3feafb | |||
| fd10c4e1ee | |||
| a16a96942d | |||
| b56fbbad0b | |||
| bfc34dca3b | |||
| 3ed42b0098 | |||
| af25361762 | |||
| 376b311deb | |||
| b1cd474c77 | |||
| a6b00cbb16 | |||
| ce71bfa817 | |||
| 0b907122b7 | |||
| 31a5ee922a | |||
| 83acdeaf17 | |||
| 730801d955 | |||
| cd0ef0e09b | |||
| 8d42b9b4e8 | |||
| fe1183a7cd | |||
| 71c865f4d2 | |||
| 361e46d6d0 | |||
| 9120f00446 | |||
| 7efec25964 | |||
| b62bf7a700 | |||
| 23d6abd23b | |||
| 719c50caf8 | |||
| db0b9e7d52 | |||
| 16478459da | |||
| 0943048ad0 | |||
| 49a0f6cd99 | |||
| d8acc44672 | |||
| 9258ec0a2e | |||
| 3fdef8cfca | |||
| 264e98d6a8 | |||
| 5ec6cf7fb8 | |||
| 96c8608dc5 | |||
| c129d4fe45 | |||
| c37ff6a1ec | |||
| 3db3acb94e | |||
| 9344e6ad1a | |||
| 33e25a3984 | |||
| c16888a849 | |||
| 1cb334efba | |||
| 4cd188d4d5 | |||
| 6b8d8395b6 | |||
| 1e44c678fa | |||
| 0ea0128904 | |||
| 29727bacd7 | |||
| 09080c38d1 | |||
| 62a30a496a | |||
| b16cd226a2 | |||
| 3fc974209a | |||
| 5ec55b4ff0 | |||
| 3bd3d6b0bf | |||
| 6f4ca18d83 | |||
| 3970a2dc86 | |||
| b74aadb3e5 | |||
| 950176ec65 | |||
| 227f26afdb | |||
| 0cdb9a5cfc | |||
| d115ed59e0 | |||
| 7f7676e77b | |||
| ef088ed962 | |||
| 594ac31b2d | |||
| fb54230b60 | |||
| ba1d379ce8 | |||
| 854111f97e | |||
| 9757e10d6d | |||
| 7cc5410bfd | |||
| a7d17c6187 | |||
| 1af75828a0 | |||
| 731c738652 | |||
| 72a8405a47 | |||
| 2c7f5ca662 | |||
| a5a46c6fc2 | |||
| 7d8f5eb3bc | |||
| 3dc4268669 | |||
| 9827e0a42c | |||
| 1f9da29de1 | |||
| eaa2fd6939 | |||
| cdc42d0a48 | |||
| be34c3c7ef | |||
| 654dd2902d | |||
| 54c973d52b | |||
| b195f20f18 | |||
| 1f703731d3 | |||
| 912f5e5884 | |||
| e09086b074 | |||
| db2ae2044a | |||
| 952eb15deb | |||
| e2c03da940 | |||
| 80b4d20dfe | |||
| 2dccf5ef07 | |||
| e5df24a11c | |||
| ca18b7108d | |||
| 2c8eb68969 | |||
| d47b6e54fd | |||
| dfff67c082 | |||
| 6512d09cf8 | |||
| e3a0c80f1d | |||
| 5b6782f941 | |||
| 2df1657686 | |||
| b2a2ba71b4 | |||
| 3812c7b42d | |||
| 15f5eaa098 | |||
| 80fd73ca09 | |||
| 08fd20b04a | |||
| 9c48360b1a | |||
| 0c0e0d0263 | |||
| 81fbb4cb23 | |||
| 6aabcb5bd8 | |||
| 39d883bb3d | |||
| 623bc48ad8 | |||
| 62927dd8f0 | |||
| e1f2778434 | |||
| 98f6f381c8 | |||
| d2259ada49 | |||
| 1671b64702 | |||
| aef969499f | |||
| 21c84e00d3 | |||
| 2355fce3ae | |||
| 1825c6555a | |||
| 50b6c95d62 | |||
| ed00e45dba | |||
| 704bd732b5 | |||
| f0088c1bfa | |||
| d392f4db9d | |||
| eb895e7407 | |||
| 8cfc4c9a03 | |||
| 77dd67087b | |||
| 0022995555 | |||
| 86304e35a3 | |||
| d22591efb9 | |||
| 3aa13a471a | |||
| 4bc3bd7b18 | |||
| a3e1f04b76 | |||
| 379eb3956c | |||
| 2c2672bc9a | |||
| ce4896fb65 | |||
| 16a4d22b4b | |||
| 5e13b7ab5e | |||
| 5d462bd0b3 | |||
| 014c9f3196 | |||
| b66924148a | |||
| a44d0dc26c | |||
| febc591683 | |||
| 4f6c999006 | |||
| d86c876a66 | |||
| 16658da4e7 | |||
| e8d43d0687 | |||
| 42ce352c13 | |||
| 73370e9868 | |||
| 1dd6f855c3 | |||
| 6237e9c89b | |||
| 4886cba76a | |||
| 38a22fbfaa | |||
| 7b2f8cdd7c | |||
| 053307175c | |||
| a6e7ba9464 | |||
| 1ed1bf3a38 | |||
| 4ac290cc33 | |||
| 5da9c98067 | |||
| 774c757e67 | |||
| b030084f07 | |||
| 2224989c39 | |||
| 4359900ed1 | |||
| 989051a85e | |||
| 3a6bf1bb78 | |||
| da9d937b94 | |||
| 1867004ed1 | |||
| 0a6a6f5e61 | |||
| 8803937b59 | |||
| eabb98b0a8 | |||
| d6c99337a9 | |||
| 61defb6bcc | |||
| 73f702ff4a | |||
| 3d294a1c03 | |||
| 30a9329ab1 | |||
| 322707ba8a | |||
| 3c58896eb7 | |||
| 4d434da34c | |||
| a0356bcc41 | |||
| c2c4d51b2f | |||
| 58fe995e50 | |||
| d6c40aaec8 | |||
| 9bca7a7e2e | |||
| cebc4b8921 | |||
| ad4f092443 | |||
| 8a73fe5936 | |||
| d78554d884 | |||
| 2982d73a11 | |||
| ab0da52b43 | |||
| 8d6af63a8a | |||
| 74ec5e65ce | |||
| 776e37e1eb | |||
| a9e4ea94f1 | |||
| d812e7aeb8 | |||
| 1b0cce7d3a | |||
| e8ac4a79f1 | |||
| cfe49446d3 | |||
| 0276587287 | |||
| 9933c4f2f6 | |||
| 522776ed4c | |||
| 5073aa994a | |||
| 438fa79358 | |||
| 2d4d657695 | |||
| a3dddc0020 | |||
| d0b97e820c | |||
| c198f51a10 | |||
| 3238081efd | |||
| 2861390866 | |||
| 6c6fbac7a9 | |||
| 515378b34e | |||
| 978dd6d48b | |||
| e85065b854 | |||
| a9d12c2444 | |||
| fd5eb45b95 | |||
| 3a80f2f7ce | |||
| 66b3250563 | |||
| 7aee22939f | |||
| ddcee85f7c | |||
| f01ee2acc8 | |||
| 4c81b0fdc5 | |||
| 28024f2311 | |||
| 0418fa2e72 | |||
| a4e9edbd77 | |||
| 8287bd2996 | |||
| 3b3cdec395 | |||
| e6abf3d8f2 | |||
| 048781fe71 | |||
| 7003390791 | |||
| 75b7f400f9 | |||
| 728e9229b1 | |||
| edcae5a7c4 | |||
| 98ea78b6ee | |||
| 65160f50be | |||
| b6c87e3b7a | |||
| a4a38ffda1 | |||
| 96ceb12443 | |||
| 79f9419652 | |||
| d9734072ff | |||
| b0367e86ee | |||
| 44112bce89 | |||
| 338e7c3c8d | |||
| 7679f064bf | |||
| 7a90f21655 | |||
| 1c06eb18c3 | |||
| 8838ee39ab | |||
| c0a9b6a533 | |||
| aee70b7482 | |||
| 2718a3d836 | |||
| f2d8c9d087 | |||
| eebf932e94 | |||
| c1237818d2 | |||
| 20fa7cdb32 | |||
| 3f24ae2eb9 | |||
| 8459f6e284 | |||
| a26d2628c0 | |||
| f7e5ca90e6 | |||
| ca9e601fcb | |||
| 913ab198fb | |||
| 79fa4a98d1 | |||
| b9daebfee4 | |||
| 54f868c164 | |||
| 457d4ad99d | |||
| 9501a45fc0 | |||
| a3bd8bbb38 | |||
| d4c1e5aeed | |||
| 434daaff9a | |||
| 156e36a238 | |||
| cf30da7a25 | |||
| 188852c984 | |||
| 27c357bcfa | |||
| 8153c72b97 | |||
| 5dbb208a4f | |||
| ab007c3da0 | |||
| bfeeb9a6d2 | |||
| e9f468d3f9 | |||
| c90e545f83 | |||
| cc3618d77b | |||
| a858474f49 | |||
| 469b6b3a75 | |||
| 9b2c299a35 | |||
| 2c345831a3 | |||
| b6798b68cb | |||
| 841d50358f | |||
| c7523b410a | |||
| 4fe975fe4e | |||
| 3a70131312 | |||
| 7c59337d5d | |||
| 470764f0b4 | |||
| 46306c9c85 | |||
| a5d8d265a2 | |||
| 1e93e37bbf | |||
| cf54204e27 | |||
| 49e261d14e | |||
| c23a4fd13f | |||
| de42b8b223 | |||
| 7cdedde225 | |||
| 4106f68ccf | |||
| 06ef64d169 | |||
| f66d574541 | |||
| 1c5c63338c | |||
| 1a43d0b2c2 | |||
| 3a524a2b11 | |||
| 3b734b78ff | |||
| ffb13b1115 | |||
| d5ef0a69e9 | |||
| 7286882c34 | |||
| e104269398 | |||
| 3a2881fa60 | |||
| 0b7d2ae653 | |||
| 16e4084a10 | |||
| a44dc266d9 | |||
| c7c42a85b9 | |||
| 6695818c03 | |||
| 6df8b363f7 | |||
| 33a198c1f6 | |||
| 84961bd3f4 | |||
| de3e38a65e | |||
| fa479727ff | |||
| 576b2c7514 | |||
| 2b844f1614 | |||
| 2e5efc3d6e | |||
| e7c8ab8f0e | |||
| 5baa463541 | |||
| f3cbd24ddc | |||
| 11f6cc3279 | |||
| d37bca86d0 | |||
| 643ee3fa44 | |||
| 1428704d2a | |||
| 49226d2ce4 | |||
| dd16045041 | |||
| 63a499d3f3 | |||
| 52a18abd94 | |||
| d0857c0132 | |||
| 803d320430 | |||
| 21a2eba44f | |||
| b148318981 | |||
| 042956d558 | |||
| 2aec15bc5a | |||
| 22f3ec27a3 | |||
| a645c8f0fd | |||
| 057ad3a2f5 | |||
| 94d599eccf | |||
| deae2bb57f | |||
| a010165d27 | |||
| 921d2225ba | |||
| ad905a195e | |||
| 1fb7af40cd | |||
| b927aed8a3 | |||
| f509e16241 | |||
| a7d1eb3c44 | |||
| 60e8977fdd | |||
| 033eef4358 | |||
| a8eb010ea2 | |||
| 2597f8ecc9 | |||
| e2692e25de | |||
| 27ba0ad905 | |||
| 0c3fb8d41c | |||
| 5de41c06a4 | |||
| edc9e78b48 | |||
| ba7d82c699 | |||
| 25f7fa0583 | |||
| c11a82b62a | |||
| 51ea18a844 | |||
| 4ecf9c653e | |||
| 3b3305d859 | |||
| 534664c372 | |||
| 98895e9386 | |||
| 1b9d074493 | |||
| 723bfda1ce | |||
| 16387171c0 | |||
| cce1998a64 | |||
| 8e7d14953c | |||
| 604c70fd5d | |||
| 66137344fe | |||
| 10616d7a1e | |||
| 5362edd442 | |||
| 2b2dae816d | |||
| 421d995005 | |||
| 89832303d7 | |||
| e9f4c94301 | |||
| 3a4f172fdd | |||
| c5358c0e1f | |||
| e4b07fd6a5 | |||
| f248c965ce | |||
| 5697aa848b | |||
| 8c12b20c61 | |||
| 3fa3cff73c | |||
| fa1e4759db | |||
| 79533da1b3 | |||
| 1f60411686 | |||
| a4e09c1ed8 | |||
| 1449392dce | |||
| 74c1c534a9 | |||
| 0a4283cb94 | |||
| 6e547d54e5 | |||
| 9428f2ced6 | |||
| 563dc5654c | |||
| e7ef4ed1d2 | |||
| 03fa46886a | |||
| 81ea6e4d9f | |||
| dddad4bcb4 | |||
| 834d65471d | |||
| 63166a4e0c | |||
| 7a18fbeeb8 | |||
| 816d79143b | |||
| 32f021f266 | |||
| e15bf04465 | |||
| fe9c8d9147 | |||
| 43d0ba5f95 | |||
| 4060131927 | |||
| bb8d57c68a | |||
| 7ed63c5312 | |||
| 874990dc2c | |||
| db810b1148 | |||
| 7cfbb17978 | |||
| 8f147d16f1 | |||
| fb7cebb767 | |||
| e7c78b0a94 | |||
| a73cd93b24 | |||
| 37f415da42 | |||
| af10d9baa8 | |||
| 79d2c5831a | |||
| 040e80f7e6 | |||
| b8d4b6bec9 | |||
| 4811fab790 | |||
| eb81396863 | |||
| c7e1cfc9f4 | |||
| 7d43c80bc4 | |||
| 776b675861 | |||
| 2060a0a43e | |||
| b827338a72 | |||
| 264f3ddac9 | |||
| 2cdb665b10 | |||
| f2f656d426 | |||
| 0fe553744a | |||
| 278e947890 | |||
| bbf20165cc | |||
| 046039124d | |||
| afec7cf1ff | |||
| 448b92c05e | |||
| ecb0221a5f | |||
| 91f9157e5b | |||
| d42cfb4ef0 | |||
| 03a155a25b | |||
| 645f4acafe | |||
| 4b3e19526c | |||
| 57dbe08e74 | |||
| dad6ecc6bf | |||
| 8d567fbcd3 | |||
| 8c4d80d72e | |||
| c15a64b9b4 | |||
| 5313dc372b | |||
| 7bed630dfb | |||
| 4be6e024c7 | |||
| da82b03fb0 | |||
| ddfd21f815 | |||
| 3cbc05012d | |||
| d0d4b8ad76 | |||
| dae7054b76 | |||
| a8a560dd3a | |||
| c7a8e1bf74 | |||
| 007f016b2d | |||
| d11d93f406 | |||
| fd2090cdb9 | |||
| f24e67d24f | |||
| e6cbadd588 | |||
| ce62916b6e | |||
| 308b85330a | |||
| 7023663873 | |||
| e99fb5ed9d | |||
| db19834a0a | |||
| 3ad6dcf3dc | |||
| fe2af45bb2 | |||
| ce4c0bf5a2 | |||
| 632be33689 | |||
| 2e23607448 | |||
| e51cf5c192 | |||
| 7c34bb2681 | |||
| 2659b3f5aa | |||
| 730fd3b022 | |||
| 3c3dffc285 | |||
| 45e0483dac | |||
| bc0010b3d1 | |||
| fedad93d9e | |||
| 6008cfc7c0 | |||
| 4916936751 | |||
| 75825e453a | |||
| a32c43d6fe | |||
| cabc2cc98f | |||
| c04498b305 | |||
| 117aa0d874 | |||
| 52147a0452 | |||
| 9b6efcfef1 | |||
| f9c56cce79 | |||
| 1dc10a7b28 | |||
| 6c70802374 | |||
| a340f9131a | |||
| 77cfcccfa8 | |||
| 41d8968d43 | |||
| 4604c18f0b | |||
| 1cfd5a00eb | |||
| ff26194143 | |||
| e40438fa7f | |||
| 15a9144609 | |||
| dd9e9c3b54 | |||
| 790f0b3057 | |||
| 457a10d91d | |||
| 624f0c68bc | |||
| df4c57ae27 | |||
| 0f04b58730 | |||
| 5469686bfd | |||
| ec3fa12e94 | |||
| 6f5e63324f | |||
| 64a4c60e9e | |||
| cdf7a40d9c | |||
| 7ecb50c2a6 | |||
| 4c9afe08e4 | |||
| 8d6a1b2c88 | |||
| 3cc8a66052 | |||
| 11dc7786f4 | |||
| f0006d9792 | |||
| 8a659e3186 | |||
| 784b5030c1 | |||
| cd04abcc8e | |||
| c26cb9234f | |||
| e02f691a90 | |||
| c6d5ac174e | |||
| bb4ec5550b | |||
| 8f67f6448b | |||
| 649bcd72fe | |||
| 4fbad2e049 | |||
| b712bfb46c | |||
| 7d10811312 | |||
| 91b009cde4 | |||
| 3811eaaa63 | |||
| 3023ec5ee7 | |||
| bea92f968e | |||
| af249ea468 | |||
| 7400396801 | |||
| 89d549c3eb | |||
| 8db32571ba | |||
| a9cb354833 | |||
| 24e3b35c6c | |||
| 15941b2bc7 | |||
| 45bd290b64 | |||
| 0aa72ac6fd | |||
| 1fc3816d0f | |||
| 104fdbf038 | |||
| 07a107f0da | |||
| 08dce95a74 | |||
| 667ce28946 | |||
| 4e40aee273 | |||
| 7624b47d1e | |||
| 2f5115627b | |||
| 030db0c2ec | |||
| 4c44cdcce3 | |||
| 517761fd96 | |||
| af1e2ede26 | |||
| 468439854b | |||
| 23eaae9aff | |||
| 3d4c1d94d7 | |||
| 753c6c9c75 | |||
| ef591ef7b9 | |||
| 075bb5f1aa | |||
| 9ae8fa5839 | |||
| 4728bad403 | |||
| 112ed8f50d | |||
| 991be60403 | |||
| 9231aa7d95 | |||
| 979218cdd9 | |||
| 680c92ae7e | |||
| b79aaf91b8 | |||
| 447ef8863c | |||
| 7c7681dd90 | |||
| b7abcf9d71 | |||
| fc8d199188 | |||
| 958c366b21 | |||
| 4296cea2b2 | |||
| a71f79c37e | |||
| 8001eef5d0 | |||
| 4ab7995871 | |||
| 5f67253813 | |||
| 0264e1678c | |||
| 46992453b9 | |||
| 3505790b85 | |||
| 530d4463ba | |||
| c3cc4f8bad | |||
| 9899e08b8d | |||
| 37bc888b28 | |||
| 24c8fc5dff | |||
| d5fcd4f7a3 | |||
| 47fec8eac2 | |||
| a3adcce795 | |||
| 1acef95a81 | |||
| 66c6cc7c5e | |||
| 33b35313a3 | |||
| 64f920d056 | |||
| 48a7637d9f | |||
| e5edc3f03a | |||
| d61fff3f4b | |||
| 9bcb174473 | |||
| fcbbb289b6 | |||
| 0d77396605 | |||
| 936565c701 | |||
| 16c1c0833b | |||
| 0b74bc622c | |||
| 74c81b5d93 | |||
| dfdfc601ac | |||
| d27098c054 | |||
| 4c893ef9be | |||
| 03b5dc14de | |||
| b2af10cd49 | |||
| 982682b8fd | |||
| 5bd53990c5 | |||
| 6940109b9a | |||
| 43a9249c95 | |||
| 2ff5cffe6e | |||
| 4ed2c3773e | |||
| 2f4682a9f8 | |||
| 08bed02515 | |||
| b03fe2d0ae | |||
| 09c64d0072 | |||
| 949dd07b19 | |||
| 309acaa023 | |||
| e8fc4cbb64 | |||
| 89f0c6d089 | |||
| 9e2fe24518 | |||
| d686056f62 | |||
| 9710856b33 | |||
| f5ee422c58 | |||
| cf577653dc | |||
| de2b252df5 | |||
| 41fa653f32 | |||
| 4f4a1deccb | |||
| caf8e91588 | |||
| 6d8331fd58 | |||
| 4027461865 | |||
| e1ea1b2af7 | |||
| 39a7be470c | |||
| 16a3a4a30a | |||
| 2210f8a3a8 | |||
| 04e0686262 | |||
| e391595890 | |||
| c396fb36fa | |||
| 2d8d9b100b | |||
| a56ec4515b | |||
| 4348a4a85a | |||
| d66fab6eea | |||
| 3b13aa3db3 | |||
| 11a36d956c | |||
| 826cbac459 | |||
| be2cd079af | |||
| 36297e1db2 | |||
| e3f5dbcdf0 | |||
| 8fe128a46c | |||
| 74b379cbd5 | |||
| c861237a64 | |||
| b8b260dde9 | |||
| 7c39e4f885 | |||
| 73c901a807 | |||
| 33948c6844 | |||
| 93f77250b3 | |||
| 35b5f84c50 | |||
| fae0da5c13 | |||
| 35e7f27141 | |||
| 8d75cb7fde | |||
| 0d5600fd2f | |||
| 345a5092e5 | |||
| de85acdf3b | |||
| 543e013a15 | |||
| f6c66d01fb | |||
| dd26096ad1 | |||
| ac33531a05 | |||
| e1a2fe6af2 | |||
| 2dd44664cf | |||
| c73a0c4ac9 | |||
| 221b457e69 | |||
| ab8dd999f5 | |||
| 01e0e98f07 | |||
| 2e812c89e9 | |||
| 624a7927f0 | |||
| bbaecd6a8f | |||
| f5c65fa192 | |||
| 7b1fe89a5c | |||
| e1f5f8516f | |||
| 3a05dc09ec | |||
| 709c37e932 | |||
| db68d6b164 | |||
| d285084b12 | |||
| e46f6309d5 | |||
| e2b8f981c4 | |||
| e22f2f5c9c | |||
| 7165bef132 | |||
| 2eb9301ba5 | |||
| 6e24ccb266 | |||
| 112746cdc5 | |||
| 3c4b8a7706 | |||
| ee8240b295 | |||
| 1e87ecd12e | |||
| 9e09f313d1 | |||
| 97648a9751 | |||
| 3f935df0af | |||
| fca27ca2bb | |||
| 547d8e3a86 | |||
| 79cfda0013 | |||
| 529325bbdd | |||
| ea6bc1e8c6 | |||
| 398d01b8a9 | |||
| 96ad9ed33b | |||
| 1a09553e52 | |||
| 6e16575a37 | |||
| 3bd4c7ba16 | |||
| 36e0372986 | |||
| 7cc1491d10 | |||
| 1daea0c59d | |||
| 79d233b5ca | |||
| b37979023d | |||
| 553f31c579 | |||
| 8fc469b3d5 | |||
| 9d162096ca | |||
| b013ebc3b2 | |||
| c1a45b5107 | |||
| 15bfedcbbd | |||
| 47c8709564 | |||
| f4e74cf63c | |||
| 14bf7270aa | |||
| d710d60c31 | |||
| fe627697a3 | |||
| 295fd6e833 | |||
| a010fb58d6 | |||
| 5fede0a90b | |||
| f5fc670638 | |||
| 00fd3ff49b | |||
| c6f1459eb9 | |||
| 727cda9d1f | |||
| 970135f6bc | |||
| d9b285d7e8 | |||
| b08e6d38ae | |||
| 401c404811 | |||
| 4f17809a36 | |||
| d790a66d6b | |||
| 11573f3ec1 | |||
| 182eba1bc6 | |||
| d9e66a62b4 | |||
| 1caa19cb06 | |||
| 879cd8cc2b | |||
| 46da355022 | |||
| 79f45855a6 | |||
| b06c97e51d | |||
| 4c10127b2c | |||
| f8d54e7c94 | |||
| aadab51541 | |||
| 85df93399c | |||
| 3e11f9ff90 | |||
| e7f38d96f0 | |||
| 61ea9c89c5 | |||
| f566c5924a | |||
| ed2a10a1c5 | |||
| 81f3edea8f | |||
| d7a3c8352e | |||
| bdc8861aac | |||
| f225e560de | |||
| 316e9f9032 | |||
| 6d9c4758ae | |||
| eff29c8b28 | |||
| 6f19c16c78 | |||
| 19d70c7d96 | |||
| 1e64d8c731 | |||
| 4734a4227f | |||
| 3aee261527 | |||
| f38b654e9b | |||
| a541c76238 | |||
| c93370c4ad | |||
| 237f3bf8da | |||
| 25e2857c21 | |||
| 323ad539bb | |||
| 5486abfe4e | |||
| d104362d90 | |||
| fe4bb32cba | |||
| ce37c3a109 | |||
| 580ad29288 | |||
| 6bfffce916 | |||
| 3620e3cdcf | |||
| b167672c74 | |||
| 23b2497292 | |||
| 8ce9f2b161 | |||
| 49faa15e4f | |||
| c3aa1f8bdb | |||
| 0d4d04e550 | |||
| 15b0c4ffdb | |||
| af4c893eb7 | |||
| a1c4d7d765 | |||
| 6f9d8bdbcb | |||
| ecd93b7541 | |||
| b92587bc56 | |||
| 738ee810b4 | |||
| 03d777f345 | |||
| b81a7ece97 | |||
| 12c542a421 | |||
| 6ed7374c5a | |||
| 27a1f781bc | |||
| c8c9ef2757 | |||
| 0c85095e46 | |||
| 24e0171b86 | |||
| faa8bf1079 | |||
| 58df0daa7f | |||
| 9ca731f66c | |||
| 3514c8c375 | |||
| 5d2df4100d | |||
| aabafbea1d | |||
| 38b3514832 | |||
| b1e32305bd | |||
| cf5fa06c8d | |||
| 13f59ad733 | |||
| bde4589189 | |||
| b553b50acb | |||
| 7ad5c00ed9 | |||
| 634736a781 | |||
| b1be11c727 | |||
| 1355e0552e | |||
| e0a48c99e4 | |||
| 3decd4f9f1 | |||
| f991a00653 | |||
| 81c28325aa | |||
| cebeba7bd7 | |||
| d6d528ca25 | |||
| c00c6d038c | |||
| ec171c529a | |||
| 7ff256ec98 | |||
| e56c6a83b4 | |||
| 5c519beb2e | |||
| 7d6b260174 | |||
| acfe3f2664 | |||
| 8c69a83881 | |||
| 0b648155e7 | |||
| 91b56239e0 | |||
| c3fd4a75e9 | |||
| 229c5c9b2a | |||
| c8b2f62297 | |||
| 58355a5bfb | |||
| c93125b120 | |||
| f7a107f73e | |||
| 5c2a1ae876 | |||
| fd5c9bb9ab | |||
| a70da51ff7 | |||
| 8881ae1bf8 | |||
| 3c80fac258 | |||
| 8110d304f4 | |||
| 315c0aa08c | |||
| 61fcc8b939 | |||
| c4f6e80671 | |||
| a640328f8c | |||
| 2c60f4f0f2 | |||
| 6c02fa7bd9 | |||
| fac3f4cd54 | |||
| e1d715ef7d | |||
| 67b2d5e0bf | |||
| 756be09d23 | |||
| a2a30038cf | |||
| 47e7a258db | |||
| b22d935dbe | |||
| f2ad7824aa | |||
| 61a70716cd | |||
| fb01a107c5 | |||
| d513acdd54 | |||
| 847a7c7c2e | |||
| f98be4d35c | |||
| 07ce4d2a90 | |||
| cd6a9334b6 | |||
| 2db2c5a186 | |||
| 03d338608d | |||
| b9a8bef477 | |||
| ecc5c82985 | |||
| fcd4e26943 | |||
| 7ec20935bd | |||
| 78811ae572 | |||
| 7887e00355 | |||
| 0e9ae444bd | |||
| c42c1b8a5e | |||
| ec31cd76c9 | |||
| 1e060bf2d7 | |||
| cbe63e529d | |||
| 755915ea4b | |||
| 5c8d3d3bca | |||
| e52d608ddf | |||
| 6ab16aaf63 | |||
| 3e14a8dc80 | |||
| f5dd3bcde9 | |||
| 44646747a7 | |||
| aa67241bde | |||
| d4c032d0b7 | |||
| 6e7ab46106 | |||
| d7ed2c18e1 | |||
| 3fa4a82e6f | |||
| 110abb0343 | |||
| cebd575cd5 | |||
| 22d990f138 | |||
| e45b13d248 | |||
| db4137ba02 | |||
| 100cae7359 | |||
| f238709304 | |||
| 32456779a1 | |||
| 8d4ed2ad3d | |||
| c5a305584f | |||
| 56ad465675 | |||
| aec22258ef | |||
| 1aec7d8606 | |||
| 5965de2f4d | |||
| 30506b9216 | |||
| 4ae51ca54e | |||
| 6fcac926fb | |||
| 657326cfe3 | |||
| f54de34ba4 | |||
| ee8a06f833 | |||
| 1128cc939d | |||
| f125d3265a | |||
| ca8a932c87 | |||
| f7d5b4d613 | |||
| aecae56071 | |||
| 130634dd7c | |||
| 1fcaae34e1 | |||
| 94f0c4abd9 | |||
| 1ad59dd152 | |||
| bc8bcdcb24 | |||
| 577ab7bae0 | |||
| 089ef25a85 | |||
| 9323717b47 | |||
| a7848c4502 | |||
| e2cd26ee70 | |||
| 6f91c5b5ea | |||
| 46b80ce25e | |||
| 166c03f31b | |||
| 3ef2e05c4d | |||
| 1469bcf6c5 | |||
| 767c5bbe01 | |||
| f2a46c848c | |||
| 25b20b7103 | |||
| 198bd0516a | |||
| f4d881649a | |||
| d5df676938 | |||
| ad866fd196 | |||
| 3e8cb46076 | |||
| 46e76e8b2b | |||
| 03d28d7355 | |||
| 1f8988b580 | |||
| 902aaabb11 | |||
| 6b50bbea00 | |||
| 0cf672fa91 | |||
| c8376c91f6 | |||
| 28c3243e77 | |||
| 3ced80b54a | |||
| 96f0ee85d2 | |||
| 91c7bf659b | |||
| 191053b53d | |||
| 02d9cef356 | |||
| e1424a97a9 | |||
| 2a6825c393 | |||
| 182a80b922 | |||
| 34d22c1ed5 | |||
| 77a1f418c8 | |||
| 8ed3088441 | |||
| 0fa4d62986 | |||
| f4592a8df5 | |||
| 3468628a22 | |||
| 1e813ceb3e | |||
| 20f1f714ba | |||
| f435a3002b | |||
| 5cb74dadaf | |||
| d9b4538469 | |||
| 1f5e292520 | |||
| 45aec0eae4 | |||
| 625f1745dd | |||
| e4ac19a87a | |||
| cff257f584 | |||
| 2e6bad311d | |||
| da482fe1dd | |||
| 32ad6aefca | |||
| 85d15b5143 | |||
| d823a05aef | |||
| 8eacfd4cc2 | |||
| 4ff6091294 | |||
| 6aa576cda7 | |||
| 6dfc042c21 | |||
| b8ee9810b0 | |||
| b6e747ec5a | |||
| 2d6adabd53 | |||
| fea5a0bdc9 | |||
| 575b18c0f0 | |||
| 6a035507fd | |||
| 721d3f06c9 | |||
| 24121aa9da | |||
| 28b8cc31f6 | |||
| 077cd91773 | |||
| f340964dc9 | |||
| 46acb0f2b7 | |||
| d288703d57 | |||
| eda3af2488 | |||
| 05b9b8fda3 | |||
| 9dc3b99345 | |||
| f68c91faa6 | |||
| 0de63c6745 | |||
| b35f0131e6 | |||
| eb42e0ab5c | |||
| 6acc17af8c | |||
| 3697a0cef6 | |||
| cc76cf31d7 | |||
| 1dac1b3726 | |||
| 776f527926 | |||
| bf878aa97e | |||
| 8fd7eee90e | |||
| 83af050800 | |||
| 544cd63062 | |||
| 3badeffb05 | |||
| 8e06c8b3da | |||
| 777fc2e9d6 | |||
| ce1783ccc1 | |||
| 40d46934d0 | |||
| 1aa1683377 | |||
| 2e7c8b0b6f | |||
| da8b7c9f89 | |||
| 14194f1d56 | |||
| 690b4ad329 | |||
| 3ec80d0112 | |||
| 2b1f67d418 | |||
| e8ad339312 | |||
| 78675b228b | |||
| 60ff07585c | |||
| 457e050628 | |||
| 12edef9a6a | |||
| 4dbecff9fb | |||
| 4954e079c8 | |||
| 0b973381dc | |||
| 331e1fcbee | |||
| 097c818bf0 | |||
| cb51aa48a7 | |||
| e403f8d43e | |||
| 2d6a581960 | |||
| 444647d1e3 | |||
| c106c8a18c | |||
| 6318808270 | |||
| ebea341856 | |||
| 4035152a87 | |||
| 64a6682b93 | |||
| d4528d9ac2 | |||
| 0c5b7b93a3 | |||
| 7636ef4630 | |||
| 19bac57b26 | |||
| 43b3851975 | |||
| 48de890392 | |||
| 09cbae6297 | |||
| 82bdf6d5ae | |||
| 701477e8c3 | |||
| 9be5773fbb | |||
| b216dd41d7 | |||
| 7b0075a242 | |||
| d1ec4d7a5a | |||
| 3c7a12b416 | |||
| cbcf5ba7d4 | |||
| f5a8f969dd | |||
| f9bfa10797 | |||
| c42b397845 | |||
| f2144a3063 | |||
| 47919e46ab | |||
| 7534be6fbc | |||
| 63fbcc6927 | |||
| e542d52a7c | |||
| 9147bf2a73 | |||
| 22a1ec68d5 | |||
| a9e96b1ee0 | |||
| 5f48643e0a | |||
| a7c76142a0 | |||
| 22a5ebe44b | |||
| 8b54ef4147 | |||
| a480572244 | |||
| 388f3368cb | |||
| 53d9a92497 | |||
| 87f3d69dac | |||
| acec6c3d02 | |||
| 3879b33447 | |||
| a11010c07d | |||
| 8ddfb40e2d | |||
| 3e64748c72 | |||
| 3f11d7820a | |||
| 64bf389bca | |||
| a3a623dd57 | |||
| 16928a161b | |||
| 939cc47431 | |||
| 10a4e969a6 | |||
| 8feb499ba2 | |||
| bf69fd9b22 | |||
| 7a4769bbdb | |||
| 1fdb582a09 | |||
| 067c00f533 | |||
| 1a94521770 | |||
| 08cb0b3cfc | |||
| 180ca598c4 | |||
| f24d4671d4 | |||
| e1ec2a1ea6 | |||
| 5705a7e066 | |||
| e170af3ac0 | |||
| 88e3e8be7c | |||
| 5d3e02aaa2 | |||
| 84e96866ac | |||
| 651153216b | |||
| a49cf8a57d | |||
| f4e7157716 | |||
| 9a152d481b | |||
| df3de82c06 | |||
| 8db5f642e9 | |||
| 16208bca89 | |||
| 3f3ec73d39 | |||
| c9bece0c8f | |||
| eb78ccf391 | |||
| d3209478d5 | |||
| 13e5668a84 | |||
| 8fa592e3dc | |||
| e195b43932 | |||
| 664085ab74 | |||
| abe3ee9cc5 | |||
| a8e34e298e | |||
| 181c80d6eb | |||
| 56d672afeb | |||
| b9ebee4939 | |||
| c3c4bd4e75 | |||
| adefc3955b | |||
| 09a40ab471 | |||
| 70a339970c | |||
| f69b841d2b | |||
| 4f377369a8 | |||
| 86823575fd | |||
| 69a0f3ee23 | |||
| 6a9948c018 | |||
| e3f0cae719 | |||
| 7311161340 | |||
| b55501c00c | |||
| 5c153e200f | |||
| 232514041d | |||
| dd6cd7dd63 | |||
| f055724b27 | |||
| c4a04dc024 | |||
| 85453c4247 | |||
| 1daaebfa0c | |||
| 7d9576edcb | |||
| 9de2972c30 | |||
| be44cabd7f | |||
| 32db8dd75b | |||
| a3f33b6531 | |||
| 707302b2cf | |||
| 0f15d0344d | |||
| c14c6b083e | |||
| be291b330a | |||
| 38fd207e53 | |||
| d412487eb7 | |||
| 7803e6f3ed | |||
| 84255632cb | |||
| b557a36890 | |||
| e4e50f52e8 | |||
| e74d6c5009 | |||
| 5388607f3d | |||
| 115c02e871 | |||
| b4ad955d9e | |||
| 3b4a542c06 | |||
| 13f3d40cbf | |||
| 3c2051f86a | |||
| 2348cf20e7 | |||
| 484640eaf6 | |||
| 41e097e91a | |||
| 1112330e46 | |||
| a2e2717411 | |||
| a7a82f9889 | |||
| 521ac51748 | |||
| 1466051d12 | |||
| e2aeee6811 | |||
| f4c3acdf35 | |||
| e88d638ac6 | |||
| 55bc5090b9 | |||
| 38f6f47be9 | |||
| 946c489c68 | |||
| de1ecd5302 | |||
| 165ed4a00e | |||
| ed5a25841f | |||
| be18d3a732 | |||
| 6c5d4e7cf4 | |||
| 5320ce02d8 | |||
| 9b5655a89e | |||
| 899ae0d2b5 | |||
| 7922e247f1 | |||
| 647247740f | |||
| 335f6bc251 | |||
| e4c48e02b4 | |||
| 6ec87af68e | |||
| 20448818c4 | |||
| 528d37bdfe | |||
| fb1b7d8ed0 | |||
| d26d18a1a6 | |||
| 2cc33bfe20 | |||
| c2709cdaaa | |||
| 4e21a95afe | |||
| ffec099e75 | |||
| d06f261cb1 | |||
| 35153940e3 | |||
| 423af1977f | |||
| 30605477f2 | |||
| 36c820e6c8 | |||
| c23dae4e5c | |||
| 948897687e | |||
| 63e67ee013 | |||
| ce2e300a4f | |||
| 0165410712 | |||
| aa98871c77 | |||
| 1499e1d5f4 | |||
| 683241de5a | |||
| 6c3f7d7fd6 | |||
| 44948f5b69 | |||
| e1506cb4eb | |||
| 909d647aab | |||
| da4f146f83 | |||
| 3edbc2c4a9 | |||
| d6fa6f3e92 | |||
| 846f694908 | |||
| 9734c81f3a | |||
| 6eeca586d4 | |||
| b2fd033cd5 | |||
| 7641c3c782 | |||
| 4567905790 | |||
| 86941f55d5 | |||
| 6b56ac24df | |||
| 632ed550c7 | |||
| 3b5417687d | |||
| fd06fd1442 | |||
| f23814e0cd | |||
| 7471357081 | |||
| a256fccfe1 | |||
| 16e4833492 | |||
| 6d7d465a04 | |||
| 1b16bf4ec7 | |||
| 045176bf35 | |||
| a500d73ac0 | |||
| bd70595c9d | |||
| 12a6278135 | |||
| a3711708f7 | |||
| 8f84fef2eb | |||
| 0714b2ba4c | |||
| d4ad29be2a | |||
| 043c954e9f | |||
| d3c236f91c | |||
| 5dd21f2a75 | |||
| d65707a5b4 | |||
| 9c9ed0f3f6 | |||
| 7a61c13834 | |||
| 27944fac9c | |||
| caaa1b8f13 | |||
| 47cab73499 | |||
| af4dad0fa2 | |||
| c40e14b4be | |||
| aa23d432cd | |||
| 852fa7d04a | |||
| 081c6330b1 | |||
| a147ef3837 | |||
| e1abc44814 | |||
| c4951f11b7 | |||
| 08a2e796e8 | |||
| 07613d2020 | |||
| 4a7acedd3c | |||
| 1795bfe4a1 | |||
| 326ecb7814 | |||
| 2d1f2e706c | |||
| bf5343d233 | |||
| 89c5ce4dcd | |||
| 788c315165 | |||
| 19e57fd902 | |||
| 2f5fb5e09d | |||
| 8c9b8431ee | |||
| 845659340e | |||
| a90629aa13 | |||
| f19fdbba22 | |||
| ad664f54ff | |||
| fe7cb869a8 | |||
| f272378d52 | |||
| e335b2ca90 | |||
| 13709bdbf8 | |||
| 62455ed872 | |||
| 05d377bdd2 | |||
| 1f4ec305f0 | |||
| 8a52daa2d4 | |||
| 72978b9789 | |||
| bcf2aed1a9 | |||
| 75618aaf88 | |||
| 59254c9beb | |||
| 2d9bf021a1 | |||
| 27b175b9a2 | |||
| bf773e0467 | |||
| fb98f4b10d | |||
| 7bb22f58b8 | |||
| 360194bfb5 | |||
| c120fcc06a | |||
| 96c807feb8 | |||
| b731d7830e | |||
| aef9746874 | |||
| 568583adf7 | |||
| 561e60732f | |||
| ad6d5acb42 | |||
| 6b4d18c7b3 | |||
| c6cd55d38e | |||
| 2562303a45 | |||
| b0e48bfdfe | |||
| f093e7ad6b | |||
| 813a2f683d | |||
| 9fc567db7b | |||
| c759ae5509 | |||
| d81275974a | |||
| 67d0c6eb94 | |||
| add254feea | |||
| 547147084d | |||
| 1e4434d652 | |||
| bc429a0e54 | |||
| bf32184d48 | |||
| 9dfcca0353 | |||
| 88b4cc5fe9 | |||
| 2a004db6c7 | |||
| f7bd305904 | |||
| 69ba4d0971 | |||
| 1476b6d487 | |||
| eb6d21cc0e | |||
| 96619805cb | |||
| 1a982aef18 | |||
| 2c359dd609 | |||
| 39c7e7a6b7 | |||
| 609e31dd3e | |||
| ecd937164f | |||
| 14435163a0 | |||
| fd90b67afe | |||
| 173c230e66 | |||
| b052424c0d | |||
| 4c4ea03d7a | |||
| 9e0809911c | |||
| cc7499dd03 | |||
| d45242c616 | |||
| 73f34b31f5 | |||
| 8ceac55c29 | |||
| b547201561 | |||
| 31bd8cb6d0 | |||
| 2fa4a8b991 | |||
| 3f305eb1e9 | |||
| 5de555cae2 | |||
| f7f52b1592 | |||
| 387935345c | |||
| 5ea25b7801 | |||
| c1b2aea80c | |||
| a06b407fce | |||
| c57932c663 | |||
| 144276aa1a | |||
| 2be4d86740 | |||
| c0b64e9daa | |||
| 502278d5b2 | |||
| ac75bd1b1e | |||
| 53603043c7 | |||
| 3f63c44d12 | |||
| 659bd66529 | |||
| c9d9eddaa4 | |||
| bfb59c172b | |||
| 39f775cc05 | |||
| c4a6bc4977 | |||
| 7c4ce7eb03 | |||
| ae974a2bbf | |||
| 0420a03240 | |||
| a8b12e4f27 | |||
| d2c9fe850b | |||
| 56a46886ad | |||
| 3bdda17adc | |||
| bf5d6f431e | |||
| 1fbe229b3c | |||
| 04cbe68797 | |||
| 56ecebf22d | |||
| abed6fca87 | |||
| d12a6ef9c2 | |||
| ce958c191c | |||
| f969e393a9 | |||
| 3166570f7c | |||
| e11013d19c | |||
| 69d4634635 | |||
| 0ca460eada | |||
| b0b968efd5 | |||
| 3621d42e0f | |||
| 1b28a99d14 | |||
| c0d74ed43b | |||
| 7cce4768ae | |||
| 7d633ec400 | |||
| 81d0ffbc3b | |||
| 66220e3e61 | |||
| 6c3ef35064 | |||
| 8a1a2ac558 | |||
| 43692df590 | |||
| b121c7871f | |||
| 545c815c4c | |||
| 34497fdb37 | |||
| 4ff19ced3a | |||
| 58c73c1789 | |||
| 525c3d40a9 | |||
| 8c13e4fef0 | |||
| 110c64209c | |||
| a35f6aee6a | |||
| c31300e69f | |||
| 2afc3bfd8b | |||
| ee8553e156 | |||
| dcd9865385 | |||
| 7c99cb93c5 | |||
| fb828ed21d | |||
| ad8a5e5daa | |||
| b811851b8d | |||
| a76e46044d | |||
| 107a7bd06b | |||
| 595ade9f41 | |||
| 3d4a0ccbc6 | |||
| 7828b5ccb0 | |||
| d8dbd61107 | |||
| 60d4777190 | |||
| 4d5383fd36 | |||
| c9e6c8c02f | |||
| 8d96348704 | |||
| 73bc011483 | |||
| e8da987570 | |||
| d879d360eb | |||
| 6a140adb78 | |||
| 2d1de285b3 | |||
| 4aa0959d60 | |||
| 5f99a7fd23 | |||
| 6244c173ba | |||
| b8893d0277 | |||
| f7ea2b5d7f | |||
| b509716b33 | |||
| adf4384501 | |||
| bb175dfc53 | |||
| 5b13f4375d | |||
| de658ab4e4 | |||
| 6962a2dd7e | |||
| 3ce55d22e4 | |||
| 67cc35ade9 | |||
| 37623bf49a | |||
| cd223d93da | |||
| fa1ceca232 | |||
| ee0d7552e2 | |||
| 7afe94e7e2 | |||
| 0d11a25e6d | |||
| af8600678d | |||
| be9e5185b4 | |||
| 6852c88fc7 | |||
| 3804161eb6 | |||
| 885de7f8cf | |||
| 5b31c7d08a | |||
| 52c5f7adc8 | |||
| 37ede4d5f5 | |||
| 470317f5c7 | |||
| 0a31be6ba2 | |||
| 72dc6d60ab | |||
| b8761bb215 | |||
| 1a60d6bcd6 | |||
| e978774ec6 | |||
| 6582d5872d | |||
| 65ecb4b434 | |||
| 426f9772b8 | |||
| 9927ca6274 | |||
| 9959a1dd9d | |||
| 0c8a9d2d51 | |||
| a331653dad | |||
| 27d72bd517 | |||
| 79d9d2432f | |||
| 2e878906e4 | |||
| 070c1c82b0 | |||
| b81c7c0892 | |||
| 328eac61cd | |||
| 6059354da6 | |||
| 67e2804ecb | |||
| 54ebbde1e1 | |||
| 88e22e4e8c | |||
| 0fb9066aaf | |||
| 7022759b7e | |||
| 2a1c7b57ff | |||
| 1dfc35677e | |||
| 7ee54d8356 | |||
| 9f9ce6130d | |||
| 1d6c713b18 | |||
| 4f10759024 | |||
| 5432ec8ded | |||
| 81748c62c7 | |||
| 9ccdbb5d61 | |||
| 840955ff7c | |||
| 03f3736511 | |||
| 2a9ca74164 | |||
| 48e9d6862a | |||
| 3f24e6c21c | |||
| 5314dffc85 | |||
| a4d0a3fd50 | |||
| aaabde58cb | |||
| cb4a6614fa | |||
| 9cae1d5ed6 | |||
| 62aa1b56d6 | |||
| 1aac8114ae | |||
| 1fbee8dadf | |||
| 741fecedaa | |||
| d83ded2dba | |||
| 220bcb0535 | |||
| 9c19a898f9 | |||
| 7a367cca30 | |||
| 4c3f3b4d46 | |||
| ec4e379125 | |||
| 5237c2b847 | |||
| b4ee10dfde | |||
| bfc48afa14 | |||
| a4b1c0977a | |||
| 55671efe80 | |||
| 943a2f2b60 | |||
| fd9a55254f | |||
| 969209ce07 | |||
| 89626e8d69 | |||
| ac6797b28c | |||
| cfa30de3b8 | |||
| c881b32215 | |||
| cb43623acd | |||
| 8372a8c127 | |||
| 26eb2feedd | |||
| 001390a684 | |||
| fa4126087b | |||
| 9a15c48d2d | |||
| 2cd9b2d8ee | |||
| 10d1650843 | |||
| 81e6a22192 | |||
| d24f6aabbb | |||
| 5caa1e0eb0 | |||
| a6c612a4ad | |||
| 9fa79000ec | |||
| 169afbe9aa | |||
| 316befbb0c | |||
| f61208bde9 | |||
| 1951b95cb2 | |||
| a28a644680 | |||
| 14687aad81 | |||
| cab9eed62e | |||
| 06e43a8f2c | |||
| 4fb341d741 | |||
| b2df3510b7 | |||
| 8536e697b6 | |||
| 6d910c9fd4 | |||
| 766b2250e1 | |||
| a843f44c51 | |||
| e807e4d9e9 | |||
| 9ec1a56923 | |||
| f0817018b1 | |||
| 92ff72b52c | |||
| e4073623a6 | |||
| 11b0ed46c5 | |||
| d9ec9c6937 | |||
| 0722925986 | |||
| 89dd05cc6f | |||
| 8b8f4c5cbc | |||
| 55ae53d971 | |||
| ecedb9cef3 | |||
| 10467f1c5b | |||
| 61243e0f57 | |||
| b02c0455d1 | |||
| e4c65831e3 | |||
| dab6391f2d | |||
| 9a47149559 | |||
| 83a618f807 | |||
| 3ad8a273b5 | |||
| b2f5ba21b8 | |||
| 461afc2200 | |||
| 45707d5631 | |||
| 4d3d0039e5 | |||
| c61180dcd7 | |||
| b7071653fa | |||
| 3b97f7db53 | |||
| cb7593bd19 | |||
| 97230f6a35 | |||
| 667f669fdc | |||
| 60623a7ce0 | |||
| aac6018a35 | |||
| de4950b200 | |||
| c29d092905 | |||
| 92d313ebe6 | |||
| b75a469852 | |||
| 0ad4ece725 | |||
| c86afc85ee | |||
| df59fdce06 | |||
| b68a19be0f | |||
| 2068f2f5a3 | |||
| d2c77e06c7 | |||
| b44af714d3 | |||
| 8fa62166c4 | |||
| 35625e5aa8 | |||
| 2dedb34a91 | |||
| aa08419ca8 | |||
| 29ed758ae0 | |||
| 24a149cfa2 | |||
| 2567fac4a7 | |||
| aad6873175 | |||
| a3262d812b | |||
| bdd6894713 | |||
| 27a63a76af | |||
| 4dfb7e8b2e | |||
| 7f39e2e5e5 | |||
| e43d1ae0c6 | |||
| 4ebe4c108d | |||
| b9739b4709 | |||
| 3aed672836 | |||
| 61796bdb4b | |||
| e4818895c1 | |||
| efa5832b0a | |||
| d15b1a93fc | |||
| d0aa10fdd6 | |||
| b756b005ec | |||
| 10e3148f0a | |||
| 8343dcb893 | |||
| 260082321c | |||
| 41ed6eb327 | |||
| aa2c97263d | |||
| 8bd1604cb7 | |||
| a8cd24b346 | |||
| 8d13558ae6 | |||
| 0b7860ecdd | |||
| 8f1912c58d | |||
| 1ca2bd7912 | |||
| 1d1748b63e | |||
| 72652e9dbb | |||
| 644b41a94d | |||
| 0c85c384fa | |||
| d15549aee0 | |||
| 0bfa7cbb29 | |||
| 7fad73685e | |||
| 9883bec50d | |||
| aedf57db70 | |||
| f9cbf065ad | |||
| 4837725f37 | |||
| 1f11e3bb61 | |||
| adecc8fc9e | |||
| 895247b76b | |||
| 09fb8845a7 | |||
| 34d23b0b01 | |||
| 0231102863 | |||
| 6427091ffe | |||
| 737af2ea04 | |||
| d217641314 | |||
| a3ce3b1c71 | |||
| 14dfe93965 | |||
| 0fe3340ed9 | |||
| 07696eb347 | |||
| 014bb5cf7e | |||
| 9bceeca83c | |||
| 2e187bcbca | |||
| 66780313c2 | |||
| 372d5b3088 | |||
| 299aefebf2 | |||
| a7868e0131 | |||
| 44811e8a2a | |||
| 8e2b396a7f | |||
| da61daa2e6 | |||
| c4c5e9dbbb | |||
| ee197521c5 | |||
| c56b4bcbf3 | |||
| 14480f699d | |||
| 761f5a52dc | |||
| 6a4da4657b | |||
| 4cbe86fcb8 | |||
| 7e8ad2036a | |||
| f1b4ca52ff | |||
| 125980cb76 | |||
| cf47347312 | |||
| 73619269ae | |||
| 81ba67b2b6 | |||
| 64b72210ad | |||
| cedc15019e | |||
| 6b4b4eb29c | |||
| bdd5094d8f | |||
| a16ee2c83b | |||
| 4dce547640 | |||
| 3a53ab7913 | |||
| c482439232 | |||
| a3d1fb9cf3 | |||
| 0bb6f816e3 | |||
| f6a5e8f785 | |||
| c4602255c7 | |||
| 62e45f57b4 | |||
| 6d69d5eac3 | |||
| 9fec27be49 | |||
| 7d2b7ad520 | |||
| f98b9e05d8 | |||
| 6efe591e66 | |||
| e9c920ba67 | |||
| 98352a103b | |||
| 3557096d44 | |||
| b92d7e761c | |||
| f84c166013 | |||
| fa7f51b813 | |||
| 1290b28f59 | |||
| 0437e75291 | |||
| 9a86716446 | |||
| 31135bff29 | |||
| 003f354917 | |||
| b8b4fd4c7d | |||
| bc68ae8060 | |||
| 3909c7d3ed | |||
| bafd7389e4 | |||
| d22a844b46 | |||
| d2758fa13e | |||
| 1e31bfb055 | |||
| dcfa920aff | |||
| e60430be53 | |||
| b0d49913d5 | |||
| 22c9bf6d8b | |||
| caea9c00e3 | |||
| 7bc569dda9 | |||
| a9aa76bad5 | |||
| 7faa50d1db | |||
| 41549b3888 | |||
| 6778ad0f07 | |||
| dff2114795 | |||
| 08f87e3d03 | |||
| c18ccff446 | |||
| d26c3387df | |||
| 66929686c4 | |||
| e69b20d616 | |||
| 4a5dfb847b | |||
| 42fea976df | |||
| cf1b0f868b | |||
| f92e9f599b | |||
| f34ba729ff | |||
| a119a98081 | |||
| a6ef2e0055 | |||
| 67e7416119 | |||
| 3cb55cb51f | |||
| 896761e5c7 | |||
| 05436ab7ff | |||
| d8637214a4 | |||
| e2da806861 | |||
| 745c249a61 | |||
| 1c64dc76c1 | |||
| 3a8d93ab36 | |||
| 73da543e77 | |||
| 3801794908 | |||
| 4f4bfbc79e | |||
| e96d88ff3d | |||
| 87e4ded54a | |||
| a10aa7a96b | |||
| 3463c34e33 | |||
| a9f8c8f5f1 | |||
| 3aaad2178c | |||
| ecb2eb4554 | |||
| bc18a91f91 | |||
| a99e5ccba4 | |||
| 94d6177982 | |||
| 46d1324e47 | |||
| ca9af16aa7 | |||
| 9322b2e861 | |||
| e730de6fd8 | |||
| 8cc2bbe33c | |||
| 499189694a | |||
| be33b189a5 | |||
| eb0849f370 | |||
| c2102c60ea | |||
| 555de859cc | |||
| 489fde7680 | |||
| 765bca14d1 | |||
| 2c22a68ce2 | |||
| 04b120e481 | |||
| f03d3439cd | |||
| b4f62abbf1 | |||
| e15147c141 | |||
| 4e8f63fdaa | |||
| aa7c4102aa | |||
| 339cc9d992 | |||
| 69d947eb80 | |||
| 39e49ad7c9 | |||
| ad70b32414 | |||
| 5f0c720163 | |||
| 727d4fdc6e | |||
| 7523642c01 | |||
| 3b22f80f07 | |||
| 48dc345f2d | |||
| 6278bb191a | |||
| e80f10064e | |||
| c4985e9419 | |||
| 1b745219c7 | |||
| d0eab955c2 | |||
| a7acdde406 | |||
| 7420fec81b | |||
| fb4ec82358 | |||
| 39e6ded8ae | |||
| 2b29698352 | |||
| e52d74e536 | |||
| 20921cc284 | |||
| e3672d9695 | |||
| 23a090ab92 | |||
| a964a6dad6 | |||
| 554d82a200 | |||
| 839c6de58b | |||
| 1709e1dc88 | |||
| 5fb1e29c7e | |||
| 89408fd3a0 | |||
| a888b22cf9 | |||
| 071be08079 | |||
| 3548e9aae8 | |||
| d82071710e | |||
| f61341173b | |||
| 84ef468ba8 | |||
| 2c7be88d15 | |||
| 788bedd904 | |||
| 0fc5b2fbc9 | |||
| e428a69e6f | |||
| 437ac354fc | |||
| 25415eb104 | |||
| 61674cc17d | |||
| 458a673cb7 | |||
| 6d004d3f8a | |||
| 103ee5d4c2 | |||
| 45062390a6 | |||
| 763e33c373 | |||
| a776fad370 | |||
| 0466ff28f2 | |||
| ead04dcbe8 | |||
| c790f6d25e | |||
| ed493909f7 | |||
| 8dfbfe3145 | |||
| 5d99a309e6 | |||
| e59dd65380 | |||
| 9a969b86a9 | |||
| b751b46bc5 | |||
| e676a699e8 | |||
| 4fbbbbd336 | |||
| 99ed5b4bee | |||
| 1fe181e36f | |||
| 735329b824 | |||
| 46d4a5e047 | |||
| dd9b3fb594 | |||
| 2be79b1d5e | |||
| 19d1bf2562 | |||
| 0cd119e7b8 | |||
| 4dac0a1105 | |||
| 52e51d278e | |||
| 4d713eabf5 | |||
| c7095a4b4c | |||
| 443698d2b2 | |||
| 406c05f2e7 | |||
| c8070bf632 | |||
| 65316d7940 | |||
| d6511cf6de | |||
| 9e58678a98 | |||
| 231dde6dc4 | |||
| 5b6c39f51f | |||
| d052118dae | |||
| 37abbb387e | |||
| 17bfd657b7 | |||
| 890915054f | |||
| e0a2770f67 | |||
| fe54138020 | |||
| 6954d44e53 | |||
| 1c947488f6 | |||
| c8ef64bdd7 | |||
| 8af87ea251 | |||
| 4275be68fb | |||
| 261c3a8fd0 | |||
| 12b6851d54 | |||
| d6bd288da2 | |||
| 46971d5ed7 | |||
| 88053456f8 | |||
| 7386d78e6d | |||
| 55d0a68596 | |||
| bd4edfeedd | |||
| c7cbbfa43b | |||
| d6eceb568f | |||
| fbba4423e9 | |||
| 6c996bfc8f | |||
| 37e72aa542 | |||
| 83467de3ed | |||
| ffafc252dd | |||
| 4015331b73 | |||
| bc79ee38bb | |||
| 2ad1ca3f6c | |||
| 950c8b3916 | |||
| 06522492f9 | |||
| 2a37fb80eb | |||
| c193699d34 | |||
| 0dbcac6598 | |||
| 34ac4c1fe7 | |||
| b0119de82f | |||
| 83dfc25c02 | |||
| ea5775bf8e | |||
| ad17ffa034 | |||
| 7924fec593 | |||
| 8f06d6b103 | |||
| 0388d10a1f | |||
| ca34b4d777 | |||
| 630cf4e22d | |||
| cb48d5d71c | |||
| 33a7dc93d8 | |||
| 13a223253c | |||
| e03a902735 | |||
| 8b5ab9fc90 | |||
| 043d702f02 | |||
| 922f5e6845 | |||
| bd24695a23 | |||
| b496213406 | |||
| 5af1e59d2d | |||
| 970c143497 | |||
| 7f3646c81d | |||
| 53f5386a2e | |||
| 0d575be45a | |||
| 0b05f6c26f | |||
| f99b202f5b | |||
| 698d80a824 | |||
| 9fcbbd92bf | |||
| 0ff5cea597 | |||
| d010b68962 | |||
| 337dce1e24 | |||
| 9604a4618a | |||
| 6a28a6f297 | |||
| 5614e868e1 | |||
| b679ebe877 | |||
| f1bd11bf87 | |||
| ecd25f5262 | |||
| 830ba76c3e | |||
| a485cae819 | |||
| 264ed02079 | |||
| 829b6420d8 | |||
| 6313259ada | |||
| ca05a72db6 | |||
| 7c4bc3f92f | |||
| 9e8517c745 | |||
| 13d98d68fc | |||
| b7e008d3dd | |||
| 6d4eb1985c | |||
| ded70984f3 | |||
| b5259e7e11 | |||
| bd31fa766a | |||
| c2fb8bfee3 | |||
| 0604e9efe0 | |||
| e5fc0aad31 | |||
| 6add3883a6 | |||
| 34cd4f9076 | |||
| 7e58aaa7ae | |||
| 6ded3ebad5 | |||
| f4cbc9370e | |||
| 4cea12bb69 | |||
| e4c7e12300 | |||
| 53611889ff | |||
| ed671f0e88 | |||
| 9e8c4fe304 | |||
| 7e6a06aeae | |||
| 0e459cbdfb | |||
| 36c612b21c | |||
| e4471a7ac7 | |||
| 43b897c17a | |||
| 289d52c49e | |||
| 7125975d3c | |||
| 30bc0a10f3 | |||
| 1b3370b43f | |||
| aff9fb9045 | |||
| 9c5470d292 | |||
| 8c0c10475d | |||
| 506629e619 | |||
| 2e59a005fd | |||
| ccae0a4074 | |||
| 2ddb440cbb | |||
| f998f82598 | |||
| 5257bac05a | |||
| e2d2b7d577 | |||
| 762863d728 | |||
| be2d2e06e2 | |||
| 63efdb85c1 | |||
| bae8899a46 | |||
| 3130848a10 | |||
| 52037657dc | |||
| a3d570c7b9 | |||
| bd0af10802 | |||
| 7989276259 | |||
| 3693a02fff | |||
| 54f4ed6ba1 | |||
| 1c9968a2b1 | |||
| c9319f315c | |||
| 34e5d2941c | |||
| 6f61232852 | |||
| 62db1b13f7 | |||
| ca1a1b06d0 | |||
| abb02bd18b | |||
| 73bc9c163c | |||
| 5abce0805b | |||
| a2b2ada85c | |||
| 466f86052f | |||
| af61834687 | |||
| 491b4eab14 | |||
| 4fb8dd5493 | |||
| 4a00119a0a | |||
| f8a5192347 | |||
| dd6b3318f3 | |||
| c3e308c2fe | |||
| 792322f00d | |||
| 746f4373e7 | |||
| d48717054c | |||
| e8a4ea75a3 | |||
| 04a31e99fc | |||
| e8c92c3b17 | |||
| b6ee63d8bb | |||
| c38d4d54c6 | |||
| bff6ac7b63 | |||
| b6dbbdc9fe | |||
| 055c2b25d2 | |||
| 773c8bac35 | |||
| 965c1bfee4 | |||
| 5305c55849 | |||
| bc898df2c7 | |||
| 3527f16a94 | |||
| ea960fb719 | |||
| 8492cd2084 | |||
| 2a23198886 | |||
| 3540f6af23 | |||
| 069252f0e6 | |||
| b43401b915 | |||
| a2232a5cc2 | |||
| 1d9a22b785 | |||
| 76944e8137 | |||
| b9b9c8b020 | |||
| 4fc29fa9f4 | |||
| f9d77feca9 | |||
| 1d7d2fae10 | |||
| 38b402ce13 | |||
| fa4fc0321a | |||
| a904a56c36 | |||
| 821b41f9f7 | |||
| a429e221df | |||
| fb23f4f4f4 | |||
| 0e9349a28d | |||
| 937c1e9e92 | |||
| 5acdb5761d | |||
| d88d459d7b | |||
| 319b83fc28 | |||
| c23ff311fc | |||
| a9567e09ef | |||
| d20d6b1bb0 | |||
| 431d40fa9c | |||
| 60c8b285a6 | |||
| 517ff04bec | |||
| c6796fc5d4 | |||
| d5ae2c8882 | |||
| 567989d0de | |||
| 5a01629128 | |||
| 8f7e086f19 | |||
| 1eeceaa649 | |||
| b2dbfefcf3 | |||
| 9a7c05d995 | |||
| 335de2ba1f | |||
| 1ad44362e3 | |||
| c673689430 | |||
| cfb0dca6ec | |||
| 6f5600c803 | |||
| 4b4a6d9d56 | |||
| 62bcd5d32b | |||
| 8275cc5eb0 | |||
| 5b5393f27a | |||
| 4733f0a781 | |||
| 45b3259bf6 | |||
| 61c7ab56fd | |||
| 145bb1e821 | |||
| 83928c2074 | |||
| 1ee5367c19 | |||
| 8325fcf13d | |||
| 620d4be7ae | |||
| 149322c530 | |||
| 0793e73c02 | |||
| 2c855c1c66 | |||
| 410fb96cbc | |||
| c67700be8a | |||
| 660418cff4 | |||
| 41f14d6ea5 | |||
| f6dacb21d2 | |||
| d7605585cd | |||
| 4815221333 | |||
| d378791480 | |||
| 714bef5b6a | |||
| 6d04effac7 | |||
| 6d41cb87d3 | |||
| 3d41e86534 | |||
| 8a1553e43a | |||
| a5e72f9177 | |||
| d3d54d2fc9 | |||
| 89156f1985 | |||
| 618276de19 | |||
| c08a47b853 | |||
| 25047e7cf8 | |||
| 41ebac421e | |||
| 48e9d7b726 | |||
| 4f956c040c | |||
| 00e8a7a491 | |||
| 94359e16d3 | |||
| df285bdd8d | |||
| bfdac58c36 | |||
| 48f32d8033 | |||
| 8a8826600c | |||
| 9b7fd9c4ae | |||
| 1dea5535b0 | |||
| 0e7a565229 | |||
| 0d4cdc0569 | |||
| df93e1ee24 | |||
| 3796e5802f | |||
| a9a11b5393 | |||
| f1ca068666 | |||
| 7271a92bec | |||
| 1ac47e34f2 | |||
| c9ff52fb8a | |||
| 2ea1eceb75 | |||
| 6ace5a39c3 | |||
| 2f19b24a03 | |||
| d714b2afae | |||
| 78439117bc | |||
| cbb1dd0a9b | |||
| b5bb5d950f | |||
| c8dc7e8ce2 | |||
| acaa863576 | |||
| d9c75acde1 | |||
| c1a9be4c1b | |||
| b76154744c | |||
| 17a9e03cd1 | |||
| 7d3041aff3 | |||
| ba2dff372c | |||
| 7b716fce8e | |||
| c5ee075dd9 | |||
| f22d0fcd8d | |||
| 4780a00b14 | |||
| f79ebbd121 | |||
| d6efc2ffd3 | |||
| 487d57b341 | |||
| a6c7f474eb | |||
| 57d54689da | |||
| 2bbf76ebeb | |||
| 78d4d969e2 | |||
| c5f45efd06 | |||
| b80b3ce4b3 | |||
| 75e69df956 | |||
| c54eb963dd | |||
| cabb75c503 | |||
| 9801d7c595 | |||
| 05589b72c4 | |||
| b172c22997 | |||
| 711c5d62d1 | |||
| b38d045dea | |||
| bfc86e8a74 | |||
| 3091bdd31a | |||
| 6d35116e33 | |||
| bdd50bc7f3 | |||
| 327b2eea26 | |||
| c402724354 | |||
| 1509b8027f | |||
| e10b79947a | |||
| e3b792d6e3 | |||
| c0c0fb8eef | |||
| 6d035f67e0 | |||
| c6f0a7b2db | |||
| 46db2b2968 | |||
| c83c3e9e5c | |||
| e98d8d7997 | |||
| 85432b0bd0 | |||
| 6d6fd6b305 | |||
| 6e2c770581 | |||
| bb371128dc | |||
| 7b9344686a | |||
| 444efaa4a7 | |||
| 164fbbd6e6 | |||
| 83c2762b35 | |||
| 8348610c5e | |||
| f009e2aae2 | |||
| aadb84a547 | |||
| c16d74a12a | |||
| eeff3cdcbc | |||
| 164f786626 | |||
| e4e4a45927 | |||
| 0fd0cb6037 | |||
| d0a8e88b95 | |||
| d510d4bf92 | |||
| fd52c6ff67 | |||
| 72523d7bc2 | |||
| c13f07fc88 | |||
| 6ac274673c | |||
| 0c4a048485 | |||
| 7e0d3e62e9 | |||
| 427f7a8b09 | |||
| 2e53a9912e | |||
| dd48e929c7 | |||
| 4789154063 | |||
| 1564711a27 | |||
| 0107578c5e | |||
| 0ae26314b3 | |||
| f6803c960f | |||
| 3d038d101f | |||
| 02fc93d624 | |||
| 218334d1b2 | |||
| 6c504d6a7c | |||
| 6d670a1fc1 | |||
| 3ca608b5d6 | |||
| f9dbe46b44 | |||
| 9f4c047935 | |||
| e2a43cdb87 | |||
| 8206b421d6 | |||
| a588bf5514 | |||
| 72c40b0622 | |||
| 243e80260a | |||
| 396473f1bf | |||
| dd062d4209 | |||
| 4461568ab4 | |||
| 773441bba7 | |||
| a166cdbb6e | |||
| 3bc324139e | |||
| 758733cb55 | |||
| 9de0bf3640 | |||
| 321c9a7f51 | |||
| 38a22555de | |||
| ad5723e792 | |||
| 4f84e631ed | |||
| 0958489ca5 | |||
| 7e0ff3aab0 | |||
| da622a20cd | |||
| 49c50366fd | |||
| 0aac8c9447 | |||
| a0208e6635 | |||
| bf347f5af0 | |||
| 4f1e6e7ef2 | |||
| dd57b821e4 | |||
| 3b7c7d888a | |||
| a744ddad59 | |||
| 7076981f50 | |||
| 422311ff32 | |||
| 04e9e1b2a6 | |||
| bf26cd8ecb | |||
| a82bd0784b | |||
| bf3e2132a7 | |||
| 9d3d43436e | |||
| 58686c3dd8 | |||
| 3aa7c4639d | |||
| 914e1c61de | |||
| a8936295ce | |||
| 1cc9f9b3d8 | |||
| 542039fab0 | |||
| 126d3ebeea | |||
| f193e19536 | |||
| e88295804a | |||
| a8d0600762 | |||
| b9ed7914c2 | |||
| c37031ebf3 | |||
| 9567aad381 | |||
| 18626bd225 | |||
| 584ff19452 | |||
| 821dcf0ff7 | |||
| df01e14bd7 | |||
| e0b4fcc280 | |||
| fe7bb57a8b | |||
| f4af06d812 | |||
| 34b1a03402 | |||
| 53738f83a5 | |||
| 54a4f8d44d | |||
| d9d3478a89 | |||
| b419ebc7e9 | |||
| 10ccfc92f3 | |||
| b8f2610280 | |||
| 41ce15a586 | |||
| 81cb09f9fe | |||
| d2ac46f2b0 | |||
| 3348a97bd3 | |||
| afac1439aa | |||
| 8f762e34f3 | |||
| ff7ecc1d5b | |||
| 39c9354c5c | |||
| 406f3ee9e8 | |||
| da1963381b | |||
| 2875ed81bd | |||
| d81b038cc2 | |||
| 5fb17bcc1e | |||
| 8f789f1b2f | |||
| 6c02ba0540 | |||
| 7e0da18527 | |||
| e2d7a26ec0 | |||
| 9472d3e2f3 | |||
| 11a2e2972a | |||
| c2bbf99e48 | |||
| 585c7a4185 | |||
| 5f134f0197 | |||
| 177c74b1fa | |||
| bb16f4a25d | |||
| 6334cd16df | |||
| b1e5880740 | |||
| ce9439358c | |||
| ace1b6bf98 | |||
| 4240b3fd63 | |||
| b73d495754 | |||
| 1b4bb7d4ab | |||
| 6bc99a7775 | |||
| 60ed1d2a7a | |||
| f2172946e5 | |||
| 5cd1d3c53c | |||
| 7c3ccd6f14 | |||
| 6fd4c30285 | |||
| 2723efaae1 | |||
| 2e7a373646 | |||
| 763dacda97 | |||
| 518c2144e5 | |||
| e82c913680 | |||
| 415b92101f | |||
| 4ee755d641 | |||
| 8fdb2cffa5 | |||
| ef7fec1168 | |||
| 413c5dbf07 | |||
| 43c7f972aa | |||
| 3c487a4229 | |||
| 52efa8863e | |||
| 9b4b4af716 | |||
| efb8492b9d | |||
| b3728d7d72 | |||
| 5ba372306a | |||
| d1710d35ea | |||
| c11e64efbd | |||
| f61ac900b7 | |||
| e94c12451b | |||
| 7846f71fb3 | |||
| 2194f1c983 | |||
| 57f15f779f | |||
| 34afcb5b26 | |||
| 3fb53d1181 | |||
| 783158511a | |||
| ed3c9c3824 | |||
| b8fb68be37 | |||
| 6335c2a0cc | |||
| 8c30002862 | |||
| 063679580d | |||
| 6d72e14178 | |||
| adc1d93f97 | |||
| deefaf1891 | |||
| 07f8a8b34a | |||
| c74c20f701 | |||
| 969fa847c1 | |||
| 0dee7feb74 | |||
| 66f9bb5b95 | |||
| a7600746fb | |||
| ffc839fb20 | |||
| 3f3345aa85 | |||
| ccb516144e | |||
| c810c6cc23 | |||
| 1b554381d1 | |||
| cf11bb2249 | |||
| eba65e1c6d | |||
| 9ec9991c5d | |||
| 7711e6858c | |||
| 42e559a324 | |||
| 6f17fb2851 | |||
| 55e1221686 | |||
| c05cf3f3e1 | |||
| a8f10951d0 | |||
| 654c5714bf | |||
| 4779e0bcb2 | |||
| 996933bbcd | |||
| 387e06421f | |||
| c5ecc66658 | |||
| e8a84817d4 | |||
| 9351cb0ab0 | |||
| cb29913fb1 | |||
| 547bd71a4a | |||
| 225fb3e93c | |||
| 73d021c5c1 | |||
| 8c6f5a546b | |||
| 5ee15074af | |||
| 31ac8125b8 | |||
| d9383fe158 | |||
| 0b4f277845 | |||
| 3de646a51d | |||
| c1e6cc1969 | |||
| 01fd287bcd | |||
| 6fae611381 | |||
| 388502750e | |||
| 27efc8bd0d | |||
| d3bb1e4367 | |||
| 9d39ca744e | |||
| 2eb8ab2057 | |||
| fa6177aafe | |||
| 7e73b8b61a | |||
| f92e0898d3 | |||
| 403a5163c9 | |||
| 7b4f67acea | |||
| 92b56c0412 | |||
| cb3e65e922 | |||
| 3ff5480d7b | |||
| cff27e9f40 | |||
| dfccabe1e7 | |||
| 16b8942966 | |||
| edbbb3aa12 | |||
| 07601749e8 | |||
| 5553b0cd16 | |||
| 276bffd907 | |||
| de40fae555 | |||
| 6385fe3ede | |||
| 774354e3ef | |||
| a1b49bcdea | |||
| 381fa1fc46 | |||
| d78c0a6800 | |||
| c422fd1240 | |||
| d1304583d6 | |||
| d678a6e88c | |||
| 747fad6654 | |||
| 69582431a0 | |||
| d4f6e9b5bb | |||
| 5e239b00d6 | |||
| 1d86fca433 | |||
| 915b86d29b | |||
| fc2076033b | |||
| 1296085130 | |||
| 5215d88be2 | |||
| a665a52cb3 | |||
| 47010f352c | |||
| a626719f0c | |||
| f7896554e9 | |||
| db9bcc9bd4 | |||
| c207f75890 | |||
| 08397146eb | |||
| 0fac29a8c6 | |||
| b897973f2e | |||
| 1e3e8d147a | |||
| fb2eca4cfd | |||
| a211db1b8f | |||
| 24cef5fdfd | |||
| 93118c7efe | |||
| 95675d4d76 | |||
| d1b5773ec1 | |||
| 0caf27a2b0 | |||
| 8d18d826a4 | |||
| bf79e90f3a | |||
| b6cd099df4 | |||
| fa97486070 | |||
| 0d2c36fda9 | |||
| 0240fe9d58 | |||
| 97e1fc3734 | |||
| e59eb52fad | |||
| 99ded85f45 | |||
| f3c3550771 | |||
| fbb5d771a0 | |||
| 9c593643ff | |||
| 2de7d9d224 | |||
| 93db3c61c0 | |||
| 3f6d44e9c9 | |||
| 47605e1dfa | |||
| 313f1a7c0d | |||
| 1ec7cccbd3 | |||
| e09fab39a8 | |||
| 2dc11b36a1 | |||
| 0aa6eedddd | |||
| a24b1d9eda | |||
| 21ea9cb7af | |||
| 0de4f35ebc | |||
| 94e3ba0e87 | |||
| 88dd6f6cc2 | |||
| a9e30eec59 | |||
| a75a612ad5 | |||
| a48f26c718 | |||
| 5ba9e91e52 | |||
| 7db4c905d7 | |||
| 841dd882a4 | |||
| db162cb2b8 | |||
| 74fb2b9704 | |||
| 4e51a21ccb | |||
| 5d14e4fcce | |||
| d7f62fefed | |||
| 357bf10553 | |||
| c0626a02a9 | |||
| b0a3d6809a | |||
| cb96ae2583 | |||
| 406d896363 | |||
| 6bcf25017b | |||
| 0d0c96722c | |||
| 787e44a1d0 | |||
| d789ef5a88 | |||
| d7d21c85e0 | |||
| a73a88a19f | |||
| 8354895e68 | |||
| 0bd57cdbe1 | |||
| eeb224b812 | |||
| 4a9ebf7da7 | |||
| f855e91f11 | |||
| d007428ddb | |||
| 84494d2e0a | |||
| aa2bb9c88c | |||
| 5e124764c1 | |||
| 895d0fdf5b | |||
| e8a0db81ef | |||
| 46f52f32b2 | |||
| 489da1c4b1 | |||
| 4b23495509 | |||
| b0bcffda3b | |||
| 364f53a67a | |||
| 18da6991e1 | |||
| a9d4944f8e | |||
| 2168e27738 | |||
| 2b483bfaf5 | |||
| ec8b5b605e | |||
| 5c9454aa6e | |||
| e083fc786c | |||
| f60dc0bc09 | |||
| 1d8d4f86b6 | |||
| c132e0f712 | |||
| 9dc31e159a | |||
| 7646d59568 | |||
| e193b5ddea | |||
| 6d372bd468 | |||
| 7852a63443 | |||
| 42aec3d000 | |||
| 3e1aeff4c5 | |||
| 6a48a6a9e7 | |||
| b0d340be77 | |||
| 508c4226e1 | |||
| ab5be538f3 | |||
| dd674689df | |||
| 8e5c89ba64 | |||
| ecb117a4a8 | |||
| e866e302f8 | |||
| 922fbeb8b7 | |||
| 3af422a82e | |||
| 8049357ded | |||
| 1290f50284 | |||
| f011f263a1 | |||
| 40a82f3066 | |||
| a770c2ab1c | |||
| c1ee35af3b | |||
| 0dc23afb0c | |||
| 65c2738ea1 | |||
| 25f860dc2f | |||
| 763a59d84d | |||
| 0f1b6dd06a | |||
| 3a7b528d4b | |||
| 2c37f47985 | |||
| 6049594045 | |||
| ac8dd26bdf | |||
| 1ac88c28c3 | |||
| abb9a583a0 | |||
| b87f3000aa | |||
| 0857814dce | |||
| 7b8f7ac497 | |||
| 1a741570e4 | |||
| 13555de861 | |||
| f7fe78dc82 | |||
| 1d73398e8f | |||
| e830d52573 | |||
| 773d59e86d | |||
| 94311de539 | |||
| 098ba1a433 | |||
| 7967662a52 | |||
| 25534052bc | |||
| 82892f131b | |||
| 5e1bd04692 | |||
| eb046f9d59 | |||
| b8111adf35 | |||
| 6d132b546d | |||
| 712251009b | |||
| 6ca76333f3 | |||
| d9691ab277 | |||
| 021bd31706 | |||
| 979edb4a64 | |||
| 7b21582e2d | |||
| 31b17e6d44 | |||
| da6316f20e | |||
| 0feb4c9552 | |||
| 70f446631f | |||
| ff2ea6de4e | |||
| 2afd1db4a2 | |||
| 924e953f47 | |||
| db3f10c807 | |||
| b04e40d6a3 | |||
| 3bc5510a63 | |||
| 07efaf941f | |||
| a9420c223e | |||
| d50cce8815 | |||
| 159cb2b97c | |||
| 303277a8dc | |||
| e70d98a578 | |||
| eb6c33cd97 | |||
| ffdc37c2aa | |||
| 130426c659 | |||
| 0c37f59802 | |||
| e9c7af6864 | |||
| 624ab0be4c | |||
| 12af012644 | |||
| c3626941c7 | |||
| b1f791adb0 | |||
| 1968468ca4 | |||
| 7573ce3591 | |||
| 724d0df7e5 | |||
| fe394e0baa | |||
| 1e43bebf69 | |||
| 4ffb0358de | |||
| 642b26fab2 | |||
| 7301131e42 | |||
| 13a0a5fa23 | |||
| 45008e03ec | |||
| 212472b813 | |||
| 8383c6640a | |||
| e6f1123819 | |||
| 49956f0469 | |||
| d62a9f2390 | |||
| 0ae7c51f50 | |||
| 384c5cff37 | |||
| 225ba3f0af | |||
| 3ad50bec71 | |||
| 35dccb93d1 | |||
| 9c38a1d0eb | |||
| 3725f7af65 | |||
| ca5600d29d | |||
| 2ef22ecee3 | |||
| bc4dacb286 | |||
| c6b067d0c3 | |||
| ea23f5ae45 | |||
| 9092c3d491 | |||
| 95a7adf3e6 | |||
| b11f2be30e | |||
| f41ba90c18 | |||
| 94353ef660 | |||
| 484559148d | |||
| 2d206f1d7a | |||
| 8df91acf70 | |||
| 3ff503b923 | |||
| 45b4d4a8ef | |||
| 49e6b7221c | |||
| 3e4ffa4ec0 | |||
| ba5411995b | |||
| fa8ddb744d | |||
| 3b83d22e79 | |||
| 5bf824ea10 | |||
| dc42a9d2de | |||
| 3ceae485b2 | |||
| c863713742 | |||
| 9ae41a71ac | |||
| a2c0fa5f5b | |||
| ed8a6d6a10 | |||
| c1bc644bad | |||
| b5af30a9f3 | |||
| c75dcc25d2 | |||
| 5b470f32c3 | |||
| d2090e649b | |||
| 3ce465f819 | |||
| 407df0f164 | |||
| 09f1c2041d | |||
| 801a8f2e7b | |||
| 2579443e21 | |||
| 7c61b48202 | |||
| 67b17df9d2 | |||
| d4a6fe9f99 | |||
| 62ee5d5711 | |||
| 3a50451e84 | |||
| a528e97383 | |||
| 17fc060be7 | |||
| 7b72ef296f | |||
| dfc4b8a7d0 | |||
| c2b690f1bd | |||
| c7d7aa1cd1 | |||
| be03daaab2 | |||
| 497f252015 | |||
| 038b434f14 | |||
| 924de9c3d1 | |||
| b7909d3276 | |||
| c5adab5270 | |||
| 76a7098407 | |||
| 7f8639261a | |||
| 5bb81e1d87 | |||
| f1eed04b2d | |||
| b53c4e51f8 | |||
| 3163224bb5 | |||
| 56a3cb8086 | |||
| 513bd04ce1 | |||
| 425cf2e792 | |||
| ae15bc7245 | |||
| 94c2255d81 | |||
| cedd94662d | |||
| dc1824b780 | |||
| 928a84e10d | |||
| 71c061d559 | |||
| b8fb14a905 | |||
| f4d2430d6c | |||
| 16fd2b6b61 | |||
| f15efcdf27 | |||
| 870dba07b1 | |||
| 979bb2bb67 | |||
| f163895204 | |||
| ccb19376f7 | |||
| 623ec4d2f2 | |||
| 2fe1c38796 | |||
| ea1c08e78d | |||
| a34bcb7829 | |||
| 96c795328d | |||
| cefa185c1f | |||
| d8b363c35f | |||
| ca7047f122 | |||
| 08ecf61b35 | |||
| 7ae13660cf | |||
| 8885191702 | |||
| 62b4c870aa | |||
| a7892ee000 | |||
| 384f26525f | |||
| 3e59e29859 | |||
| adbf991a1d | |||
| dc232cdf1b | |||
| af1c7f96a8 | |||
| 77ed8ded7b | |||
| 8d2d44ad05 | |||
| c3501d4792 | |||
| 028e4a6116 | |||
| f5ade63437 | |||
| d4cbf4c624 | |||
| 2a4c20437d | |||
| 4d6a8a1c0a | |||
| 0075d7e74a | |||
| 869f8d0e7d | |||
| 65c4379c53 | |||
| 4090a0870c | |||
| f9e94c2e13 | |||
| 6a17c6c652 | |||
| 6272a7d0c2 | |||
| cd6eefd3e8 | |||
| ba8459e859 | |||
| 1de5bace80 | |||
| 47a4c0fa0b | |||
| 3e1aaf27fe | |||
| 39947cec85 | |||
| bb8340c18d | |||
| ba52fcbcdf | |||
| 9262d88e28 | |||
| 004ff90483 | |||
| 26e12450bb | |||
| 9699e372c2 | |||
| 46b427a310 | |||
| 92a1e14b0b | |||
| fa4ab3325b | |||
| d7cdc28431 | |||
| b4882504ea | |||
| 63bc5dd3e1 | |||
| 727c5601ec | |||
| 242fe3d401 | |||
| ea47a7d4e4 | |||
| 36c6bfa63d | |||
| 9b1cd481b8 | |||
| e497deb89e | |||
| b1b23f76be | |||
| b59d9c85f1 | |||
| a178a4e7bf | |||
| 6187c6de9b | |||
| bdbce64bab | |||
| 9bcade46df | |||
| 5fc07cd840 | |||
| be8653b183 | |||
| 83d0aa0706 | |||
| c8c473c053 | |||
| 104cc98636 | |||
| caad8777e0 | |||
| 4bea16df64 | |||
| 8b6b21d41c | |||
| a278dbb776 | |||
| 291158945d | |||
| b49b628ab5 | |||
| b7db975135 | |||
| 8ec1fcd925 | |||
| 049ff4e572 | |||
| e266ded2f6 | |||
| ac736602fd | |||
| e39438e869 | |||
| 4a4e272f9d | |||
| 20878720c0 | |||
| f43e709842 | |||
| 816fd02876 | |||
| 859679f72a | |||
| 661c5c4476 | |||
| f48160cfb4 | |||
| 056da31bfe | |||
| cb228a0e24 | |||
| e1d2e325dd | |||
| 26709f561f | |||
| e91aeae437 | |||
| fd71d295d7 | |||
| 3da5504e68 | |||
| db4037e592 | |||
| 3cb808d2a2 | |||
| 55f7de7821 | |||
| e9b3bc773d | |||
| 247df6e448 | |||
| e8ff93b4e6 | |||
| 5a93214143 | |||
| a0f83fd905 | |||
| 3d3c8ac4c4 | |||
| f90cd4c3f4 | |||
| ecaf98fcc5 | |||
| 232d4f157a | |||
| b33f740e1f | |||
| 594af3eb22 | |||
| eecd68364a | |||
| 5419d0b44d | |||
| e04912a9f0 | |||
| 889eab9348 | |||
| e87e3f86bf | |||
| fb66d5ab92 | |||
| ecaa696250 | |||
| e99570fc77 | |||
| 70400346d2 | |||
| aa290a3ece | |||
| b5433aaa6f | |||
| f5f530f33f | |||
| a1d2d2b21c | |||
| 34dff95bfd | |||
| 1217e5d516 | |||
| 6997b1920f | |||
| 218f866f86 | |||
| 5561e9125f | |||
| 17ef6faa7f | |||
| 03003499e7 | |||
| 51dd1d9e38 | |||
| 21416a4746 | |||
| 2367caa327 | |||
| 1be2c8c814 | |||
| 2c72562374 | |||
| 05ae9d8bc4 | |||
| bc48db5758 | |||
| a378188194 | |||
| 9e4c8fcb3a | |||
| cc337da21f | |||
| acff2d11ac | |||
| b17caa80d1 | |||
| aab826d4cc | |||
| 3f9a94bec3 | |||
| 7db9140126 | |||
| 38b2478b41 | |||
| 9cf2573c8a | |||
| 569200b6d4 | |||
| 9d7661e415 | |||
| 63dffbf1d2 | |||
| 97bed42f7a | |||
| c9b7eae903 | |||
| 62094f72f6 | |||
| 45738083a6 | |||
| 53365f4c54 | |||
| 64b3019d69 | |||
| a430f22be4 | |||
| 5912e7c233 | |||
| d3043afe5c | |||
| d56aff5255 | |||
| e05a879022 | |||
| e8d690aeb5 | |||
| 02b98afe29 | |||
| ec6e9b7865 | |||
| 42e5d20ae9 | |||
| df7bf130ae | |||
| f6ba6e9eb7 | |||
| 045d32a8e8 | |||
| 32d4aeb162 | |||
| 2edab512a0 | |||
| f510a6128b | |||
| 6aae9a9efb | |||
| b2083ea907 | |||
| 4c50142381 | |||
| 73ab4e0845 | |||
| 2d2e410818 | |||
| 9b29b2a2a5 | |||
| f8e0674ad5 | |||
| b9daf6d9dd | |||
| a43ddc075a | |||
| 9d04c25ab2 | |||
| cc83cda045 | |||
| fc11528f98 | |||
| cf0ee0f6e4 | |||
| 77a2fc0061 | |||
| 9d11255a47 | |||
| 78f2cd3d2d | |||
| 8796a9ff74 | |||
| 8cd4774468 | |||
| 94e49e3f0e | |||
| 029aef1d24 | |||
| 76122538b6 | |||
| 935490d9e9 | |||
| 7b40fcd11f | |||
| 52601c33ab | |||
| 2fb478f921 | |||
| 6cb0289917 | |||
| 7d0cef38b5 | |||
| d575a83f81 | |||
| 1be1fe69f5 | |||
| 3b0149354b | |||
| ed9788c796 | |||
| a11494fd52 | |||
| cc8e4ff318 | |||
| 81acc14e3a | |||
| b47ffc035c | |||
| 0d0b0113d0 | |||
| 9e188e11c5 | |||
| 49230350fa | |||
| 5a190594f4 | |||
| ac6bb7e131 | |||
| fd6ce1e637 | |||
| 8392c710ae | |||
| 6dfa7af42a | |||
| acbd696b05 | |||
| 0d14fc0cbb | |||
| f3ebd20d35 | |||
| f1f94721ae | |||
| 36f0ce0472 | |||
| 66e4326c84 | |||
| abe8a90952 | |||
| 532759a593 | |||
| 4a2f8fc633 | |||
| a56281c0a8 | |||
| 7ff9eebeba | |||
| efd495d667 | |||
| 21e0a86f25 | |||
| 48ea0a57f8 | |||
| bb020a9f75 | |||
| d5fc8b3036 | |||
| 5390cfcc72 | |||
| ec38eb9388 | |||
| 2ec759fc58 | |||
| 7633453cfa | |||
| d51e7c9ff0 | |||
| 87396257fc | |||
| 4c6bef2a6c | |||
| 261e7581b1 | |||
| 1d1cf57b9b | |||
| 2add6b3026 | |||
| 0e5f5da3db | |||
| 48c48b260d | |||
| 5ab109f862 | |||
| 60a6bbe6c5 | |||
| e332ccdf71 | |||
| 7fa9ceb740 | |||
| 282342c1c5 | |||
| f8f1977826 | |||
| ffdbb903e4 | |||
| ca71b87cb0 | |||
| cfb62c9d5e | |||
| bb5371f668 | |||
| 1b1d647439 | |||
| a8977b62ba | |||
| 4bfdb77aae | |||
| 5682ba5921 | |||
| 4338271f1a | |||
| 025c5df87b | |||
| 78f756e081 | |||
| 4cd62fe306 | |||
| ed5e20baab | |||
| 2b3c49b6ab | |||
| b4f841d92f | |||
| 6d3f1d516e | |||
| c3c80a183e | |||
| 2ac691d60e | |||
| d63034c018 | |||
| 65aa3dbf6c | |||
| 4a898dd491 | |||
| ba75647b55 | |||
| dbfdd329f2 | |||
| df0525a911 | |||
| 55311d6c38 | |||
| de4a8ce61c | |||
| a79cb80048 | |||
| 208a450a53 | |||
| 59a375812d | |||
| ba8c4d7400 | |||
| b4438e5933 | |||
| 1338ed4f25 | |||
| db444b2264 | |||
| 881b85a8e5 | |||
| 90da74aee9 | |||
| 3e59effd03 | |||
| 851c651820 | |||
| b7641686a6 | |||
| fe9d013c3e | |||
| 31527e43d9 | |||
| b740fe92d3 | |||
| 95585d7c94 | |||
| d6d1c629fa | |||
| 1ef8005d65 | |||
| d43607b2f9 | |||
| 46fdd02c75 | |||
| a79891f126 | |||
| 3e4ea06702 | |||
| 1ad3d2cdd8 | |||
| 207962bb1a | |||
| 618db3deb7 | |||
| a1c2e40cac | |||
| 61b113c623 | |||
| 4ef3a4ea7c | |||
| aab34d876e | |||
| ef4006b3a5 | |||
| a2492efb60 | |||
| 99c0470dd8 | |||
| 4d82d16dc1 | |||
| 2efc8ff757 | |||
| 6bb2d376b5 | |||
| e714bb67ca | |||
| 7a66394fcb | |||
| 9ae4f3d27e | |||
| d5117af382 | |||
| a4499a22c5 | |||
| ec58960745 | |||
| a3d909888d | |||
| 3ba58f158d | |||
| 88f28d6980 | |||
| 5d25419188 | |||
| 5a6571eba9 | |||
| 4f2900d097 | |||
| 5f78eccd1c | |||
| a8b9c6640a | |||
| 92c8d7dd97 | |||
| a500a479b0 | |||
| 906c1f5055 | |||
| 710547590b | |||
| b31ed75bff | |||
| 50804b725b | |||
| 5a628880b0 | |||
| f2886d75e6 | |||
| 9899932303 | |||
| 31eade077e | |||
| 028275d6da | |||
| c33b54df47 | |||
| 390cca8125 | |||
| 8a0711c758 | |||
| d6f351690e | |||
| 97185033e5 | |||
| eed1b17791 | |||
| 79995893de | |||
| 2718513226 | |||
| 211a20aefb | |||
| de327d23e7 | |||
| 3d32b50f05 | |||
| 14c5c70a78 | |||
| 08be2facab | |||
| cfb192ad1e | |||
| a87420ae59 | |||
| d620b00ffa | |||
| 24abf6c925 | |||
| 69b9fcf297 | |||
| 171afdf694 | |||
| 4e04ee2d2f | |||
| b4fab30b89 | |||
| 56ba14daa4 | |||
| 503cca7cee | |||
| 85ef19558c | |||
| 912c18afa3 | |||
| af10d71cc2 | |||
| 175e1711a6 | |||
| bf70fe4883 | |||
| aa826860bc | |||
| 77cf0390e4 | |||
| d08b12c1a6 | |||
| fdc44cf1b7 | |||
| 795d920028 | |||
| c4461ff57b | |||
| b5a3d4da61 | |||
| ab0f561de6 | |||
| 9f211bbf3a | |||
| 0e7aa57385 | |||
| 84b5415cbf | |||
| fb741174ad | |||
| b876bf6ea5 | |||
| 4bf3bc9eda | |||
| dbd8f037e7 | |||
| 91076f111b | |||
| 136ebc6e3c | |||
| b32f429849 | |||
| 6f44e36e15 | |||
| 01422bd794 | |||
| 0caf0d767c | |||
| 9a79baba76 | |||
| 415015506f | |||
| 18ec04c071 | |||
| 736f0e2531 | |||
| 27b4293285 | |||
| e04914328d | |||
| e1f4399150 | |||
| 8f4e48edff | |||
| c79514fda0 | |||
| 0bde7e57a2 | |||
| 444f9c368e | |||
| 4966664928 | |||
| 2384225b8b | |||
| 63dc047468 | |||
| cc82a93645 | |||
| 5fac0c95e1 | |||
| 1361ddec0a | |||
| 3292123d13 | |||
| fcf1b59128 | |||
| 298d289542 | |||
| 372c6f96f7 | |||
| 5196e6cab7 | |||
| b36902c37a | |||
| 3c999f7ff4 | |||
| b001650c7d | |||
| b4d74032b0 | |||
| 3d5e2a1532 |
56
.cvsignore → .gitignore
vendored
56
.cvsignore → .gitignore
vendored
@ -1,35 +1,51 @@
|
||||
*#*#
|
||||
*.#*#
|
||||
*.a
|
||||
*.exe
|
||||
*.o
|
||||
*.orig
|
||||
*.rej
|
||||
*~
|
||||
.git
|
||||
.git-module-status
|
||||
.sc-start-sc_*
|
||||
/GNUmakefile
|
||||
/libvirt-[0-9]*
|
||||
/maint.mk
|
||||
ABOUT-NLS
|
||||
COPYING
|
||||
ChangeLog
|
||||
INSTALL
|
||||
Makefile
|
||||
Makefile.in
|
||||
NEWS
|
||||
aclocal.m4
|
||||
autom4te.cache
|
||||
stamp-h.in
|
||||
Makefile.in
|
||||
configure
|
||||
config.cache
|
||||
config.guess
|
||||
config.h
|
||||
config.h.in
|
||||
config.log
|
||||
config.guess
|
||||
config.rpath
|
||||
config.status
|
||||
config.sub
|
||||
stamp-h
|
||||
stamp-h1
|
||||
configure
|
||||
coverage
|
||||
cscope.files
|
||||
cscope.out
|
||||
gnulib/
|
||||
libtool
|
||||
ltconfig
|
||||
ltmain.sh
|
||||
update.log
|
||||
libvirt-*.tar.gz
|
||||
libvirt.pc
|
||||
libvirt.spec
|
||||
COPYING
|
||||
m4
|
||||
ABOUT-NLS
|
||||
config.rpath
|
||||
ltconfig
|
||||
ltmain.sh
|
||||
mingw32-libvirt.spec
|
||||
mkinstalldirs
|
||||
coverage
|
||||
results.log
|
||||
libvirt-*.tar.gz
|
||||
INSTALL
|
||||
compile
|
||||
depcomp
|
||||
install-sh
|
||||
missing
|
||||
stamp-h
|
||||
stamp-h.in
|
||||
stamp-h1
|
||||
tests/*.log
|
||||
tests/nwfilterxml2xmltest
|
||||
update.log
|
||||
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
[submodule "gnulib"]
|
||||
path = .gnulib
|
||||
url = git://git.sv.gnu.org/gnulib.git
|
||||
1
.gnulib
Submodule
1
.gnulib
Submodule
Submodule .gnulib added at 1629006348
13
.mailmap
Normal file
13
.mailmap
Normal file
@ -0,0 +1,13 @@
|
||||
<amy.griffis@hp.com> <aron.griffis@hp.com>
|
||||
<bozzolan@gmail.com> <redshift@gmx.com>
|
||||
<charles_duffy@messageone.com> <charles@dyfis.net>
|
||||
<dfj@redhat.com> <dfj@dfj.bne.redhat.com>
|
||||
<eblake@redhat.com> <ebb9@byu.net>
|
||||
<gdolley@arpnetworks.com> <gdolley@ucla.edu>
|
||||
<gerhard.stenzel@de.ibm.com> <gstenzel@linux.vnet.ibm.com>
|
||||
<jamie@canonical.com> <jamie@ubuntu.com>
|
||||
<laine@redhat.com> <laine@laine.org>
|
||||
<meyering@redhat.com> <jim@meyering.net>
|
||||
<socketpair@gmail.com> <socketpair gmail com>
|
||||
<soren@canonical.com> <soren@ubuntu.com>
|
||||
<jfehlig@novell.com> <jfehlig@linux-ypgk.site>
|
||||
1
.x-sc_avoid_ctype_macros
Normal file
1
.x-sc_avoid_ctype_macros
Normal file
@ -0,0 +1 @@
|
||||
^gnulib/.*
|
||||
1
.x-sc_avoid_if_before_free
Normal file
1
.x-sc_avoid_if_before_free
Normal file
@ -0,0 +1 @@
|
||||
^ChangeLog
|
||||
7
.x-sc_avoid_write
Normal file
7
.x-sc_avoid_write
Normal file
@ -0,0 +1,7 @@
|
||||
^src/libvirt\.c$
|
||||
^src/qemu/qemu_driver\.c$
|
||||
^src/qemu/qemu_monitor\.c$
|
||||
^src/util/util\.c$
|
||||
^src/xen/xend_internal\.c$
|
||||
^daemon/libvirtd.c$
|
||||
^gnulib/
|
||||
1
.x-sc_m4_quote_check
Normal file
1
.x-sc_m4_quote_check
Normal file
@ -0,0 +1 @@
|
||||
^gnulib/m4/intl\.m4$
|
||||
1
.x-sc_prohibit_HAVE_MBRTOWC
Normal file
1
.x-sc_prohibit_HAVE_MBRTOWC
Normal file
@ -0,0 +1 @@
|
||||
gnulib/.*
|
||||
5
.x-sc_prohibit_VIR_ERR_NO_MEMORY
Normal file
5
.x-sc_prohibit_VIR_ERR_NO_MEMORY
Normal file
@ -0,0 +1,5 @@
|
||||
^ChangeLog$
|
||||
^ChangeLog-old$
|
||||
^include/libvirt/virterror\.h$
|
||||
^daemon/dispatch\.c$
|
||||
^src/util/virterror\.c$
|
||||
4
.x-sc_prohibit_always_true_header_tests
Normal file
4
.x-sc_prohibit_always_true_header_tests
Normal file
@ -0,0 +1,4 @@
|
||||
ChangeLog*
|
||||
docs/news.html.in
|
||||
python/libvirt-override.c
|
||||
python/typewrappers.c
|
||||
3
.x-sc_prohibit_asprintf
Normal file
3
.x-sc_prohibit_asprintf
Normal file
@ -0,0 +1,3 @@
|
||||
^gnulib/
|
||||
^po/
|
||||
ChangeLog
|
||||
2
.x-sc_prohibit_gethostby
Normal file
2
.x-sc_prohibit_gethostby
Normal file
@ -0,0 +1,2 @@
|
||||
^gnulib/lib/getaddrinfo\.c$
|
||||
^gnulib/m4/
|
||||
2
.x-sc_prohibit_gethostname
Normal file
2
.x-sc_prohibit_gethostname
Normal file
@ -0,0 +1,2 @@
|
||||
^src/util/util\.c$
|
||||
^ChangeLog-old$
|
||||
2
.x-sc_prohibit_gettext_noop
Normal file
2
.x-sc_prohibit_gettext_noop
Normal file
@ -0,0 +1,2 @@
|
||||
ChangeLog*
|
||||
docs/news.html.in
|
||||
1
.x-sc_prohibit_have_config_h
Normal file
1
.x-sc_prohibit_have_config_h
Normal file
@ -0,0 +1 @@
|
||||
^gnulib/lib/strsep\.c$
|
||||
10
.x-sc_prohibit_nonreentrant
Normal file
10
.x-sc_prohibit_nonreentrant
Normal file
@ -0,0 +1,10 @@
|
||||
^gnulib/
|
||||
^po/
|
||||
^ChangeLog$
|
||||
^ChangeLog-old$
|
||||
^Makefile*
|
||||
^docs/
|
||||
^tests/
|
||||
^tools/virsh\.c$
|
||||
^tools/console\.c$
|
||||
^build-aux/
|
||||
2
.x-sc_prohibit_readlink
Normal file
2
.x-sc_prohibit_readlink
Normal file
@ -0,0 +1,2 @@
|
||||
^src/util/util\.c$
|
||||
^ChangeLog-old$
|
||||
1
.x-sc_prohibit_strcmp
Normal file
1
.x-sc_prohibit_strcmp
Normal file
@ -0,0 +1 @@
|
||||
^gnulib/
|
||||
9
.x-sc_prohibit_strcmp_and_strncmp
Normal file
9
.x-sc_prohibit_strcmp_and_strncmp
Normal file
@ -0,0 +1,9 @@
|
||||
^gnulib/
|
||||
^ChangeLog-old$
|
||||
^docs/
|
||||
^examples/domain-events/events-c/event-test\.c$
|
||||
^src/internal\.h$
|
||||
^src/lxc/lxc_container\.c$
|
||||
^src/node_device/node_device_devkit\.c$
|
||||
^src/node_device/node_device_hal\.c$
|
||||
^src/storage/parthelper\.c$
|
||||
1
.x-sc_prohibit_strncpy
Normal file
1
.x-sc_prohibit_strncpy
Normal file
@ -0,0 +1 @@
|
||||
^src/util/util\.c$
|
||||
1
.x-sc_prohibit_test_minus_ao
Normal file
1
.x-sc_prohibit_test_minus_ao
Normal file
@ -0,0 +1 @@
|
||||
docs/news.html.in
|
||||
4
.x-sc_require_config_h
Normal file
4
.x-sc_require_config_h
Normal file
@ -0,0 +1,4 @@
|
||||
^examples/
|
||||
^gnulib/lib/dummy\.c$
|
||||
^gnulib/tests/dummy\.c$
|
||||
^ChangeLog$
|
||||
1
.x-sc_require_config_h_first
Normal file
1
.x-sc_require_config_h_first
Normal file
@ -0,0 +1 @@
|
||||
^examples/
|
||||
7
.x-sc_trailing_blank
Normal file
7
.x-sc_trailing_blank
Normal file
@ -0,0 +1,7 @@
|
||||
\.fig$
|
||||
\.gif$
|
||||
\.ico$
|
||||
\.png$
|
||||
^ChangeLog$
|
||||
^NEWS$
|
||||
^docs/.*
|
||||
2
.x-sc_unmarked_diagnostics
Normal file
2
.x-sc_unmarked_diagnostics
Normal file
@ -0,0 +1,2 @@
|
||||
docs/apibuild.py
|
||||
tests/virt-aa-helper-test
|
||||
115
AUTHORS
115
AUTHORS
@ -5,28 +5,39 @@ The libvirt project was initiated by:
|
||||
|
||||
Daniel Veillard <veillard@redhat.com> or <daniel@veillard.com>
|
||||
|
||||
The primary maintainers for various code sub-systems / drivers
|
||||
are:
|
||||
The primary maintainers and people with commit access rights:
|
||||
|
||||
Daniel Veillard <veillard@redhat.com> (xen & everything else)
|
||||
Karel Zak <kzak@redhat.com> (virsh tool)
|
||||
Daniel Berrange <berrange@redhat.com> (test & qemu drivers)
|
||||
Mark McLoughlin <markmc@redhat.com> (network driver)
|
||||
Richard W.M. Jones <rjones@redhat.com> (remote driver)
|
||||
Daniel Veillard <veillard@redhat.com>
|
||||
Daniel Berrange <berrange@redhat.com>
|
||||
Richard W.M. Jones <rjones@redhat.com>
|
||||
Karel Zak <kzak@redhat.com>
|
||||
Mark McLoughlin <markmc@redhat.com>
|
||||
Anthony Liguori <aliguori@us.ibm.com>
|
||||
Jim Meyering <meyering@redhat.com>
|
||||
Jim Fehlig <jfehlig@novell.com>
|
||||
Chris Lalancette <clalance@redhat.com>
|
||||
Atsushi SAKAI <sakaia@jp.fujitsu.com>
|
||||
Dave Leskovec <dlesko@linux.vnet.ibm.com>
|
||||
Cole Robinson <crobinso@redhat.com>
|
||||
Dan Smith <danms@us.ibm.com>
|
||||
Guido Günther <agx@sigxcpu.org>
|
||||
John Levon <john.levon@sun.com>
|
||||
Matthias Bolte <matthias.bolte@googlemail.com>
|
||||
Jiri Denemark <jdenemar@redhat.com>
|
||||
Dave Allan <dallan@redhat.com>
|
||||
Laine Stump <laine@redhat.com>
|
||||
Stefan Berger <stefanb@us.ibm.com>
|
||||
Eric Blake <eblake@redhat.com>
|
||||
|
||||
Patches have also been contributed by:
|
||||
|
||||
David Lutterkort <dlutter@redhat.com>
|
||||
Anthony Liguori <aliguori@us.ibm.com>
|
||||
Jim Meyering <meyering@redhat.com>
|
||||
Andrew Puch <apuch@redhat.com>
|
||||
Jim Fehlig <jfehlig@novell.com>
|
||||
Philippe Berthault <philippe.berthault@Bull.net>
|
||||
Hugh Brock <hbrock@redhat.com>
|
||||
Michel Ponceau <michel.ponceau@bull.net>
|
||||
Jeremy Katz <katzj@redhat.com>
|
||||
Pete Vetere <pvetere@redhat.com>
|
||||
Atsushi SAKAI <sakaia@jp.fujitsu.com>
|
||||
Kazuki Mizushima <mizushima.kazuk@jp.fujitsu.com>
|
||||
Saori Fukuta <fukuta.saori@jp.fujitsu.com>
|
||||
Tatsuro Enokura <fj7716hz@aa.jp.fujitsu.com>
|
||||
@ -37,8 +48,90 @@ Patches have also been contributed by:
|
||||
Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com>
|
||||
Shuveb Hussain <shuveb@binarykarma.com>
|
||||
Jim Paris <jim@jtan.com>
|
||||
Daniel Hokka Zakrisson <daniel@hozac.com>
|
||||
Mads Chr. Olesen <shiyee@shiyee.dk>
|
||||
Anton Protopopov <aspsk2@gmail.com>
|
||||
Stefan de Konink <dekonink@kinkrsoftware.nl>
|
||||
Kaitlin Rupert <kaitlin@linux.vnet.ibm.com>
|
||||
Evgeniy Sokolov <evg@openvz.org>
|
||||
David Lively <dlively@virtualiron.com>
|
||||
Charles Duffy <Charles_Duffy@messageone.com>
|
||||
Nguyen Anh Quynh <aquynh@gmail.com>
|
||||
James Morris <jmorris@namei.org>
|
||||
Chris Wright <chrisw@redhat.com>
|
||||
Ben Guthro <ben.guthro@gmail.com>
|
||||
Shigeki Sakamoto <fj0588di@aa.jp.fujitsu.com>
|
||||
Gerd von Egidy <lists@egidy.de>
|
||||
Itamar Heim <iheim@redhat.com>
|
||||
Markus Armbruster <armbru@redhat.com>
|
||||
Ryota Ozaki <ozaki.ryota@gmail.com>
|
||||
James Morris <jmorris@namei.org>
|
||||
Daniel J Walsh <dwalsh@redhat.com>
|
||||
Maximilian Wilhelm <max@rfc2324.org>
|
||||
Pritesh Kothari <Pritesh.Kothari@Sun.COM>
|
||||
Amit Shah <amit.shah@redhat.com>
|
||||
Florian Vichot <florian.vichot@diateam.net>
|
||||
Takahashi Tomohiro <takatom@jp.fujitsu.com>
|
||||
Serge E. Hallyn <serue@us.ibm.com>
|
||||
Soren Hansen <soren@canonical.com>
|
||||
Abel Míguez Rodríguez<amiguezr@pdi.ucm.es>
|
||||
Doug Goldstein <cardoe@gentoo.org>
|
||||
Javier Fontan <jfontan@gmail.com>
|
||||
Federico Simoncelli <federico.simoncelli@gmail.com>
|
||||
Amy Griffis <amy.griffis@hp.com>
|
||||
Henrik Persson E <henrik.e.persson@ericsson.com>
|
||||
Satoru SATOH <satoru.satoh@gmail.com>
|
||||
Paolo Bonzini <pbonzini@redhat.com>
|
||||
Miloslav Trmač <mitr@redhat.com>
|
||||
Jamie Strandboge <jamie@canonical.com>
|
||||
Gerhard Stenzel <gerhard.stenzel@de.ibm.com>
|
||||
Matthew Booth <mbooth@redhat.com>
|
||||
Diego Elio Pettenò <flameeyes@gmail.com>
|
||||
Adam Litke <agl@us.ibm.com>
|
||||
Steve Yarmie <steve.yarmie@gmail.com>
|
||||
Dan Kenigsberg <danken@redhat.com>
|
||||
Yuji NISHIDA <nishidy@nict.go.jp>
|
||||
Dustin Xiong <x_k_123@hotmail.com>
|
||||
Rolf Eike Beer <eike@sf-mail.de>
|
||||
Wolfgang Mauerer <wolfgang.mauerer@siemens.com>
|
||||
Philipp Hahn <hahn@univention.de>
|
||||
Ed Swierk <eswierk@aristanetworks.com>
|
||||
Paolo Smiraglia <paolo.smiraglia@gmail.com>
|
||||
Sharadha Prabhakar <sharadha.prabhakar@citrix.com>
|
||||
Chris Wong <wongc-redhat@hoku.net>
|
||||
Daniel Berteaud <daniel@firewall-services.com>
|
||||
Dustin Kirkland <kirkland@canonical.com>
|
||||
Luiz Capitulino <lcapitulino@redhat.com>
|
||||
Ryan Harper <ryanh@us.ibm.com>
|
||||
Spencer Shimko <sshimko@tresys.com>
|
||||
Marco Bozzolan <bozzolan@gmail.com>
|
||||
Alex Williamson <alex.williamson@redhat.com>
|
||||
Ersek Laszlo <lacos@caesar.elte.hu>
|
||||
Kenneth Nagin <NAGIN@il.ibm.com>
|
||||
Klaus Ethgen <Klaus@Ethgen.de>
|
||||
Bryan Kearney <bkearney@redhat.com>
|
||||
Darry L. Pierce <dpierce@redhat.com>
|
||||
David Jorm <dfj@redhat.com>
|
||||
Eduardo Otubo <otubo@linux.vnet.ibm.com>
|
||||
Garry Dolley <gdolley@arpnetworks.com>
|
||||
Harshavardhana <harsha@gluster.com>
|
||||
Jonas Eriksson <jonas.j.eriksson@ericsson.com>
|
||||
Jun Koi <junkoi2004@gmail.com>
|
||||
Olivier Fourdan <ofourdan@redhat.com>
|
||||
Ron Yorston <rmy@tigress.co.uk>
|
||||
Shahar Klein <shaharklein@yahoo.com>
|
||||
Taizo ITO <taizo.ito@hde.co.jp>
|
||||
Thomas Treutner <thomas@scripty.at>
|
||||
Jean-Baptiste Rouault <jean-baptiste.rouault@diateam.net>
|
||||
Марк Коренберг <socketpair@gmail.com>
|
||||
Justin Clift <justin@salasaga.org>
|
||||
Alan Pevec <apevec@redhat.com>
|
||||
|
||||
[....send patches to get your name here....]
|
||||
|
||||
The libvirt Logo was designed by Diana Fong
|
||||
|
||||
-- End
|
||||
;; Local Variables:
|
||||
;; coding: utf-8
|
||||
;; End:
|
||||
|
||||
@ -506,5 +506,3 @@ if necessary. Here is a sample; alter the names:
|
||||
Ty Coon, President of Vice
|
||||
|
||||
That's all there is to it!
|
||||
|
||||
|
||||
|
||||
16699
ChangeLog-old
Normal file
16699
ChangeLog-old
Normal file
File diff suppressed because it is too large
Load Diff
502
HACKING
Normal file
502
HACKING
Normal file
@ -0,0 +1,502 @@
|
||||
-*- buffer-read-only: t -*- vi: set ro:
|
||||
DO NOT EDIT THIS FILE! IT IS GENERATED AUTOMATICALLY!
|
||||
|
||||
Libvirt contributor guidelines
|
||||
==============================
|
||||
|
||||
|
||||
General tips for contributing patches
|
||||
=====================================
|
||||
|
||||
(1) Discuss any large changes on the mailing list first. Post patches
|
||||
early and listen to feedback.
|
||||
|
||||
(2) Post patches in unified diff format. A command similar to this
|
||||
should work:
|
||||
|
||||
diff -urp libvirt.orig/ libvirt.modified/ > libvirt-myfeature.patch
|
||||
|
||||
or:
|
||||
|
||||
git diff > libvirt-myfeature.patch
|
||||
|
||||
(3) Split large changes into a series of smaller patches, self-contained
|
||||
if possible, with an explanation of each patch and an explanation of how
|
||||
the sequence of patches fits together.
|
||||
|
||||
(4) Make sure your patches apply against libvirt GIT. Developers
|
||||
only follow GIT and don't care much about released versions.
|
||||
|
||||
(5) Run the automated tests on your code before submitting any changes.
|
||||
In particular, configure with compile warnings set to -Werror:
|
||||
|
||||
./configure --enable-compile-warnings=error
|
||||
|
||||
and run the tests:
|
||||
|
||||
make check
|
||||
make syntax-check
|
||||
make -C tests valgrind
|
||||
|
||||
The latter test checks for memory leaks.
|
||||
|
||||
If you encounter any failing tests, the VIR_TEST_DEBUG environment variable
|
||||
may provide extra information to debug the failures. Larger values of
|
||||
VIR_TEST_DEBUG may provide larger amounts of information:
|
||||
|
||||
VIR_TEST_DEBUG=1 make check (or)
|
||||
VIR_TEST_DEBUG=2 make check
|
||||
|
||||
Also, individual tests can be run from inside the 'tests/' directory, like:
|
||||
|
||||
./qemuxml2xmltest
|
||||
|
||||
(6) Update tests and/or documentation, particularly if you are adding
|
||||
a new feature or changing the output of a program.
|
||||
|
||||
|
||||
There is more on this subject, including lots of links to background
|
||||
reading on the subject, on this page:
|
||||
|
||||
http://et.redhat.com/~rjones/how-to-supply-code-to-open-source-projects/
|
||||
|
||||
|
||||
|
||||
Code indentation
|
||||
================
|
||||
Libvirt's C source code generally adheres to some basic code-formatting
|
||||
conventions. The existing code base is not totally consistent on this
|
||||
front, but we do prefer that contributed code be formatted similarly.
|
||||
In short, use spaces-not-TABs for indentation, use 4 spaces for each
|
||||
indentation level, and other than that, follow the K&R style.
|
||||
|
||||
If you use Emacs, add the following to one of one of your start-up files
|
||||
(e.g., ~/.emacs), to help ensure that you get indentation right:
|
||||
|
||||
;;; When editing C sources in libvirt, use this style.
|
||||
(defun libvirt-c-mode ()
|
||||
"C mode with adjusted defaults for use with libvirt."
|
||||
(interactive)
|
||||
(c-set-style "K&R")
|
||||
(setq indent-tabs-mode nil) ; indent using spaces, not TABs
|
||||
(setq c-indent-level 4)
|
||||
(setq c-basic-offset 4))
|
||||
(add-hook 'c-mode-hook
|
||||
'(lambda () (if (string-match "/libvirt" (buffer-file-name))
|
||||
(libvirt-c-mode))))
|
||||
|
||||
Code formatting (especially for new code)
|
||||
=========================================
|
||||
With new code, we can be even more strict.
|
||||
Please apply the following function (using GNU indent) to any new code.
|
||||
Note that this also gives you an idea of the type of spacing we prefer
|
||||
around operators and keywords:
|
||||
|
||||
indent-libvirt()
|
||||
{
|
||||
indent -bad -bap -bbb -bli4 -br -ce -brs -cs -i4 -l75 -lc75 \
|
||||
-sbi4 -psl -saf -sai -saw -sbi4 -ss -sc -cdw -cli4 -npcs -nbc \
|
||||
--no-tabs "$@"
|
||||
}
|
||||
|
||||
Note that sometimes you'll have to post-process that output further, by
|
||||
piping it through "expand -i", since some leading TABs can get through.
|
||||
Usually they're in macro definitions or strings, and should be converted
|
||||
anyhow.
|
||||
|
||||
|
||||
Curly braces
|
||||
============
|
||||
Omit the curly braces around an "if", "while", "for" etc. body only when that
|
||||
body occupies a single line. In every other case we require the braces. This
|
||||
ensures that it is trivially easy to identify a single-*statement* loop: each
|
||||
has only one *line* in its body.
|
||||
|
||||
Omitting braces with a single-line body is fine:
|
||||
|
||||
while (expr) // one-line body -> omitting curly braces is ok
|
||||
single_line_stmt ();
|
||||
|
||||
However, the moment your loop/if/else body extends onto a second line, for
|
||||
whatever reason (even if it's just an added comment), then you should add
|
||||
braces. Otherwise, it would be too easy to insert a statement just before that
|
||||
comment (without adding braces), thinking it is already a multi-statement
|
||||
loop:
|
||||
|
||||
while (true) // BAD! multi-line body with no braces
|
||||
/* comment... */
|
||||
single_line_stmt ();
|
||||
|
||||
Do this instead:
|
||||
|
||||
while (true) { // Always put braces around a multi-line body.
|
||||
/* comment... */
|
||||
single_line_stmt ();
|
||||
}
|
||||
|
||||
There is one exception: when the second body line is not at the same
|
||||
indentation level as the first body line:
|
||||
|
||||
if (expr)
|
||||
die ("a diagnostic that would make this line"
|
||||
" extend past the 80-column limit"));
|
||||
|
||||
It is safe to omit the braces in the code above, since the further-indented
|
||||
second body line makes it obvious that this is still a single-statement body.
|
||||
|
||||
|
||||
To reiterate, don't do this:
|
||||
|
||||
if (expr) // BAD: no braces around...
|
||||
while (expr_2) { // ... a multi-line body
|
||||
...
|
||||
}
|
||||
|
||||
Do this, instead:
|
||||
|
||||
if (expr) {
|
||||
while (expr_2) {
|
||||
...
|
||||
}
|
||||
}
|
||||
|
||||
However, there is one exception in the other direction, when even a one-line
|
||||
block should have braces. That occurs when that one-line, brace-less block is
|
||||
an "else" block, and the corresponding "then" block *does* use braces. In that
|
||||
case, either put braces around the "else" block, or negate the "if"-condition
|
||||
and swap the bodies, putting the one-line block first and making the longer,
|
||||
multi-line block be the "else" block.
|
||||
|
||||
if (expr) {
|
||||
...
|
||||
...
|
||||
}
|
||||
else
|
||||
x = y; // BAD: braceless "else" with braced "then"
|
||||
|
||||
This is preferred, especially when the multi-line body is more than a few
|
||||
lines long, because it is easier to read and grasp the semantics of an if-
|
||||
then-else block when the simpler block occurs first, rather than after the
|
||||
more involved block:
|
||||
|
||||
if (!expr)
|
||||
x = y; // putting the smaller block first is more readable
|
||||
else {
|
||||
...
|
||||
...
|
||||
}
|
||||
|
||||
If you'd rather not negate the condition, then at least add braces:
|
||||
|
||||
if (expr) {
|
||||
...
|
||||
...
|
||||
} else {
|
||||
x = y;
|
||||
}
|
||||
|
||||
|
||||
Preprocessor
|
||||
============
|
||||
For variadic macros, stick with C99 syntax:
|
||||
|
||||
#define vshPrint(_ctl, ...) fprintf(stdout, __VA_ARGS__)
|
||||
|
||||
Use parenthesis when checking if a macro is defined, and use
|
||||
indentation to track nesting:
|
||||
|
||||
#if defined(HAVE_POSIX_FALLOCATE) && !defined(HAVE_FALLOCATE)
|
||||
# define fallocate(a,ignored,b,c) posix_fallocate(a,b,c)
|
||||
#endif
|
||||
|
||||
|
||||
C types
|
||||
=======
|
||||
Use the right type.
|
||||
|
||||
Scalars
|
||||
-------
|
||||
If you're using "int" or "long", odds are good that there's a better type.
|
||||
If a variable is counting something, be sure to declare it with an
|
||||
unsigned type.
|
||||
If it's memory-size-related, use size_t (use ssize_t only if required).
|
||||
If it's file-size related, use uintmax_t, or maybe off_t.
|
||||
If it's file-offset related (i.e., signed), use off_t.
|
||||
If it's just counting small numbers use "unsigned int";
|
||||
(on all but oddball embedded systems, you can assume that that
|
||||
type is at least four bytes wide).
|
||||
If a variable has boolean semantics, give it the "bool" type
|
||||
and use the corresponding "true" and "false" macros. It's ok
|
||||
to include <stdbool.h>, since libvirt's use of gnulib ensures
|
||||
that it exists and is usable.
|
||||
In the unusual event that you require a specific width, use a
|
||||
standard type like int32_t, uint32_t, uint64_t, etc.
|
||||
|
||||
While using "bool" is good for readability, it comes with minor caveats:
|
||||
- Don't use "bool" in places where the type size must be constant across
|
||||
all systems, like public interfaces and on-the-wire protocols. Note
|
||||
that it would be possible (albeit wasteful) to use "bool" in libvirt's
|
||||
logical wire protocol, since XDR maps that to its lower-level bool_t
|
||||
type, which *is* fixed-size.
|
||||
- Don't compare a bool variable against the literal, "true",
|
||||
since a value with a logical non-false value need not be "1".
|
||||
I.e., don't write "if (seen == true) ...". Rather, write "if (seen)...".
|
||||
|
||||
Of course, take all of the above with a grain of salt. If you're about
|
||||
to use some system interface that requires a type like size_t, pid_t or
|
||||
off_t, use matching types for any corresponding variables.
|
||||
|
||||
Also, if you try to use e.g., "unsigned int" as a type, and that
|
||||
conflicts with the signedness of a related variable, sometimes
|
||||
it's best just to use the *wrong* type, if "pulling the thread"
|
||||
and fixing all related variables would be too invasive.
|
||||
|
||||
Finally, while using descriptive types is important, be careful not to
|
||||
go overboard. If whatever you're doing causes warnings, or requires
|
||||
casts, then reconsider or ask for help.
|
||||
|
||||
Pointers
|
||||
--------
|
||||
Ensure that all of your pointers are "const-correct".
|
||||
Unless a pointer is used to modify the pointed-to storage,
|
||||
give it the "const" attribute. That way, the reader knows
|
||||
up-front that this is a read-only pointer. Perhaps more
|
||||
importantly, if we're diligent about this, when you see a non-const
|
||||
pointer, you're guaranteed that it is used to modify the storage
|
||||
it points to, or it is aliased to another pointer that is.
|
||||
|
||||
|
||||
Low level memory management
|
||||
===========================
|
||||
|
||||
Use of the malloc/free/realloc/calloc APIs is deprecated in the libvirt
|
||||
codebase, because they encourage a number of serious coding bugs and do
|
||||
not enable compile time verification of checks for NULL. Instead of these
|
||||
routines, use the macros from memory.h
|
||||
|
||||
- eg to allocate a single object:
|
||||
|
||||
virDomainPtr domain;
|
||||
|
||||
if (VIR_ALLOC(domain) < 0) {
|
||||
virReportOOMError();
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
- eg to allocate an array of objects
|
||||
|
||||
virDomainPtr domains;
|
||||
int ndomains = 10;
|
||||
|
||||
if (VIR_ALLOC_N(domains, ndomains) < 0) {
|
||||
virReportOOMError();
|
||||
return NULL;
|
||||
}
|
||||
|
||||
- eg to allocate an array of object pointers
|
||||
|
||||
virDomainPtr *domains;
|
||||
int ndomains = 10;
|
||||
|
||||
if (VIR_ALLOC_N(domains, ndomains) < 0) {
|
||||
virReportOOMError();
|
||||
return NULL;
|
||||
}
|
||||
|
||||
- eg to re-allocate the array of domains to be longer
|
||||
|
||||
ndomains = 20
|
||||
|
||||
if (VIR_REALLOC_N(domains, ndomains) < 0) {
|
||||
virReportOOMError();
|
||||
return NULL;
|
||||
}
|
||||
|
||||
- eg to free the domain
|
||||
|
||||
VIR_FREE(domain);
|
||||
|
||||
|
||||
|
||||
String comparisons
|
||||
==================
|
||||
|
||||
Do not use the strcmp, strncmp, etc functions directly. Instead use
|
||||
one of the following semantically named macros
|
||||
|
||||
- For strict equality:
|
||||
|
||||
STREQ(a,b)
|
||||
STRNEQ(a,b)
|
||||
|
||||
- For case insensitive equality:
|
||||
STRCASEEQ(a,b)
|
||||
STRCASENEQ(a,b)
|
||||
|
||||
- For strict equality of a substring:
|
||||
|
||||
STREQLEN(a,b,n)
|
||||
STRNEQLEN(a,b,n)
|
||||
|
||||
- For case insensitive equality of a substring:
|
||||
|
||||
STRCASEEQLEN(a,b,n)
|
||||
STRCASENEQLEN(a,b,n)
|
||||
|
||||
- For strict equality of a prefix:
|
||||
|
||||
STRPREFIX(a,b)
|
||||
|
||||
|
||||
|
||||
String copying
|
||||
==============
|
||||
|
||||
Do not use the strncpy function. According to the man page, it does
|
||||
*not* guarantee a NULL-terminated buffer, which makes it extremely dangerous
|
||||
to use. Instead, use one of the functionally equivalent functions:
|
||||
|
||||
- virStrncpy(char *dest, const char *src, size_t n, size_t destbytes)
|
||||
The first three arguments have the same meaning as for strncpy; namely the
|
||||
destination, source, and number of bytes to copy, respectively. The last
|
||||
argument is the number of bytes available in the destination string; if a
|
||||
copy of the source string (including a \0) will not fit into the
|
||||
destination, no bytes are copied and the routine returns NULL.
|
||||
Otherwise, n bytes from the source are copied into the destination and a
|
||||
trailing \0 is appended.
|
||||
|
||||
- virStrcpy(char *dest, const char *src, size_t destbytes)
|
||||
Use this variant if you know you want to copy the entire src string
|
||||
into dest. Note that this is a macro, so arguments could be
|
||||
evaluated more than once. This is equivalent to
|
||||
virStrncpy(dest, src, strlen(src), destbytes)
|
||||
|
||||
- virStrcpyStatic(char *dest, const char *src)
|
||||
Use this variant if you know you want to copy the entire src string
|
||||
into dest *and* you know that your destination string is a static string
|
||||
(i.e. that sizeof(dest) returns something meaningful). Note that
|
||||
this is a macro, so arguments could be evaluated more than once. This is
|
||||
equivalent to virStrncpy(dest, src, strlen(src), sizeof(dest)).
|
||||
|
||||
|
||||
|
||||
Variable length string buffer
|
||||
=============================
|
||||
|
||||
If there is a need for complex string concatenations, avoid using
|
||||
the usual sequence of malloc/strcpy/strcat/snprintf functions and
|
||||
make use of the virBuffer API described in buf.h
|
||||
|
||||
eg typical usage is as follows:
|
||||
|
||||
char *
|
||||
somefunction(...) {
|
||||
virBuffer buf = VIR_BUFFER_INITIALIZER;
|
||||
|
||||
...
|
||||
|
||||
virBufferAddLit(&buf, "<domain>\n");
|
||||
virBufferVSprint(&buf, " <memory>%d</memory>\n", memory);
|
||||
...
|
||||
virBufferAddLit(&buf, "</domain>\n");
|
||||
|
||||
...
|
||||
|
||||
if (virBufferError(&buf)) {
|
||||
virBufferFreeAndReset(&buf);
|
||||
virReportOOMError();
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return virBufferContentAndReset(&buf);
|
||||
}
|
||||
|
||||
|
||||
Include files
|
||||
=============
|
||||
|
||||
There are now quite a large number of include files, both libvirt
|
||||
internal and external, and system includes. To manage all this
|
||||
complexity it's best to stick to the following general plan for all
|
||||
*.c source files:
|
||||
|
||||
/*
|
||||
* Copyright notice
|
||||
* ....
|
||||
* ....
|
||||
* ....
|
||||
*
|
||||
*/
|
||||
|
||||
#include <config.h> Must come first in every file.
|
||||
|
||||
#include <stdio.h> Any system includes you need.
|
||||
#include <string.h>
|
||||
#include <limits.h>
|
||||
|
||||
#if HAVE_NUMACTL Some system includes aren't supported
|
||||
# include <numa.h> everywhere so need these #if guards.
|
||||
#endif
|
||||
|
||||
#include "internal.h" Include this first, after system includes.
|
||||
|
||||
#include "util.h" Any libvirt internal header files.
|
||||
#include "buf.h"
|
||||
|
||||
static myInternalFunc () The actual code.
|
||||
{
|
||||
...
|
||||
|
||||
Of particular note: *DO NOT* include libvirt/libvirt.h or
|
||||
libvirt/virterror.h. It is included by "internal.h" already and there
|
||||
are some special reasons why you cannot include these files
|
||||
explicitly.
|
||||
|
||||
|
||||
Printf-style functions
|
||||
======================
|
||||
|
||||
Whenever you add a new printf-style function, i.e., one with a format
|
||||
string argument and following "..." in its prototype, be sure to use
|
||||
gcc's printf attribute directive in the prototype. For example, here's
|
||||
the one for virAsprintf, in util.h:
|
||||
|
||||
int virAsprintf(char **strp, const char *fmt, ...)
|
||||
ATTRIBUTE_FMT_PRINTF(2, 3);
|
||||
|
||||
This makes it so gcc's -Wformat and -Wformat-security options can do
|
||||
their jobs and cross-check format strings with the number and types
|
||||
of arguments.
|
||||
|
||||
|
||||
|
||||
Libvirt committer guidelines
|
||||
============================
|
||||
|
||||
The AUTHORS files indicates the list of people with commit access right
|
||||
who can actually merge the patches.
|
||||
|
||||
The general rule for committing a patch is to make sure it has been reviewed
|
||||
properly in the mailing-list first, usually if a couple of people gave an
|
||||
ACK or +1 to a patch and nobody raised an objection on the list it should
|
||||
be good to go. If the patch touches a part of the code where you're not the
|
||||
main maintainer or not have a very clear idea of how things work, it's better
|
||||
to wait for a more authoritative feedback though. Before committing please
|
||||
also rebuild locally and run 'make check syntax-check' and make sure they
|
||||
don't raise error. Try to look for warnings too for example configure with
|
||||
--enable-compile-warnings=error
|
||||
which adds -Werror to compile flags, so no warnings get missed
|
||||
|
||||
Exceptions to that 'review and approval on the list first' is fixing failures
|
||||
to build:
|
||||
- if a recently committed patch breaks compilation on a platform
|
||||
or for a given driver then it's fine to commit a minimal fix
|
||||
directly without getting the review feedback first
|
||||
- similarly, if make check or make syntax-check breaks, if there is
|
||||
an obvious fix, it's fine to commit immediately
|
||||
The patch should still be sent to the list (or tell what the fix was if
|
||||
trivial) and 'make check syntax-check' should pass too before committing
|
||||
anything
|
||||
Similar fixes for documentation and code comments can be managed
|
||||
in the same way, but still make sure they get reviewed if non-trivial.
|
||||
93
Makefile.am
93
Makefile.am
@ -1,18 +1,61 @@
|
||||
## Process this file with automake to produce Makefile.in
|
||||
|
||||
SUBDIRS = src qemud proxy include docs @PYTHON_SUBDIR@ tests po m4 scripts
|
||||
LCOV = lcov
|
||||
GENHTML = genhtml
|
||||
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
SUBDIRS = gnulib/lib include src daemon tools proxy docs gnulib/tests \
|
||||
python tests po examples/domain-events/events-c examples/hellolibvirt \
|
||||
examples/dominfo examples/domsuspend examples/python examples/apparmor \
|
||||
examples/xml/nwfilter
|
||||
|
||||
EXTRA_DIST = libvirt.spec.in libvirt.spec COPYING.LIB \
|
||||
libvirt.pc.in libvirt.pc TODO AUTHORS ChangeLog \
|
||||
NEWS README $(man_MANS) autobuild.sh
|
||||
ACLOCAL_AMFLAGS = -I m4 -I gnulib/m4
|
||||
|
||||
man_MANS = virsh.1
|
||||
XML_EXAMPLES = \
|
||||
$(patsubst $(srcdir)/%,%,$(wildcard $(addprefix $(srcdir)/examples/xml/, \
|
||||
test/*.xml storage/*.xml)))
|
||||
|
||||
EXTRA_DIST = \
|
||||
ChangeLog-old \
|
||||
libvirt.spec libvirt.spec.in \
|
||||
mingw32-libvirt.spec.in \
|
||||
libvirt.pc libvirt.pc.in \
|
||||
autobuild.sh \
|
||||
.x-sc_avoid_ctype_macros \
|
||||
.x-sc_avoid_if_before_free \
|
||||
.x-sc_avoid_write \
|
||||
.x-sc_m4_quote_check \
|
||||
.x-sc_prohibit_asprintf \
|
||||
.x-sc_prohibit_gethostby \
|
||||
.x-sc_prohibit_gethostname \
|
||||
.x-sc_prohibit_gettext_noop \
|
||||
.x-sc_prohibit_have_config_h \
|
||||
.x-sc_prohibit_HAVE_MBRTOWC \
|
||||
.x-sc_prohibit_nonreentrant \
|
||||
.x-sc_prohibit_strcmp \
|
||||
.x-sc_prohibit_strcmp_and_strncmp \
|
||||
.x-sc_prohibit_strncpy \
|
||||
.x-sc_prohibit_test_minus_ao \
|
||||
.x-sc_prohibit_VIR_ERR_NO_MEMORY \
|
||||
.x-sc_require_config_h \
|
||||
.x-sc_require_config_h_first \
|
||||
.x-sc_trailing_blank \
|
||||
Makefile.nonreentrant \
|
||||
autogen.sh \
|
||||
examples/domain-events/events-python \
|
||||
$(XML_EXAMPLES)
|
||||
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
pkgconfig_DATA = libvirt.pc
|
||||
|
||||
NEWS: $(top_srcdir)/docs/news.xsl $(top_srcdir)/docs/news.html.in
|
||||
-@(if [ -x $(XSLTPROC) ] ; then \
|
||||
$(XSLTPROC) --nonet $(top_srcdir)/docs/news.xsl \
|
||||
$(top_srcdir)/docs/news.html.in \
|
||||
| perl -0777 -pe 's/\n\n+$$/\n/' \
|
||||
| perl -pe 's/[ \t]+$$//' \
|
||||
> $@-t && mv $@-t $@ ; fi );
|
||||
|
||||
|
||||
rpm: clean
|
||||
@(unset CDPATH ; $(MAKE) dist && rpmbuild -ta $(distdir).tar.gz)
|
||||
|
||||
@ -20,24 +63,34 @@ check-local: all tests
|
||||
|
||||
tests:
|
||||
@(cd docs/examples ; $(MAKE) MAKEFLAGS+=--silent tests)
|
||||
@(if [ "@PYTHON_SUBDIR@" != "" ] ; then cd python ; \
|
||||
@(if [ "$(pythondir)" != "" ] ; then cd python ; \
|
||||
$(MAKE) MAKEFLAGS+=--silent tests ; fi)
|
||||
|
||||
cov: cov-recursive cov-am
|
||||
cov: clean-cov
|
||||
mkdir $(top_builddir)/coverage
|
||||
$(LCOV) -c -o $(top_builddir)/coverage/libvirt.info.tmp -d $(top_srcdir)/src -d $(top_srcdir)/daemon -d $(top_srcdir)/tests
|
||||
$(LCOV) -r $(top_builddir)/coverage/libvirt.info.tmp -o $(top_builddir)/coverage/libvirt.info *usr*
|
||||
rm $(top_builddir)/coverage/libvirt.info.tmp
|
||||
$(GENHTML) -s -t "libvirt" -o $(top_builddir)/coverage --legend $(top_builddir)/coverage/libvirt.info
|
||||
|
||||
clean-cov:
|
||||
rm -rf $(top_builddir)/coverage
|
||||
cd src && $(MAKE) $(AM_MAKEFLAGS) clean-cov
|
||||
|
||||
cov-recursive:
|
||||
cd src && $(MAKE) $(AM_MAKEFLAGS) cov
|
||||
MAINTAINERCLEANFILES = .git-module-status
|
||||
|
||||
cov-am:
|
||||
rm -rf $(top_builddir)/coverage
|
||||
mkdir $(top_builddir)/coverage
|
||||
perl $(srcdir)/scripts/coverage-report.pl src/*.cov > $(top_builddir)/coverage/index.xml
|
||||
xsltproc $(srcdir)/scripts/coverage-report.xsl \
|
||||
$(top_builddir)/coverage/index.xml \
|
||||
> $(top_builddir)/coverage/index.html
|
||||
for i in $(top_builddir)/src/*.gcov ; do o=`echo $$i | sed -e 's,$(top_builddir)/src,coverage,'` ; \
|
||||
perl $(srcdir)/scripts/coverage-report-entry.pl $$i > $$o.html ; done
|
||||
# disable this check
|
||||
distuninstallcheck:
|
||||
|
||||
dist-hook: gen-ChangeLog
|
||||
|
||||
# Generate the ChangeLog file (with all entries since the switch to git)
|
||||
# and insert it into the directory we're about to use to create a tarball.
|
||||
gen_start_date = 2009-07-04
|
||||
.PHONY: gen-ChangeLog
|
||||
gen-ChangeLog:
|
||||
if test -d .git; then \
|
||||
$(top_srcdir)/build-aux/gitlog-to-changelog \
|
||||
--since=$(gen_start_date) > $(distdir)/cl-t; \
|
||||
rm -f $(distdir)/ChangeLog; \
|
||||
mv $(distdir)/cl-t $(distdir)/ChangeLog; \
|
||||
fi
|
||||
|
||||
85
Makefile.nonreentrant
Normal file
85
Makefile.nonreentrant
Normal file
@ -0,0 +1,85 @@
|
||||
|
||||
#
|
||||
# Generated by running the following on Fedora 9:
|
||||
#
|
||||
# nm -D --defined-only /lib/libc.so.6 \
|
||||
# | grep '_r$' \
|
||||
# | awk '{print $3}' \
|
||||
# | grep -v __ \
|
||||
# | grep -v qsort \ # Red herring since we don't need to pass extra args to qsort comparator
|
||||
# | grep -v readdir \ # This is safe as long as each DIR * instance is only used by one thread
|
||||
# | sort \
|
||||
# | uniq \
|
||||
# | sed -e 's/_r//'
|
||||
#
|
||||
|
||||
NON_REENTRANT =
|
||||
NON_REENTRANT += asctime
|
||||
NON_REENTRANT += ctime
|
||||
NON_REENTRANT += drand48
|
||||
NON_REENTRANT += ecvt
|
||||
NON_REENTRANT += erand48
|
||||
NON_REENTRANT += ether_aton
|
||||
NON_REENTRANT += ether_ntoa
|
||||
NON_REENTRANT += fcvt
|
||||
NON_REENTRANT += fgetgrent
|
||||
NON_REENTRANT += fgetpwent
|
||||
NON_REENTRANT += fgetspent
|
||||
NON_REENTRANT += getaliasbyname
|
||||
NON_REENTRANT += getaliasent
|
||||
NON_REENTRANT += getdate
|
||||
NON_REENTRANT += getgrent
|
||||
NON_REENTRANT += getgrgid
|
||||
NON_REENTRANT += getgrnam
|
||||
NON_REENTRANT += gethostbyaddr
|
||||
NON_REENTRANT += gethostbyname2
|
||||
NON_REENTRANT += gethostbyname
|
||||
NON_REENTRANT += gethostent
|
||||
NON_REENTRANT += getlogin
|
||||
NON_REENTRANT += getmntent
|
||||
NON_REENTRANT += getnetbyaddr
|
||||
NON_REENTRANT += getnetbyname
|
||||
NON_REENTRANT += getnetent
|
||||
NON_REENTRANT += getnetgrent
|
||||
NON_REENTRANT += getprotobyname
|
||||
NON_REENTRANT += getprotobynumber
|
||||
NON_REENTRANT += getprotoent
|
||||
NON_REENTRANT += getpwent
|
||||
NON_REENTRANT += getpwnam
|
||||
NON_REENTRANT += getpwuid
|
||||
NON_REENTRANT += getrpcbyname
|
||||
NON_REENTRANT += getrpcbynumber
|
||||
NON_REENTRANT += getrpcent
|
||||
NON_REENTRANT += getservbyname
|
||||
NON_REENTRANT += getservbyport
|
||||
NON_REENTRANT += getservent
|
||||
NON_REENTRANT += getspent
|
||||
NON_REENTRANT += getspnam
|
||||
NON_REENTRANT += getutent
|
||||
NON_REENTRANT += getutid
|
||||
NON_REENTRANT += getutline
|
||||
NON_REENTRANT += gmtime
|
||||
NON_REENTRANT += hcreate
|
||||
NON_REENTRANT += hdestroy
|
||||
NON_REENTRANT += hsearch
|
||||
NON_REENTRANT += initstate
|
||||
NON_REENTRANT += jrand48
|
||||
NON_REENTRANT += lcong48
|
||||
NON_REENTRANT += localtime
|
||||
NON_REENTRANT += lrand48
|
||||
NON_REENTRANT += mrand48
|
||||
NON_REENTRANT += nrand48
|
||||
NON_REENTRANT += ptsname
|
||||
NON_REENTRANT += qecvt
|
||||
NON_REENTRANT += qfcvt
|
||||
NON_REENTRANT += random
|
||||
NON_REENTRANT += rand
|
||||
NON_REENTRANT += seed48
|
||||
NON_REENTRANT += setstate
|
||||
NON_REENTRANT += sgetspent
|
||||
NON_REENTRANT += srand48
|
||||
NON_REENTRANT += srandom
|
||||
NON_REENTRANT += strerror
|
||||
NON_REENTRANT += strtok
|
||||
NON_REENTRANT += tmpnam
|
||||
NON_REENTRANT += ttyname
|
||||
385
NEWS
385
NEWS
@ -1,385 +0,0 @@
|
||||
|
||||
NEWS file for libvirt
|
||||
|
||||
Note that this is automatically generated from the news webpage at:
|
||||
http://libvirt.org/news.html
|
||||
|
||||
Releases
|
||||
0.3.1: Jul 24 2007:
|
||||
- Documentation: index to remote page, script to test certificates,
|
||||
IPv6 remote support docs (Daniel Berrange), document
|
||||
VIRSH_DEFAULT_CONNECT_URI in virsh man page (David Lutterkort),
|
||||
Relax-NG early grammar for the network XML (David Lutterkort)
|
||||
- Bug fixes: leaks in disk XML parsing (Masayuki Sunou), hypervisor
|
||||
alignment call problems on PPC64 (Christian Ehrhardt), dead client
|
||||
registration in daemon event loop (Daniel Berrange), double free
|
||||
in error handling (Daniel Berrange), close on exec for log file
|
||||
descriptors in the daemon (Daniel Berrange), avoid caching problem
|
||||
in remote daemon (Daniel Berrange), avoid crash after QEmu domain
|
||||
failure (Daniel Berrange)
|
||||
- Improvements: checks of x509 certificates and keys (Daniel Berrange),
|
||||
error reports in the daemon (Daniel Berrange), checking of Ethernet MAC
|
||||
addresses in XML configs (Masayuki Sunou), support for a new
|
||||
clock switch between UTC and localtime (Daniel Berrange), early
|
||||
version of OpenVZ support (Shuveb Hussain), support for input devices
|
||||
on PS/2 and USB buses (Daniel Berrange), more tests especially
|
||||
the QEmu support (Daniel Berrange), range check in credit scheduler
|
||||
(with Saori Fukuta and Atsushi Sakai), add support for listen VNC
|
||||
parameter un QEmu and fix command line arg (Daniel Berrange)
|
||||
- Cleanups: debug tracing (Richard Jones), removal of --with-qemud-pid-file
|
||||
(Richard Jones), remove unused virDeviceMode, new util module for
|
||||
code shared between drivers (Shuveb Hussain), xen header location
|
||||
detection (Richard Jones)
|
||||
|
||||
|
||||
0.3.0: Jul 9 2007:
|
||||
- Secure Remote support (Richard Jones).
|
||||
See the remote page
|
||||
of the documentation
|
||||
|
||||
- Documentation: remote support (Richard Jones), description of
|
||||
the URI connection strings (Richard Jones), update of virsh man
|
||||
page, matrix of libvirt API/hypervisor support with version
|
||||
informations (Richard Jones)
|
||||
- Bug fixes: examples Makefile.am generation (Richard Jones),
|
||||
SetMem fix (Mark Johnson), URI handling and ordering of
|
||||
drivers (Daniel Berrange), fix virsh help without hypervisor (Richard
|
||||
Jones), id marshalling fix (Daniel Berrange), fix virConnectGetMaxVcpus
|
||||
on remote (Richard Jones), avoid a realloc leak (Jim Meyering), scheduler
|
||||
parameters handling for Xen (Richard Jones), various early remote
|
||||
bug fixes (Richard Jones), remove virsh leaks of domains references
|
||||
(Masayuki Sunou), configCache refill bug (Richard Jones), fix
|
||||
XML serialization bugs
|
||||
- Improvements: QEmu switch to XDR-based protocol (Dan Berrange),
|
||||
device attach/detach commands (Masayuki Sunou), OCaml bindings
|
||||
(Richard Jones), new entry points virDomainGetConnect and
|
||||
virNetworkGetConnect useful for bindings (Richard Jones),
|
||||
reunitifaction of remote and qemu daemon under a single libvirtd
|
||||
with a config file (Daniel Berrange)
|
||||
- Cleanups: parsing of connection URIs (Richard Jones), messages
|
||||
from virsh (Saori Fukuta), Coverage files (Daniel Berrange),
|
||||
Solaris fixes (Mark Johnson), avoid [r]index calls (Richard Jones),
|
||||
release information in Xen backend, virsh cpupin command cleanups
|
||||
(Masayuki Sunou), xen:/// suppport as standard Xen URI (Richard Jones and
|
||||
Daniel Berrange), improve driver selection/decline mechanism (Richard
|
||||
Jones), error reporting on XML dump (Richard Jones), Remove unused
|
||||
virDomainKernel structure (Richard Jones), daemon event loop event
|
||||
handling (Daniel Berrange), various unifications cleanup in the daemon
|
||||
merging (Daniel Berrange), internal file and timer monitoring API
|
||||
(Daniel Berrange), remove libsysfs dependancy, call brctl program
|
||||
directly (Daniel Berrange), virBuffer functions cleanups (Richard Jones),
|
||||
make init script LSB compliant, error handling on lookup functions
|
||||
(Richard Jones), remove internal virGetDomainByID (Richard Jones),
|
||||
revamp of xen subdrivers interfaces (Richard Jones)
|
||||
- Localization updates
|
||||
|
||||
|
||||
0.2.3: Jun 8 2007:
|
||||
- Documentation: documentation for upcoming remote access (Richard Jones),
|
||||
virConnectNumOfDefinedDomains doc (Jan Michael), virsh help messages
|
||||
for dumpxml and net-dumpxml (Chris Wright),
|
||||
- Bug fixes: RelaxNG schemas regexp fix (Robin Green), RelaxNG arch bug
|
||||
(Mark McLoughlin), large buffers bug fixes (Shigeki Sakamoto), error
|
||||
on out of memory condition (Shigeki Sakamoto), virshStrdup fix, non-root
|
||||
driver when using Xen bug (Richard Jones), use --strict-order when
|
||||
running dnsmasq (Daniel Berrange), virbr0 weirdness on restart (Mark
|
||||
McLoughlin), keep connection error messages (Richard Jones), increase
|
||||
QEmu read buffer on help (Daniel Berrange), rpm dependance on
|
||||
dnsmasq (Daniel Berrange), fix XML boot device syntax (Daniel Berrange),
|
||||
QEmu memory bug (Daniel Berrange), memory leak fix (Masayuki Sunou),
|
||||
fix compiler flags (Richard Jones), remove type ioemu on recent Xen
|
||||
HVM for paravirt drivers (Saori Fukuta), uninitialized string bug
|
||||
(Masayuki Sunou), allow init even if the daemon is not running,
|
||||
XML to config fix (Daniel Berrange)
|
||||
- Improvements: add a special error class for the test module (Richard
|
||||
Jones), virConnectGetCapabilities on proxy (Richard Jones), allow
|
||||
network driver to decline usage (Richard Jones), extend error messages
|
||||
for upcoming remote access (Richard Jones), on_reboot support for QEmu
|
||||
(Daniel Berrange), save daemon output in a log file (Daniel Berrange),
|
||||
xenXMDomainDefineXML can override guest config (Hugh Brock),
|
||||
add attach-device and detach-device commands to virsh (Masayuki Sunou
|
||||
and Mark McLoughlin and Richard Jones), make virGetVersion case
|
||||
insensitive and Python bindings (Richard Jones), new scheduler API
|
||||
(Atsushi SAKAI), localizations updates, add logging option for virsh
|
||||
(Nobuhiro Itou), allow arguments to be passed to bootloader (Hugh Brock),
|
||||
increase the test suite (Daniel Berrange and Hugh Brock)
|
||||
- Cleanups: Remove VIR_DRV_OPEN_QUIET (Richard Jones), disable xm_internal.c
|
||||
for Xen > 3.0.3 (Daniel Berrange), unused fields in _virDomain (Richard
|
||||
Jones), export __virGetDomain and __virGetNetwork for libvirtd only
|
||||
(Richard Jones), ignore old VNC config for HVM on recent Xen (Daniel
|
||||
Berrange), various code cleanups, -Werror cleanup (Hugh Brock)
|
||||
|
||||
|
||||
0.2.2: Apr 17 2007:
|
||||
- Documentation: fix errors due to Amaya (with Simon Hernandez),
|
||||
virsh uses kB not bytes (Atsushi SAKAI), add command line help to
|
||||
qemud (Richard Jones), xenUnifiedRegister docs (Atsushi SAKAI),
|
||||
strings typos (Nikolay Sivov), ilocalization probalem raised by
|
||||
Thomas Canniot
|
||||
- Bug fixes: virsh memory values test (Masayuki Sunou), operations without
|
||||
libvirt_qemud (Atsushi SAKAI), fix spec file (Florian La Roche, Jeremy
|
||||
Katz, Michael Schwendt),
|
||||
direct hypervisor call (Atsushi SAKAI), buffer overflow on qemu
|
||||
networking command (Daniel Berrange), buffer overflow in quemud (Daniel
|
||||
Berrange), virsh vcpupin bug (Masayuki Sunou), host PAE detections
|
||||
and strcuctures size (Richard Jones), Xen PAE flag handling (Daniel
|
||||
Berrange), bridged config configuration (Daniel Berrange), erroneous
|
||||
XEN_V2_OP_SETMAXMEM value (Masayuki Sunou), memory free error (Mark
|
||||
McLoughlin), set VIR_CONNECT_RO on read-only connections (S.Sakamoto),
|
||||
avoid memory explosion bug (Daniel Berrange), integer overflow
|
||||
for qemu CPU time (Daniel Berrange), QEMU binary path check (Daniel
|
||||
Berrange)
|
||||
- Cleanups: remove some global variables (Jim Meyering), printf-style
|
||||
functions checks (Jim Meyering), better virsh error messages, increase
|
||||
compiler checkings and security (Daniel Berrange), virBufferGrow usage
|
||||
and docs, use calloc instead of malloc/memset, replace all sprintf by
|
||||
snprintf, avoid configure clobbering user's CTAGS (Jim Meyering),
|
||||
signal handler error cleanup (Richard Jones), iptables internal code
|
||||
claenup (Mark McLoughlin), unified Xen driver (Richard Jones),
|
||||
cleanup XPath libxml2 calls, IPTables rules tightening (Daniel
|
||||
Berrange),
|
||||
- Improvements: more regression tests on XML (Daniel Berrange), Python
|
||||
bindings now generate exception in error cases (Richard Jones),
|
||||
Python bindings for vir*GetAutoStart (Daniel Berrange),
|
||||
handling of CD-Rom device without device name (Nobuhiro Itou),
|
||||
fix hypervisor call to work with Xen 3.0.5 (Daniel Berrange),
|
||||
DomainGetOSType for inactive domains (Daniel Berrange), multiple boot
|
||||
devices for HVM (Daniel Berrange),
|
||||
|
||||
|
||||
|
||||
0.2.1: Mar 16 2007:
|
||||
- Various internal cleanups (Richard Jones,Daniel Berrange,Mark McLoughlin)
|
||||
- Bug fixes: libvirt_qemud daemon path (Daniel Berrange), libvirt
|
||||
config directory (Daniel Berrange and Mark McLoughlin), memory leak
|
||||
in qemud (Mark), various fixes on network support (Mark), avoid Xen
|
||||
domain zombies on device hotplug errors (Daniel Berrange), various
|
||||
fixes on qemud (Mark), args parsing (Richard Jones), virsh -t argument
|
||||
(Saori Fukuta), avoid virsh crash on TAB key (Daniel Berrange), detect
|
||||
xend operation failures (Kazuki Mizushima), don't listen on null socket
|
||||
(Rich Jones), read-only socket cleanup (Rich Jones), use of vnc port 5900
|
||||
(Nobuhiro Itou), assorted networking fixes (Daniel Berrange), shutoff and
|
||||
shutdown mismatches (Kazuki Mizushima), unlimited memory handling
|
||||
(Atsushi SAKAI), python binding fixes (Tatsuro Enokura)
|
||||
- Build and portability fixes: IA64 fixes (Atsushi SAKAI), dependancies
|
||||
and build (Daniel Berrange), fix xend port detection (Daniel
|
||||
Berrange), icompile time warnings (Mark), avoid const related
|
||||
compiler warnings (Daniel Berrange), automated builds (Daniel
|
||||
Berrange), pointer/int mismatch (Richard Jones), configure time
|
||||
selection of drivers, libvirt spec hacking (Daniel Berrange)
|
||||
- Add support for network autostart and init scripts (Mark McLoughlin)
|
||||
- New API virConnectGetCapabilities() to detect the virtualization
|
||||
capabilities of a host (Richard Jones)
|
||||
- Minor improvements: qemud signal handling (Mark), don't shutdown or reboot
|
||||
domain0 (Kazuki Mizushima), QEmu version autodetection (Daniel Berrange),
|
||||
network UUIDs (Mark), speed up UUID domain lookups (Tatsuro Enokura and
|
||||
Daniel Berrange), support for paused QEmu CPU (Daniel Berrange), keymap
|
||||
VNC attribute support (Takahashi Tomohiro and Daniel Berrange), maximum
|
||||
number of virtual CPU (Masayuki Sunou), virtsh --readonly option (Rich
|
||||
Jones), python bindings for new functions (Daniel Berrange)
|
||||
- Documentation updates especially on the XML formats
|
||||
|
||||
|
||||
0.2.0: Feb 14 2007:
|
||||
- Various internal cleanups (Mark McLoughlin, Richard Jones,
|
||||
Daniel Berrange, Karel Zak)
|
||||
- Bug fixes: avoid a crash in connect (Daniel Berrange), virsh args
|
||||
parsing (Richard Jones)
|
||||
- Add support for QEmu and KVM virtualization (Daniel Berrange)
|
||||
- Add support for network configuration (Mark McLoughlin)
|
||||
- Minor improvements: regression testing (Daniel Berrange),
|
||||
localization string updates
|
||||
|
||||
|
||||
0.1.11: Jan 22 2007:
|
||||
- Finish XML <-> XM config files support
|
||||
- Remove memory leak when freeing virConf objects
|
||||
- Finishing inactive domain support (Daniel Berrange)
|
||||
- Added a Relax-NG schemas to check XML instances
|
||||
|
||||
|
||||
0.1.10: Dec 20 2006:
|
||||
- more localizations
|
||||
- bug fixes: VCPU info breakages on xen 3.0.3, xenDaemonListDomains buffer overflow (Daniel Berrange), reference count bug when creating Xen domains (Daniel Berrange).
|
||||
- improvements: support graphic framebuffer for Xen paravirt (Daniel Berrange), VNC listen IP range support (Daniel Berrange), support for default Xen config files and inactive domains of 3.0.4 (Daniel Berrange).
|
||||
|
||||
|
||||
0.1.9: Nov 29 2006:
|
||||
- python bindings: release interpeter lock when calling C (Daniel Berrange)
|
||||
- don't raise HTTP error when looking informations for a domain
|
||||
- some refactoring to use the driver for all entry points
|
||||
- better error reporting (Daniel Berrange)
|
||||
- fix OS reporting when running as non-root
|
||||
- provide XML parsing errors
|
||||
- extension of the test framework (Daniel Berrange)
|
||||
- fix the reconnect regression test
|
||||
- python bindings: Domain instances now link to the Connect to avoid garbage collection and disconnect
|
||||
- separate the notion of maximum memory and current use at the XML level
|
||||
- Fix a memory leak (Daniel Berrange)
|
||||
- add support for shareable drives
|
||||
- add support for non-bridge style networking configs for guests(Daniel Berrange)
|
||||
- python bindings: fix unsigned long marshalling (Daniel Berrange)
|
||||
- new config APIs virConfNew() and virConfSetValue() to build configs from scratch
|
||||
- hot plug device support based on Michel Ponceau patch
|
||||
- added support for inactive domains, new APIs, various associated cleanup (Daniel Berrange)
|
||||
- special device model for HVM guests (Daniel Berrange)
|
||||
- add API to dump core of domains (but requires a patched xend)
|
||||
- pygrub bootloader informations take over <os> informations
|
||||
- updated the localization strings
|
||||
|
||||
|
||||
0.1.8: Oct 16 2006:
|
||||
- Bug for system with page size != 4k
|
||||
- vcpu number initialization (Philippe Berthault)
|
||||
- don't label crashed domains as shut off (Peter Vetere)
|
||||
- fix virsh man page (Noriko Mizumoto)
|
||||
- blktapdd support for alternate drivers like blktap (Daniel Berrange)
|
||||
- memory leak fixes (xend interface and XML parsing) (Daniel Berrange)
|
||||
- compile fix
|
||||
- mlock/munlock size fixes (Daniel Berrange)
|
||||
- improve error reporting
|
||||
|
||||
|
||||
0.1.7: Sep 29 2006:
|
||||
- fix a memory bug on getting vcpu informations from xend (Daniel Berrange)
|
||||
- fix another problem in the hypercalls change in Xen changeset
|
||||
86d26e6ec89b when getting domain informations (Daniel Berrange)
|
||||
|
||||
|
||||
0.1.6: Sep 22 2006:
|
||||
- Support for localization of strings using gettext (Daniel Berrange)
|
||||
- Support for new Xen-3.0.3 cdrom and disk configuration (Daniel Berrange)
|
||||
- Support for setting VNC port when creating domains with new
|
||||
xend config files (Daniel Berrange)
|
||||
- Fix bug when running against xen-3.0.2 hypercalls (Jim Fehlig)
|
||||
- Fix reconnection problem when talking directly to http xend
|
||||
|
||||
|
||||
0.1.5: Sep 5 2006:
|
||||
- Support for new hypercalls change in Xen changeset 86d26e6ec89b
|
||||
- bug fixes: virParseUUID() was wrong, netwoking for paravirt guestsi
|
||||
(Daniel Berrange), virsh on non-existent domains (Daniel Berrange),
|
||||
string cast bug when handling error in python (Pete Vetere), HTTP
|
||||
500 xend error code handling (Pete Vetere and Daniel Berrange)
|
||||
- improvements: test suite for SEXPR <-> XML format conversions (Daniel
|
||||
Berrange), virsh output regression suite (Daniel Berrange), new environ
|
||||
variable VIRSH_DEFAULT_CONNECT_URI for the default URI when connecting
|
||||
(Daniel Berrange), graphical console support for paravirt guests
|
||||
(Jeremy Katz), parsing of simple Xen config files (with Daniel Berrange),
|
||||
early work on defined (not running) domains (Daniel Berrange),
|
||||
virsh output improvement (Daniel Berrange
|
||||
|
||||
|
||||
0.1.4: Aug 16 2006:
|
||||
- bug fixes: spec file fix (Mark McLoughlin), error report problem (with
|
||||
Hugh Brock), long integer in Python bindings (with Daniel Berrange), XML
|
||||
generation bug for CDRom (Daniel Berrange), bug whem using number() XPath
|
||||
function (Mark McLoughlin), fix python detection code, remove duplicate
|
||||
initialization errors (Daniel Berrange)
|
||||
- improvements: UUID in XML description (Peter Vetere), proxy code
|
||||
cleanup, virtual CPU and affinity support + virsh support (Michel
|
||||
Ponceau, Philippe Berthault, Daniel Berrange), port and tty informations
|
||||
for console in XML (Daniel Berrange), added XML dump to driver and proxy
|
||||
support (Daniel Berrange), extention of boot options with support for
|
||||
floppy and cdrom (Daniel Berrange), features block in XML to report/ask
|
||||
PAE, ACPI, APIC for HVM domains (Daniel Berrange), fail saide-effect
|
||||
operations when using read-only connection, large improvements to test
|
||||
driver (Daniel Berrange)
|
||||
- documentation: spelling (Daniel Berrange), test driver examples.
|
||||
|
||||
|
||||
0.1.3: Jul 11 2006:
|
||||
- bugfixes: build as non-root, fix xend access when root, handling of
|
||||
empty XML elements (Mark McLoughlin), XML serialization and parsing fixes
|
||||
(Mark McLoughlin), allow to create domains without disk (Mark
|
||||
McLoughlin),
|
||||
- improvement: xenDaemonLookupByID from O(n^2) to O(n) (Daniel Berrange),
|
||||
support for fully virtualized guest (Jim Fehlig, DV, Mark McLoughlin)
|
||||
- documentation: augmented to cover hvm domains
|
||||
|
||||
|
||||
0.1.2: Jul 3 2006:
|
||||
- headers include paths fixup
|
||||
- proxy mechanism for unpriviledged read-only access by httpu
|
||||
|
||||
|
||||
0.1.1: Jun 21 2006:
|
||||
- building fixes: ncurses fallback (Jim Fehlig), VPATH builds (Daniel P.
|
||||
Berrange)
|
||||
- driver cleanups: new entry points, cleanup of libvirt.c (with Daniel P.
|
||||
Berrange)
|
||||
- Cope with API change introduced in Xen changeset 10277
|
||||
- new test driver for regression checks (Daniel P. Berrange)
|
||||
- improvements: added UUID to XML serialization, buffer usage (Karel
|
||||
Zak), --connect argument to virsh (Daniel P. Berrange),
|
||||
- bug fixes: uninitialized memory access in error reporting, S-Expr
|
||||
parsing (Jim Fehlig, Jeremy Katz), virConnectOpen bug, remove a TODO in
|
||||
xs_internal.c
|
||||
- documentation: Python examples (David Lutterkort), new Perl binding
|
||||
URL, man page update (Karel Zak)
|
||||
|
||||
|
||||
0.1.0: Apr 10 2006:
|
||||
- building fixes: --with-xen-distdir option (Ronald Aigner), out of tree
|
||||
build and pkginfo cflag fix (Daniel Berrange)
|
||||
- enhancement and fixes of the XML description format (David Lutterkort
|
||||
and Jim Fehlig)
|
||||
- new APIs: for Node information and Reboot
|
||||
- internal code cleanup: refactoring internals into a driver model, more
|
||||
error handling, structure sharing, thread safety and ref counting
|
||||
- bug fixes: error message (Jim Meyering), error allocation in virsh (Jim
|
||||
Meyering), virDomainLookupByID (Jim Fehlig),
|
||||
- documentation: updates on architecture, and format, typo fix (Jim
|
||||
Meyering)
|
||||
- bindings: exception handling in examples (Jim Meyering), perl ones out
|
||||
of tree (Daniel Berrange)
|
||||
- virsh: more options, create, nodeinfo (Karel Zak), renaming of some
|
||||
options (Karel Zak), use stderr only for errors (Karel Zak), man page
|
||||
(Andrew Puch)
|
||||
|
||||
|
||||
0.0.6: Feb 28 2006:
|
||||
- add UUID lookup and extract API
|
||||
- add error handling APIs both synchronous and asynchronous
|
||||
- added minimal hook for error handling at the python level, improved the
|
||||
python bindings
|
||||
- augment the documentation and tests to cover error handling
|
||||
|
||||
|
||||
0.0.5: Feb 23 2006:
|
||||
- Added XML description parsing, dependance to libxml2, implemented the
|
||||
creation API virDomainCreateLinux()
|
||||
- new APIs to lookup and name domain by UUID
|
||||
- fixed the XML dump when using the Xend access
|
||||
- Fixed a few more problem related to the name change
|
||||
- Adding regression tests in python and examples in C
|
||||
- web site improvement, extended the documentation to cover the XML
|
||||
format and Python API
|
||||
- Added devhelp help for Gnome/Gtk programmers
|
||||
|
||||
|
||||
0.0.4: Feb 10 2006:
|
||||
- Fix various bugs introduced in the name change
|
||||
|
||||
|
||||
0.0.3: Feb 9 2006:
|
||||
- Switch name from from 'libvir' to libvirt
|
||||
- Starting infrastructure to add code examples
|
||||
- Update of python bindings for completeness
|
||||
|
||||
|
||||
0.0.2: Jan 29 2006:
|
||||
- Update of the documentation, web site redesign (Diana Fong)
|
||||
- integration of HTTP xend RPC based on libxend by Anthony Liquori for
|
||||
most operations
|
||||
- Adding Save and Restore APIs
|
||||
- extended the virsh command line tool (Karel Zak)
|
||||
- remove xenstore transactions (Anthony Liguori)
|
||||
- fix the Python bindings bug when domain and connections where freed
|
||||
|
||||
|
||||
0.0.1: Dec 19 2005:
|
||||
- First release
|
||||
- Basic management of existing Xen domains
|
||||
- Minimal autogenerated Python bindings
|
||||
|
||||
4
README
4
README
@ -1,11 +1,11 @@
|
||||
|
||||
LibVirt : simple API for virtualization
|
||||
|
||||
Libvirt is a C toolkit to interract with the virtualization capabilities
|
||||
Libvirt is a C toolkit to interact with the virtualization capabilities
|
||||
of recent versions of Linux (and other OSes). It is free software
|
||||
available under the GNU Lesser General Public License. Virtualization of
|
||||
the Linux Operating System means the ability to run multiple instances of
|
||||
Operating Systems concurently on a single hardware system where the basic
|
||||
Operating Systems concurrently on a single hardware system where the basic
|
||||
resources are driven by a Linux instance. The library aim at providing
|
||||
long term stable C API initially for the Xen paravirtualization but
|
||||
should be able to integrate other virtualization mechanisms if needed.
|
||||
|
||||
57
README-hacking
Normal file
57
README-hacking
Normal file
@ -0,0 +1,57 @@
|
||||
-*- outline -*-
|
||||
|
||||
These notes intend to help people working on the checked-out sources.
|
||||
These requirements do not apply when building from a distribution tarball.
|
||||
See also HACKING for more detailed libvirt contribution guidelines.
|
||||
|
||||
* Requirements
|
||||
|
||||
We've opted to keep only the highest-level sources in the GIT repository.
|
||||
This eases our maintenance burden, (fewer merges etc.), but imposes more
|
||||
requirements on anyone wishing to build from the just-checked-out sources.
|
||||
Note the requirements to build the released archive are much less and
|
||||
are just the requirements of the standard ./configure && make procedure.
|
||||
Specific development tools and versions will be checked for and listed by
|
||||
the bootstrap script.
|
||||
|
||||
Valgrind <http://valgrind.org/> is also highly recommended, if
|
||||
Valgrind supports your architecture. See also README-valgrind.
|
||||
|
||||
While building from a just-cloned source tree may require installing a
|
||||
few prerequisites, later, a plain `git pull && make' should be sufficient.
|
||||
|
||||
* First GIT checkout
|
||||
|
||||
You can get a copy of the source repository like this:
|
||||
|
||||
$ git clone git://libvirt.org/libvirt
|
||||
$ cd libvirt
|
||||
|
||||
As an optional step, if you already have a copy of the gnulib git
|
||||
repository on your hard drive, then you can use it as a reference to
|
||||
reduce download time and disk space requirements:
|
||||
|
||||
$ export GNULIB_SRCDIR=/path/to/gnulib
|
||||
|
||||
The next step is to get all required pieces from gnulib,
|
||||
to run autoreconf, and to invoke ./configure:
|
||||
|
||||
$ ./autogen.sh
|
||||
|
||||
And there you are! Just
|
||||
|
||||
$ make
|
||||
$ make check
|
||||
|
||||
At this point, there should be no difference between your local copy,
|
||||
and the GIT master copy:
|
||||
|
||||
$ git diff
|
||||
|
||||
should output no difference.
|
||||
|
||||
Enjoy!
|
||||
|
||||
Local Variables:
|
||||
indent-tabs-mode: nil
|
||||
End:
|
||||
32
RENAMES
32
RENAMES
@ -1,32 +0,0 @@
|
||||
# Suggested list of file renames.
|
||||
#
|
||||
# File renames don't normally go into patches because they make
|
||||
# the patches much harder to read, so list them here instead.
|
||||
#
|
||||
# $Id$
|
||||
|
||||
# Clearer naming scheme after Xen-unified patch went in.
|
||||
src/xen_internal.c src/xen_internal_hv.c
|
||||
src/xen_internal.h src/xen_internal_hv.h
|
||||
src/proxy_internal.c src/xen_internal_proxy.c
|
||||
src/proxy_internal.h src/xen_internal_proxy.h
|
||||
src/xend_internal.c src/xen_internal_xend.c
|
||||
src/xend_internal.h src/xen_internal_xend.h
|
||||
src/xm_internal.c src/xen_internal_inactive.c
|
||||
src/xm_internal.h src/xen_internal_inactive.h
|
||||
src/xs_internal.c src/xen_internal_xenstore.c
|
||||
src/xs_internal.h src/xen_internal_xenstore.h
|
||||
src/xen_unified.c src/xen_internal.c
|
||||
src/xen_unified.h src/xen_internal.h
|
||||
|
||||
# Test driver should really be called test_internal.
|
||||
src/test.c src/test_internal.c
|
||||
src/test.h src/test_internal.h
|
||||
|
||||
# This would be better:
|
||||
src/*_internal*.c src/*_driver*.c
|
||||
src/*_internal*.h src/*_driver*.h
|
||||
|
||||
# Qemud is now the qemud + remote driver.
|
||||
qemud/protocol.x qemud/qemud_protocol.x
|
||||
qemud/* remote/*
|
||||
71
acinclude.m4
71
acinclude.m4
@ -13,27 +13,33 @@ AC_DEFUN([LIBVIRT_COMPILE_WARNINGS],[
|
||||
dnl ******************************
|
||||
|
||||
AC_ARG_ENABLE(compile-warnings,
|
||||
AC_HELP_STRING([--enable-compile-warnings=@<:@no/minimum/yes/maximum/error@:>@],
|
||||
[Turn on compiler warnings]),,
|
||||
[AC_HELP_STRING([--enable-compile-warnings=@<:@no/minimum/yes/maximum/error@:>@],
|
||||
[Turn on compiler warnings])],,
|
||||
[enable_compile_warnings="m4_default([$1],[maximum])"])
|
||||
|
||||
warnCFLAGS=
|
||||
|
||||
try_compiler_flags="-Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fasynchronous-unwind-tables"
|
||||
common_flags=
|
||||
common_flags="$common_flags -Wp,-D_FORTIFY_SOURCE=2"
|
||||
common_flags="$common_flags -fexceptions"
|
||||
common_flags="$common_flags -fasynchronous-unwind-tables"
|
||||
common_flags="$common_flags -fdiagnostics-show-option"
|
||||
|
||||
case "$enable_compile_warnings" in
|
||||
no)
|
||||
try_compiler_flags=""
|
||||
;;
|
||||
minimum)
|
||||
try_compiler_flags="$try_compiler_flags -Wall"
|
||||
try_compiler_flags="-Wall -Wformat -Wformat-security $common_flags"
|
||||
;;
|
||||
yes)
|
||||
try_compiler_flags="$try_compiler_flags -Wall -Wmissing-prototypes"
|
||||
try_compiler_flags="-Wall -Wformat -Wformat-security -Wmissing-prototypes $common_flags"
|
||||
;;
|
||||
maximum|error)
|
||||
try_compiler_flags="$try_compiler_flags -Wall -Wmissing-prototypes -Wnested-externs -Wpointer-arith"
|
||||
try_compiler_flags="-Wall -Wformat -Wformat-security -Wmissing-prototypes -Wnested-externs -Wpointer-arith"
|
||||
try_compiler_flags="$try_compiler_flags -Wextra -Wshadow -Wcast-align -Wwrite-strings -Waggregate-return"
|
||||
try_compiler_flags="$try_compiler_flags -Wstrict-prototypes -Winline -Wredundant-decls -Wno-sign-compare"
|
||||
try_compiler_flags="$try_compiler_flags $common_flags"
|
||||
if test "$enable_compile_warnings" = "error" ; then
|
||||
try_compiler_flags="$try_compiler_flags -Werror"
|
||||
fi
|
||||
@ -43,21 +49,9 @@ AC_DEFUN([LIBVIRT_COMPILE_WARNINGS],[
|
||||
;;
|
||||
esac
|
||||
|
||||
compiler_flags=
|
||||
COMPILER_FLAGS=
|
||||
for option in $try_compiler_flags; do
|
||||
SAVE_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS $option"
|
||||
AC_MSG_CHECKING([whether gcc understands $option])
|
||||
AC_TRY_COMPILE([], [],
|
||||
has_option=yes,
|
||||
has_option=no,)
|
||||
CFLAGS="$SAVE_CFLAGS"
|
||||
AC_MSG_RESULT($has_option)
|
||||
if test $has_option = yes; then
|
||||
compiler_flags="$compiler_flags $option"
|
||||
fi
|
||||
unset has_option
|
||||
unset SAVE_CFLAGS
|
||||
gl_COMPILER_FLAGS($option)
|
||||
done
|
||||
unset option
|
||||
unset try_compiler_flags
|
||||
@ -83,6 +77,39 @@ AC_DEFUN([LIBVIRT_COMPILE_WARNINGS],[
|
||||
fi
|
||||
AC_MSG_RESULT($complCFLAGS)
|
||||
|
||||
WARN_CFLAGS="$compiler_flags $complCFLAGS"
|
||||
AC_SUBST(WARN_CFLAGS)
|
||||
WARN_CFLAGS="$COMPILER_FLAGS $complCFLAGS"
|
||||
WARN_LDFLAGS=$WARN_CFLAGS
|
||||
AC_SUBST([WARN_CFLAGS])
|
||||
AC_SUBST([WARN_LDFLAGS])
|
||||
|
||||
dnl Needed to keep compile quiet on python 2.4
|
||||
COMPILER_FLAGS=
|
||||
gl_COMPILER_FLAGS(-Wno-redundant-decls)
|
||||
WARN_PYTHON_CFLAGS=$COMPILER_FLAGS
|
||||
AC_SUBST(WARN_PYTHON_CFLAGS)
|
||||
])
|
||||
|
||||
|
||||
dnl
|
||||
dnl To support the old pkg-config from RHEL4 vintage, we need
|
||||
dnl to define the PKG_PROG_PKG_CONFIG macro if its not already
|
||||
dnl present
|
||||
m4_ifndef([PKG_PROG_PKG_CONFIG],
|
||||
[AC_DEFUN([PKG_PROG_PKG_CONFIG],
|
||||
[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
|
||||
m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
|
||||
AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl
|
||||
if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
|
||||
AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
|
||||
fi
|
||||
if test -n "$PKG_CONFIG"; then
|
||||
_pkg_min_version=m4_default([$1], [0.9.0])
|
||||
AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
|
||||
if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
|
||||
AC_MSG_RESULT([yes])
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
PKG_CONFIG=""
|
||||
fi
|
||||
fi[]dnl
|
||||
])])
|
||||
|
||||
79
autobuild.sh
79
autobuild.sh
@ -5,7 +5,8 @@ set -v
|
||||
|
||||
# Make things clean.
|
||||
|
||||
test -n "$1" && RESULTS="$1" || RESULTS="results.log"
|
||||
test -n "$1" && RESULTS=$1 || RESULTS=results.log
|
||||
: ${AUTOBUILD_INSTALL_ROOT=$HOME/builder}
|
||||
|
||||
test -f Makefile && make -k distclean || :
|
||||
rm -rf coverage
|
||||
@ -14,26 +15,88 @@ rm -rf coverage
|
||||
#mkdir build
|
||||
#cd build
|
||||
|
||||
./autogen.sh --prefix=$AUTOBUILD_INSTALL_ROOT \
|
||||
./autogen.sh --prefix="$AUTOBUILD_INSTALL_ROOT" \
|
||||
--enable-test-coverage \
|
||||
--enable-compile-warnings=error
|
||||
--enable-compile-warnings=error \
|
||||
--with-xen-proxy
|
||||
|
||||
# If the MAKEFLAGS envvar does not yet include a -j option,
|
||||
# add -jN where N depends on the number of processors.
|
||||
case $MAKEFLAGS in
|
||||
*-j*) ;;
|
||||
*) n=$(getconf _NPROCESSORS_ONLN 2> /dev/null)
|
||||
test "$n" -gt 0 || n=1
|
||||
n=$(expr $n + 1)
|
||||
MAKEFLAGS="$MAKEFLAGS -j$n"
|
||||
export MAKEFLAGS
|
||||
;;
|
||||
esac
|
||||
|
||||
make
|
||||
make install
|
||||
|
||||
set -o pipefail
|
||||
make check 2>&1 | tee $RESULTS
|
||||
make cov
|
||||
# set -o pipefail is a bashism; this use of exec is the POSIX alternative
|
||||
exec 3>&1
|
||||
st=$(
|
||||
exec 4>&1 >&3
|
||||
{ make check syntax-check 2>&1; echo $? >&4; } | tee "$RESULTS"
|
||||
)
|
||||
exec 3>&-
|
||||
test $st = 0
|
||||
test -x /usr/bin/lcov && make cov
|
||||
|
||||
rm -f *.tar.gz
|
||||
make dist
|
||||
|
||||
if [ -f /usr/bin/rpmbuild ]; then
|
||||
if [ -n "$AUTOBUILD_COUNTER" ]; then
|
||||
EXTRA_RELEASE=".auto$AUTOBUILD_COUNTER"
|
||||
else
|
||||
NOW=`date +"%s"`
|
||||
EXTRA_RELEASE=".$USER$NOW"
|
||||
fi
|
||||
rpmbuild --nodeps --define "extra_release $EXTRA_RELEASE" -ta --clean *.tar.gz
|
||||
|
||||
if [ -f /usr/bin/rpmbuild ]; then
|
||||
rpmbuild --nodeps \
|
||||
--define "extra_release $EXTRA_RELEASE" \
|
||||
--define "_sourcedir `pwd`" \
|
||||
-ba --clean libvirt.spec
|
||||
fi
|
||||
|
||||
if [ -x /usr/bin/i686-pc-mingw32-gcc ]; then
|
||||
make distclean
|
||||
|
||||
PKG_CONFIG_PATH="$AUTOBUILD_INSTALL_ROOT/i686-pc-mingw32/sys-root/mingw/lib/pkgconfig" \
|
||||
CC="i686-pc-mingw32-gcc" \
|
||||
./configure \
|
||||
--build=$(uname -m)-pc-linux \
|
||||
--host=i686-pc-mingw32 \
|
||||
--prefix="$AUTOBUILD_INSTALL_ROOT/i686-pc-mingw32/sys-root/mingw" \
|
||||
--enable-compile-warnings=error \
|
||||
--without-sasl \
|
||||
--without-avahi \
|
||||
--without-polkit \
|
||||
--without-python \
|
||||
--without-xen \
|
||||
--without-qemu \
|
||||
--without-lxc \
|
||||
--without-uml \
|
||||
--without-vbox \
|
||||
--without-openvz \
|
||||
--without-one \
|
||||
--without-phyp \
|
||||
--without-netcf \
|
||||
--without-libvirtd
|
||||
|
||||
make
|
||||
make install
|
||||
|
||||
#set -o pipefail
|
||||
#make check 2>&1 | tee "$RESULTS"
|
||||
|
||||
if [ -f /usr/bin/rpmbuild ]; then
|
||||
rpmbuild --nodeps \
|
||||
--define "extra_release $EXTRA_RELEASE" \
|
||||
--define "_sourcedir `pwd`" \
|
||||
-ba --clean mingw32-libvirt.spec
|
||||
fi
|
||||
fi
|
||||
|
||||
53
autogen.sh
53
autogen.sh
@ -1,11 +1,11 @@
|
||||
#!/bin/sh
|
||||
# Run this to generate all the initial makefiles, etc.
|
||||
|
||||
srcdir=`dirname $0`
|
||||
srcdir=`dirname "$0"`
|
||||
test -z "$srcdir" && srcdir=.
|
||||
|
||||
THEDIR=`pwd`
|
||||
cd $srcdir
|
||||
cd "$srcdir"
|
||||
DIE=0
|
||||
|
||||
(autopoint --version) < /dev/null > /dev/null 2>&1 || {
|
||||
@ -49,27 +49,54 @@ test -f src/libvirt.c || {
|
||||
exit 1
|
||||
}
|
||||
|
||||
if test -z "$*"; then
|
||||
|
||||
EXTRA_ARGS=
|
||||
if test "x$1" = "x--system"; then
|
||||
shift
|
||||
EXTRA_ARGS="--prefix=/usr --sysconfdir=/etc --localstatedir=/var"
|
||||
echo "Running ./configure with $EXTRA_ARGS $@"
|
||||
else
|
||||
if test -z "$*" && test ! -f "$THEDIR/config.status"; then
|
||||
echo "I am going to run ./configure with no arguments - if you wish "
|
||||
echo "to pass any to it, please specify them on the $0 command line."
|
||||
fi
|
||||
fi
|
||||
|
||||
autopoint --force
|
||||
#rm -rf m4
|
||||
libtoolize --copy --force
|
||||
aclocal -I m4
|
||||
autoheader
|
||||
automake --add-missing
|
||||
autoconf
|
||||
# Compute the hash we'll use to determine whether rerunning bootstrap
|
||||
# is required. The first is just the SHA1 that selects a gnulib snapshot.
|
||||
# The second ensures that whenever we change the set of gnulib modules used
|
||||
# by this package, we rerun bootstrap to pull in the matching set of files.
|
||||
bootstrap_hash()
|
||||
{
|
||||
git submodule status | sed 's/^[ +-]//;s/ .*//'
|
||||
git hash-object bootstrap.conf
|
||||
}
|
||||
|
||||
cd $THEDIR
|
||||
# Ensure that whenever we pull in a gnulib update or otherwise change to a
|
||||
# different version (i.e., when switching branches), we also rerun ./bootstrap.
|
||||
curr_status=.git-module-status
|
||||
t=$(bootstrap_hash; git diff .gnulib)
|
||||
if test "$t" = "$(cat $curr_status 2>/dev/null)"; then
|
||||
: # good, it's up to date, all we need is autoreconf
|
||||
autoreconf -if
|
||||
else
|
||||
echo running bootstrap...
|
||||
./bootstrap && bootstrap_hash > $curr_status \
|
||||
|| { echo "Failed to bootstrap gnulib, please investigate."; exit 1; }
|
||||
fi
|
||||
|
||||
if test x$OBJ_DIR != x; then
|
||||
cd "$THEDIR"
|
||||
|
||||
if test "x$OBJ_DIR" != x; then
|
||||
mkdir -p "$OBJ_DIR"
|
||||
cd "$OBJ_DIR"
|
||||
fi
|
||||
|
||||
$srcdir/configure "$@" && {
|
||||
if test -z "$*" && test -f config.status; then
|
||||
./config.status --recheck
|
||||
else
|
||||
$srcdir/configure $EXTRA_ARGS "$@"
|
||||
fi && {
|
||||
echo
|
||||
echo "Now type 'make' to compile libvirt."
|
||||
}
|
||||
|
||||
855
bootstrap
Executable file
855
bootstrap
Executable file
@ -0,0 +1,855 @@
|
||||
#! /bin/sh
|
||||
# Print a version string.
|
||||
scriptversion=2010-05-17.18; # UTC
|
||||
|
||||
# Bootstrap this package from checked-out sources.
|
||||
|
||||
# Copyright (C) 2003-2010 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# Originally written by Paul Eggert. The canonical version of this
|
||||
# script is maintained as build-aux/bootstrap in gnulib, however, to
|
||||
# be useful to your project, you should place a copy of it under
|
||||
# version control in the top-level directory of your project. The
|
||||
# intent is that all customization can be done with a bootstrap.conf
|
||||
# file also maintained in your version control; gnulib comes with a
|
||||
# template build-aux/bootstrap.conf to get you started.
|
||||
|
||||
# Please report bugs or propose patches to bug-gnulib@gnu.org.
|
||||
|
||||
nl='
|
||||
'
|
||||
|
||||
# Ensure file names are sorted consistently across platforms.
|
||||
LC_ALL=C
|
||||
export LC_ALL
|
||||
|
||||
local_gl_dir=gl
|
||||
|
||||
# Temporary directory names.
|
||||
bt='._bootmp'
|
||||
bt_regex=`echo "$bt"| sed 's/\./[.]/g'`
|
||||
bt2=${bt}2
|
||||
|
||||
usage() {
|
||||
cat <<EOF
|
||||
Usage: $0 [OPTION]...
|
||||
Bootstrap this package from the checked-out sources.
|
||||
|
||||
Options:
|
||||
--gnulib-srcdir=DIRNAME Specify the local directory where gnulib
|
||||
sources reside. Use this if you already
|
||||
have gnulib sources on your machine, and
|
||||
do not want to waste your bandwidth downloading
|
||||
them again. Defaults to \$GNULIB_SRCDIR.
|
||||
--copy Copy files instead of creating symbolic links.
|
||||
--force Attempt to bootstrap even if the sources seem
|
||||
not to have been checked out.
|
||||
--skip-po Do not download po files.
|
||||
|
||||
If the file $0.conf exists in the same directory as this script, its
|
||||
contents are read as shell variables to configure the bootstrap.
|
||||
|
||||
For build prerequisites, environment variables like \$AUTOCONF and \$AMTAR
|
||||
are honored.
|
||||
|
||||
Running without arguments will suffice in most cases.
|
||||
EOF
|
||||
}
|
||||
|
||||
# Configuration.
|
||||
|
||||
# Name of the Makefile.am
|
||||
gnulib_mk=gnulib.mk
|
||||
|
||||
# List of gnulib modules needed.
|
||||
gnulib_modules=
|
||||
|
||||
# Any gnulib files needed that are not in modules.
|
||||
gnulib_files=
|
||||
|
||||
# A function to be called after everything else in this script.
|
||||
# Override it via your own definition in bootstrap.conf.
|
||||
bootstrap_epilogue() { :; }
|
||||
|
||||
# The command to download all .po files for a specified domain into
|
||||
# a specified directory. Fill in the first %s is the domain name, and
|
||||
# the second with the destination directory. Use rsync's -L and -r
|
||||
# options because the latest/%s directory and the .po files within are
|
||||
# all symlinks.
|
||||
po_download_command_format=\
|
||||
"rsync -Lrtvz 'translationproject.org::tp/latest/%s/' '%s'"
|
||||
|
||||
extract_package_name='
|
||||
/^AC_INIT(/{
|
||||
/.*,.*,.*, */{
|
||||
s///
|
||||
s/[][]//g
|
||||
s/)$//
|
||||
p
|
||||
q
|
||||
}
|
||||
s/AC_INIT(\[*//
|
||||
s/]*,.*//
|
||||
s/^GNU //
|
||||
y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
|
||||
s/[^A-Za-z0-9_]/-/g
|
||||
p
|
||||
}
|
||||
'
|
||||
package=`sed -n "$extract_package_name" configure.ac` || exit
|
||||
gnulib_name=lib$package
|
||||
|
||||
build_aux=build-aux
|
||||
source_base=lib
|
||||
m4_base=m4
|
||||
doc_base=doc
|
||||
tests_base=tests
|
||||
|
||||
# Extra files from gnulib, which override files from other sources.
|
||||
gnulib_extra_files="
|
||||
$build_aux/install-sh
|
||||
$build_aux/missing
|
||||
$build_aux/mdate-sh
|
||||
$build_aux/texinfo.tex
|
||||
$build_aux/depcomp
|
||||
$build_aux/config.guess
|
||||
$build_aux/config.sub
|
||||
doc/INSTALL
|
||||
"
|
||||
|
||||
# Additional gnulib-tool options to use. Use "\newline" to break lines.
|
||||
gnulib_tool_option_extras=
|
||||
|
||||
# Other locale categories that need message catalogs.
|
||||
EXTRA_LOCALE_CATEGORIES=
|
||||
|
||||
# Additional xgettext options to use. Use "\\\newline" to break lines.
|
||||
XGETTEXT_OPTIONS='\\\
|
||||
--flag=_:1:pass-c-format\\\
|
||||
--flag=N_:1:pass-c-format\\\
|
||||
--flag=error:3:c-format --flag=error_at_line:5:c-format\\\
|
||||
'
|
||||
|
||||
# Package bug report address and copyright holder for gettext files
|
||||
COPYRIGHT_HOLDER='Free Software Foundation, Inc.'
|
||||
MSGID_BUGS_ADDRESS=bug-$package@gnu.org
|
||||
|
||||
# Files we don't want to import.
|
||||
excluded_files=
|
||||
|
||||
# File that should exist in the top directory of a checked out hierarchy,
|
||||
# but not in a distribution tarball.
|
||||
checkout_only_file=README-hacking
|
||||
|
||||
# Whether to use copies instead of symlinks.
|
||||
copy=false
|
||||
|
||||
# Set this to '.cvsignore .gitignore' in bootstrap.conf if you want
|
||||
# those files to be generated in directories like lib/, m4/, and po/.
|
||||
# Or set it to 'auto' to make this script select which to use based
|
||||
# on which version control system (if any) is used in the source directory.
|
||||
vc_ignore=auto
|
||||
|
||||
# find_tool ENVVAR NAMES...
|
||||
# -------------------------
|
||||
# Search for a required program. Use the value of ENVVAR, if set,
|
||||
# otherwise find the first of the NAMES that can be run (i.e.,
|
||||
# supports --version). If found, set ENVVAR to the program name,
|
||||
# die otherwise.
|
||||
find_tool ()
|
||||
{
|
||||
find_tool_envvar=$1
|
||||
shift
|
||||
find_tool_names=$@
|
||||
eval "find_tool_res=\$$find_tool_envvar"
|
||||
if test x"$find_tool_res" = x; then
|
||||
for i
|
||||
do
|
||||
if ($i --version </dev/null) >/dev/null 2>&1; then
|
||||
find_tool_res=$i
|
||||
break
|
||||
fi
|
||||
done
|
||||
else
|
||||
find_tool_error_prefix="\$$find_tool_envvar: "
|
||||
fi
|
||||
if test x"$find_tool_res" = x; then
|
||||
echo >&2 "$0: one of these is required: $find_tool_names"
|
||||
exit 1
|
||||
fi
|
||||
($find_tool_res --version </dev/null) >/dev/null 2>&1 || {
|
||||
echo >&2 "$0: ${find_tool_error_prefix}cannot run $find_tool_res --version"
|
||||
exit 1
|
||||
}
|
||||
eval "$find_tool_envvar=\$find_tool_res"
|
||||
eval "export $find_tool_envvar"
|
||||
}
|
||||
|
||||
# Find sha1sum, named gsha1sum on MacPorts, and shasum on MacOS 10.6.
|
||||
find_tool SHA1SUM sha1sum gsha1sum shasum
|
||||
|
||||
# Override the default configuration, if necessary.
|
||||
# Make sure that bootstrap.conf is sourced from the current directory
|
||||
# if we were invoked as "sh bootstrap".
|
||||
case "$0" in
|
||||
*/*) test -r "$0.conf" && . "$0.conf" ;;
|
||||
*) test -r "$0.conf" && . ./"$0.conf" ;;
|
||||
esac
|
||||
|
||||
|
||||
if test "$vc_ignore" = auto; then
|
||||
vc_ignore=
|
||||
test -d .git && vc_ignore=.gitignore
|
||||
test -d CVS && vc_ignore="$vc_ignore .cvsignore"
|
||||
fi
|
||||
|
||||
# Translate configuration into internal form.
|
||||
|
||||
# Parse options.
|
||||
|
||||
for option
|
||||
do
|
||||
case $option in
|
||||
--help)
|
||||
usage
|
||||
exit;;
|
||||
--gnulib-srcdir=*)
|
||||
GNULIB_SRCDIR=`expr "X$option" : 'X--gnulib-srcdir=\(.*\)'`;;
|
||||
--skip-po)
|
||||
SKIP_PO=t;;
|
||||
--force)
|
||||
checkout_only_file=;;
|
||||
--copy)
|
||||
copy=true;;
|
||||
*)
|
||||
echo >&2 "$0: $option: unknown option"
|
||||
exit 1;;
|
||||
esac
|
||||
done
|
||||
|
||||
if test -n "$checkout_only_file" && test ! -r "$checkout_only_file"; then
|
||||
echo "$0: Bootstrapping from a non-checked-out distribution is risky." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# If $STR is not already on a line by itself in $FILE, insert it,
|
||||
# sorting the new contents of the file and replacing $FILE with the result.
|
||||
insert_sorted_if_absent() {
|
||||
file=$1
|
||||
str=$2
|
||||
test -f $file || touch $file
|
||||
echo "$str" | sort -u - $file | cmp - $file > /dev/null \
|
||||
|| echo "$str" | sort -u - $file -o $file \
|
||||
|| exit 1
|
||||
}
|
||||
|
||||
# Die if there is no AC_CONFIG_AUX_DIR($build_aux) line in configure.ac.
|
||||
found_aux_dir=no
|
||||
grep '^[ ]*AC_CONFIG_AUX_DIR(\['"$build_aux"'\])' configure.ac \
|
||||
>/dev/null && found_aux_dir=yes
|
||||
grep '^[ ]*AC_CONFIG_AUX_DIR('"$build_aux"')' configure.ac \
|
||||
>/dev/null && found_aux_dir=yes
|
||||
if test $found_aux_dir = no; then
|
||||
echo "$0: expected line not found in configure.ac. Add the following:" >&2
|
||||
echo " AC_CONFIG_AUX_DIR([$build_aux])" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# If $build_aux doesn't exist, create it now, otherwise some bits
|
||||
# below will malfunction. If creating it, also mark it as ignored.
|
||||
if test ! -d $build_aux; then
|
||||
mkdir $build_aux
|
||||
for dot_ig in x $vc_ignore; do
|
||||
test $dot_ig = x && continue
|
||||
insert_sorted_if_absent $dot_ig $build_aux
|
||||
done
|
||||
fi
|
||||
|
||||
# Note this deviates from the version comparison in automake
|
||||
# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a
|
||||
# but this should suffice as we won't be specifying old
|
||||
# version formats or redundant trailing .0 in bootstrap.conf.
|
||||
# If we did want full compatibility then we should probably
|
||||
# use m4_version_compare from autoconf.
|
||||
sort_ver() { # sort -V is not generally available
|
||||
ver1="$1"
|
||||
ver2="$2"
|
||||
|
||||
# split on '.' and compare each component
|
||||
i=1
|
||||
while : ; do
|
||||
p1=$(echo "$ver1" | cut -d. -f$i)
|
||||
p2=$(echo "$ver2" | cut -d. -f$i)
|
||||
if [ ! "$p1" ]; then
|
||||
echo "$1 $2"
|
||||
break
|
||||
elif [ ! "$p2" ]; then
|
||||
echo "$2 $1"
|
||||
break
|
||||
elif [ ! "$p1" = "$p2" ]; then
|
||||
if [ "$p1" -gt "$p2" ] 2>/dev/null; then # numeric comparison
|
||||
echo "$2 $1"
|
||||
elif [ "$p2" -gt "$p1" ] 2>/dev/null; then # numeric comparison
|
||||
echo "$1 $2"
|
||||
else # numeric, then lexicographic comparison
|
||||
lp=$(printf "$p1\n$p2\n" | LANG=C sort -n | tail -n1)
|
||||
if [ "$lp" = "$p2" ]; then
|
||||
echo "$1 $2"
|
||||
else
|
||||
echo "$2 $1"
|
||||
fi
|
||||
fi
|
||||
break
|
||||
fi
|
||||
i=$(($i+1))
|
||||
done
|
||||
}
|
||||
|
||||
get_version() {
|
||||
app=$1
|
||||
|
||||
$app --version >/dev/null 2>&1 || return 1
|
||||
|
||||
$app --version 2>&1 |
|
||||
sed -n '# extract version within line
|
||||
s/.*[v ]\{1,\}\([0-9]\{1,\}\.[.a-z0-9-]*\).*/\1/
|
||||
t done
|
||||
|
||||
# extract version at start of line
|
||||
s/^\([0-9]\{1,\}\.[.a-z0-9-]*\).*/\1/
|
||||
t done
|
||||
|
||||
d
|
||||
|
||||
:done
|
||||
#the following essentially does s/5.005/5.5/
|
||||
s/\.0*\([1-9]\)/.\1/g
|
||||
p
|
||||
q'
|
||||
}
|
||||
|
||||
check_versions() {
|
||||
ret=0
|
||||
|
||||
while read app req_ver; do
|
||||
# Honor $APP variables ($TAR, $AUTOCONF, etc.)
|
||||
appvar=`echo $app | tr '[a-z]' '[A-Z]'`
|
||||
test "$appvar" = TAR && appvar=AMTAR
|
||||
eval "app=\${$appvar-$app}"
|
||||
inst_ver=$(get_version $app)
|
||||
if [ ! "$inst_ver" ]; then
|
||||
echo "Error: '$app' not found" >&2
|
||||
ret=1
|
||||
elif [ ! "$req_ver" = "-" ]; then
|
||||
latest_ver=$(sort_ver $req_ver $inst_ver | cut -d' ' -f2)
|
||||
if [ ! "$latest_ver" = "$inst_ver" ]; then
|
||||
echo "Error: '$app' version == $inst_ver is too old" >&2
|
||||
echo " '$app' version >= $req_ver is required" >&2
|
||||
ret=1
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
return $ret
|
||||
}
|
||||
|
||||
print_versions() {
|
||||
echo "Program Min_version"
|
||||
echo "----------------------"
|
||||
printf "$buildreq"
|
||||
echo "----------------------"
|
||||
# can't depend on column -t
|
||||
}
|
||||
|
||||
if ! printf "$buildreq" | check_versions; then
|
||||
test -f README-prereq &&
|
||||
echo "See README-prereq for notes on obtaining these prerequisite programs:" >&2
|
||||
echo
|
||||
print_versions
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "$0: Bootstrapping from checked-out $package sources..."
|
||||
|
||||
# See if we can use gnulib's git-merge-changelog merge driver.
|
||||
if test -d .git && (git --version) >/dev/null 2>/dev/null ; then
|
||||
if git config merge.merge-changelog.driver >/dev/null ; then
|
||||
:
|
||||
elif (git-merge-changelog --version) >/dev/null 2>/dev/null ; then
|
||||
echo "initializing git-merge-changelog driver"
|
||||
git config merge.merge-changelog.name 'GNU-style ChangeLog merge driver'
|
||||
git config merge.merge-changelog.driver 'git-merge-changelog %O %A %B'
|
||||
else
|
||||
echo "consider installing git-merge-changelog from gnulib"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
cleanup_gnulib() {
|
||||
status=$?
|
||||
rm -fr "$gnulib_path"
|
||||
exit $status
|
||||
}
|
||||
|
||||
git_modules_config () {
|
||||
test -f .gitmodules && git config --file .gitmodules "$@"
|
||||
}
|
||||
|
||||
gnulib_path=`git_modules_config submodule.gnulib.path`
|
||||
: ${gnulib_path=gnulib}
|
||||
|
||||
# Get gnulib files.
|
||||
|
||||
case ${GNULIB_SRCDIR--} in
|
||||
-)
|
||||
if git_modules_config submodule.gnulib.url >/dev/null; then
|
||||
echo "$0: getting gnulib files..."
|
||||
git submodule init || exit $?
|
||||
git submodule update || exit $?
|
||||
|
||||
elif [ ! -d "$gnulib_path" ]; then
|
||||
echo "$0: getting gnulib files..."
|
||||
|
||||
trap cleanup_gnulib 1 2 13 15
|
||||
|
||||
shallow=
|
||||
git clone -h 2>&1 | grep -- --depth > /dev/null && shallow='--depth 2'
|
||||
git clone $shallow git://git.sv.gnu.org/gnulib "$gnulib_path" ||
|
||||
cleanup_gnulib
|
||||
|
||||
trap - 1 2 13 15
|
||||
fi
|
||||
GNULIB_SRCDIR=$gnulib_path
|
||||
;;
|
||||
*)
|
||||
# Use GNULIB_SRCDIR as a reference.
|
||||
if test -d "$GNULIB_SRCDIR"/.git && \
|
||||
git_modules_config submodule.gnulib.url >/dev/null; then
|
||||
echo "$0: getting gnulib files..."
|
||||
if git submodule -h|grep -- --reference > /dev/null; then
|
||||
# Prefer the one-liner available in git 1.6.4 or newer.
|
||||
git submodule update --init --reference "$GNULIB_SRCDIR" \
|
||||
"$gnulib_path" || exit $?
|
||||
else
|
||||
# This fallback allows at least git 1.5.5.
|
||||
if test -f "$gnulib_path"/gnulib-tool; then
|
||||
# Since file already exists, assume submodule init already complete.
|
||||
git submodule update || exit $?
|
||||
else
|
||||
# Older git can't clone into an empty directory.
|
||||
rmdir "$gnulib_path" 2>/dev/null
|
||||
git clone --reference "$GNULIB_SRCDIR" \
|
||||
"$(git_modules_config submodule.gnulib.url)" "$gnulib_path" \
|
||||
&& git submodule init && git submodule update \
|
||||
|| exit $?
|
||||
fi
|
||||
fi
|
||||
GNULIB_SRCDIR=$gnulib_path
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
gnulib_tool=$GNULIB_SRCDIR/gnulib-tool
|
||||
<$gnulib_tool || exit
|
||||
|
||||
# Get translations.
|
||||
|
||||
download_po_files() {
|
||||
subdir=$1
|
||||
domain=$2
|
||||
echo "$0: getting translations into $subdir for $domain..."
|
||||
cmd=`printf "$po_download_command_format" "$domain" "$subdir"`
|
||||
eval "$cmd"
|
||||
}
|
||||
|
||||
# Download .po files to $po_dir/.reference and copy only the new
|
||||
# or modified ones into $po_dir. Also update $po_dir/LINGUAS.
|
||||
update_po_files() {
|
||||
# Directory containing primary .po files.
|
||||
# Overwrite them only when we're sure a .po file is new.
|
||||
po_dir=$1
|
||||
domain=$2
|
||||
|
||||
# Download *.po files into this dir.
|
||||
# Usually contains *.s1 checksum files.
|
||||
ref_po_dir="$po_dir/.reference"
|
||||
|
||||
test -d $ref_po_dir || mkdir $ref_po_dir || return
|
||||
download_po_files $ref_po_dir $domain \
|
||||
&& ls "$ref_po_dir"/*.po 2>/dev/null |
|
||||
sed 's|.*/||; s|\.po$||' > "$po_dir/LINGUAS" || return
|
||||
|
||||
langs=`cd $ref_po_dir && echo *.po|sed 's/\.po//g'`
|
||||
test "$langs" = '*' && langs=x
|
||||
for po in $langs; do
|
||||
case $po in x) continue;; esac
|
||||
new_po="$ref_po_dir/$po.po"
|
||||
cksum_file="$ref_po_dir/$po.s1"
|
||||
if ! test -f "$cksum_file" ||
|
||||
! test -f "$po_dir/$po.po" ||
|
||||
! $SHA1SUM -c --status "$cksum_file" \
|
||||
< "$new_po" > /dev/null; then
|
||||
echo "updated $po_dir/$po.po..."
|
||||
cp "$new_po" "$po_dir/$po.po" \
|
||||
&& $SHA1SUM < "$new_po" > "$cksum_file"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
case $SKIP_PO in
|
||||
'')
|
||||
if test -d po; then
|
||||
update_po_files po $package || exit
|
||||
fi
|
||||
|
||||
if test -d runtime-po; then
|
||||
update_po_files runtime-po $package-runtime || exit
|
||||
fi;;
|
||||
esac
|
||||
|
||||
symlink_to_dir()
|
||||
{
|
||||
src=$1/$2
|
||||
dst=${3-$2}
|
||||
|
||||
test -f "$src" && {
|
||||
|
||||
# If the destination directory doesn't exist, create it.
|
||||
# This is required at least for "lib/uniwidth/cjk.h".
|
||||
dst_dir=`dirname "$dst"`
|
||||
if ! test -d "$dst_dir"; then
|
||||
mkdir -p "$dst_dir"
|
||||
|
||||
# If we've just created a directory like lib/uniwidth,
|
||||
# tell version control system(s) it's ignorable.
|
||||
# FIXME: for now, this does only one level
|
||||
parent=`dirname "$dst_dir"`
|
||||
for dot_ig in x $vc_ignore; do
|
||||
test $dot_ig = x && continue
|
||||
ig=$parent/$dot_ig
|
||||
insert_sorted_if_absent $ig `echo "$dst_dir"|sed 's,.*/,,'`
|
||||
done
|
||||
fi
|
||||
|
||||
if $copy; then
|
||||
{
|
||||
test ! -h "$dst" || {
|
||||
echo "$0: rm -f $dst" &&
|
||||
rm -f "$dst"
|
||||
}
|
||||
} &&
|
||||
test -f "$dst" &&
|
||||
cmp -s "$src" "$dst" || {
|
||||
echo "$0: cp -fp $src $dst" &&
|
||||
cp -fp "$src" "$dst"
|
||||
}
|
||||
else
|
||||
test -h "$dst" &&
|
||||
src_ls=`ls -diL "$src" 2>/dev/null` && set $src_ls && src_i=$1 &&
|
||||
dst_ls=`ls -diL "$dst" 2>/dev/null` && set $dst_ls && dst_i=$1 &&
|
||||
test "$src_i" = "$dst_i" || {
|
||||
dot_dots=
|
||||
case $src in
|
||||
/*) ;;
|
||||
*)
|
||||
case /$dst/ in
|
||||
*//* | */../* | */./* | /*/*/*/*/*/)
|
||||
echo >&2 "$0: invalid symlink calculation: $src -> $dst"
|
||||
exit 1;;
|
||||
/*/*/*/*/) dot_dots=../../../;;
|
||||
/*/*/*/) dot_dots=../../;;
|
||||
/*/*/) dot_dots=../;;
|
||||
esac;;
|
||||
esac
|
||||
|
||||
echo "$0: ln -fs $dot_dots$src $dst" &&
|
||||
ln -fs "$dot_dots$src" "$dst"
|
||||
}
|
||||
fi
|
||||
}
|
||||
}
|
||||
|
||||
cp_mark_as_generated()
|
||||
{
|
||||
cp_src=$1
|
||||
cp_dst=$2
|
||||
|
||||
if cmp -s "$cp_src" "$GNULIB_SRCDIR/$cp_dst"; then
|
||||
symlink_to_dir "$GNULIB_SRCDIR" "$cp_dst"
|
||||
elif cmp -s "$cp_src" "$local_gl_dir/$cp_dst"; then
|
||||
symlink_to_dir $local_gl_dir "$cp_dst"
|
||||
else
|
||||
case $cp_dst in
|
||||
*.[ch]) c1='/* '; c2=' */';;
|
||||
*.texi) c1='@c '; c2= ;;
|
||||
*.m4|*/Make*|Make*) c1='# ' ; c2= ;;
|
||||
*) c1= ; c2= ;;
|
||||
esac
|
||||
|
||||
# If the destination directory doesn't exist, create it.
|
||||
# This is required at least for "lib/uniwidth/cjk.h".
|
||||
dst_dir=`dirname "$cp_dst"`
|
||||
test -d "$dst_dir" || mkdir -p "$dst_dir"
|
||||
|
||||
if test -z "$c1"; then
|
||||
cmp -s "$cp_src" "$cp_dst" || {
|
||||
# Copy the file first to get proper permissions if it
|
||||
# doesn't already exist. Then overwrite the copy.
|
||||
echo "$0: cp -f $cp_src $cp_dst" &&
|
||||
rm -f "$cp_dst" &&
|
||||
cp "$cp_src" "$cp_dst-t" &&
|
||||
sed "s!$bt_regex/!!g" "$cp_src" > "$cp_dst-t" &&
|
||||
mv -f "$cp_dst-t" "$cp_dst"
|
||||
}
|
||||
else
|
||||
# Copy the file first to get proper permissions if it
|
||||
# doesn't already exist. Then overwrite the copy.
|
||||
cp "$cp_src" "$cp_dst-t" &&
|
||||
(
|
||||
echo "$c1-*- buffer-read-only: t -*- vi: set ro:$c2" &&
|
||||
echo "${c1}DO NOT EDIT! GENERATED AUTOMATICALLY!$c2" &&
|
||||
sed "s!$bt_regex/!!g" "$cp_src"
|
||||
) > $cp_dst-t &&
|
||||
if cmp -s "$cp_dst-t" "$cp_dst"; then
|
||||
rm -f "$cp_dst-t"
|
||||
else
|
||||
echo "$0: cp $cp_src $cp_dst # with edits" &&
|
||||
mv -f "$cp_dst-t" "$cp_dst"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
version_controlled_file() {
|
||||
dir=$1
|
||||
file=$2
|
||||
found=no
|
||||
if test -d CVS; then
|
||||
grep -F "/$file/" $dir/CVS/Entries 2>/dev/null |
|
||||
grep '^/[^/]*/[0-9]' > /dev/null && found=yes
|
||||
elif test -d .git; then
|
||||
git rm -n "$dir/$file" > /dev/null 2>&1 && found=yes
|
||||
elif test -d .svn; then
|
||||
svn log -r HEAD "$dir/$file" > /dev/null 2>&1 && found=yes
|
||||
else
|
||||
echo "$0: no version control for $dir/$file?" >&2
|
||||
fi
|
||||
test $found = yes
|
||||
}
|
||||
|
||||
slurp() {
|
||||
for dir in . `(cd $1 && find * -type d -print)`; do
|
||||
copied=
|
||||
sep=
|
||||
for file in `ls -a $1/$dir`; do
|
||||
case $file in
|
||||
.|..) continue;;
|
||||
.*) continue;; # FIXME: should all file names starting with "." be ignored?
|
||||
esac
|
||||
test -d $1/$dir/$file && continue
|
||||
for excluded_file in $excluded_files; do
|
||||
test "$dir/$file" = "$excluded_file" && continue 2
|
||||
done
|
||||
if test $file = Makefile.am && test "X$gnulib_mk" != XMakefile.am; then
|
||||
copied=$copied${sep}$gnulib_mk; sep=$nl
|
||||
remove_intl='/^[^#].*\/intl/s/^/#/;'"s!$bt_regex/!!g"
|
||||
sed "$remove_intl" $1/$dir/$file | cmp - $dir/$gnulib_mk > /dev/null || {
|
||||
echo "$0: Copying $1/$dir/$file to $dir/$gnulib_mk ..." &&
|
||||
rm -f $dir/$gnulib_mk &&
|
||||
sed "$remove_intl" $1/$dir/$file >$dir/$gnulib_mk
|
||||
}
|
||||
elif { test "${2+set}" = set && test -r $2/$dir/$file; } ||
|
||||
version_controlled_file $dir $file; then
|
||||
echo "$0: $dir/$file overrides $1/$dir/$file"
|
||||
else
|
||||
copied=$copied$sep$file; sep=$nl
|
||||
if test $file = gettext.m4; then
|
||||
echo "$0: patching m4/gettext.m4 to remove need for intl/* ..."
|
||||
rm -f $dir/$file
|
||||
sed '
|
||||
/^AC_DEFUN(\[AM_INTL_SUBDIR],/,/^]/c\
|
||||
AC_DEFUN([AM_INTL_SUBDIR], [])
|
||||
/^AC_DEFUN(\[gt_INTL_SUBDIR_CORE],/,/^]/c\
|
||||
AC_DEFUN([gt_INTL_SUBDIR_CORE], [])
|
||||
$a\
|
||||
AC_DEFUN([gl_LOCK_EARLY], [])
|
||||
' $1/$dir/$file >$dir/$file
|
||||
else
|
||||
cp_mark_as_generated $1/$dir/$file $dir/$file
|
||||
fi
|
||||
fi || exit
|
||||
done
|
||||
|
||||
for dot_ig in x $vc_ignore; do
|
||||
test $dot_ig = x && continue
|
||||
ig=$dir/$dot_ig
|
||||
if test -n "$copied"; then
|
||||
insert_sorted_if_absent $ig "$copied"
|
||||
# If an ignored file name ends with .in.h, then also add
|
||||
# the name with just ".h". Many gnulib headers are generated,
|
||||
# e.g., stdint.in.h -> stdint.h, dirent.in.h ->..., etc.
|
||||
# Likewise for .gperf -> .h, .y -> .c, and .sin -> .sed
|
||||
f=`echo "$copied"|sed 's/\.in\.h$/.h/;s/\.sin$/.sed/;s/\.y$/.c/;s/\.gperf$/.h/'`
|
||||
insert_sorted_if_absent $ig "$f"
|
||||
|
||||
# For files like sys_stat.in.h and sys_time.in.h, record as
|
||||
# ignorable the directory we might eventually create: sys/.
|
||||
f=`echo "$copied"|sed 's/sys_.*\.in\.h$/sys/'`
|
||||
insert_sorted_if_absent $ig "$f"
|
||||
fi
|
||||
done
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
# Create boot temporary directories to import from gnulib and gettext.
|
||||
rm -fr $bt $bt2 &&
|
||||
mkdir $bt $bt2 || exit
|
||||
|
||||
# Import from gnulib.
|
||||
|
||||
gnulib_tool_options="\
|
||||
--import\
|
||||
--no-changelog\
|
||||
--aux-dir $bt/$build_aux\
|
||||
--doc-base $bt/$doc_base\
|
||||
--lib $gnulib_name\
|
||||
--m4-base $bt/$m4_base/\
|
||||
--source-base $bt/$source_base/\
|
||||
--tests-base $bt/$tests_base\
|
||||
--local-dir $local_gl_dir\
|
||||
$gnulib_tool_option_extras\
|
||||
"
|
||||
echo "$0: $gnulib_tool $gnulib_tool_options --import ..."
|
||||
$gnulib_tool $gnulib_tool_options --import $gnulib_modules &&
|
||||
slurp $bt || exit
|
||||
|
||||
for file in $gnulib_files; do
|
||||
symlink_to_dir "$GNULIB_SRCDIR" $file || exit
|
||||
done
|
||||
|
||||
|
||||
# Import from gettext.
|
||||
with_gettext=yes
|
||||
grep '^[ ]*AM_GNU_GETTEXT_VERSION(' configure.ac >/dev/null || \
|
||||
with_gettext=no
|
||||
|
||||
if test $with_gettext = yes; then
|
||||
echo "$0: (cd $bt2; ${AUTOPOINT-autopoint}) ..."
|
||||
cp configure.ac $bt2 &&
|
||||
(cd $bt2 && ${AUTOPOINT-autopoint} && rm configure.ac) &&
|
||||
slurp $bt2 $bt || exit
|
||||
fi
|
||||
rm -fr $bt $bt2 || exit
|
||||
|
||||
# Remove any dangling symlink matching "*.m4" or "*.[ch]" in some
|
||||
# gnulib-populated directories. Such .m4 files would cause aclocal to fail.
|
||||
# The following requires GNU find 4.2.3 or newer. Considering the usual
|
||||
# portability constraints of this script, that may seem a very demanding
|
||||
# requirement, but it should be ok. Ignore any failure, which is fine,
|
||||
# since this is only a convenience to help developers avoid the relatively
|
||||
# unusual case in which a symlinked-to .m4 file is git-removed from gnulib
|
||||
# between successive runs of this script.
|
||||
find "$m4_base" "$source_base" \
|
||||
-depth \( -name '*.m4' -o -name '*.[ch]' \) \
|
||||
-type l -xtype l -delete > /dev/null 2>&1
|
||||
|
||||
# Reconfigure, getting other files.
|
||||
|
||||
# Skip autoheader if it's not needed.
|
||||
grep -E '^[ ]*AC_CONFIG_HEADERS?\>' configure.ac >/dev/null ||
|
||||
AUTOHEADER=true
|
||||
|
||||
for command in \
|
||||
libtool \
|
||||
"${ACLOCAL-aclocal} --force -I m4" \
|
||||
"${AUTOCONF-autoconf} --force" \
|
||||
"${AUTOHEADER-autoheader} --force" \
|
||||
"${AUTOMAKE-automake} --add-missing --copy --force-missing"
|
||||
do
|
||||
if test "$command" = libtool; then
|
||||
use_libtool=0
|
||||
# We'd like to use grep -E, to see if any of LT_INIT,
|
||||
# AC_PROG_LIBTOOL, AM_PROG_LIBTOOL is used in configure.ac,
|
||||
# but that's not portable enough (e.g., for Solaris).
|
||||
grep '^[ ]*A[CM]_PROG_LIBTOOL' configure.ac >/dev/null \
|
||||
&& use_libtool=1
|
||||
grep '^[ ]*LT_INIT' configure.ac >/dev/null \
|
||||
&& use_libtool=1
|
||||
test $use_libtool = 0 \
|
||||
&& continue
|
||||
command="${LIBTOOLIZE-libtoolize} -c -f"
|
||||
fi
|
||||
echo "$0: $command ..."
|
||||
$command || exit
|
||||
done
|
||||
|
||||
|
||||
# Get some extra files from gnulib, overriding existing files.
|
||||
for file in $gnulib_extra_files; do
|
||||
case $file in
|
||||
*/INSTALL) dst=INSTALL;;
|
||||
build-aux/*) dst=$build_aux/`expr "$file" : 'build-aux/\(.*\)'`;;
|
||||
*) dst=$file;;
|
||||
esac
|
||||
symlink_to_dir "$GNULIB_SRCDIR" $file $dst || exit
|
||||
done
|
||||
|
||||
if test $with_gettext = yes; then
|
||||
# Create gettext configuration.
|
||||
echo "$0: Creating po/Makevars from po/Makevars.template ..."
|
||||
rm -f po/Makevars
|
||||
sed '
|
||||
/^EXTRA_LOCALE_CATEGORIES *=/s/=.*/= '"$EXTRA_LOCALE_CATEGORIES"'/
|
||||
/^COPYRIGHT_HOLDER *=/s/=.*/= '"$COPYRIGHT_HOLDER"'/
|
||||
/^MSGID_BUGS_ADDRESS *=/s|=.*|= '"$MSGID_BUGS_ADDRESS"'|
|
||||
/^XGETTEXT_OPTIONS *=/{
|
||||
s/$/ \\/
|
||||
a\
|
||||
'"$XGETTEXT_OPTIONS"' $${end_of_xgettext_options+}
|
||||
}
|
||||
' po/Makevars.template >po/Makevars || exit 1
|
||||
|
||||
if test -d runtime-po; then
|
||||
# Similarly for runtime-po/Makevars, but not quite the same.
|
||||
rm -f runtime-po/Makevars
|
||||
sed '
|
||||
/^DOMAIN *=.*/s/=.*/= '"$package"'-runtime/
|
||||
/^subdir *=.*/s/=.*/= runtime-po/
|
||||
/^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/
|
||||
/^XGETTEXT_OPTIONS *=/{
|
||||
s/$/ \\/
|
||||
a\
|
||||
'"$XGETTEXT_OPTIONS_RUNTIME"' $${end_of_xgettext_options+}
|
||||
}
|
||||
' po/Makevars.template >runtime-po/Makevars || exit 1
|
||||
|
||||
# Copy identical files from po to runtime-po.
|
||||
(cd po && cp -p Makefile.in.in *-quot *.header *.sed *.sin ../runtime-po)
|
||||
fi
|
||||
fi
|
||||
|
||||
bootstrap_epilogue
|
||||
|
||||
echo "$0: done. Now you can run './configure'."
|
||||
|
||||
# Local variables:
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-time-zone: "UTC"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
||||
162
bootstrap.conf
Normal file
162
bootstrap.conf
Normal file
@ -0,0 +1,162 @@
|
||||
# Bootstrap configuration.
|
||||
|
||||
# Copyright (C) 2010 Red Hat, Inc.
|
||||
|
||||
# This library is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU Lesser General Public
|
||||
# License as published by the Free Software Foundation; either
|
||||
# version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU Lesser General Public
|
||||
# License along with this library; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
# gnulib modules used by this package.
|
||||
gnulib_modules='
|
||||
areadlink
|
||||
base64
|
||||
c-ctype
|
||||
canonicalize-lgpl
|
||||
close
|
||||
connect
|
||||
count-one-bits
|
||||
dirname-lgpl
|
||||
fcntl-h
|
||||
getaddrinfo
|
||||
gethostname
|
||||
getpass
|
||||
gettext-h
|
||||
gettimeofday
|
||||
gitlog-to-changelog
|
||||
gnumakefile
|
||||
ignore-value
|
||||
inet_pton
|
||||
ioctl
|
||||
maintainer-makefile
|
||||
mkstemp
|
||||
mktempd
|
||||
netdb
|
||||
perror
|
||||
physmem
|
||||
poll
|
||||
posix-shell
|
||||
pthread
|
||||
recv
|
||||
random_r
|
||||
sched
|
||||
send
|
||||
setsockopt
|
||||
socket
|
||||
stpcpy
|
||||
strchrnul
|
||||
strndup
|
||||
strerror
|
||||
strptime
|
||||
strsep
|
||||
strtok_r
|
||||
sys_stat
|
||||
sys_wait
|
||||
time_r
|
||||
timegm
|
||||
uname
|
||||
useless-if-before-free
|
||||
usleep
|
||||
vasprintf
|
||||
verify
|
||||
vc-list-files
|
||||
'
|
||||
|
||||
# Additional xgettext options to use. Use "\\\newline" to break lines.
|
||||
XGETTEXT_OPTIONS=$XGETTEXT_OPTIONS'\\\
|
||||
--flag=virAsprintf:2:c-format\\\
|
||||
--from-code=UTF-8\\\
|
||||
'
|
||||
|
||||
# This is not a GNU package, so the default bug address is invalid,
|
||||
# and the translation project is not in use.
|
||||
MSGID_BUGS_ADDRESS=libvir-list@redhat.com
|
||||
COPYRIGHT_HOLDER='Red Hat, Inc.'
|
||||
SKIP_PO=true
|
||||
|
||||
# Enable copy-mode for MSYS/MinGW. MSYS' ln doesn't work well in the way
|
||||
# bootstrap uses it with relative paths.
|
||||
if test -n "$MSYSTEM"; then
|
||||
copy=true
|
||||
fi
|
||||
|
||||
# If "AM_GNU_GETTEXT(external" or "AM_GNU_GETTEXT([external]"
|
||||
# appears in configure.ac, exclude some unnecessary files.
|
||||
# Without grep's -E option (not portable enough, pre-configure),
|
||||
# the following test is ugly. Also, this depends on the existence
|
||||
# of configure.ac, not the obsolescent-named configure.in. But if
|
||||
# you're using this infrastructure, you should care about such things.
|
||||
|
||||
gettext_external=0
|
||||
grep '^[ ]*AM_GNU_GETTEXT(external\>' configure.ac > /dev/null &&
|
||||
gettext_external=1
|
||||
grep '^[ ]*AM_GNU_GETTEXT(\[external\]' configure.ac > /dev/null &&
|
||||
gettext_external=1
|
||||
|
||||
if test $gettext_external = 1; then
|
||||
# Gettext supplies these files, but we don't need them since
|
||||
# we don't have an intl subdirectory.
|
||||
excluded_files='
|
||||
m4/glibc2.m4
|
||||
m4/intdiv0.m4
|
||||
m4/lcmessage.m4
|
||||
m4/uintmax_t.m4
|
||||
m4/ulonglong.m4
|
||||
m4/visibility.m4
|
||||
'
|
||||
fi
|
||||
|
||||
# Tell gnulib to:
|
||||
# require LGPLv2+
|
||||
# put *.m4 files in new gnulib/m4/ dir
|
||||
# put *.[ch] files in new gnulib/lib/ dir.
|
||||
# import gnulib tests in new gnulib/tests/ dir.
|
||||
gnulib_name=libgnu
|
||||
m4_base=gnulib/m4
|
||||
source_base=gnulib/lib
|
||||
tests_base=gnulib/tests
|
||||
gnulib_mk=Makefile.am
|
||||
gnulib_tool_option_extras="\
|
||||
--lgpl=2\
|
||||
--with-tests\
|
||||
"
|
||||
|
||||
# Convince bootstrap to use multiple m4 directories.
|
||||
: ${ACLOCAL=aclocal}
|
||||
ACLOCAL="$ACLOCAL -I gnulib/m4"
|
||||
export ACLOCAL
|
||||
|
||||
# Build prerequisites
|
||||
buildreq="\
|
||||
autoconf 2.59
|
||||
automake 1.9.6
|
||||
autopoint -
|
||||
gettext -
|
||||
git 1.5.5
|
||||
gzip -
|
||||
libtool -
|
||||
perl 5.5
|
||||
tar -
|
||||
"
|
||||
|
||||
# Automake requires that ChangeLog exist.
|
||||
touch ChangeLog || exit 1
|
||||
|
||||
|
||||
bootstrap_epilogue()
|
||||
{
|
||||
# Change paths in gnulib/tests/Makefile.am from "../../.." to "../..".
|
||||
m=gnulib/tests/Makefile.am
|
||||
sed 's,\.\./\.\./\.\.,../..,g' $m > $m-t
|
||||
mv -f $m-t $m
|
||||
}
|
||||
16
build-aux/.gitignore
vendored
Normal file
16
build-aux/.gitignore
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
*
|
||||
/arg-nonnull.h
|
||||
/gitlog-to-changelog
|
||||
/link-warning.h
|
||||
/mktempd
|
||||
/useless-if-before-free
|
||||
/vc-list-files
|
||||
arg-nonnull.h
|
||||
c++defs.h
|
||||
config.rpath
|
||||
gitlog-to-changelog
|
||||
mkinstalldirs
|
||||
mktempd
|
||||
useless-if-before-free
|
||||
vc-list-files
|
||||
warn-on-use.h
|
||||
497
cfg.mk
Normal file
497
cfg.mk
Normal file
@ -0,0 +1,497 @@
|
||||
# Customize Makefile.maint. -*- makefile -*-
|
||||
# Copyright (C) 2003-2010 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# Use alpha.gnu.org for alpha and beta releases.
|
||||
# Use ftp.gnu.org for major releases.
|
||||
gnu_ftp_host-alpha = alpha.gnu.org
|
||||
gnu_ftp_host-beta = alpha.gnu.org
|
||||
gnu_ftp_host-major = ftp.gnu.org
|
||||
gnu_rel_host = $(gnu_ftp_host-$(RELEASE_TYPE))
|
||||
|
||||
url_dir_list = \
|
||||
ftp://$(gnu_rel_host)/gnu/coreutils
|
||||
|
||||
# We use .gnulib, not gnulib.
|
||||
gnulib_dir = $(srcdir)/.gnulib
|
||||
|
||||
# Tests not to run as part of "make distcheck".
|
||||
local-checks-to-skip = \
|
||||
changelog-check \
|
||||
check-AUTHORS \
|
||||
makefile-check \
|
||||
makefile_path_separator_check \
|
||||
patch-check \
|
||||
sc_GPL_version \
|
||||
sc_always_defined_macros \
|
||||
sc_cast_of_alloca_return_value \
|
||||
sc_cross_check_PATH_usage_in_tests \
|
||||
sc_dd_max_sym_length \
|
||||
sc_error_exit_success \
|
||||
sc_file_system \
|
||||
sc_immutable_NEWS \
|
||||
sc_makefile_path_separator_check \
|
||||
sc_obsolete_symbols \
|
||||
sc_prohibit_S_IS_definition \
|
||||
sc_prohibit_atoi_atof \
|
||||
sc_prohibit_hash_without_use \
|
||||
sc_prohibit_jm_in_m4 \
|
||||
sc_prohibit_quote_without_use \
|
||||
sc_prohibit_quotearg_without_use \
|
||||
sc_prohibit_stat_st_blocks \
|
||||
sc_root_tests \
|
||||
sc_space_tab \
|
||||
sc_sun_os_names \
|
||||
sc_system_h_headers \
|
||||
sc_texinfo_acronym \
|
||||
sc_tight_scope \
|
||||
sc_two_space_separator_in_usage \
|
||||
sc_error_message_uppercase \
|
||||
sc_program_name \
|
||||
sc_require_test_exit_idiom \
|
||||
sc_makefile_check \
|
||||
sc_useless_cpp_parens
|
||||
|
||||
useless_free_options = \
|
||||
--name=VIR_FREE \
|
||||
--name=sexpr_free \
|
||||
--name=virBitmapFree \
|
||||
--name=virCPUDefFree \
|
||||
--name=virCapabilitiesFree \
|
||||
--name=virCapabilitiesFreeGuest \
|
||||
--name=virCapabilitiesFreeGuestDomain \
|
||||
--name=virCapabilitiesFreeGuestFeature \
|
||||
--name=virCapabilitiesFreeGuestMachine \
|
||||
--name=virCapabilitiesFreeHostNUMACell \
|
||||
--name=virCapabilitiesFreeMachines \
|
||||
--name=virCgroupFree \
|
||||
--name=virConfFreeList \
|
||||
--name=virConfFreeValue \
|
||||
--name=virDomainChrDefFree \
|
||||
--name=virDomainControllerDefFree \
|
||||
--name=virDomainDefFree \
|
||||
--name=virDomainDeviceDefFree \
|
||||
--name=virDomainDiskDefFree \
|
||||
--name=virDomainEventCallbackListFree \
|
||||
--name=virDomainEventFree \
|
||||
--name=virDomainEventQueueFree \
|
||||
--name=virDomainFSDefFree \
|
||||
--name=virDomainGraphicsDefFree \
|
||||
--name=virDomainHostdevDefFree \
|
||||
--name=virDomainInputDefFree \
|
||||
--name=virDomainNetDefFree \
|
||||
--name=virDomainObjFree \
|
||||
--name=virDomainSnapshotDefFree \
|
||||
--name=virDomainSnapshotObjFree \
|
||||
--name=virDomainSoundDefFree \
|
||||
--name=virDomainVideoDefFree \
|
||||
--name=virDomainWatchdogDefFree \
|
||||
--name=virInterfaceDefFree \
|
||||
--name=virInterfaceIpDefFree \
|
||||
--name=virInterfaceObjFree \
|
||||
--name=virInterfaceProtocolDefFree \
|
||||
--name=virJSONValueFree \
|
||||
--name=virLastErrFreeData \
|
||||
--name=virNWFilterDefFree \
|
||||
--name=virNWFilterEntryFree \
|
||||
--name=virNWFilterHashTableFree \
|
||||
--name=virNWFilterIPAddrLearnReqFree \
|
||||
--name=virNWFilterIncludeDefFree \
|
||||
--name=virNWFilterPoolObjFree \
|
||||
--name=virNWFilterRuleDefFree \
|
||||
--name=virNWFilterRuleInstFree \
|
||||
--name=virNetworkDefFree \
|
||||
--name=virNetworkObjFree \
|
||||
--name=virNodeDeviceDefFree \
|
||||
--name=virNodeDeviceObjFree \
|
||||
--name=virSecretDefFree \
|
||||
--name=virStorageEncryptionFree \
|
||||
--name=virStorageEncryptionSecretFree \
|
||||
--name=virStoragePoolDefFree \
|
||||
--name=virStoragePoolObjFree \
|
||||
--name=virStoragePoolSourceFree \
|
||||
--name=virStorageVolDefFree \
|
||||
--name=xmlFree \
|
||||
--name=xmlXPathFreeContext \
|
||||
--name=xmlXPathFreeObject
|
||||
|
||||
# The following template was generated by this command:
|
||||
# make ID && aid free|grep '^vi'|sed 's/ .*//;s/^/# /'
|
||||
# N virBufferFreeAndReset
|
||||
# y virCPUDefFree
|
||||
# y virCapabilitiesFree
|
||||
# y virCapabilitiesFreeGuest
|
||||
# y virCapabilitiesFreeGuestDomain
|
||||
# y virCapabilitiesFreeGuestFeature
|
||||
# y virCapabilitiesFreeGuestMachine
|
||||
# y virCapabilitiesFreeHostNUMACell
|
||||
# y virCapabilitiesFreeMachines
|
||||
# N virCapabilitiesFreeNUMAInfo FIXME
|
||||
# y virCgroupFree
|
||||
# N virConfFree (diagnoses the "error")
|
||||
# y virConfFreeList
|
||||
# y virConfFreeValue
|
||||
# y virDomainChrDefFree
|
||||
# y virDomainControllerDefFree
|
||||
# y virDomainDefFree
|
||||
# y virDomainDeviceDefFree
|
||||
# y virDomainDiskDefFree
|
||||
# y virDomainEventCallbackListFree
|
||||
# y virDomainEventFree
|
||||
# y virDomainEventQueueFree
|
||||
# y virDomainFSDefFree
|
||||
# n virDomainFree
|
||||
# n virDomainFreeName (can't fix -- returns int)
|
||||
# y virDomainGraphicsDefFree
|
||||
# y virDomainHostdevDefFree
|
||||
# y virDomainInputDefFree
|
||||
# y virDomainNetDefFree
|
||||
# y virDomainObjFree
|
||||
# y virDomainSnapshotDefFree
|
||||
# n virDomainSnapshotFree (returns int)
|
||||
# n virDomainSnapshotFreeName (returns int)
|
||||
# y virDomainSnapshotObjFree
|
||||
# y virDomainSoundDefFree
|
||||
# y virDomainVideoDefFree
|
||||
# y virDomainWatchdogDefFree
|
||||
# n virDrvNodeGetCellsFreeMemory (returns int)
|
||||
# n virDrvNodeGetFreeMemory (returns long long)
|
||||
# n virFree (dereferences param)
|
||||
# n virFreeError
|
||||
# n virHashFree (takes 2 args)
|
||||
# y virInterfaceDefFree
|
||||
# n virInterfaceFree (returns int)
|
||||
# n virInterfaceFreeName
|
||||
# y virInterfaceIpDefFree
|
||||
# y virInterfaceObjFree
|
||||
# n virInterfaceObjListFree
|
||||
# y virInterfaceProtocolDefFree
|
||||
# y virJSONValueFree
|
||||
# y virLastErrFreeData
|
||||
# y virNWFilterDefFree
|
||||
# y virNWFilterEntryFree
|
||||
# n virNWFilterFree (returns int)
|
||||
# y virNWFilterHashTableFree
|
||||
# y virNWFilterIPAddrLearnReqFree
|
||||
# y virNWFilterIncludeDefFree
|
||||
# n virNWFilterPoolFreeName (returns int)
|
||||
# y virNWFilterPoolObjFree
|
||||
# n virNWFilterPoolObjListFree FIXME
|
||||
# y virNWFilterRuleDefFree
|
||||
# n virNWFilterRuleFreeInstanceData (typedef)
|
||||
# y virNWFilterRuleInstFree
|
||||
# y virNetworkDefFree
|
||||
# n virNetworkFree (returns int)
|
||||
# n virNetworkFreeName (returns int)
|
||||
# y virNetworkObjFree
|
||||
# n virNetworkObjListFree FIXME
|
||||
# n virNodeDevCapsDefFree FIXME
|
||||
# y virNodeDeviceDefFree
|
||||
# n virNodeDeviceFree (returns int)
|
||||
# y virNodeDeviceObjFree
|
||||
# n virNodeDeviceObjListFree FIXME
|
||||
# n virNodeGetCellsFreeMemory (returns int)
|
||||
# n virNodeGetFreeMemory (returns non-void)
|
||||
# y virSecretDefFree
|
||||
# n virSecretFree (returns non-void)
|
||||
# n virSecretFreeName (2 args)
|
||||
# n virSecurityLabelDefFree FIXME
|
||||
# n virStorageBackendDiskMakeFreeExtent (returns non-void)
|
||||
# y virStorageEncryptionFree
|
||||
# y virStorageEncryptionSecretFree
|
||||
# n virStorageFreeType (enum)
|
||||
# y virStoragePoolDefFree
|
||||
# n virStoragePoolFree (returns non-void)
|
||||
# n virStoragePoolFreeName (returns non-void)
|
||||
# y virStoragePoolObjFree
|
||||
# n virStoragePoolObjListFree FIXME
|
||||
# y virStoragePoolSourceFree
|
||||
# y virStorageVolDefFree
|
||||
# n virStorageVolFree (returns non-void)
|
||||
# n virStorageVolFreeName (returns non-void)
|
||||
# n virStreamFree
|
||||
|
||||
# Avoid uses of write(2). Either switch to streams (fwrite), or use
|
||||
# the safewrite wrapper.
|
||||
sc_avoid_write:
|
||||
@prohibit='\<write *\(' \
|
||||
in_vc_files='\.c$$' \
|
||||
halt='consider using safewrite instead of write' \
|
||||
$(_sc_search_regexp)
|
||||
|
||||
# Use STREQ rather than comparing strcmp == 0, or != 0.
|
||||
# Similarly, use STREQLEN or STRPREFIX rather than strncmp.
|
||||
sc_prohibit_strcmp_and_strncmp:
|
||||
@prohibit='strn?cmp *\(' \
|
||||
halt='use STREQ() in place of the above uses of str[n]cmp' \
|
||||
$(_sc_search_regexp)
|
||||
|
||||
# Use virAsprintf rather than a'sprintf since *strp is undefined on error.
|
||||
sc_prohibit_asprintf:
|
||||
@prohibit='\<[a]sprintf\>' \
|
||||
halt='use virAsprintf, not a'sprintf \
|
||||
$(_sc_search_regexp)
|
||||
|
||||
sc_prohibit_strncpy:
|
||||
@prohibit='strncpy *\(' \
|
||||
halt='use virStrncpy, not strncpy' \
|
||||
$(_sc_search_regexp)
|
||||
|
||||
sc_prohibit_readlink:
|
||||
@prohibit='readlink *\(' \
|
||||
halt='use virFileResolveLink, not readlink' \
|
||||
$(_sc_search_regexp)
|
||||
|
||||
sc_prohibit_gethostname:
|
||||
@prohibit='gethostname *\(' \
|
||||
halt='use virGetHostname, not gethostname' \
|
||||
$(_sc_search_regexp)
|
||||
|
||||
sc_prohibit_gettext_noop:
|
||||
@prohibit='gettext_noop *\(' \
|
||||
halt='use N_, not gettext_noop' \
|
||||
$(_sc_search_regexp)
|
||||
|
||||
sc_prohibit_VIR_ERR_NO_MEMORY:
|
||||
@prohibit='\<V''IR_ERR_NO_MEMORY\>' \
|
||||
halt='use virReportOOMError, not V'IR_ERR_NO_MEMORY \
|
||||
$(_sc_search_regexp)
|
||||
|
||||
# Use a subshell for each function, to give the optimal warning message.
|
||||
include $(srcdir)/Makefile.nonreentrant
|
||||
sc_prohibit_nonreentrant:
|
||||
@fail=0 ; \
|
||||
for i in $(NON_REENTRANT) ; \
|
||||
do \
|
||||
(prohibit="\\<$$i *\\(" \
|
||||
halt="use $${i}_r, not $$i" \
|
||||
$(_sc_search_regexp) \
|
||||
) || fail=1; \
|
||||
done ; \
|
||||
exit $$fail
|
||||
|
||||
# Prohibit the inclusion of <ctype.h>.
|
||||
sc_prohibit_ctype_h:
|
||||
@prohibit='^# *include *<ctype\.h>' \
|
||||
halt="don't use ctype.h; instead, use c-ctype.h" \
|
||||
$(_sc_search_regexp)
|
||||
|
||||
# Ensure that no C source file or rng schema uses TABs for
|
||||
# indentation. Also match *.h.in files, to get libvirt.h.in. Exclude
|
||||
# files in gnulib, since they're imported.
|
||||
sc_TAB_in_indentation:
|
||||
@prohibit='^ * ' \
|
||||
in_vc_files='(\.(rng|[ch](\.in)?)|(daemon|tools)/.*\.in)$$' \
|
||||
halt='use spaces, not TAB, for indentation in C, sh, and RNG schemas' \
|
||||
$(_sc_search_regexp)
|
||||
|
||||
ctype_re = isalnum|isalpha|isascii|isblank|iscntrl|isdigit|isgraph|islower\
|
||||
|isprint|ispunct|isspace|isupper|isxdigit|tolower|toupper
|
||||
|
||||
sc_avoid_ctype_macros:
|
||||
@prohibit='\b($(ctype_re)) *\(' \
|
||||
halt="don't use ctype macros (use c-ctype.h)" \
|
||||
$(_sc_search_regexp)
|
||||
|
||||
sc_prohibit_virBufferAdd_with_string_literal:
|
||||
@prohibit='\<virBufferAdd *\([^,]+, *"[^"]' \
|
||||
halt='use virBufferAddLit, not virBufferAdd, with a string literal' \
|
||||
$(_sc_search_regexp)
|
||||
|
||||
# Not only do they fail to deal well with ipv6, but the gethostby*
|
||||
# functions are also not thread-safe.
|
||||
sc_prohibit_gethostby:
|
||||
@prohibit='\<gethostby(addr|name2?) *\(' \
|
||||
halt='use getaddrinfo, not gethostby*' \
|
||||
$(_sc_search_regexp)
|
||||
|
||||
# Many of the function names below came from this filter:
|
||||
# git grep -B2 '\<_('|grep -E '\.c- *[[:alpha:]_][[:alnum:]_]* ?\(.*[,;]$' \
|
||||
# |sed 's/.*\.c- *//'|perl -pe 's/ ?\(.*//'|sort -u \
|
||||
# |grep -vE '^(qsort|if|close|assert|fputc|free|N_|vir.*GetName|.*Unlock|virNodeListDevices|virHashRemoveEntry|freeaddrinfo|.*[fF]ree|xdrmem_create|xmlXPathFreeObject|virUUIDFormat|openvzSetProgramSentinal|polkit_action_unref)$'
|
||||
|
||||
msg_gen_function =
|
||||
msg_gen_function += ESX_ERROR
|
||||
msg_gen_function += ESX_VI_ERROR
|
||||
msg_gen_function += macvtapError
|
||||
msg_gen_function += remoteError
|
||||
msg_gen_function += lxcError
|
||||
msg_gen_function += networkLog
|
||||
msg_gen_function += networkReportError
|
||||
msg_gen_function += oneError
|
||||
msg_gen_function += openvzError
|
||||
msg_gen_function += qemudDispatchClientFailure
|
||||
msg_gen_function += qemudReportError
|
||||
msg_gen_function += regerror
|
||||
msg_gen_function += remoteDispatchFormatError
|
||||
msg_gen_function += umlReportError
|
||||
msg_gen_function += vboxError
|
||||
msg_gen_function += virConfError
|
||||
msg_gen_function += virDomainReportError
|
||||
msg_gen_function += virSecurityReportError
|
||||
msg_gen_function += virHashError
|
||||
msg_gen_function += virLibConnError
|
||||
msg_gen_function += virLibDomainError
|
||||
msg_gen_function += virNetworkReportError
|
||||
msg_gen_function += virNodeDeviceReportError
|
||||
msg_gen_function += virProxyError
|
||||
msg_gen_function += virRaiseError
|
||||
msg_gen_function += virReportErrorHelper
|
||||
msg_gen_function += virReportSystemError
|
||||
msg_gen_function += virSexprError
|
||||
msg_gen_function += virStorageReportError
|
||||
msg_gen_function += virXMLError
|
||||
msg_gen_function += virXenInotifyError
|
||||
msg_gen_function += virXenStoreError
|
||||
msg_gen_function += virXendError
|
||||
msg_gen_function += xenapiSessionErrorHandler
|
||||
msg_gen_function += xenUnifiedError
|
||||
msg_gen_function += xenXMError
|
||||
msg_gen_function += VIR_ERROR
|
||||
msg_gen_function += VIR_ERROR0
|
||||
|
||||
# Uncomment the following and run "make syntax-check" to see diagnostics
|
||||
# that are not yet marked for translation, but that need to be rewritten
|
||||
# so that they are translatable.
|
||||
# msg_gen_function += fprintf
|
||||
# msg_gen_function += testError
|
||||
# msg_gen_function += virXenError
|
||||
# msg_gen_function += vshPrint
|
||||
# msg_gen_function += vshError
|
||||
|
||||
func_or := $(shell printf '$(msg_gen_function)'|tr -s '[[:space:]]' '|')
|
||||
func_re := ($(func_or))
|
||||
|
||||
# Look for diagnostics that aren't marked for translation.
|
||||
# This won't find any for which error's format string is on a separate line.
|
||||
# The sed filters eliminate false-positives like these:
|
||||
# _("...: "
|
||||
# "%s", _("no storage vol w..."
|
||||
sc_libvirt_unmarked_diagnostics:
|
||||
@grep -nE \
|
||||
'\<$(func_re) *\([^"]*"[^"]*[a-z]{3}' $$($(VC_LIST_EXCEPT)) \
|
||||
| grep -v '_''(' && \
|
||||
{ echo '$(ME): found unmarked diagnostic(s)' 1>&2; \
|
||||
exit 1; } || :
|
||||
@{ grep -nE '\<$(func_re) *\(.*;$$' $$($(VC_LIST_EXCEPT)); \
|
||||
grep -A1 -nE '\<$(func_re) *\(.*,$$' $$($(VC_LIST_EXCEPT)); } \
|
||||
| sed 's/_("[^"][^"]*"//;s/[ ]"%s"//' \
|
||||
| grep '[ ]"' && \
|
||||
{ echo '$(ME): found unmarked diagnostic(s)' 1>&2; \
|
||||
exit 1; } || :
|
||||
|
||||
# Like the above, but prohibit a newline at the end of a diagnostic.
|
||||
# This is subject to false positives partly because it naively looks for
|
||||
# `\n"', which may not be the end of the string, and also because it takes
|
||||
# two lines of context (the -A2) after the line with the function name.
|
||||
# FIXME: this rule might benefit from a separate function list, in case
|
||||
# there are functions to which this one applies but that do not get marked
|
||||
# diagnostics.
|
||||
sc_prohibit_newline_at_end_of_diagnostic:
|
||||
@grep -A2 -nE \
|
||||
'\<$(func_re) *\(' $$($(VC_LIST_EXCEPT)) \
|
||||
| grep '\\n"' \
|
||||
&& { echo '$(ME): newline at end of message(s)' 1>&2; \
|
||||
exit 1; } || :
|
||||
|
||||
# Disallow trailing blank lines.
|
||||
sc_prohibit_trailing_blank_lines:
|
||||
@$(VC_LIST_EXCEPT) | xargs perl -ln -0777 -e \
|
||||
'/\n\n+$$/ and print $$ARGV' > $@-t
|
||||
@found=0; test -s $@-t && { found=1; cat $@-t 1>&2; \
|
||||
echo '$(ME): found trailing blank line(s)' 1>&2; }; \
|
||||
rm -f $@-t; \
|
||||
test $$found = 0
|
||||
|
||||
# Regex for grep -E that exempts generated files from style rules.
|
||||
preprocessor_exempt = (remote_(driver|protocol)\.h)$$
|
||||
# Enforce recommended preprocessor indentation style.
|
||||
sc_preprocessor_indentation:
|
||||
@if cppi --version >/dev/null 2>&1; then \
|
||||
$(VC_LIST_EXCEPT) | grep '\.[ch]$$' \
|
||||
| grep -vE '$(preprocessor_exempt)' | xargs cppi -a -c \
|
||||
|| { echo '$(ME): incorrect preprocessor indentation' 1>&2; \
|
||||
exit 1; }; \
|
||||
else \
|
||||
echo '$(ME): skipping test $@: cppi not installed' 1>&2; \
|
||||
fi
|
||||
|
||||
sc_copyright_format:
|
||||
@require='Copyright .*Red 'Hat', Inc\.' \
|
||||
containing='Copyright .*Red 'Hat \
|
||||
halt='Red Hat copyright is missing Inc.' \
|
||||
$(_sc_search_regexp)
|
||||
@prohibit='Copyright [^(].*Red 'Hat \
|
||||
halt='consistently use (C) in Red Hat copyright' \
|
||||
$(_sc_search_regexp)
|
||||
|
||||
# Some functions/macros produce messages intended solely for developers
|
||||
# and maintainers. Do not mark them for translation.
|
||||
sc_prohibit_gettext_markup:
|
||||
@prohibit='\<VIR_(WARN|DEBUG)0? *\(_\(' \
|
||||
halt='do not mark these strings for translation' \
|
||||
$(_sc_search_regexp)
|
||||
|
||||
# We don't use this feature of maint.mk.
|
||||
prev_version_file = /dev/null
|
||||
|
||||
ifeq (0,$(MAKELEVEL))
|
||||
_curr_status = .git-module-status
|
||||
# The sed filter accommodates those who check out on a commit from which
|
||||
# no tag is reachable. In that case, git submodule status prints a "-"
|
||||
# in column 1 and does not print a "git describe"-style string after the
|
||||
# submodule name. Contrast these:
|
||||
# -b653eda3ac4864de205419d9f41eec267cb89eeb .gnulib
|
||||
# b653eda3ac4864de205419d9f41eec267cb89eeb .gnulib (v0.0-2286-gb653eda)
|
||||
# $ cat .git-module-status
|
||||
# b653eda3ac4864de205419d9f41eec267cb89eeb
|
||||
_submodule_hash = sed 's/^[ +-]//;s/ .*//'
|
||||
_update_required := $(shell \
|
||||
cd '$(srcdir)'; \
|
||||
actual=$$(git submodule status | $(_submodule_hash); \
|
||||
git hash-object bootstrap.conf; \
|
||||
git diff .gnulib); \
|
||||
stamp="$$($(_submodule_hash) $(_curr_status) 2>/dev/null)"; \
|
||||
test "$$stamp" = "$$actual"; echo $$?)
|
||||
_clean_requested = $(filter %clean,$(MAKECMDGOALS))
|
||||
ifeq (1,$(_update_required)$(_clean_requested))
|
||||
$(info INFO: gnulib update required; running ./autogen.sh first)
|
||||
Makefile: _autogen
|
||||
endif
|
||||
endif
|
||||
|
||||
# Give credit where due:
|
||||
# Ensure that each commit author email address (possibly mapped via
|
||||
# git log's .mailmap) appears in our AUTHORS file.
|
||||
sc_check_author_list:
|
||||
@fail=0; \
|
||||
for i in $$(git log --pretty=format:%aE%n|sort -u|grep -v '^$$'); do \
|
||||
sanitized=$$(echo "$$i"|LC_ALL=C sed 's/\([^a-zA-Z0-9_@-]\)/\\\1/g'); \
|
||||
grep -iq "<$$sanitized>" $(srcdir)/AUTHORS \
|
||||
|| { printf '%s\n' "$$i" >&2; fail=1; }; \
|
||||
done; \
|
||||
test $$fail = 1 \
|
||||
&& echo '$(ME): committer(s) not listed in AUTHORS' >&2; \
|
||||
test $$fail = 0
|
||||
|
||||
# It is necessary to call autogen any time gnulib changes. Autogen
|
||||
# reruns configure, then we regenerate all Makefiles at once.
|
||||
.PHONY: _autogen
|
||||
_autogen:
|
||||
$(srcdir)/autogen.sh
|
||||
./config.status
|
||||
|
||||
# Exempt @...@ uses of these symbols.
|
||||
_makefile_at_at_check_exceptions = ' && !/(SCHEMA|SYSCONF)DIR/'
|
||||
2299
configure.ac
Normal file
2299
configure.ac
Normal file
File diff suppressed because it is too large
Load Diff
492
configure.in
492
configure.in
@ -1,492 +0,0 @@
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
AC_INIT(src/libvirt.c)
|
||||
AM_CONFIG_HEADER(config.h)
|
||||
AC_CANONICAL_HOST
|
||||
|
||||
LIBVIRT_MAJOR_VERSION=0
|
||||
LIBVIRT_MINOR_VERSION=3
|
||||
LIBVIRT_MICRO_VERSION=2
|
||||
LIBVIRT_MICRO_VERSION_SUFFIX=
|
||||
LIBVIRT_VERSION=$LIBVIRT_MAJOR_VERSION.$LIBVIRT_MINOR_VERSION.$LIBVIRT_MICRO_VERSION$LIBVIRT_MICRO_VERSION_SUFFIX
|
||||
LIBVIRT_VERSION_INFO=`expr $LIBVIRT_MAJOR_VERSION + $LIBVIRT_MINOR_VERSION`:$LIBVIRT_MICRO_VERSION:$LIBVIRT_MINOR_VERSION
|
||||
|
||||
LIBVIRT_VERSION_NUMBER=`expr $LIBVIRT_MAJOR_VERSION \* 1000000 + $LIBVIRT_MINOR_VERSION \* 1000 + $LIBVIRT_MICRO_VERSION`
|
||||
|
||||
if test -f CVS/Entries; then
|
||||
extra=`grep ChangeLog CVS/Entries | grep -v LIBVIR | sed -e s\%/ChangeLog/1\.%% -e s\%/.*$%%`
|
||||
echo extra=$extra
|
||||
if test "$extra" != ""
|
||||
then
|
||||
LIBVIRT_VERSION_EXTRA="-CVS$extra"
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_SUBST(LIBVIRT_MAJOR_VERSION)
|
||||
AC_SUBST(LIBVIRT_MINOR_VERSION)
|
||||
AC_SUBST(LIBVIRT_MICRO_VERSION)
|
||||
AC_SUBST(LIBVIRT_VERSION)
|
||||
AC_SUBST(LIBVIRT_VERSION_INFO)
|
||||
AC_SUBST(LIBVIRT_VERSION_NUMBER)
|
||||
AC_SUBST(LIBVIRT_VERSION_EXTRA)
|
||||
|
||||
VERSION=${LIBVIRT_VERSION}
|
||||
|
||||
AM_INIT_AUTOMAKE(libvirt, $VERSION)
|
||||
|
||||
dnl Checks for programs.
|
||||
AC_PROG_CC
|
||||
AC_PROG_INSTALL
|
||||
AC_PROG_CPP
|
||||
AC_PATH_PROG(RM, rm, /bin/rm)
|
||||
AC_PATH_PROG(MV, mv, /bin/mv)
|
||||
AC_PATH_PROG(TAR, tar, /bin/tar)
|
||||
AC_PATH_PROG(XMLLINT, xmllint, /usr/bin/xmllint)
|
||||
AC_PATH_PROG(XSLTPROC, xsltproc, /usr/bin/xsltproc)
|
||||
|
||||
dnl Make sure we have an ANSI compiler
|
||||
AM_C_PROTOTYPES
|
||||
test "x$U" != "x" && AC_MSG_ERROR(Compiler not ANSI compliant)
|
||||
|
||||
AM_PROG_LIBTOOL
|
||||
|
||||
AM_PROG_CC_C_O
|
||||
|
||||
LIBVIRT_COMPILE_WARNINGS(maximum)
|
||||
|
||||
dnl Availability of various common functions (non-fatal if missing).
|
||||
AC_CHECK_FUNCS([regexec])
|
||||
|
||||
dnl Availability of various common headers (non-fatal if missing).
|
||||
AC_CHECK_HEADERS(paths.h)
|
||||
|
||||
dnl Specific dir for HTML output ?
|
||||
AC_ARG_WITH(html-dir, AC_HELP_STRING([--with-html-dir=path],
|
||||
[path to base html directory, default $datadir/doc/html]),
|
||||
[HTML_DIR=$withval], [HTML_DIR='$(datadir)/doc'])
|
||||
|
||||
AC_ARG_WITH(html-subdir, AC_HELP_STRING([--with-html-subdir=path],
|
||||
[directory used under html-dir, default $PACKAGE-$VERSION/html]),
|
||||
[test "x$withval" != "x" && HTML_DIR="$HTML_DIR/$withval"],
|
||||
[HTML_DIR="$HTML_DIR/\$(PACKAGE)-\$(VERSION)/html"])
|
||||
AC_SUBST(HTML_DIR)
|
||||
|
||||
dnl Allow to build without Xen, QEMU/KVM, test or remote driver
|
||||
AC_ARG_WITH(xen,
|
||||
[ --with-xen add XEN support (on)])
|
||||
AC_ARG_WITH(qemu,
|
||||
[ --with-qemu add QEMU/KVM support (on)])
|
||||
AC_ARG_WITH(openvz,
|
||||
[ --with-openvz add OpenVZ support (off)])
|
||||
AC_ARG_WITH(test,
|
||||
[ --with-test add test driver support (on)])
|
||||
AC_ARG_WITH(remote,
|
||||
[ --with-remote add remote driver support (on)])
|
||||
|
||||
dnl
|
||||
dnl specific tests to setup DV devel environments with debug etc ...
|
||||
dnl
|
||||
if [[ "${LOGNAME}" = "veillard" -a "`pwd`" = "/u/veillard/libvirt" ]] ; then
|
||||
STATIC_BINARIES="-static"
|
||||
else
|
||||
STATIC_BINARIES=
|
||||
fi
|
||||
AC_SUBST(STATIC_BINARIES)
|
||||
|
||||
dnl --enable-debug=(yes|no)
|
||||
AC_ARG_ENABLE(debug,
|
||||
AC_HELP_STRING([--enable-debug=no/yes],
|
||||
[enable debugging output]))
|
||||
if test x"$enable_debug" = x"yes"; then
|
||||
AC_DEFINE(ENABLE_DEBUG, [], [whether debugging is enabled])
|
||||
fi
|
||||
|
||||
dnl --disable-stack-protector
|
||||
AC_ARG_ENABLE(stack-protector,
|
||||
AC_HELP_STRING([--disable-stack-protector],
|
||||
[disable stack protector]),
|
||||
[],
|
||||
[enable_stack_protector=yes])
|
||||
if test x"$enable_stack_protector" = x"yes"; then
|
||||
CFLAGS="$CFLAGS -fstack-protector --param=ssp-buffer-size=4"
|
||||
fi
|
||||
|
||||
|
||||
AC_MSG_CHECKING([where to write libvirtd PID file])
|
||||
AC_ARG_WITH(remote-pid-file, AC_HELP_STRING([--with-remote-pid-file=[pidfile|none]], [PID file for libvirtd]))
|
||||
if test "x$with_remote_pid_file" == "x" ; then
|
||||
REMOTE_PID_FILE="$localstatedir/run/libvirtd.pid"
|
||||
elif test "x$with_remote_pid_file" == "xnone" ; then
|
||||
REMOTE_PID_FILE=""
|
||||
else
|
||||
REMOTE_PID_FILE="$with_remote_pid_file"
|
||||
fi
|
||||
AC_SUBST(REMOTE_PID_FILE)
|
||||
AC_MSG_RESULT($REMOTE_PID_FILE)
|
||||
|
||||
dnl
|
||||
dnl init script flavor
|
||||
dnl
|
||||
AC_MSG_CHECKING([for init script flavor])
|
||||
AC_ARG_WITH(init-script,
|
||||
AC_HELP_STRING([--with-init-scripts=[redhat|auto|none]],
|
||||
[Style of init scripts to install (defaults to auto)]))
|
||||
if test "x$with_init_scripts" = "x" -o "x$with_init_scripts" = "xauto"; then
|
||||
if test -f /etc/redhat-release ; then
|
||||
with_init_scripts=redhat
|
||||
else
|
||||
with_init_scripts=none
|
||||
fi
|
||||
fi
|
||||
AM_CONDITIONAL(LIBVIRT_INIT_SCRIPTS_RED_HAT, test x$with_init_scripts = xredhat)
|
||||
AC_MSG_RESULT($with_init_scripts)
|
||||
|
||||
dnl
|
||||
dnl allow the creation of iptables rules in chains with a
|
||||
dnl specific prefix rather than in the standard toplevel chains
|
||||
dnl
|
||||
AC_ARG_WITH(iptables-prefix,
|
||||
AC_HELP_STRING([--with-iptables-prefix=prefix],
|
||||
[prefix used for iptables chains, default is to use standard toplevel chains]),
|
||||
[IPTABLES_PREFIX=$withval])
|
||||
AC_DEFINE_UNQUOTED(IPTABLES_PREFIX, "$IPTABLES_PREFIX", [prefix used for iptables chains])
|
||||
|
||||
dnl
|
||||
dnl also support saving the various chains to files
|
||||
dnl in e.g. /etc/sysconfig/iptables.d
|
||||
dnl
|
||||
AC_ARG_WITH(iptables-dir,
|
||||
AC_HELP_STRING([--with-iptables-dir=path],
|
||||
[directory used to save iptables chains, defaults to not saving]),
|
||||
[IPTABLES_DIR=$withval])
|
||||
if test x"$IPTABLES_DIR" != "x"; then
|
||||
AC_DEFINE_UNQUOTED(IPTABLES_DIR, "$IPTABLES_DIR", [directory used for saving iptables chains])
|
||||
fi
|
||||
|
||||
AC_PATH_PROG(IPTABLES_PATH, iptables, /sbin/iptables)
|
||||
AC_DEFINE_UNQUOTED(IPTABLES_PATH, "$IPTABLES_PATH", [path to iptables binary])
|
||||
|
||||
dnl
|
||||
dnl Specify the xen-distribution directory to be able to compile on a
|
||||
dnl non-xenified host
|
||||
dnl
|
||||
AC_ARG_WITH(xen-distdir, AC_HELP_STRING([--with-xen-distdir=path],
|
||||
[distribution directory of Xen, default /usr]))
|
||||
if test "x$with_xen_distdir" != "x"
|
||||
then
|
||||
CPPFLAGS="$CPPFLAGS -I$withval/install/usr/include"
|
||||
LDFLAGS="$LDFLAGS -L$withval/install/usr/lib"
|
||||
fi
|
||||
|
||||
dnl
|
||||
dnl To be able to make dist on a non-xenified host
|
||||
dnl
|
||||
AC_ARG_WITH(depends,
|
||||
[ --with-depends check for dependancies (on)])
|
||||
|
||||
LIBVIRT_FEATURES=
|
||||
WITH_XEN=0
|
||||
|
||||
if test "$with_openvz" = "yes" ; then
|
||||
echo "Enabling OpenVZ support"
|
||||
LIBVIRT_FEATURES="$LIBVIRT_FEATURES -DWITH_OPENVZ"
|
||||
else
|
||||
echo "Disabling OpenVZ support"
|
||||
fi
|
||||
if test "$with_qemu" = "no" ; then
|
||||
echo "Disabling QEMU/KVM support"
|
||||
else
|
||||
LIBVIRT_FEATURES="$LIBVIRT_FEATURES -DWITH_QEMU"
|
||||
fi
|
||||
|
||||
if test "$with_test" = "no" ; then
|
||||
echo "Disabling test driver support"
|
||||
else
|
||||
LIBVIRT_FEATURES="$LIBVIRT_FEATURES -DWITH_TEST"
|
||||
fi
|
||||
|
||||
if test "$with_remote" = "no" ; then
|
||||
echo "Disabling remote driver support"
|
||||
else
|
||||
LIBVIRT_FEATURES="$LIBVIRT_FEATURES -DWITH_REMOTE"
|
||||
fi
|
||||
|
||||
if test "$with_depends" != "no"
|
||||
then
|
||||
|
||||
if test "$with_xen" = "no" ; then
|
||||
echo Disabling XEN support
|
||||
else
|
||||
dnl search for the Xen store library
|
||||
AC_SEARCH_LIBS(xs_read, [xenstore],
|
||||
[WITH_XEN=1],
|
||||
[AC_MSG_RESULT([Xen store library not found])])
|
||||
if test "$WITH_XEN" != "0" ; then
|
||||
LIBVIRT_FEATURES="$LIBVIRT_FEATURES -DWITH_XEN"
|
||||
fi
|
||||
|
||||
AC_CHECK_HEADERS(xen/xen.h xen/version.h xen/dom0_ops.h,,[
|
||||
AC_MSG_ERROR([Cannot find standard Xen headers. Is xen-devel installed?])
|
||||
],
|
||||
[#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
])
|
||||
|
||||
dnl Search for the location of <xen/{linux,sys}/privcmd.h>.
|
||||
AC_CHECK_HEADERS(xen/sys/privcmd.h,,[
|
||||
AC_CHECK_HEADERS(xen/linux/privcmd.h,,[
|
||||
AC_MSG_ERROR([Cannot find header file <xen/linux/privcmd.h> or <xen/sys/privcmd.h>. Is xen-devel installed?])
|
||||
],
|
||||
[#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <xen/xen.h>
|
||||
])
|
||||
],
|
||||
[#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <xen/xen.h>
|
||||
])
|
||||
fi
|
||||
|
||||
dnl
|
||||
dnl check for kernel headers required by qemud/bridge.c
|
||||
dnl
|
||||
AC_CHECK_HEADERS(linux/param.h linux/sockios.h linux/if_bridge.h linux/if_tun.h,,
|
||||
AC_MSG_ERROR([You must install kernel-headers in order to compile libvirt]))
|
||||
|
||||
dnl ==========================================================================
|
||||
dnl find libxml2 library, borrowed from xmlsec
|
||||
dnl ==========================================================================
|
||||
LIBXML_MIN_VERSION="2.5.0"
|
||||
LIBXML_CONFIG="xml2-config"
|
||||
LIBXML_CFLAGS=""
|
||||
LIBXML_LIBS=""
|
||||
LIBXML_FOUND="no"
|
||||
AC_ARG_WITH(libxml, [ --with-libxml=[PFX] libxml2 location])
|
||||
if test "z$with_libxml" = "zno" ; then
|
||||
AC_MSG_CHECKING(for libxml2 libraries >= $LIBXML_MIN_VERSION)
|
||||
AC_MSG_ERROR(libxml2 >= $LIBXML_MIN_VERSION is required for $XMLSEC_PACKAGE)
|
||||
elif test "z$with_libxml" = "z" -a "z$PKG_CONFIG_ENABLED" = "zyes" ; then
|
||||
PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= $LIBXML_MIN_VERSION,
|
||||
[LIBXML_FOUND=yes],
|
||||
[LIBXML_FOUND=no])
|
||||
fi
|
||||
AC_MSG_CHECKING(libxml2 $with_libxml $LIBXML_FOUND )
|
||||
if test "z$LIBXML_FOUND" = "zno" ; then
|
||||
AC_MSG_CHECKING(for libxml2 libraries >= $LIBXML_MIN_VERSION)
|
||||
if test "z$with_libxml" != "z" ; then
|
||||
LIBXML_CONFIG=$with_libxml/bin/$LIBXML_CONFIG
|
||||
fi
|
||||
AC_MSG_CHECKING(libxml2 $with_libxml $LIBXML_CONFIG )
|
||||
if ! $LIBXML_CONFIG --version > /dev/null 2>&1 ; then
|
||||
AC_MSG_ERROR(Could not find libxml2 anywhere (see config.log for details).)
|
||||
fi
|
||||
vers=`$LIBXML_CONFIG --version | awk -F. '{ printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
|
||||
minvers=`echo $LIBXML_MIN_VERSION | awk -F. '{ printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
|
||||
if test "$vers" -ge "$minvers" ; then
|
||||
LIBXML_LIBS="`$LIBXML_CONFIG --libs`"
|
||||
LIBXML_CFLAGS="`$LIBXML_CONFIG --cflags`"
|
||||
LIBXML_FOUND="yes"
|
||||
AC_MSG_RESULT(yes ('$LIBXML_VERSION'))
|
||||
else
|
||||
AC_MSG_ERROR(You need at least libxml2 $LIBXML_MIN_VERSION for this version of $XMLSEC_PACKAGE)
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_SUBST(LIBXML_CFLAGS)
|
||||
AC_SUBST(LIBXML_LIBS)
|
||||
AC_SUBST(LIBXML_CONFIG)
|
||||
AC_SUBST(LIBXML_MIN_VERSION)
|
||||
|
||||
dnl xmlURI structure has query_raw?
|
||||
old_cflags="$CFLAGS"
|
||||
CFLAGS="$CFLAGS $LIBXML_CFLAGS"
|
||||
AC_CHECK_MEMBER(struct _xmlURI.query_raw,
|
||||
[AC_DEFINE(HAVE_XMLURI_QUERY_RAW, [], [Have query_raw field in libxml2 xmlURI structure])],,
|
||||
[#include <libxml/uri.h>])
|
||||
CFLAGS="$old_cflags"
|
||||
|
||||
dnl GnuTLS library
|
||||
AC_CHECK_HEADER([gnutls/gnutls.h],
|
||||
[],
|
||||
AC_MSG_ERROR([You must install the GnuTLS development package in order to compile libvirt]))
|
||||
AC_CHECK_LIB(gnutls, gnutls_handshake,
|
||||
[],
|
||||
[AC_MSG_ERROR([You must install the GnuTLS library in order to compile and run libvirt])])
|
||||
|
||||
dnl Old versions of GnuTLS uses types like 'gnutls_session' instead
|
||||
dnl of 'gnutls_session_t'. Try to detect this type if defined so
|
||||
dnl that we can offer backwards compatibility.
|
||||
AC_CHECK_TYPE(gnutls_session,
|
||||
AC_DEFINE(GNUTLS_1_0_COMPAT,[],
|
||||
[enable GnuTLS 1.0 compatibility macros]),,
|
||||
[#include <gnutls/gnutls.h>])
|
||||
|
||||
dnl virsh libraries
|
||||
AC_CHECK_LIB(curses, initscr,
|
||||
[VIRSH_LIBS="$VIRSH_LIBS -lcurses"],
|
||||
[AC_CHECK_LIB(ncurses, initscr,
|
||||
[VIRSH_LIBS="$VIRSH_LIBS -lncurses"],
|
||||
[AC_MSG_ERROR([curses/ncurses library not found])],
|
||||
[$VIRSH_LIBS])],
|
||||
[$VIRSH_LIBS])
|
||||
AC_CHECK_LIB(readline, main,
|
||||
[VIRSH_LIBS="$VIRSH_LIBS -lreadline"],
|
||||
[AC_MSG_ERROR([readline library not found])],
|
||||
[$VIRSH_LIBS])
|
||||
AC_SUBST(VIRSH_LIBS)
|
||||
|
||||
# end of if with_depends
|
||||
fi
|
||||
|
||||
AC_SUBST(WITH_XEN)
|
||||
AC_SUBST(LIBVIRT_FEATURES)
|
||||
|
||||
dnl
|
||||
dnl check for python
|
||||
dnl
|
||||
|
||||
PYTHON_VERSION=
|
||||
PYTHON_INCLUDES=
|
||||
PYTHON_SITE_PACKAGES=
|
||||
PYTHON_TESTS=
|
||||
pythondir=
|
||||
if test "$with_python" != "no" ; then
|
||||
if test -x "$with_python/bin/python"
|
||||
then
|
||||
echo Found python in $with_python/bin/python
|
||||
PYTHON="$with_python/bin/python"
|
||||
else
|
||||
if test -x "$with_python"
|
||||
then
|
||||
echo Found python in $with_python
|
||||
PYTHON="$with_python"
|
||||
else
|
||||
if test -x "$PYTHON"
|
||||
then
|
||||
echo Found python in environment PYTHON=$PYTHON
|
||||
with_python=`$PYTHON -c "import sys; print sys.exec_prefix"`
|
||||
else
|
||||
AC_PATH_PROG(PYTHON, python python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 python1.6 python1.5)
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if test "$PYTHON" != ""
|
||||
then
|
||||
PYTHON_VERSION=`$PYTHON -c "import sys; print sys.version[[0:3]]"`
|
||||
echo Found Python version $PYTHON_VERSION
|
||||
fi
|
||||
if test "$PYTHON_VERSION" != ""
|
||||
then
|
||||
if test -r $with_python/include/python$PYTHON_VERSION/Python.h -a \
|
||||
-d $with_python/lib/python$PYTHON_VERSION/site-packages
|
||||
then
|
||||
PYTHON_INCLUDES=$with_python/include/python$PYTHON_VERSION
|
||||
PYTHON_SITE_PACKAGES=$libdir/python$PYTHON_VERSION/site-packages
|
||||
else
|
||||
if test -r $prefix/include/python$PYTHON_VERSION/Python.h
|
||||
then
|
||||
PYTHON_INCLUDES=$prefix/include/python$PYTHON_VERSION
|
||||
PYTHON_SITE_PACKAGES=$libdir/python$PYTHON_VERSION/site-packages
|
||||
else
|
||||
if test -r /usr/include/python$PYTHON_VERSION/Python.h
|
||||
then
|
||||
PYTHON_INCLUDES=/usr/include/python$PYTHON_VERSION
|
||||
PYTHON_SITE_PACKAGES=$libdir/python$PYTHON_VERSION/site-packages
|
||||
else
|
||||
echo could not find python$PYTHON_VERSION/Python.h
|
||||
fi
|
||||
fi
|
||||
if test ! -d "$PYTHON_SITE_PACKAGES"
|
||||
then
|
||||
PYTHON_SITE_PACKAGES=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib()"`
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if test "$with_python" != ""
|
||||
then
|
||||
pythondir='$(PYTHON_SITE_PACKAGES)'
|
||||
else
|
||||
pythondir='$(libdir)/python$(PYTHON_VERSION)/site-packages'
|
||||
fi
|
||||
else
|
||||
PYTHON=
|
||||
fi
|
||||
AM_CONDITIONAL(WITH_PYTHON, test "$PYTHON_INCLUDES" != "")
|
||||
if test "$PYTHON_INCLUDES" != ""
|
||||
then
|
||||
PYTHON_SUBDIR=python
|
||||
else
|
||||
PYTHON_SUBDIR=
|
||||
fi
|
||||
AC_SUBST(pythondir)
|
||||
AC_SUBST(PYTHON_SUBDIR)
|
||||
AC_SUBST(PYTHON_VERSION)
|
||||
AC_SUBST(PYTHON_INCLUDES)
|
||||
AC_SUBST(PYTHON_SITE_PACKAGES)
|
||||
|
||||
AC_MSG_CHECKING([whether this host is running a Xen kernel])
|
||||
RUNNING_XEN=
|
||||
if test -d /proc/sys/xen
|
||||
then
|
||||
RUNNING_XEN=yes
|
||||
else
|
||||
RUNNING_XEN=no
|
||||
fi
|
||||
AC_MSG_RESULT($RUNNING_XEN)
|
||||
|
||||
AC_MSG_CHECKING([If XenD UNIX socket /var/run/xend/xmlrpc.sock is accessible])
|
||||
RUNNING_XEND=
|
||||
if test -S /var/run/xend/xmlrpc.sock
|
||||
then
|
||||
RUNNING_XEND=yes
|
||||
else
|
||||
RUNNING_XEND=no
|
||||
fi
|
||||
AC_MSG_RESULT($RUNNING_XEND)
|
||||
|
||||
AM_CONDITIONAL(ENABLE_XEN_TESTS, [test "$RUNNING_XEN" != "no" -a "$RUNNING_XEND" != "no"])
|
||||
|
||||
AC_ARG_ENABLE(test-coverage,
|
||||
[ --enable-test-coverage turn on code coverage instrumentation],
|
||||
[case "${enableval}" in
|
||||
yes|no) ;;
|
||||
*) AC_MSG_ERROR([bad value ${enableval} for test-coverage option]) ;;
|
||||
esac],
|
||||
[enableval=no])
|
||||
|
||||
if test "${enableval}" = yes; then
|
||||
gl_COMPILER_FLAGS(-fprofile-arcs)
|
||||
gl_COMPILER_FLAGS(-ftest-coverage)
|
||||
AC_SUBST([COVERAGE_CFLAGS], [$COMPILER_FLAGS])
|
||||
AC_SUBST([COVERAGE_LDFLAGS], [$COMPILER_FLAGS])
|
||||
COMPILER_FLAGS=
|
||||
fi
|
||||
|
||||
|
||||
AM_GNU_GETTEXT_VERSION([0.14.1])
|
||||
AM_GNU_GETTEXT([external])
|
||||
if test -d po
|
||||
then
|
||||
ALL_LINGUAS=`(cd po > /dev/null && ls *.po) | sed 's+\.po$++'`
|
||||
else
|
||||
ALL_LINGUAS="af am ar as be bg bn_IN bn ca cs cy da de el en_GB es et eu_ES fa fi fr gl gu he hi hr hu hy id is it ja ka kn ko ku lo lt lv mk ml mr ms my nb nl nn no nso or pa pl pt_BR pt ro ru si sk sl sq sr@Latn sr sv ta te th tr uk ur vi zh_CN zh_TW zu"
|
||||
fi
|
||||
|
||||
# very annoying
|
||||
rm -f COPYING
|
||||
cp COPYING.LIB COPYING
|
||||
|
||||
AC_OUTPUT(Makefile src/Makefile include/Makefile docs/Makefile \
|
||||
docs/examples/Makefile docs/devhelp/Makefile \
|
||||
docs/examples/python/Makefile \
|
||||
libvirt.pc libvirt.spec \
|
||||
po/Makefile.in scripts/Makefile \
|
||||
include/libvirt/Makefile include/libvirt/libvirt.h \
|
||||
python/Makefile python/tests/Makefile \
|
||||
qemud/Makefile m4/Makefile \
|
||||
tests/Makefile proxy/Makefile \
|
||||
tests/xml2sexprdata/Makefile \
|
||||
tests/sexpr2xmldata/Makefile \
|
||||
tests/xmconfigdata/Makefile \
|
||||
tests/xencapsdata/Makefile \
|
||||
tests/virshdata/Makefile tests/confdata/Makefile)
|
||||
12
qemud/.cvsignore → daemon/.gitignore
vendored
12
qemud/.cvsignore → daemon/.gitignore
vendored
@ -1,9 +1,13 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
*.gcda
|
||||
*.gcno
|
||||
*.la
|
||||
*.lo
|
||||
.deps
|
||||
.libs
|
||||
*.lo
|
||||
*.la
|
||||
Makefile
|
||||
Makefile.in
|
||||
libvirt_qemud
|
||||
libvirtd
|
||||
libvirtd.init
|
||||
libvirt-guests.init
|
||||
libvirtd*.logrotate
|
||||
289
daemon/Makefile.am
Normal file
289
daemon/Makefile.am
Normal file
@ -0,0 +1,289 @@
|
||||
## Process this file with automake to produce Makefile.in
|
||||
|
||||
DAEMON_SOURCES = \
|
||||
event.c event.h \
|
||||
libvirtd.c libvirtd.h \
|
||||
remote.c remote.h \
|
||||
dispatch.c dispatch.h \
|
||||
stream.c stream.h \
|
||||
remote_dispatch_prototypes.h \
|
||||
remote_dispatch_table.h \
|
||||
remote_dispatch_args.h \
|
||||
remote_dispatch_ret.h \
|
||||
../src/remote/remote_protocol.c
|
||||
|
||||
AVAHI_SOURCES = \
|
||||
mdns.c mdns.h
|
||||
|
||||
DISTCLEANFILES =
|
||||
EXTRA_DIST = \
|
||||
remote_generate_stubs.pl \
|
||||
libvirtd.conf \
|
||||
libvirtd.init.in \
|
||||
libvirtd.policy-0 \
|
||||
libvirtd.policy-1 \
|
||||
libvirtd.sasl \
|
||||
libvirtd.sysconf \
|
||||
libvirtd.aug \
|
||||
libvirtd.qemu.logrotate.in \
|
||||
libvirtd.lxc.logrotate.in \
|
||||
libvirtd.uml.logrotate.in \
|
||||
test_libvirtd.aug \
|
||||
THREADING.txt \
|
||||
libvirt-guests.init.in \
|
||||
libvirt-guests.sysconf \
|
||||
$(AVAHI_SOURCES) \
|
||||
$(DAEMON_SOURCES)
|
||||
|
||||
BUILT_SOURCES =
|
||||
|
||||
if WITH_LIBVIRTD
|
||||
|
||||
sbin_PROGRAMS = libvirtd
|
||||
|
||||
confdir = $(sysconfdir)/libvirt/
|
||||
conf_DATA = libvirtd.conf
|
||||
|
||||
augeasdir = $(datadir)/augeas/lenses
|
||||
augeas_DATA = libvirtd.aug
|
||||
|
||||
augeastestsdir = $(datadir)/augeas/lenses/tests
|
||||
augeastests_DATA = test_libvirtd.aug
|
||||
|
||||
libvirtd_SOURCES = $(DAEMON_SOURCES)
|
||||
|
||||
#-D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED=1 -D_POSIX_C_SOURCE=199506L
|
||||
libvirtd_CFLAGS = \
|
||||
-I$(top_srcdir)/gnulib/lib -I../gnulib/lib \
|
||||
-I$(top_srcdir)/include -I$(top_builddir)/include \
|
||||
-I$(top_srcdir)/src \
|
||||
-I$(top_srcdir)/src/util \
|
||||
-I$(top_srcdir)/src/conf \
|
||||
-I$(top_srcdir)/src/remote \
|
||||
$(LIBXML_CFLAGS) $(GNUTLS_CFLAGS) $(SASL_CFLAGS) \
|
||||
$(POLKIT_CFLAGS) \
|
||||
$(WARN_CFLAGS) -DLOCAL_STATE_DIR="\"$(localstatedir)\"" \
|
||||
$(COVERAGE_CFLAGS) \
|
||||
-DSYSCONF_DIR="\"$(sysconfdir)\"" \
|
||||
-DQEMUD_PID_FILE="\"$(QEMUD_PID_FILE)\"" \
|
||||
-DREMOTE_PID_FILE="\"$(REMOTE_PID_FILE)\"" \
|
||||
-DGETTEXT_PACKAGE=\"$(PACKAGE)\"
|
||||
|
||||
libvirtd_LDFLAGS = \
|
||||
$(WARN_CFLAGS) \
|
||||
$(COVERAGE_LDFLAGS)
|
||||
|
||||
libvirtd_LDADD = \
|
||||
$(LIBXML_LIBS) \
|
||||
$(GNUTLS_LIBS) \
|
||||
$(SASL_LIBS) \
|
||||
$(POLKIT_LIBS)
|
||||
|
||||
libvirtd_LDADD += ../src/libvirt_util.la
|
||||
|
||||
if WITH_DRIVER_MODULES
|
||||
libvirtd_LDADD += ../src/libvirt_driver.la
|
||||
else
|
||||
if WITH_QEMU
|
||||
libvirtd_LDADD += ../src/libvirt_driver_qemu.la
|
||||
endif
|
||||
|
||||
if WITH_LXC
|
||||
libvirtd_LDADD += ../src/libvirt_driver_lxc.la
|
||||
endif
|
||||
|
||||
if WITH_UML
|
||||
libvirtd_LDADD += ../src/libvirt_driver_uml.la
|
||||
endif
|
||||
|
||||
if WITH_ONE
|
||||
libvirtd_LDADD += ../src/libvirt_driver_one.la
|
||||
endif
|
||||
|
||||
if WITH_STORAGE_DIR
|
||||
libvirtd_LDADD += ../src/libvirt_driver_storage.la
|
||||
endif
|
||||
|
||||
if WITH_NETWORK
|
||||
libvirtd_LDADD += ../src/libvirt_driver_network.la
|
||||
endif
|
||||
|
||||
if WITH_NETCF
|
||||
libvirtd_LDADD += ../src/libvirt_driver_interface.la
|
||||
endif
|
||||
|
||||
if WITH_NODE_DEVICES
|
||||
libvirtd_LDADD += ../src/libvirt_driver_nodedev.la
|
||||
endif
|
||||
|
||||
if WITH_SECRETS
|
||||
libvirtd_LDADD += ../src/libvirt_driver_secret.la
|
||||
endif
|
||||
|
||||
if WITH_NWFILTER
|
||||
libvirtd_LDADD += ../src/libvirt_driver_nwfilter.la
|
||||
endif
|
||||
endif
|
||||
|
||||
libvirtd_LDADD += ../src/libvirt.la
|
||||
|
||||
if HAVE_POLKIT
|
||||
if HAVE_POLKIT0
|
||||
policydir = $(datadir)/PolicyKit/policy
|
||||
policyfile = libvirtd.policy-0
|
||||
else
|
||||
policydir = $(datadir)/polkit-1/actions
|
||||
policyfile = libvirtd.policy-1
|
||||
endif
|
||||
endif
|
||||
|
||||
if HAVE_AVAHI
|
||||
libvirtd_SOURCES += $(AVAHI_SOURCES)
|
||||
libvirtd_CFLAGS += $(AVAHI_CFLAGS)
|
||||
libvirtd_LDADD += $(AVAHI_LIBS)
|
||||
endif
|
||||
|
||||
|
||||
install-data-local: install-init install-data-sasl install-data-polkit \
|
||||
install-logrotate
|
||||
mkdir -p $(DESTDIR)$(localstatedir)/log/libvirt
|
||||
mkdir -p $(DESTDIR)$(localstatedir)/run/libvirt
|
||||
mkdir -p $(DESTDIR)$(localstatedir)/lib/libvirt
|
||||
|
||||
uninstall-local:: uninstall-init uninstall-data-sasl uninstall-data-polkit
|
||||
rmdir $(DESTDIR)$(localstatedir)/log/libvirt || :
|
||||
rmdir $(DESTDIR)$(localstatedir)/run/libvirt || :
|
||||
rmdir $(DESTDIR)$(localstatedir)/lib/libvirt || :
|
||||
|
||||
if HAVE_POLKIT
|
||||
install-data-polkit:: install-init
|
||||
mkdir -p $(DESTDIR)$(policydir)
|
||||
$(INSTALL_DATA) $(srcdir)/$(policyfile) $(DESTDIR)$(policydir)/org.libvirt.unix.policy
|
||||
uninstall-data-polkit:: install-init
|
||||
rm -f $(DESTDIR)$(policydir)/org.libvirt.unix.policy
|
||||
else
|
||||
install-data-polkit::
|
||||
uninstall-data-polkit::
|
||||
endif
|
||||
|
||||
|
||||
remote.c: remote_dispatch_prototypes.h \
|
||||
remote_dispatch_table.h \
|
||||
remote_dispatch_args.h \
|
||||
remote_dispatch_ret.h
|
||||
|
||||
REMOTE_PROTOCOL = $(top_srcdir)/src/remote/remote_protocol.x
|
||||
|
||||
remote_dispatch_prototypes.h: $(srcdir)/remote_generate_stubs.pl $(REMOTE_PROTOCOL)
|
||||
$(AM_V_GEN)perl -w $(srcdir)/remote_generate_stubs.pl -p $(REMOTE_PROTOCOL) > $@
|
||||
|
||||
remote_dispatch_table.h: $(srcdir)/remote_generate_stubs.pl $(REMOTE_PROTOCOL)
|
||||
$(AM_V_GEN)perl -w $(srcdir)/remote_generate_stubs.pl -t $(REMOTE_PROTOCOL) > $@
|
||||
|
||||
remote_dispatch_args.h: $(srcdir)/remote_generate_stubs.pl $(REMOTE_PROTOCOL)
|
||||
$(AM_V_GEN)perl -w $(srcdir)/remote_generate_stubs.pl -a $(REMOTE_PROTOCOL) > $@
|
||||
|
||||
remote_dispatch_ret.h: $(srcdir)/remote_generate_stubs.pl $(REMOTE_PROTOCOL)
|
||||
$(AM_V_GEN)perl -w $(srcdir)/remote_generate_stubs.pl -r $(REMOTE_PROTOCOL) > $@
|
||||
|
||||
LOGROTATE_CONFS = libvirtd.qemu.logrotate libvirtd.lxc.logrotate \
|
||||
libvirtd.uml.logrotate
|
||||
|
||||
BUILT_SOURCES += $(LOGROTATE_CONFS)
|
||||
|
||||
libvirtd.qemu.logrotate: libvirtd.qemu.logrotate.in
|
||||
sed \
|
||||
-e 's![@]localstatedir[@]!$(localstatedir)!g' \
|
||||
< $< > $@-t
|
||||
mv $@-t $@
|
||||
|
||||
libvirtd.lxc.logrotate: libvirtd.lxc.logrotate.in
|
||||
$(AM_V_GEN)sed \
|
||||
-e 's![@]localstatedir[@]!$(localstatedir)!g' \
|
||||
< $< > $@-t && \
|
||||
mv $@-t $@
|
||||
|
||||
libvirtd.uml.logrotate: libvirtd.uml.logrotate.in
|
||||
$(AM_V_GEN)sed \
|
||||
-e 's![@]localstatedir[@]!$(localstatedir)!g' \
|
||||
< $< > $@-t && \
|
||||
mv $@-t $@
|
||||
|
||||
install-logrotate: $(LOGROTATE_CONFS)
|
||||
mkdir -p $(DESTDIR)$(localstatedir)/log/libvirt/qemu/
|
||||
mkdir -p $(DESTDIR)$(localstatedir)/log/libvirt/lxc/
|
||||
mkdir -p $(DESTDIR)$(localstatedir)/log/libvirt/uml/
|
||||
mkdir -p $(DESTDIR)$(sysconfdir)/logrotate.d/
|
||||
$(INSTALL_DATA) libvirtd.qemu.logrotate $(DESTDIR)$(sysconfdir)/logrotate.d/libvirtd.qemu
|
||||
$(INSTALL_DATA) libvirtd.lxc.logrotate $(DESTDIR)$(sysconfdir)/logrotate.d/libvirtd.lxc
|
||||
$(INSTALL_DATA) libvirtd.uml.logrotate $(DESTDIR)$(sysconfdir)/logrotate.d/libvirtd.uml
|
||||
|
||||
if LIBVIRT_INIT_SCRIPT_RED_HAT
|
||||
install-init: libvirtd.init libvirt-guests.init
|
||||
mkdir -p $(DESTDIR)$(sysconfdir)/rc.d/init.d
|
||||
$(INSTALL_SCRIPT) libvirtd.init \
|
||||
$(DESTDIR)$(sysconfdir)/rc.d/init.d/libvirtd
|
||||
$(INSTALL_SCRIPT) libvirt-guests.init \
|
||||
$(DESTDIR)$(sysconfdir)/rc.d/init.d/libvirt-guests
|
||||
mkdir -p $(DESTDIR)$(sysconfdir)/sysconfig
|
||||
$(INSTALL_SCRIPT) $(srcdir)/libvirtd.sysconf \
|
||||
$(DESTDIR)$(sysconfdir)/sysconfig/libvirtd
|
||||
$(INSTALL_SCRIPT) $(srcdir)/libvirt-guests.sysconf \
|
||||
$(DESTDIR)$(sysconfdir)/sysconfig/libvirt-guests
|
||||
|
||||
uninstall-init:
|
||||
rm -f $(DESTDIR)$(sysconfdir)/rc.d/init.d/libvirtd \
|
||||
$(DESTDIR)$(sysconfdir)/sysconfig/libvirtd \
|
||||
$(DESTDIR)$(sysconfdir)/rc.d/init.d/libvirt-guests \
|
||||
$(DESTDIR)$(sysconfdir)/sysconfig/libvirt-guests
|
||||
|
||||
BUILT_SOURCES += libvirtd.init libvirt-guests.init
|
||||
|
||||
%.init: %.init.in $(top_builddir)/config.status
|
||||
$(AM_V_GEN)sed \
|
||||
-e s!\@localstatedir\@!@localstatedir@!g \
|
||||
-e s!\@sbindir\@!@sbindir@!g \
|
||||
-e s!\@sysconfdir\@!@sysconfdir@!g \
|
||||
< $< > $@-t && \
|
||||
chmod a+x $@-t && \
|
||||
mv $@-t $@
|
||||
|
||||
check-local:
|
||||
test -x '$(AUGPARSE)' \
|
||||
&& '$(AUGPARSE)' -I $(srcdir) $(srcdir)/test_libvirtd.aug || :
|
||||
|
||||
else
|
||||
|
||||
install-init:
|
||||
uninstall-init:
|
||||
libvirtd.init:
|
||||
|
||||
endif # LIBVIRT_INIT_SCRIPT_RED_HAT
|
||||
|
||||
# This must be added last, since functions it provides/replaces
|
||||
# are used by nearly every other library.
|
||||
libvirtd_LDADD += ../gnulib/lib/libgnu.la $(LIBSOCKET)
|
||||
|
||||
else # WITH_LIBVIRTD
|
||||
install-data-local: install-data-sasl
|
||||
uninstall-local:: uninstall-data-sasl
|
||||
endif # WITH_LIBVIRTD
|
||||
|
||||
# This is needed for clients too, so can't wrap in
|
||||
# the WITH_LIBVIRTD conditional
|
||||
if HAVE_SASL
|
||||
install-data-sasl:
|
||||
mkdir -p $(DESTDIR)$(sysconfdir)/sasl2/
|
||||
$(INSTALL_DATA) $(srcdir)/libvirtd.sasl $(DESTDIR)$(sysconfdir)/sasl2/libvirt.conf
|
||||
|
||||
uninstall-data-sasl:
|
||||
rm -f $(DESTDIR)$(sysconfdir)/sasl2/libvirt.conf
|
||||
rmdir $(DESTDIR)$(sysconfdir)/sasl2/
|
||||
else
|
||||
install-data-sasl:
|
||||
uninstall-data-sasl:
|
||||
endif
|
||||
|
||||
|
||||
CLEANFILES = $(BUILT_SOURCES)
|
||||
CLEANFILES += *.cov *.gcov .libs/*.gcda .libs/*.gcno *.gcno *.gcda
|
||||
52
daemon/THREADING.txt
Normal file
52
daemon/THREADING.txt
Normal file
@ -0,0 +1,52 @@
|
||||
|
||||
Threading in the libvirtd daemon
|
||||
================================
|
||||
|
||||
To allow efficient processing of RPC requests, the libvirtd daemon
|
||||
makes use of threads.
|
||||
|
||||
- The process leader. This is the initial thread of control
|
||||
when the daemon starts running. It is responsible for
|
||||
initializing all the state, and starting the event loop.
|
||||
Once that's all done, this thread does nothing except
|
||||
wait for the event loop to quit, thus indicating an orderly
|
||||
shutdown is required.
|
||||
|
||||
- The event loop. This thread runs the event loop, sitting
|
||||
in poll() on all monitored file handles, and calculating
|
||||
and dispatching any timers that may be registered. When
|
||||
this thread quits, the entire daemon will shutdown.
|
||||
|
||||
- The workers. These 'n' threads all sit around waiting to
|
||||
process incoming RPC requests. Since RPC requests may take
|
||||
a long time to complete, with long idle periods, there will
|
||||
be quite a few workers running.
|
||||
|
||||
The use of threads obviously requires locking to ensure safety when
|
||||
accessing/changing data structures.
|
||||
|
||||
- the top level lock is on 'struct qemud_server'. This must be
|
||||
held before acquiring any other lock
|
||||
|
||||
- Each 'struct qemud_client' object has a lock. The server lock
|
||||
must be held before acquiring it. Once the client lock is acquired
|
||||
the server lock can (optionally) be dropped.
|
||||
|
||||
- The event loop has its own self-contained lock. You can ignore
|
||||
this as a caller of virEvent APIs.
|
||||
|
||||
|
||||
The server lock is used in conjunction with a condition variable
|
||||
to pass jobs from the event loop thread to the workers. The main
|
||||
event loop thread handles I/O from the client socket, and once a
|
||||
complete RPC message has been read off the wire (and optionally
|
||||
decrypted), it will be placed onto the 'dx' job queue for the
|
||||
associated client object. The job condition will be signalled and
|
||||
a worker will wakup and process it.
|
||||
|
||||
The worker thread must quickly drop its locks on the server and
|
||||
client to allow the main event loop thread to continue running
|
||||
with its other work. Critically important, is that now libvirt
|
||||
API call will ever be made with the server or client locks held.
|
||||
|
||||
-- End
|
||||
668
daemon/dispatch.c
Normal file
668
daemon/dispatch.c
Normal file
@ -0,0 +1,668 @@
|
||||
/*
|
||||
* dispatch.h: RPC message dispatching infrastructure
|
||||
*
|
||||
* Copyright (C) 2007, 2008, 2009 Red Hat, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* Author: Richard W.M. Jones <rjones@redhat.com>
|
||||
* Author: Daniel P. Berrange <berrange@redhat.com>
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include "dispatch.h"
|
||||
#include "remote.h"
|
||||
|
||||
#include "memory.h"
|
||||
|
||||
/* Convert a libvirt virError object into wire format */
|
||||
static void
|
||||
remoteDispatchCopyError (remote_error *rerr,
|
||||
virErrorPtr verr)
|
||||
{
|
||||
rerr->code = verr->code;
|
||||
rerr->domain = verr->domain;
|
||||
rerr->message = verr->message ? malloc(sizeof(char*)) : NULL;
|
||||
if (rerr->message) *rerr->message = strdup(verr->message);
|
||||
rerr->level = verr->level;
|
||||
rerr->str1 = verr->str1 ? malloc(sizeof(char*)) : NULL;
|
||||
if (rerr->str1) *rerr->str1 = strdup(verr->str1);
|
||||
rerr->str2 = verr->str2 ? malloc(sizeof(char*)) : NULL;
|
||||
if (rerr->str2) *rerr->str2 = strdup(verr->str2);
|
||||
rerr->str3 = verr->str3 ? malloc(sizeof(char*)) : NULL;
|
||||
if (rerr->str3) *rerr->str3 = strdup(verr->str3);
|
||||
rerr->int1 = verr->int1;
|
||||
rerr->int2 = verr->int2;
|
||||
}
|
||||
|
||||
|
||||
/* A set of helpers for sending back errors to client
|
||||
in various ways .... */
|
||||
|
||||
static void
|
||||
remoteDispatchStringError (remote_error *rerr,
|
||||
int code, const char *msg)
|
||||
{
|
||||
virError verr;
|
||||
|
||||
memset(&verr, 0, sizeof verr);
|
||||
|
||||
/* Construct the dummy libvirt virError. */
|
||||
verr.code = code;
|
||||
verr.domain = VIR_FROM_REMOTE;
|
||||
verr.message = (char *)msg;
|
||||
verr.level = VIR_ERR_ERROR;
|
||||
verr.str1 = (char *)msg;
|
||||
|
||||
remoteDispatchCopyError(rerr, &verr);
|
||||
}
|
||||
|
||||
|
||||
void remoteDispatchAuthError (remote_error *rerr)
|
||||
{
|
||||
remoteDispatchStringError (rerr, VIR_ERR_AUTH_FAILED, "authentication failed");
|
||||
}
|
||||
|
||||
|
||||
void remoteDispatchFormatError (remote_error *rerr,
|
||||
const char *fmt, ...)
|
||||
{
|
||||
va_list args;
|
||||
char msgbuf[1024];
|
||||
char *msg = msgbuf;
|
||||
|
||||
va_start (args, fmt);
|
||||
vsnprintf (msgbuf, sizeof msgbuf, fmt, args);
|
||||
va_end (args);
|
||||
|
||||
remoteDispatchStringError (rerr, VIR_ERR_RPC, msg);
|
||||
}
|
||||
|
||||
|
||||
void remoteDispatchGenericError (remote_error *rerr)
|
||||
{
|
||||
remoteDispatchStringError(rerr,
|
||||
VIR_ERR_INTERNAL_ERROR,
|
||||
"library function returned error but did not set virterror");
|
||||
}
|
||||
|
||||
|
||||
void remoteDispatchOOMError (remote_error *rerr)
|
||||
{
|
||||
remoteDispatchStringError(rerr,
|
||||
VIR_ERR_NO_MEMORY,
|
||||
"out of memory");
|
||||
}
|
||||
|
||||
|
||||
void remoteDispatchConnError (remote_error *rerr,
|
||||
virConnectPtr conn)
|
||||
{
|
||||
virErrorPtr verr;
|
||||
|
||||
if (conn)
|
||||
verr = virConnGetLastError(conn);
|
||||
else
|
||||
verr = virGetLastError();
|
||||
if (verr)
|
||||
remoteDispatchCopyError(rerr, verr);
|
||||
else
|
||||
remoteDispatchGenericError(rerr);
|
||||
}
|
||||
|
||||
static int
|
||||
remoteSerializeError(struct qemud_client *client,
|
||||
remote_error *rerr,
|
||||
int program,
|
||||
int version,
|
||||
int procedure,
|
||||
int type,
|
||||
int serial)
|
||||
{
|
||||
XDR xdr;
|
||||
unsigned int len;
|
||||
struct qemud_client_message *msg = NULL;
|
||||
|
||||
DEBUG("prog=%d ver=%d proc=%d type=%d serial=%d, msg=%s",
|
||||
program, version, procedure, type, serial,
|
||||
rerr->message ? *rerr->message : "(none)");
|
||||
|
||||
if (VIR_ALLOC(msg) < 0)
|
||||
goto fatal_error;
|
||||
|
||||
/* Return header. */
|
||||
msg->hdr.prog = program;
|
||||
msg->hdr.vers = version;
|
||||
msg->hdr.proc = procedure;
|
||||
msg->hdr.type = type;
|
||||
msg->hdr.serial = serial;
|
||||
msg->hdr.status = REMOTE_ERROR;
|
||||
|
||||
msg->bufferLength = sizeof(msg->buffer);
|
||||
|
||||
/* Serialise the return header. */
|
||||
xdrmem_create (&xdr,
|
||||
msg->buffer,
|
||||
msg->bufferLength,
|
||||
XDR_ENCODE);
|
||||
|
||||
len = 0; /* We'll come back and write this later. */
|
||||
if (!xdr_u_int (&xdr, &len))
|
||||
goto xdr_error;
|
||||
|
||||
if (!xdr_remote_message_header (&xdr, &msg->hdr))
|
||||
goto xdr_error;
|
||||
|
||||
/* Error was not set, so synthesize a generic error message. */
|
||||
if (rerr->code == 0)
|
||||
remoteDispatchGenericError(rerr);
|
||||
|
||||
if (!xdr_remote_error (&xdr, rerr))
|
||||
goto xdr_error;
|
||||
|
||||
/* Write the length word. */
|
||||
len = xdr_getpos (&xdr);
|
||||
if (xdr_setpos (&xdr, 0) == 0)
|
||||
goto xdr_error;
|
||||
|
||||
if (!xdr_u_int (&xdr, &len))
|
||||
goto xdr_error;
|
||||
|
||||
xdr_destroy (&xdr);
|
||||
|
||||
msg->bufferLength = len;
|
||||
msg->bufferOffset = 0;
|
||||
|
||||
/* Put reply on end of tx queue to send out */
|
||||
qemudClientMessageQueuePush(&client->tx, msg);
|
||||
qemudUpdateClientEvent(client);
|
||||
xdr_free((xdrproc_t)xdr_remote_error, (char *)rerr);
|
||||
|
||||
return 0;
|
||||
|
||||
xdr_error:
|
||||
xdr_destroy(&xdr);
|
||||
VIR_FREE(msg);
|
||||
fatal_error:
|
||||
xdr_free((xdrproc_t)xdr_remote_error, (char *)rerr);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @client: the client to send the error to
|
||||
* @rerr: the error object to send
|
||||
* @req: the message this error is in reply to
|
||||
*
|
||||
* Send an error message to the client
|
||||
*
|
||||
* Returns 0 if the error was sent, -1 upon fatal error
|
||||
*/
|
||||
int
|
||||
remoteSerializeReplyError(struct qemud_client *client,
|
||||
remote_error *rerr,
|
||||
remote_message_header *req) {
|
||||
/*
|
||||
* For data streams, errors are sent back as data streams
|
||||
* For method calls, errors are sent back as method replies
|
||||
*/
|
||||
return remoteSerializeError(client,
|
||||
rerr,
|
||||
req->prog,
|
||||
req->vers,
|
||||
req->proc,
|
||||
req->type == REMOTE_STREAM ? REMOTE_STREAM : REMOTE_REPLY,
|
||||
req->serial);
|
||||
}
|
||||
|
||||
int
|
||||
remoteSerializeStreamError(struct qemud_client *client,
|
||||
remote_error *rerr,
|
||||
int proc,
|
||||
int serial)
|
||||
{
|
||||
return remoteSerializeError(client,
|
||||
rerr,
|
||||
REMOTE_PROGRAM,
|
||||
REMOTE_PROTOCOL_VERSION,
|
||||
proc,
|
||||
REMOTE_STREAM,
|
||||
serial);
|
||||
}
|
||||
|
||||
/*
|
||||
* @msg: the complete incoming message, whose header to decode
|
||||
*
|
||||
* Decodes the header part of the client message, but does not
|
||||
* validate the decoded fields in the header. It expects
|
||||
* bufferLength to refer to length of the data packet. Upon
|
||||
* return bufferOffset will refer to the amount of the packet
|
||||
* consumed by decoding of the header.
|
||||
*
|
||||
* returns 0 if successfully decoded, -1 upon fatal error
|
||||
*/
|
||||
int
|
||||
remoteDecodeClientMessageHeader (struct qemud_client_message *msg)
|
||||
{
|
||||
XDR xdr;
|
||||
int ret = -1;
|
||||
|
||||
msg->bufferOffset = REMOTE_MESSAGE_HEADER_XDR_LEN;
|
||||
|
||||
/* Parse the header. */
|
||||
xdrmem_create (&xdr,
|
||||
msg->buffer + msg->bufferOffset,
|
||||
msg->bufferLength - msg->bufferOffset,
|
||||
XDR_DECODE);
|
||||
|
||||
if (!xdr_remote_message_header (&xdr, &msg->hdr))
|
||||
goto cleanup;
|
||||
|
||||
msg->bufferOffset += xdr_getpos(&xdr);
|
||||
|
||||
ret = 0;
|
||||
|
||||
cleanup:
|
||||
xdr_destroy(&xdr);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @msg: the outgoing message, whose header to encode
|
||||
*
|
||||
* Encodes the header part of the client message, setting the
|
||||
* message offset ready to encode the payload. Leaves space
|
||||
* for the length field later. Upon return bufferLength will
|
||||
* refer to the total available space for message, while
|
||||
* bufferOffset will refer to current space used by header
|
||||
*
|
||||
* returns 0 if successfully encoded, -1 upon fatal error
|
||||
*/
|
||||
int
|
||||
remoteEncodeClientMessageHeader (struct qemud_client_message *msg)
|
||||
{
|
||||
XDR xdr;
|
||||
int ret = -1;
|
||||
unsigned int len = 0;
|
||||
|
||||
msg->bufferLength = sizeof(msg->buffer);
|
||||
msg->bufferOffset = 0;
|
||||
|
||||
/* Format the header. */
|
||||
xdrmem_create (&xdr,
|
||||
msg->buffer,
|
||||
msg->bufferLength,
|
||||
XDR_ENCODE);
|
||||
|
||||
/* The real value is filled in shortly */
|
||||
if (!xdr_u_int (&xdr, &len)) {
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (!xdr_remote_message_header (&xdr, &msg->hdr))
|
||||
goto cleanup;
|
||||
|
||||
len = xdr_getpos(&xdr);
|
||||
xdr_setpos(&xdr, 0);
|
||||
|
||||
/* Fill in current length - may be re-written later
|
||||
* if a payload is added
|
||||
*/
|
||||
if (!xdr_u_int (&xdr, &len)) {
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
msg->bufferOffset += len;
|
||||
|
||||
ret = 0;
|
||||
|
||||
cleanup:
|
||||
xdr_destroy(&xdr);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
remoteDispatchClientCall (struct qemud_server *server,
|
||||
struct qemud_client *client,
|
||||
struct qemud_client_message *msg);
|
||||
|
||||
|
||||
/*
|
||||
* @server: the unlocked server object
|
||||
* @client: the locked client object
|
||||
* @msg: the complete incoming message packet, with header already decoded
|
||||
*
|
||||
* This function gets called from qemud when it pulls a incoming
|
||||
* remote protocol message off the dispatch queue for processing.
|
||||
*
|
||||
* The @msg parameter must have had its header decoded already by
|
||||
* calling remoteDecodeClientMessageHeader
|
||||
*
|
||||
* Returns 0 if the message was dispatched, -1 upon fatal error
|
||||
*/
|
||||
int
|
||||
remoteDispatchClientRequest (struct qemud_server *server,
|
||||
struct qemud_client *client,
|
||||
struct qemud_client_message *msg)
|
||||
{
|
||||
int ret;
|
||||
remote_error rerr;
|
||||
|
||||
DEBUG("prog=%d ver=%d type=%d status=%d serial=%d proc=%d",
|
||||
msg->hdr.prog, msg->hdr.vers, msg->hdr.type,
|
||||
msg->hdr.status, msg->hdr.serial, msg->hdr.proc);
|
||||
|
||||
memset(&rerr, 0, sizeof rerr);
|
||||
|
||||
/* Check version, etc. */
|
||||
if (msg->hdr.prog != REMOTE_PROGRAM) {
|
||||
remoteDispatchFormatError (&rerr,
|
||||
_("program mismatch (actual %x, expected %x)"),
|
||||
msg->hdr.prog, REMOTE_PROGRAM);
|
||||
goto error;
|
||||
}
|
||||
if (msg->hdr.vers != REMOTE_PROTOCOL_VERSION) {
|
||||
remoteDispatchFormatError (&rerr,
|
||||
_("version mismatch (actual %x, expected %x)"),
|
||||
msg->hdr.vers, REMOTE_PROTOCOL_VERSION);
|
||||
goto error;
|
||||
}
|
||||
|
||||
switch (msg->hdr.type) {
|
||||
case REMOTE_CALL:
|
||||
return remoteDispatchClientCall(server, client, msg);
|
||||
|
||||
case REMOTE_STREAM:
|
||||
/* Since stream data is non-acked, async, we may continue to received
|
||||
* stream packets after we closed down a stream. Just drop & ignore
|
||||
* these.
|
||||
*/
|
||||
VIR_INFO("Ignoring unexpected stream data serial=%d proc=%d status=%d",
|
||||
msg->hdr.serial, msg->hdr.proc, msg->hdr.status);
|
||||
qemudClientMessageRelease(client, msg);
|
||||
break;
|
||||
|
||||
default:
|
||||
remoteDispatchFormatError (&rerr, _("type (%d) != REMOTE_CALL"),
|
||||
(int) msg->hdr.type);
|
||||
goto error;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
error:
|
||||
ret = remoteSerializeReplyError(client, &rerr, &msg->hdr);
|
||||
|
||||
if (ret >= 0)
|
||||
VIR_FREE(msg);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @server: the unlocked server object
|
||||
* @client: the locked client object
|
||||
* @msg: the complete incoming method call, with header already decoded
|
||||
*
|
||||
* This method is used to dispatch an message representing an
|
||||
* incoming method call from a client. It decodes the payload
|
||||
* to obtain method call arguments, invokves the method and
|
||||
* then sends a reply packet with the return values
|
||||
*
|
||||
* Returns 0 if the reply was sent, or -1 upon fatal error
|
||||
*/
|
||||
int
|
||||
remoteDispatchClientCall (struct qemud_server *server,
|
||||
struct qemud_client *client,
|
||||
struct qemud_client_message *msg)
|
||||
{
|
||||
XDR xdr;
|
||||
remote_error rerr;
|
||||
dispatch_args args;
|
||||
dispatch_ret ret;
|
||||
const dispatch_data *data = NULL;
|
||||
int rv = -1;
|
||||
unsigned int len;
|
||||
virConnectPtr conn = NULL;
|
||||
|
||||
memset(&args, 0, sizeof args);
|
||||
memset(&ret, 0, sizeof ret);
|
||||
memset(&rerr, 0, sizeof rerr);
|
||||
|
||||
if (msg->hdr.status != REMOTE_OK) {
|
||||
remoteDispatchFormatError (&rerr, _("status (%d) != REMOTE_OK"),
|
||||
(int) msg->hdr.status);
|
||||
goto rpc_error;
|
||||
}
|
||||
|
||||
/* If client is marked as needing auth, don't allow any RPC ops,
|
||||
* except for authentication ones
|
||||
*/
|
||||
if (client->auth) {
|
||||
if (msg->hdr.proc != REMOTE_PROC_AUTH_LIST &&
|
||||
msg->hdr.proc != REMOTE_PROC_AUTH_SASL_INIT &&
|
||||
msg->hdr.proc != REMOTE_PROC_AUTH_SASL_START &&
|
||||
msg->hdr.proc != REMOTE_PROC_AUTH_SASL_STEP &&
|
||||
msg->hdr.proc != REMOTE_PROC_AUTH_POLKIT
|
||||
) {
|
||||
/* Explicitly *NOT* calling remoteDispatchAuthError() because
|
||||
we want back-compatability with libvirt clients which don't
|
||||
support the VIR_ERR_AUTH_FAILED error code */
|
||||
remoteDispatchFormatError (&rerr, "%s", _("authentication required"));
|
||||
goto rpc_error;
|
||||
}
|
||||
}
|
||||
|
||||
data = remoteGetDispatchData(msg->hdr.proc);
|
||||
|
||||
if (!data) {
|
||||
remoteDispatchFormatError (&rerr, _("unknown procedure: %d"),
|
||||
msg->hdr.proc);
|
||||
goto rpc_error;
|
||||
}
|
||||
|
||||
/* De-serialize payload with args from the wire message */
|
||||
xdrmem_create (&xdr,
|
||||
msg->buffer + msg->bufferOffset,
|
||||
msg->bufferLength - msg->bufferOffset,
|
||||
XDR_DECODE);
|
||||
if (!((data->args_filter)(&xdr, &args))) {
|
||||
xdr_destroy (&xdr);
|
||||
remoteDispatchFormatError (&rerr, "%s", _("parse args failed"));
|
||||
goto rpc_error;
|
||||
}
|
||||
xdr_destroy (&xdr);
|
||||
|
||||
/* Call function. */
|
||||
conn = client->conn;
|
||||
virMutexUnlock(&client->lock);
|
||||
|
||||
/*
|
||||
* When the RPC handler is called:
|
||||
*
|
||||
* - Server object is unlocked
|
||||
* - Client object is unlocked
|
||||
*
|
||||
* Without locking, it is safe to use:
|
||||
*
|
||||
* 'conn', 'rerr', 'args and 'ret'
|
||||
*/
|
||||
rv = (data->fn)(server, client, conn, &msg->hdr, &rerr, &args, &ret);
|
||||
|
||||
virMutexLock(&server->lock);
|
||||
virMutexLock(&client->lock);
|
||||
virMutexUnlock(&server->lock);
|
||||
|
||||
xdr_free (data->args_filter, (char*)&args);
|
||||
|
||||
if (rv < 0)
|
||||
goto rpc_error;
|
||||
|
||||
/* Return header. We're re-using same message object, so
|
||||
* only need to tweak type/status fields */
|
||||
/*msg->hdr.prog = msg->hdr.prog;*/
|
||||
/*msg->hdr.vers = msg->hdr.vers;*/
|
||||
/*msg->hdr.proc = msg->hdr.proc;*/
|
||||
msg->hdr.type = REMOTE_REPLY;
|
||||
/*msg->hdr.serial = msg->hdr.serial;*/
|
||||
msg->hdr.status = REMOTE_OK;
|
||||
|
||||
if (remoteEncodeClientMessageHeader(msg) < 0) {
|
||||
xdr_free (data->ret_filter, (char*)&ret);
|
||||
goto fatal_error;
|
||||
}
|
||||
|
||||
|
||||
/* Now for the payload */
|
||||
xdrmem_create (&xdr,
|
||||
msg->buffer,
|
||||
msg->bufferLength,
|
||||
XDR_ENCODE);
|
||||
|
||||
if (xdr_setpos(&xdr, msg->bufferOffset) == 0)
|
||||
goto xdr_error;
|
||||
|
||||
/* If OK, serialise return structure, if error serialise error. */
|
||||
/* Serialise reply data */
|
||||
if (!((data->ret_filter) (&xdr, &ret)))
|
||||
goto xdr_error;
|
||||
|
||||
/* Update the length word. */
|
||||
msg->bufferOffset += xdr_getpos (&xdr);
|
||||
len = msg->bufferOffset;
|
||||
if (xdr_setpos (&xdr, 0) == 0)
|
||||
goto xdr_error;
|
||||
|
||||
if (!xdr_u_int (&xdr, &len))
|
||||
goto xdr_error;
|
||||
|
||||
xdr_destroy (&xdr);
|
||||
xdr_free (data->ret_filter, (char*)&ret);
|
||||
|
||||
/* Reset ready for I/O */
|
||||
msg->bufferLength = len;
|
||||
msg->bufferOffset = 0;
|
||||
|
||||
/* Put reply on end of tx queue to send out */
|
||||
qemudClientMessageQueuePush(&client->tx, msg);
|
||||
qemudUpdateClientEvent(client);
|
||||
|
||||
return 0;
|
||||
|
||||
rpc_error:
|
||||
/* Semi-bad stuff happened, we can still try to send back
|
||||
* an RPC error message to client */
|
||||
rv = remoteSerializeReplyError(client, &rerr, &msg->hdr);
|
||||
|
||||
if (rv >= 0)
|
||||
VIR_FREE(msg);
|
||||
|
||||
return rv;
|
||||
|
||||
xdr_error:
|
||||
/* Seriously bad stuff happened, so we'll kill off this client
|
||||
and not send back any RPC error */
|
||||
xdr_free (data->ret_filter, (char*)&ret);
|
||||
xdr_destroy (&xdr);
|
||||
fatal_error:
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
remoteSendStreamData(struct qemud_client *client,
|
||||
struct qemud_client_stream *stream,
|
||||
const char *data,
|
||||
unsigned int len)
|
||||
{
|
||||
struct qemud_client_message *msg;
|
||||
XDR xdr;
|
||||
|
||||
DEBUG("client=%p stream=%p data=%p len=%d", client, stream, data, len);
|
||||
|
||||
if (VIR_ALLOC(msg) < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Return header. We're re-using same message object, so
|
||||
* only need to tweak type/status fields */
|
||||
msg->hdr.prog = REMOTE_PROGRAM;
|
||||
msg->hdr.vers = REMOTE_PROTOCOL_VERSION;
|
||||
msg->hdr.proc = stream->procedure;
|
||||
msg->hdr.type = REMOTE_STREAM;
|
||||
msg->hdr.serial = stream->serial;
|
||||
/*
|
||||
* NB
|
||||
* data != NULL + len > 0 => REMOTE_CONTINUE (Sending back data)
|
||||
* data != NULL + len == 0 => REMOTE_CONTINUE (Sending read EOF)
|
||||
* data == NULL => REMOTE_OK (Sending finish handshake confirmation)
|
||||
*/
|
||||
msg->hdr.status = data ? REMOTE_CONTINUE : REMOTE_OK;
|
||||
|
||||
if (remoteEncodeClientMessageHeader(msg) < 0)
|
||||
goto fatal_error;
|
||||
|
||||
if (data && len) {
|
||||
if ((msg->bufferLength - msg->bufferOffset) < len)
|
||||
goto fatal_error;
|
||||
|
||||
/* Now for the payload */
|
||||
xdrmem_create (&xdr,
|
||||
msg->buffer,
|
||||
msg->bufferLength,
|
||||
XDR_ENCODE);
|
||||
|
||||
/* Skip over existing header already written */
|
||||
if (xdr_setpos(&xdr, msg->bufferOffset) == 0)
|
||||
goto xdr_error;
|
||||
|
||||
memcpy(msg->buffer + msg->bufferOffset, data, len);
|
||||
msg->bufferOffset += len;
|
||||
|
||||
/* Update the length word. */
|
||||
len = msg->bufferOffset;
|
||||
if (xdr_setpos (&xdr, 0) == 0)
|
||||
goto xdr_error;
|
||||
|
||||
if (!xdr_u_int (&xdr, &len))
|
||||
goto xdr_error;
|
||||
|
||||
xdr_destroy (&xdr);
|
||||
|
||||
DEBUG("Total %d", msg->bufferOffset);
|
||||
}
|
||||
if (data)
|
||||
msg->streamTX = 1;
|
||||
|
||||
/* Reset ready for I/O */
|
||||
msg->bufferLength = msg->bufferOffset;
|
||||
msg->bufferOffset = 0;
|
||||
|
||||
/* Put reply on end of tx queue to send out */
|
||||
qemudClientMessageQueuePush(&client->tx, msg);
|
||||
qemudUpdateClientEvent(client);
|
||||
|
||||
return 0;
|
||||
|
||||
xdr_error:
|
||||
xdr_destroy (&xdr);
|
||||
fatal_error:
|
||||
VIR_FREE(msg);
|
||||
return -1;
|
||||
}
|
||||
70
daemon/dispatch.h
Normal file
70
daemon/dispatch.h
Normal file
@ -0,0 +1,70 @@
|
||||
/*
|
||||
* dispatch.h: RPC message dispatching infrastructure
|
||||
*
|
||||
* Copyright (C) 2007, 2008, 2009 Red Hat, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* Author: Richard W.M. Jones <rjones@redhat.com>
|
||||
* Author: Daniel P. Berrange <berrange@redhat.com>
|
||||
*/
|
||||
|
||||
#ifndef __LIBVIRTD_DISPATCH_H__
|
||||
# define __LIBVIRTD_DISPATCH_H__
|
||||
|
||||
|
||||
# include "libvirtd.h"
|
||||
|
||||
|
||||
int
|
||||
remoteDecodeClientMessageHeader (struct qemud_client_message *req);
|
||||
int
|
||||
remoteEncodeClientMessageHeader (struct qemud_client_message *req);
|
||||
|
||||
int
|
||||
remoteDispatchClientRequest (struct qemud_server *server,
|
||||
struct qemud_client *client,
|
||||
struct qemud_client_message *req);
|
||||
|
||||
|
||||
void remoteDispatchFormatError (remote_error *rerr,
|
||||
const char *fmt, ...)
|
||||
ATTRIBUTE_FMT_PRINTF(2, 3);
|
||||
|
||||
void remoteDispatchAuthError (remote_error *rerr);
|
||||
void remoteDispatchGenericError (remote_error *rerr);
|
||||
void remoteDispatchOOMError (remote_error *rerr);
|
||||
void remoteDispatchConnError (remote_error *rerr,
|
||||
virConnectPtr conn);
|
||||
|
||||
|
||||
int
|
||||
remoteSerializeReplyError(struct qemud_client *client,
|
||||
remote_error *rerr,
|
||||
remote_message_header *req);
|
||||
int
|
||||
remoteSerializeStreamError(struct qemud_client *client,
|
||||
remote_error *rerr,
|
||||
int proc,
|
||||
int serial);
|
||||
|
||||
|
||||
int
|
||||
remoteSendStreamData(struct qemud_client *client,
|
||||
struct qemud_client_stream *stream,
|
||||
const char *data,
|
||||
unsigned int len);
|
||||
|
||||
#endif /* __LIBVIRTD_DISPATCH_H__ */
|
||||
713
daemon/event.c
Normal file
713
daemon/event.c
Normal file
@ -0,0 +1,713 @@
|
||||
/*
|
||||
* event.c: event loop for monitoring file handles
|
||||
*
|
||||
* Copyright (C) 2007, 2010 Red Hat, Inc.
|
||||
* Copyright (C) 2007 Daniel P. Berrange
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* Author: Daniel P. Berrange <berrange@redhat.com>
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <poll.h>
|
||||
#include <sys/time.h>
|
||||
#include <errno.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "threads.h"
|
||||
#include "logging.h"
|
||||
#include "event.h"
|
||||
#include "memory.h"
|
||||
#include "util.h"
|
||||
#include "ignore-value.h"
|
||||
|
||||
#define EVENT_DEBUG(fmt, ...) DEBUG(fmt, __VA_ARGS__)
|
||||
|
||||
static int virEventInterruptLocked(void);
|
||||
|
||||
/* State for a single file handle being monitored */
|
||||
struct virEventHandle {
|
||||
int watch;
|
||||
int fd;
|
||||
int events;
|
||||
virEventHandleCallback cb;
|
||||
virFreeCallback ff;
|
||||
void *opaque;
|
||||
int deleted;
|
||||
};
|
||||
|
||||
/* State for a single timer being generated */
|
||||
struct virEventTimeout {
|
||||
int timer;
|
||||
int frequency;
|
||||
unsigned long long expiresAt;
|
||||
virEventTimeoutCallback cb;
|
||||
virFreeCallback ff;
|
||||
void *opaque;
|
||||
int deleted;
|
||||
};
|
||||
|
||||
/* Allocate extra slots for virEventHandle/virEventTimeout
|
||||
records in this multiple */
|
||||
#define EVENT_ALLOC_EXTENT 10
|
||||
|
||||
/* State for the main event loop */
|
||||
struct virEventLoop {
|
||||
pthread_mutex_t lock;
|
||||
int running;
|
||||
pthread_t leader;
|
||||
int wakeupfd[2];
|
||||
int handlesCount;
|
||||
int handlesAlloc;
|
||||
struct virEventHandle *handles;
|
||||
int timeoutsCount;
|
||||
int timeoutsAlloc;
|
||||
struct virEventTimeout *timeouts;
|
||||
};
|
||||
|
||||
/* Only have one event loop */
|
||||
static struct virEventLoop eventLoop;
|
||||
|
||||
/* Unique ID for the next FD watch to be registered */
|
||||
static int nextWatch = 1;
|
||||
|
||||
/* Unique ID for the next timer to be registered */
|
||||
static int nextTimer = 1;
|
||||
|
||||
static void virEventLock(void)
|
||||
{
|
||||
pthread_mutex_lock(&eventLoop.lock);
|
||||
}
|
||||
|
||||
static void virEventUnlock(void)
|
||||
{
|
||||
pthread_mutex_unlock(&eventLoop.lock);
|
||||
}
|
||||
|
||||
/*
|
||||
* Register a callback for monitoring file handle events.
|
||||
* NB, it *must* be safe to call this from within a callback
|
||||
* For this reason we only ever append to existing list.
|
||||
*/
|
||||
int virEventAddHandleImpl(int fd, int events,
|
||||
virEventHandleCallback cb,
|
||||
void *opaque,
|
||||
virFreeCallback ff) {
|
||||
int watch;
|
||||
EVENT_DEBUG("Add handle fd=%d events=%d cb=%p opaque=%p", fd, events, cb, opaque);
|
||||
virEventLock();
|
||||
if (eventLoop.handlesCount == eventLoop.handlesAlloc) {
|
||||
EVENT_DEBUG("Used %d handle slots, adding %d more",
|
||||
eventLoop.handlesAlloc, EVENT_ALLOC_EXTENT);
|
||||
if (VIR_REALLOC_N(eventLoop.handles,
|
||||
(eventLoop.handlesAlloc + EVENT_ALLOC_EXTENT)) < 0) {
|
||||
virEventUnlock();
|
||||
return -1;
|
||||
}
|
||||
eventLoop.handlesAlloc += EVENT_ALLOC_EXTENT;
|
||||
}
|
||||
|
||||
watch = nextWatch++;
|
||||
|
||||
eventLoop.handles[eventLoop.handlesCount].watch = watch;
|
||||
eventLoop.handles[eventLoop.handlesCount].fd = fd;
|
||||
eventLoop.handles[eventLoop.handlesCount].events =
|
||||
virEventHandleTypeToPollEvent(events);
|
||||
eventLoop.handles[eventLoop.handlesCount].cb = cb;
|
||||
eventLoop.handles[eventLoop.handlesCount].ff = ff;
|
||||
eventLoop.handles[eventLoop.handlesCount].opaque = opaque;
|
||||
eventLoop.handles[eventLoop.handlesCount].deleted = 0;
|
||||
|
||||
eventLoop.handlesCount++;
|
||||
|
||||
virEventInterruptLocked();
|
||||
virEventUnlock();
|
||||
|
||||
return watch;
|
||||
}
|
||||
|
||||
void virEventUpdateHandleImpl(int watch, int events) {
|
||||
int i;
|
||||
EVENT_DEBUG("Update handle w=%d e=%d", watch, events);
|
||||
|
||||
if (watch <= 0) {
|
||||
VIR_WARN("Ignoring invalid update watch %d", watch);
|
||||
return;
|
||||
}
|
||||
|
||||
virEventLock();
|
||||
for (i = 0 ; i < eventLoop.handlesCount ; i++) {
|
||||
if (eventLoop.handles[i].watch == watch) {
|
||||
eventLoop.handles[i].events =
|
||||
virEventHandleTypeToPollEvent(events);
|
||||
virEventInterruptLocked();
|
||||
break;
|
||||
}
|
||||
}
|
||||
virEventUnlock();
|
||||
}
|
||||
|
||||
/*
|
||||
* Unregister a callback from a file handle
|
||||
* NB, it *must* be safe to call this from within a callback
|
||||
* For this reason we only ever set a flag in the existing list.
|
||||
* Actual deletion will be done out-of-band
|
||||
*/
|
||||
int virEventRemoveHandleImpl(int watch) {
|
||||
int i;
|
||||
EVENT_DEBUG("Remove handle w=%d", watch);
|
||||
|
||||
if (watch <= 0) {
|
||||
VIR_WARN("Ignoring invalid remove watch %d", watch);
|
||||
return -1;
|
||||
}
|
||||
|
||||
virEventLock();
|
||||
for (i = 0 ; i < eventLoop.handlesCount ; i++) {
|
||||
if (eventLoop.handles[i].deleted)
|
||||
continue;
|
||||
|
||||
if (eventLoop.handles[i].watch == watch) {
|
||||
EVENT_DEBUG("mark delete %d %d", i, eventLoop.handles[i].fd);
|
||||
eventLoop.handles[i].deleted = 1;
|
||||
virEventInterruptLocked();
|
||||
virEventUnlock();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
virEventUnlock();
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Register a callback for a timer event
|
||||
* NB, it *must* be safe to call this from within a callback
|
||||
* For this reason we only ever append to existing list.
|
||||
*/
|
||||
int virEventAddTimeoutImpl(int frequency,
|
||||
virEventTimeoutCallback cb,
|
||||
void *opaque,
|
||||
virFreeCallback ff) {
|
||||
struct timeval now;
|
||||
int ret;
|
||||
EVENT_DEBUG("Adding timer %d with %d ms freq", nextTimer, frequency);
|
||||
if (gettimeofday(&now, NULL) < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
virEventLock();
|
||||
if (eventLoop.timeoutsCount == eventLoop.timeoutsAlloc) {
|
||||
EVENT_DEBUG("Used %d timeout slots, adding %d more",
|
||||
eventLoop.timeoutsAlloc, EVENT_ALLOC_EXTENT);
|
||||
if (VIR_REALLOC_N(eventLoop.timeouts,
|
||||
(eventLoop.timeoutsAlloc + EVENT_ALLOC_EXTENT)) < 0) {
|
||||
virEventUnlock();
|
||||
return -1;
|
||||
}
|
||||
eventLoop.timeoutsAlloc += EVENT_ALLOC_EXTENT;
|
||||
}
|
||||
|
||||
eventLoop.timeouts[eventLoop.timeoutsCount].timer = nextTimer++;
|
||||
eventLoop.timeouts[eventLoop.timeoutsCount].frequency = frequency;
|
||||
eventLoop.timeouts[eventLoop.timeoutsCount].cb = cb;
|
||||
eventLoop.timeouts[eventLoop.timeoutsCount].ff = ff;
|
||||
eventLoop.timeouts[eventLoop.timeoutsCount].opaque = opaque;
|
||||
eventLoop.timeouts[eventLoop.timeoutsCount].deleted = 0;
|
||||
eventLoop.timeouts[eventLoop.timeoutsCount].expiresAt =
|
||||
frequency >= 0 ? frequency +
|
||||
(((unsigned long long)now.tv_sec)*1000) +
|
||||
(((unsigned long long)now.tv_usec)/1000) : 0;
|
||||
|
||||
eventLoop.timeoutsCount++;
|
||||
ret = nextTimer-1;
|
||||
virEventInterruptLocked();
|
||||
virEventUnlock();
|
||||
return ret;
|
||||
}
|
||||
|
||||
void virEventUpdateTimeoutImpl(int timer, int frequency) {
|
||||
struct timeval tv;
|
||||
int i;
|
||||
EVENT_DEBUG("Updating timer %d timeout with %d ms freq", timer, frequency);
|
||||
|
||||
if (timer <= 0) {
|
||||
VIR_WARN("Ignoring invalid update timer %d", timer);
|
||||
return;
|
||||
}
|
||||
|
||||
if (gettimeofday(&tv, NULL) < 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
virEventLock();
|
||||
for (i = 0 ; i < eventLoop.timeoutsCount ; i++) {
|
||||
if (eventLoop.timeouts[i].timer == timer) {
|
||||
eventLoop.timeouts[i].frequency = frequency;
|
||||
eventLoop.timeouts[i].expiresAt =
|
||||
frequency >= 0 ? frequency +
|
||||
(((unsigned long long)tv.tv_sec)*1000) +
|
||||
(((unsigned long long)tv.tv_usec)/1000) : 0;
|
||||
virEventInterruptLocked();
|
||||
break;
|
||||
}
|
||||
}
|
||||
virEventUnlock();
|
||||
}
|
||||
|
||||
/*
|
||||
* Unregister a callback for a timer
|
||||
* NB, it *must* be safe to call this from within a callback
|
||||
* For this reason we only ever set a flag in the existing list.
|
||||
* Actual deletion will be done out-of-band
|
||||
*/
|
||||
int virEventRemoveTimeoutImpl(int timer) {
|
||||
int i;
|
||||
EVENT_DEBUG("Remove timer %d", timer);
|
||||
|
||||
if (timer <= 0) {
|
||||
VIR_WARN("Ignoring invalid remove timer %d", timer);
|
||||
return -1;
|
||||
}
|
||||
|
||||
virEventLock();
|
||||
for (i = 0 ; i < eventLoop.timeoutsCount ; i++) {
|
||||
if (eventLoop.timeouts[i].deleted)
|
||||
continue;
|
||||
|
||||
if (eventLoop.timeouts[i].timer == timer) {
|
||||
eventLoop.timeouts[i].deleted = 1;
|
||||
virEventInterruptLocked();
|
||||
virEventUnlock();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
virEventUnlock();
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Iterates over all registered timeouts and determine which
|
||||
* will be the first to expire.
|
||||
* @timeout: filled with expiry time of soonest timer, or -1 if
|
||||
* no timeout is pending
|
||||
* returns: 0 on success, -1 on error
|
||||
*/
|
||||
static int virEventCalculateTimeout(int *timeout) {
|
||||
unsigned long long then = 0;
|
||||
int i;
|
||||
EVENT_DEBUG("Calculate expiry of %d timers", eventLoop.timeoutsCount);
|
||||
/* Figure out if we need a timeout */
|
||||
for (i = 0 ; i < eventLoop.timeoutsCount ; i++) {
|
||||
if (eventLoop.timeouts[i].frequency < 0)
|
||||
continue;
|
||||
|
||||
EVENT_DEBUG("Got a timeout scheduled for %llu", eventLoop.timeouts[i].expiresAt);
|
||||
if (then == 0 ||
|
||||
eventLoop.timeouts[i].expiresAt < then)
|
||||
then = eventLoop.timeouts[i].expiresAt;
|
||||
}
|
||||
|
||||
/* Calculate how long we should wait for a timeout if needed */
|
||||
if (then > 0) {
|
||||
struct timeval tv;
|
||||
|
||||
if (gettimeofday(&tv, NULL) < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
*timeout = then -
|
||||
((((unsigned long long)tv.tv_sec)*1000) +
|
||||
(((unsigned long long)tv.tv_usec)/1000));
|
||||
|
||||
if (*timeout < 0)
|
||||
*timeout = 0;
|
||||
} else {
|
||||
*timeout = -1;
|
||||
}
|
||||
|
||||
EVENT_DEBUG("Timeout at %llu due in %d ms", then, *timeout);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Allocate a pollfd array containing data for all registered
|
||||
* file handles. The caller must free the returned data struct
|
||||
* returns: the pollfd array, or NULL on error
|
||||
*/
|
||||
static struct pollfd *virEventMakePollFDs(int *nfds) {
|
||||
struct pollfd *fds;
|
||||
int i;
|
||||
|
||||
*nfds = 0;
|
||||
for (i = 0 ; i < eventLoop.handlesCount ; i++) {
|
||||
if (eventLoop.handles[i].events)
|
||||
(*nfds)++;
|
||||
}
|
||||
|
||||
/* Setup the poll file handle data structs */
|
||||
if (VIR_ALLOC_N(fds, *nfds) < 0)
|
||||
return NULL;
|
||||
|
||||
*nfds = 0;
|
||||
for (i = 0 ; i < eventLoop.handlesCount ; i++) {
|
||||
EVENT_DEBUG("Prepare n=%d w=%d, f=%d e=%d", i,
|
||||
eventLoop.handles[i].watch,
|
||||
eventLoop.handles[i].fd,
|
||||
eventLoop.handles[i].events);
|
||||
if (!eventLoop.handles[i].events)
|
||||
continue;
|
||||
fds[*nfds].fd = eventLoop.handles[i].fd;
|
||||
fds[*nfds].events = eventLoop.handles[i].events;
|
||||
fds[*nfds].revents = 0;
|
||||
(*nfds)++;
|
||||
//EVENT_DEBUG("Wait for %d %d", eventLoop.handles[i].fd, eventLoop.handles[i].events);
|
||||
}
|
||||
|
||||
return fds;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Iterate over all timers and determine if any have expired.
|
||||
* Invoke the user supplied callback for each timer whose
|
||||
* expiry time is met, and schedule the next timeout. Does
|
||||
* not try to 'catch up' on time if the actual expiry time
|
||||
* was later than the requested time.
|
||||
*
|
||||
* This method must cope with new timers being registered
|
||||
* by a callback, and must skip any timers marked as deleted.
|
||||
*
|
||||
* Returns 0 upon success, -1 if an error occurred
|
||||
*/
|
||||
static int virEventDispatchTimeouts(void) {
|
||||
struct timeval tv;
|
||||
unsigned long long now;
|
||||
int i;
|
||||
/* Save this now - it may be changed during dispatch */
|
||||
int ntimeouts = eventLoop.timeoutsCount;
|
||||
DEBUG("Dispatch %d", ntimeouts);
|
||||
|
||||
if (gettimeofday(&tv, NULL) < 0) {
|
||||
return -1;
|
||||
}
|
||||
now = (((unsigned long long)tv.tv_sec)*1000) +
|
||||
(((unsigned long long)tv.tv_usec)/1000);
|
||||
|
||||
for (i = 0 ; i < ntimeouts ; i++) {
|
||||
if (eventLoop.timeouts[i].deleted || eventLoop.timeouts[i].frequency < 0)
|
||||
continue;
|
||||
|
||||
/* Add 20ms fuzz so we don't pointlessly spin doing
|
||||
* <10ms sleeps, particularly on kernels with low HZ
|
||||
* it is fine that a timer expires 20ms earlier than
|
||||
* requested
|
||||
*/
|
||||
if (eventLoop.timeouts[i].expiresAt <= (now+20)) {
|
||||
virEventTimeoutCallback cb = eventLoop.timeouts[i].cb;
|
||||
int timer = eventLoop.timeouts[i].timer;
|
||||
void *opaque = eventLoop.timeouts[i].opaque;
|
||||
eventLoop.timeouts[i].expiresAt =
|
||||
now + eventLoop.timeouts[i].frequency;
|
||||
|
||||
virEventUnlock();
|
||||
(cb)(timer, opaque);
|
||||
virEventLock();
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/* Iterate over all file handles and dispatch any which
|
||||
* have pending events listed in the poll() data. Invoke
|
||||
* the user supplied callback for each handle which has
|
||||
* pending events
|
||||
*
|
||||
* This method must cope with new handles being registered
|
||||
* by a callback, and must skip any handles marked as deleted.
|
||||
*
|
||||
* Returns 0 upon success, -1 if an error occurred
|
||||
*/
|
||||
static int virEventDispatchHandles(int nfds, struct pollfd *fds) {
|
||||
int i, n;
|
||||
DEBUG("Dispatch %d", nfds);
|
||||
|
||||
/* NB, use nfds not eventLoop.handlesCount, because new
|
||||
* fds might be added on end of list, and they're not
|
||||
* in the fds array we've got */
|
||||
for (i = 0, n = 0 ; n < nfds && i < eventLoop.handlesCount ; n++) {
|
||||
while ((eventLoop.handles[i].fd != fds[n].fd ||
|
||||
eventLoop.handles[i].events == 0) &&
|
||||
i < eventLoop.handlesCount) {
|
||||
i++;
|
||||
}
|
||||
if (i == eventLoop.handlesCount)
|
||||
break;
|
||||
|
||||
DEBUG("i=%d w=%d", i, eventLoop.handles[i].watch);
|
||||
if (eventLoop.handles[i].deleted) {
|
||||
EVENT_DEBUG("Skip deleted n=%d w=%d f=%d", i,
|
||||
eventLoop.handles[i].watch, eventLoop.handles[i].fd);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (fds[n].revents) {
|
||||
virEventHandleCallback cb = eventLoop.handles[i].cb;
|
||||
void *opaque = eventLoop.handles[i].opaque;
|
||||
int hEvents = virPollEventToEventHandleType(fds[n].revents);
|
||||
EVENT_DEBUG("Dispatch n=%d f=%d w=%d e=%d %p", i,
|
||||
fds[n].fd, eventLoop.handles[i].watch,
|
||||
fds[n].revents, eventLoop.handles[i].opaque);
|
||||
virEventUnlock();
|
||||
(cb)(eventLoop.handles[i].watch,
|
||||
fds[n].fd, hEvents, opaque);
|
||||
virEventLock();
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/* Used post dispatch to actually remove any timers that
|
||||
* were previously marked as deleted. This asynchronous
|
||||
* cleanup is needed to make dispatch re-entrant safe.
|
||||
*/
|
||||
static int virEventCleanupTimeouts(void) {
|
||||
int i;
|
||||
DEBUG("Cleanup %d", eventLoop.timeoutsCount);
|
||||
|
||||
/* Remove deleted entries, shuffling down remaining
|
||||
* entries as needed to form contiguous series
|
||||
*/
|
||||
for (i = 0 ; i < eventLoop.timeoutsCount ; ) {
|
||||
if (!eventLoop.timeouts[i].deleted) {
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
|
||||
EVENT_DEBUG("Purging timeout %d with id %d", i, eventLoop.timeouts[i].timer);
|
||||
if (eventLoop.timeouts[i].ff)
|
||||
(eventLoop.timeouts[i].ff)(eventLoop.timeouts[i].opaque);
|
||||
|
||||
if ((i+1) < eventLoop.timeoutsCount) {
|
||||
memmove(eventLoop.timeouts+i,
|
||||
eventLoop.timeouts+i+1,
|
||||
sizeof(struct virEventTimeout)*(eventLoop.timeoutsCount-(i+1)));
|
||||
}
|
||||
eventLoop.timeoutsCount--;
|
||||
}
|
||||
|
||||
/* Release some memory if we've got a big chunk free */
|
||||
if ((eventLoop.timeoutsAlloc - EVENT_ALLOC_EXTENT) > eventLoop.timeoutsCount) {
|
||||
EVENT_DEBUG("Releasing %d out of %d timeout slots used, releasing %d",
|
||||
eventLoop.timeoutsCount, eventLoop.timeoutsAlloc, EVENT_ALLOC_EXTENT);
|
||||
if (VIR_REALLOC_N(eventLoop.timeouts,
|
||||
(eventLoop.timeoutsAlloc - EVENT_ALLOC_EXTENT)) < 0)
|
||||
return -1;
|
||||
eventLoop.timeoutsAlloc -= EVENT_ALLOC_EXTENT;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Used post dispatch to actually remove any handles that
|
||||
* were previously marked as deleted. This asynchronous
|
||||
* cleanup is needed to make dispatch re-entrant safe.
|
||||
*/
|
||||
static int virEventCleanupHandles(void) {
|
||||
int i;
|
||||
DEBUG("Cleanupo %d", eventLoop.handlesCount);
|
||||
|
||||
/* Remove deleted entries, shuffling down remaining
|
||||
* entries as needed to form contiguous series
|
||||
*/
|
||||
for (i = 0 ; i < eventLoop.handlesCount ; ) {
|
||||
if (!eventLoop.handles[i].deleted) {
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (eventLoop.handles[i].ff)
|
||||
(eventLoop.handles[i].ff)(eventLoop.handles[i].opaque);
|
||||
|
||||
if ((i+1) < eventLoop.handlesCount) {
|
||||
memmove(eventLoop.handles+i,
|
||||
eventLoop.handles+i+1,
|
||||
sizeof(struct virEventHandle)*(eventLoop.handlesCount-(i+1)));
|
||||
}
|
||||
eventLoop.handlesCount--;
|
||||
}
|
||||
|
||||
/* Release some memory if we've got a big chunk free */
|
||||
if ((eventLoop.handlesAlloc - EVENT_ALLOC_EXTENT) > eventLoop.handlesCount) {
|
||||
EVENT_DEBUG("Releasing %d out of %d handles slots used, releasing %d",
|
||||
eventLoop.handlesCount, eventLoop.handlesAlloc, EVENT_ALLOC_EXTENT);
|
||||
if (VIR_REALLOC_N(eventLoop.handles,
|
||||
(eventLoop.handlesAlloc - EVENT_ALLOC_EXTENT)) < 0)
|
||||
return -1;
|
||||
eventLoop.handlesAlloc -= EVENT_ALLOC_EXTENT;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Run a single iteration of the event loop, blocking until
|
||||
* at least one file handle has an event, or a timer expires
|
||||
*/
|
||||
int virEventRunOnce(void) {
|
||||
struct pollfd *fds = NULL;
|
||||
int ret, timeout, nfds;
|
||||
|
||||
virEventLock();
|
||||
eventLoop.running = 1;
|
||||
eventLoop.leader = pthread_self();
|
||||
|
||||
if (virEventCleanupTimeouts() < 0 ||
|
||||
virEventCleanupHandles() < 0)
|
||||
goto error;
|
||||
|
||||
if (!(fds = virEventMakePollFDs(&nfds)) ||
|
||||
virEventCalculateTimeout(&timeout) < 0)
|
||||
goto error;
|
||||
|
||||
virEventUnlock();
|
||||
|
||||
retry:
|
||||
EVENT_DEBUG("Poll on %d handles %p timeout %d", nfds, fds, timeout);
|
||||
ret = poll(fds, nfds, timeout);
|
||||
EVENT_DEBUG("Poll got %d event", ret);
|
||||
if (ret < 0) {
|
||||
if (errno == EINTR) {
|
||||
goto retry;
|
||||
}
|
||||
goto error_unlocked;
|
||||
}
|
||||
|
||||
virEventLock();
|
||||
if (virEventDispatchTimeouts() < 0)
|
||||
goto error;
|
||||
|
||||
if (ret > 0 &&
|
||||
virEventDispatchHandles(nfds, fds) < 0)
|
||||
goto error;
|
||||
|
||||
if (virEventCleanupTimeouts() < 0 ||
|
||||
virEventCleanupHandles() < 0)
|
||||
goto error;
|
||||
|
||||
eventLoop.running = 0;
|
||||
virEventUnlock();
|
||||
VIR_FREE(fds);
|
||||
return 0;
|
||||
|
||||
error:
|
||||
virEventUnlock();
|
||||
error_unlocked:
|
||||
VIR_FREE(fds);
|
||||
return -1;
|
||||
}
|
||||
|
||||
static void virEventHandleWakeup(int watch ATTRIBUTE_UNUSED,
|
||||
int fd,
|
||||
int events ATTRIBUTE_UNUSED,
|
||||
void *opaque ATTRIBUTE_UNUSED)
|
||||
{
|
||||
char c;
|
||||
virEventLock();
|
||||
ignore_value(saferead(fd, &c, sizeof(c)));
|
||||
virEventUnlock();
|
||||
}
|
||||
|
||||
int virEventInit(void)
|
||||
{
|
||||
if (pthread_mutex_init(&eventLoop.lock, NULL) != 0)
|
||||
return -1;
|
||||
|
||||
if (pipe(eventLoop.wakeupfd) < 0 ||
|
||||
virSetNonBlock(eventLoop.wakeupfd[0]) < 0 ||
|
||||
virSetNonBlock(eventLoop.wakeupfd[1]) < 0 ||
|
||||
virSetCloseExec(eventLoop.wakeupfd[0]) < 0 ||
|
||||
virSetCloseExec(eventLoop.wakeupfd[1]) < 0)
|
||||
return -1;
|
||||
|
||||
if (virEventAddHandleImpl(eventLoop.wakeupfd[0],
|
||||
VIR_EVENT_HANDLE_READABLE,
|
||||
virEventHandleWakeup, NULL, NULL) < 0)
|
||||
return -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int virEventInterruptLocked(void)
|
||||
{
|
||||
char c = '\0';
|
||||
|
||||
if (!eventLoop.running ||
|
||||
pthread_self() == eventLoop.leader) {
|
||||
VIR_DEBUG("Skip interrupt, %d %d", eventLoop.running, (int)eventLoop.leader);
|
||||
return 0;
|
||||
}
|
||||
|
||||
VIR_DEBUG0("Interrupting");
|
||||
if (safewrite(eventLoop.wakeupfd[1], &c, sizeof(c)) != sizeof(c))
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int virEventInterrupt(void)
|
||||
{
|
||||
int ret;
|
||||
virEventLock();
|
||||
ret = virEventInterruptLocked();
|
||||
virEventUnlock();
|
||||
return ret;
|
||||
}
|
||||
|
||||
int
|
||||
virEventHandleTypeToPollEvent(int events)
|
||||
{
|
||||
int ret = 0;
|
||||
if(events & VIR_EVENT_HANDLE_READABLE)
|
||||
ret |= POLLIN;
|
||||
if(events & VIR_EVENT_HANDLE_WRITABLE)
|
||||
ret |= POLLOUT;
|
||||
if(events & VIR_EVENT_HANDLE_ERROR)
|
||||
ret |= POLLERR;
|
||||
if(events & VIR_EVENT_HANDLE_HANGUP)
|
||||
ret |= POLLHUP;
|
||||
return ret;
|
||||
}
|
||||
|
||||
int
|
||||
virPollEventToEventHandleType(int events)
|
||||
{
|
||||
int ret = 0;
|
||||
if(events & POLLIN)
|
||||
ret |= VIR_EVENT_HANDLE_READABLE;
|
||||
if(events & POLLOUT)
|
||||
ret |= VIR_EVENT_HANDLE_WRITABLE;
|
||||
if(events & POLLERR)
|
||||
ret |= VIR_EVENT_HANDLE_ERROR;
|
||||
if(events & POLLNVAL) /* Treat NVAL as error, since libvirt doesn't distinguish */
|
||||
ret |= VIR_EVENT_HANDLE_ERROR;
|
||||
if(events & POLLHUP)
|
||||
ret |= VIR_EVENT_HANDLE_HANGUP;
|
||||
return ret;
|
||||
}
|
||||
@ -24,40 +24,72 @@
|
||||
#ifndef __VIRTD_EVENT_H__
|
||||
# define __VIRTD_EVENT_H__
|
||||
|
||||
#include "../src/event.h"
|
||||
# include "internal.h"
|
||||
|
||||
/**
|
||||
* virEventAddHandleImpl: register a callback for monitoring file handle events
|
||||
*
|
||||
* @fd: file handle to monitor for events
|
||||
* @events: bitset of events to wach from POLLnnn constants
|
||||
* @cb: callback to invoke when an event occurrs
|
||||
* @events: bitset of events to watch from POLLnnn constants
|
||||
* @cb: callback to invoke when an event occurs
|
||||
* @opaque: user data to pass to callback
|
||||
*
|
||||
* returns -1 if the file handle cannot be registered, 0 upon success
|
||||
*/
|
||||
int virEventAddHandleImpl(int fd, int events, virEventHandleCallback cb, void *opaque);
|
||||
int virEventAddHandleImpl(int fd, int events,
|
||||
virEventHandleCallback cb,
|
||||
void *opaque,
|
||||
virFreeCallback ff);
|
||||
|
||||
/**
|
||||
* virEventUpdateHandleImpl: change event set for a monitored file handle
|
||||
*
|
||||
* @watch: watch whose handle to update
|
||||
* @events: bitset of events to watch from POLLnnn constants
|
||||
*
|
||||
* Will not fail if fd exists
|
||||
*/
|
||||
void virEventUpdateHandleImpl(int watch, int events);
|
||||
|
||||
/**
|
||||
* virEventRemoveHandleImpl: unregister a callback from a file handle
|
||||
*
|
||||
* @fd: file handle to stop monitoring for events
|
||||
* @watch: watch whose handle to remove
|
||||
*
|
||||
* returns -1 if the file handle was not registered, 0 upon success
|
||||
*/
|
||||
int virEventRemoveHandleImpl(int fd);
|
||||
int virEventRemoveHandleImpl(int watch);
|
||||
|
||||
/**
|
||||
* virEventAddTimeoutImpl: register a callback for a timer event
|
||||
*
|
||||
* @timeout: timeout between events in milliseconds
|
||||
* @cb: callback to invoke when an event occurrs
|
||||
* @frequency: time between events in milliseconds
|
||||
* @cb: callback to invoke when an event occurs
|
||||
* @opaque: user data to pass to callback
|
||||
*
|
||||
* Setting frequency to -1 will disable the timer. Setting the frequency
|
||||
* to zero will cause it to fire on every event loop iteration.
|
||||
*
|
||||
* returns -1 if the file handle cannot be registered, a positive
|
||||
* integer timer id upon success
|
||||
*/
|
||||
int virEventAddTimeoutImpl(int timeout, virEventTimeoutCallback cb, void *opaque);
|
||||
int virEventAddTimeoutImpl(int frequency,
|
||||
virEventTimeoutCallback cb,
|
||||
void *opaque,
|
||||
virFreeCallback ff);
|
||||
|
||||
/**
|
||||
* virEventUpdateTimeoutImpl: change frequency for a timer
|
||||
*
|
||||
* @timer: timer id to change
|
||||
* @frequency: time between events in milliseconds
|
||||
*
|
||||
* Setting frequency to -1 will disable the timer. Setting the frequency
|
||||
* to zero will cause it to fire on every event loop iteration.
|
||||
*
|
||||
* Will not fail if timer exists
|
||||
*/
|
||||
void virEventUpdateTimeoutImpl(int timer, int frequency);
|
||||
|
||||
/**
|
||||
* virEventRemoveTimeoutImpl: unregister a callback for a timer
|
||||
@ -68,6 +100,13 @@ int virEventAddTimeoutImpl(int timeout, virEventTimeoutCallback cb, void *opaque
|
||||
*/
|
||||
int virEventRemoveTimeoutImpl(int timer);
|
||||
|
||||
/**
|
||||
* virEventInit: Initialize the event loop
|
||||
*
|
||||
* returns -1 if initialization failed
|
||||
*/
|
||||
int virEventInit(void);
|
||||
|
||||
/**
|
||||
* virEventRunOnce: run a single iteration of the event loop.
|
||||
*
|
||||
@ -78,4 +117,18 @@ int virEventRemoveTimeoutImpl(int timer);
|
||||
*/
|
||||
int virEventRunOnce(void);
|
||||
|
||||
int
|
||||
virEventHandleTypeToPollEvent(int events);
|
||||
int
|
||||
virPollEventToEventHandleType(int events);
|
||||
|
||||
|
||||
/**
|
||||
* virEventInterrupt: wakeup any thread waiting in poll()
|
||||
*
|
||||
* return -1 if wakup failed
|
||||
*/
|
||||
int virEventInterrupt(void);
|
||||
|
||||
|
||||
#endif /* __VIRTD_EVENT_H__ */
|
||||
304
daemon/libvirt-guests.init.in
Normal file
304
daemon/libvirt-guests.init.in
Normal file
@ -0,0 +1,304 @@
|
||||
#!/bin/sh
|
||||
|
||||
# the following is the LSB init header
|
||||
#
|
||||
### BEGIN INIT INFO
|
||||
# Provides: libvirt-guests
|
||||
# Required-Start: libvirtd
|
||||
# Required-Stop: libvirtd
|
||||
# Default-Start: 3 4 5
|
||||
# Short-Description: suspend/resume libvirt guests on shutdown/boot
|
||||
# Description: This is a script for suspending active libvirt guests
|
||||
# on shutdown and resuming them on next boot
|
||||
# See http://libvirt.org
|
||||
### END INIT INFO
|
||||
|
||||
# the following is chkconfig init header
|
||||
#
|
||||
# libvirt-guests: suspend/resume libvirt guests on shutdown/boot
|
||||
#
|
||||
# chkconfig: 345 98 02
|
||||
# description: This is a script for suspending active libvirt guests \
|
||||
# on shutdown and resuming them on next boot \
|
||||
# See http://libvirt.org
|
||||
#
|
||||
|
||||
sysconfdir=@sysconfdir@
|
||||
localstatedir=@localstatedir@
|
||||
|
||||
# Source function library.
|
||||
. "$sysconfdir"/rc.d/init.d/functions
|
||||
|
||||
URIS=default
|
||||
ON_BOOT=start
|
||||
ON_SHUTDOWN=suspend
|
||||
SHUTDOWN_TIMEOUT=0
|
||||
|
||||
test -f "$sysconfdir"/sysconfig/libvirt-guests && . "$sysconfdir"/sysconfig/libvirt-guests
|
||||
|
||||
LISTFILE="$localstatedir"/lib/libvirt/libvirt-guests
|
||||
VAR_SUBSYS_LIBVIRT_GUESTS="$localstatedir"/lock/subsys/libvirt-guests
|
||||
|
||||
RETVAL=0
|
||||
|
||||
retval() {
|
||||
"$@"
|
||||
if [ $? -ne 0 ]; then
|
||||
RETVAL=1
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
|
||||
run_virsh() {
|
||||
uri=$1
|
||||
shift
|
||||
|
||||
if [ "x$uri" = xdefault ]; then
|
||||
conn=
|
||||
else
|
||||
conn="-c $uri"
|
||||
fi
|
||||
|
||||
virsh $conn "$@" </dev/null
|
||||
}
|
||||
|
||||
run_virsh_c() {
|
||||
( export LC_ALL=C; run_virsh "$@" )
|
||||
}
|
||||
|
||||
list_guests() {
|
||||
uri=$1
|
||||
|
||||
list=$(run_virsh_c $uri list)
|
||||
if [ $? -ne 0 ]; then
|
||||
RETVAL=1
|
||||
return 1
|
||||
fi
|
||||
|
||||
uuids=
|
||||
for id in $(echo "$list" | awk 'NR > 2 {print $1}'); do
|
||||
uuid=$(run_virsh_c $uri dominfo $id | awk '/^UUID:/{print $2}')
|
||||
if [ -z "$uuid" ]; then
|
||||
RETVAL=1
|
||||
return 1
|
||||
fi
|
||||
uuids="$uuids $uuid"
|
||||
done
|
||||
|
||||
echo $uuids
|
||||
}
|
||||
|
||||
guest_name() {
|
||||
uri=$1
|
||||
uuid=$2
|
||||
|
||||
name=$(run_virsh_c $uri dominfo $uuid 2>/dev/null | \
|
||||
awk '/^Name:/{print $2}')
|
||||
[ -n "$name" ] || name=$uuid
|
||||
|
||||
echo "$name"
|
||||
}
|
||||
|
||||
guest_is_on() {
|
||||
uri=$1
|
||||
uuid=$2
|
||||
|
||||
guest_running=false
|
||||
info=$(run_virsh_c $uri dominfo $uuid)
|
||||
if [ $? -ne 0 ]; then
|
||||
RETVAL=1
|
||||
return 1
|
||||
fi
|
||||
|
||||
id=$(echo "$info" | awk '/^Id:/{print $2}')
|
||||
|
||||
[ -n "$id" ] && [ "x$id" != x- ] && guest_running=true
|
||||
return 0
|
||||
}
|
||||
|
||||
started() {
|
||||
touch "$VAR_SUBSYS_LIBVIRT_GUESTS"
|
||||
}
|
||||
|
||||
start() {
|
||||
[ -f "$LISTFILE" ] || { started; return 0; }
|
||||
|
||||
if [ "x$ON_BOOT" != xstart ]; then
|
||||
echo $"libvirt-guests is configured not to start any guests on boot"
|
||||
rm -f "$LISTFILE"
|
||||
started
|
||||
return 0
|
||||
fi
|
||||
|
||||
while read uri list; do
|
||||
configured=false
|
||||
for confuri in $URIS; do
|
||||
if [ $confuri = $uri ]; then
|
||||
configured=true
|
||||
break
|
||||
fi
|
||||
done
|
||||
if ! $configured; then
|
||||
echo $"Ignoring guests on $uri URI"
|
||||
continue
|
||||
fi
|
||||
|
||||
echo $"Resuming guests on $uri URI..."
|
||||
for guest in $list; do
|
||||
name=$(guest_name $uri $guest)
|
||||
echo -n $"Resuming guest $name: "
|
||||
if guest_is_on $uri $guest; then
|
||||
if $guest_running; then
|
||||
echo $"already active"
|
||||
else
|
||||
retval run_virsh $uri start "$name" >/dev/null && \
|
||||
echo $"done"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
done <"$LISTFILE"
|
||||
|
||||
rm -f "$LISTFILE"
|
||||
started
|
||||
}
|
||||
|
||||
suspend_guest()
|
||||
{
|
||||
uri=$1
|
||||
guest=$2
|
||||
|
||||
name=$(guest_name $uri $guest)
|
||||
label=$"Suspending $name: "
|
||||
echo -n "$label"
|
||||
run_virsh $uri managedsave $guest >/dev/null &
|
||||
virsh_pid=$!
|
||||
while true; do
|
||||
sleep 1
|
||||
kill -0 $virsh_pid >&/dev/null || break
|
||||
progress=$(run_virsh_c $uri domjobinfo $guest 2>/dev/null | \
|
||||
awk '/^Data processed:/{print $3, $4}')
|
||||
if [ -n "$progress" ]; then
|
||||
printf '\r%s%12s ' "$label" "$progress"
|
||||
else
|
||||
printf '\r%s%-12s ' "$label" "..."
|
||||
fi
|
||||
done
|
||||
retval wait $virsh_pid && printf '\r%s%-12s\n' "$label" $"done"
|
||||
}
|
||||
|
||||
shutdown_guest()
|
||||
{
|
||||
uri=$1
|
||||
guest=$2
|
||||
|
||||
name=$(guest_name $uri $guest)
|
||||
label=$"Shutting down $name: "
|
||||
echo -n "$label"
|
||||
retval run_virsh $uri shutdown $guest >/dev/null || return
|
||||
timeout=$SHUTDOWN_TIMEOUT
|
||||
while [ $timeout -gt 0 ]; do
|
||||
sleep 1
|
||||
timeout=$[timeout - 1]
|
||||
guest_is_on $uri $guest || return
|
||||
$guest_running || break
|
||||
printf '\r%s%-12d ' "$label" $timeout
|
||||
done
|
||||
|
||||
if guest_is_on $uri $guest; then
|
||||
if $guest_running; then
|
||||
printf '\r%s%-12s\n' "$label" $"failed to shutdown in time"
|
||||
else
|
||||
printf '\r%s%-12s\n' "$label" $"done"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
stop() {
|
||||
# last stop was not followed by start
|
||||
[ -f "$LISTFILE" ] && return 0
|
||||
|
||||
suspending=true
|
||||
if [ "x$ON_SHUTDOWN" = xshutdown ]; then
|
||||
suspending=false
|
||||
if [ $SHUTDOWN_TIMEOUT -le 0 ]; then
|
||||
echo $"Shutdown action requested but SHUTDOWN_TIMEOUT was not set"
|
||||
RETVAL=6
|
||||
return
|
||||
fi
|
||||
fi
|
||||
|
||||
: >"$LISTFILE"
|
||||
for uri in $URIS; do
|
||||
echo -n $"Running guests on $uri URI: "
|
||||
list=$(list_guests $uri)
|
||||
if [ $? -eq 0 ]; then
|
||||
empty=true
|
||||
for uuid in $list; do
|
||||
$empty || printf ", "
|
||||
echo -n $(guest_name $uri $uuid)
|
||||
empty=false
|
||||
done
|
||||
if $empty; then
|
||||
echo $"no running guests."
|
||||
else
|
||||
echo
|
||||
echo $uri $list >>"$LISTFILE"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
while read uri list; do
|
||||
if $suspending; then
|
||||
echo $"Suspending guests on $uri URI..."
|
||||
else
|
||||
echo $"Shutting down guests on $uri URI..."
|
||||
fi
|
||||
|
||||
for guest in $list; do
|
||||
if $suspending; then
|
||||
suspend_guest $uri $guest
|
||||
else
|
||||
shutdown_guest $uri $guest
|
||||
fi
|
||||
done
|
||||
done <"$LISTFILE"
|
||||
|
||||
rm -f "$VAR_SUBSYS_LIBVIRT_GUESTS"
|
||||
}
|
||||
|
||||
gueststatus() {
|
||||
for uri in $URIS; do
|
||||
echo "* $uri URI:"
|
||||
retval run_virsh $uri list || echo
|
||||
done
|
||||
}
|
||||
|
||||
# See how we were called.
|
||||
case "$1" in
|
||||
start|stop|gueststatus)
|
||||
$1
|
||||
;;
|
||||
restart)
|
||||
stop && start
|
||||
;;
|
||||
force-reload)
|
||||
;;
|
||||
status)
|
||||
if [ -f "$LISTFILE" ]; then
|
||||
RETVAL=3
|
||||
else
|
||||
RETVAL=0
|
||||
fi
|
||||
;;
|
||||
shutdown)
|
||||
ON_SHUTDOWN=shutdown
|
||||
stop
|
||||
;;
|
||||
*)
|
||||
echo $"Usage: $0 {start|stop|restart|force-reload|gueststatus|shutdown}"
|
||||
exit 3
|
||||
;;
|
||||
esac
|
||||
exit $RETVAL
|
||||
24
daemon/libvirt-guests.sysconf
Normal file
24
daemon/libvirt-guests.sysconf
Normal file
@ -0,0 +1,24 @@
|
||||
# URIs to check for running guests
|
||||
# example: URIS='default xen:/// vbox+tcp://host/system lxc:///'
|
||||
#URIS=default
|
||||
|
||||
# action taken on host boot
|
||||
# - start all guests which were running on shutdown are started on boot
|
||||
# regardless on their autostart settings
|
||||
# - ignore libvirt-guests init script won't start any guest on boot, however,
|
||||
# guests marked as autostart will still be automatically started by
|
||||
# libvirtd
|
||||
#ON_BOOT=start
|
||||
|
||||
# action taken on host shutdown
|
||||
# - suspend all running guests are suspended using virsh managedsave
|
||||
# - shutdown all running guests are asked to shutdown. Please be careful with
|
||||
# this settings since there is no way to distinguish between a
|
||||
# guest which is stuck or ignores shutdown requests and a guest
|
||||
# which just needs a long time to shutdown. When setting
|
||||
# ON_SHUTDOWN=shutdown, you must also set SHUTDOWN_TIMEOUT to a
|
||||
# value suitable for your guests.
|
||||
#ON_SHUTDOWN=suspend
|
||||
|
||||
# number of seconds we're willing to wait for a guest to shut down
|
||||
#SHUTDOWN_TIMEOUT=0
|
||||
82
daemon/libvirtd.aug
Normal file
82
daemon/libvirtd.aug
Normal file
@ -0,0 +1,82 @@
|
||||
(* /etc/libvirt/libvirtd.conf *)
|
||||
|
||||
module Libvirtd =
|
||||
autoload xfm
|
||||
|
||||
let eol = del /[ \t]*\n/ "\n"
|
||||
let value_sep = del /[ \t]*=[ \t]*/ " = "
|
||||
let indent = del /[ \t]*/ ""
|
||||
|
||||
let array_sep = del /,[ \t\n]*/ ", "
|
||||
let array_start = del /\[[ \t\n]*/ "[ "
|
||||
let array_end = del /\]/ "]"
|
||||
|
||||
let str_val = del /\"/ "\"" . store /[^\"]*/ . del /\"/ "\""
|
||||
let bool_val = store /0|1/
|
||||
let int_val = store /[0-9]+/
|
||||
let str_array_element = [ seq "el" . str_val ] . del /[ \t\n]*/ ""
|
||||
let str_array_val = counter "el" . array_start . ( str_array_element . ( array_sep . str_array_element ) * ) ? . array_end
|
||||
|
||||
let str_entry (kw:string) = [ key kw . value_sep . str_val ]
|
||||
let bool_entry (kw:string) = [ key kw . value_sep . bool_val ]
|
||||
let int_entry (kw:string) = [ key kw . value_sep . int_val ]
|
||||
let str_array_entry (kw:string) = [ key kw . value_sep . str_array_val ]
|
||||
|
||||
|
||||
(* Config entry grouped by function - same order as example config *)
|
||||
let network_entry = bool_entry "listen_tls"
|
||||
| bool_entry "listen_tcp"
|
||||
| str_entry "tls_port"
|
||||
| str_entry "tcp_port"
|
||||
| str_entry "listen_addr"
|
||||
| bool_entry "mdns_adv"
|
||||
| str_entry "mdns_name"
|
||||
|
||||
let sock_acl_entry = str_entry "unix_sock_group"
|
||||
| str_entry "unix_sock_ro_perms"
|
||||
| str_entry "unix_sock_rw_perms"
|
||||
| str_entry "unix_sock_dir"
|
||||
|
||||
let authentication_entry = str_entry "auth_unix_ro"
|
||||
| str_entry "auth_unix_rw"
|
||||
| str_entry "auth_tcp"
|
||||
| str_entry "auth_tls"
|
||||
|
||||
let certificate_entry = str_entry "key_file"
|
||||
| str_entry "cert_file"
|
||||
| str_entry "ca_file"
|
||||
| str_entry "crl_file"
|
||||
|
||||
let authorization_entry = bool_entry "tls_no_verify_certificate"
|
||||
| str_array_entry "tls_allowed_dn_list"
|
||||
| str_array_entry "sasl_allowed_username_list"
|
||||
|
||||
let processing_entry = int_entry "min_workers"
|
||||
| int_entry "max_workers"
|
||||
| int_entry "max_clients"
|
||||
| int_entry "max_requests"
|
||||
| int_entry "max_client_requests"
|
||||
|
||||
let logging_entry = int_entry "log_level"
|
||||
| str_entry "log_filters"
|
||||
| str_entry "log_outputs"
|
||||
|
||||
(* Each enty in the config is one of the following three ... *)
|
||||
let entry = network_entry
|
||||
| sock_acl_entry
|
||||
| authentication_entry
|
||||
| certificate_entry
|
||||
| authorization_entry
|
||||
| processing_entry
|
||||
| logging_entry
|
||||
let comment = [ label "#comment" . del /#[ \t]*/ "# " . store /([^ \t\n][^\n]*)?/ . del /\n/ "\n" ]
|
||||
let empty = [ label "#empty" . eol ]
|
||||
|
||||
let record = indent . entry . eol
|
||||
|
||||
let lns = ( record | comment | empty ) *
|
||||
|
||||
let filter = incl "/etc/libvirt/libvirtd.conf"
|
||||
. Util.stdexcl
|
||||
|
||||
let xfm = transform lns filter
|
||||
3292
daemon/libvirtd.c
Normal file
3292
daemon/libvirtd.c
Normal file
File diff suppressed because it is too large
Load Diff
327
daemon/libvirtd.conf
Normal file
327
daemon/libvirtd.conf
Normal file
@ -0,0 +1,327 @@
|
||||
# Master libvirt daemon configuration file
|
||||
#
|
||||
# For further information consult http://libvirt.org/format.html
|
||||
#
|
||||
# NOTE: the tests/daemon-conf regression test script requires
|
||||
# that each "PARAMETER = VALUE" line in this file have the parameter
|
||||
# name just after a leading "#".
|
||||
|
||||
#################################################################
|
||||
#
|
||||
# Network connectivity controls
|
||||
#
|
||||
|
||||
# Flag listening for secure TLS connections on the public TCP/IP port.
|
||||
# NB, must pass the --listen flag to the libvirtd process for this to
|
||||
# have any effect.
|
||||
#
|
||||
# It is necessary to setup a CA and issue server certificates before
|
||||
# using this capability.
|
||||
#
|
||||
# This is enabled by default, uncomment this to disable it
|
||||
#listen_tls = 0
|
||||
|
||||
# Listen for unencrypted TCP connections on the public TCP/IP port.
|
||||
# NB, must pass the --listen flag to the libvirtd process for this to
|
||||
# have any effect.
|
||||
#
|
||||
# Using the TCP socket requires SASL authentication by default. Only
|
||||
# SASL mechanisms which support data encryption are allowed. This is
|
||||
# DIGEST_MD5 and GSSAPI (Kerberos5)
|
||||
#
|
||||
# This is disabled by default, uncomment this to enable it.
|
||||
#listen_tcp = 1
|
||||
|
||||
|
||||
|
||||
# Override the port for accepting secure TLS connections
|
||||
# This can be a port number, or service name
|
||||
#
|
||||
#tls_port = "16514"
|
||||
|
||||
# Override the port for accepting insecure TCP connections
|
||||
# This can be a port number, or service name
|
||||
#
|
||||
#tcp_port = "16509"
|
||||
|
||||
|
||||
# Override the default configuration which binds to all network
|
||||
# interfaces. This can be a numeric IPv4/6 address, or hostname
|
||||
#
|
||||
#listen_addr = "192.168.0.1"
|
||||
|
||||
|
||||
# Flag toggling mDNS advertizement of the libvirt service.
|
||||
#
|
||||
# Alternatively can disable for all services on a host by
|
||||
# stopping the Avahi daemon
|
||||
#
|
||||
# This is enabled by default, uncomment this to disable it
|
||||
#mdns_adv = 0
|
||||
|
||||
# Override the default mDNS advertizement name. This must be
|
||||
# unique on the immediate broadcast network.
|
||||
#
|
||||
# The default is "Virtualization Host HOSTNAME", where HOSTNAME
|
||||
# is subsituted for the short hostname of the machine (without domain)
|
||||
#
|
||||
#mdns_name = "Virtualization Host Joe Demo"
|
||||
|
||||
|
||||
#################################################################
|
||||
#
|
||||
# UNIX socket access controls
|
||||
#
|
||||
|
||||
# Set the UNIX domain socket group ownership. This can be used to
|
||||
# allow a 'trusted' set of users access to management capabilities
|
||||
# without becoming root.
|
||||
#
|
||||
# This is restricted to 'root' by default.
|
||||
#unix_sock_group = "libvirt"
|
||||
|
||||
# Set the UNIX socket permissions for the R/O socket. This is used
|
||||
# for monitoring VM status only
|
||||
#
|
||||
# Default allows any user. If setting group ownership may want to
|
||||
# restrict this to:
|
||||
#unix_sock_ro_perms = "0777"
|
||||
|
||||
# Set the UNIX socket permissions for the R/W socket. This is used
|
||||
# for full management of VMs
|
||||
#
|
||||
# Default allows only root. If PolicyKit is enabled on the socket,
|
||||
# the default will change to allow everyone (eg, 0777)
|
||||
#
|
||||
# If not using PolicyKit and setting group ownership for access
|
||||
# control then you may want to relax this to:
|
||||
#unix_sock_rw_perms = "0770"
|
||||
|
||||
# Set the name of the directory in which sockets will be found/created.
|
||||
#unix_sock_dir = "/var/run/libvirt"
|
||||
|
||||
#################################################################
|
||||
#
|
||||
# Authentication.
|
||||
#
|
||||
# - none: do not perform auth checks. If you can connect to the
|
||||
# socket you are allowed. This is suitable if there are
|
||||
# restrictions on connecting to the socket (eg, UNIX
|
||||
# socket permissions), or if there is a lower layer in
|
||||
# the network providing auth (eg, TLS/x509 certificates)
|
||||
#
|
||||
# - sasl: use SASL infrastructure. The actual auth scheme is then
|
||||
# controlled from /etc/sasl2/libvirt.conf. For the TCP
|
||||
# socket only GSSAPI & DIGEST-MD5 mechanisms will be used.
|
||||
# For non-TCP or TLS sockets, any scheme is allowed.
|
||||
#
|
||||
# - polkit: use PolicyKit to authenticate. This is only suitable
|
||||
# for use on the UNIX sockets. The default policy will
|
||||
# require a user to supply their own password to gain
|
||||
# full read/write access (aka sudo like), while anyone
|
||||
# is allowed read/only access.
|
||||
#
|
||||
# Set an authentication scheme for UNIX read-only sockets
|
||||
# By default socket permissions allow anyone to connect
|
||||
#
|
||||
# To restrict monitoring of domains you may wish to enable
|
||||
# an authentication mechanism here
|
||||
#auth_unix_ro = "none"
|
||||
|
||||
# Set an authentication scheme for UNIX read-write sockets
|
||||
# By default socket permissions only allow root. If PolicyKit
|
||||
# support was compiled into libvirt, the default will be to
|
||||
# use 'polkit' auth.
|
||||
#
|
||||
# If the unix_sock_rw_perms are changed you may wish to enable
|
||||
# an authentication mechanism here
|
||||
#auth_unix_rw = "none"
|
||||
|
||||
# Change the authentication scheme for TCP sockets.
|
||||
#
|
||||
# If you don't enable SASL, then all TCP traffic is cleartext.
|
||||
# Don't do this outside of a dev/test scenario. For real world
|
||||
# use, always enable SASL and use the GSSAPI or DIGEST-MD5
|
||||
# mechanism in /etc/sasl2/libvirt.conf
|
||||
#auth_tcp = "sasl"
|
||||
|
||||
# Change the authentication scheme for TLS sockets.
|
||||
#
|
||||
# TLS sockets already have encryption provided by the TLS
|
||||
# layer, and limited authentication is done by certificates
|
||||
#
|
||||
# It is possible to make use of any SASL authentication
|
||||
# mechanism as well, by using 'sasl' for this option
|
||||
#auth_tls = "none"
|
||||
|
||||
|
||||
|
||||
#################################################################
|
||||
#
|
||||
# TLS x509 certificate configuration
|
||||
#
|
||||
|
||||
|
||||
# Override the default server key file path
|
||||
#
|
||||
#key_file = "/etc/pki/libvirt/private/serverkey.pem"
|
||||
|
||||
# Override the default server certificate file path
|
||||
#
|
||||
#cert_file = "/etc/pki/libvirt/servercert.pem"
|
||||
|
||||
# Override the default CA certificate path
|
||||
#
|
||||
#ca_file = "/etc/pki/CA/cacert.pem"
|
||||
|
||||
# Specify a certificate revocation list.
|
||||
#
|
||||
# Defaults to not using a CRL, uncomment to enable it
|
||||
#crl_file = "/etc/pki/CA/crl.pem"
|
||||
|
||||
|
||||
|
||||
#################################################################
|
||||
#
|
||||
# Authorization controls
|
||||
#
|
||||
|
||||
|
||||
# Flag to disable verification of client certificates
|
||||
#
|
||||
# Client certificate verification is the primary authentication mechanism.
|
||||
# Any client which does not present a certificate signed by the CA
|
||||
# will be rejected.
|
||||
#
|
||||
# Default is to always verify. Uncommenting this will disable
|
||||
# verification - make sure an IP whitelist is set
|
||||
#tls_no_verify_certificate = 1
|
||||
|
||||
|
||||
# A whitelist of allowed x509 Distinguished Names
|
||||
# This list may contain wildcards such as
|
||||
#
|
||||
# "C=GB,ST=London,L=London,O=Red Hat,CN=*"
|
||||
#
|
||||
# See the POSIX fnmatch function for the format of the wildcards.
|
||||
#
|
||||
# NB If this is an empty list, no client can connect, so comment out
|
||||
# entirely rather than using empty list to disable these checks
|
||||
#
|
||||
# By default, no DN's are checked
|
||||
#tls_allowed_dn_list = ["DN1", "DN2"]
|
||||
|
||||
|
||||
# A whitelist of allowed SASL usernames. The format for usernames
|
||||
# depends on the SASL authentication mechanism. Kerberos usernames
|
||||
# look like username@REALM
|
||||
#
|
||||
# This list may contain wildcards such as
|
||||
#
|
||||
# "*@EXAMPLE.COM"
|
||||
#
|
||||
# See the POSIX fnmatch function for the format of the wildcards.
|
||||
#
|
||||
# NB If this is an empty list, no client can connect, so comment out
|
||||
# entirely rather than using empty list to disable these checks
|
||||
#
|
||||
# By default, no Username's are checked
|
||||
#sasl_allowed_username_list = ["joe@EXAMPLE.COM", "fred@EXAMPLE.COM" ]
|
||||
|
||||
|
||||
|
||||
#################################################################
|
||||
#
|
||||
# Processing controls
|
||||
#
|
||||
|
||||
# The maximum number of concurrent client connections to allow
|
||||
# over all sockets combined.
|
||||
#max_clients = 20
|
||||
|
||||
|
||||
# The minimum limit sets the number of workers to start up
|
||||
# initially. If the number of active clients exceeds this,
|
||||
# then more threads are spawned, upto max_workers limit.
|
||||
# Typically you'd want max_workers to equal maximum number
|
||||
# of clients allowed
|
||||
#min_workers = 5
|
||||
#max_workers = 20
|
||||
|
||||
# Total global limit on concurrent RPC calls. Should be
|
||||
# at least as large as max_workers. Beyond this, RPC requests
|
||||
# will be read into memory and queued. This directly impact
|
||||
# memory usage, currently each request requires 256 KB of
|
||||
# memory. So by default upto 5 MB of memory is used
|
||||
#
|
||||
# XXX this isn't actually enforced yet, only the per-client
|
||||
# limit is used so far
|
||||
#max_requests = 20
|
||||
|
||||
# Limit on concurrent requests from a single client
|
||||
# connection. To avoid one client monopolizing the server
|
||||
# this should be a small fraction of the global max_requests
|
||||
# and max_workers parameter
|
||||
#max_client_requests = 5
|
||||
|
||||
#################################################################
|
||||
#
|
||||
# Logging controls
|
||||
#
|
||||
|
||||
# Logging level: 4 errors, 3 warnings, 2 informations, 1 debug
|
||||
# basically 1 will log everything possible
|
||||
#log_level = 3
|
||||
|
||||
# Logging filters:
|
||||
# A filter allows to select a different logging level for a given category
|
||||
# of logs
|
||||
# The format for a filter is:
|
||||
# x:name
|
||||
# where name is a match string e.g. remote or qemu
|
||||
# the x prefix is the minimal level where matching messages should be logged
|
||||
# 1: DEBUG
|
||||
# 2: INFO
|
||||
# 3: WARNING
|
||||
# 4: ERROR
|
||||
#
|
||||
# Multiple filter can be defined in a single @filters, they just need to be
|
||||
# separated by spaces.
|
||||
#
|
||||
# e.g:
|
||||
# log_filters="3:remote 4:event"
|
||||
# to only get warning or errors from the remote layer and only errors from
|
||||
# the event layer.
|
||||
|
||||
# Logging outputs:
|
||||
# An output is one of the places to save logging informations
|
||||
# The format for an output can be:
|
||||
# x:stderr
|
||||
# output goes to stderr
|
||||
# x:syslog:name
|
||||
# use syslog for the output and use the given name as the ident
|
||||
# x:file:file_path
|
||||
# output to a file, with the given filepath
|
||||
# In all case the x prefix is the minimal level, acting as a filter
|
||||
# 1: DEBUG
|
||||
# 2: INFO
|
||||
# 3: WARNING
|
||||
# 4: ERROR
|
||||
#
|
||||
# Multiple output can be defined, they just need to be separated by spaces.
|
||||
# e.g.:
|
||||
# log_outputs="3:syslog:libvirtd"
|
||||
# to log all warnings and errors to syslog under the libvirtd ident
|
||||
|
||||
# UUID of the host:
|
||||
# Provide the UUID of the host here in case the command
|
||||
# 'dmidecode -s system-uuid' does not provide a valid uuid. In case
|
||||
# 'dmidecode' does not provide a valid UUID and none is provided here, a
|
||||
# temporary UUID will be generated.
|
||||
# Keep the format of the example UUID below. UUID must not have all digits
|
||||
# be the same.
|
||||
|
||||
# NB This default all-zeros UUID will not work. Replace
|
||||
# it with the output of the 'uuidgen' command and then
|
||||
# uncomment this entry
|
||||
#host_uuid = "00000000-0000-0000-0000-000000000000"
|
||||
314
daemon/libvirtd.h
Normal file
314
daemon/libvirtd.h
Normal file
@ -0,0 +1,314 @@
|
||||
/*
|
||||
* libvirtd.h: daemon data structure definitions
|
||||
*
|
||||
* Copyright (C) 2006-2009 Red Hat, Inc.
|
||||
* Copyright (C) 2006 Daniel P. Berrange
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* Author: Daniel P. Berrange <berrange@redhat.com>
|
||||
*/
|
||||
|
||||
|
||||
#ifndef QEMUD_INTERNAL_H__
|
||||
# define QEMUD_INTERNAL_H__
|
||||
|
||||
# include <config.h>
|
||||
|
||||
# include <gnutls/gnutls.h>
|
||||
# include <gnutls/x509.h>
|
||||
# include "gnutls_1_0_compat.h"
|
||||
# if HAVE_SASL
|
||||
# include <sasl/sasl.h>
|
||||
# endif
|
||||
|
||||
# if HAVE_POLKIT0
|
||||
# include <dbus/dbus.h>
|
||||
# endif
|
||||
|
||||
# ifdef HAVE_SYS_SYSLIMITS_H
|
||||
# include <sys/syslimits.h>
|
||||
# endif
|
||||
|
||||
# include <rpc/types.h>
|
||||
# include <rpc/xdr.h>
|
||||
# include "remote_protocol.h"
|
||||
# include "logging.h"
|
||||
# include "threads.h"
|
||||
|
||||
# ifdef __GNUC__
|
||||
# ifdef HAVE_ANSIDECL_H
|
||||
# include <ansidecl.h>
|
||||
# endif
|
||||
|
||||
# ifndef __GNUC_PREREQ
|
||||
# if defined __GNUC__ && defined __GNUC_MINOR__
|
||||
# define __GNUC_PREREQ(maj, min) \
|
||||
((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
|
||||
# else
|
||||
# define __GNUC_PREREQ(maj,min) 0
|
||||
# endif
|
||||
# endif
|
||||
|
||||
/**
|
||||
* ATTRIBUTE_UNUSED:
|
||||
*
|
||||
* Macro to flag conciously unused parameters to functions
|
||||
*/
|
||||
# ifndef ATTRIBUTE_UNUSED
|
||||
# define ATTRIBUTE_UNUSED __attribute__((__unused__))
|
||||
# endif
|
||||
|
||||
/**
|
||||
* ATTRIBUTE_FMT_PRINTF
|
||||
*
|
||||
* Macro used to check printf like functions, if compiling
|
||||
* with gcc.
|
||||
*
|
||||
* We use gnulib which guarentees we always have GNU style
|
||||
* printf format specifiers even on broken Win32 platforms
|
||||
* hence we have to force 'gnu_printf' for new GCC
|
||||
*/
|
||||
# ifndef ATTRIBUTE_FMT_PRINTF
|
||||
# if __GNUC_PREREQ (4, 4)
|
||||
# define ATTRIBUTE_FMT_PRINTF(fmtpos,argpos) __attribute__((__format__ (gnu_printf, fmtpos,argpos)))
|
||||
# else
|
||||
# define ATTRIBUTE_FMT_PRINTF(fmtpos,argpos) __attribute__((__format__ (printf, fmtpos,argpos)))
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# ifndef ATTRIBUTE_RETURN_CHECK
|
||||
# if __GNUC_PREREQ (3, 4)
|
||||
# define ATTRIBUTE_RETURN_CHECK __attribute__((__warn_unused_result__))
|
||||
# else
|
||||
# define ATTRIBUTE_RETURN_CHECK
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# else
|
||||
# ifndef ATTRIBUTE_UNUSED
|
||||
# define ATTRIBUTE_UNUSED
|
||||
# endif
|
||||
# ifndef ATTRIBUTE_FMT_PRINTF
|
||||
# define ATTRIBUTE_FMT_PRINTF(...)
|
||||
# endif
|
||||
# ifndef ATTRIBUTE_RETURN_CHECK
|
||||
# define ATTRIBUTE_RETURN_CHECK
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# define qemudDebug DEBUG
|
||||
|
||||
/* Whether we're passing reads & writes through a sasl SSF */
|
||||
enum qemud_sasl_ssf {
|
||||
QEMUD_SASL_SSF_NONE = 0,
|
||||
QEMUD_SASL_SSF_READ = 1,
|
||||
QEMUD_SASL_SSF_WRITE = 2,
|
||||
};
|
||||
|
||||
enum qemud_sock_type {
|
||||
QEMUD_SOCK_TYPE_UNIX = 0,
|
||||
QEMUD_SOCK_TYPE_TCP = 1,
|
||||
QEMUD_SOCK_TYPE_TLS = 2,
|
||||
};
|
||||
|
||||
struct qemud_client_message {
|
||||
char buffer [REMOTE_MESSAGE_MAX + REMOTE_MESSAGE_HEADER_XDR_LEN];
|
||||
unsigned int bufferLength;
|
||||
unsigned int bufferOffset;
|
||||
|
||||
unsigned int async : 1;
|
||||
unsigned int streamTX : 1;
|
||||
|
||||
remote_message_header hdr;
|
||||
|
||||
struct qemud_client_message *next;
|
||||
};
|
||||
|
||||
struct qemud_client;
|
||||
|
||||
/* Allow for filtering of incoming messages to a custom
|
||||
* dispatch processing queue, instead of client->dx.
|
||||
*/
|
||||
typedef int (*qemud_client_filter_func)(struct qemud_client *client,
|
||||
struct qemud_client_message *msg, void *opaque);
|
||||
struct qemud_client_filter {
|
||||
qemud_client_filter_func query;
|
||||
void *opaque;
|
||||
|
||||
struct qemud_client_filter *next;
|
||||
};
|
||||
|
||||
struct qemud_client_stream {
|
||||
virStreamPtr st;
|
||||
int procedure;
|
||||
int serial;
|
||||
|
||||
unsigned int recvEOF : 1;
|
||||
unsigned int closed : 1;
|
||||
|
||||
struct qemud_client_filter filter;
|
||||
|
||||
struct qemud_client_message *rx;
|
||||
int tx;
|
||||
|
||||
struct qemud_client_stream *next;
|
||||
};
|
||||
|
||||
/* Stores the per-client connection state */
|
||||
struct qemud_client {
|
||||
virMutex lock;
|
||||
|
||||
int magic;
|
||||
|
||||
int fd;
|
||||
int watch;
|
||||
unsigned int readonly :1;
|
||||
unsigned int closing :1;
|
||||
int domainEventCallbackID[VIR_DOMAIN_EVENT_ID_LAST];
|
||||
|
||||
struct sockaddr_storage addr;
|
||||
socklen_t addrlen;
|
||||
|
||||
int type; /* qemud_sock_type */
|
||||
gnutls_session_t tlssession;
|
||||
int auth;
|
||||
unsigned int handshake :1; /* If we're in progress for TLS handshake */
|
||||
# if HAVE_SASL
|
||||
sasl_conn_t *saslconn;
|
||||
int saslSSF;
|
||||
const char *saslDecoded;
|
||||
unsigned int saslDecodedLength;
|
||||
unsigned int saslDecodedOffset;
|
||||
const char *saslEncoded;
|
||||
unsigned int saslEncodedLength;
|
||||
unsigned int saslEncodedOffset;
|
||||
char *saslUsername;
|
||||
# endif
|
||||
|
||||
/* Count of meages in 'dx' or 'tx' queue
|
||||
* ie RPC calls in progress. Does not count
|
||||
* async events which are not used for
|
||||
* throttling calculations */
|
||||
int nrequests;
|
||||
/* Zero or one messages being received. Zero if
|
||||
* nrequests >= max_clients and throttling */
|
||||
struct qemud_client_message *rx;
|
||||
/* Zero or many messages waiting for a worker
|
||||
* to process them */
|
||||
struct qemud_client_message *dx;
|
||||
/* Zero or many messages waiting for transmit
|
||||
* back to client, including async events */
|
||||
struct qemud_client_message *tx;
|
||||
/* Filters to capture messages that would otherwise
|
||||
* end up on the 'dx' queue */
|
||||
struct qemud_client_filter *filters;
|
||||
|
||||
/* Data streams */
|
||||
struct qemud_client_stream *streams;
|
||||
|
||||
|
||||
/* This is only valid if a remote open call has been made on this
|
||||
* connection, otherwise it will be NULL. Also if remote close is
|
||||
* called, it will be set back to NULL if that succeeds.
|
||||
*/
|
||||
virConnectPtr conn;
|
||||
int refs;
|
||||
|
||||
};
|
||||
|
||||
# define QEMUD_CLIENT_MAGIC 0x7788aaee
|
||||
|
||||
|
||||
struct qemud_socket {
|
||||
char *path;
|
||||
int fd;
|
||||
int watch;
|
||||
int readonly;
|
||||
int type; /* qemud_sock_type */
|
||||
int auth;
|
||||
int port;
|
||||
struct qemud_socket *next;
|
||||
};
|
||||
|
||||
struct qemud_worker {
|
||||
pthread_t thread;
|
||||
unsigned int hasThread :1;
|
||||
unsigned int processingCall :1;
|
||||
unsigned int quitRequest :1;
|
||||
|
||||
/* back-pointer to our server */
|
||||
struct qemud_server *server;
|
||||
};
|
||||
|
||||
/* Main server state */
|
||||
struct qemud_server {
|
||||
virMutex lock;
|
||||
virCond job;
|
||||
|
||||
int privileged;
|
||||
|
||||
int nworkers;
|
||||
int nactiveworkers;
|
||||
struct qemud_worker *workers;
|
||||
int nsockets;
|
||||
struct qemud_socket *sockets;
|
||||
int nclients;
|
||||
struct qemud_client **clients;
|
||||
|
||||
int sigread;
|
||||
int sigwrite;
|
||||
char *logDir;
|
||||
pthread_t eventThread;
|
||||
unsigned int hasEventThread :1;
|
||||
unsigned int quitEventThread :1;
|
||||
# ifdef HAVE_AVAHI
|
||||
struct libvirtd_mdns *mdns;
|
||||
# endif
|
||||
# if HAVE_SASL
|
||||
char **saslUsernameWhitelist;
|
||||
# endif
|
||||
# if HAVE_POLKIT0
|
||||
DBusConnection *sysbus;
|
||||
# endif
|
||||
};
|
||||
|
||||
void qemudLog(int priority, const char *fmt, ...)
|
||||
ATTRIBUTE_FMT_PRINTF(2,3);
|
||||
|
||||
|
||||
|
||||
int qemudRegisterClientEvent(struct qemud_server *server,
|
||||
struct qemud_client *client);
|
||||
void qemudUpdateClientEvent(struct qemud_client *client);
|
||||
|
||||
void qemudDispatchClientFailure(struct qemud_client *client);
|
||||
|
||||
void
|
||||
qemudClientMessageQueuePush(struct qemud_client_message **queue,
|
||||
struct qemud_client_message *msg);
|
||||
struct qemud_client_message *
|
||||
qemudClientMessageQueueServe(struct qemud_client_message **queue);
|
||||
|
||||
void
|
||||
qemudClientMessageRelease(struct qemud_client *client,
|
||||
struct qemud_client_message *msg);
|
||||
|
||||
|
||||
# if HAVE_POLKIT
|
||||
int qemudGetSocketIdentity(int fd, uid_t *uid, pid_t *pid);
|
||||
# endif
|
||||
|
||||
#endif
|
||||
@ -5,41 +5,49 @@
|
||||
#
|
||||
### BEGIN INIT INFO
|
||||
# Provides: libvirtd
|
||||
# Required-Start: $network messagebus
|
||||
# Should-Start: $named
|
||||
# Should-Start: xend
|
||||
# Should-Start: hal
|
||||
# Should-Start: avahi-daemon
|
||||
# Required-Stop: $network messagebus
|
||||
# Should-Stop: $named
|
||||
# Default-Start: 3 4 5
|
||||
# Short-Description: daemon for libvirt virtualization API
|
||||
# Description: This is a daemon for managing QEMU guest instances
|
||||
# Description: This is a daemon for managing guest instances
|
||||
# and libvirt virtual networks
|
||||
# See http://libvirt.org
|
||||
### END INIT INFO
|
||||
|
||||
# the following is chkconfig init header
|
||||
#
|
||||
# libvirtd: QEMU and virtual network management daemon
|
||||
# libvirtd: guest and virtual network management daemon
|
||||
#
|
||||
# chkconfig: 345 97 03
|
||||
# description: This is a daemon for managing QEMU guest instances
|
||||
# and libvirt virtual networks
|
||||
# description: This is a daemon for managing guest instances \
|
||||
# and libvirt virtual networks \
|
||||
# See http://libvirt.org
|
||||
#
|
||||
# processname: libvirtd
|
||||
# pidfile: @localstatedir@/run/libvirtd.pid
|
||||
#
|
||||
|
||||
# Sanity checks.
|
||||
[ -x @sbindir@/libvirtd ] || exit 0
|
||||
|
||||
# Source function library.
|
||||
. @sysconfdir@/rc.d/init.d/functions
|
||||
|
||||
SERVICE=libvirtd
|
||||
PROCESS=libvirtd
|
||||
PIDFILE=@localstatedir@/run/$SERVICE.pid
|
||||
|
||||
LIBVIRTD_CONFIG=
|
||||
LIBVIRTD_ARGS=
|
||||
KRB5_KTNAME=/etc/libvirt/krb5.tab
|
||||
|
||||
test -f @sysconfdir@/sysconfig/libvirtd && . @sysconfdir@/sysconfig/libvirtd
|
||||
|
||||
export QEMU_AUDIO_DRV
|
||||
export SDL_AUDIODRIVER
|
||||
|
||||
LIBVIRTD_CONFIG_ARGS=
|
||||
if [ -n "$LIBVIRTD_CONFIG" ]
|
||||
then
|
||||
@ -50,7 +58,9 @@ RETVAL=0
|
||||
|
||||
start() {
|
||||
echo -n $"Starting $SERVICE daemon: "
|
||||
daemon --check $SERVICE $PROCESS --daemon $LIBVIRTD_CONFIG_ARGS $LIBVIRTD_ARGS
|
||||
mkdir -p @localstatedir@/cache/libvirt
|
||||
rm -rf @localstatedir@/cache/libvirt/*
|
||||
KRB5_KTNAME=$KRB5_KTNAME daemon --pidfile $PIDFILE --check $SERVICE $PROCESS --daemon $LIBVIRTD_CONFIG_ARGS $LIBVIRTD_ARGS
|
||||
RETVAL=$?
|
||||
echo
|
||||
[ $RETVAL -eq 0 ] && touch @localstatedir@/lock/subsys/$SERVICE
|
||||
@ -59,12 +69,13 @@ start() {
|
||||
stop() {
|
||||
echo -n $"Stopping $SERVICE daemon: "
|
||||
|
||||
killproc $PROCESS
|
||||
killproc -p $PIDFILE $PROCESS
|
||||
RETVAL=$?
|
||||
echo
|
||||
if [ $RETVAL -eq 0 ]; then
|
||||
rm -f @localstatedir@/lock/subsys/$SERVICE
|
||||
rm -f @localstatedir@/run/$SERVICE.pid
|
||||
rm -f $PIDFILE
|
||||
rm -rf @localstatedir@/cache/libvirt/*
|
||||
fi
|
||||
}
|
||||
|
||||
@ -76,7 +87,7 @@ restart() {
|
||||
reload() {
|
||||
echo -n $"Reloading $SERVICE configuration: "
|
||||
|
||||
killproc $PROCESS -HUP
|
||||
killproc -p $PIDFILE $PROCESS -HUP
|
||||
RETVAL=$?
|
||||
echo
|
||||
return $RETVAL
|
||||
@ -88,7 +99,7 @@ case "$1" in
|
||||
$1
|
||||
;;
|
||||
status)
|
||||
status $PROCESS
|
||||
status -p $PIDFILE $PROCESS
|
||||
RETVAL=$?
|
||||
;;
|
||||
force-reload)
|
||||
@ -98,8 +109,8 @@ case "$1" in
|
||||
[ -f @localstatedir@/lock/subsys/$SERVICE ] && restart || :
|
||||
;;
|
||||
*)
|
||||
echo $"Usage: $0 {start|stop|status|restart|condrestart|reload}"
|
||||
exit 1
|
||||
echo $"Usage: $0 {start|stop|status|restart|condrestart|reload|force-reload|try-restart}"
|
||||
exit 2
|
||||
;;
|
||||
esac
|
||||
exit $RETVAL
|
||||
9
daemon/libvirtd.lxc.logrotate.in
Normal file
9
daemon/libvirtd.lxc.logrotate.in
Normal file
@ -0,0 +1,9 @@
|
||||
@localstatedir@/log/libvirt/lxc/*.log {
|
||||
weekly
|
||||
missingok
|
||||
rotate 4
|
||||
compress
|
||||
delaycompress
|
||||
copytruncate
|
||||
minsize 100k
|
||||
}
|
||||
42
daemon/libvirtd.policy-0
Normal file
42
daemon/libvirtd.policy-0
Normal file
@ -0,0 +1,42 @@
|
||||
<!DOCTYPE policyconfig PUBLIC
|
||||
"-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
|
||||
"http://www.freedesktop.org/standards/PolicyKit/1.0/policyconfig.dtd">
|
||||
|
||||
<!--
|
||||
Policy definitions for libvirt daemon
|
||||
|
||||
Copyright (c) 2007 Daniel P. Berrange <berrange redhat com>
|
||||
|
||||
libvirt is licensed to you under the GNU Lesser General Public License
|
||||
version 2. See COPYING for details.
|
||||
|
||||
NOTE: If you make changes to this file, make sure to validate the file
|
||||
using the polkit-policy-file-validate(1) tool. Changes made to this
|
||||
file are instantly applied.
|
||||
-->
|
||||
|
||||
<policyconfig>
|
||||
<action id="org.libvirt.unix.monitor">
|
||||
<description>Monitor local virtualized systems</description>
|
||||
<message>System policy prevents monitoring of local virtualized systems</message>
|
||||
<defaults>
|
||||
<!-- Any program can use libvirt in read-only mode for monitoring,
|
||||
even if not part of a session -->
|
||||
<allow_any>yes</allow_any>
|
||||
<allow_inactive>yes</allow_inactive>
|
||||
<allow_active>yes</allow_active>
|
||||
</defaults>
|
||||
</action>
|
||||
|
||||
<action id="org.libvirt.unix.manage">
|
||||
<description>Manage local virtualized systems</description>
|
||||
<message>System policy prevents management of local virtualized systems</message>
|
||||
<defaults>
|
||||
<!-- Only a program in the active host session can use libvirt in
|
||||
read-write mode for management, and we require user password -->
|
||||
<allow_any>no</allow_any>
|
||||
<allow_inactive>no</allow_inactive>
|
||||
<allow_active>auth_admin_keep_session</allow_active>
|
||||
</defaults>
|
||||
</action>
|
||||
</policyconfig>
|
||||
42
daemon/libvirtd.policy-1
Normal file
42
daemon/libvirtd.policy-1
Normal file
@ -0,0 +1,42 @@
|
||||
<!DOCTYPE policyconfig PUBLIC
|
||||
"-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
|
||||
"http://www.freedesktop.org/standards/PolicyKit/1.0/policyconfig.dtd">
|
||||
|
||||
<!--
|
||||
Policy definitions for libvirt daemon
|
||||
|
||||
Copyright (c) 2007 Daniel P. Berrange <berrange redhat com>
|
||||
|
||||
libvirt is licensed to you under the GNU Lesser General Public License
|
||||
version 2. See COPYING for details.
|
||||
|
||||
NOTE: If you make changes to this file, make sure to validate the file
|
||||
using the polkit-policy-file-validate(1) tool. Changes made to this
|
||||
file are instantly applied.
|
||||
-->
|
||||
|
||||
<policyconfig>
|
||||
<action id="org.libvirt.unix.monitor">
|
||||
<description>Monitor local virtualized systems</description>
|
||||
<message>System policy prevents monitoring of local virtualized systems</message>
|
||||
<defaults>
|
||||
<!-- Any program can use libvirt in read-only mode for monitoring,
|
||||
even if not part of a session -->
|
||||
<allow_any>yes</allow_any>
|
||||
<allow_inactive>yes</allow_inactive>
|
||||
<allow_active>yes</allow_active>
|
||||
</defaults>
|
||||
</action>
|
||||
|
||||
<action id="org.libvirt.unix.manage">
|
||||
<description>Manage local virtualized systems</description>
|
||||
<message>System policy prevents management of local virtualized systems</message>
|
||||
<defaults>
|
||||
<!-- Only a program in the active host session can use libvirt in
|
||||
read-write mode for management, and we require user password -->
|
||||
<allow_any>no</allow_any>
|
||||
<allow_inactive>no</allow_inactive>
|
||||
<allow_active>auth_admin_keep</allow_active>
|
||||
</defaults>
|
||||
</action>
|
||||
</policyconfig>
|
||||
9
daemon/libvirtd.qemu.logrotate.in
Normal file
9
daemon/libvirtd.qemu.logrotate.in
Normal file
@ -0,0 +1,9 @@
|
||||
@localstatedir@/log/libvirt/qemu/*.log {
|
||||
weekly
|
||||
missingok
|
||||
rotate 4
|
||||
compress
|
||||
delaycompress
|
||||
copytruncate
|
||||
minsize 100k
|
||||
}
|
||||
28
daemon/libvirtd.sasl
Normal file
28
daemon/libvirtd.sasl
Normal file
@ -0,0 +1,28 @@
|
||||
# If you want to use the non-TLS socket, then you *must* include
|
||||
# the GSSAPI or DIGEST-MD5 mechanisms, because they are the only
|
||||
# ones that can offer session encryption as well as authentication.
|
||||
#
|
||||
# If you're only using TLS, then you can turn on any mechanisms
|
||||
# you like for authentication, because TLS provides the encryption
|
||||
#
|
||||
# Default to a simple username+password mechanism
|
||||
mech_list: digest-md5
|
||||
|
||||
# Before you can use GSSAPI, you need a service principle on the
|
||||
# KDC server for libvirt, and that to be exported to the keytab
|
||||
# file listed below
|
||||
#mech_list: gssapi
|
||||
#
|
||||
# You can also list many mechanisms at once, then the user can choose
|
||||
# by adding '?auth=sasl.gssapi' to their libvirt URI, eg
|
||||
# qemu+tcp://hostname/system?auth=sasl.gssapi
|
||||
#mech_list: digest-md5 gssapi
|
||||
|
||||
# MIT kerberos ignores this option & needs KRB5_KTNAME env var.
|
||||
# May be useful for other non-Linux OS though....
|
||||
keytab: /etc/libvirt/krb5.tab
|
||||
|
||||
# If using digest-md5 for username/passwds, then this is the file
|
||||
# containing the passwds. Use 'saslpasswd2 -a libvirt [username]'
|
||||
# to add entries, and 'sasldblistusers2 -a libvirt' to browse it
|
||||
sasldb_path: /etc/libvirt/passwd.db
|
||||
18
daemon/libvirtd.sysconf
Normal file
18
daemon/libvirtd.sysconf
Normal file
@ -0,0 +1,18 @@
|
||||
# Override the default config file
|
||||
#LIBVIRTD_CONFIG=/etc/libvirt/libvirtd.conf
|
||||
|
||||
# Listen for TCP/IP connections
|
||||
# NB. must setup TLS/SSL keys prior to using this
|
||||
#LIBVIRTD_ARGS="--listen"
|
||||
|
||||
# Override Kerberos service keytab for SASL/GSSAPI
|
||||
#KRB5_KTNAME=/etc/libvirt/krb5.tab
|
||||
|
||||
# Override the QEMU/SDL default audio driver probing when
|
||||
# starting virtual machines using SDL graphics
|
||||
#
|
||||
# NB these have no effect for VMs using VNC, unless vnc_allow_host_audio
|
||||
# is enabled in /etc/libvirt/qemu.conf
|
||||
#QEMU_AUDIO_DRV=sdl
|
||||
#
|
||||
#SDL_AUDIODRIVER=pulse
|
||||
9
daemon/libvirtd.uml.logrotate.in
Normal file
9
daemon/libvirtd.uml.logrotate.in
Normal file
@ -0,0 +1,9 @@
|
||||
@localstatedir@/log/libvirt/uml/*.log {
|
||||
weekly
|
||||
missingok
|
||||
rotate 4
|
||||
compress
|
||||
delaycompress
|
||||
copytruncate
|
||||
minsize 100k
|
||||
}
|
||||
508
daemon/mdns.c
Normal file
508
daemon/mdns.c
Normal file
@ -0,0 +1,508 @@
|
||||
/*
|
||||
* mdns.c: advertise libvirt hypervisor connections
|
||||
*
|
||||
* Copyright (C) 2007 Daniel P. Berrange
|
||||
*
|
||||
* Derived from Avahi example service provider code.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* Author: Daniel P. Berrange <berrange@redhat.com>
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include <time.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <avahi-client/client.h>
|
||||
#include <avahi-client/publish.h>
|
||||
|
||||
#include <avahi-common/alternative.h>
|
||||
#include <avahi-common/simple-watch.h>
|
||||
#include <avahi-common/malloc.h>
|
||||
#include <avahi-common/error.h>
|
||||
#include <avahi-common/timeval.h>
|
||||
|
||||
#include "libvirtd.h"
|
||||
#include "mdns.h"
|
||||
#include "event.h"
|
||||
#include "memory.h"
|
||||
|
||||
#define AVAHI_DEBUG(fmt, ...) DEBUG(fmt, __VA_ARGS__)
|
||||
|
||||
struct libvirtd_mdns_entry {
|
||||
char *type;
|
||||
int port;
|
||||
struct libvirtd_mdns_entry *next;
|
||||
};
|
||||
|
||||
struct libvirtd_mdns_group {
|
||||
struct libvirtd_mdns *mdns;
|
||||
AvahiEntryGroup *handle;
|
||||
char *name;
|
||||
struct libvirtd_mdns_entry *entry;
|
||||
struct libvirtd_mdns_group *next;
|
||||
};
|
||||
|
||||
struct libvirtd_mdns {
|
||||
AvahiClient *client;
|
||||
AvahiPoll *poller;
|
||||
struct libvirtd_mdns_group *group;
|
||||
};
|
||||
|
||||
/* Avahi API requires this struct names in the app :-( */
|
||||
struct AvahiWatch {
|
||||
int watch;
|
||||
int fd;
|
||||
int revents;
|
||||
AvahiWatchCallback callback;
|
||||
void *userdata;
|
||||
};
|
||||
|
||||
/* Avahi API requires this struct names in the app :-( */
|
||||
struct AvahiTimeout {
|
||||
int timer;
|
||||
AvahiTimeoutCallback callback;
|
||||
void *userdata;
|
||||
};
|
||||
|
||||
|
||||
static void libvirtd_mdns_create_services(struct libvirtd_mdns_group *group);
|
||||
|
||||
/* Called whenever the entry group state changes */
|
||||
static void libvirtd_mdns_group_callback(AvahiEntryGroup *g ATTRIBUTE_UNUSED, AvahiEntryGroupState state, void *userdata) {
|
||||
struct libvirtd_mdns_group *group = (struct libvirtd_mdns_group *)userdata;
|
||||
|
||||
switch (state) {
|
||||
case AVAHI_ENTRY_GROUP_ESTABLISHED:
|
||||
/* The entry group has been established successfully */
|
||||
AVAHI_DEBUG("Group '%s' established", group->name);
|
||||
break;
|
||||
|
||||
case AVAHI_ENTRY_GROUP_COLLISION:
|
||||
{
|
||||
char *n;
|
||||
|
||||
/* A service name collision happened. Let's pick a new name */
|
||||
n = avahi_alternative_service_name(group->name);
|
||||
VIR_FREE(group->name);
|
||||
group->name = n;
|
||||
|
||||
AVAHI_DEBUG("Group name collision, renaming service to '%s'", group->name);
|
||||
|
||||
/* And recreate the services */
|
||||
libvirtd_mdns_create_services(group);
|
||||
}
|
||||
break;
|
||||
|
||||
case AVAHI_ENTRY_GROUP_FAILURE :
|
||||
AVAHI_DEBUG("Group failure: %s", avahi_strerror(avahi_client_errno(group->mdns->client)));
|
||||
|
||||
/* Some kind of failure happened while we were registering our services */
|
||||
//avahi_simple_poll_quit(simple_poll);
|
||||
break;
|
||||
|
||||
case AVAHI_ENTRY_GROUP_UNCOMMITED:
|
||||
case AVAHI_ENTRY_GROUP_REGISTERING:
|
||||
;
|
||||
}
|
||||
}
|
||||
|
||||
static void libvirtd_mdns_create_services(struct libvirtd_mdns_group *group) {
|
||||
struct libvirtd_mdns *mdns = group->mdns;
|
||||
struct libvirtd_mdns_entry *entry;
|
||||
int ret;
|
||||
AVAHI_DEBUG("Adding services to '%s'", group->name);
|
||||
|
||||
/* If we've no services to advertise, just reset the group to make
|
||||
* sure it is emptied of any previously advertised services */
|
||||
if (!group->entry) {
|
||||
if (group->handle)
|
||||
avahi_entry_group_reset(group->handle);
|
||||
return;
|
||||
}
|
||||
|
||||
/* If this is the first time we're called, let's create a new entry group */
|
||||
if (!group->handle) {
|
||||
AVAHI_DEBUG("Creating initial group %s", group->name);
|
||||
if (!(group->handle = avahi_entry_group_new(mdns->client, libvirtd_mdns_group_callback, group))) {
|
||||
AVAHI_DEBUG("avahi_entry_group_new() failed: %s", avahi_strerror(avahi_client_errno(mdns->client)));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
entry = group->entry;
|
||||
while (entry) {
|
||||
if ((ret = avahi_entry_group_add_service(group->handle,
|
||||
AVAHI_IF_UNSPEC,
|
||||
AVAHI_PROTO_UNSPEC,
|
||||
0,
|
||||
group->name,
|
||||
entry->type,
|
||||
NULL,
|
||||
NULL,
|
||||
entry->port,
|
||||
NULL)) < 0) {
|
||||
AVAHI_DEBUG("Failed to add %s service on port %d: %s",
|
||||
entry->type, entry->port, avahi_strerror(ret));
|
||||
avahi_entry_group_reset(group->handle);
|
||||
return;
|
||||
}
|
||||
entry = entry->next;
|
||||
}
|
||||
|
||||
/* Tell the server to register the service */
|
||||
if ((ret = avahi_entry_group_commit(group->handle)) < 0) {
|
||||
avahi_entry_group_reset(group->handle);
|
||||
AVAHI_DEBUG("Failed to commit entry_group: %s", avahi_strerror(ret));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void libvirtd_mdns_client_callback(AvahiClient *c, AvahiClientState state, void *userdata) {
|
||||
struct libvirtd_mdns *mdns = (struct libvirtd_mdns *)userdata;
|
||||
struct libvirtd_mdns_group *group;
|
||||
if (!mdns->client)
|
||||
mdns->client = c;
|
||||
|
||||
/* Called whenever the client or server state changes */
|
||||
switch (state) {
|
||||
case AVAHI_CLIENT_S_RUNNING:
|
||||
/* The server has startup successfully and registered its host
|
||||
* name on the network, so it's time to create our services */
|
||||
AVAHI_DEBUG("Client running %p", mdns->client);
|
||||
group = mdns->group;
|
||||
while (group) {
|
||||
libvirtd_mdns_create_services(group);
|
||||
group = group->next;
|
||||
}
|
||||
break;
|
||||
|
||||
case AVAHI_CLIENT_FAILURE:
|
||||
AVAHI_DEBUG("Client failure: %s", avahi_strerror(avahi_client_errno(c)));
|
||||
libvirtd_mdns_stop(mdns);
|
||||
libvirtd_mdns_start(mdns);
|
||||
break;
|
||||
|
||||
case AVAHI_CLIENT_S_COLLISION:
|
||||
/* Let's drop our registered services. When the server is back
|
||||
* in AVAHI_SERVER_RUNNING state we will register them
|
||||
* again with the new host name. */
|
||||
|
||||
/* Fallthrough */
|
||||
|
||||
case AVAHI_CLIENT_S_REGISTERING:
|
||||
/* The server records are now being established. This
|
||||
* might be caused by a host name change. We need to wait
|
||||
* for our own records to register until the host name is
|
||||
* properly established. */
|
||||
AVAHI_DEBUG("Client collision/connecting %p", mdns->client);
|
||||
group = mdns->group;
|
||||
while (group) {
|
||||
if (group->handle)
|
||||
avahi_entry_group_reset(group->handle);
|
||||
group = group->next;
|
||||
}
|
||||
break;
|
||||
|
||||
case AVAHI_CLIENT_CONNECTING:
|
||||
AVAHI_DEBUG("Client connecting.... %p", mdns->client);
|
||||
;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void libvirtd_mdns_watch_dispatch(int watch, int fd, int events, void *opaque)
|
||||
{
|
||||
AvahiWatch *w = (AvahiWatch*)opaque;
|
||||
int fd_events = virEventHandleTypeToPollEvent(events);
|
||||
AVAHI_DEBUG("Dispatch watch %d FD %d Event %d", watch, fd, fd_events);
|
||||
w->revents = fd_events;
|
||||
w->callback(w, fd, fd_events, w->userdata);
|
||||
}
|
||||
|
||||
static void libvirtd_mdns_watch_dofree(void *w)
|
||||
{
|
||||
VIR_FREE(w);
|
||||
}
|
||||
|
||||
|
||||
static AvahiWatch *libvirtd_mdns_watch_new(const AvahiPoll *api ATTRIBUTE_UNUSED,
|
||||
int fd, AvahiWatchEvent event,
|
||||
AvahiWatchCallback cb, void *userdata) {
|
||||
AvahiWatch *w;
|
||||
virEventHandleType hEvents;
|
||||
if (VIR_ALLOC(w) < 0)
|
||||
return NULL;
|
||||
|
||||
w->fd = fd;
|
||||
w->revents = 0;
|
||||
w->callback = cb;
|
||||
w->userdata = userdata;
|
||||
|
||||
AVAHI_DEBUG("New handle %p FD %d Event %d", w, w->fd, event);
|
||||
hEvents = virPollEventToEventHandleType(event);
|
||||
if ((w->watch = virEventAddHandleImpl(fd, hEvents,
|
||||
libvirtd_mdns_watch_dispatch,
|
||||
w,
|
||||
libvirtd_mdns_watch_dofree)) < 0) {
|
||||
VIR_FREE(w);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return w;
|
||||
}
|
||||
|
||||
static void libvirtd_mdns_watch_update(AvahiWatch *w, AvahiWatchEvent event)
|
||||
{
|
||||
AVAHI_DEBUG("Update handle %p FD %d Event %d", w, w->fd, event);
|
||||
virEventUpdateHandleImpl(w->watch, event);
|
||||
}
|
||||
|
||||
static AvahiWatchEvent libvirtd_mdns_watch_get_events(AvahiWatch *w)
|
||||
{
|
||||
AVAHI_DEBUG("Get handle events %p %d", w, w->fd);
|
||||
return w->revents;
|
||||
}
|
||||
|
||||
static void libvirtd_mdns_watch_free(AvahiWatch *w)
|
||||
{
|
||||
AVAHI_DEBUG("Free handle %p %d", w, w->fd);
|
||||
virEventRemoveHandleImpl(w->watch);
|
||||
}
|
||||
|
||||
static void libvirtd_mdns_timeout_dispatch(int timer ATTRIBUTE_UNUSED, void *opaque)
|
||||
{
|
||||
AvahiTimeout *t = (AvahiTimeout*)opaque;
|
||||
AVAHI_DEBUG("Dispatch timeout %p %d", t, timer);
|
||||
virEventUpdateTimeoutImpl(t->timer, -1);
|
||||
t->callback(t, t->userdata);
|
||||
}
|
||||
|
||||
static void libvirtd_mdns_timeout_dofree(void *t)
|
||||
{
|
||||
VIR_FREE(t);
|
||||
}
|
||||
|
||||
static AvahiTimeout *libvirtd_mdns_timeout_new(const AvahiPoll *api ATTRIBUTE_UNUSED,
|
||||
const struct timeval *tv,
|
||||
AvahiTimeoutCallback cb,
|
||||
void *userdata)
|
||||
{
|
||||
AvahiTimeout *t;
|
||||
struct timeval now;
|
||||
long long nowms, thenms, timeout;
|
||||
AVAHI_DEBUG("Add timeout TV %p", tv);
|
||||
if (VIR_ALLOC(t) < 0)
|
||||
return NULL;
|
||||
|
||||
if (gettimeofday(&now, NULL) < 0) {
|
||||
VIR_FREE(t);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
AVAHI_DEBUG("Trigger timed for %d %d %d %d",
|
||||
(int)now.tv_sec, (int)now.tv_usec,
|
||||
(int)(tv ? tv->tv_sec : 0), (int)(tv ? tv->tv_usec : 0));
|
||||
nowms = (now.tv_sec * 1000ll) + (now.tv_usec / 1000ll);
|
||||
if (tv) {
|
||||
thenms = (tv->tv_sec * 1000ll) + (tv->tv_usec/1000ll);
|
||||
timeout = thenms > nowms ? nowms - thenms : 0;
|
||||
if (timeout < 0)
|
||||
timeout = 0;
|
||||
} else {
|
||||
timeout = -1;
|
||||
}
|
||||
|
||||
t->timer = virEventAddTimeoutImpl(timeout,
|
||||
libvirtd_mdns_timeout_dispatch,
|
||||
t,
|
||||
libvirtd_mdns_timeout_dofree);
|
||||
t->callback = cb;
|
||||
t->userdata = userdata;
|
||||
|
||||
if (t->timer < 0) {
|
||||
VIR_FREE(t);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return t;
|
||||
}
|
||||
|
||||
static void libvirtd_mdns_timeout_update(AvahiTimeout *t, const struct timeval *tv)
|
||||
{
|
||||
struct timeval now;
|
||||
long long nowms, thenms, timeout;
|
||||
AVAHI_DEBUG("Update timeout %p TV %p", t, tv);
|
||||
if (gettimeofday(&now, NULL) < 0) {
|
||||
VIR_FREE(t);
|
||||
return;
|
||||
}
|
||||
|
||||
nowms = (now.tv_sec * 1000ll) + (now.tv_usec / 1000ll);
|
||||
if (tv) {
|
||||
thenms = ((tv->tv_sec * 1000ll) + (tv->tv_usec/1000ll));
|
||||
timeout = thenms > nowms ? nowms - thenms : 0;
|
||||
if (timeout < 0)
|
||||
timeout = 0;
|
||||
} else {
|
||||
timeout = -1;
|
||||
}
|
||||
|
||||
virEventUpdateTimeoutImpl(t->timer, timeout);
|
||||
}
|
||||
|
||||
static void libvirtd_mdns_timeout_free(AvahiTimeout *t)
|
||||
{
|
||||
AVAHI_DEBUG("Free timeout %p", t);
|
||||
virEventRemoveTimeoutImpl(t->timer);
|
||||
}
|
||||
|
||||
|
||||
static AvahiPoll *libvirtd_create_poll(void)
|
||||
{
|
||||
AvahiPoll *p;
|
||||
if (VIR_ALLOC(p) < 0)
|
||||
return NULL;
|
||||
|
||||
p->userdata = NULL;
|
||||
|
||||
p->watch_new = libvirtd_mdns_watch_new;
|
||||
p->watch_update = libvirtd_mdns_watch_update;
|
||||
p->watch_get_events = libvirtd_mdns_watch_get_events;
|
||||
p->watch_free = libvirtd_mdns_watch_free;
|
||||
|
||||
p->timeout_new = libvirtd_mdns_timeout_new;
|
||||
p->timeout_update = libvirtd_mdns_timeout_update;
|
||||
p->timeout_free = libvirtd_mdns_timeout_free;
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
struct libvirtd_mdns *libvirtd_mdns_new(void)
|
||||
{
|
||||
struct libvirtd_mdns *mdns;
|
||||
if (VIR_ALLOC(mdns) < 0)
|
||||
return NULL;
|
||||
|
||||
/* Allocate main loop object */
|
||||
if (!(mdns->poller = libvirtd_create_poll())) {
|
||||
VIR_FREE(mdns);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return mdns;
|
||||
}
|
||||
|
||||
int libvirtd_mdns_start(struct libvirtd_mdns *mdns)
|
||||
{
|
||||
int error;
|
||||
AVAHI_DEBUG("Starting client %p", mdns);
|
||||
mdns->client = avahi_client_new(mdns->poller, AVAHI_CLIENT_NO_FAIL, libvirtd_mdns_client_callback, mdns, &error);
|
||||
|
||||
if (!mdns->client) {
|
||||
AVAHI_DEBUG("Failed to create mDNS client: %s", avahi_strerror(error));
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct libvirtd_mdns_group *libvirtd_mdns_add_group(struct libvirtd_mdns *mdns, const char *name) {
|
||||
struct libvirtd_mdns_group *group;
|
||||
|
||||
AVAHI_DEBUG("Adding group '%s'", name);
|
||||
if (VIR_ALLOC(group) < 0)
|
||||
return NULL;
|
||||
|
||||
if (!(group->name = strdup(name))) {
|
||||
VIR_FREE(group);
|
||||
return NULL;
|
||||
}
|
||||
group->mdns = mdns;
|
||||
group->next = mdns->group;
|
||||
mdns->group = group;
|
||||
return group;
|
||||
}
|
||||
|
||||
void libvirtd_mdns_remove_group(struct libvirtd_mdns *mdns, struct libvirtd_mdns_group *group) {
|
||||
struct libvirtd_mdns_group *tmp = mdns->group, *prev = NULL;
|
||||
|
||||
while (tmp) {
|
||||
if (tmp == group) {
|
||||
VIR_FREE(group->name);
|
||||
if (prev)
|
||||
prev->next = group->next;
|
||||
else
|
||||
group->mdns->group = group->next;
|
||||
VIR_FREE(group);
|
||||
return;
|
||||
}
|
||||
prev = tmp;
|
||||
tmp = tmp->next;
|
||||
}
|
||||
}
|
||||
|
||||
struct libvirtd_mdns_entry *libvirtd_mdns_add_entry(struct libvirtd_mdns_group *group, const char *type, int port) {
|
||||
struct libvirtd_mdns_entry *entry;
|
||||
|
||||
AVAHI_DEBUG("Adding entry %s %d to group %s", type, port, group->name);
|
||||
if (VIR_ALLOC(entry) < 0)
|
||||
return NULL;
|
||||
|
||||
entry->port = port;
|
||||
if (!(entry->type = strdup(type))) {
|
||||
VIR_FREE(entry);
|
||||
return NULL;
|
||||
}
|
||||
entry->next = group->entry;
|
||||
group->entry = entry;
|
||||
return entry;
|
||||
}
|
||||
|
||||
void libvirtd_mdns_remove_entry(struct libvirtd_mdns_group *group, struct libvirtd_mdns_entry *entry) {
|
||||
struct libvirtd_mdns_entry *tmp = group->entry, *prev = NULL;
|
||||
|
||||
while (tmp) {
|
||||
if (tmp == entry) {
|
||||
VIR_FREE(entry->type);
|
||||
if (prev)
|
||||
prev->next = entry->next;
|
||||
else
|
||||
group->entry = entry->next;
|
||||
return;
|
||||
}
|
||||
prev = tmp;
|
||||
tmp = tmp->next;
|
||||
}
|
||||
}
|
||||
|
||||
void libvirtd_mdns_stop(struct libvirtd_mdns *mdns)
|
||||
{
|
||||
struct libvirtd_mdns_group *group = mdns->group;
|
||||
while (group) {
|
||||
if (group->handle) {
|
||||
avahi_entry_group_free(group->handle);
|
||||
group->handle = NULL;
|
||||
}
|
||||
group = group->next;
|
||||
}
|
||||
if (mdns->client)
|
||||
avahi_client_free(mdns->client);
|
||||
mdns->client = NULL;
|
||||
}
|
||||
96
daemon/mdns.h
Normal file
96
daemon/mdns.h
Normal file
@ -0,0 +1,96 @@
|
||||
/*
|
||||
* mdns.c: advertise libvirt hypervisor connections
|
||||
*
|
||||
* Copyright (C) 2007 Daniel P. Berrange
|
||||
*
|
||||
* Derived from Avahi example service provider code.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* Author: Daniel P. Berrange <berrange@redhat.com>
|
||||
*/
|
||||
|
||||
#include "internal.h"
|
||||
|
||||
#ifndef __VIRTD_MDNS_H__
|
||||
# define __VIRTD_MDNS_H__
|
||||
|
||||
struct libvirtd_mdns;
|
||||
struct libvirtd_mdns_group;
|
||||
struct libvirtd_mdns_entry;
|
||||
|
||||
/**
|
||||
* Prepares a new mdns manager object for use
|
||||
*/
|
||||
struct libvirtd_mdns *libvirtd_mdns_new(void);
|
||||
|
||||
/**
|
||||
* Starts the mdns client, advertising any groups/entries currently registered
|
||||
*
|
||||
* @mdns: manager to start advertising
|
||||
*
|
||||
* Starts the mdns client. Services may not be immediately visible, since
|
||||
* it may asynchronously wait for the mdns service to startup
|
||||
*
|
||||
* returns -1 upon failure, 0 upon success.
|
||||
*/
|
||||
int libvirtd_mdns_start(struct libvirtd_mdns *mdns);
|
||||
|
||||
/**
|
||||
* Stops the mdns client, removing any advertisements
|
||||
*
|
||||
* @mdns: manager to start advertising
|
||||
*
|
||||
*/
|
||||
void libvirtd_mdns_stop(struct libvirtd_mdns *mdns);
|
||||
|
||||
/**
|
||||
* Adds a group container for advertisement
|
||||
*
|
||||
* @mdns manager to attach the group to
|
||||
* @name unique human readable service name
|
||||
*
|
||||
* returns the group record, or NULL upon failure
|
||||
*/
|
||||
struct libvirtd_mdns_group *libvirtd_mdns_add_group(struct libvirtd_mdns *mdns, const char *name);
|
||||
|
||||
/**
|
||||
* Removes a group container from advertisement
|
||||
*
|
||||
* @mdns amanger to detach group from
|
||||
* @group group to remove
|
||||
*/
|
||||
void libvirtd_mdns_remove_group(struct libvirtd_mdns *mdns, struct libvirtd_mdns_group *group);
|
||||
|
||||
/**
|
||||
* Adds a service entry in a group
|
||||
*
|
||||
* @group group to attach the entry to
|
||||
* @type service type string
|
||||
* @port tcp port number
|
||||
*
|
||||
* returns the service record, or NULL upon failure
|
||||
*/
|
||||
struct libvirtd_mdns_entry *libvirtd_mdns_add_entry(struct libvirtd_mdns_group *group, const char *type, int port);
|
||||
|
||||
/**
|
||||
* Removes a service entry from a group
|
||||
*
|
||||
* @group group to detach service entry from
|
||||
* @entry service entry to remove
|
||||
*/
|
||||
void libvirtd_mdns_remove_entry(struct libvirtd_mdns_group *group, struct libvirtd_mdns_entry *entry);
|
||||
|
||||
#endif /* __VIRTD_MDNS_H__ */
|
||||
6697
daemon/remote.c
Normal file
6697
daemon/remote.c
Normal file
File diff suppressed because it is too large
Load Diff
73
daemon/remote.h
Normal file
73
daemon/remote.h
Normal file
@ -0,0 +1,73 @@
|
||||
/*
|
||||
* remote.h: handlers for RPC method calls
|
||||
*
|
||||
* Copyright (C) 2007, 2008, 2009 Red Hat, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* Author: Richard W.M. Jones <rjones@redhat.com>
|
||||
* Author: Daniel P. Berrange <berrange@redhat.com>
|
||||
*/
|
||||
|
||||
#ifndef __LIBVIRTD_REMOTE_H__
|
||||
# define __LIBVIRTD_REMOTE_H__
|
||||
|
||||
|
||||
# include "libvirtd.h"
|
||||
|
||||
typedef union {
|
||||
# include "remote_dispatch_args.h"
|
||||
} dispatch_args;
|
||||
|
||||
typedef union {
|
||||
# include "remote_dispatch_ret.h"
|
||||
} dispatch_ret;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* When the RPC handler is called:
|
||||
*
|
||||
* - Server object is unlocked
|
||||
* - Client object is unlocked
|
||||
*
|
||||
* Both must be locked before use. Server lock must
|
||||
* be held before attempting to lock client.
|
||||
*
|
||||
* Without any locking, it is safe to use:
|
||||
*
|
||||
* 'conn', 'rerr', 'args and 'ret'
|
||||
*/
|
||||
typedef int (*dispatch_fn) (struct qemud_server *server,
|
||||
struct qemud_client *client,
|
||||
virConnectPtr conn,
|
||||
remote_message_header *hdr,
|
||||
remote_error *err,
|
||||
dispatch_args *args,
|
||||
dispatch_ret *ret);
|
||||
|
||||
typedef struct {
|
||||
dispatch_fn fn;
|
||||
xdrproc_t args_filter;
|
||||
xdrproc_t ret_filter;
|
||||
} dispatch_data;
|
||||
|
||||
|
||||
const dispatch_data const *remoteGetDispatchData(int proc);
|
||||
|
||||
|
||||
|
||||
#endif /* __LIBVIRTD_REMOTE_H__ */
|
||||
167
daemon/remote_dispatch_args.h
Normal file
167
daemon/remote_dispatch_args.h
Normal file
@ -0,0 +1,167 @@
|
||||
/* Automatically generated by remote_generate_stubs.pl.
|
||||
* Do not edit this file. Any changes you make will be lost.
|
||||
*/
|
||||
|
||||
remote_open_args val_remote_open_args;
|
||||
remote_get_max_vcpus_args val_remote_get_max_vcpus_args;
|
||||
remote_domain_attach_device_args val_remote_domain_attach_device_args;
|
||||
remote_domain_create_args val_remote_domain_create_args;
|
||||
remote_domain_create_xml_args val_remote_domain_create_xml_args;
|
||||
remote_domain_define_xml_args val_remote_domain_define_xml_args;
|
||||
remote_domain_destroy_args val_remote_domain_destroy_args;
|
||||
remote_domain_detach_device_args val_remote_domain_detach_device_args;
|
||||
remote_domain_dump_xml_args val_remote_domain_dump_xml_args;
|
||||
remote_domain_get_autostart_args val_remote_domain_get_autostart_args;
|
||||
remote_domain_get_info_args val_remote_domain_get_info_args;
|
||||
remote_domain_get_max_memory_args val_remote_domain_get_max_memory_args;
|
||||
remote_domain_get_max_vcpus_args val_remote_domain_get_max_vcpus_args;
|
||||
remote_domain_get_os_type_args val_remote_domain_get_os_type_args;
|
||||
remote_domain_get_vcpus_args val_remote_domain_get_vcpus_args;
|
||||
remote_list_defined_domains_args val_remote_list_defined_domains_args;
|
||||
remote_domain_lookup_by_id_args val_remote_domain_lookup_by_id_args;
|
||||
remote_domain_lookup_by_name_args val_remote_domain_lookup_by_name_args;
|
||||
remote_domain_lookup_by_uuid_args val_remote_domain_lookup_by_uuid_args;
|
||||
remote_domain_pin_vcpu_args val_remote_domain_pin_vcpu_args;
|
||||
remote_domain_reboot_args val_remote_domain_reboot_args;
|
||||
remote_domain_resume_args val_remote_domain_resume_args;
|
||||
remote_domain_set_autostart_args val_remote_domain_set_autostart_args;
|
||||
remote_domain_set_max_memory_args val_remote_domain_set_max_memory_args;
|
||||
remote_domain_set_memory_args val_remote_domain_set_memory_args;
|
||||
remote_domain_set_vcpus_args val_remote_domain_set_vcpus_args;
|
||||
remote_domain_shutdown_args val_remote_domain_shutdown_args;
|
||||
remote_domain_suspend_args val_remote_domain_suspend_args;
|
||||
remote_domain_undefine_args val_remote_domain_undefine_args;
|
||||
remote_list_defined_networks_args val_remote_list_defined_networks_args;
|
||||
remote_list_domains_args val_remote_list_domains_args;
|
||||
remote_list_networks_args val_remote_list_networks_args;
|
||||
remote_network_create_args val_remote_network_create_args;
|
||||
remote_network_create_xml_args val_remote_network_create_xml_args;
|
||||
remote_network_define_xml_args val_remote_network_define_xml_args;
|
||||
remote_network_destroy_args val_remote_network_destroy_args;
|
||||
remote_network_dump_xml_args val_remote_network_dump_xml_args;
|
||||
remote_network_get_autostart_args val_remote_network_get_autostart_args;
|
||||
remote_network_get_bridge_name_args val_remote_network_get_bridge_name_args;
|
||||
remote_network_lookup_by_name_args val_remote_network_lookup_by_name_args;
|
||||
remote_network_lookup_by_uuid_args val_remote_network_lookup_by_uuid_args;
|
||||
remote_network_set_autostart_args val_remote_network_set_autostart_args;
|
||||
remote_network_undefine_args val_remote_network_undefine_args;
|
||||
remote_domain_core_dump_args val_remote_domain_core_dump_args;
|
||||
remote_domain_restore_args val_remote_domain_restore_args;
|
||||
remote_domain_save_args val_remote_domain_save_args;
|
||||
remote_domain_get_scheduler_type_args val_remote_domain_get_scheduler_type_args;
|
||||
remote_domain_get_scheduler_parameters_args val_remote_domain_get_scheduler_parameters_args;
|
||||
remote_domain_set_scheduler_parameters_args val_remote_domain_set_scheduler_parameters_args;
|
||||
remote_supports_feature_args val_remote_supports_feature_args;
|
||||
remote_domain_migrate_prepare_args val_remote_domain_migrate_prepare_args;
|
||||
remote_domain_migrate_perform_args val_remote_domain_migrate_perform_args;
|
||||
remote_domain_migrate_finish_args val_remote_domain_migrate_finish_args;
|
||||
remote_domain_block_stats_args val_remote_domain_block_stats_args;
|
||||
remote_domain_interface_stats_args val_remote_domain_interface_stats_args;
|
||||
remote_auth_sasl_start_args val_remote_auth_sasl_start_args;
|
||||
remote_auth_sasl_step_args val_remote_auth_sasl_step_args;
|
||||
remote_list_storage_pools_args val_remote_list_storage_pools_args;
|
||||
remote_list_defined_storage_pools_args val_remote_list_defined_storage_pools_args;
|
||||
remote_find_storage_pool_sources_args val_remote_find_storage_pool_sources_args;
|
||||
remote_storage_pool_create_xml_args val_remote_storage_pool_create_xml_args;
|
||||
remote_storage_pool_define_xml_args val_remote_storage_pool_define_xml_args;
|
||||
remote_storage_pool_create_args val_remote_storage_pool_create_args;
|
||||
remote_storage_pool_build_args val_remote_storage_pool_build_args;
|
||||
remote_storage_pool_destroy_args val_remote_storage_pool_destroy_args;
|
||||
remote_storage_pool_delete_args val_remote_storage_pool_delete_args;
|
||||
remote_storage_pool_undefine_args val_remote_storage_pool_undefine_args;
|
||||
remote_storage_pool_refresh_args val_remote_storage_pool_refresh_args;
|
||||
remote_storage_pool_lookup_by_name_args val_remote_storage_pool_lookup_by_name_args;
|
||||
remote_storage_pool_lookup_by_uuid_args val_remote_storage_pool_lookup_by_uuid_args;
|
||||
remote_storage_pool_lookup_by_volume_args val_remote_storage_pool_lookup_by_volume_args;
|
||||
remote_storage_pool_get_info_args val_remote_storage_pool_get_info_args;
|
||||
remote_storage_pool_dump_xml_args val_remote_storage_pool_dump_xml_args;
|
||||
remote_storage_pool_get_autostart_args val_remote_storage_pool_get_autostart_args;
|
||||
remote_storage_pool_set_autostart_args val_remote_storage_pool_set_autostart_args;
|
||||
remote_storage_pool_num_of_volumes_args val_remote_storage_pool_num_of_volumes_args;
|
||||
remote_storage_pool_list_volumes_args val_remote_storage_pool_list_volumes_args;
|
||||
remote_storage_vol_create_xml_args val_remote_storage_vol_create_xml_args;
|
||||
remote_storage_vol_delete_args val_remote_storage_vol_delete_args;
|
||||
remote_storage_vol_lookup_by_name_args val_remote_storage_vol_lookup_by_name_args;
|
||||
remote_storage_vol_lookup_by_key_args val_remote_storage_vol_lookup_by_key_args;
|
||||
remote_storage_vol_lookup_by_path_args val_remote_storage_vol_lookup_by_path_args;
|
||||
remote_storage_vol_get_info_args val_remote_storage_vol_get_info_args;
|
||||
remote_storage_vol_dump_xml_args val_remote_storage_vol_dump_xml_args;
|
||||
remote_storage_vol_get_path_args val_remote_storage_vol_get_path_args;
|
||||
remote_node_get_cells_free_memory_args val_remote_node_get_cells_free_memory_args;
|
||||
remote_domain_block_peek_args val_remote_domain_block_peek_args;
|
||||
remote_domain_memory_peek_args val_remote_domain_memory_peek_args;
|
||||
remote_domain_migrate_prepare2_args val_remote_domain_migrate_prepare2_args;
|
||||
remote_domain_migrate_finish2_args val_remote_domain_migrate_finish2_args;
|
||||
remote_node_num_of_devices_args val_remote_node_num_of_devices_args;
|
||||
remote_node_list_devices_args val_remote_node_list_devices_args;
|
||||
remote_node_device_lookup_by_name_args val_remote_node_device_lookup_by_name_args;
|
||||
remote_node_device_dump_xml_args val_remote_node_device_dump_xml_args;
|
||||
remote_node_device_get_parent_args val_remote_node_device_get_parent_args;
|
||||
remote_node_device_num_of_caps_args val_remote_node_device_num_of_caps_args;
|
||||
remote_node_device_list_caps_args val_remote_node_device_list_caps_args;
|
||||
remote_node_device_dettach_args val_remote_node_device_dettach_args;
|
||||
remote_node_device_re_attach_args val_remote_node_device_re_attach_args;
|
||||
remote_node_device_reset_args val_remote_node_device_reset_args;
|
||||
remote_domain_get_security_label_args val_remote_domain_get_security_label_args;
|
||||
remote_node_device_create_xml_args val_remote_node_device_create_xml_args;
|
||||
remote_node_device_destroy_args val_remote_node_device_destroy_args;
|
||||
remote_storage_vol_create_xml_from_args val_remote_storage_vol_create_xml_from_args;
|
||||
remote_list_interfaces_args val_remote_list_interfaces_args;
|
||||
remote_interface_lookup_by_name_args val_remote_interface_lookup_by_name_args;
|
||||
remote_interface_lookup_by_mac_string_args val_remote_interface_lookup_by_mac_string_args;
|
||||
remote_interface_get_xml_desc_args val_remote_interface_get_xml_desc_args;
|
||||
remote_interface_define_xml_args val_remote_interface_define_xml_args;
|
||||
remote_interface_undefine_args val_remote_interface_undefine_args;
|
||||
remote_interface_create_args val_remote_interface_create_args;
|
||||
remote_interface_destroy_args val_remote_interface_destroy_args;
|
||||
remote_domain_xml_from_native_args val_remote_domain_xml_from_native_args;
|
||||
remote_domain_xml_to_native_args val_remote_domain_xml_to_native_args;
|
||||
remote_list_defined_interfaces_args val_remote_list_defined_interfaces_args;
|
||||
remote_list_secrets_args val_remote_list_secrets_args;
|
||||
remote_secret_lookup_by_uuid_args val_remote_secret_lookup_by_uuid_args;
|
||||
remote_secret_define_xml_args val_remote_secret_define_xml_args;
|
||||
remote_secret_get_xml_desc_args val_remote_secret_get_xml_desc_args;
|
||||
remote_secret_set_value_args val_remote_secret_set_value_args;
|
||||
remote_secret_get_value_args val_remote_secret_get_value_args;
|
||||
remote_secret_undefine_args val_remote_secret_undefine_args;
|
||||
remote_secret_lookup_by_usage_args val_remote_secret_lookup_by_usage_args;
|
||||
remote_domain_migrate_prepare_tunnel_args val_remote_domain_migrate_prepare_tunnel_args;
|
||||
remote_domain_is_active_args val_remote_domain_is_active_args;
|
||||
remote_domain_is_persistent_args val_remote_domain_is_persistent_args;
|
||||
remote_network_is_active_args val_remote_network_is_active_args;
|
||||
remote_network_is_persistent_args val_remote_network_is_persistent_args;
|
||||
remote_storage_pool_is_active_args val_remote_storage_pool_is_active_args;
|
||||
remote_storage_pool_is_persistent_args val_remote_storage_pool_is_persistent_args;
|
||||
remote_interface_is_active_args val_remote_interface_is_active_args;
|
||||
remote_cpu_compare_args val_remote_cpu_compare_args;
|
||||
remote_domain_memory_stats_args val_remote_domain_memory_stats_args;
|
||||
remote_domain_attach_device_flags_args val_remote_domain_attach_device_flags_args;
|
||||
remote_domain_detach_device_flags_args val_remote_domain_detach_device_flags_args;
|
||||
remote_cpu_baseline_args val_remote_cpu_baseline_args;
|
||||
remote_domain_get_job_info_args val_remote_domain_get_job_info_args;
|
||||
remote_domain_abort_job_args val_remote_domain_abort_job_args;
|
||||
remote_storage_vol_wipe_args val_remote_storage_vol_wipe_args;
|
||||
remote_domain_migrate_set_max_downtime_args val_remote_domain_migrate_set_max_downtime_args;
|
||||
remote_domain_events_register_any_args val_remote_domain_events_register_any_args;
|
||||
remote_domain_events_deregister_any_args val_remote_domain_events_deregister_any_args;
|
||||
remote_domain_update_device_flags_args val_remote_domain_update_device_flags_args;
|
||||
remote_nwfilter_lookup_by_name_args val_remote_nwfilter_lookup_by_name_args;
|
||||
remote_nwfilter_lookup_by_uuid_args val_remote_nwfilter_lookup_by_uuid_args;
|
||||
remote_nwfilter_get_xml_desc_args val_remote_nwfilter_get_xml_desc_args;
|
||||
remote_list_nwfilters_args val_remote_list_nwfilters_args;
|
||||
remote_nwfilter_define_xml_args val_remote_nwfilter_define_xml_args;
|
||||
remote_nwfilter_undefine_args val_remote_nwfilter_undefine_args;
|
||||
remote_domain_managed_save_args val_remote_domain_managed_save_args;
|
||||
remote_domain_has_managed_save_image_args val_remote_domain_has_managed_save_image_args;
|
||||
remote_domain_managed_save_remove_args val_remote_domain_managed_save_remove_args;
|
||||
remote_domain_snapshot_create_xml_args val_remote_domain_snapshot_create_xml_args;
|
||||
remote_domain_snapshot_dump_xml_args val_remote_domain_snapshot_dump_xml_args;
|
||||
remote_domain_snapshot_num_args val_remote_domain_snapshot_num_args;
|
||||
remote_domain_snapshot_list_names_args val_remote_domain_snapshot_list_names_args;
|
||||
remote_domain_snapshot_lookup_by_name_args val_remote_domain_snapshot_lookup_by_name_args;
|
||||
remote_domain_has_current_snapshot_args val_remote_domain_has_current_snapshot_args;
|
||||
remote_domain_snapshot_current_args val_remote_domain_snapshot_current_args;
|
||||
remote_domain_revert_to_snapshot_args val_remote_domain_revert_to_snapshot_args;
|
||||
remote_domain_snapshot_delete_args val_remote_domain_snapshot_delete_args;
|
||||
remote_domain_get_block_info_args val_remote_domain_get_block_info_args;
|
||||
remote_domain_create_with_flags_args val_remote_domain_create_with_flags_args;
|
||||
1516
daemon/remote_dispatch_prototypes.h
Normal file
1516
daemon/remote_dispatch_prototypes.h
Normal file
File diff suppressed because it is too large
Load Diff
137
daemon/remote_dispatch_ret.h
Normal file
137
daemon/remote_dispatch_ret.h
Normal file
@ -0,0 +1,137 @@
|
||||
/* Automatically generated by remote_generate_stubs.pl.
|
||||
* Do not edit this file. Any changes you make will be lost.
|
||||
*/
|
||||
|
||||
remote_get_type_ret val_remote_get_type_ret;
|
||||
remote_get_version_ret val_remote_get_version_ret;
|
||||
remote_get_max_vcpus_ret val_remote_get_max_vcpus_ret;
|
||||
remote_node_get_info_ret val_remote_node_get_info_ret;
|
||||
remote_get_capabilities_ret val_remote_get_capabilities_ret;
|
||||
remote_domain_create_xml_ret val_remote_domain_create_xml_ret;
|
||||
remote_domain_define_xml_ret val_remote_domain_define_xml_ret;
|
||||
remote_domain_dump_xml_ret val_remote_domain_dump_xml_ret;
|
||||
remote_domain_get_autostart_ret val_remote_domain_get_autostart_ret;
|
||||
remote_domain_get_info_ret val_remote_domain_get_info_ret;
|
||||
remote_domain_get_max_memory_ret val_remote_domain_get_max_memory_ret;
|
||||
remote_domain_get_max_vcpus_ret val_remote_domain_get_max_vcpus_ret;
|
||||
remote_domain_get_os_type_ret val_remote_domain_get_os_type_ret;
|
||||
remote_domain_get_vcpus_ret val_remote_domain_get_vcpus_ret;
|
||||
remote_list_defined_domains_ret val_remote_list_defined_domains_ret;
|
||||
remote_domain_lookup_by_id_ret val_remote_domain_lookup_by_id_ret;
|
||||
remote_domain_lookup_by_name_ret val_remote_domain_lookup_by_name_ret;
|
||||
remote_domain_lookup_by_uuid_ret val_remote_domain_lookup_by_uuid_ret;
|
||||
remote_num_of_defined_domains_ret val_remote_num_of_defined_domains_ret;
|
||||
remote_list_defined_networks_ret val_remote_list_defined_networks_ret;
|
||||
remote_list_domains_ret val_remote_list_domains_ret;
|
||||
remote_list_networks_ret val_remote_list_networks_ret;
|
||||
remote_network_create_xml_ret val_remote_network_create_xml_ret;
|
||||
remote_network_define_xml_ret val_remote_network_define_xml_ret;
|
||||
remote_network_dump_xml_ret val_remote_network_dump_xml_ret;
|
||||
remote_network_get_autostart_ret val_remote_network_get_autostart_ret;
|
||||
remote_network_get_bridge_name_ret val_remote_network_get_bridge_name_ret;
|
||||
remote_network_lookup_by_name_ret val_remote_network_lookup_by_name_ret;
|
||||
remote_network_lookup_by_uuid_ret val_remote_network_lookup_by_uuid_ret;
|
||||
remote_num_of_defined_networks_ret val_remote_num_of_defined_networks_ret;
|
||||
remote_num_of_domains_ret val_remote_num_of_domains_ret;
|
||||
remote_num_of_networks_ret val_remote_num_of_networks_ret;
|
||||
remote_domain_get_scheduler_type_ret val_remote_domain_get_scheduler_type_ret;
|
||||
remote_domain_get_scheduler_parameters_ret val_remote_domain_get_scheduler_parameters_ret;
|
||||
remote_get_hostname_ret val_remote_get_hostname_ret;
|
||||
remote_supports_feature_ret val_remote_supports_feature_ret;
|
||||
remote_domain_migrate_prepare_ret val_remote_domain_migrate_prepare_ret;
|
||||
remote_domain_migrate_finish_ret val_remote_domain_migrate_finish_ret;
|
||||
remote_domain_block_stats_ret val_remote_domain_block_stats_ret;
|
||||
remote_domain_interface_stats_ret val_remote_domain_interface_stats_ret;
|
||||
remote_auth_list_ret val_remote_auth_list_ret;
|
||||
remote_auth_sasl_init_ret val_remote_auth_sasl_init_ret;
|
||||
remote_auth_sasl_start_ret val_remote_auth_sasl_start_ret;
|
||||
remote_auth_sasl_step_ret val_remote_auth_sasl_step_ret;
|
||||
remote_auth_polkit_ret val_remote_auth_polkit_ret;
|
||||
remote_num_of_storage_pools_ret val_remote_num_of_storage_pools_ret;
|
||||
remote_list_storage_pools_ret val_remote_list_storage_pools_ret;
|
||||
remote_num_of_defined_storage_pools_ret val_remote_num_of_defined_storage_pools_ret;
|
||||
remote_list_defined_storage_pools_ret val_remote_list_defined_storage_pools_ret;
|
||||
remote_find_storage_pool_sources_ret val_remote_find_storage_pool_sources_ret;
|
||||
remote_storage_pool_create_xml_ret val_remote_storage_pool_create_xml_ret;
|
||||
remote_storage_pool_define_xml_ret val_remote_storage_pool_define_xml_ret;
|
||||
remote_storage_pool_lookup_by_name_ret val_remote_storage_pool_lookup_by_name_ret;
|
||||
remote_storage_pool_lookup_by_uuid_ret val_remote_storage_pool_lookup_by_uuid_ret;
|
||||
remote_storage_pool_lookup_by_volume_ret val_remote_storage_pool_lookup_by_volume_ret;
|
||||
remote_storage_pool_get_info_ret val_remote_storage_pool_get_info_ret;
|
||||
remote_storage_pool_dump_xml_ret val_remote_storage_pool_dump_xml_ret;
|
||||
remote_storage_pool_get_autostart_ret val_remote_storage_pool_get_autostart_ret;
|
||||
remote_storage_pool_num_of_volumes_ret val_remote_storage_pool_num_of_volumes_ret;
|
||||
remote_storage_pool_list_volumes_ret val_remote_storage_pool_list_volumes_ret;
|
||||
remote_storage_vol_create_xml_ret val_remote_storage_vol_create_xml_ret;
|
||||
remote_storage_vol_lookup_by_name_ret val_remote_storage_vol_lookup_by_name_ret;
|
||||
remote_storage_vol_lookup_by_key_ret val_remote_storage_vol_lookup_by_key_ret;
|
||||
remote_storage_vol_lookup_by_path_ret val_remote_storage_vol_lookup_by_path_ret;
|
||||
remote_storage_vol_get_info_ret val_remote_storage_vol_get_info_ret;
|
||||
remote_storage_vol_dump_xml_ret val_remote_storage_vol_dump_xml_ret;
|
||||
remote_storage_vol_get_path_ret val_remote_storage_vol_get_path_ret;
|
||||
remote_node_get_cells_free_memory_ret val_remote_node_get_cells_free_memory_ret;
|
||||
remote_node_get_free_memory_ret val_remote_node_get_free_memory_ret;
|
||||
remote_domain_block_peek_ret val_remote_domain_block_peek_ret;
|
||||
remote_domain_memory_peek_ret val_remote_domain_memory_peek_ret;
|
||||
remote_domain_events_register_ret val_remote_domain_events_register_ret;
|
||||
remote_domain_events_deregister_ret val_remote_domain_events_deregister_ret;
|
||||
remote_domain_migrate_prepare2_ret val_remote_domain_migrate_prepare2_ret;
|
||||
remote_domain_migrate_finish2_ret val_remote_domain_migrate_finish2_ret;
|
||||
remote_get_uri_ret val_remote_get_uri_ret;
|
||||
remote_node_num_of_devices_ret val_remote_node_num_of_devices_ret;
|
||||
remote_node_list_devices_ret val_remote_node_list_devices_ret;
|
||||
remote_node_device_lookup_by_name_ret val_remote_node_device_lookup_by_name_ret;
|
||||
remote_node_device_dump_xml_ret val_remote_node_device_dump_xml_ret;
|
||||
remote_node_device_get_parent_ret val_remote_node_device_get_parent_ret;
|
||||
remote_node_device_num_of_caps_ret val_remote_node_device_num_of_caps_ret;
|
||||
remote_node_device_list_caps_ret val_remote_node_device_list_caps_ret;
|
||||
remote_domain_get_security_label_ret val_remote_domain_get_security_label_ret;
|
||||
remote_node_get_security_model_ret val_remote_node_get_security_model_ret;
|
||||
remote_node_device_create_xml_ret val_remote_node_device_create_xml_ret;
|
||||
remote_storage_vol_create_xml_from_ret val_remote_storage_vol_create_xml_from_ret;
|
||||
remote_num_of_interfaces_ret val_remote_num_of_interfaces_ret;
|
||||
remote_list_interfaces_ret val_remote_list_interfaces_ret;
|
||||
remote_interface_lookup_by_name_ret val_remote_interface_lookup_by_name_ret;
|
||||
remote_interface_lookup_by_mac_string_ret val_remote_interface_lookup_by_mac_string_ret;
|
||||
remote_interface_get_xml_desc_ret val_remote_interface_get_xml_desc_ret;
|
||||
remote_interface_define_xml_ret val_remote_interface_define_xml_ret;
|
||||
remote_domain_xml_from_native_ret val_remote_domain_xml_from_native_ret;
|
||||
remote_domain_xml_to_native_ret val_remote_domain_xml_to_native_ret;
|
||||
remote_num_of_defined_interfaces_ret val_remote_num_of_defined_interfaces_ret;
|
||||
remote_list_defined_interfaces_ret val_remote_list_defined_interfaces_ret;
|
||||
remote_num_of_secrets_ret val_remote_num_of_secrets_ret;
|
||||
remote_list_secrets_ret val_remote_list_secrets_ret;
|
||||
remote_secret_lookup_by_uuid_ret val_remote_secret_lookup_by_uuid_ret;
|
||||
remote_secret_define_xml_ret val_remote_secret_define_xml_ret;
|
||||
remote_secret_get_xml_desc_ret val_remote_secret_get_xml_desc_ret;
|
||||
remote_secret_get_value_ret val_remote_secret_get_value_ret;
|
||||
remote_secret_lookup_by_usage_ret val_remote_secret_lookup_by_usage_ret;
|
||||
remote_is_secure_ret val_remote_is_secure_ret;
|
||||
remote_domain_is_active_ret val_remote_domain_is_active_ret;
|
||||
remote_domain_is_persistent_ret val_remote_domain_is_persistent_ret;
|
||||
remote_network_is_active_ret val_remote_network_is_active_ret;
|
||||
remote_network_is_persistent_ret val_remote_network_is_persistent_ret;
|
||||
remote_storage_pool_is_active_ret val_remote_storage_pool_is_active_ret;
|
||||
remote_storage_pool_is_persistent_ret val_remote_storage_pool_is_persistent_ret;
|
||||
remote_interface_is_active_ret val_remote_interface_is_active_ret;
|
||||
remote_get_lib_version_ret val_remote_get_lib_version_ret;
|
||||
remote_cpu_compare_ret val_remote_cpu_compare_ret;
|
||||
remote_domain_memory_stats_ret val_remote_domain_memory_stats_ret;
|
||||
remote_cpu_baseline_ret val_remote_cpu_baseline_ret;
|
||||
remote_domain_get_job_info_ret val_remote_domain_get_job_info_ret;
|
||||
remote_nwfilter_lookup_by_name_ret val_remote_nwfilter_lookup_by_name_ret;
|
||||
remote_nwfilter_lookup_by_uuid_ret val_remote_nwfilter_lookup_by_uuid_ret;
|
||||
remote_nwfilter_get_xml_desc_ret val_remote_nwfilter_get_xml_desc_ret;
|
||||
remote_num_of_nwfilters_ret val_remote_num_of_nwfilters_ret;
|
||||
remote_list_nwfilters_ret val_remote_list_nwfilters_ret;
|
||||
remote_nwfilter_define_xml_ret val_remote_nwfilter_define_xml_ret;
|
||||
remote_domain_has_managed_save_image_ret val_remote_domain_has_managed_save_image_ret;
|
||||
remote_domain_snapshot_create_xml_ret val_remote_domain_snapshot_create_xml_ret;
|
||||
remote_domain_snapshot_dump_xml_ret val_remote_domain_snapshot_dump_xml_ret;
|
||||
remote_domain_snapshot_num_ret val_remote_domain_snapshot_num_ret;
|
||||
remote_domain_snapshot_list_names_ret val_remote_domain_snapshot_list_names_ret;
|
||||
remote_domain_snapshot_lookup_by_name_ret val_remote_domain_snapshot_lookup_by_name_ret;
|
||||
remote_domain_has_current_snapshot_ret val_remote_domain_has_current_snapshot_ret;
|
||||
remote_domain_snapshot_current_ret val_remote_domain_snapshot_current_ret;
|
||||
remote_domain_get_block_info_ret val_remote_domain_get_block_info_ret;
|
||||
remote_domain_create_with_flags_ret val_remote_domain_create_with_flags_ret;
|
||||
989
daemon/remote_dispatch_table.h
Normal file
989
daemon/remote_dispatch_table.h
Normal file
@ -0,0 +1,989 @@
|
||||
/* Automatically generated by remote_generate_stubs.pl.
|
||||
* Do not edit this file. Any changes you make will be lost.
|
||||
*/
|
||||
|
||||
{ /* (unused) => 0 */
|
||||
.fn = NULL,
|
||||
.args_filter = (xdrproc_t) xdr_void,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* Open => 1 */
|
||||
.fn = (dispatch_fn) remoteDispatchOpen,
|
||||
.args_filter = (xdrproc_t) xdr_remote_open_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* Close => 2 */
|
||||
.fn = (dispatch_fn) remoteDispatchClose,
|
||||
.args_filter = (xdrproc_t) xdr_void,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* GetType => 3 */
|
||||
.fn = (dispatch_fn) remoteDispatchGetType,
|
||||
.args_filter = (xdrproc_t) xdr_void,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_get_type_ret,
|
||||
},
|
||||
{ /* GetVersion => 4 */
|
||||
.fn = (dispatch_fn) remoteDispatchGetVersion,
|
||||
.args_filter = (xdrproc_t) xdr_void,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_get_version_ret,
|
||||
},
|
||||
{ /* GetMaxVcpus => 5 */
|
||||
.fn = (dispatch_fn) remoteDispatchGetMaxVcpus,
|
||||
.args_filter = (xdrproc_t) xdr_remote_get_max_vcpus_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_get_max_vcpus_ret,
|
||||
},
|
||||
{ /* NodeGetInfo => 6 */
|
||||
.fn = (dispatch_fn) remoteDispatchNodeGetInfo,
|
||||
.args_filter = (xdrproc_t) xdr_void,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_node_get_info_ret,
|
||||
},
|
||||
{ /* GetCapabilities => 7 */
|
||||
.fn = (dispatch_fn) remoteDispatchGetCapabilities,
|
||||
.args_filter = (xdrproc_t) xdr_void,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_get_capabilities_ret,
|
||||
},
|
||||
{ /* DomainAttachDevice => 8 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainAttachDevice,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_attach_device_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* DomainCreate => 9 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainCreate,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_create_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* DomainCreateXml => 10 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainCreateXml,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_create_xml_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_create_xml_ret,
|
||||
},
|
||||
{ /* DomainDefineXml => 11 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainDefineXml,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_define_xml_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_define_xml_ret,
|
||||
},
|
||||
{ /* DomainDestroy => 12 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainDestroy,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_destroy_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* DomainDetachDevice => 13 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainDetachDevice,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_detach_device_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* DomainDumpXml => 14 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainDumpXml,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_dump_xml_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_dump_xml_ret,
|
||||
},
|
||||
{ /* DomainGetAutostart => 15 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainGetAutostart,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_get_autostart_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_get_autostart_ret,
|
||||
},
|
||||
{ /* DomainGetInfo => 16 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainGetInfo,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_get_info_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_get_info_ret,
|
||||
},
|
||||
{ /* DomainGetMaxMemory => 17 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainGetMaxMemory,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_get_max_memory_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_get_max_memory_ret,
|
||||
},
|
||||
{ /* DomainGetMaxVcpus => 18 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainGetMaxVcpus,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_get_max_vcpus_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_get_max_vcpus_ret,
|
||||
},
|
||||
{ /* DomainGetOsType => 19 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainGetOsType,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_get_os_type_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_get_os_type_ret,
|
||||
},
|
||||
{ /* DomainGetVcpus => 20 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainGetVcpus,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_get_vcpus_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_get_vcpus_ret,
|
||||
},
|
||||
{ /* ListDefinedDomains => 21 */
|
||||
.fn = (dispatch_fn) remoteDispatchListDefinedDomains,
|
||||
.args_filter = (xdrproc_t) xdr_remote_list_defined_domains_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_list_defined_domains_ret,
|
||||
},
|
||||
{ /* DomainLookupById => 22 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainLookupById,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_lookup_by_id_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_lookup_by_id_ret,
|
||||
},
|
||||
{ /* DomainLookupByName => 23 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainLookupByName,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_lookup_by_name_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_lookup_by_name_ret,
|
||||
},
|
||||
{ /* DomainLookupByUuid => 24 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainLookupByUuid,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_lookup_by_uuid_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_lookup_by_uuid_ret,
|
||||
},
|
||||
{ /* NumOfDefinedDomains => 25 */
|
||||
.fn = (dispatch_fn) remoteDispatchNumOfDefinedDomains,
|
||||
.args_filter = (xdrproc_t) xdr_void,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_num_of_defined_domains_ret,
|
||||
},
|
||||
{ /* DomainPinVcpu => 26 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainPinVcpu,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_pin_vcpu_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* DomainReboot => 27 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainReboot,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_reboot_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* DomainResume => 28 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainResume,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_resume_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* DomainSetAutostart => 29 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainSetAutostart,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_set_autostart_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* DomainSetMaxMemory => 30 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainSetMaxMemory,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_set_max_memory_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* DomainSetMemory => 31 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainSetMemory,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_set_memory_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* DomainSetVcpus => 32 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainSetVcpus,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_set_vcpus_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* DomainShutdown => 33 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainShutdown,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_shutdown_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* DomainSuspend => 34 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainSuspend,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_suspend_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* DomainUndefine => 35 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainUndefine,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_undefine_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* ListDefinedNetworks => 36 */
|
||||
.fn = (dispatch_fn) remoteDispatchListDefinedNetworks,
|
||||
.args_filter = (xdrproc_t) xdr_remote_list_defined_networks_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_list_defined_networks_ret,
|
||||
},
|
||||
{ /* ListDomains => 37 */
|
||||
.fn = (dispatch_fn) remoteDispatchListDomains,
|
||||
.args_filter = (xdrproc_t) xdr_remote_list_domains_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_list_domains_ret,
|
||||
},
|
||||
{ /* ListNetworks => 38 */
|
||||
.fn = (dispatch_fn) remoteDispatchListNetworks,
|
||||
.args_filter = (xdrproc_t) xdr_remote_list_networks_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_list_networks_ret,
|
||||
},
|
||||
{ /* NetworkCreate => 39 */
|
||||
.fn = (dispatch_fn) remoteDispatchNetworkCreate,
|
||||
.args_filter = (xdrproc_t) xdr_remote_network_create_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* NetworkCreateXml => 40 */
|
||||
.fn = (dispatch_fn) remoteDispatchNetworkCreateXml,
|
||||
.args_filter = (xdrproc_t) xdr_remote_network_create_xml_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_network_create_xml_ret,
|
||||
},
|
||||
{ /* NetworkDefineXml => 41 */
|
||||
.fn = (dispatch_fn) remoteDispatchNetworkDefineXml,
|
||||
.args_filter = (xdrproc_t) xdr_remote_network_define_xml_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_network_define_xml_ret,
|
||||
},
|
||||
{ /* NetworkDestroy => 42 */
|
||||
.fn = (dispatch_fn) remoteDispatchNetworkDestroy,
|
||||
.args_filter = (xdrproc_t) xdr_remote_network_destroy_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* NetworkDumpXml => 43 */
|
||||
.fn = (dispatch_fn) remoteDispatchNetworkDumpXml,
|
||||
.args_filter = (xdrproc_t) xdr_remote_network_dump_xml_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_network_dump_xml_ret,
|
||||
},
|
||||
{ /* NetworkGetAutostart => 44 */
|
||||
.fn = (dispatch_fn) remoteDispatchNetworkGetAutostart,
|
||||
.args_filter = (xdrproc_t) xdr_remote_network_get_autostart_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_network_get_autostart_ret,
|
||||
},
|
||||
{ /* NetworkGetBridgeName => 45 */
|
||||
.fn = (dispatch_fn) remoteDispatchNetworkGetBridgeName,
|
||||
.args_filter = (xdrproc_t) xdr_remote_network_get_bridge_name_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_network_get_bridge_name_ret,
|
||||
},
|
||||
{ /* NetworkLookupByName => 46 */
|
||||
.fn = (dispatch_fn) remoteDispatchNetworkLookupByName,
|
||||
.args_filter = (xdrproc_t) xdr_remote_network_lookup_by_name_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_network_lookup_by_name_ret,
|
||||
},
|
||||
{ /* NetworkLookupByUuid => 47 */
|
||||
.fn = (dispatch_fn) remoteDispatchNetworkLookupByUuid,
|
||||
.args_filter = (xdrproc_t) xdr_remote_network_lookup_by_uuid_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_network_lookup_by_uuid_ret,
|
||||
},
|
||||
{ /* NetworkSetAutostart => 48 */
|
||||
.fn = (dispatch_fn) remoteDispatchNetworkSetAutostart,
|
||||
.args_filter = (xdrproc_t) xdr_remote_network_set_autostart_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* NetworkUndefine => 49 */
|
||||
.fn = (dispatch_fn) remoteDispatchNetworkUndefine,
|
||||
.args_filter = (xdrproc_t) xdr_remote_network_undefine_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* NumOfDefinedNetworks => 50 */
|
||||
.fn = (dispatch_fn) remoteDispatchNumOfDefinedNetworks,
|
||||
.args_filter = (xdrproc_t) xdr_void,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_num_of_defined_networks_ret,
|
||||
},
|
||||
{ /* NumOfDomains => 51 */
|
||||
.fn = (dispatch_fn) remoteDispatchNumOfDomains,
|
||||
.args_filter = (xdrproc_t) xdr_void,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_num_of_domains_ret,
|
||||
},
|
||||
{ /* NumOfNetworks => 52 */
|
||||
.fn = (dispatch_fn) remoteDispatchNumOfNetworks,
|
||||
.args_filter = (xdrproc_t) xdr_void,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_num_of_networks_ret,
|
||||
},
|
||||
{ /* DomainCoreDump => 53 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainCoreDump,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_core_dump_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* DomainRestore => 54 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainRestore,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_restore_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* DomainSave => 55 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainSave,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_save_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* DomainGetSchedulerType => 56 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainGetSchedulerType,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_get_scheduler_type_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_get_scheduler_type_ret,
|
||||
},
|
||||
{ /* DomainGetSchedulerParameters => 57 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainGetSchedulerParameters,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_get_scheduler_parameters_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_get_scheduler_parameters_ret,
|
||||
},
|
||||
{ /* DomainSetSchedulerParameters => 58 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainSetSchedulerParameters,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_set_scheduler_parameters_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* GetHostname => 59 */
|
||||
.fn = (dispatch_fn) remoteDispatchGetHostname,
|
||||
.args_filter = (xdrproc_t) xdr_void,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_get_hostname_ret,
|
||||
},
|
||||
{ /* SupportsFeature => 60 */
|
||||
.fn = (dispatch_fn) remoteDispatchSupportsFeature,
|
||||
.args_filter = (xdrproc_t) xdr_remote_supports_feature_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_supports_feature_ret,
|
||||
},
|
||||
{ /* DomainMigratePrepare => 61 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainMigratePrepare,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_migrate_prepare_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_migrate_prepare_ret,
|
||||
},
|
||||
{ /* DomainMigratePerform => 62 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainMigratePerform,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_migrate_perform_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* DomainMigrateFinish => 63 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainMigrateFinish,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_migrate_finish_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_migrate_finish_ret,
|
||||
},
|
||||
{ /* DomainBlockStats => 64 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainBlockStats,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_block_stats_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_block_stats_ret,
|
||||
},
|
||||
{ /* DomainInterfaceStats => 65 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainInterfaceStats,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_interface_stats_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_interface_stats_ret,
|
||||
},
|
||||
{ /* AuthList => 66 */
|
||||
.fn = (dispatch_fn) remoteDispatchAuthList,
|
||||
.args_filter = (xdrproc_t) xdr_void,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_auth_list_ret,
|
||||
},
|
||||
{ /* AuthSaslInit => 67 */
|
||||
.fn = (dispatch_fn) remoteDispatchAuthSaslInit,
|
||||
.args_filter = (xdrproc_t) xdr_void,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_auth_sasl_init_ret,
|
||||
},
|
||||
{ /* AuthSaslStart => 68 */
|
||||
.fn = (dispatch_fn) remoteDispatchAuthSaslStart,
|
||||
.args_filter = (xdrproc_t) xdr_remote_auth_sasl_start_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_auth_sasl_start_ret,
|
||||
},
|
||||
{ /* AuthSaslStep => 69 */
|
||||
.fn = (dispatch_fn) remoteDispatchAuthSaslStep,
|
||||
.args_filter = (xdrproc_t) xdr_remote_auth_sasl_step_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_auth_sasl_step_ret,
|
||||
},
|
||||
{ /* AuthPolkit => 70 */
|
||||
.fn = (dispatch_fn) remoteDispatchAuthPolkit,
|
||||
.args_filter = (xdrproc_t) xdr_void,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_auth_polkit_ret,
|
||||
},
|
||||
{ /* NumOfStoragePools => 71 */
|
||||
.fn = (dispatch_fn) remoteDispatchNumOfStoragePools,
|
||||
.args_filter = (xdrproc_t) xdr_void,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_num_of_storage_pools_ret,
|
||||
},
|
||||
{ /* ListStoragePools => 72 */
|
||||
.fn = (dispatch_fn) remoteDispatchListStoragePools,
|
||||
.args_filter = (xdrproc_t) xdr_remote_list_storage_pools_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_list_storage_pools_ret,
|
||||
},
|
||||
{ /* NumOfDefinedStoragePools => 73 */
|
||||
.fn = (dispatch_fn) remoteDispatchNumOfDefinedStoragePools,
|
||||
.args_filter = (xdrproc_t) xdr_void,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_num_of_defined_storage_pools_ret,
|
||||
},
|
||||
{ /* ListDefinedStoragePools => 74 */
|
||||
.fn = (dispatch_fn) remoteDispatchListDefinedStoragePools,
|
||||
.args_filter = (xdrproc_t) xdr_remote_list_defined_storage_pools_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_list_defined_storage_pools_ret,
|
||||
},
|
||||
{ /* FindStoragePoolSources => 75 */
|
||||
.fn = (dispatch_fn) remoteDispatchFindStoragePoolSources,
|
||||
.args_filter = (xdrproc_t) xdr_remote_find_storage_pool_sources_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_find_storage_pool_sources_ret,
|
||||
},
|
||||
{ /* StoragePoolCreateXml => 76 */
|
||||
.fn = (dispatch_fn) remoteDispatchStoragePoolCreateXml,
|
||||
.args_filter = (xdrproc_t) xdr_remote_storage_pool_create_xml_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_storage_pool_create_xml_ret,
|
||||
},
|
||||
{ /* StoragePoolDefineXml => 77 */
|
||||
.fn = (dispatch_fn) remoteDispatchStoragePoolDefineXml,
|
||||
.args_filter = (xdrproc_t) xdr_remote_storage_pool_define_xml_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_storage_pool_define_xml_ret,
|
||||
},
|
||||
{ /* StoragePoolCreate => 78 */
|
||||
.fn = (dispatch_fn) remoteDispatchStoragePoolCreate,
|
||||
.args_filter = (xdrproc_t) xdr_remote_storage_pool_create_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* StoragePoolBuild => 79 */
|
||||
.fn = (dispatch_fn) remoteDispatchStoragePoolBuild,
|
||||
.args_filter = (xdrproc_t) xdr_remote_storage_pool_build_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* StoragePoolDestroy => 80 */
|
||||
.fn = (dispatch_fn) remoteDispatchStoragePoolDestroy,
|
||||
.args_filter = (xdrproc_t) xdr_remote_storage_pool_destroy_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* StoragePoolDelete => 81 */
|
||||
.fn = (dispatch_fn) remoteDispatchStoragePoolDelete,
|
||||
.args_filter = (xdrproc_t) xdr_remote_storage_pool_delete_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* StoragePoolUndefine => 82 */
|
||||
.fn = (dispatch_fn) remoteDispatchStoragePoolUndefine,
|
||||
.args_filter = (xdrproc_t) xdr_remote_storage_pool_undefine_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* StoragePoolRefresh => 83 */
|
||||
.fn = (dispatch_fn) remoteDispatchStoragePoolRefresh,
|
||||
.args_filter = (xdrproc_t) xdr_remote_storage_pool_refresh_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* StoragePoolLookupByName => 84 */
|
||||
.fn = (dispatch_fn) remoteDispatchStoragePoolLookupByName,
|
||||
.args_filter = (xdrproc_t) xdr_remote_storage_pool_lookup_by_name_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_storage_pool_lookup_by_name_ret,
|
||||
},
|
||||
{ /* StoragePoolLookupByUuid => 85 */
|
||||
.fn = (dispatch_fn) remoteDispatchStoragePoolLookupByUuid,
|
||||
.args_filter = (xdrproc_t) xdr_remote_storage_pool_lookup_by_uuid_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_storage_pool_lookup_by_uuid_ret,
|
||||
},
|
||||
{ /* StoragePoolLookupByVolume => 86 */
|
||||
.fn = (dispatch_fn) remoteDispatchStoragePoolLookupByVolume,
|
||||
.args_filter = (xdrproc_t) xdr_remote_storage_pool_lookup_by_volume_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_storage_pool_lookup_by_volume_ret,
|
||||
},
|
||||
{ /* StoragePoolGetInfo => 87 */
|
||||
.fn = (dispatch_fn) remoteDispatchStoragePoolGetInfo,
|
||||
.args_filter = (xdrproc_t) xdr_remote_storage_pool_get_info_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_storage_pool_get_info_ret,
|
||||
},
|
||||
{ /* StoragePoolDumpXml => 88 */
|
||||
.fn = (dispatch_fn) remoteDispatchStoragePoolDumpXml,
|
||||
.args_filter = (xdrproc_t) xdr_remote_storage_pool_dump_xml_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_storage_pool_dump_xml_ret,
|
||||
},
|
||||
{ /* StoragePoolGetAutostart => 89 */
|
||||
.fn = (dispatch_fn) remoteDispatchStoragePoolGetAutostart,
|
||||
.args_filter = (xdrproc_t) xdr_remote_storage_pool_get_autostart_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_storage_pool_get_autostart_ret,
|
||||
},
|
||||
{ /* StoragePoolSetAutostart => 90 */
|
||||
.fn = (dispatch_fn) remoteDispatchStoragePoolSetAutostart,
|
||||
.args_filter = (xdrproc_t) xdr_remote_storage_pool_set_autostart_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* StoragePoolNumOfVolumes => 91 */
|
||||
.fn = (dispatch_fn) remoteDispatchStoragePoolNumOfVolumes,
|
||||
.args_filter = (xdrproc_t) xdr_remote_storage_pool_num_of_volumes_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_storage_pool_num_of_volumes_ret,
|
||||
},
|
||||
{ /* StoragePoolListVolumes => 92 */
|
||||
.fn = (dispatch_fn) remoteDispatchStoragePoolListVolumes,
|
||||
.args_filter = (xdrproc_t) xdr_remote_storage_pool_list_volumes_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_storage_pool_list_volumes_ret,
|
||||
},
|
||||
{ /* StorageVolCreateXml => 93 */
|
||||
.fn = (dispatch_fn) remoteDispatchStorageVolCreateXml,
|
||||
.args_filter = (xdrproc_t) xdr_remote_storage_vol_create_xml_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_storage_vol_create_xml_ret,
|
||||
},
|
||||
{ /* StorageVolDelete => 94 */
|
||||
.fn = (dispatch_fn) remoteDispatchStorageVolDelete,
|
||||
.args_filter = (xdrproc_t) xdr_remote_storage_vol_delete_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* StorageVolLookupByName => 95 */
|
||||
.fn = (dispatch_fn) remoteDispatchStorageVolLookupByName,
|
||||
.args_filter = (xdrproc_t) xdr_remote_storage_vol_lookup_by_name_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_storage_vol_lookup_by_name_ret,
|
||||
},
|
||||
{ /* StorageVolLookupByKey => 96 */
|
||||
.fn = (dispatch_fn) remoteDispatchStorageVolLookupByKey,
|
||||
.args_filter = (xdrproc_t) xdr_remote_storage_vol_lookup_by_key_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_storage_vol_lookup_by_key_ret,
|
||||
},
|
||||
{ /* StorageVolLookupByPath => 97 */
|
||||
.fn = (dispatch_fn) remoteDispatchStorageVolLookupByPath,
|
||||
.args_filter = (xdrproc_t) xdr_remote_storage_vol_lookup_by_path_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_storage_vol_lookup_by_path_ret,
|
||||
},
|
||||
{ /* StorageVolGetInfo => 98 */
|
||||
.fn = (dispatch_fn) remoteDispatchStorageVolGetInfo,
|
||||
.args_filter = (xdrproc_t) xdr_remote_storage_vol_get_info_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_storage_vol_get_info_ret,
|
||||
},
|
||||
{ /* StorageVolDumpXml => 99 */
|
||||
.fn = (dispatch_fn) remoteDispatchStorageVolDumpXml,
|
||||
.args_filter = (xdrproc_t) xdr_remote_storage_vol_dump_xml_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_storage_vol_dump_xml_ret,
|
||||
},
|
||||
{ /* StorageVolGetPath => 100 */
|
||||
.fn = (dispatch_fn) remoteDispatchStorageVolGetPath,
|
||||
.args_filter = (xdrproc_t) xdr_remote_storage_vol_get_path_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_storage_vol_get_path_ret,
|
||||
},
|
||||
{ /* NodeGetCellsFreeMemory => 101 */
|
||||
.fn = (dispatch_fn) remoteDispatchNodeGetCellsFreeMemory,
|
||||
.args_filter = (xdrproc_t) xdr_remote_node_get_cells_free_memory_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_node_get_cells_free_memory_ret,
|
||||
},
|
||||
{ /* NodeGetFreeMemory => 102 */
|
||||
.fn = (dispatch_fn) remoteDispatchNodeGetFreeMemory,
|
||||
.args_filter = (xdrproc_t) xdr_void,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_node_get_free_memory_ret,
|
||||
},
|
||||
{ /* DomainBlockPeek => 103 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainBlockPeek,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_block_peek_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_block_peek_ret,
|
||||
},
|
||||
{ /* DomainMemoryPeek => 104 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainMemoryPeek,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_memory_peek_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_memory_peek_ret,
|
||||
},
|
||||
{ /* DomainEventsRegister => 105 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainEventsRegister,
|
||||
.args_filter = (xdrproc_t) xdr_void,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_events_register_ret,
|
||||
},
|
||||
{ /* DomainEventsDeregister => 106 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainEventsDeregister,
|
||||
.args_filter = (xdrproc_t) xdr_void,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_events_deregister_ret,
|
||||
},
|
||||
{ /* Async event DomainEventLifecycle => 107 */
|
||||
.fn = NULL,
|
||||
.args_filter = (xdrproc_t) xdr_void,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* DomainMigratePrepare2 => 108 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainMigratePrepare2,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_migrate_prepare2_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_migrate_prepare2_ret,
|
||||
},
|
||||
{ /* DomainMigrateFinish2 => 109 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainMigrateFinish2,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_migrate_finish2_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_migrate_finish2_ret,
|
||||
},
|
||||
{ /* GetUri => 110 */
|
||||
.fn = (dispatch_fn) remoteDispatchGetUri,
|
||||
.args_filter = (xdrproc_t) xdr_void,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_get_uri_ret,
|
||||
},
|
||||
{ /* NodeNumOfDevices => 111 */
|
||||
.fn = (dispatch_fn) remoteDispatchNodeNumOfDevices,
|
||||
.args_filter = (xdrproc_t) xdr_remote_node_num_of_devices_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_node_num_of_devices_ret,
|
||||
},
|
||||
{ /* NodeListDevices => 112 */
|
||||
.fn = (dispatch_fn) remoteDispatchNodeListDevices,
|
||||
.args_filter = (xdrproc_t) xdr_remote_node_list_devices_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_node_list_devices_ret,
|
||||
},
|
||||
{ /* NodeDeviceLookupByName => 113 */
|
||||
.fn = (dispatch_fn) remoteDispatchNodeDeviceLookupByName,
|
||||
.args_filter = (xdrproc_t) xdr_remote_node_device_lookup_by_name_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_node_device_lookup_by_name_ret,
|
||||
},
|
||||
{ /* NodeDeviceDumpXml => 114 */
|
||||
.fn = (dispatch_fn) remoteDispatchNodeDeviceDumpXml,
|
||||
.args_filter = (xdrproc_t) xdr_remote_node_device_dump_xml_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_node_device_dump_xml_ret,
|
||||
},
|
||||
{ /* NodeDeviceGetParent => 115 */
|
||||
.fn = (dispatch_fn) remoteDispatchNodeDeviceGetParent,
|
||||
.args_filter = (xdrproc_t) xdr_remote_node_device_get_parent_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_node_device_get_parent_ret,
|
||||
},
|
||||
{ /* NodeDeviceNumOfCaps => 116 */
|
||||
.fn = (dispatch_fn) remoteDispatchNodeDeviceNumOfCaps,
|
||||
.args_filter = (xdrproc_t) xdr_remote_node_device_num_of_caps_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_node_device_num_of_caps_ret,
|
||||
},
|
||||
{ /* NodeDeviceListCaps => 117 */
|
||||
.fn = (dispatch_fn) remoteDispatchNodeDeviceListCaps,
|
||||
.args_filter = (xdrproc_t) xdr_remote_node_device_list_caps_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_node_device_list_caps_ret,
|
||||
},
|
||||
{ /* NodeDeviceDettach => 118 */
|
||||
.fn = (dispatch_fn) remoteDispatchNodeDeviceDettach,
|
||||
.args_filter = (xdrproc_t) xdr_remote_node_device_dettach_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* NodeDeviceReAttach => 119 */
|
||||
.fn = (dispatch_fn) remoteDispatchNodeDeviceReAttach,
|
||||
.args_filter = (xdrproc_t) xdr_remote_node_device_re_attach_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* NodeDeviceReset => 120 */
|
||||
.fn = (dispatch_fn) remoteDispatchNodeDeviceReset,
|
||||
.args_filter = (xdrproc_t) xdr_remote_node_device_reset_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* DomainGetSecurityLabel => 121 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainGetSecurityLabel,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_get_security_label_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_get_security_label_ret,
|
||||
},
|
||||
{ /* NodeGetSecurityModel => 122 */
|
||||
.fn = (dispatch_fn) remoteDispatchNodeGetSecurityModel,
|
||||
.args_filter = (xdrproc_t) xdr_void,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_node_get_security_model_ret,
|
||||
},
|
||||
{ /* NodeDeviceCreateXml => 123 */
|
||||
.fn = (dispatch_fn) remoteDispatchNodeDeviceCreateXml,
|
||||
.args_filter = (xdrproc_t) xdr_remote_node_device_create_xml_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_node_device_create_xml_ret,
|
||||
},
|
||||
{ /* NodeDeviceDestroy => 124 */
|
||||
.fn = (dispatch_fn) remoteDispatchNodeDeviceDestroy,
|
||||
.args_filter = (xdrproc_t) xdr_remote_node_device_destroy_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* StorageVolCreateXmlFrom => 125 */
|
||||
.fn = (dispatch_fn) remoteDispatchStorageVolCreateXmlFrom,
|
||||
.args_filter = (xdrproc_t) xdr_remote_storage_vol_create_xml_from_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_storage_vol_create_xml_from_ret,
|
||||
},
|
||||
{ /* NumOfInterfaces => 126 */
|
||||
.fn = (dispatch_fn) remoteDispatchNumOfInterfaces,
|
||||
.args_filter = (xdrproc_t) xdr_void,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_num_of_interfaces_ret,
|
||||
},
|
||||
{ /* ListInterfaces => 127 */
|
||||
.fn = (dispatch_fn) remoteDispatchListInterfaces,
|
||||
.args_filter = (xdrproc_t) xdr_remote_list_interfaces_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_list_interfaces_ret,
|
||||
},
|
||||
{ /* InterfaceLookupByName => 128 */
|
||||
.fn = (dispatch_fn) remoteDispatchInterfaceLookupByName,
|
||||
.args_filter = (xdrproc_t) xdr_remote_interface_lookup_by_name_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_interface_lookup_by_name_ret,
|
||||
},
|
||||
{ /* InterfaceLookupByMacString => 129 */
|
||||
.fn = (dispatch_fn) remoteDispatchInterfaceLookupByMacString,
|
||||
.args_filter = (xdrproc_t) xdr_remote_interface_lookup_by_mac_string_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_interface_lookup_by_mac_string_ret,
|
||||
},
|
||||
{ /* InterfaceGetXmlDesc => 130 */
|
||||
.fn = (dispatch_fn) remoteDispatchInterfaceGetXmlDesc,
|
||||
.args_filter = (xdrproc_t) xdr_remote_interface_get_xml_desc_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_interface_get_xml_desc_ret,
|
||||
},
|
||||
{ /* InterfaceDefineXml => 131 */
|
||||
.fn = (dispatch_fn) remoteDispatchInterfaceDefineXml,
|
||||
.args_filter = (xdrproc_t) xdr_remote_interface_define_xml_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_interface_define_xml_ret,
|
||||
},
|
||||
{ /* InterfaceUndefine => 132 */
|
||||
.fn = (dispatch_fn) remoteDispatchInterfaceUndefine,
|
||||
.args_filter = (xdrproc_t) xdr_remote_interface_undefine_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* InterfaceCreate => 133 */
|
||||
.fn = (dispatch_fn) remoteDispatchInterfaceCreate,
|
||||
.args_filter = (xdrproc_t) xdr_remote_interface_create_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* InterfaceDestroy => 134 */
|
||||
.fn = (dispatch_fn) remoteDispatchInterfaceDestroy,
|
||||
.args_filter = (xdrproc_t) xdr_remote_interface_destroy_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* DomainXmlFromNative => 135 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainXmlFromNative,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_xml_from_native_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_xml_from_native_ret,
|
||||
},
|
||||
{ /* DomainXmlToNative => 136 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainXmlToNative,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_xml_to_native_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_xml_to_native_ret,
|
||||
},
|
||||
{ /* NumOfDefinedInterfaces => 137 */
|
||||
.fn = (dispatch_fn) remoteDispatchNumOfDefinedInterfaces,
|
||||
.args_filter = (xdrproc_t) xdr_void,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_num_of_defined_interfaces_ret,
|
||||
},
|
||||
{ /* ListDefinedInterfaces => 138 */
|
||||
.fn = (dispatch_fn) remoteDispatchListDefinedInterfaces,
|
||||
.args_filter = (xdrproc_t) xdr_remote_list_defined_interfaces_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_list_defined_interfaces_ret,
|
||||
},
|
||||
{ /* NumOfSecrets => 139 */
|
||||
.fn = (dispatch_fn) remoteDispatchNumOfSecrets,
|
||||
.args_filter = (xdrproc_t) xdr_void,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_num_of_secrets_ret,
|
||||
},
|
||||
{ /* ListSecrets => 140 */
|
||||
.fn = (dispatch_fn) remoteDispatchListSecrets,
|
||||
.args_filter = (xdrproc_t) xdr_remote_list_secrets_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_list_secrets_ret,
|
||||
},
|
||||
{ /* SecretLookupByUuid => 141 */
|
||||
.fn = (dispatch_fn) remoteDispatchSecretLookupByUuid,
|
||||
.args_filter = (xdrproc_t) xdr_remote_secret_lookup_by_uuid_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_secret_lookup_by_uuid_ret,
|
||||
},
|
||||
{ /* SecretDefineXml => 142 */
|
||||
.fn = (dispatch_fn) remoteDispatchSecretDefineXml,
|
||||
.args_filter = (xdrproc_t) xdr_remote_secret_define_xml_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_secret_define_xml_ret,
|
||||
},
|
||||
{ /* SecretGetXmlDesc => 143 */
|
||||
.fn = (dispatch_fn) remoteDispatchSecretGetXmlDesc,
|
||||
.args_filter = (xdrproc_t) xdr_remote_secret_get_xml_desc_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_secret_get_xml_desc_ret,
|
||||
},
|
||||
{ /* SecretSetValue => 144 */
|
||||
.fn = (dispatch_fn) remoteDispatchSecretSetValue,
|
||||
.args_filter = (xdrproc_t) xdr_remote_secret_set_value_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* SecretGetValue => 145 */
|
||||
.fn = (dispatch_fn) remoteDispatchSecretGetValue,
|
||||
.args_filter = (xdrproc_t) xdr_remote_secret_get_value_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_secret_get_value_ret,
|
||||
},
|
||||
{ /* SecretUndefine => 146 */
|
||||
.fn = (dispatch_fn) remoteDispatchSecretUndefine,
|
||||
.args_filter = (xdrproc_t) xdr_remote_secret_undefine_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* SecretLookupByUsage => 147 */
|
||||
.fn = (dispatch_fn) remoteDispatchSecretLookupByUsage,
|
||||
.args_filter = (xdrproc_t) xdr_remote_secret_lookup_by_usage_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_secret_lookup_by_usage_ret,
|
||||
},
|
||||
{ /* DomainMigratePrepareTunnel => 148 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainMigratePrepareTunnel,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_migrate_prepare_tunnel_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* IsSecure => 149 */
|
||||
.fn = (dispatch_fn) remoteDispatchIsSecure,
|
||||
.args_filter = (xdrproc_t) xdr_void,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_is_secure_ret,
|
||||
},
|
||||
{ /* DomainIsActive => 150 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainIsActive,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_is_active_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_is_active_ret,
|
||||
},
|
||||
{ /* DomainIsPersistent => 151 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainIsPersistent,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_is_persistent_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_is_persistent_ret,
|
||||
},
|
||||
{ /* NetworkIsActive => 152 */
|
||||
.fn = (dispatch_fn) remoteDispatchNetworkIsActive,
|
||||
.args_filter = (xdrproc_t) xdr_remote_network_is_active_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_network_is_active_ret,
|
||||
},
|
||||
{ /* NetworkIsPersistent => 153 */
|
||||
.fn = (dispatch_fn) remoteDispatchNetworkIsPersistent,
|
||||
.args_filter = (xdrproc_t) xdr_remote_network_is_persistent_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_network_is_persistent_ret,
|
||||
},
|
||||
{ /* StoragePoolIsActive => 154 */
|
||||
.fn = (dispatch_fn) remoteDispatchStoragePoolIsActive,
|
||||
.args_filter = (xdrproc_t) xdr_remote_storage_pool_is_active_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_storage_pool_is_active_ret,
|
||||
},
|
||||
{ /* StoragePoolIsPersistent => 155 */
|
||||
.fn = (dispatch_fn) remoteDispatchStoragePoolIsPersistent,
|
||||
.args_filter = (xdrproc_t) xdr_remote_storage_pool_is_persistent_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_storage_pool_is_persistent_ret,
|
||||
},
|
||||
{ /* InterfaceIsActive => 156 */
|
||||
.fn = (dispatch_fn) remoteDispatchInterfaceIsActive,
|
||||
.args_filter = (xdrproc_t) xdr_remote_interface_is_active_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_interface_is_active_ret,
|
||||
},
|
||||
{ /* GetLibVersion => 157 */
|
||||
.fn = (dispatch_fn) remoteDispatchGetLibVersion,
|
||||
.args_filter = (xdrproc_t) xdr_void,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_get_lib_version_ret,
|
||||
},
|
||||
{ /* CpuCompare => 158 */
|
||||
.fn = (dispatch_fn) remoteDispatchCpuCompare,
|
||||
.args_filter = (xdrproc_t) xdr_remote_cpu_compare_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_cpu_compare_ret,
|
||||
},
|
||||
{ /* DomainMemoryStats => 159 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainMemoryStats,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_memory_stats_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_memory_stats_ret,
|
||||
},
|
||||
{ /* DomainAttachDeviceFlags => 160 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainAttachDeviceFlags,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_attach_device_flags_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* DomainDetachDeviceFlags => 161 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainDetachDeviceFlags,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_detach_device_flags_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* CpuBaseline => 162 */
|
||||
.fn = (dispatch_fn) remoteDispatchCpuBaseline,
|
||||
.args_filter = (xdrproc_t) xdr_remote_cpu_baseline_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_cpu_baseline_ret,
|
||||
},
|
||||
{ /* DomainGetJobInfo => 163 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainGetJobInfo,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_get_job_info_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_get_job_info_ret,
|
||||
},
|
||||
{ /* DomainAbortJob => 164 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainAbortJob,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_abort_job_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* StorageVolWipe => 165 */
|
||||
.fn = (dispatch_fn) remoteDispatchStorageVolWipe,
|
||||
.args_filter = (xdrproc_t) xdr_remote_storage_vol_wipe_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* DomainMigrateSetMaxDowntime => 166 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainMigrateSetMaxDowntime,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_migrate_set_max_downtime_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* DomainEventsRegisterAny => 167 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainEventsRegisterAny,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_events_register_any_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* DomainEventsDeregisterAny => 168 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainEventsDeregisterAny,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_events_deregister_any_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* Async event DomainEventReboot => 169 */
|
||||
.fn = NULL,
|
||||
.args_filter = (xdrproc_t) xdr_void,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* Async event DomainEventRtcChange => 170 */
|
||||
.fn = NULL,
|
||||
.args_filter = (xdrproc_t) xdr_void,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* Async event DomainEventWatchdog => 171 */
|
||||
.fn = NULL,
|
||||
.args_filter = (xdrproc_t) xdr_void,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* Async event DomainEventIoError => 172 */
|
||||
.fn = NULL,
|
||||
.args_filter = (xdrproc_t) xdr_void,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* Async event DomainEventGraphics => 173 */
|
||||
.fn = NULL,
|
||||
.args_filter = (xdrproc_t) xdr_void,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* DomainUpdateDeviceFlags => 174 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainUpdateDeviceFlags,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_update_device_flags_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* NwfilterLookupByName => 175 */
|
||||
.fn = (dispatch_fn) remoteDispatchNwfilterLookupByName,
|
||||
.args_filter = (xdrproc_t) xdr_remote_nwfilter_lookup_by_name_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_nwfilter_lookup_by_name_ret,
|
||||
},
|
||||
{ /* NwfilterLookupByUuid => 176 */
|
||||
.fn = (dispatch_fn) remoteDispatchNwfilterLookupByUuid,
|
||||
.args_filter = (xdrproc_t) xdr_remote_nwfilter_lookup_by_uuid_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_nwfilter_lookup_by_uuid_ret,
|
||||
},
|
||||
{ /* NwfilterGetXmlDesc => 177 */
|
||||
.fn = (dispatch_fn) remoteDispatchNwfilterGetXmlDesc,
|
||||
.args_filter = (xdrproc_t) xdr_remote_nwfilter_get_xml_desc_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_nwfilter_get_xml_desc_ret,
|
||||
},
|
||||
{ /* NumOfNwfilters => 178 */
|
||||
.fn = (dispatch_fn) remoteDispatchNumOfNwfilters,
|
||||
.args_filter = (xdrproc_t) xdr_void,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_num_of_nwfilters_ret,
|
||||
},
|
||||
{ /* ListNwfilters => 179 */
|
||||
.fn = (dispatch_fn) remoteDispatchListNwfilters,
|
||||
.args_filter = (xdrproc_t) xdr_remote_list_nwfilters_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_list_nwfilters_ret,
|
||||
},
|
||||
{ /* NwfilterDefineXml => 180 */
|
||||
.fn = (dispatch_fn) remoteDispatchNwfilterDefineXml,
|
||||
.args_filter = (xdrproc_t) xdr_remote_nwfilter_define_xml_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_nwfilter_define_xml_ret,
|
||||
},
|
||||
{ /* NwfilterUndefine => 181 */
|
||||
.fn = (dispatch_fn) remoteDispatchNwfilterUndefine,
|
||||
.args_filter = (xdrproc_t) xdr_remote_nwfilter_undefine_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* DomainManagedSave => 182 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainManagedSave,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_managed_save_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* DomainHasManagedSaveImage => 183 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainHasManagedSaveImage,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_has_managed_save_image_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_has_managed_save_image_ret,
|
||||
},
|
||||
{ /* DomainManagedSaveRemove => 184 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainManagedSaveRemove,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_managed_save_remove_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* DomainSnapshotCreateXml => 185 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainSnapshotCreateXml,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_snapshot_create_xml_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_snapshot_create_xml_ret,
|
||||
},
|
||||
{ /* DomainSnapshotDumpXml => 186 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainSnapshotDumpXml,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_snapshot_dump_xml_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_snapshot_dump_xml_ret,
|
||||
},
|
||||
{ /* DomainSnapshotNum => 187 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainSnapshotNum,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_snapshot_num_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_snapshot_num_ret,
|
||||
},
|
||||
{ /* DomainSnapshotListNames => 188 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainSnapshotListNames,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_snapshot_list_names_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_snapshot_list_names_ret,
|
||||
},
|
||||
{ /* DomainSnapshotLookupByName => 189 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainSnapshotLookupByName,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_snapshot_lookup_by_name_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_snapshot_lookup_by_name_ret,
|
||||
},
|
||||
{ /* DomainHasCurrentSnapshot => 190 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainHasCurrentSnapshot,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_has_current_snapshot_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_has_current_snapshot_ret,
|
||||
},
|
||||
{ /* DomainSnapshotCurrent => 191 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainSnapshotCurrent,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_snapshot_current_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_snapshot_current_ret,
|
||||
},
|
||||
{ /* DomainRevertToSnapshot => 192 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainRevertToSnapshot,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_revert_to_snapshot_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* DomainSnapshotDelete => 193 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainSnapshotDelete,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_snapshot_delete_args,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* DomainGetBlockInfo => 194 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainGetBlockInfo,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_get_block_info_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_get_block_info_ret,
|
||||
},
|
||||
{ /* Async event DomainEventIoErrorReason => 195 */
|
||||
.fn = NULL,
|
||||
.args_filter = (xdrproc_t) xdr_void,
|
||||
.ret_filter = (xdrproc_t) xdr_void,
|
||||
},
|
||||
{ /* DomainCreateWithFlags => 196 */
|
||||
.fn = (dispatch_fn) remoteDispatchDomainCreateWithFlags,
|
||||
.args_filter = (xdrproc_t) xdr_remote_domain_create_with_flags_args,
|
||||
.ret_filter = (xdrproc_t) xdr_remote_domain_create_with_flags_ret,
|
||||
},
|
||||
179
daemon/remote_generate_stubs.pl
Executable file
179
daemon/remote_generate_stubs.pl
Executable file
@ -0,0 +1,179 @@
|
||||
#!/usr/bin/perl -w
|
||||
#
|
||||
# This script parses remote_protocol.x and produces lots of boilerplate
|
||||
# code for both ends of the remote connection.
|
||||
#
|
||||
# By Richard Jones <rjones@redhat.com>
|
||||
|
||||
use strict;
|
||||
|
||||
use Getopt::Std;
|
||||
|
||||
# Command line options.
|
||||
our ($opt_p, $opt_t, $opt_a, $opt_r, $opt_d);
|
||||
getopts ('ptard');
|
||||
|
||||
# Convert name_of_call to NameOfCall.
|
||||
sub name_to_ProcName {
|
||||
my $name = shift;
|
||||
my @elems = split /_/, $name;
|
||||
@elems = map ucfirst, @elems;
|
||||
join "", @elems
|
||||
}
|
||||
|
||||
# Read the input file (usually remote_protocol.x) and form an
|
||||
# opinion about the name, args and return type of each RPC.
|
||||
my ($name, $ProcName, $id, %calls, @calls);
|
||||
|
||||
# REMOTE_PROC_CLOSE has no args or ret.
|
||||
$calls{close} = {
|
||||
name => "close",
|
||||
ProcName => "Close",
|
||||
UC_NAME => "CLOSE",
|
||||
args => "void",
|
||||
ret => "void",
|
||||
};
|
||||
|
||||
while (<>) {
|
||||
if (/^struct remote_(.*)_args/) {
|
||||
$name = $1;
|
||||
$ProcName = name_to_ProcName ($name);
|
||||
|
||||
die "duplicate definition of remote_${name}_args"
|
||||
if exists $calls{$name};
|
||||
|
||||
$calls{$name} = {
|
||||
name => $name,
|
||||
ProcName => $ProcName,
|
||||
UC_NAME => uc $name,
|
||||
args => "remote_${name}_args",
|
||||
ret => "void",
|
||||
};
|
||||
|
||||
} elsif (/^struct remote_(.*)_ret/) {
|
||||
$name = $1;
|
||||
$ProcName = name_to_ProcName ($name);
|
||||
|
||||
if (exists $calls{$name}) {
|
||||
$calls{$name}->{ret} = "remote_${name}_ret";
|
||||
} else {
|
||||
$calls{$name} = {
|
||||
name => $name,
|
||||
ProcName => $ProcName,
|
||||
UC_NAME => uc $name,
|
||||
args => "void",
|
||||
ret => "remote_${name}_ret"
|
||||
}
|
||||
}
|
||||
} elsif (/^struct remote_(.*)_msg/) {
|
||||
$name = $1;
|
||||
$ProcName = name_to_ProcName ($name);
|
||||
|
||||
$calls{$name} = {
|
||||
name => $name,
|
||||
ProcName => $ProcName,
|
||||
UC_NAME => uc $name,
|
||||
msg => "remote_${name}_msg"
|
||||
}
|
||||
} elsif (/^\s*REMOTE_PROC_(.*?)\s+=\s+(\d+),?$/) {
|
||||
$name = lc $1;
|
||||
$id = $2;
|
||||
$ProcName = name_to_ProcName ($name);
|
||||
|
||||
$calls[$id] = $calls{$name};
|
||||
}
|
||||
}
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
# Output
|
||||
|
||||
print <<__EOF__;
|
||||
/* Automatically generated by remote_generate_stubs.pl.
|
||||
* Do not edit this file. Any changes you make will be lost.
|
||||
*/
|
||||
|
||||
__EOF__
|
||||
|
||||
# Debugging.
|
||||
if ($opt_d) {
|
||||
my @keys = sort (keys %calls);
|
||||
foreach (@keys) {
|
||||
print "$_:\n";
|
||||
print " name $calls{$_}->{name} ($calls{$_}->{ProcName})\n";
|
||||
print " $calls{$_}->{args} -> $calls{$_}->{ret}\n";
|
||||
}
|
||||
}
|
||||
|
||||
# Prototypes for dispatch functions ("remote_dispatch_prototypes.h").
|
||||
elsif ($opt_p) {
|
||||
my @keys = sort (keys %calls);
|
||||
foreach (@keys) {
|
||||
# Skip things which are REMOTE_MESSAGE
|
||||
next if $calls{$_}->{msg};
|
||||
|
||||
print "static int remoteDispatch$calls{$_}->{ProcName}(\n";
|
||||
print " struct qemud_server *server,\n";
|
||||
print " struct qemud_client *client,\n";
|
||||
print " virConnectPtr conn,\n";
|
||||
print " remote_message_header *hdr,\n";
|
||||
print " remote_error *err,\n";
|
||||
print " $calls{$_}->{args} *args,\n";
|
||||
print " $calls{$_}->{ret} *ret);\n";
|
||||
}
|
||||
}
|
||||
|
||||
# Union of all arg types
|
||||
# ("remote_dispatch_args.h").
|
||||
elsif ($opt_a) {
|
||||
for ($id = 0 ; $id <= $#calls ; $id++) {
|
||||
if (defined $calls[$id] &&
|
||||
!$calls[$id]->{msg} &&
|
||||
$calls[$id]->{args} ne "void") {
|
||||
print " $calls[$id]->{args} val_$calls[$id]->{args};\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Union of all arg types
|
||||
# ("remote_dispatch_ret.h").
|
||||
elsif ($opt_r) {
|
||||
for ($id = 0 ; $id <= $#calls ; $id++) {
|
||||
if (defined $calls[$id] &&
|
||||
!$calls[$id]->{msg} &&
|
||||
$calls[$id]->{ret} ne "void") {
|
||||
print " $calls[$id]->{ret} val_$calls[$id]->{ret};\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Inside the switch statement, prepare the 'fn', 'args_filter', etc
|
||||
# ("remote_dispatch_table.h").
|
||||
elsif ($opt_t) {
|
||||
for ($id = 0 ; $id <= $#calls ; $id++) {
|
||||
if (defined $calls[$id] && !$calls[$id]->{msg}) {
|
||||
print "{ /* $calls[$id]->{ProcName} => $id */\n";
|
||||
print " .fn = (dispatch_fn) remoteDispatch$calls[$id]->{ProcName},\n";
|
||||
if ($calls[$id]->{args} ne "void") {
|
||||
print " .args_filter = (xdrproc_t) xdr_$calls[$id]->{args},\n";
|
||||
} else {
|
||||
print " .args_filter = (xdrproc_t) xdr_void,\n";
|
||||
}
|
||||
if ($calls[$id]->{ret} ne "void") {
|
||||
print " .ret_filter = (xdrproc_t) xdr_$calls[$id]->{ret},\n";
|
||||
} else {
|
||||
print " .ret_filter = (xdrproc_t) xdr_void,\n";
|
||||
}
|
||||
print "},\n";
|
||||
} else {
|
||||
if ($calls[$id]->{msg}) {
|
||||
print "{ /* Async event $calls[$id]->{ProcName} => $id */\n";
|
||||
} else {
|
||||
print "{ /* (unused) => $id */\n";
|
||||
}
|
||||
print " .fn = NULL,\n";
|
||||
print " .args_filter = (xdrproc_t) xdr_void,\n";
|
||||
print " .ret_filter = (xdrproc_t) xdr_void,\n";
|
||||
print "},\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
607
daemon/stream.c
Normal file
607
daemon/stream.c
Normal file
@ -0,0 +1,607 @@
|
||||
/*
|
||||
* stream.c: APIs for managing client streams
|
||||
*
|
||||
* Copyright (C) 2009 Red Hat, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* Author: Daniel P. Berrange <berrange@redhat.com>
|
||||
*/
|
||||
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include "stream.h"
|
||||
#include "memory.h"
|
||||
#include "dispatch.h"
|
||||
#include "logging.h"
|
||||
|
||||
static int
|
||||
remoteStreamHandleWrite(struct qemud_client *client,
|
||||
struct qemud_client_stream *stream);
|
||||
static int
|
||||
remoteStreamHandleRead(struct qemud_client *client,
|
||||
struct qemud_client_stream *stream);
|
||||
static int
|
||||
remoteStreamHandleFinish(struct qemud_client *client,
|
||||
struct qemud_client_stream *stream,
|
||||
struct qemud_client_message *msg);
|
||||
static int
|
||||
remoteStreamHandleAbort(struct qemud_client *client,
|
||||
struct qemud_client_stream *stream,
|
||||
struct qemud_client_message *msg);
|
||||
|
||||
|
||||
|
||||
static void
|
||||
remoteStreamUpdateEvents(struct qemud_client_stream *stream)
|
||||
{
|
||||
int newEvents = 0;
|
||||
if (stream->rx)
|
||||
newEvents |= VIR_STREAM_EVENT_WRITABLE;
|
||||
if (stream->tx && !stream->recvEOF)
|
||||
newEvents |= VIR_STREAM_EVENT_READABLE;
|
||||
|
||||
virStreamEventUpdateCallback(stream->st, newEvents);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Callback that gets invoked when a stream becomes writable/readable
|
||||
*/
|
||||
static void
|
||||
remoteStreamEvent(virStreamPtr st, int events, void *opaque)
|
||||
{
|
||||
struct qemud_client *client = opaque;
|
||||
struct qemud_client_stream *stream;
|
||||
|
||||
/* XXX sub-optimal - we really should be taking the server lock
|
||||
* first, but we have no handle to the server object
|
||||
* We're lucky to get away with it for now, due to this callback
|
||||
* executing in the main thread, but this should really be fixed
|
||||
*/
|
||||
virMutexLock(&client->lock);
|
||||
|
||||
stream = remoteFindClientStream(client, st);
|
||||
|
||||
if (!stream) {
|
||||
VIR_WARN("event for client=%p stream st=%p, but missing stream state", client, st);
|
||||
virStreamEventRemoveCallback(st);
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
DEBUG("st=%p events=%d", st, events);
|
||||
|
||||
if (events & VIR_STREAM_EVENT_WRITABLE) {
|
||||
if (remoteStreamHandleWrite(client, stream) < 0) {
|
||||
remoteRemoveClientStream(client, stream);
|
||||
qemudDispatchClientFailure(client);
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
|
||||
if (!stream->recvEOF &&
|
||||
(events & (VIR_STREAM_EVENT_READABLE | VIR_STREAM_EVENT_HANGUP))) {
|
||||
events = events & ~(VIR_STREAM_EVENT_READABLE | VIR_STREAM_EVENT_HANGUP);
|
||||
if (remoteStreamHandleRead(client, stream) < 0) {
|
||||
remoteRemoveClientStream(client, stream);
|
||||
qemudDispatchClientFailure(client);
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
|
||||
if (!stream->closed &&
|
||||
(events & (VIR_STREAM_EVENT_ERROR | VIR_STREAM_EVENT_HANGUP))) {
|
||||
int ret;
|
||||
remote_error rerr;
|
||||
memset(&rerr, 0, sizeof rerr);
|
||||
stream->closed = 1;
|
||||
virStreamAbort(stream->st);
|
||||
if (events & VIR_STREAM_EVENT_HANGUP)
|
||||
remoteDispatchFormatError(&rerr, "%s", _("stream had unexpected termination"));
|
||||
else
|
||||
remoteDispatchFormatError(&rerr, "%s", _("stream had I/O failure"));
|
||||
ret = remoteSerializeStreamError(client, &rerr, stream->procedure, stream->serial);
|
||||
remoteRemoveClientStream(client, stream);
|
||||
if (ret < 0)
|
||||
qemudDispatchClientFailure(client);
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (stream->closed) {
|
||||
remoteRemoveClientStream(client, stream);
|
||||
} else {
|
||||
remoteStreamUpdateEvents(stream);
|
||||
}
|
||||
|
||||
cleanup:
|
||||
virMutexUnlock(&client->lock);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @client: a locked client object
|
||||
*
|
||||
* Invoked by the main loop when filtering incoming messages.
|
||||
*
|
||||
* Returns 1 if the message was processed, 0 if skipped,
|
||||
* -1 on fatal client error
|
||||
*/
|
||||
static int
|
||||
remoteStreamFilter(struct qemud_client *client,
|
||||
struct qemud_client_message *msg, void *opaque)
|
||||
{
|
||||
struct qemud_client_stream *stream = opaque;
|
||||
|
||||
if (msg->hdr.serial == stream->serial &&
|
||||
msg->hdr.proc == stream->procedure &&
|
||||
msg->hdr.type == REMOTE_STREAM) {
|
||||
DEBUG("Incoming rx=%p serial=%d proc=%d status=%d",
|
||||
stream->rx, msg->hdr.proc, msg->hdr.serial, msg->hdr.status);
|
||||
|
||||
/* If there are queued packets, we need to queue all further
|
||||
* messages, since they must be processed strictly in order.
|
||||
* If there are no queued packets, then OK/ERROR messages
|
||||
* should be processed immediately. Data packets are still
|
||||
* queued to only be processed when the stream is marked as
|
||||
* writable.
|
||||
*/
|
||||
if (stream->rx) {
|
||||
qemudClientMessageQueuePush(&stream->rx, msg);
|
||||
remoteStreamUpdateEvents(stream);
|
||||
} else {
|
||||
int ret = 0;
|
||||
switch (msg->hdr.status) {
|
||||
case REMOTE_OK:
|
||||
ret = remoteStreamHandleFinish(client, stream, msg);
|
||||
if (ret == 0)
|
||||
qemudClientMessageRelease(client, msg);
|
||||
break;
|
||||
|
||||
case REMOTE_CONTINUE:
|
||||
qemudClientMessageQueuePush(&stream->rx, msg);
|
||||
remoteStreamUpdateEvents(stream);
|
||||
break;
|
||||
|
||||
case REMOTE_ERROR:
|
||||
default:
|
||||
ret = remoteStreamHandleAbort(client, stream, msg);
|
||||
if (ret == 0)
|
||||
qemudClientMessageRelease(client, msg);
|
||||
break;
|
||||
}
|
||||
|
||||
if (ret < 0)
|
||||
return -1;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @conn: a connection object to associate the stream with
|
||||
* @hdr: the method call to associate with the stram
|
||||
*
|
||||
* Creates a new stream for this conn
|
||||
*
|
||||
* Returns a new stream object, or NULL upon OOM
|
||||
*/
|
||||
struct qemud_client_stream *
|
||||
remoteCreateClientStream(virConnectPtr conn,
|
||||
remote_message_header *hdr)
|
||||
{
|
||||
struct qemud_client_stream *stream;
|
||||
|
||||
DEBUG("proc=%d serial=%d", hdr->proc, hdr->serial);
|
||||
|
||||
if (VIR_ALLOC(stream) < 0)
|
||||
return NULL;
|
||||
|
||||
stream->procedure = hdr->proc;
|
||||
stream->serial = hdr->serial;
|
||||
|
||||
stream->st = virStreamNew(conn, VIR_STREAM_NONBLOCK);
|
||||
if (!stream->st) {
|
||||
VIR_FREE(stream);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
stream->filter.query = remoteStreamFilter;
|
||||
stream->filter.opaque = stream;
|
||||
|
||||
return stream;
|
||||
}
|
||||
|
||||
/*
|
||||
* @stream: an unused client stream
|
||||
*
|
||||
* Frees the memory associated with this inactive client
|
||||
* stream
|
||||
*/
|
||||
void remoteFreeClientStream(struct qemud_client *client,
|
||||
struct qemud_client_stream *stream)
|
||||
{
|
||||
struct qemud_client_message *msg;
|
||||
|
||||
if (!stream)
|
||||
return;
|
||||
|
||||
DEBUG("proc=%d serial=%d", stream->procedure, stream->serial);
|
||||
|
||||
msg = stream->rx;
|
||||
while (msg) {
|
||||
struct qemud_client_message *tmp = msg->next;
|
||||
qemudClientMessageRelease(client, msg);
|
||||
msg = tmp;
|
||||
}
|
||||
|
||||
virStreamFree(stream->st);
|
||||
VIR_FREE(stream);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @client: a locked client to add the stream to
|
||||
* @stream: a stream to add
|
||||
*/
|
||||
int remoteAddClientStream(struct qemud_client *client,
|
||||
struct qemud_client_stream *stream,
|
||||
int transmit)
|
||||
{
|
||||
struct qemud_client_stream *tmp = client->streams;
|
||||
|
||||
DEBUG("client=%p proc=%d serial=%d", client, stream->procedure, stream->serial);
|
||||
|
||||
if (virStreamEventAddCallback(stream->st, 0,
|
||||
remoteStreamEvent, client, NULL) < 0)
|
||||
return -1;
|
||||
|
||||
if (tmp) {
|
||||
while (tmp->next)
|
||||
tmp = tmp->next;
|
||||
tmp->next = stream;
|
||||
} else {
|
||||
client->streams = stream;
|
||||
}
|
||||
|
||||
stream->filter.next = client->filters;
|
||||
client->filters = &stream->filter;
|
||||
|
||||
if (transmit)
|
||||
stream->tx = 1;
|
||||
|
||||
remoteStreamUpdateEvents(stream);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @client: a locked client object
|
||||
* @procedure: procedure associated with the stream
|
||||
* @serial: serial number associated with the stream
|
||||
*
|
||||
* Finds a existing active stream
|
||||
*
|
||||
* Returns a stream object matching the procedure+serial number, or NULL
|
||||
*/
|
||||
struct qemud_client_stream *
|
||||
remoteFindClientStream(struct qemud_client *client,
|
||||
virStreamPtr st)
|
||||
{
|
||||
struct qemud_client_stream *stream = client->streams;
|
||||
|
||||
while (stream) {
|
||||
if (stream->st == st)
|
||||
return stream;
|
||||
stream = stream->next;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @client: a locked client object
|
||||
* @stream: an inactive, closed stream object
|
||||
*
|
||||
* Removes a stream from the list of active streams for the client
|
||||
*
|
||||
* Returns 0 if the stream was removd, -1 if it doesn't exist
|
||||
*/
|
||||
int
|
||||
remoteRemoveClientStream(struct qemud_client *client,
|
||||
struct qemud_client_stream *stream)
|
||||
{
|
||||
DEBUG("client=%p proc=%d serial=%d", client, stream->procedure, stream->serial);
|
||||
|
||||
struct qemud_client_stream *curr = client->streams;
|
||||
struct qemud_client_stream *prev = NULL;
|
||||
struct qemud_client_filter *filter = NULL;
|
||||
|
||||
if (client->filters == &stream->filter) {
|
||||
client->filters = client->filters->next;
|
||||
} else {
|
||||
filter = client->filters;
|
||||
while (filter) {
|
||||
if (filter->next == &stream->filter) {
|
||||
filter->next = filter->next->next;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!stream->closed)
|
||||
virStreamAbort(stream->st);
|
||||
|
||||
while (curr) {
|
||||
if (curr == stream) {
|
||||
if (prev)
|
||||
prev->next = curr->next;
|
||||
else
|
||||
client->streams = curr->next;
|
||||
remoteFreeClientStream(client, stream);
|
||||
return 0;
|
||||
}
|
||||
prev = curr;
|
||||
curr = curr->next;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Returns:
|
||||
* -1 if fatal error occurred
|
||||
* 0 if message was fully processed
|
||||
* 1 if message is still being processed
|
||||
*/
|
||||
static int
|
||||
remoteStreamHandleWriteData(struct qemud_client *client,
|
||||
struct qemud_client_stream *stream,
|
||||
struct qemud_client_message *msg)
|
||||
{
|
||||
remote_error rerr;
|
||||
int ret;
|
||||
|
||||
DEBUG("stream=%p proc=%d serial=%d len=%d offset=%d",
|
||||
stream, msg->hdr.proc, msg->hdr.serial, msg->bufferLength, msg->bufferOffset);
|
||||
|
||||
memset(&rerr, 0, sizeof rerr);
|
||||
|
||||
ret = virStreamSend(stream->st,
|
||||
msg->buffer + msg->bufferOffset,
|
||||
msg->bufferLength - msg->bufferOffset);
|
||||
|
||||
if (ret > 0) {
|
||||
msg->bufferOffset += ret;
|
||||
|
||||
/* Partial write, so indicate we have more todo later */
|
||||
if (msg->bufferOffset < msg->bufferLength)
|
||||
return 1;
|
||||
} else if (ret == -2) {
|
||||
/* Blocking, so indicate we have more todo later */
|
||||
return 1;
|
||||
} else {
|
||||
VIR_INFO0("Stream send failed");
|
||||
stream->closed = 1;
|
||||
remoteDispatchConnError(&rerr, client->conn);
|
||||
return remoteSerializeReplyError(client, &rerr, &msg->hdr);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Process an finish handshake from the client.
|
||||
*
|
||||
* Returns a REMOTE_OK confirmation if successful, or a REMOTE_ERROR
|
||||
* if there was a stream error
|
||||
*
|
||||
* Returns 0 if successfully sent RPC reply, -1 upon fatal error
|
||||
*/
|
||||
static int
|
||||
remoteStreamHandleFinish(struct qemud_client *client,
|
||||
struct qemud_client_stream *stream,
|
||||
struct qemud_client_message *msg)
|
||||
{
|
||||
remote_error rerr;
|
||||
int ret;
|
||||
|
||||
DEBUG("stream=%p proc=%d serial=%d",
|
||||
stream, msg->hdr.proc, msg->hdr.serial);
|
||||
|
||||
memset(&rerr, 0, sizeof rerr);
|
||||
|
||||
stream->closed = 1;
|
||||
ret = virStreamFinish(stream->st);
|
||||
|
||||
if (ret < 0) {
|
||||
remoteDispatchConnError(&rerr, client->conn);
|
||||
return remoteSerializeReplyError(client, &rerr, &msg->hdr);
|
||||
} else {
|
||||
/* Send zero-length confirm */
|
||||
if (remoteSendStreamData(client, stream, NULL, 0) < 0)
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Process an abort request from the client.
|
||||
*
|
||||
* Returns 0 if successfully aborted, -1 upon error
|
||||
*/
|
||||
static int
|
||||
remoteStreamHandleAbort(struct qemud_client *client,
|
||||
struct qemud_client_stream *stream,
|
||||
struct qemud_client_message *msg)
|
||||
{
|
||||
remote_error rerr;
|
||||
|
||||
DEBUG("stream=%p proc=%d serial=%d",
|
||||
stream, msg->hdr.proc, msg->hdr.serial);
|
||||
|
||||
memset(&rerr, 0, sizeof rerr);
|
||||
|
||||
stream->closed = 1;
|
||||
virStreamAbort(stream->st);
|
||||
|
||||
if (msg->hdr.status == REMOTE_ERROR)
|
||||
remoteDispatchFormatError(&rerr, "%s", _("stream aborted at client request"));
|
||||
else {
|
||||
VIR_WARN("unexpected stream status %d", msg->hdr.status);
|
||||
remoteDispatchFormatError(&rerr, _("stream aborted with unexpected status %d"),
|
||||
msg->hdr.status);
|
||||
}
|
||||
|
||||
return remoteSerializeReplyError(client, &rerr, &msg->hdr);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Called when the stream is signalled has being able to accept
|
||||
* data writes. Will process all pending incoming messages
|
||||
* until they're all gone, or I/O blocks
|
||||
*
|
||||
* Returns 0 on success, or -1 upon fatal error
|
||||
*/
|
||||
static int
|
||||
remoteStreamHandleWrite(struct qemud_client *client,
|
||||
struct qemud_client_stream *stream)
|
||||
{
|
||||
struct qemud_client_message *msg, *tmp;
|
||||
|
||||
DEBUG("stream=%p", stream);
|
||||
|
||||
msg = stream->rx;
|
||||
while (msg && !stream->closed) {
|
||||
int ret;
|
||||
switch (msg->hdr.status) {
|
||||
case REMOTE_OK:
|
||||
ret = remoteStreamHandleFinish(client, stream, msg);
|
||||
break;
|
||||
|
||||
case REMOTE_CONTINUE:
|
||||
ret = remoteStreamHandleWriteData(client, stream, msg);
|
||||
break;
|
||||
|
||||
case REMOTE_ERROR:
|
||||
default:
|
||||
ret = remoteStreamHandleAbort(client, stream, msg);
|
||||
break;
|
||||
}
|
||||
|
||||
if (ret == 0)
|
||||
qemudClientMessageQueueServe(&stream->rx);
|
||||
else if (ret < 0)
|
||||
return -1;
|
||||
else
|
||||
break; /* still processing data */
|
||||
|
||||
tmp = msg->next;
|
||||
qemudClientMessageRelease(client, msg);
|
||||
msg = tmp;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Invoked when a stream is signalled as having data
|
||||
* available to read. This reads upto one message
|
||||
* worth of data, and then queues that for transmission
|
||||
* to the client.
|
||||
*
|
||||
* Returns 0 if data was queued for TX, or a error RPC
|
||||
* was sent, or -1 on fatal error, indicating client should
|
||||
* be killed
|
||||
*/
|
||||
static int
|
||||
remoteStreamHandleRead(struct qemud_client *client,
|
||||
struct qemud_client_stream *stream)
|
||||
{
|
||||
char *buffer;
|
||||
size_t bufferLen = REMOTE_MESSAGE_PAYLOAD_MAX;
|
||||
int ret;
|
||||
|
||||
DEBUG("stream=%p", stream);
|
||||
|
||||
/* Shouldn't ever be called unless we're marked able to
|
||||
* transmit, but doesn't hurt to check */
|
||||
if (!stream->tx)
|
||||
return 0;
|
||||
|
||||
if (VIR_ALLOC_N(buffer, bufferLen) < 0)
|
||||
return -1;
|
||||
|
||||
ret = virStreamRecv(stream->st, buffer, bufferLen);
|
||||
if (ret == -2) {
|
||||
/* Should never get this, since we're only called when we know
|
||||
* we're readable, but hey things change... */
|
||||
ret = 0;
|
||||
} else if (ret < 0) {
|
||||
remote_error rerr;
|
||||
memset(&rerr, 0, sizeof rerr);
|
||||
remoteDispatchConnError(&rerr, NULL);
|
||||
|
||||
ret = remoteSerializeStreamError(client, &rerr, stream->procedure, stream->serial);
|
||||
} else {
|
||||
stream->tx = 0;
|
||||
if (ret == 0)
|
||||
stream->recvEOF = 1;
|
||||
ret = remoteSendStreamData(client, stream, buffer, ret);
|
||||
}
|
||||
|
||||
VIR_FREE(buffer);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Invoked when an outgoing data packet message has been fully sent.
|
||||
* This simply re-enables TX of further data.
|
||||
*
|
||||
* The idea is to stop the daemon growing without bound due to
|
||||
* fast stream, but slow client
|
||||
*/
|
||||
void
|
||||
remoteStreamMessageFinished(struct qemud_client *client,
|
||||
struct qemud_client_message *msg)
|
||||
{
|
||||
struct qemud_client_stream *stream = client->streams;
|
||||
|
||||
while (stream) {
|
||||
if (msg->hdr.proc == stream->procedure &&
|
||||
msg->hdr.serial == stream->serial)
|
||||
break;
|
||||
stream = stream->next;
|
||||
}
|
||||
|
||||
DEBUG("Message client=%p stream=%p proc=%d serial=%d", client, stream, msg->hdr.proc, msg->hdr.serial);
|
||||
|
||||
if (stream) {
|
||||
stream->tx = 1;
|
||||
remoteStreamUpdateEvents(stream);
|
||||
}
|
||||
}
|
||||
54
daemon/stream.h
Normal file
54
daemon/stream.h
Normal file
@ -0,0 +1,54 @@
|
||||
/*
|
||||
* stream.h: APIs for managing client streams
|
||||
*
|
||||
* Copyright (C) 2009 Red Hat, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* Author: Daniel P. Berrange <berrange@redhat.com>
|
||||
*/
|
||||
|
||||
|
||||
#ifndef __LIBVIRTD_STREAM_H__
|
||||
# define __LIBVIRTD_STREAM_H__
|
||||
|
||||
# include "libvirtd.h"
|
||||
|
||||
|
||||
|
||||
struct qemud_client_stream *
|
||||
remoteCreateClientStream(virConnectPtr conn,
|
||||
remote_message_header *hdr);
|
||||
|
||||
void remoteFreeClientStream(struct qemud_client *client,
|
||||
struct qemud_client_stream *stream);
|
||||
|
||||
int remoteAddClientStream(struct qemud_client *client,
|
||||
struct qemud_client_stream *stream,
|
||||
int transmit);
|
||||
|
||||
struct qemud_client_stream *
|
||||
remoteFindClientStream(struct qemud_client *client,
|
||||
virStreamPtr stream);
|
||||
|
||||
int
|
||||
remoteRemoveClientStream(struct qemud_client *client,
|
||||
struct qemud_client_stream *stream);
|
||||
|
||||
void
|
||||
remoteStreamMessageFinished(struct qemud_client *client,
|
||||
struct qemud_client_message *msg);
|
||||
|
||||
#endif /* __LIBVIRTD_STREAM_H__ */
|
||||
545
daemon/test_libvirtd.aug
Normal file
545
daemon/test_libvirtd.aug
Normal file
@ -0,0 +1,545 @@
|
||||
module Test_libvirtd =
|
||||
let conf = "# Master libvirt daemon configuration file
|
||||
#
|
||||
# For further information consult http://libvirt.org/format.html
|
||||
|
||||
|
||||
#################################################################
|
||||
#
|
||||
# Network connectivity controls
|
||||
#
|
||||
|
||||
# Flag listening for secure TLS connections on the public TCP/IP port.
|
||||
# NB, must pass the --listen flag to the libvirtd process for this to
|
||||
# have any effect.
|
||||
#
|
||||
# It is necessary to setup a CA and issue server certificates before
|
||||
# using this capability.
|
||||
#
|
||||
# This is enabled by default, uncomment this to disable it
|
||||
listen_tls = 0
|
||||
|
||||
# Listen for unencrypted TCP connections on the public TCP/IP port.
|
||||
# NB, must pass the --listen flag to the libvirtd process for this to
|
||||
# have any effect.
|
||||
#
|
||||
# Using the TCP socket requires SASL authentication by default. Only
|
||||
# SASL mechanisms which support data encryption are allowed. This is
|
||||
# DIGEST_MD5 and GSSAPI (Kerberos5)
|
||||
#
|
||||
# This is disabled by default, uncomment this to enable it.
|
||||
listen_tcp = 1
|
||||
|
||||
|
||||
|
||||
# Override the port for accepting secure TLS connections
|
||||
# This can be a port number, or service name
|
||||
#
|
||||
tls_port = \"16514\"
|
||||
|
||||
# Override the port for accepting insecure TCP connections
|
||||
# This can be a port number, or service name
|
||||
#
|
||||
tcp_port = \"16509\"
|
||||
|
||||
|
||||
# Override the default configuration which binds to all network
|
||||
# interfaces. This can be a numeric IPv4/6 address, or hostname
|
||||
#
|
||||
listen_addr = \"192.168.0.1\"
|
||||
|
||||
|
||||
# Flag toggling mDNS advertizement of the libvirt service.
|
||||
#
|
||||
# Alternatively can disable for all services on a host by
|
||||
# stopping the Avahi daemon
|
||||
#
|
||||
# This is enabled by default, uncomment this to disable it
|
||||
mdns_adv = 0
|
||||
|
||||
# Override the default mDNS advertizement name. This must be
|
||||
# unique on the immediate broadcast network.
|
||||
#
|
||||
# The default is \"Virtualization Host HOSTNAME\", where HOSTNAME
|
||||
# is subsituted for the short hostname of the machine (without domain)
|
||||
#
|
||||
mdns_name = \"Virtualization Host Joe Demo\"
|
||||
|
||||
|
||||
#################################################################
|
||||
#
|
||||
# UNIX socket access controls
|
||||
#
|
||||
|
||||
# Set the UNIX domain socket group ownership. This can be used to
|
||||
# allow a 'trusted' set of users access to management capabilities
|
||||
# without becoming root.
|
||||
#
|
||||
# This is restricted to 'root' by default.
|
||||
unix_sock_group = \"libvirt\"
|
||||
|
||||
# Set the UNIX socket permissions for the R/O socket. This is used
|
||||
# for monitoring VM status only
|
||||
#
|
||||
# Default allows any user. If setting group ownership may want to
|
||||
# restrict this to:
|
||||
unix_sock_ro_perms = \"0777\"
|
||||
|
||||
# Set the UNIX socket permissions for the R/W socket. This is used
|
||||
# for full management of VMs
|
||||
#
|
||||
# Default allows only root. If PolicyKit is enabled on the socket,
|
||||
# the default will change to allow everyone (eg, 0777)
|
||||
#
|
||||
# If not using PolicyKit and setting group ownership for access
|
||||
# control then you may want to relax this to:
|
||||
unix_sock_rw_perms = \"0770\"
|
||||
|
||||
|
||||
|
||||
#################################################################
|
||||
#
|
||||
# Authentication.
|
||||
#
|
||||
# - none: do not perform auth checks. If you can connect to the
|
||||
# socket you are allowed. This is suitable if there are
|
||||
# restrictions on connecting to the socket (eg, UNIX
|
||||
# socket permissions), or if there is a lower layer in
|
||||
# the network providing auth (eg, TLS/x509 certificates)
|
||||
#
|
||||
# - sasl: use SASL infrastructure. The actual auth scheme is then
|
||||
# controlled from /etc/sasl2/libvirt.conf. For the TCP
|
||||
# socket only GSSAPI & DIGEST-MD5 mechanisms will be used.
|
||||
# For non-TCP or TLS sockets, any scheme is allowed.
|
||||
#
|
||||
# - polkit: use PolicyKit to authenticate. This is only suitable
|
||||
# for use on the UNIX sockets. The default policy will
|
||||
# require a user to supply their own password to gain
|
||||
# full read/write access (aka sudo like), while anyone
|
||||
# is allowed read/only access.
|
||||
#
|
||||
# Set an authentication scheme for UNIX read-only sockets
|
||||
# By default socket permissions allow anyone to connect
|
||||
#
|
||||
# To restrict monitoring of domains you may wish to enable
|
||||
# an authentication mechanism here
|
||||
auth_unix_ro = \"none\"
|
||||
|
||||
# Set an authentication scheme for UNIX read-write sockets
|
||||
# By default socket permissions only allow root. If PolicyKit
|
||||
# support was compiled into libvirt, the default will be to
|
||||
# use 'polkit' auth.
|
||||
#
|
||||
# If the unix_sock_rw_perms are changed you may wish to enable
|
||||
# an authentication mechanism here
|
||||
auth_unix_rw = \"none\"
|
||||
|
||||
# Change the authentication scheme for TCP sockets.
|
||||
#
|
||||
# If you don't enable SASL, then all TCP traffic is cleartext.
|
||||
# Don't do this outside of a dev/test scenario. For real world
|
||||
# use, always enable SASL and use the GSSAPI or DIGEST-MD5
|
||||
# mechanism in /etc/sasl2/libvirt.conf
|
||||
auth_tcp = \"sasl\"
|
||||
|
||||
# Change the authentication scheme for TLS sockets.
|
||||
#
|
||||
# TLS sockets already have encryption provided by the TLS
|
||||
# layer, and limited authentication is done by certificates
|
||||
#
|
||||
# It is possible to make use of any SASL authentication
|
||||
# mechanism as well, by using 'sasl' for this option
|
||||
auth_tls = \"none\"
|
||||
|
||||
|
||||
|
||||
#################################################################
|
||||
#
|
||||
# TLS x509 certificate configuration
|
||||
#
|
||||
|
||||
|
||||
# Override the default server key file path
|
||||
#
|
||||
key_file = \"/etc/pki/libvirt/private/serverkey.pem\"
|
||||
|
||||
# Override the default server certificate file path
|
||||
#
|
||||
cert_file = \"/etc/pki/libvirt/servercert.pem\"
|
||||
|
||||
# Override the default CA certificate path
|
||||
#
|
||||
ca_file = \"/etc/pki/CA/cacert.pem\"
|
||||
|
||||
# Specify a certificate revocation list.
|
||||
#
|
||||
# Defaults to not using a CRL, uncomment to enable it
|
||||
crl_file = \"/etc/pki/CA/crl.pem\"
|
||||
|
||||
|
||||
|
||||
#################################################################
|
||||
#
|
||||
# Authorization controls
|
||||
#
|
||||
|
||||
|
||||
# Flag to disable verification of client certificates
|
||||
#
|
||||
# Client certificate verification is the primary authentication mechanism.
|
||||
# Any client which does not present a certificate signed by the CA
|
||||
# will be rejected.
|
||||
#
|
||||
# Default is to always verify. Uncommenting this will disable
|
||||
# verification - make sure an IP whitelist is set
|
||||
tls_no_verify_certificate = 1
|
||||
|
||||
|
||||
# A whitelist of allowed x509 Distinguished Names
|
||||
# This list may contain wildcards such as
|
||||
#
|
||||
# \"C=GB,ST=London,L=London,O=Red Hat,CN=*\"
|
||||
#
|
||||
# See the POSIX fnmatch function for the format of the wildcards.
|
||||
#
|
||||
# NB If this is an empty list, no client can connect, so comment out
|
||||
# entirely rather than using empty list to disable these checks
|
||||
#
|
||||
# By default, no DN's are checked
|
||||
tls_allowed_dn_list = [\"DN1\", \"DN2\"]
|
||||
|
||||
|
||||
# A whitelist of allowed SASL usernames. The format for usernames
|
||||
# depends on the SASL authentication mechanism. Kerberos usernames
|
||||
# look like username@REALM
|
||||
#
|
||||
# This list may contain wildcards such as
|
||||
#
|
||||
# \"*@EXAMPLE.COM\"
|
||||
#
|
||||
# See the POSIX fnmatch function for the format of the wildcards.
|
||||
#
|
||||
# NB If this is an empty list, no client can connect, so comment out
|
||||
# entirely rather than using empty list to disable these checks
|
||||
#
|
||||
# By default, no Username's are checked
|
||||
sasl_allowed_username_list = [
|
||||
\"joe@EXAMPLE.COM\",
|
||||
\"fred@EXAMPLE.COM\"
|
||||
]
|
||||
|
||||
|
||||
#################################################################
|
||||
#
|
||||
# Processing controls
|
||||
#
|
||||
|
||||
# The maximum number of concurrent client connections to allow
|
||||
# over all sockets combined.
|
||||
max_clients = 20
|
||||
|
||||
|
||||
# The minimum limit sets the number of workers to start up
|
||||
# initially. If the number of active clients exceeds this,
|
||||
# then more threads are spawned, upto max_workers limit.
|
||||
# Typically you'd want max_workers to equal maximum number
|
||||
# of clients allowed
|
||||
min_workers = 5
|
||||
max_workers = 20
|
||||
|
||||
# Total global limit on concurrent RPC calls. Should be
|
||||
# at least as large as max_workers. Beyond this, RPC requests
|
||||
# will be read into memory and queued. This directly impact
|
||||
# memory usage, currently each request requires 256 KB of
|
||||
# memory. So by default upto 5 MB of memory is used
|
||||
max_requests = 20
|
||||
|
||||
# Limit on concurrent requests from a single client
|
||||
# connection. To avoid one client monopolizing the server
|
||||
# this should be a small fraction of the global max_requests
|
||||
# and max_workers parameter
|
||||
max_client_requests = 5
|
||||
|
||||
# Logging level:
|
||||
log_level = 4
|
||||
|
||||
# Logging outputs:
|
||||
log_outputs=\"4:stderr\"
|
||||
|
||||
# Logging filters:
|
||||
log_filters=\"a\"
|
||||
"
|
||||
|
||||
test Libvirtd.lns get conf =
|
||||
{ "#comment" = "Master libvirt daemon configuration file" }
|
||||
{ "#comment" = "" }
|
||||
{ "#comment" = "For further information consult http://libvirt.org/format.html" }
|
||||
{ "#empty" }
|
||||
{ "#empty" }
|
||||
{ "#comment" = "################################################################" }
|
||||
{ "#comment" = "" }
|
||||
{ "#comment" = "Network connectivity controls" }
|
||||
{ "#comment" = "" }
|
||||
{ "#empty" }
|
||||
{ "#comment" = "Flag listening for secure TLS connections on the public TCP/IP port." }
|
||||
{ "#comment" = "NB, must pass the --listen flag to the libvirtd process for this to" }
|
||||
{ "#comment" = "have any effect." }
|
||||
{ "#comment" = "" }
|
||||
{ "#comment" = "It is necessary to setup a CA and issue server certificates before" }
|
||||
{ "#comment" = "using this capability." }
|
||||
{ "#comment" = "" }
|
||||
{ "#comment" = "This is enabled by default, uncomment this to disable it" }
|
||||
{ "listen_tls" = "0" }
|
||||
{ "#empty" }
|
||||
{ "#comment" = "Listen for unencrypted TCP connections on the public TCP/IP port." }
|
||||
{ "#comment" = "NB, must pass the --listen flag to the libvirtd process for this to" }
|
||||
{ "#comment" = "have any effect." }
|
||||
{ "#comment" = "" }
|
||||
{ "#comment" = "Using the TCP socket requires SASL authentication by default. Only" }
|
||||
{ "#comment" = "SASL mechanisms which support data encryption are allowed. This is" }
|
||||
{ "#comment" = "DIGEST_MD5 and GSSAPI (Kerberos5)" }
|
||||
{ "#comment" = "" }
|
||||
{ "#comment" = "This is disabled by default, uncomment this to enable it." }
|
||||
{ "listen_tcp" = "1" }
|
||||
{ "#empty" }
|
||||
{ "#empty" }
|
||||
{ "#empty" }
|
||||
{ "#comment" = "Override the port for accepting secure TLS connections" }
|
||||
{ "#comment" = "This can be a port number, or service name" }
|
||||
{ "#comment" = "" }
|
||||
{ "tls_port" = "16514" }
|
||||
{ "#empty" }
|
||||
{ "#comment" = "Override the port for accepting insecure TCP connections" }
|
||||
{ "#comment" = "This can be a port number, or service name" }
|
||||
{ "#comment" = "" }
|
||||
{ "tcp_port" = "16509" }
|
||||
{ "#empty" }
|
||||
{ "#empty" }
|
||||
{ "#comment" = "Override the default configuration which binds to all network" }
|
||||
{ "#comment" = "interfaces. This can be a numeric IPv4/6 address, or hostname" }
|
||||
{ "#comment" = "" }
|
||||
{ "listen_addr" = "192.168.0.1" }
|
||||
{ "#empty" }
|
||||
{ "#empty" }
|
||||
{ "#comment" = "Flag toggling mDNS advertizement of the libvirt service." }
|
||||
{ "#comment" = "" }
|
||||
{ "#comment" = "Alternatively can disable for all services on a host by" }
|
||||
{ "#comment" = "stopping the Avahi daemon" }
|
||||
{ "#comment" = "" }
|
||||
{ "#comment" = "This is enabled by default, uncomment this to disable it" }
|
||||
{ "mdns_adv" = "0" }
|
||||
{ "#empty" }
|
||||
{ "#comment" = "Override the default mDNS advertizement name. This must be" }
|
||||
{ "#comment" = "unique on the immediate broadcast network." }
|
||||
{ "#comment" = "" }
|
||||
{ "#comment" = "The default is \"Virtualization Host HOSTNAME\", where HOSTNAME" }
|
||||
{ "#comment" = "is subsituted for the short hostname of the machine (without domain)" }
|
||||
{ "#comment" = "" }
|
||||
{ "mdns_name" = "Virtualization Host Joe Demo" }
|
||||
{ "#empty" }
|
||||
{ "#empty" }
|
||||
{ "#comment" = "################################################################" }
|
||||
{ "#comment" = "" }
|
||||
{ "#comment" = "UNIX socket access controls" }
|
||||
{ "#comment" = "" }
|
||||
{ "#empty" }
|
||||
{ "#comment" = "Set the UNIX domain socket group ownership. This can be used to" }
|
||||
{ "#comment" = "allow a 'trusted' set of users access to management capabilities" }
|
||||
{ "#comment" = "without becoming root." }
|
||||
{ "#comment" = "" }
|
||||
{ "#comment" = "This is restricted to 'root' by default." }
|
||||
{ "unix_sock_group" = "libvirt" }
|
||||
{ "#empty" }
|
||||
{ "#comment" = "Set the UNIX socket permissions for the R/O socket. This is used" }
|
||||
{ "#comment" = "for monitoring VM status only" }
|
||||
{ "#comment" = "" }
|
||||
{ "#comment" = "Default allows any user. If setting group ownership may want to" }
|
||||
{ "#comment" = "restrict this to:" }
|
||||
{ "unix_sock_ro_perms" = "0777" }
|
||||
{ "#empty" }
|
||||
{ "#comment" = "Set the UNIX socket permissions for the R/W socket. This is used" }
|
||||
{ "#comment" = "for full management of VMs" }
|
||||
{ "#comment" = "" }
|
||||
{ "#comment" = "Default allows only root. If PolicyKit is enabled on the socket," }
|
||||
{ "#comment" = "the default will change to allow everyone (eg, 0777)" }
|
||||
{ "#comment" = "" }
|
||||
{ "#comment" = "If not using PolicyKit and setting group ownership for access" }
|
||||
{ "#comment" = "control then you may want to relax this to:" }
|
||||
{ "unix_sock_rw_perms" = "0770" }
|
||||
{ "#empty" }
|
||||
{ "#empty" }
|
||||
{ "#empty" }
|
||||
{ "#comment" = "################################################################" }
|
||||
{ "#comment" = "" }
|
||||
{ "#comment" = "Authentication." }
|
||||
{ "#comment" = "" }
|
||||
{ "#comment" = "- none: do not perform auth checks. If you can connect to the" }
|
||||
{ "#comment" = "socket you are allowed. This is suitable if there are" }
|
||||
{ "#comment" = "restrictions on connecting to the socket (eg, UNIX" }
|
||||
{ "#comment" = "socket permissions), or if there is a lower layer in" }
|
||||
{ "#comment" = "the network providing auth (eg, TLS/x509 certificates)" }
|
||||
{ "#comment" = "" }
|
||||
{ "#comment" = "- sasl: use SASL infrastructure. The actual auth scheme is then" }
|
||||
{ "#comment" = "controlled from /etc/sasl2/libvirt.conf. For the TCP" }
|
||||
{ "#comment" = "socket only GSSAPI & DIGEST-MD5 mechanisms will be used." }
|
||||
{ "#comment" = "For non-TCP or TLS sockets, any scheme is allowed." }
|
||||
{ "#comment" = "" }
|
||||
{ "#comment" = "- polkit: use PolicyKit to authenticate. This is only suitable" }
|
||||
{ "#comment" = "for use on the UNIX sockets. The default policy will" }
|
||||
{ "#comment" = "require a user to supply their own password to gain" }
|
||||
{ "#comment" = "full read/write access (aka sudo like), while anyone" }
|
||||
{ "#comment" = "is allowed read/only access." }
|
||||
{ "#comment" = "" }
|
||||
{ "#comment" = "Set an authentication scheme for UNIX read-only sockets" }
|
||||
{ "#comment" = "By default socket permissions allow anyone to connect" }
|
||||
{ "#comment" = "" }
|
||||
{ "#comment" = "To restrict monitoring of domains you may wish to enable" }
|
||||
{ "#comment" = "an authentication mechanism here" }
|
||||
{ "auth_unix_ro" = "none" }
|
||||
{ "#empty" }
|
||||
{ "#comment" = "Set an authentication scheme for UNIX read-write sockets" }
|
||||
{ "#comment" = "By default socket permissions only allow root. If PolicyKit" }
|
||||
{ "#comment" = "support was compiled into libvirt, the default will be to" }
|
||||
{ "#comment" = "use 'polkit' auth." }
|
||||
{ "#comment" = "" }
|
||||
{ "#comment" = "If the unix_sock_rw_perms are changed you may wish to enable" }
|
||||
{ "#comment" = "an authentication mechanism here" }
|
||||
{ "auth_unix_rw" = "none" }
|
||||
{ "#empty" }
|
||||
{ "#comment" = "Change the authentication scheme for TCP sockets." }
|
||||
{ "#comment" = "" }
|
||||
{ "#comment" = "If you don't enable SASL, then all TCP traffic is cleartext." }
|
||||
{ "#comment" = "Don't do this outside of a dev/test scenario. For real world" }
|
||||
{ "#comment" = "use, always enable SASL and use the GSSAPI or DIGEST-MD5" }
|
||||
{ "#comment" = "mechanism in /etc/sasl2/libvirt.conf" }
|
||||
{ "auth_tcp" = "sasl" }
|
||||
{ "#empty" }
|
||||
{ "#comment" = "Change the authentication scheme for TLS sockets." }
|
||||
{ "#comment" = "" }
|
||||
{ "#comment" = "TLS sockets already have encryption provided by the TLS" }
|
||||
{ "#comment" = "layer, and limited authentication is done by certificates" }
|
||||
{ "#comment" = "" }
|
||||
{ "#comment" = "It is possible to make use of any SASL authentication" }
|
||||
{ "#comment" = "mechanism as well, by using 'sasl' for this option" }
|
||||
{ "auth_tls" = "none" }
|
||||
{ "#empty" }
|
||||
{ "#empty" }
|
||||
{ "#empty" }
|
||||
{ "#comment" = "################################################################" }
|
||||
{ "#comment" = "" }
|
||||
{ "#comment" = "TLS x509 certificate configuration" }
|
||||
{ "#comment" = "" }
|
||||
{ "#empty" }
|
||||
{ "#empty" }
|
||||
{ "#comment" = "Override the default server key file path" }
|
||||
{ "#comment" = "" }
|
||||
{ "key_file" = "/etc/pki/libvirt/private/serverkey.pem" }
|
||||
{ "#empty" }
|
||||
{ "#comment" = "Override the default server certificate file path" }
|
||||
{ "#comment" = "" }
|
||||
{ "cert_file" = "/etc/pki/libvirt/servercert.pem" }
|
||||
{ "#empty" }
|
||||
{ "#comment" = "Override the default CA certificate path" }
|
||||
{ "#comment" = "" }
|
||||
{ "ca_file" = "/etc/pki/CA/cacert.pem" }
|
||||
{ "#empty" }
|
||||
{ "#comment" = "Specify a certificate revocation list." }
|
||||
{ "#comment" = "" }
|
||||
{ "#comment" = "Defaults to not using a CRL, uncomment to enable it" }
|
||||
{ "crl_file" = "/etc/pki/CA/crl.pem" }
|
||||
{ "#empty" }
|
||||
{ "#empty" }
|
||||
{ "#empty" }
|
||||
{ "#comment" = "################################################################" }
|
||||
{ "#comment" = "" }
|
||||
{ "#comment" = "Authorization controls" }
|
||||
{ "#comment" = "" }
|
||||
{ "#empty" }
|
||||
{ "#empty" }
|
||||
{ "#comment" = "Flag to disable verification of client certificates" }
|
||||
{ "#comment" = "" }
|
||||
{ "#comment" = "Client certificate verification is the primary authentication mechanism." }
|
||||
{ "#comment" = "Any client which does not present a certificate signed by the CA" }
|
||||
{ "#comment" = "will be rejected." }
|
||||
{ "#comment" = "" }
|
||||
{ "#comment" = "Default is to always verify. Uncommenting this will disable" }
|
||||
{ "#comment" = "verification - make sure an IP whitelist is set" }
|
||||
{ "tls_no_verify_certificate" = "1" }
|
||||
{ "#empty" }
|
||||
{ "#empty" }
|
||||
{ "#comment" = "A whitelist of allowed x509 Distinguished Names" }
|
||||
{ "#comment" = "This list may contain wildcards such as" }
|
||||
{ "#comment" = "" }
|
||||
{ "#comment" = "\"C=GB,ST=London,L=London,O=Red Hat,CN=*\"" }
|
||||
{ "#comment" = "" }
|
||||
{ "#comment" = "See the POSIX fnmatch function for the format of the wildcards." }
|
||||
{ "#comment" = "" }
|
||||
{ "#comment" = "NB If this is an empty list, no client can connect, so comment out" }
|
||||
{ "#comment" = "entirely rather than using empty list to disable these checks" }
|
||||
{ "#comment" = "" }
|
||||
{ "#comment" = "By default, no DN's are checked" }
|
||||
{ "tls_allowed_dn_list"
|
||||
{ "1" = "DN1"}
|
||||
{ "2" = "DN2"}
|
||||
}
|
||||
{ "#empty" }
|
||||
{ "#empty" }
|
||||
{ "#comment" = "A whitelist of allowed SASL usernames. The format for usernames" }
|
||||
{ "#comment" = "depends on the SASL authentication mechanism. Kerberos usernames" }
|
||||
{ "#comment" = "look like username@REALM" }
|
||||
{ "#comment" = "" }
|
||||
{ "#comment" = "This list may contain wildcards such as" }
|
||||
{ "#comment" = "" }
|
||||
{ "#comment" = "\"*@EXAMPLE.COM\"" }
|
||||
{ "#comment" = "" }
|
||||
{ "#comment" = "See the POSIX fnmatch function for the format of the wildcards." }
|
||||
{ "#comment" = "" }
|
||||
{ "#comment" = "NB If this is an empty list, no client can connect, so comment out" }
|
||||
{ "#comment" = "entirely rather than using empty list to disable these checks" }
|
||||
{ "#comment" = "" }
|
||||
{ "#comment" = "By default, no Username's are checked" }
|
||||
{ "sasl_allowed_username_list"
|
||||
{ "1" = "joe@EXAMPLE.COM" }
|
||||
{ "2" = "fred@EXAMPLE.COM" }
|
||||
}
|
||||
{ "#empty" }
|
||||
{ "#empty" }
|
||||
{ "#comment" = "################################################################"}
|
||||
{ "#comment" = ""}
|
||||
{ "#comment" = "Processing controls"}
|
||||
{ "#comment" = ""}
|
||||
{ "#empty" }
|
||||
{ "#comment" = "The maximum number of concurrent client connections to allow"}
|
||||
{ "#comment" = "over all sockets combined."}
|
||||
{ "max_clients" = "20" }
|
||||
{ "#empty" }
|
||||
{ "#empty" }
|
||||
{ "#comment" = "The minimum limit sets the number of workers to start up"}
|
||||
{ "#comment" = "initially. If the number of active clients exceeds this,"}
|
||||
{ "#comment" = "then more threads are spawned, upto max_workers limit."}
|
||||
{ "#comment" = "Typically you'd want max_workers to equal maximum number"}
|
||||
{ "#comment" = "of clients allowed"}
|
||||
{ "min_workers" = "5" }
|
||||
{ "max_workers" = "20" }
|
||||
{ "#empty" }
|
||||
{ "#comment" = "Total global limit on concurrent RPC calls. Should be" }
|
||||
{ "#comment" = "at least as large as max_workers. Beyond this, RPC requests" }
|
||||
{ "#comment" = "will be read into memory and queued. This directly impact" }
|
||||
{ "#comment" = "memory usage, currently each request requires 256 KB of" }
|
||||
{ "#comment" = "memory. So by default upto 5 MB of memory is used" }
|
||||
{ "max_requests" = "20" }
|
||||
{ "#empty" }
|
||||
{ "#comment" = "Limit on concurrent requests from a single client" }
|
||||
{ "#comment" = "connection. To avoid one client monopolizing the server" }
|
||||
{ "#comment" = "this should be a small fraction of the global max_requests" }
|
||||
{ "#comment" = "and max_workers parameter" }
|
||||
{ "max_client_requests" = "5" }
|
||||
{ "#empty" }
|
||||
{ "#comment" = "Logging level:" }
|
||||
{ "log_level" = "4" }
|
||||
{ "#empty" }
|
||||
{ "#comment" = "Logging outputs:" }
|
||||
{ "log_outputs" = "4:stderr" }
|
||||
{ "#empty" }
|
||||
{ "#comment" = "Logging filters:" }
|
||||
{ "log_filters" = "a" }
|
||||
7
docs/.gitignore
vendored
Normal file
7
docs/.gitignore
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
.memdump
|
||||
apibuild.pyc
|
||||
*.html
|
||||
libvirt-api.xml
|
||||
libvirt-refs.xml
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 495 B |
@ -1,225 +0,0 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /><link rel="stylesheet" type="text/css" href="libvirt.css" /><link rel="SHORTCUT ICON" href="/32favicon.png" /><title>API Alphabetic Index A-V for libvirt</title></head><body><div id="container"><div id="intro"><div id="adjustments"></div><div id="pageHeader"></div><div id="content2"><h1 class="style1">API Alphabetic Index A-V for libvirt</h1><h2 align="center"><a href="APIchunk0.html">A-V</a>
|
||||
<a href="APIchunk1.html">W-c</a>
|
||||
<a href="APIchunk2.html">d-g</a>
|
||||
<a href="APIchunk3.html">h-m</a>
|
||||
<a href="APIchunk4.html">n-r</a>
|
||||
<a href="APIchunk5.html">s-t</a>
|
||||
<a href="APIchunk6.html">u-w</a>
|
||||
<a href="APIchunk7.html">x-z</a>
|
||||
</h2><h2>Letter A:</h2><dl><dt>API</dt><dd><a href="html/libvirt-libvirt.html#VIR_COPY_CPUMAP">VIR_COPY_CPUMAP</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_CPU_MAPLEN">VIR_CPU_MAPLEN</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_CPU_USABLE">VIR_CPU_USABLE</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_UNUSE_CPU">VIR_UNUSE_CPU</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_USE_CPU">VIR_USE_CPU</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
</dd><dt>APIs</dt><dd><a href="html/libvirt-libvirt.html#VIR_COPY_CPUMAP">VIR_COPY_CPUMAP</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_GET_CPUMAP">VIR_GET_CPUMAP</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectOpenReadOnly">virConnectOpenReadOnly</a><br />
|
||||
</dd><dt>After</dt><dd><a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
|
||||
</dd><dt>Attempt</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd></dl><h2>Letter B:</h2><dl><dt>Bytes</dt><dd><a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
</dd></dl><h2>Letter C:</h2><dl><dt>CPU</dt><dd><a href="html/libvirt-libvirt.html#VIR_CPU_MAPLEN">VIR_CPU_MAPLEN</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_UNUSE_CPU">VIR_UNUSE_CPU</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_USE_CPU">VIR_USE_CPU</a><br />
|
||||
<a href="html/libvirt-libvirt.html#_virDomainInfo">_virDomainInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#_virNodeInfo">_virNodeInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#_virVcpuInfo">_virVcpuInfo</a><br />
|
||||
<a href="">cpu</a><br />
|
||||
<a href="">vcpu</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetMaxVcpus">virConnectGetMaxVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetMaxVcpus">virDomainGetMaxVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a><br />
|
||||
</dd><dt>CPU0-7</dt><dd><a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
</dd><dt>CPUs</dt><dd><a href="html/libvirt-libvirt.html#VIR_CPU_MAPLEN">VIR_CPU_MAPLEN</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_NODEINFO_MAXCPUS">VIR_NODEINFO_MAXCPUS</a><br />
|
||||
<a href="html/libvirt-libvirt.html#_virDomainInfo">_virDomainInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#_virNodeInfo">_virNodeInfo</a><br />
|
||||
<a href="">cpu</a><br />
|
||||
<a href="">cpumap</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetMaxVcpus">virConnectGetMaxVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetMaxVcpus">virDomainGetMaxVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetVcpus">virDomainSetVcpus</a><br />
|
||||
</dd><dt>Change</dt><dd><a href="html/libvirt-libvirt.html#virDomainSetSchedulerParameters">virDomainSetSchedulerParameters</a><br />
|
||||
</dd><dt>Collect</dt><dd><a href="html/libvirt-libvirt.html#virConnectListDomains">virConnectListDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListNetworks">virConnectListNetworks</a><br />
|
||||
</dd><dt>Configure</dt><dd><a href="html/libvirt-libvirt.html#virDomainSetAutostart">virDomainSetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkSetAutostart">virNetworkSetAutostart</a><br />
|
||||
</dd><dt>Copy</dt><dd><a href="html/libvirt-virterror.html#virConnCopyLastError">virConnCopyLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virCopyLastError">virCopyLastError</a><br />
|
||||
</dd><dt>Create</dt><dd><a href="html/libvirt-libvirt.html#virDomainAttachDevice">virDomainAttachDevice</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkCreate">virNetworkCreate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkCreateXML">virNetworkCreateXML</a><br />
|
||||
</dd></dl><h2>Letter D:</h2><dl><dt>Daemon</dt><dd><a href="html/libvirt-libvirt.html#virDomainCoreDump">virDomainCoreDump</a><br />
|
||||
</dd><dt>Default</dt><dd><a href="html/libvirt-virterror.html#virDefaultErrorFunc">virDefaultErrorFunc</a><br />
|
||||
</dd><dt>Define</dt><dd><a href="html/libvirt-libvirt.html#virNetworkDefineXML">virNetworkDefineXML</a><br />
|
||||
</dd><dt>Destroy</dt><dd><a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDetachDevice">virDomainDetachDevice</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkDestroy">virNetworkDestroy</a><br />
|
||||
</dd><dt>Domain0</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetMaxMemory">virDomainGetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMaxMemory">virDomainSetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMemory">virDomainSetMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetVcpus">virDomainSetVcpus</a><br />
|
||||
</dd><dt>Domains</dt><dd><a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInterfaceStats">virDomainInterfaceStats</a><br />
|
||||
</dd><dt>Dynamically</dt><dd><a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMaxMemory">virDomainSetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMemory">virDomainSetMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetVcpus">virDomainSetVcpus</a><br />
|
||||
</dd></dl><h2>Letter E:</h2><dl><dt>Each</dt><dd><a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
</dd><dt>Extract</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetInfo">virDomainGetInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNodeGetInfo">virNodeGetInfo</a><br />
|
||||
</dd></dl><h2>Letter F:</h2><dl><dt>Flags</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>For</dt><dd><a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetUUIDString">virDomainGetUUIDString</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetUUIDString">virNetworkGetUUIDString</a><br />
|
||||
</dd><dt>Free</dt><dd><a href="html/libvirt-libvirt.html#virDomainFree">virDomainFree</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkFree">virNetworkFree</a><br />
|
||||
</dd></dl><h2>Letter G:</h2><dl><dt>Get</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetType">virConnectGetType</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetID">virDomainGetID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetName">virDomainGetName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetOSType">virDomainGetOSType</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetSchedulerParameters">virDomainGetSchedulerParameters</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetSchedulerType">virDomainGetSchedulerType</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetUUID">virDomainGetUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetUUIDString">virDomainGetUUIDString</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetName">virNetworkGetName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetUUID">virNetworkGetUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetUUIDString">virNetworkGetUUIDString</a><br />
|
||||
</dd></dl><h2>Letter H:</h2><dl><dt>Hypervisor</dt><dd><a href="html/libvirt-libvirt.html#virConnectClose">virConnectClose</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetType">virConnectGetType</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectOpen">virConnectOpen</a><br />
|
||||
</dd></dl><h2>Letter I:</h2><dl><dt>IDs</dt><dd><a href="html/libvirt-libvirt.html#virConnectListDomains">virConnectListDomains</a><br />
|
||||
</dd><dt>Individual</dt><dd><a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInterfaceStats">virDomainInterfaceStats</a><br />
|
||||
</dd><dt>Initialize</dt><dd><a href="html/libvirt-libvirt.html#virInitialize">virInitialize</a><br />
|
||||
</dd><dt>Instead</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetConnect">virDomainGetConnect</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetConnect">virNetworkGetConnect</a><br />
|
||||
</dd></dl><h2>Letter K:</h2><dl><dt>KBytes</dt><dd><a href="html/libvirt-libvirt.html#_virDomainInfo">_virDomainInfo</a><br />
|
||||
</dd></dl><h2>Letter L:</h2><dl><dt>Launch</dt><dd><a href="html/libvirt-libvirt.html#virDomainCreateLinux">virDomainCreateLinux</a><br />
|
||||
</dd><dt>Linux</dt><dd><a href="html/libvirt-libvirt.html#virDomainCreateLinux">virDomainCreateLinux</a><br />
|
||||
</dd></dl><h2>Letter M:</h2><dl><dt>Macro</dt><dd><a href="html/libvirt-libvirt.html#LIBVIR_VERSION_NUMBER">LIBVIR_VERSION_NUMBER</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_SCHED_FIELD_LENGTH">VIR_DOMAIN_SCHED_FIELD_LENGTH</a><br />
|
||||
</dd><dt>Mbps</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>Migrate</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd></dl><h2>Letter N:</h2><dl><dt>NUMA</dt><dd><a href="html/libvirt-libvirt.html#_virNodeInfo">_virNodeInfo</a><br />
|
||||
</dd><dt>Normally</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetURI">virConnectGetURI</a><br />
|
||||
</dd><dt>Note</dt><dd><a href="html/libvirt-libvirt.html#virDomainCoreDump">virDomainCoreDump</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetInfo">virDomainGetInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetVcpus">virDomainSetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
|
||||
</dd></dl><h2>Letter O:</h2><dl><dt>OUT</dt><dd><a href="">cpumap</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
|
||||
</dd><dt>One</dt><dd><a href="html/libvirt-virterror.html#virConnCopyLastError">virConnCopyLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virCopyLastError">virCopyLastError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
</dd></dl><h2>Letter P:</h2><dl><dt>Provide</dt><dd><a href="html/libvirt-virterror.html#virConnGetLastError">virConnGetLastError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a><br />
|
||||
<a href="html/libvirt-virterror.html#virGetLastError">virGetLastError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetXMLDesc">virNetworkGetXMLDesc</a><br />
|
||||
</dd><dt>Provides</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetCapabilities">virConnectGetCapabilities</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetMaxVcpus">virConnectGetMaxVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectNumOfDefinedDomains">virConnectNumOfDefinedDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectNumOfDefinedNetworks">virConnectNumOfDefinedNetworks</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectNumOfDomains">virConnectNumOfDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectNumOfNetworks">virConnectNumOfNetworks</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetAutostart">virDomainGetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetConnect">virDomainGetConnect</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetMaxVcpus">virDomainGetMaxVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetAutostart">virNetworkGetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetBridgeName">virNetworkGetBridgeName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetConnect">virNetworkGetConnect</a><br />
|
||||
</dd></dl><h2>Letter R:</h2><dl><dt>RFC4122</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetUUIDString">virDomainGetUUIDString</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetUUIDString">virNetworkGetUUIDString</a><br />
|
||||
</dd><dt>Read-Only</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
|
||||
</dd><dt>Reboot</dt><dd><a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
|
||||
</dd><dt>Refer</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>Reset</dt><dd><a href="html/libvirt-virterror.html#virConnResetLastError">virConnResetLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virResetError">virResetError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virResetLastError">virResetLastError</a><br />
|
||||
</dd><dt>Resume</dt><dd><a href="html/libvirt-libvirt.html#virDomainResume">virDomainResume</a><br />
|
||||
</dd><dt>Retrieve</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetMaxMemory">virDomainGetMaxMemory</a><br />
|
||||
</dd></dl><h2>Letter S:</h2><dl><dt>See</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetType">virConnectGetType</a><br />
|
||||
</dd><dt>Set</dt><dd><a href="html/libvirt-virterror.html#virConnSetErrorFunc">virConnSetErrorFunc</a><br />
|
||||
<a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
|
||||
</dd><dt>Shutdown</dt><dd><a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
|
||||
</dd><dt>Signature</dt><dd><a href="html/libvirt-virterror.html#virErrorFunc">virErrorFunc</a><br />
|
||||
</dd><dt>Simpler</dt><dd><a href="html/libvirt-virterror.html#virConnGetLastError">virConnGetLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virGetLastError">virGetLastError</a><br />
|
||||
</dd><dt>Since</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>Some</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>Suspends</dt><dd><a href="html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a><br />
|
||||
</dd></dl><h2>Letter T:</h2><dl><dt>TODO:</dt><dd><a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
|
||||
</dd><dt>There</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>Try</dt><dd><a href="html/libvirt-libvirt.html#virDomainLookupByID">virDomainLookupByID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByName">virDomainLookupByName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByUUID">virDomainLookupByUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByUUIDString">virDomainLookupByUUIDString</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByName">virNetworkLookupByName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByUUID">virNetworkLookupByUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByUUIDString">virNetworkLookupByUUIDString</a><br />
|
||||
</dd></dl><h2>Letter U:</h2><dl><dt>URI</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetURI">virConnectGetURI</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectOpen">virConnectOpen</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectOpenReadOnly">virConnectOpenReadOnly</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>URIs</dt><dd><a href="html/libvirt-libvirt.html#virConnectOpen">virConnectOpen</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectOpenReadOnly">virConnectOpenReadOnly</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>USE_CPU</dt><dd><a href="html/libvirt-libvirt.html#VIR_UNUSE_CPU">VIR_UNUSE_CPU</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_USE_CPU">VIR_USE_CPU</a><br />
|
||||
</dd><dt>UTF-8</dt><dd><a href="html/libvirt-libvirt.html#virDomainDefineXML">virDomainDefineXML</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkDefineXML">virNetworkDefineXML</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetXMLDesc">virNetworkGetXMLDesc</a><br />
|
||||
</dd><dt>UUID</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetUUID">virDomainGetUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetUUIDString">virDomainGetUUIDString</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByUUID">virDomainLookupByUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByUUIDString">virDomainLookupByUUIDString</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetUUID">virNetworkGetUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetUUIDString">virNetworkGetUUIDString</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByUUID">virNetworkLookupByUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByUUIDString">virNetworkLookupByUUIDString</a><br />
|
||||
</dd><dt>Undefine</dt><dd><a href="html/libvirt-libvirt.html#virNetworkUndefine">virNetworkUndefine</a><br />
|
||||
</dd><dt>Uri</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>Use</dt><dd><a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a><br />
|
||||
</dd></dl><h2>Letter V:</h2><dl><dt>VIR_COPY_CPUMAP</dt><dd><a href="html/libvirt-libvirt.html#VIR_COPY_CPUMAP">VIR_COPY_CPUMAP</a><br />
|
||||
</dd><dt>VIR_CPU_USABLE</dt><dd><a href="html/libvirt-libvirt.html#VIR_CPU_USABLE">VIR_CPU_USABLE</a><br />
|
||||
</dd><dt>VIR_ERR_NO_DOMAIN</dt><dd><a href="html/libvirt-libvirt.html#virDomainLookupByID">virDomainLookupByID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByName">virDomainLookupByName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByUUID">virDomainLookupByUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByUUIDString">virDomainLookupByUUIDString</a><br />
|
||||
</dd><dt>VIR_ERR_NO_NETWORK</dt><dd><a href="html/libvirt-libvirt.html#virNetworkLookupByName">virNetworkLookupByName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByUUID">virNetworkLookupByUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByUUIDString">virNetworkLookupByUUIDString</a><br />
|
||||
</dd><dt>VIR_GET_CPUMAP</dt><dd><a href="html/libvirt-libvirt.html#VIR_GET_CPUMAP">VIR_GET_CPUMAP</a><br />
|
||||
</dd><dt>VIR_MIGRATE_LIVE</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>VIR_UUID_BUFLEN</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetUUID">virDomainGetUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetUUID">virNetworkGetUUID</a><br />
|
||||
</dd><dt>VIR_UUID_STRING_BUFLEN</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetUUIDString">virDomainGetUUIDString</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetUUIDString">virNetworkGetUUIDString</a><br />
|
||||
</dd></dl><h2 align="center"><a href="APIchunk0.html">A-V</a>
|
||||
<a href="APIchunk1.html">W-c</a>
|
||||
<a href="APIchunk2.html">d-g</a>
|
||||
<a href="APIchunk3.html">h-m</a>
|
||||
<a href="APIchunk4.html">n-r</a>
|
||||
<a href="APIchunk5.html">s-t</a>
|
||||
<a href="APIchunk6.html">u-w</a>
|
||||
<a href="APIchunk7.html">x-z</a>
|
||||
</h2></div></div><div class="linkList2"><div class="llinks2"><h3 class="links2"><span>main menu</span></h3><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">API Menu</a></li><li><a href="examples/index.html">C code examples</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></div><div class="llinks2"><h3 class="links2"><span>related links</span></h3><ul><li><a href="https://www.redhat.com/archives/libvir-list/">Mail archive</a></li><li><a href="https://bugzilla.redhat.com/bugzilla/buglist.cgi?product=Fedora+Core&component=libvirt&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=MODIFIED&short_desc_type=allwordssubstr&short_desc=&long_desc_type=allwordssubstr">Open bugs</a></li><li><a href="http://virt-manager.et.redhat.com/">virt-manager</a></li><li><a href="http://search.cpan.org/~danberr/Sys-Virt-0.1.0/">Perl bindings</a></li><li><a href="http://et.redhat.com/~rjones/ocaml-libvirt/">OCaml bindings</a></li><li><a href="http://www.cl.cam.ac.uk/Research/SRG/netos/xen/index.html">Xen project</a></li><li><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="12" value="Search..." /><input name="submit" type="submit" value="Go" /></form></li><li><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-90x34.gif" alt="Made with Libxml2 Logo" /></a></li></ul><p class="credits">Graphics and design by <a href="mail:dfong@redhat.com">Diana Fong</a></p></div></div><div id="bottom"><p class="p1"></p></div></div></body></html>
|
||||
@ -1,329 +0,0 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /><link rel="stylesheet" type="text/css" href="libvirt.css" /><link rel="SHORTCUT ICON" href="/32favicon.png" /><title>API Alphabetic Index W-c for libvirt</title></head><body><div id="container"><div id="intro"><div id="adjustments"></div><div id="pageHeader"></div><div id="content2"><h1 class="style1">API Alphabetic Index W-c for libvirt</h1><h2 align="center"><a href="APIchunk0.html">A-V</a>
|
||||
<a href="APIchunk1.html">W-c</a>
|
||||
<a href="APIchunk2.html">d-g</a>
|
||||
<a href="APIchunk3.html">h-m</a>
|
||||
<a href="APIchunk4.html">n-r</a>
|
||||
<a href="APIchunk5.html">s-t</a>
|
||||
<a href="APIchunk6.html">u-w</a>
|
||||
<a href="APIchunk7.html">x-z</a>
|
||||
</h2><h2>Letter W:</h2><dl><dt>WARNING:</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetConnect">virDomainGetConnect</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetConnect">virNetworkGetConnect</a><br />
|
||||
</dd><dt>What</dt><dd><a href="html/libvirt-virterror.html#_virError">_virError</a><br />
|
||||
</dd><dt>When</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetConnect">virDomainGetConnect</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetConnect">virNetworkGetConnect</a><br />
|
||||
</dd></dl><h2>Letter X:</h2><dl><dt>XML</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetMaxVcpus">virConnectGetMaxVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainAttachDevice">virDomainAttachDevice</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainCreateLinux">virDomainCreateLinux</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDefineXML">virDomainDefineXML</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDetachDevice">virDomainDetachDevice</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkCreateXML">virNetworkCreateXML</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkDefineXML">virNetworkDefineXML</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetXMLDesc">virNetworkGetXMLDesc</a><br />
|
||||
</dd><dt>Xen</dt><dd><a href="html/libvirt-libvirt.html#virDomainCoreDump">virDomainCoreDump</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
|
||||
</dd></dl><h2>Letter a:</h2><dl><dt>about</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetInfo">virDomainGetInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetUUIDString">virDomainGetUUIDString</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetUUIDString">virNetworkGetUUIDString</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNodeGetInfo">virNodeGetInfo</a><br />
|
||||
</dd><dt>access</dt><dd><a href="html/libvirt-libvirt.html#_virNodeInfo">_virNodeInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainCreateLinux">virDomainCreateLinux</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainResume">virDomainResume</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMaxMemory">virDomainSetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMemory">virDomainSetMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetVcpus">virDomainSetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkDestroy">virNetworkDestroy</a><br />
|
||||
</dd><dt>accesses</dt><dd><a href="html/libvirt-virterror.html#virConnGetLastError">virConnGetLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virGetLastError">virGetLastError</a><br />
|
||||
</dd><dt>active</dt><dd><a href="html/libvirt-libvirt.html#VIR_NODEINFO_MAXCPUS">VIR_NODEINFO_MAXCPUS</a><br />
|
||||
<a href="html/libvirt-libvirt.html#_virNodeInfo">_virNodeInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListDomains">virConnectListDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListNetworks">virConnectListNetworks</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectNumOfDomains">virConnectNumOfDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectNumOfNetworks">virConnectNumOfNetworks</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a><br />
|
||||
</dd><dt>add</dt><dd><a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
|
||||
</dd><dt>address</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>after</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetCapabilities">virConnectGetCapabilities</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
|
||||
</dd><dt>against</dt><dd><a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
|
||||
</dd><dt>alive</dt><dd><a href="html/libvirt-libvirt.html#virDomainFree">virDomainFree</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkFree">virNetworkFree</a><br />
|
||||
</dd><dt>all</dt><dd><a href="html/libvirt-libvirt.html#VIR_CPU_MAPLEN">VIR_CPU_MAPLEN</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkDestroy">virNetworkDestroy</a><br />
|
||||
</dd><dt>allocated</dt><dd><a href="">cpumap</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetInfo">virDomainGetInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetMaxMemory">virDomainGetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMaxMemory">virDomainSetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMemory">virDomainSetMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNodeGetInfo">virNodeGetInfo</a><br />
|
||||
</dd><dt>allowed</dt><dd><a href="html/libvirt-libvirt.html#_virDomainInfo">_virDomainInfo</a><br />
|
||||
</dd><dt>already</dt><dd><a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkDestroy">virNetworkDestroy</a><br />
|
||||
</dd><dt>also</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
</dd><dt>also:</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetType">virConnectGetType</a><br />
|
||||
</dd><dt>amount</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetMaxMemory">virDomainGetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMaxMemory">virDomainSetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMemory">virDomainSetMemory</a><br />
|
||||
</dd><dt>analysis</dt><dd><a href="html/libvirt-libvirt.html#virDomainCoreDump">virDomainCoreDump</a><br />
|
||||
</dd><dt>anymore</dt><dd><a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
|
||||
</dd><dt>application</dt><dd><a href="html/libvirt-libvirt.html#virConnectClose">virConnectClose</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetMaxMemory">virDomainGetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMaxMemory">virDomainSetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMemory">virDomainSetMemory</a><br />
|
||||
</dd><dt>applications</dt><dd><a href="html/libvirt-libvirt.html#virInitialize">virInitialize</a><br />
|
||||
</dd><dt>arbitrary</dt><dd><a href="html/libvirt-libvirt.html#virDomainSetVcpus">virDomainSetVcpus</a><br />
|
||||
</dd><dt>architecture</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>archives</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetType">virConnectGetType</a><br />
|
||||
</dd><dt>are</dt><dd><a href="html/libvirt-libvirt.html#virConnectClose">virConnectClose</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetHostname">virConnectGetHostname</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectOpen">virConnectOpen</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectOpenReadOnly">virConnectOpenReadOnly</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkDestroy">virNetworkDestroy</a><br />
|
||||
<a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
|
||||
</dd><dt>array</dt><dd><a href="html/libvirt-libvirt.html#VIR_COPY_CPUMAP">VIR_COPY_CPUMAP</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_GET_CPUMAP">VIR_GET_CPUMAP</a><br />
|
||||
<a href="">cpumaps</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListDefinedDomains">virConnectListDefinedDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListDefinedNetworks">virConnectListDefinedNetworks</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListDomains">virConnectListDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListNetworks">virConnectListNetworks</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetSchedulerParameters">virDomainGetSchedulerParameters</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetUUID">virDomainGetUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetUUIDString">virDomainGetUUIDString</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetUUID">virNetworkGetUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetUUIDString">virNetworkGetUUIDString</a><br />
|
||||
</dd><dt>associated</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetConnect">virDomainGetConnect</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetConnect">virNetworkGetConnect</a><br />
|
||||
</dd><dt>assumed</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
|
||||
</dd><dt>attached</dt><dd><a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInterfaceStats">virDomainInterfaceStats</a><br />
|
||||
</dd><dt>attachment</dt><dd><a href="html/libvirt-libvirt.html#virDomainAttachDevice">virDomainAttachDevice</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDetachDevice">virDomainDetachDevice</a><br />
|
||||
</dd><dt>attribute</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetMaxVcpus">virConnectGetMaxVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
</dd><dt>automatically</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetAutostart">virDomainGetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetAutostart">virDomainSetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetAutostart">virNetworkGetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkSetAutostart">virNetworkSetAutostart</a><br />
|
||||
</dd><dt>available</dt><dd><a href="html/libvirt-virterror.html#_virError">_virError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectOpenReadOnly">virConnectOpenReadOnly</a><br />
|
||||
</dd><dt>availble</dt><dd><a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
|
||||
</dd><dt>avoid</dt><dd><a href="html/libvirt-libvirt.html#virInitialize">virInitialize</a><br />
|
||||
</dd></dl><h2>Letter b:</h2><dl><dt>back</dt><dd><a href="html/libvirt-virterror.html#virConnSetErrorFunc">virConnSetErrorFunc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkDestroy">virNetworkDestroy</a><br />
|
||||
</dd><dt>backend</dt><dd><a href="html/libvirt-libvirt.html#virDomainAttachDevice">virDomainAttachDevice</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDetachDevice">virDomainDetachDevice</a><br />
|
||||
</dd><dt>bandwidth</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>based</dt><dd><a href="html/libvirt-libvirt.html#virDomainCreateLinux">virDomainCreateLinux</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByID">virDomainLookupByID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByName">virDomainLookupByName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByUUID">virDomainLookupByUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByUUIDString">virDomainLookupByUUIDString</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkCreateXML">virNetworkCreateXML</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByName">virNetworkLookupByName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByUUID">virNetworkLookupByUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByUUIDString">virNetworkLookupByUUIDString</a><br />
|
||||
</dd><dt>basically</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetMaxVcpus">virDomainGetMaxVcpus</a><br />
|
||||
</dd><dt>being</dt><dd><a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
|
||||
<a href="html/libvirt-virterror.html#virErrorFunc">virErrorFunc</a><br />
|
||||
<a href="html/libvirt-virterror.html#virResetError">virResetError</a><br />
|
||||
</dd><dt>best</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>better</dt><dd><a href="html/libvirt-libvirt.html#virInitialize">virInitialize</a><br />
|
||||
</dd><dt>between</dt><dd><a href="html/libvirt-libvirt.html#VIR_CPU_MAPLEN">VIR_CPU_MAPLEN</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>bindings</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetConnect">virDomainGetConnect</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetConnect">virNetworkGetConnect</a><br />
|
||||
</dd><dt>bit</dt><dd><a href="html/libvirt-libvirt.html#VIR_UNUSE_CPU">VIR_UNUSE_CPU</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_USE_CPU">VIR_USE_CPU</a><br />
|
||||
<a href="">cpumap</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
</dd><dt>block</dt><dd><a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
</dd><dt>boolean</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetAutostart">virDomainGetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetAutostart">virNetworkGetAutostart</a><br />
|
||||
</dd><dt>booted</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetMaxVcpus">virDomainGetMaxVcpus</a><br />
|
||||
</dd><dt>boots</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetAutostart">virDomainGetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetAutostart">virDomainSetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetAutostart">virNetworkGetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkSetAutostart">virNetworkSetAutostart</a><br />
|
||||
</dd><dt>bridge</dt><dd><a href="html/libvirt-libvirt.html#virNetworkGetBridgeName">virNetworkGetBridgeName</a><br />
|
||||
</dd><dt>buffer</dt><dd><a href="html/libvirt-libvirt.html#VIR_UUID_BUFLEN">VIR_UUID_BUFLEN</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_UUID_STRING_BUFLEN">VIR_UUID_STRING_BUFLEN</a><br />
|
||||
</dd><dt>but</dt><dd><a href="html/libvirt-libvirt.html#VIR_NODEINFO_MAXCPUS">VIR_NODEINFO_MAXCPUS</a><br />
|
||||
<a href="html/libvirt-virterror.html#virConnGetLastError">virConnGetLastError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetURI">virConnectGetURI</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDefineXML">virDomainDefineXML</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainUndefine">virDomainUndefine</a><br />
|
||||
<a href="html/libvirt-virterror.html#virGetLastError">virGetLastError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkDefineXML">virNetworkDefineXML</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkUndefine">virNetworkUndefine</a><br />
|
||||
</dd><dt>byte</dt><dd><a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
</dd><dt>bytes</dt><dd><a href="html/libvirt-libvirt.html#VIR_CPU_MAPLEN">VIR_CPU_MAPLEN</a><br />
|
||||
<a href="">cpumap</a><br />
|
||||
<a href="">cpumaps</a><br />
|
||||
<a href="">maplen</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetUUID">virDomainGetUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetUUIDString">virDomainGetUUIDString</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetUUID">virNetworkGetUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetUUIDString">virNetworkGetUUIDString</a><br />
|
||||
</dd></dl><h2>Letter c:</h2><dl><dt>calculate</dt><dd><a href="html/libvirt-libvirt.html#VIR_NODEINFO_MAXCPUS">VIR_NODEINFO_MAXCPUS</a><br />
|
||||
</dd><dt>call</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetHostname">virConnectGetHostname</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetURI">virConnectGetURI</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainCreate">virDomainCreate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetConnect">virDomainGetConnect</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetVcpus">virDomainSetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virInitialize">virInitialize</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkCreate">virNetworkCreate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkDestroy">virNetworkDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetConnect">virNetworkGetConnect</a><br />
|
||||
</dd><dt>callback</dt><dd><a href="html/libvirt-virterror.html#virConnSetErrorFunc">virConnSetErrorFunc</a><br />
|
||||
<a href="html/libvirt-virterror.html#virErrorFunc">virErrorFunc</a><br />
|
||||
<a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
|
||||
</dd><dt>called</dt><dd><a href="html/libvirt-virterror.html#virConnSetErrorFunc">virConnSetErrorFunc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectClose">virConnectClose</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectOpen">virConnectOpen</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectOpenReadOnly">virConnectOpenReadOnly</a><br />
|
||||
<a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
|
||||
</dd><dt>caller</dt><dd><a href="">cpumap</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetHostname">virConnectGetHostname</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetURI">virConnectGetURI</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetOSType">virDomainGetOSType</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetSchedulerType">virDomainGetSchedulerType</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetBridgeName">virNetworkGetBridgeName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetXMLDesc">virNetworkGetXMLDesc</a><br />
|
||||
</dd><dt>calling</dt><dd><a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainResume">virDomainResume</a><br />
|
||||
</dd><dt>calloc</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
</dd><dt>calls</dt><dd><a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInterfaceStats">virDomainInterfaceStats</a><br />
|
||||
</dd><dt>can</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetURI">virConnectGetURI</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetInfo">virDomainGetInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
</dd><dt>cannot</dt><dd><a href="html/libvirt-libvirt.html#virDomainLookupByID">virDomainLookupByID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByName">virDomainLookupByName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByUUID">virDomainLookupByUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByUUIDString">virDomainLookupByUUIDString</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByName">virNetworkLookupByName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByUUID">virNetworkLookupByUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByUUIDString">virNetworkLookupByUUIDString</a><br />
|
||||
</dd><dt>canonical</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetURI">virConnectGetURI</a><br />
|
||||
</dd><dt>capabilities</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetCapabilities">virConnectGetCapabilities</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>capacities</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
|
||||
</dd><dt>caught</dt><dd><a href="html/libvirt-virterror.html#virConnCopyLastError">virConnCopyLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virConnGetLastError">virConnGetLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virConnResetLastError">virConnResetLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virCopyLastError">virCopyLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virGetLastError">virGetLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virResetLastError">virResetLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
|
||||
</dd><dt>cell</dt><dd><a href="html/libvirt-libvirt.html#_virNodeInfo">_virNodeInfo</a><br />
|
||||
</dd><dt>change</dt><dd><a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMaxMemory">virDomainSetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMemory">virDomainSetMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetVcpus">virDomainSetVcpus</a><br />
|
||||
</dd><dt>choose</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>clean</dt><dd><a href="html/libvirt-virterror.html#virResetError">virResetError</a><br />
|
||||
</dd><dt>client</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetCapabilities">virConnectGetCapabilities</a><br />
|
||||
</dd><dt>closes</dt><dd><a href="html/libvirt-libvirt.html#virConnectClose">virConnectClose</a><br />
|
||||
</dd><dt>code</dt><dd><a href="html/libvirt-virterror.html#_virError">_virError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virConnCopyLastError">virConnCopyLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virCopyLastError">virCopyLastError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
|
||||
</dd><dt>collect</dt><dd><a href="html/libvirt-libvirt.html#virConnectListDomains">virConnectListDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListNetworks">virConnectListNetworks</a><br />
|
||||
</dd><dt>com</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetType">virConnectGetType</a><br />
|
||||
</dd><dt>compiled</dt><dd><a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
|
||||
</dd><dt>complete</dt><dd><a href="html/libvirt-libvirt.html#VIR_CPU_MAPLEN">VIR_CPU_MAPLEN</a><br />
|
||||
</dd><dt>configured</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetAutostart">virDomainGetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetAutostart">virNetworkGetAutostart</a><br />
|
||||
</dd><dt>conjonction</dt><dd><a href="html/libvirt-libvirt.html#VIR_COPY_CPUMAP">VIR_COPY_CPUMAP</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_CPU_MAPLEN">VIR_CPU_MAPLEN</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_CPU_USABLE">VIR_CPU_USABLE</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_GET_CPUMAP">VIR_GET_CPUMAP</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_UNUSE_CPU">VIR_UNUSE_CPU</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_USE_CPU">VIR_USE_CPU</a><br />
|
||||
</dd><dt>connect</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetURI">virConnectGetURI</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetBridgeName">virNetworkGetBridgeName</a><br />
|
||||
</dd><dt>connected</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetHostname">virConnectGetHostname</a><br />
|
||||
</dd><dt>consequent</dt><dd><a href="html/libvirt-virterror.html#_virError">_virError</a><br />
|
||||
</dd><dt>content</dt><dd><a href="html/libvirt-virterror.html#virConnCopyLastError">virConnCopyLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virCopyLastError">virCopyLastError</a><br />
|
||||
</dd><dt>contents</dt><dd><a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
|
||||
</dd><dt>control</dt><dd><a href="html/libvirt-libvirt.html#virConnectOpenReadOnly">virConnectOpenReadOnly</a><br />
|
||||
</dd><dt>copy</dt><dd><a href="html/libvirt-libvirt.html#VIR_COPY_CPUMAP">VIR_COPY_CPUMAP</a><br />
|
||||
<a href="html/libvirt-virterror.html#virConnCopyLastError">virConnCopyLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virCopyLastError">virCopyLastError</a><br />
|
||||
</dd><dt>core</dt><dd><a href="html/libvirt-libvirt.html#_virNodeInfo">_virNodeInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainCoreDump">virDomainCoreDump</a><br />
|
||||
</dd><dt>corresponding</dt><dd><a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
</dd><dt>corresponds</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetMaxVcpus">virConnectGetMaxVcpus</a><br />
|
||||
</dd><dt>could</dt><dd><a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
|
||||
</dd><dt>counter</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetConnect">virDomainGetConnect</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetConnect">virNetworkGetConnect</a><br />
|
||||
</dd><dt>cpu</dt><dd><a href="html/libvirt-libvirt.html#VIR_CPU_USABLE">VIR_CPU_USABLE</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_UNUSE_CPU">VIR_UNUSE_CPU</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_USE_CPU">VIR_USE_CPU</a><br />
|
||||
</dd><dt>cpumap</dt><dd><a href="html/libvirt-libvirt.html#VIR_COPY_CPUMAP">VIR_COPY_CPUMAP</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_GET_CPUMAP">VIR_GET_CPUMAP</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_UNUSE_CPU">VIR_UNUSE_CPU</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_USE_CPU">VIR_USE_CPU</a><br />
|
||||
<a href="">cpumap</a><br />
|
||||
<a href="">cpumaps</a><br />
|
||||
<a href="">maplen</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
</dd><dt>cpumaps</dt><dd><a href="html/libvirt-libvirt.html#VIR_COPY_CPUMAP">VIR_COPY_CPUMAP</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_GET_CPUMAP">VIR_GET_CPUMAP</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
</dd><dt>create</dt><dd><a href="html/libvirt-libvirt.html#virNetworkDefineXML">virNetworkDefineXML</a><br />
|
||||
</dd><dt>cupmap</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
</dd><dt>current</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>currently</dt><dd><a href="html/libvirt-libvirt.html#virDomainCoreDump">virDomainCoreDump</a><br />
|
||||
</dd></dl><h2 align="center"><a href="APIchunk0.html">A-V</a>
|
||||
<a href="APIchunk1.html">W-c</a>
|
||||
<a href="APIchunk2.html">d-g</a>
|
||||
<a href="APIchunk3.html">h-m</a>
|
||||
<a href="APIchunk4.html">n-r</a>
|
||||
<a href="APIchunk5.html">s-t</a>
|
||||
<a href="APIchunk6.html">u-w</a>
|
||||
<a href="APIchunk7.html">x-z</a>
|
||||
</h2></div></div><div class="linkList2"><div class="llinks2"><h3 class="links2"><span>main menu</span></h3><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">API Menu</a></li><li><a href="examples/index.html">C code examples</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></div><div class="llinks2"><h3 class="links2"><span>related links</span></h3><ul><li><a href="https://www.redhat.com/archives/libvir-list/">Mail archive</a></li><li><a href="https://bugzilla.redhat.com/bugzilla/buglist.cgi?product=Fedora+Core&component=libvirt&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=MODIFIED&short_desc_type=allwordssubstr&short_desc=&long_desc_type=allwordssubstr">Open bugs</a></li><li><a href="http://virt-manager.et.redhat.com/">virt-manager</a></li><li><a href="http://search.cpan.org/~danberr/Sys-Virt-0.1.0/">Perl bindings</a></li><li><a href="http://et.redhat.com/~rjones/ocaml-libvirt/">OCaml bindings</a></li><li><a href="http://www.cl.cam.ac.uk/Research/SRG/netos/xen/index.html">Xen project</a></li><li><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="12" value="Search..." /><input name="submit" type="submit" value="Go" /></form></li><li><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-90x34.gif" alt="Made with Libxml2 Logo" /></a></li></ul><p class="credits">Graphics and design by <a href="mail:dfong@redhat.com">Diana Fong</a></p></div></div><div id="bottom"><p class="p1"></p></div></div></body></html>
|
||||
@ -1,228 +0,0 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /><link rel="stylesheet" type="text/css" href="libvirt.css" /><link rel="SHORTCUT ICON" href="/32favicon.png" /><title>API Alphabetic Index d-g for libvirt</title></head><body><div id="container"><div id="intro"><div id="adjustments"></div><div id="pageHeader"></div><div id="content2"><h1 class="style1">API Alphabetic Index d-g for libvirt</h1><h2 align="center"><a href="APIchunk0.html">A-V</a>
|
||||
<a href="APIchunk1.html">W-c</a>
|
||||
<a href="APIchunk2.html">d-g</a>
|
||||
<a href="APIchunk3.html">h-m</a>
|
||||
<a href="APIchunk4.html">n-r</a>
|
||||
<a href="APIchunk5.html">s-t</a>
|
||||
<a href="APIchunk6.html">u-w</a>
|
||||
<a href="APIchunk7.html">x-z</a>
|
||||
</h2><h2>Letter d:</h2><dl><dt>data</dt><dd><a href="html/libvirt-virterror.html#virConnSetErrorFunc">virConnSetErrorFunc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainFree">virDomainFree</a><br />
|
||||
<a href="html/libvirt-virterror.html#virErrorFunc">virErrorFunc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkDestroy">virNetworkDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkFree">virNetworkFree</a><br />
|
||||
<a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
|
||||
</dd><dt>dconn</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>deallocated</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetName">virDomainGetName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetName">virNetworkGetName</a><br />
|
||||
</dd><dt>default</dt><dd><a href="html/libvirt-virterror.html#virConnSetErrorFunc">virConnSetErrorFunc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
|
||||
</dd><dt>define</dt><dd><a href="html/libvirt-libvirt.html#virDomainDefineXML">virDomainDefineXML</a><br />
|
||||
</dd><dt>defined</dt><dd><a href="html/libvirt-libvirt.html#virConnectListDefinedDomains">virConnectListDefinedDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainCreate">virDomainCreate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainUndefine">virDomainUndefine</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkCreate">virNetworkCreate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkUndefine">virNetworkUndefine</a><br />
|
||||
</dd><dt>described</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
</dd><dt>description</dt><dd><a href="html/libvirt-libvirt.html#virDomainAttachDevice">virDomainAttachDevice</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainCreateLinux">virDomainCreateLinux</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDefineXML">virDomainDefineXML</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDetachDevice">virDomainDetachDevice</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkCreateXML">virNetworkCreateXML</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkDefineXML">virNetworkDefineXML</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetXMLDesc">virNetworkGetXMLDesc</a><br />
|
||||
</dd><dt>dest</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>destination</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>dev=</dt><dd><a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
</dd><dt>device</dt><dd><a href="html/libvirt-libvirt.html#virDomainAttachDevice">virDomainAttachDevice</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDetachDevice">virDomainDetachDevice</a><br />
|
||||
</dd><dt>devices</dt><dd><a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
</dd><dt>different</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>directly</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>disk</dt><dd><a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainRestore">virDomainRestore</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
|
||||
</dd><dt>dname</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>doable</dt><dd><a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
|
||||
</dd><dt>documentation</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>documented</dt><dd><a href="html/libvirt-libvirt.html#virConnectOpen">virConnectOpen</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectOpenReadOnly">virConnectOpenReadOnly</a><br />
|
||||
</dd><dt>does</dt><dd><a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDefineXML">virDomainDefineXML</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInterfaceStats">virDomainInterfaceStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetVcpus">virDomainSetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainUndefine">virDomainUndefine</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkDefineXML">virNetworkDefineXML</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkDestroy">virNetworkDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkUndefine">virNetworkUndefine</a><br />
|
||||
</dd><dt>domains</dt><dd><a href="html/libvirt-libvirt.html#virConnectListDefinedDomains">virConnectListDefinedDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListDomains">virConnectListDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectNumOfDefinedDomains">virConnectNumOfDefinedDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectNumOfDomains">virConnectNumOfDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectOpenReadOnly">virConnectOpenReadOnly</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainCreate">virDomainCreate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>down</dt><dd><a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkDestroy">virNetworkDestroy</a><br />
|
||||
</dd><dt>driver</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetCapabilities">virConnectGetCapabilities</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetURI">virConnectGetURI</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
|
||||
</dd><dt>dump</dt><dd><a href="html/libvirt-libvirt.html#virDomainCoreDump">virDomainCoreDump</a><br />
|
||||
</dd><dt>during</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd></dl><h2>Letter e:</h2><dl><dt>each</dt><dd><a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInterfaceStats">virDomainInterfaceStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
</dd><dt>element</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetMaxVcpus">virConnectGetMaxVcpus</a><br />
|
||||
</dd><dt>else</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>encoded</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetXMLDesc">virNetworkGetXMLDesc</a><br />
|
||||
</dd><dt>especially</dt><dd><a href="html/libvirt-libvirt.html#virConnectClose">virConnectClose</a><br />
|
||||
</dd><dt>etc</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>even</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>example</dt><dd><a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>exists</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>expected</dt><dd><a href="html/libvirt-libvirt.html#_virNodeInfo">_virNodeInfo</a><br />
|
||||
</dd><dt>extra</dt><dd><a href="html/libvirt-virterror.html#_virError">_virError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainCoreDump">virDomainCoreDump</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
|
||||
</dd><dt>extract</dt><dd><a href="html/libvirt-libvirt.html#VIR_COPY_CPUMAP">VIR_COPY_CPUMAP</a><br />
|
||||
</dd><dt>extracted</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetInfo">virDomainGetInfo</a><br />
|
||||
</dd><dt>extraction</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetXMLDesc">virNetworkGetXMLDesc</a><br />
|
||||
</dd></dl><h2>Letter f:</h2><dl><dt>fail</dt><dd><a href="html/libvirt-libvirt.html#virDomainSetVcpus">virDomainSetVcpus</a><br />
|
||||
</dd><dt>feature</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>features</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>field</dt><dd><a href="html/libvirt-libvirt.html#VIR_DOMAIN_SCHED_FIELD_LENGTH">VIR_DOMAIN_SCHED_FIELD_LENGTH</a><br />
|
||||
</dd><dt>fields</dt><dd><a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInterfaceStats">virDomainInterfaceStats</a><br />
|
||||
</dd><dt>file</dt><dd><a href="html/libvirt-libvirt.html#virDomainCoreDump">virDomainCoreDump</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
|
||||
</dd><dt>filled</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetSchedulerParameters">virDomainGetSchedulerParameters</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
</dd><dt>find</dt><dd><a href="html/libvirt-libvirt.html#virDomainLookupByID">virDomainLookupByID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>finding</dt><dd><a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
</dd><dt>first</dt><dd><a href="html/libvirt-libvirt.html#virConnectOpen">virConnectOpen</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectOpenReadOnly">virConnectOpenReadOnly</a><br />
|
||||
</dd><dt>flags</dt><dd><a href="html/libvirt-libvirt.html#virDomainCoreDump">virDomainCoreDump</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetXMLDesc">virNetworkGetXMLDesc</a><br />
|
||||
</dd><dt>following:</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>form</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>format</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
|
||||
</dd><dt>found</dt><dd><a href="html/libvirt-virterror.html#virConnCopyLastError">virConnCopyLastError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListDomains">virConnectListDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListNetworks">virConnectListNetworks</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectNumOfDefinedDomains">virConnectNumOfDefinedDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectNumOfDefinedNetworks">virConnectNumOfDefinedNetworks</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectNumOfDomains">virConnectNumOfDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectNumOfNetworks">virConnectNumOfNetworks</a><br />
|
||||
<a href="html/libvirt-virterror.html#virCopyLastError">virCopyLastError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByID">virDomainLookupByID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByName">virDomainLookupByName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByUUID">virDomainLookupByUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByUUIDString">virDomainLookupByUUIDString</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByName">virNetworkLookupByName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByUUID">virNetworkLookupByUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByUUIDString">virNetworkLookupByUUIDString</a><br />
|
||||
</dd><dt>free</dt><dd><a href="html/libvirt-virterror.html#virConnCopyLastError">virConnCopyLastError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetCapabilities">virConnectGetCapabilities</a><br />
|
||||
<a href="html/libvirt-virterror.html#virCopyLastError">virCopyLastError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetSchedulerType">virDomainGetSchedulerType</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetBridgeName">virNetworkGetBridgeName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetXMLDesc">virNetworkGetXMLDesc</a><br />
|
||||
</dd><dt>freed</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetHostname">virConnectGetHostname</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetURI">virConnectGetURI</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainFree">virDomainFree</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetOSType">virDomainGetOSType</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkDestroy">virNetworkDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkFree">virNetworkFree</a><br />
|
||||
</dd><dt>frequency</dt><dd><a href="html/libvirt-libvirt.html#_virNodeInfo">_virNodeInfo</a><br />
|
||||
</dd><dt>from</dt><dd><a href="html/libvirt-libvirt.html#VIR_COPY_CPUMAP">VIR_COPY_CPUMAP</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_GET_CPUMAP">VIR_GET_CPUMAP</a><br />
|
||||
<a href="html/libvirt-libvirt.html#_virVcpuInfo">_virVcpuInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainCreate">virDomainCreate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainResume">virDomainResume</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkCreate">virNetworkCreate</a><br />
|
||||
</dd><dt>frozen</dt><dd><a href="html/libvirt-libvirt.html#virDomainResume">virDomainResume</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a><br />
|
||||
</dd><dt>function</dt><dd><a href="html/libvirt-virterror.html#virConnSetErrorFunc">virConnSetErrorFunc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectClose">virConnectClose</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectOpen">virConnectOpen</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectOpenReadOnly">virConnectOpenReadOnly</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainCreateLinux">virDomainCreateLinux</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetConnect">virDomainGetConnect</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInterfaceStats">virDomainInterfaceStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainResume">virDomainResume</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMaxMemory">virDomainSetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMemory">virDomainSetMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetVcpus">virDomainSetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a><br />
|
||||
<a href="html/libvirt-virterror.html#virErrorFunc">virErrorFunc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkDestroy">virNetworkDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetConnect">virNetworkGetConnect</a><br />
|
||||
<a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
|
||||
</dd><dt>functionalities</dt><dd><a href="html/libvirt-libvirt.html#virConnectOpenReadOnly">virConnectOpenReadOnly</a><br />
|
||||
</dd><dt>further</dt><dd><a href="html/libvirt-libvirt.html#virConnectClose">virConnectClose</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a><br />
|
||||
</dd></dl><h2>Letter g:</h2><dl><dt>general</dt><dd><a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
|
||||
</dd><dt>get</dt><dd><a href="html/libvirt-virterror.html#virConnSetErrorFunc">virConnSetErrorFunc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectOpen">virConnectOpen</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectOpenReadOnly">virConnectOpenReadOnly</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetInfo">virDomainGetInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetMaxMemory">virDomainGetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInterfaceStats">virDomainInterfaceStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
|
||||
</dd><dt>gethostname</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetHostname">virConnectGetHostname</a><br />
|
||||
</dd><dt>given</dt><dd><a href="html/libvirt-libvirt.html#virDomainCoreDump">virDomainCoreDump</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByName">virDomainLookupByName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByUUID">virDomainLookupByUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByUUIDString">virDomainLookupByUUIDString</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkDestroy">virNetworkDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByName">virNetworkLookupByName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByUUID">virNetworkLookupByUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByUUIDString">virNetworkLookupByUUIDString</a><br />
|
||||
</dd><dt>giving</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>global</dt><dd><a href="html/libvirt-virterror.html#virConnSetErrorFunc">virConnSetErrorFunc</a><br />
|
||||
<a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
|
||||
</dd><dt>growing</dt><dd><a href="html/libvirt-libvirt.html#virDomainSetVcpus">virDomainSetVcpus</a><br />
|
||||
</dd><dt>guest</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetMaxVcpus">virConnectGetMaxVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainCreateLinux">virDomainCreateLinux</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetMaxVcpus">virDomainGetMaxVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
|
||||
</dd></dl><h2 align="center"><a href="APIchunk0.html">A-V</a>
|
||||
<a href="APIchunk1.html">W-c</a>
|
||||
<a href="APIchunk2.html">d-g</a>
|
||||
<a href="APIchunk3.html">h-m</a>
|
||||
<a href="APIchunk4.html">n-r</a>
|
||||
<a href="APIchunk5.html">s-t</a>
|
||||
<a href="APIchunk6.html">u-w</a>
|
||||
<a href="APIchunk7.html">x-z</a>
|
||||
</h2></div></div><div class="linkList2"><div class="llinks2"><h3 class="links2"><span>main menu</span></h3><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">API Menu</a></li><li><a href="examples/index.html">C code examples</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></div><div class="llinks2"><h3 class="links2"><span>related links</span></h3><ul><li><a href="https://www.redhat.com/archives/libvir-list/">Mail archive</a></li><li><a href="https://bugzilla.redhat.com/bugzilla/buglist.cgi?product=Fedora+Core&component=libvirt&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=MODIFIED&short_desc_type=allwordssubstr&short_desc=&long_desc_type=allwordssubstr">Open bugs</a></li><li><a href="http://virt-manager.et.redhat.com/">virt-manager</a></li><li><a href="http://search.cpan.org/~danberr/Sys-Virt-0.1.0/">Perl bindings</a></li><li><a href="http://et.redhat.com/~rjones/ocaml-libvirt/">OCaml bindings</a></li><li><a href="http://www.cl.cam.ac.uk/Research/SRG/netos/xen/index.html">Xen project</a></li><li><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="12" value="Search..." /><input name="submit" type="submit" value="Go" /></form></li><li><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-90x34.gif" alt="Made with Libxml2 Logo" /></a></li></ul><p class="credits">Graphics and design by <a href="mail:dfong@redhat.com">Diana Fong</a></p></div></div><div id="bottom"><p class="p1"></p></div></div></body></html>
|
||||
@ -1,276 +0,0 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /><link rel="stylesheet" type="text/css" href="libvirt.css" /><link rel="SHORTCUT ICON" href="/32favicon.png" /><title>API Alphabetic Index h-m for libvirt</title></head><body><div id="container"><div id="intro"><div id="adjustments"></div><div id="pageHeader"></div><div id="content2"><h1 class="style1">API Alphabetic Index h-m for libvirt</h1><h2 align="center"><a href="APIchunk0.html">A-V</a>
|
||||
<a href="APIchunk1.html">W-c</a>
|
||||
<a href="APIchunk2.html">d-g</a>
|
||||
<a href="APIchunk3.html">h-m</a>
|
||||
<a href="APIchunk4.html">n-r</a>
|
||||
<a href="APIchunk5.html">s-t</a>
|
||||
<a href="APIchunk6.html">u-w</a>
|
||||
<a href="APIchunk7.html">x-z</a>
|
||||
</h2><h2>Letter h:</h2><dl><dt>handler</dt><dd><a href="html/libvirt-virterror.html#virConnSetErrorFunc">virConnSetErrorFunc</a><br />
|
||||
<a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
|
||||
</dd><dt>handling</dt><dd><a href="html/libvirt-virterror.html#virConnSetErrorFunc">virConnSetErrorFunc</a><br />
|
||||
<a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
|
||||
</dd><dt>hardware</dt><dd><a href="html/libvirt-libvirt.html#virNodeGetInfo">virNodeGetInfo</a><br />
|
||||
</dd><dt>has</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
</dd><dt>have</dt><dd><a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInterfaceStats">virDomainInterfaceStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
|
||||
</dd><dt>here</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetMaxVcpus">virConnectGetMaxVcpus</a><br />
|
||||
</dd><dt>host</dt><dd><a href="html/libvirt-libvirt.html#VIR_NODEINFO_MAXCPUS">VIR_NODEINFO_MAXCPUS</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainCoreDump">virDomainCoreDump</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetAutostart">virDomainGetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetAutostart">virDomainSetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetAutostart">virNetworkGetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkSetAutostart">virNetworkSetAutostart</a><br />
|
||||
</dd><dt>hostname</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetHostname">virConnectGetHostname</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>how</dt><dd><a href="html/libvirt-virterror.html#_virError">_virError</a><br />
|
||||
</dd><dt>html</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetType">virConnectGetType</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectOpen">virConnectOpen</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectOpenReadOnly">virConnectOpenReadOnly</a><br />
|
||||
</dd><dt>http:</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetType">virConnectGetType</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectOpen">virConnectOpen</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectOpenReadOnly">virConnectOpenReadOnly</a><br />
|
||||
</dd><dt>human-readable</dt><dd><a href="html/libvirt-virterror.html#_virError">_virError</a><br />
|
||||
</dd><dt>hypervisors</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd></dl><h2>Letter i:</h2><dl><dt>ie:</dt><dd><a href="">cpumap</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
</dd><dt>ignore</dt><dd><a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
|
||||
</dd><dt>imposed</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>inactive</dt><dd><a href="html/libvirt-libvirt.html#virConnectListDefinedNetworks">virConnectListDefinedNetworks</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectNumOfDefinedDomains">virConnectNumOfDefinedDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectNumOfDefinedNetworks">virConnectNumOfDefinedNetworks</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetMaxVcpus">virDomainGetMaxVcpus</a><br />
|
||||
</dd><dt>increased</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetConnect">virDomainGetConnect</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetConnect">virNetworkGetConnect</a><br />
|
||||
</dd><dt>indicates</dt><dd><a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInterfaceStats">virDomainInterfaceStats</a><br />
|
||||
</dd><dt>indicating</dt><dd><a href="html/libvirt-libvirt.html#_virNodeInfo">_virNodeInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetAutostart">virDomainGetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetAutostart">virNetworkGetAutostart</a><br />
|
||||
</dd><dt>info</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
</dd><dt>information</dt><dd><a href="html/libvirt-virterror.html#_virError">_virError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetInfo">virDomainGetInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetUUIDString">virDomainGetUUIDString</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetUUIDString">virNetworkGetUUIDString</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNodeGetInfo">virNodeGetInfo</a><br />
|
||||
</dd><dt>informative</dt><dd><a href="html/libvirt-virterror.html#_virError">_virError</a><br />
|
||||
</dd><dt>initializing</dt><dd><a href="html/libvirt-libvirt.html#virInitialize">virInitialize</a><br />
|
||||
</dd><dt>inside</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
</dd><dt>instance</dt><dd><a href="">nodeinfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainFree">virDomainFree</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkDestroy">virNetworkDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkFree">virNetworkFree</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetXMLDesc">virNetworkGetXMLDesc</a><br />
|
||||
</dd><dt>int</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetID">virDomainGetID</a><br />
|
||||
</dd><dt>interaction</dt><dd><a href="html/libvirt-libvirt.html#virConnectClose">virConnectClose</a><br />
|
||||
</dd><dt>interface</dt><dd><a href="html/libvirt-libvirt.html#virDomainInterfaceStats">virDomainInterfaceStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetBridgeName">virNetworkGetBridgeName</a><br />
|
||||
</dd><dt>interfaces</dt><dd><a href="html/libvirt-libvirt.html#virDomainInterfaceStats">virDomainInterfaceStats</a><br />
|
||||
</dd><dt>interpreted</dt><dd><a href="html/libvirt-libvirt.html#virDomainCoreDump">virDomainCoreDump</a><br />
|
||||
</dd><dt>into</dt><dd><a href="html/libvirt-libvirt.html#VIR_COPY_CPUMAP">VIR_COPY_CPUMAP</a><br />
|
||||
</dd><dt>its</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetName">virDomainGetName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByName">virDomainLookupByName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByUUID">virDomainLookupByUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByUUIDString">virDomainLookupByUUIDString</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetName">virNetworkGetName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByName">virNetworkLookupByName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByUUID">virNetworkLookupByUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByUUIDString">virNetworkLookupByUUIDString</a><br />
|
||||
</dd></dl><h2>Letter j:</h2><dl><dt>join</dt><dd><a href="html/libvirt-libvirt.html#virNetworkGetBridgeName">virNetworkGetBridgeName</a><br />
|
||||
</dd></dl><h2>Letter k:</h2><dl><dt>keeps</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>kept</dt><dd><a href="html/libvirt-libvirt.html#virDomainFree">virDomainFree</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkFree">virNetworkFree</a><br />
|
||||
</dd><dt>kilobytes</dt><dd><a href="html/libvirt-libvirt.html#_virNodeInfo">_virNodeInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetMaxMemory">virDomainGetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMaxMemory">virDomainSetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMemory">virDomainSetMemory</a><br />
|
||||
</dd><dt>knowing</dt><dd><a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
|
||||
</dd></dl><h2>Letter l:</h2><dl><dt>lack</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
|
||||
</dd><dt>languages</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetConnect">virDomainGetConnect</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetConnect">virNetworkGetConnect</a><br />
|
||||
</dd><dt>last</dt><dd><a href="html/libvirt-virterror.html#virConnCopyLastError">virConnCopyLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virConnGetLastError">virConnGetLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virConnResetLastError">virConnResetLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virCopyLastError">virCopyLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virGetLastError">virGetLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virResetLastError">virResetLastError</a><br />
|
||||
</dd><dt>later</dt><dd><a href="html/libvirt-libvirt.html#VIR_COPY_CPUMAP">VIR_COPY_CPUMAP</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetURI">virConnectGetURI</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetXMLDesc">virNetworkGetXMLDesc</a><br />
|
||||
</dd><dt>launch</dt><dd><a href="html/libvirt-libvirt.html#virDomainCreate">virDomainCreate</a><br />
|
||||
</dd><dt>least</dt><dd><a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
</dd><dt>length</dt><dd><a href="html/libvirt-libvirt.html#VIR_CPU_MAPLEN">VIR_CPU_MAPLEN</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_SCHED_FIELD_LENGTH">VIR_DOMAIN_SCHED_FIELD_LENGTH</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_UUID_BUFLEN">VIR_UUID_BUFLEN</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_UUID_STRING_BUFLEN">VIR_UUID_STRING_BUFLEN</a><br />
|
||||
<a href="">maplen</a><br />
|
||||
</dd><dt>less</dt><dd><a href="html/libvirt-libvirt.html#virDomainSetSchedulerParameters">virDomainSetSchedulerParameters</a><br />
|
||||
</dd><dt>level</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
|
||||
<a href="html/libvirt-virterror.html#virCopyLastError">virCopyLastError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a><br />
|
||||
<a href="html/libvirt-virterror.html#virGetLastError">virGetLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virResetLastError">virResetLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
|
||||
</dd><dt>libbrary</dt><dd><a href="html/libvirt-libvirt.html#virConnectOpenReadOnly">virConnectOpenReadOnly</a><br />
|
||||
</dd><dt>library</dt><dd><a href="html/libvirt-libvirt.html#LIBVIR_VERSION_NUMBER">LIBVIR_VERSION_NUMBER</a><br />
|
||||
<a href="html/libvirt-virterror.html#_virError">_virError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virConnSetErrorFunc">virConnSetErrorFunc</a><br />
|
||||
<a href="html/libvirt-virterror.html#virCopyLastError">virCopyLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virErrorFunc">virErrorFunc</a><br />
|
||||
<a href="html/libvirt-virterror.html#virGetLastError">virGetLastError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virInitialize">virInitialize</a><br />
|
||||
<a href="html/libvirt-virterror.html#virResetLastError">virResetLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
|
||||
</dd><dt>libvir-list</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetType">virConnectGetType</a><br />
|
||||
</dd><dt>libvirt</dt><dd><a href="html/libvirt-libvirt.html#virConnectOpen">virConnectOpen</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectOpenReadOnly">virConnectOpenReadOnly</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetConnect">virDomainGetConnect</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetConnect">virNetworkGetConnect</a><br />
|
||||
</dd><dt>lifetime</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetName">virDomainGetName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetName">virNetworkGetName</a><br />
|
||||
</dd><dt>limit</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>limitations</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>limited</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetInfo">virDomainGetInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetVcpus">virDomainSetVcpus</a><br />
|
||||
</dd><dt>list</dt><dd><a href="html/libvirt-libvirt.html#virConnectListDefinedDomains">virConnectListDefinedDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListDefinedNetworks">virConnectListDefinedNetworks</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListDomains">virConnectListDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListNetworks">virConnectListNetworks</a><br />
|
||||
</dd><dt>listed</dt><dd><a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
|
||||
</dd><dt>little-endian</dt><dd><a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
</dd><dt>live</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>looked</dt><dd><a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
|
||||
</dd><dt>lookup</dt><dd><a href="html/libvirt-libvirt.html#virDomainLookupByName">virDomainLookupByName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByUUID">virDomainLookupByUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByUUIDString">virDomainLookupByUUIDString</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByName">virNetworkLookupByName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByUUID">virNetworkLookupByUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByUUIDString">virNetworkLookupByUUIDString</a><br />
|
||||
</dd><dt>lowest</dt><dd><a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
</dd></dl><h2>Letter m:</h2><dl><dt>machine</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetAutostart">virDomainGetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetAutostart">virDomainSetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetAutostart">virNetworkGetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkSetAutostart">virNetworkSetAutostart</a><br />
|
||||
</dd><dt>macro</dt><dd><a href="html/libvirt-libvirt.html#VIR_COPY_CPUMAP">VIR_COPY_CPUMAP</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_CPU_MAPLEN">VIR_CPU_MAPLEN</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_CPU_USABLE">VIR_CPU_USABLE</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_GET_CPUMAP">VIR_GET_CPUMAP</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_NODEINFO_MAXCPUS">VIR_NODEINFO_MAXCPUS</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_UNUSE_CPU">VIR_UNUSE_CPU</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_USE_CPU">VIR_USE_CPU</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_UUID_BUFLEN">VIR_UUID_BUFLEN</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_UUID_STRING_BUFLEN">VIR_UUID_STRING_BUFLEN</a><br />
|
||||
</dd><dt>major</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
|
||||
</dd><dt>make</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetURI">virConnectGetURI</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInterfaceStats">virDomainInterfaceStats</a><br />
|
||||
</dd><dt>malloc</dt><dd><a href="">cpumap</a><br />
|
||||
</dd><dt>many</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>map</dt><dd><a href="html/libvirt-libvirt.html#VIR_CPU_MAPLEN">VIR_CPU_MAPLEN</a><br />
|
||||
<a href="">cpumap</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
</dd><dt>maplen</dt><dd><a href="">cpumap</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
</dd><dt>maximum</dt><dd><a href="html/libvirt-libvirt.html#_virDomainInfo">_virDomainInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetMaxVcpus">virConnectGetMaxVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetMaxMemory">virDomainGetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetMaxVcpus">virDomainGetMaxVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMaxMemory">virDomainSetMaxMemory</a><br />
|
||||
</dd><dt>maxinfo</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
</dd><dt>may</dt><dd><a href="html/libvirt-virterror.html#virConnGetLastError">virConnGetLastError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetURI">virConnectGetURI</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainCreateLinux">virDomainCreateLinux</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInterfaceStats">virDomainInterfaceStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainResume">virDomainResume</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMemory">virDomainSetMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetVcpus">virDomainSetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a><br />
|
||||
<a href="html/libvirt-virterror.html#virGetLastError">virGetLastError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkDestroy">virNetworkDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetBridgeName">virNetworkGetBridgeName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetXMLDesc">virNetworkGetXMLDesc</a><br />
|
||||
</dd><dt>means</dt><dd><a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
</dd><dt>mem</dt><dd><a href="html/libvirt-libvirt.html#_virNodeInfo">_virNodeInfo</a><br />
|
||||
</dd><dt>memory</dt><dd><a href="html/libvirt-libvirt.html#_virDomainInfo">_virDomainInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#_virNodeInfo">_virNodeInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetMaxMemory">virDomainGetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMaxMemory">virDomainSetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMemory">virDomainSetMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a><br />
|
||||
</dd><dt>message</dt><dd><a href="html/libvirt-virterror.html#_virError">_virError</a><br />
|
||||
</dd><dt>method</dt><dd><a href="html/libvirt-libvirt.html#virDomainCoreDump">virDomainCoreDump</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainRestore">virDomainRestore</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
|
||||
</dd><dt>methods</dt><dd><a href="html/libvirt-libvirt.html#virConnectOpenReadOnly">virConnectOpenReadOnly</a><br />
|
||||
</dd><dt>micro</dt><dd><a href="html/libvirt-libvirt.html#LIBVIR_VERSION_NUMBER">LIBVIR_VERSION_NUMBER</a><br />
|
||||
</dd><dt>migrate</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>migration</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>migration_features</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>minor</dt><dd><a href="html/libvirt-libvirt.html#LIBVIR_VERSION_NUMBER">LIBVIR_VERSION_NUMBER</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
|
||||
</dd><dt>missing</dt><dd><a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
</dd><dt>model</dt><dd><a href="html/libvirt-libvirt.html#_virNodeInfo">_virNodeInfo</a><br />
|
||||
</dd><dt>monitoring</dt><dd><a href="html/libvirt-libvirt.html#virConnectClose">virConnectClose</a><br />
|
||||
</dd><dt>more</dt><dd><a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetUUIDString">virDomainGetUUIDString</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInterfaceStats">virDomainInterfaceStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetUUIDString">virNetworkGetUUIDString</a><br />
|
||||
</dd><dt>moves</dt><dd><a href="html/libvirt-libvirt.html#virDomainCreate">virDomainCreate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkCreate">virNetworkCreate</a><br />
|
||||
</dd><dt>msg00096</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetType">virConnectGetType</a><br />
|
||||
</dd><dt>multiple</dt><dd><a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInterfaceStats">virDomainInterfaceStats</a><br />
|
||||
</dd><dt>multithreaded</dt><dd><a href="html/libvirt-virterror.html#virConnGetLastError">virConnGetLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virGetLastError">virGetLastError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virInitialize">virInitialize</a><br />
|
||||
</dd><dt>must</dt><dd><a href="">cpumap</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetCapabilities">virConnectGetCapabilities</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetHostname">virConnectGetHostname</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetURI">virConnectGetURI</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetOSType">virDomainGetOSType</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetSchedulerType">virDomainGetSchedulerType</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetBridgeName">virNetworkGetBridgeName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetXMLDesc">virNetworkGetXMLDesc</a><br />
|
||||
</dd></dl><h2 align="center"><a href="APIchunk0.html">A-V</a>
|
||||
<a href="APIchunk1.html">W-c</a>
|
||||
<a href="APIchunk2.html">d-g</a>
|
||||
<a href="APIchunk3.html">h-m</a>
|
||||
<a href="APIchunk4.html">n-r</a>
|
||||
<a href="APIchunk5.html">s-t</a>
|
||||
<a href="APIchunk6.html">u-w</a>
|
||||
<a href="APIchunk7.html">x-z</a>
|
||||
</h2></div></div><div class="linkList2"><div class="llinks2"><h3 class="links2"><span>main menu</span></h3><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">API Menu</a></li><li><a href="examples/index.html">C code examples</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></div><div class="llinks2"><h3 class="links2"><span>related links</span></h3><ul><li><a href="https://www.redhat.com/archives/libvir-list/">Mail archive</a></li><li><a href="https://bugzilla.redhat.com/bugzilla/buglist.cgi?product=Fedora+Core&component=libvirt&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=MODIFIED&short_desc_type=allwordssubstr&short_desc=&long_desc_type=allwordssubstr">Open bugs</a></li><li><a href="http://virt-manager.et.redhat.com/">virt-manager</a></li><li><a href="http://search.cpan.org/~danberr/Sys-Virt-0.1.0/">Perl bindings</a></li><li><a href="http://et.redhat.com/~rjones/ocaml-libvirt/">OCaml bindings</a></li><li><a href="http://www.cl.cam.ac.uk/Research/SRG/netos/xen/index.html">Xen project</a></li><li><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="12" value="Search..." /><input name="submit" type="submit" value="Go" /></form></li><li><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-90x34.gif" alt="Made with Libxml2 Logo" /></a></li></ul><p class="credits">Graphics and design by <a href="mail:dfong@redhat.com">Diana Fong</a></p></div></div><div id="bottom"><p class="p1"></p></div></div></body></html>
|
||||
@ -1,298 +0,0 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /><link rel="stylesheet" type="text/css" href="libvirt.css" /><link rel="SHORTCUT ICON" href="/32favicon.png" /><title>API Alphabetic Index n-r for libvirt</title></head><body><div id="container"><div id="intro"><div id="adjustments"></div><div id="pageHeader"></div><div id="content2"><h1 class="style1">API Alphabetic Index n-r for libvirt</h1><h2 align="center"><a href="APIchunk0.html">A-V</a>
|
||||
<a href="APIchunk1.html">W-c</a>
|
||||
<a href="APIchunk2.html">d-g</a>
|
||||
<a href="APIchunk3.html">h-m</a>
|
||||
<a href="APIchunk4.html">n-r</a>
|
||||
<a href="APIchunk5.html">s-t</a>
|
||||
<a href="APIchunk6.html">u-w</a>
|
||||
<a href="APIchunk7.html">x-z</a>
|
||||
</h2><h2>Letter n:</h2><dl><dt>name</dt><dd><a href="html/libvirt-libvirt.html#_virSchedParameter">_virSchedParameter</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetType">virConnectGetType</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetURI">virConnectGetURI</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetName">virDomainGetName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInterfaceStats">virDomainInterfaceStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByName">virDomainLookupByName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetBridgeName">virNetworkGetBridgeName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetName">virNetworkGetName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByName">virNetworkLookupByName</a><br />
|
||||
</dd><dt>names</dt><dd><a href="html/libvirt-libvirt.html#virConnectListDefinedDomains">virConnectListDefinedDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListDefinedNetworks">virConnectListDefinedNetworks</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListNetworks">virConnectListNetworks</a><br />
|
||||
</dd><dt>nanoseconds</dt><dd><a href="html/libvirt-libvirt.html#_virDomainInfo">_virDomainInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#_virVcpuInfo">_virVcpuInfo</a><br />
|
||||
</dd><dt>neccessarily</dt><dd><a href="html/libvirt-libvirt.html#VIR_NODEINFO_MAXCPUS">VIR_NODEINFO_MAXCPUS</a><br />
|
||||
</dd><dt>need</dt><dd><a href="html/libvirt-virterror.html#virConnCopyLastError">virConnCopyLastError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectClose">virConnectClose</a><br />
|
||||
<a href="html/libvirt-virterror.html#virCopyLastError">virCopyLastError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetName">virDomainGetName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetName">virNetworkGetName</a><br />
|
||||
</dd><dt>needed</dt><dd><a href="html/libvirt-libvirt.html#virConnectClose">virConnectClose</a><br />
|
||||
</dd><dt>networks</dt><dd><a href="html/libvirt-libvirt.html#virConnectListDefinedNetworks">virConnectListDefinedNetworks</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListNetworks">virConnectListNetworks</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectNumOfDefinedNetworks">virConnectNumOfDefinedNetworks</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectNumOfNetworks">virConnectNumOfNetworks</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkCreate">virNetworkCreate</a><br />
|
||||
</dd><dt>new</dt><dd><a href="html/libvirt-libvirt.html#virDomainCreateLinux">virDomainCreateLinux</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetOSType">virDomainGetOSType</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByID">virDomainLookupByID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByName">virDomainLookupByName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByUUID">virDomainLookupByUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByUUIDString">virDomainLookupByUUIDString</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetVcpus">virDomainSetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkCreateXML">virNetworkCreateXML</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByName">virNetworkLookupByName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByUUID">virNetworkLookupByUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByUUIDString">virNetworkLookupByUUIDString</a><br />
|
||||
</dd><dt>node</dt><dd><a href="html/libvirt-libvirt.html#_virNodeInfo">_virNodeInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNodeGetInfo">virNodeGetInfo</a><br />
|
||||
</dd><dt>non</dt><dd><a href="html/libvirt-libvirt.html#VIR_CPU_USABLE">VIR_CPU_USABLE</a><br />
|
||||
</dd><dt>non-NULL</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetURI">virConnectGetURI</a><br />
|
||||
</dd><dt>none</dt><dd><a href="html/libvirt-virterror.html#virConnGetLastError">virConnGetLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virGetLastError">virGetLastError</a><br />
|
||||
</dd><dt>nparams</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetSchedulerParameters">virDomainGetSchedulerParameters</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetSchedulerParameters">virDomainSetSchedulerParameters</a><br />
|
||||
</dd></dl><h2>Letter o:</h2><dl><dt>objects</dt><dd><a href="html/libvirt-libvirt.html#virDomainSetSchedulerParameters">virDomainSetSchedulerParameters</a><br />
|
||||
</dd><dt>occured</dt><dd><a href="html/libvirt-virterror.html#virConnGetLastError">virConnGetLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virGetLastError">virGetLastError</a><br />
|
||||
</dd><dt>offline</dt><dd><a href="html/libvirt-libvirt.html#_virVcpuInfo">_virVcpuInfo</a><br />
|
||||
</dd><dt>one</dt><dd><a href="html/libvirt-libvirt.html#_virDomainInfo">_virDomainInfo</a><br />
|
||||
<a href="">maplen</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainAttachDevice">virDomainAttachDevice</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainCreateLinux">virDomainCreateLinux</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDetachDevice">virDomainDetachDevice</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkCreateXML">virNetworkCreateXML</a><br />
|
||||
</dd><dt>only</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetInfo">virDomainGetInfo</a><br />
|
||||
</dd><dt>opaque</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetCapabilities">virConnectGetCapabilities</a><br />
|
||||
</dd><dt>operation</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetOSType">virDomainGetOSType</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
|
||||
</dd><dt>option</dt><dd><a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
|
||||
</dd><dt>optional</dt><dd><a href="html/libvirt-libvirt.html#virDomainCreateLinux">virDomainCreateLinux</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>order</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetBridgeName">virNetworkGetBridgeName</a><br />
|
||||
</dd><dt>order:</dt><dd><a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
</dd><dt>org</dt><dd><a href="html/libvirt-libvirt.html#virConnectOpen">virConnectOpen</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectOpenReadOnly">virConnectOpenReadOnly</a><br />
|
||||
</dd><dt>other</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetConnect">virDomainGetConnect</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetConnect">virNetworkGetConnect</a><br />
|
||||
</dd><dt>otherwise</dt><dd><a href="html/libvirt-libvirt.html#VIR_CPU_USABLE">VIR_CPU_USABLE</a><br />
|
||||
<a href="html/libvirt-virterror.html#virConnCopyLastError">virConnCopyLastError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetType">virConnectGetType</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
|
||||
<a href="html/libvirt-virterror.html#virCopyLastError">virCopyLastError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDefineXML">virDomainDefineXML</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkDefineXML">virNetworkDefineXML</a><br />
|
||||
</dd><dt>output</dt><dd><a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
|
||||
</dd></dl><h2>Letter p:</h2><dl><dt>parameter</dt><dd><a href="html/libvirt-libvirt.html#_virSchedParameter">_virSchedParameter</a><br />
|
||||
<a href="html/libvirt-virterror.html#virConnCopyLastError">virConnCopyLastError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetMaxVcpus">virConnectGetMaxVcpus</a><br />
|
||||
<a href="html/libvirt-virterror.html#virCopyLastError">virCopyLastError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetSchedulerParameters">virDomainGetSchedulerParameters</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInterfaceStats">virDomainInterfaceStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetSchedulerParameters">virDomainSetSchedulerParameters</a><br />
|
||||
</dd><dt>parameters</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetSchedulerParameters">virDomainGetSchedulerParameters</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetSchedulerType">virDomainGetSchedulerType</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetSchedulerParameters">virDomainSetSchedulerParameters</a><br />
|
||||
</dd><dt>part</dt><dd><a href="html/libvirt-virterror.html#_virError">_virError</a><br />
|
||||
</dd><dt>partial</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetInfo">virDomainGetInfo</a><br />
|
||||
</dd><dt>particular</dt><dd><a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInterfaceStats">virDomainInterfaceStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>pass</dt><dd><a href="html/libvirt-virterror.html#virConnSetErrorFunc">virConnSetErrorFunc</a><br />
|
||||
</dd><dt>passed</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetURI">virConnectGetURI</a><br />
|
||||
</dd><dt>path</dt><dd><a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainCoreDump">virDomainCoreDump</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInterfaceStats">virDomainInterfaceStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainRestore">virDomainRestore</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
|
||||
</dd><dt>per</dt><dd><a href="html/libvirt-libvirt.html#_virNodeInfo">_virNodeInfo</a><br />
|
||||
</dd><dt>perform</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>physical</dt><dd><a href="html/libvirt-libvirt.html#VIR_CPU_MAPLEN">VIR_CPU_MAPLEN</a><br />
|
||||
<a href="">cpu</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetMaxMemory">virDomainGetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMaxMemory">virDomainSetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMemory">virDomainSetMemory</a><br />
|
||||
</dd><dt>pointed</dt><dd><a href="html/libvirt-virterror.html#virResetError">virResetError</a><br />
|
||||
</dd><dt>pointers</dt><dd><a href="html/libvirt-libvirt.html#virConnectListDefinedDomains">virConnectListDefinedDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListDefinedNetworks">virConnectListDefinedNetworks</a><br />
|
||||
</dd><dt>pools</dt><dd><a href="html/libvirt-libvirt.html#virDomainCreate">virDomainCreate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkCreate">virNetworkCreate</a><br />
|
||||
</dd><dt>port</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>possible</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>potential</dt><dd><a href="html/libvirt-libvirt.html#virInitialize">virInitialize</a><br />
|
||||
</dd><dt>preferably</dt><dd><a href="html/libvirt-libvirt.html#virDomainDefineXML">virDomainDefineXML</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkDefineXML">virNetworkDefineXML</a><br />
|
||||
</dd><dt>previously</dt><dd><a href="">cpumap</a><br />
|
||||
</dd><dt>printing</dt><dd><a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
|
||||
</dd><dt>priviledged</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainCreateLinux">virDomainCreateLinux</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainResume">virDomainResume</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMaxMemory">virDomainSetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMemory">virDomainSetMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetVcpus">virDomainSetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkDestroy">virNetworkDestroy</a><br />
|
||||
</dd><dt>problem</dt><dd><a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
|
||||
</dd><dt>process</dt><dd><a href="html/libvirt-libvirt.html#virDomainResume">virDomainResume</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a><br />
|
||||
</dd><dt>processors</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>provided</dt><dd><a href="html/libvirt-virterror.html#virConnSetErrorFunc">virConnSetErrorFunc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListDefinedDomains">virConnectListDefinedDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListDefinedNetworks">virConnectListDefinedNetworks</a><br />
|
||||
<a href="html/libvirt-virterror.html#virErrorFunc">virErrorFunc</a><br />
|
||||
<a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
|
||||
</dd><dt>provides</dt><dd><a href="html/libvirt-libvirt.html#VIR_UUID_BUFLEN">VIR_UUID_BUFLEN</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_UUID_STRING_BUFLEN">VIR_UUID_STRING_BUFLEN</a><br />
|
||||
</dd><dt>providing</dt><dd><a href="html/libvirt-libvirt.html#LIBVIR_VERSION_NUMBER">LIBVIR_VERSION_NUMBER</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_SCHED_FIELD_LENGTH">VIR_DOMAIN_SCHED_FIELD_LENGTH</a><br />
|
||||
</dd><dt>public</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetName">virDomainGetName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetName">virNetworkGetName</a><br />
|
||||
</dd><dt>purpose</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd></dl><h2>Letter r:</h2><dl><dt>race</dt><dd><a href="html/libvirt-libvirt.html#virInitialize">virInitialize</a><br />
|
||||
</dd><dt>raised</dt><dd><a href="html/libvirt-virterror.html#_virError">_virError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByID">virDomainLookupByID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByName">virDomainLookupByName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByUUID">virDomainLookupByUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByUUIDString">virDomainLookupByUUIDString</a><br />
|
||||
<a href="html/libvirt-virterror.html#virErrorFunc">virErrorFunc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByName">virNetworkLookupByName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByUUID">virNetworkLookupByUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByUUIDString">virNetworkLookupByUUIDString</a><br />
|
||||
<a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
|
||||
</dd><dt>raw</dt><dd><a href="html/libvirt-libvirt.html#virDomainLookupByUUID">virDomainLookupByUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByUUID">virNetworkLookupByUUID</a><br />
|
||||
</dd><dt>reactivate</dt><dd><a href="html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a><br />
|
||||
</dd><dt>real</dt><dd><a href="html/libvirt-libvirt.html#_virVcpuInfo">_virVcpuInfo</a><br />
|
||||
<a href="">cpumap</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
</dd><dt>reboot</dt><dd><a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
|
||||
</dd><dt>receive</dt><dd><a href="html/libvirt-virterror.html#virConnCopyLastError">virConnCopyLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virCopyLastError">virCopyLastError</a><br />
|
||||
</dd><dt>redhat</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetType">virConnectGetType</a><br />
|
||||
</dd><dt>reference</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetConnect">virDomainGetConnect</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetConnect">virNetworkGetConnect</a><br />
|
||||
</dd><dt>reflect</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetMaxVcpus">virDomainGetMaxVcpus</a><br />
|
||||
</dd><dt>related</dt><dd><a href="html/libvirt-libvirt.html#VIR_UNUSE_CPU">VIR_UNUSE_CPU</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_USE_CPU">VIR_USE_CPU</a><br />
|
||||
</dd><dt>relaunch</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetXMLDesc">virNetworkGetXMLDesc</a><br />
|
||||
</dd><dt>release</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
|
||||
</dd><dt>remote</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetHostname">virConnectGetHostname</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainCoreDump">virDomainCoreDump</a><br />
|
||||
</dd><dt>rename</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>renaming</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>reporting</dt><dd><a href="html/libvirt-virterror.html#virDefaultErrorFunc">virDefaultErrorFunc</a><br />
|
||||
</dd><dt>request</dt><dd><a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
|
||||
</dd><dt>required</dt><dd><a href="html/libvirt-libvirt.html#VIR_CPU_MAPLEN">VIR_CPU_MAPLEN</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_UUID_BUFLEN">VIR_UUID_BUFLEN</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_UUID_STRING_BUFLEN">VIR_UUID_STRING_BUFLEN</a><br />
|
||||
</dd><dt>requires</dt><dd><a href="html/libvirt-libvirt.html#virDomainCreateLinux">virDomainCreateLinux</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainResume">virDomainResume</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMaxMemory">virDomainSetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMemory">virDomainSetMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetVcpus">virDomainSetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkDestroy">virNetworkDestroy</a><br />
|
||||
</dd><dt>reserved</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetMaxMemory">virDomainGetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMaxMemory">virDomainSetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMemory">virDomainSetMemory</a><br />
|
||||
</dd><dt>reset</dt><dd><a href="html/libvirt-libvirt.html#VIR_UNUSE_CPU">VIR_UNUSE_CPU</a><br />
|
||||
<a href="html/libvirt-virterror.html#virConnSetErrorFunc">virConnSetErrorFunc</a><br />
|
||||
<a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
|
||||
</dd><dt>resources</dt><dd><a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkDestroy">virNetworkDestroy</a><br />
|
||||
</dd><dt>restart</dt><dd><a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
|
||||
</dd><dt>restarted</dt><dd><a href="html/libvirt-libvirt.html#virDomainResume">virDomainResume</a><br />
|
||||
</dd><dt>restore</dt><dd><a href="html/libvirt-libvirt.html#virDomainRestore">virDomainRestore</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
|
||||
</dd><dt>restricted</dt><dd><a href="html/libvirt-libvirt.html#virConnectOpenReadOnly">virConnectOpenReadOnly</a><br />
|
||||
</dd><dt>result</dt><dd><a href="html/libvirt-virterror.html#virConnCopyLastError">virConnCopyLastError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetHostname">virConnectGetHostname</a><br />
|
||||
<a href="html/libvirt-virterror.html#virCopyLastError">virCopyLastError</a><br />
|
||||
</dd><dt>return</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetURI">virConnectGetURI</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetSchedulerParameters">virDomainGetSchedulerParameters</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetSchedulerType">virDomainGetSchedulerType</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkDestroy">virNetworkDestroy</a><br />
|
||||
</dd><dt>returned</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetCapabilities">virConnectGetCapabilities</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainCreateLinux">virDomainCreateLinux</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetAutostart">virDomainGetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetSchedulerParameters">virDomainGetSchedulerParameters</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetSchedulerType">virDomainGetSchedulerType</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInterfaceStats">virDomainInterfaceStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetSchedulerParameters">virDomainSetSchedulerParameters</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkCreateXML">virNetworkCreateXML</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetAutostart">virNetworkGetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetBridgeName">virNetworkGetBridgeName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetXMLDesc">virNetworkGetXMLDesc</a><br />
|
||||
</dd><dt>returns</dt><dd><a href="html/libvirt-libvirt.html#VIR_CPU_MAPLEN">VIR_CPU_MAPLEN</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_CPU_USABLE">VIR_CPU_USABLE</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_GET_CPUMAP">VIR_GET_CPUMAP</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetHostname">virConnectGetHostname</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetURI">virConnectGetURI</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInterfaceStats">virDomainInterfaceStats</a><br />
|
||||
</dd><dt>reused</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetXMLDesc">virNetworkGetXMLDesc</a><br />
|
||||
</dd><dt>routine</dt><dd><a href="html/libvirt-virterror.html#virDefaultErrorFunc">virDefaultErrorFunc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virInitialize">virInitialize</a><br />
|
||||
</dd><dt>running</dt><dd><a href="html/libvirt-libvirt.html#_virDomainInfo">_virDomainInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectClose">virConnectClose</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetHostname">virConnectGetHostname</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainCreate">virDomainCreate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainFree">virDomainFree</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetMaxVcpus">virDomainGetMaxVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainUndefine">virDomainUndefine</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkCreate">virNetworkCreate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkDestroy">virNetworkDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkFree">virNetworkFree</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkUndefine">virNetworkUndefine</a><br />
|
||||
</dd><dt>runs</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetMaxMemory">virDomainGetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMaxMemory">virDomainSetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMemory">virDomainSetMemory</a><br />
|
||||
</dd></dl><h2 align="center"><a href="APIchunk0.html">A-V</a>
|
||||
<a href="APIchunk1.html">W-c</a>
|
||||
<a href="APIchunk2.html">d-g</a>
|
||||
<a href="APIchunk3.html">h-m</a>
|
||||
<a href="APIchunk4.html">n-r</a>
|
||||
<a href="APIchunk5.html">s-t</a>
|
||||
<a href="APIchunk6.html">u-w</a>
|
||||
<a href="APIchunk7.html">x-z</a>
|
||||
</h2></div></div><div class="linkList2"><div class="llinks2"><h3 class="links2"><span>main menu</span></h3><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">API Menu</a></li><li><a href="examples/index.html">C code examples</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></div><div class="llinks2"><h3 class="links2"><span>related links</span></h3><ul><li><a href="https://www.redhat.com/archives/libvir-list/">Mail archive</a></li><li><a href="https://bugzilla.redhat.com/bugzilla/buglist.cgi?product=Fedora+Core&component=libvirt&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=MODIFIED&short_desc_type=allwordssubstr&short_desc=&long_desc_type=allwordssubstr">Open bugs</a></li><li><a href="http://virt-manager.et.redhat.com/">virt-manager</a></li><li><a href="http://search.cpan.org/~danberr/Sys-Virt-0.1.0/">Perl bindings</a></li><li><a href="http://et.redhat.com/~rjones/ocaml-libvirt/">OCaml bindings</a></li><li><a href="http://www.cl.cam.ac.uk/Research/SRG/netos/xen/index.html">Xen project</a></li><li><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="12" value="Search..." /><input name="submit" type="submit" value="Go" /></form></li><li><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-90x34.gif" alt="Made with Libxml2 Logo" /></a></li></ul><p class="credits">Graphics and design by <a href="mail:dfong@redhat.com">Diana Fong</a></p></div></div><div id="bottom"><p class="p1"></p></div></div></body></html>
|
||||
@ -1,260 +0,0 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /><link rel="stylesheet" type="text/css" href="libvirt.css" /><link rel="SHORTCUT ICON" href="/32favicon.png" /><title>API Alphabetic Index s-t for libvirt</title></head><body><div id="container"><div id="intro"><div id="adjustments"></div><div id="pageHeader"></div><div id="content2"><h1 class="style1">API Alphabetic Index s-t for libvirt</h1><h2 align="center"><a href="APIchunk0.html">A-V</a>
|
||||
<a href="APIchunk1.html">W-c</a>
|
||||
<a href="APIchunk2.html">d-g</a>
|
||||
<a href="APIchunk3.html">h-m</a>
|
||||
<a href="APIchunk4.html">n-r</a>
|
||||
<a href="APIchunk5.html">s-t</a>
|
||||
<a href="APIchunk6.html">u-w</a>
|
||||
<a href="APIchunk7.html">x-z</a>
|
||||
</h2><h2>Letter s:</h2><dl><dt>same</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetURI">virConnectGetURI</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetMaxVcpus">virDomainGetMaxVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetName">virDomainGetName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetSchedulerParameters">virDomainGetSchedulerParameters</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetSchedulerParameters">virDomainSetSchedulerParameters</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetName">virNetworkGetName</a><br />
|
||||
</dd><dt>save</dt><dd><a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
|
||||
</dd><dt>saved</dt><dd><a href="html/libvirt-libvirt.html#virDomainRestore">virDomainRestore</a><br />
|
||||
</dd><dt>saving</dt><dd><a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
|
||||
</dd><dt>scheduler</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetSchedulerParameters">virDomainGetSchedulerParameters</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetSchedulerType">virDomainGetSchedulerType</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetSchedulerParameters">virDomainSetSchedulerParameters</a><br />
|
||||
</dd><dt>scope</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>see</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetUUIDString">virDomainGetUUIDString</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetUUIDString">virNetworkGetUUIDString</a><br />
|
||||
</dd><dt>seen</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>set</dt><dd><a href="html/libvirt-libvirt.html#VIR_USE_CPU">VIR_USE_CPU</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectOpenReadOnly">virConnectOpenReadOnly</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainCreateLinux">virDomainCreateLinux</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetInfo">virDomainGetInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetXMLDesc">virNetworkGetXMLDesc</a><br />
|
||||
</dd><dt>should</dt><dd><a href="html/libvirt-libvirt.html#virConnectClose">virConnectClose</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectOpen">virConnectOpen</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectOpenReadOnly">virConnectOpenReadOnly</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainFree">virDomainFree</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetSchedulerParameters">virDomainGetSchedulerParameters</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInterfaceStats">virDomainInterfaceStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetAutostart">virDomainSetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetSchedulerParameters">virDomainSetSchedulerParameters</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkDestroy">virNetworkDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkFree">virNetworkFree</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkSetAutostart">virNetworkSetAutostart</a><br />
|
||||
</dd><dt>shutdown</dt><dd><a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkDestroy">virNetworkDestroy</a><br />
|
||||
</dd><dt>significant</dt><dd><a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
</dd><dt>similar</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetURI">virConnectGetURI</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainCreateLinux">virDomainCreateLinux</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkCreateXML">virNetworkCreateXML</a><br />
|
||||
</dd><dt>single</dt><dd><a href="html/libvirt-libvirt.html#VIR_CPU_MAPLEN">VIR_CPU_MAPLEN</a><br />
|
||||
</dd><dt>size</dt><dd><a href="html/libvirt-libvirt.html#_virNodeInfo">_virNodeInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListDefinedDomains">virConnectListDefinedDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListDefinedNetworks">virConnectListDefinedNetworks</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListDomains">virConnectListDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListNetworks">virConnectListNetworks</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetMaxMemory">virDomainGetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInterfaceStats">virDomainInterfaceStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMaxMemory">virDomainSetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMemory">virDomainSetMemory</a><br />
|
||||
</dd><dt>socket</dt><dd><a href="html/libvirt-libvirt.html#_virNodeInfo">_virNodeInfo</a><br />
|
||||
</dd><dt>software</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetType">virConnectGetType</a><br />
|
||||
</dd><dt>source</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>specific</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetMaxVcpus">virConnectGetMaxVcpus</a><br />
|
||||
</dd><dt>specified</dt><dd><a href="html/libvirt-libvirt.html#VIR_COPY_CPUMAP">VIR_COPY_CPUMAP</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_GET_CPUMAP">VIR_GET_CPUMAP</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>specify</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>start</dt><dd><a href="html/libvirt-libvirt.html#virDomainDefineXML">virDomainDefineXML</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkCreate">virNetworkCreate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkCreateXML">virNetworkCreateXML</a><br />
|
||||
</dd><dt>started</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetAutostart">virDomainGetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetAutostart">virDomainSetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetAutostart">virNetworkGetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkSetAutostart">virNetworkSetAutostart</a><br />
|
||||
</dd><dt>startup</dt><dd><a href="html/libvirt-libvirt.html#virInitialize">virInitialize</a><br />
|
||||
</dd><dt>state</dt><dd><a href="html/libvirt-libvirt.html#_virDomainInfo">_virDomainInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainResume">virDomainResume</a><br />
|
||||
</dd><dt>static</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetType">virConnectGetType</a><br />
|
||||
</dd><dt>statistic</dt><dd><a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInterfaceStats">virDomainInterfaceStats</a><br />
|
||||
</dd><dt>stats</dt><dd><a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInterfaceStats">virDomainInterfaceStats</a><br />
|
||||
</dd><dt>stay</dt><dd><a href="html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a><br />
|
||||
</dd><dt>stderr</dt><dd><a href="html/libvirt-virterror.html#virDefaultErrorFunc">virDefaultErrorFunc</a><br />
|
||||
<a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
|
||||
</dd><dt>still</dt><dd><a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
|
||||
</dd><dt>stop</dt><dd><a href="html/libvirt-libvirt.html#virDomainUndefine">virDomainUndefine</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkUndefine">virNetworkUndefine</a><br />
|
||||
</dd><dt>stopped</dt><dd><a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
|
||||
</dd><dt>store</dt><dd><a href="html/libvirt-libvirt.html#VIR_CPU_MAPLEN">VIR_CPU_MAPLEN</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListDefinedDomains">virConnectListDefinedDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListDefinedNetworks">virConnectListDefinedNetworks</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListDomains">virConnectListDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListNetworks">virConnectListNetworks</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectOpen">virConnectOpen</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetConnect">virDomainGetConnect</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetConnect">virNetworkGetConnect</a><br />
|
||||
</dd><dt>stored</dt><dd><a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
</dd><dt>stores</dt><dd><a href="html/libvirt-libvirt.html#virConnectListDefinedDomains">virConnectListDefinedDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListDefinedNetworks">virConnectListDefinedNetworks</a><br />
|
||||
</dd><dt>string</dt><dd><a href="html/libvirt-virterror.html#_virError">_virError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#_virNodeInfo">_virNodeInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetCapabilities">virConnectGetCapabilities</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetType">virConnectGetType</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetURI">virConnectGetURI</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetName">virDomainGetName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetOSType">virDomainGetOSType</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetSchedulerType">virDomainGetSchedulerType</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetUUIDString">virDomainGetUUIDString</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByUUIDString">virDomainLookupByUUIDString</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetName">virNetworkGetName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetUUIDString">virNetworkGetUUIDString</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByUUIDString">virNetworkLookupByUUIDString</a><br />
|
||||
</dd><dt>structure</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetCapabilities">virConnectGetCapabilities</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainFree">virDomainFree</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetInfo">virDomainGetInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInterfaceStats">virDomainInterfaceStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkDestroy">virNetworkDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkFree">virNetworkFree</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNodeGetInfo">virNodeGetInfo</a><br />
|
||||
</dd><dt>structures</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
</dd><dt>succeed</dt><dd><a href="html/libvirt-libvirt.html#virDomainCreate">virDomainCreate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkCreate">virNetworkCreate</a><br />
|
||||
</dd><dt>successful</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
|
||||
</dd><dt>suitable</dt><dd><a href="html/libvirt-virterror.html#virConnGetLastError">virConnGetLastError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-virterror.html#virGetLastError">virGetLastError</a><br />
|
||||
</dd><dt>support</dt><dd><a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInterfaceStats">virDomainInterfaceStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetVcpus">virDomainSetVcpus</a><br />
|
||||
</dd><dt>supported</dt><dd><a href="html/libvirt-libvirt.html#VIR_NODEINFO_MAXCPUS">VIR_NODEINFO_MAXCPUS</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetMaxVcpus">virConnectGetMaxVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetMaxVcpus">virDomainGetMaxVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>supports</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>suspend</dt><dd><a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
|
||||
</dd><dt>suspended</dt><dd><a href="html/libvirt-libvirt.html#virDomainResume">virDomainResume</a><br />
|
||||
</dd><dt>system</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetHostname">virConnectGetHostname</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetOSType">virDomainGetOSType</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
</dd></dl><h2>Letter t:</h2><dl><dt>target</dt><dd><a href="html/libvirt-virterror.html#virConnCopyLastError">virConnCopyLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virCopyLastError">virCopyLastError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMemory">virDomainSetMemory</a><br />
|
||||
</dd><dt>technology</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>terminated</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetType">virConnectGetType</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetBridgeName">virNetworkGetBridgeName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetXMLDesc">virNetworkGetXMLDesc</a><br />
|
||||
</dd><dt>than</dt><dd><a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetSchedulerParameters">virDomainGetSchedulerParameters</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInterfaceStats">virDomainInterfaceStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetSchedulerParameters">virDomainSetSchedulerParameters</a><br />
|
||||
</dd><dt>that</dt><dd><a href="html/libvirt-virterror.html#virConnCopyLastError">virConnCopyLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virConnGetLastError">virConnGetLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virConnResetLastError">virConnResetLastError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainCoreDump">virDomainCoreDump</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetInfo">virDomainGetInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetName">virDomainGetName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInterfaceStats">virDomainInterfaceStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetVcpus">virDomainSetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetName">virNetworkGetName</a><br />
|
||||
</dd><dt>their</dt><dd><a href="html/libvirt-libvirt.html#virConnectListDomains">virConnectListDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListNetworks">virConnectListNetworks</a><br />
|
||||
</dd><dt>then</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetHostname">virConnectGetHostname</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetURI">virConnectGetURI</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectOpenReadOnly">virConnectOpenReadOnly</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetMaxMemory">virDomainGetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByID">virDomainLookupByID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByName">virDomainLookupByName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByUUID">virDomainLookupByUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByUUIDString">virDomainLookupByUUIDString</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMaxMemory">virDomainSetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMemory">virDomainSetMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByName">virNetworkLookupByName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByUUID">virNetworkLookupByUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByUUIDString">virNetworkLookupByUUIDString</a><br />
|
||||
</dd><dt>there</dt><dd><a href="html/libvirt-libvirt.html#virConnectClose">virConnectClose</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetHostname">virConnectGetHostname</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetURI">virConnectGetURI</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
|
||||
<a href="html/libvirt-virterror.html#virErrorFunc">virErrorFunc</a><br />
|
||||
<a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
|
||||
</dd><dt>thereafter</dt><dd><a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainFree">virDomainFree</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkDestroy">virNetworkDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkFree">virNetworkFree</a><br />
|
||||
</dd><dt>this</dt><dd><a href="html/libvirt-virterror.html#_virError">_virError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetHostname">virConnectGetHostname</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetURI">virConnectGetURI</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetConnect">virDomainGetConnect</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetMaxMemory">virDomainGetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetMaxVcpus">virDomainGetMaxVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetSchedulerParameters">virDomainGetSchedulerParameters</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInterfaceStats">virDomainInterfaceStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMaxMemory">virDomainSetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMemory">virDomainSetMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetSchedulerParameters">virDomainSetSchedulerParameters</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetVcpus">virDomainSetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virInitialize">virInitialize</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetConnect">virNetworkGetConnect</a><br />
|
||||
</dd><dt>those</dt><dd><a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
|
||||
</dd><dt>threads</dt><dd><a href="html/libvirt-libvirt.html#_virNodeInfo">_virNodeInfo</a><br />
|
||||
</dd><dt>time</dt><dd><a href="html/libvirt-libvirt.html#_virDomainInfo">_virDomainInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#_virVcpuInfo">_virVcpuInfo</a><br />
|
||||
</dd><dt>together</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetConnect">virDomainGetConnect</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetConnect">virNetworkGetConnect</a><br />
|
||||
</dd><dt>total</dt><dd><a href="html/libvirt-libvirt.html#VIR_NODEINFO_MAXCPUS">VIR_NODEINFO_MAXCPUS</a><br />
|
||||
</dd><dt>transport</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>true</dt><dd><a href="html/libvirt-libvirt.html#VIR_CPU_USABLE">VIR_CPU_USABLE</a><br />
|
||||
</dd><dt>try</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>two</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
|
||||
</dd><dt>type</dt><dd><a href="html/libvirt-libvirt.html#_virSchedParameter">_virSchedParameter</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetMaxVcpus">virConnectGetMaxVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetOSType">virDomainGetOSType</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetSchedulerType">virDomainGetSchedulerType</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
|
||||
</dd><dt>types</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>typically</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd></dl><h2 align="center"><a href="APIchunk0.html">A-V</a>
|
||||
<a href="APIchunk1.html">W-c</a>
|
||||
<a href="APIchunk2.html">d-g</a>
|
||||
<a href="APIchunk3.html">h-m</a>
|
||||
<a href="APIchunk4.html">n-r</a>
|
||||
<a href="APIchunk5.html">s-t</a>
|
||||
<a href="APIchunk6.html">u-w</a>
|
||||
<a href="APIchunk7.html">x-z</a>
|
||||
</h2></div></div><div class="linkList2"><div class="llinks2"><h3 class="links2"><span>main menu</span></h3><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">API Menu</a></li><li><a href="examples/index.html">C code examples</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></div><div class="llinks2"><h3 class="links2"><span>related links</span></h3><ul><li><a href="https://www.redhat.com/archives/libvir-list/">Mail archive</a></li><li><a href="https://bugzilla.redhat.com/bugzilla/buglist.cgi?product=Fedora+Core&component=libvirt&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=MODIFIED&short_desc_type=allwordssubstr&short_desc=&long_desc_type=allwordssubstr">Open bugs</a></li><li><a href="http://virt-manager.et.redhat.com/">virt-manager</a></li><li><a href="http://search.cpan.org/~danberr/Sys-Virt-0.1.0/">Perl bindings</a></li><li><a href="http://et.redhat.com/~rjones/ocaml-libvirt/">OCaml bindings</a></li><li><a href="http://www.cl.cam.ac.uk/Research/SRG/netos/xen/index.html">Xen project</a></li><li><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="12" value="Search..." /><input name="submit" type="submit" value="Go" /></form></li><li><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-90x34.gif" alt="Made with Libxml2 Logo" /></a></li></ul><p class="credits">Graphics and design by <a href="mail:dfong@redhat.com">Diana Fong</a></p></div></div><div id="bottom"><p class="p1"></p></div></div></body></html>
|
||||
@ -1,228 +0,0 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /><link rel="stylesheet" type="text/css" href="libvirt.css" /><link rel="SHORTCUT ICON" href="/32favicon.png" /><title>API Alphabetic Index u-w for libvirt</title></head><body><div id="container"><div id="intro"><div id="adjustments"></div><div id="pageHeader"></div><div id="content2"><h1 class="style1">API Alphabetic Index u-w for libvirt</h1><h2 align="center"><a href="APIchunk0.html">A-V</a>
|
||||
<a href="APIchunk1.html">W-c</a>
|
||||
<a href="APIchunk2.html">d-g</a>
|
||||
<a href="APIchunk3.html">h-m</a>
|
||||
<a href="APIchunk4.html">n-r</a>
|
||||
<a href="APIchunk5.html">s-t</a>
|
||||
<a href="APIchunk6.html">u-w</a>
|
||||
<a href="APIchunk7.html">x-z</a>
|
||||
</h2><h2>Letter u:</h2><dl><dt>undefine</dt><dd><a href="html/libvirt-libvirt.html#virDomainUndefine">virDomainUndefine</a><br />
|
||||
</dd><dt>underlying</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetVcpus">virDomainSetVcpus</a><br />
|
||||
</dd><dt>uniform</dt><dd><a href="html/libvirt-libvirt.html#_virNodeInfo">_virNodeInfo</a><br />
|
||||
</dd><dt>unknown</dt><dd><a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
|
||||
</dd><dt>unsigned</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetID">virDomainGetID</a><br />
|
||||
</dd><dt>unused</dt><dd><a href="html/libvirt-libvirt.html#virDomainCoreDump">virDomainCoreDump</a><br />
|
||||
</dd><dt>uri</dt><dd><a href="html/libvirt-libvirt.html#virConnectOpen">virConnectOpen</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectOpenReadOnly">virConnectOpenReadOnly</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>usable</dt><dd><a href="html/libvirt-libvirt.html#VIR_CPU_USABLE">VIR_CPU_USABLE</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_UNUSE_CPU">VIR_UNUSE_CPU</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_USE_CPU">VIR_USE_CPU</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectOpenReadOnly">virConnectOpenReadOnly</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
|
||||
</dd><dt>use</dt><dd><a href="html/libvirt-virterror.html#virConnGetLastError">virConnGetLastError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetCapabilities">virConnectGetCapabilities</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetConnect">virDomainGetConnect</a><br />
|
||||
<a href="html/libvirt-virterror.html#virErrorFunc">virErrorFunc</a><br />
|
||||
<a href="html/libvirt-virterror.html#virGetLastError">virGetLastError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetConnect">virNetworkGetConnect</a><br />
|
||||
</dd><dt>used</dt><dd><a href="html/libvirt-libvirt.html#VIR_COPY_CPUMAP">VIR_COPY_CPUMAP</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_CPU_MAPLEN">VIR_CPU_MAPLEN</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_CPU_USABLE">VIR_CPU_USABLE</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_GET_CPUMAP">VIR_GET_CPUMAP</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_UNUSE_CPU">VIR_UNUSE_CPU</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_USE_CPU">VIR_USE_CPU</a><br />
|
||||
<a href="html/libvirt-libvirt.html#_virDomainInfo">_virDomainInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#_virVcpuInfo">_virVcpuInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetType">virConnectGetType</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetURI">virConnectGetURI</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainFree">virDomainFree</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetInfo">virDomainGetInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetVcpus">virDomainSetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkDestroy">virNetworkDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkFree">virNetworkFree</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetXMLDesc">virNetworkGetXMLDesc</a><br />
|
||||
</dd><dt>user</dt><dd><a href="html/libvirt-virterror.html#virConnSetErrorFunc">virConnSetErrorFunc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetInfo">virDomainGetInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-virterror.html#virErrorFunc">virErrorFunc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNodeGetInfo">virNodeGetInfo</a><br />
|
||||
<a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
|
||||
</dd><dt>usual</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd></dl><h2>Letter v:</h2><dl><dt>value</dt><dd><a href="html/libvirt-libvirt.html#VIR_CPU_USABLE">VIR_CPU_USABLE</a><br />
|
||||
<a href="html/libvirt-libvirt.html#_virVcpuInfo">_virVcpuInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetMaxVcpus">virConnectGetMaxVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetAutostart">virDomainGetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetSchedulerParameters">virDomainGetSchedulerParameters</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetSchedulerType">virDomainGetSchedulerType</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetSchedulerParameters">virDomainSetSchedulerParameters</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetAutostart">virNetworkGetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetBridgeName">virNetworkGetBridgeName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetXMLDesc">virNetworkGetXMLDesc</a><br />
|
||||
</dd><dt>values</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetSchedulerParameters">virDomainGetSchedulerParameters</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
|
||||
</dd><dt>vcpu</dt><dd><a href="html/libvirt-libvirt.html#VIR_COPY_CPUMAP">VIR_COPY_CPUMAP</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_CPU_USABLE">VIR_CPU_USABLE</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_GET_CPUMAP">VIR_GET_CPUMAP</a><br />
|
||||
</dd><dt>vcpus</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
</dd><dt>version</dt><dd><a href="html/libvirt-libvirt.html#LIBVIR_VERSION_NUMBER">LIBVIR_VERSION_NUMBER</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
|
||||
</dd><dt>virCapabilities</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetCapabilities">virConnectGetCapabilities</a><br />
|
||||
</dd><dt>virCapabilitiesPtr</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetCapabilities">virConnectGetCapabilities</a><br />
|
||||
</dd><dt>virConnCopyLastError</dt><dd><a href="html/libvirt-virterror.html#virConnGetLastError">virConnGetLastError</a><br />
|
||||
</dd><dt>virConnectGetCapabilities</dt><dd><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</dd><dt>virConnectGetMaxVcpus</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetMaxVcpus">virDomainGetMaxVcpus</a><br />
|
||||
</dd><dt>virConnectOpen</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetURI">virConnectGetURI</a><br />
|
||||
</dd><dt>virConnectOpenReadOnly</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetURI">virConnectGetURI</a><br />
|
||||
</dd><dt>virConnectPtr</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetConnect">virDomainGetConnect</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetConnect">virNetworkGetConnect</a><br />
|
||||
</dd><dt>virCopyLastError</dt><dd><a href="html/libvirt-virterror.html#virGetLastError">virGetLastError</a><br />
|
||||
</dd><dt>virDomainCreateLinux</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a><br />
|
||||
</dd><dt>virDomainFlags</dt><dd><a href="html/libvirt-libvirt.html#_virDomainInfo">_virDomainInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainCreateLinux">virDomainCreateLinux</a><br />
|
||||
</dd><dt>virDomainGetSchedulerType</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetSchedulerParameters">virDomainGetSchedulerParameters</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetSchedulerParameters">virDomainSetSchedulerParameters</a><br />
|
||||
</dd><dt>virDomainGetUUID</dt><dd><a href="html/libvirt-libvirt.html#VIR_UUID_BUFLEN">VIR_UUID_BUFLEN</a><br />
|
||||
</dd><dt>virDomainGetUUIDString</dt><dd><a href="html/libvirt-libvirt.html#VIR_UUID_STRING_BUFLEN">VIR_UUID_STRING_BUFLEN</a><br />
|
||||
</dd><dt>virDomainGetVcpus</dt><dd><a href="html/libvirt-libvirt.html#VIR_COPY_CPUMAP">VIR_COPY_CPUMAP</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_CPU_USABLE">VIR_CPU_USABLE</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_GET_CPUMAP">VIR_GET_CPUMAP</a><br />
|
||||
</dd><dt>virDomainGetXMLDesc</dt><dd><a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainCreateLinux">virDomainCreateLinux</a><br />
|
||||
</dd><dt>virDomainInfo</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetInfo">virDomainGetInfo</a><br />
|
||||
</dd><dt>virDomainPinVcpu</dt><dd><a href="html/libvirt-libvirt.html#VIR_COPY_CPUMAP">VIR_COPY_CPUMAP</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_CPU_MAPLEN">VIR_CPU_MAPLEN</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_GET_CPUMAP">VIR_GET_CPUMAP</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_UNUSE_CPU">VIR_UNUSE_CPU</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_USE_CPU">VIR_USE_CPU</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
</dd><dt>virDomainRestore</dt><dd><a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
|
||||
</dd><dt>virDomainResume</dt><dd><a href="html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a><br />
|
||||
</dd><dt>virDomainSave</dt><dd><a href="html/libvirt-libvirt.html#virDomainRestore">virDomainRestore</a><br />
|
||||
</dd><dt>virError</dt><dd><a href="html/libvirt-virterror.html#virResetError">virResetError</a><br />
|
||||
</dd><dt>virErrorNumber</dt><dd><a href="html/libvirt-virterror.html#_virError">_virError</a><br />
|
||||
</dd><dt>virNetworkCreateXML</dt><dd><a href="html/libvirt-libvirt.html#virNetworkGetXMLDesc">virNetworkGetXMLDesc</a><br />
|
||||
</dd><dt>virNetworkGetXMLDesc</dt><dd><a href="html/libvirt-libvirt.html#virNetworkCreateXML">virNetworkCreateXML</a><br />
|
||||
</dd><dt>virNodeInfo</dt><dd><a href="">nodeinfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNodeGetInfo">virNodeGetInfo</a><br />
|
||||
</dd><dt>virResetError</dt><dd><a href="html/libvirt-virterror.html#virConnCopyLastError">virConnCopyLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virCopyLastError">virCopyLastError</a><br />
|
||||
</dd><dt>virSchedParameter</dt><dd><a href="html/libvirt-libvirt.html#VIR_DOMAIN_SCHED_FIELD_LENGTH">VIR_DOMAIN_SCHED_FIELD_LENGTH</a><br />
|
||||
</dd><dt>virSuspendDomain</dt><dd><a href="html/libvirt-libvirt.html#virDomainResume">virDomainResume</a><br />
|
||||
</dd><dt>virVcpuInfo</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
</dd><dt>virVcpuState</dt><dd><a href="html/libvirt-libvirt.html#_virVcpuInfo">_virVcpuInfo</a><br />
|
||||
</dd><dt>virtual</dt><dd><a href="html/libvirt-libvirt.html#VIR_CPU_MAPLEN">VIR_CPU_MAPLEN</a><br />
|
||||
<a href="html/libvirt-libvirt.html#_virDomainInfo">_virDomainInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#_virVcpuInfo">_virVcpuInfo</a><br />
|
||||
<a href="">vcpu</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetMaxVcpus">virConnectGetMaxVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainAttachDevice">virDomainAttachDevice</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDetachDevice">virDomainDetachDevice</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetMaxVcpus">virDomainGetMaxVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetVcpus">virDomainSetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkCreateXML">virNetworkCreateXML</a><br />
|
||||
</dd><dt>virtualization</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetVcpus">virDomainSetVcpus</a><br />
|
||||
</dd></dl><h2>Letter w:</h2><dl><dt>was</dt><dd><a href="html/libvirt-virterror.html#virConnCopyLastError">virConnCopyLastError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetHostname">virConnectGetHostname</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetURI">virConnectGetURI</a><br />
|
||||
<a href="html/libvirt-virterror.html#virCopyLastError">virCopyLastError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetMaxVcpus">virDomainGetMaxVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainResume">virDomainResume</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
|
||||
</dd><dt>when</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetAutostart">virDomainGetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetAutostart">virDomainSetAutostart</a><br />
|
||||
<a href="html/libvirt-virterror.html#virErrorFunc">virErrorFunc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virInitialize">virInitialize</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetAutostart">virNetworkGetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkSetAutostart">virNetworkSetAutostart</a><br />
|
||||
</dd><dt>where</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetMaxMemory">virDomainGetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainResume">virDomainResume</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMaxMemory">virDomainSetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMemory">virDomainSetMemory</a><br />
|
||||
</dd><dt>whether</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetAutostart">virDomainGetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetAutostart">virDomainSetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetAutostart">virNetworkGetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkSetAutostart">virNetworkSetAutostart</a><br />
|
||||
</dd><dt>which</dt><dd><a href="html/libvirt-virterror.html#virConnGetLastError">virConnGetLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virConnSetErrorFunc">virConnSetErrorFunc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectClose">virConnectClose</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetHostname">virConnectGetHostname</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetURI">virConnectGetURI</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInterfaceStats">virDomainInterfaceStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
<a href="html/libvirt-virterror.html#virGetLastError">virGetLastError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetBridgeName">virNetworkGetBridgeName</a><br />
|
||||
<a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
|
||||
</dd><dt>while</dt><dd><a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
|
||||
</dd><dt>will</dt><dd><a href="html/libvirt-virterror.html#virConnCopyLastError">virConnCopyLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virConnSetErrorFunc">virConnSetErrorFunc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetURI">virConnectGetURI</a><br />
|
||||
<a href="html/libvirt-virterror.html#virCopyLastError">virCopyLastError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainCoreDump">virDomainCoreDump</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetMaxVcpus">virDomainGetMaxVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetName">virDomainGetName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetSchedulerParameters">virDomainGetSchedulerParameters</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainRestore">virDomainRestore</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetName">virNetworkGetName</a><br />
|
||||
<a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
|
||||
</dd><dt>with</dt><dd><a href="html/libvirt-libvirt.html#VIR_COPY_CPUMAP">VIR_COPY_CPUMAP</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_CPU_MAPLEN">VIR_CPU_MAPLEN</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_CPU_USABLE">VIR_CPU_USABLE</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_GET_CPUMAP">VIR_GET_CPUMAP</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_UNUSE_CPU">VIR_UNUSE_CPU</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_USE_CPU">VIR_USE_CPU</a><br />
|
||||
<a href="html/libvirt-virterror.html#virConnCopyLastError">virConnCopyLastError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectClose">virConnectClose</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
|
||||
<a href="html/libvirt-virterror.html#virCopyLastError">virCopyLastError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetConnect">virDomainGetConnect</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetMaxVcpus">virDomainGetMaxVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetSchedulerParameters">virDomainGetSchedulerParameters</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetConnect">virNetworkGetConnect</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetXMLDesc">virNetworkGetXMLDesc</a><br />
|
||||
</dd><dt>within</dt><dd><a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInterfaceStats">virDomainInterfaceStats</a><br />
|
||||
</dd><dt>without</dt><dd><a href="html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a><br />
|
||||
</dd><dt>work</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
|
||||
</dd><dt>writing</dt><dd><a href="html/libvirt-libvirt.html#virDomainGetConnect">virDomainGetConnect</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetConnect">virNetworkGetConnect</a><br />
|
||||
</dd><dt>www</dt><dd><a href="html/libvirt-libvirt.html#virConnectGetType">virConnectGetType</a><br />
|
||||
</dd></dl><h2 align="center"><a href="APIchunk0.html">A-V</a>
|
||||
<a href="APIchunk1.html">W-c</a>
|
||||
<a href="APIchunk2.html">d-g</a>
|
||||
<a href="APIchunk3.html">h-m</a>
|
||||
<a href="APIchunk4.html">n-r</a>
|
||||
<a href="APIchunk5.html">s-t</a>
|
||||
<a href="APIchunk6.html">u-w</a>
|
||||
<a href="APIchunk7.html">x-z</a>
|
||||
</h2></div></div><div class="linkList2"><div class="llinks2"><h3 class="links2"><span>main menu</span></h3><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">API Menu</a></li><li><a href="examples/index.html">C code examples</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></div><div class="llinks2"><h3 class="links2"><span>related links</span></h3><ul><li><a href="https://www.redhat.com/archives/libvir-list/">Mail archive</a></li><li><a href="https://bugzilla.redhat.com/bugzilla/buglist.cgi?product=Fedora+Core&component=libvirt&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=MODIFIED&short_desc_type=allwordssubstr&short_desc=&long_desc_type=allwordssubstr">Open bugs</a></li><li><a href="http://virt-manager.et.redhat.com/">virt-manager</a></li><li><a href="http://search.cpan.org/~danberr/Sys-Virt-0.1.0/">Perl bindings</a></li><li><a href="http://et.redhat.com/~rjones/ocaml-libvirt/">OCaml bindings</a></li><li><a href="http://www.cl.cam.ac.uk/Research/SRG/netos/xen/index.html">Xen project</a></li><li><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="12" value="Search..." /><input name="submit" type="submit" value="Go" /></form></li><li><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-90x34.gif" alt="Made with Libxml2 Logo" /></a></li></ul><p class="credits">Graphics and design by <a href="mail:dfong@redhat.com">Diana Fong</a></p></div></div><div id="bottom"><p class="p1"></p></div></div></body></html>
|
||||
@ -1,23 +0,0 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /><link rel="stylesheet" type="text/css" href="libvirt.css" /><link rel="SHORTCUT ICON" href="/32favicon.png" /><title>List of constructors for libvirt</title></head><body><div id="container"><div id="intro"><div id="adjustments"></div><div id="pageHeader"></div><div id="content2"><h1 class="style1">List of constructors for libvirt</h1><h2>Type unsigned int:</h2><p><a href="html/libvirt-libvirt.html#virDomainGetID">virDomainGetID</a><br />
|
||||
</p><h2>Type unsigned long:</h2><p><a href="html/libvirt-libvirt.html#virDomainGetMaxMemory">virDomainGetMaxMemory</a><br />
|
||||
</p><h2>Type virConnectPtr:</h2><p><a href="html/libvirt-libvirt.html#virConnectOpen">virConnectOpen</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectOpenReadOnly">virConnectOpenReadOnly</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetConnect">virDomainGetConnect</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetConnect">virNetworkGetConnect</a><br />
|
||||
</p><h2>Type virDomainPtr:</h2><p><a href="html/libvirt-libvirt.html#virDomainCreateLinux">virDomainCreateLinux</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDefineXML">virDomainDefineXML</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByID">virDomainLookupByID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByName">virDomainLookupByName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByUUID">virDomainLookupByUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByUUIDString">virDomainLookupByUUIDString</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
</p><h2>Type virErrorPtr:</h2><p><a href="html/libvirt-virterror.html#virConnGetLastError">virConnGetLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virGetLastError">virGetLastError</a><br />
|
||||
</p><h2>Type virNetworkPtr:</h2><p><a href="html/libvirt-libvirt.html#virNetworkCreateXML">virNetworkCreateXML</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkDefineXML">virNetworkDefineXML</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByName">virNetworkLookupByName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByUUID">virNetworkLookupByUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByUUIDString">virNetworkLookupByUUIDString</a><br />
|
||||
</p></div></div><div class="linkList2"><div class="llinks2"><h3 class="links2"><span>main menu</span></h3><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">API Menu</a></li><li><a href="examples/index.html">C code examples</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></div><div class="llinks2"><h3 class="links2"><span>related links</span></h3><ul><li><a href="https://www.redhat.com/archives/libvir-list/">Mail archive</a></li><li><a href="https://bugzilla.redhat.com/bugzilla/buglist.cgi?product=Fedora+Core&component=libvirt&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=MODIFIED&short_desc_type=allwordssubstr&short_desc=&long_desc_type=allwordssubstr">Open bugs</a></li><li><a href="http://virt-manager.et.redhat.com/">virt-manager</a></li><li><a href="http://search.cpan.org/~danberr/Sys-Virt-0.1.0/">Perl bindings</a></li><li><a href="http://et.redhat.com/~rjones/ocaml-libvirt/">OCaml bindings</a></li><li><a href="http://www.cl.cam.ac.uk/Research/SRG/netos/xen/index.html">Xen project</a></li><li><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="12" value="Search..." /><input name="submit" type="submit" value="Go" /></form></li><li><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-90x34.gif" alt="Made with Libxml2 Logo" /></a></li></ul><p class="credits">Graphics and design by <a href="mail:dfong@redhat.com">Diana Fong</a></p></div></div><div id="bottom"><p class="p1"></p></div></div></body></html>
|
||||
@ -1,223 +0,0 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /><link rel="stylesheet" type="text/css" href="libvirt.css" /><link rel="SHORTCUT ICON" href="/32favicon.png" /><title>List of Symbols per Module for libvirt</title></head><body><div id="container"><div id="intro"><div id="adjustments"></div><div id="pageHeader"></div><div id="content2"><h1 class="style1">List of Symbols per Module for libvirt</h1><h2><a name="libvirt" id="libvirt">Module libvirt</a>:</h2><p><a href="html/libvirt-libvirt.html#LIBVIR_VERSION_NUMBER">LIBVIR_VERSION_NUMBER</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_COPY_CPUMAP">VIR_COPY_CPUMAP</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_CPU_MAPLEN">VIR_CPU_MAPLEN</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_CPU_USABLE">VIR_CPU_USABLE</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_BLOCKED">VIR_DOMAIN_BLOCKED</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_CRASHED">VIR_DOMAIN_CRASHED</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_DESTROY">VIR_DOMAIN_DESTROY</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_NONE">VIR_DOMAIN_NONE</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_NOSTATE">VIR_DOMAIN_NOSTATE</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_PAUSED">VIR_DOMAIN_PAUSED</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_PRESERVE">VIR_DOMAIN_PRESERVE</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_RENAME_RESTART">VIR_DOMAIN_RENAME_RESTART</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_RESTART">VIR_DOMAIN_RESTART</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_RUNNING">VIR_DOMAIN_RUNNING</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_SCHED_FIELD_BOOLEAN">VIR_DOMAIN_SCHED_FIELD_BOOLEAN</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_SCHED_FIELD_DOUBLE">VIR_DOMAIN_SCHED_FIELD_DOUBLE</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_SCHED_FIELD_INT">VIR_DOMAIN_SCHED_FIELD_INT</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_SCHED_FIELD_LENGTH">VIR_DOMAIN_SCHED_FIELD_LENGTH</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_SCHED_FIELD_LLONG">VIR_DOMAIN_SCHED_FIELD_LLONG</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_SCHED_FIELD_UINT">VIR_DOMAIN_SCHED_FIELD_UINT</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_SCHED_FIELD_ULLONG">VIR_DOMAIN_SCHED_FIELD_ULLONG</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_SHUTDOWN">VIR_DOMAIN_SHUTDOWN</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_SHUTOFF">VIR_DOMAIN_SHUTOFF</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_GET_CPUMAP">VIR_GET_CPUMAP</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_MIGRATE_LIVE">VIR_MIGRATE_LIVE</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_NODEINFO_MAXCPUS">VIR_NODEINFO_MAXCPUS</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_UNUSE_CPU">VIR_UNUSE_CPU</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_USE_CPU">VIR_USE_CPU</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_UUID_BUFLEN">VIR_UUID_BUFLEN</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_UUID_STRING_BUFLEN">VIR_UUID_STRING_BUFLEN</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_VCPU_BLOCKED">VIR_VCPU_BLOCKED</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_VCPU_OFFLINE">VIR_VCPU_OFFLINE</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_VCPU_RUNNING">VIR_VCPU_RUNNING</a><br />
|
||||
<a href="html/libvirt-libvirt.html#_virDomainBlockStats">_virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#_virDomainInfo">_virDomainInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#_virDomainInterfaceStats">_virDomainInterfaceStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#_virNodeInfo">_virNodeInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#_virSchedParameter">_virSchedParameter</a><br />
|
||||
<a href="html/libvirt-libvirt.html#_virVcpuInfo">_virVcpuInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnect">virConnect</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectClose">virConnectClose</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetCapabilities">virConnectGetCapabilities</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetHostname">virConnectGetHostname</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetMaxVcpus">virConnectGetMaxVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetType">virConnectGetType</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetURI">virConnectGetURI</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListDefinedDomains">virConnectListDefinedDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListDefinedNetworks">virConnectListDefinedNetworks</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListDomains">virConnectListDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListNetworks">virConnectListNetworks</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectNumOfDefinedDomains">virConnectNumOfDefinedDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectNumOfDefinedNetworks">virConnectNumOfDefinedNetworks</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectNumOfDomains">virConnectNumOfDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectNumOfNetworks">virConnectNumOfNetworks</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectOpen">virConnectOpen</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectOpenReadOnly">virConnectOpenReadOnly</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectPtr">virConnectPtr</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomain">virDomain</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainAttachDevice">virDomainAttachDevice</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainBlockStatsPtr">virDomainBlockStatsPtr</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainCoreDump">virDomainCoreDump</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainCreate">virDomainCreate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainCreateFlags">virDomainCreateFlags</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainCreateLinux">virDomainCreateLinux</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDefineXML">virDomainDefineXML</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDetachDevice">virDomainDetachDevice</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainFree">virDomainFree</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetAutostart">virDomainGetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetConnect">virDomainGetConnect</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetID">virDomainGetID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetInfo">virDomainGetInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetMaxMemory">virDomainGetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetMaxVcpus">virDomainGetMaxVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetName">virDomainGetName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetOSType">virDomainGetOSType</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetSchedulerParameters">virDomainGetSchedulerParameters</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetSchedulerType">virDomainGetSchedulerType</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetUUID">virDomainGetUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetUUIDString">virDomainGetUUIDString</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInfo">virDomainInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInfoPtr">virDomainInfoPtr</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInterfaceStats">virDomainInterfaceStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInterfaceStatsPtr">virDomainInterfaceStatsPtr</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByID">virDomainLookupByID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByName">virDomainLookupByName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByUUID">virDomainLookupByUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByUUIDString">virDomainLookupByUUIDString</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrateFlags">virDomainMigrateFlags</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainPtr">virDomainPtr</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainRestart">virDomainRestart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainRestore">virDomainRestore</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainResume">virDomainResume</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetAutostart">virDomainSetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMaxMemory">virDomainSetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMemory">virDomainSetMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetSchedulerParameters">virDomainSetSchedulerParameters</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetVcpus">virDomainSetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainState">virDomainState</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainUndefine">virDomainUndefine</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virInitialize">virInitialize</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetwork">virNetwork</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkCreate">virNetworkCreate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkCreateXML">virNetworkCreateXML</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkDefineXML">virNetworkDefineXML</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkDestroy">virNetworkDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkFree">virNetworkFree</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetAutostart">virNetworkGetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetBridgeName">virNetworkGetBridgeName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetConnect">virNetworkGetConnect</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetName">virNetworkGetName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetUUID">virNetworkGetUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetUUIDString">virNetworkGetUUIDString</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetXMLDesc">virNetworkGetXMLDesc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByName">virNetworkLookupByName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByUUID">virNetworkLookupByUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByUUIDString">virNetworkLookupByUUIDString</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkSetAutostart">virNetworkSetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkUndefine">virNetworkUndefine</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNodeGetInfo">virNodeGetInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNodeInfo">virNodeInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNodeInfoPtr">virNodeInfoPtr</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virSchedParameter">virSchedParameter</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virSchedParameterPtr">virSchedParameterPtr</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virSchedParameterType">virSchedParameterType</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virVcpuInfo">virVcpuInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virVcpuInfoPtr">virVcpuInfoPtr</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virVcpuState">virVcpuState</a><br />
|
||||
</p><h2><a name="virterror" id="virterror">Module virterror</a>:</h2><p><a href="html/libvirt-virterror.html#VIR_ERR_CALL_FAILED">VIR_ERR_CALL_FAILED</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_CONF_SYNTAX">VIR_ERR_CONF_SYNTAX</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_DOM_EXIST">VIR_ERR_DOM_EXIST</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_DRIVER_FULL">VIR_ERR_DRIVER_FULL</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_ERROR">VIR_ERR_ERROR</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_GET_FAILED">VIR_ERR_GET_FAILED</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_GNUTLS_ERROR">VIR_ERR_GNUTLS_ERROR</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_HTTP_ERROR">VIR_ERR_HTTP_ERROR</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_INTERNAL_ERROR">VIR_ERR_INTERNAL_ERROR</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_INVALID_ARG">VIR_ERR_INVALID_ARG</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_INVALID_CONN">VIR_ERR_INVALID_CONN</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_INVALID_DOMAIN">VIR_ERR_INVALID_DOMAIN</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_INVALID_MAC">VIR_ERR_INVALID_MAC</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_INVALID_NETWORK">VIR_ERR_INVALID_NETWORK</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_NETWORK_EXIST">VIR_ERR_NETWORK_EXIST</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_NONE">VIR_ERR_NONE</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_NO_CONNECT">VIR_ERR_NO_CONNECT</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_NO_DEVICE">VIR_ERR_NO_DEVICE</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_NO_DOMAIN">VIR_ERR_NO_DOMAIN</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_NO_KERNEL">VIR_ERR_NO_KERNEL</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_NO_MEMORY">VIR_ERR_NO_MEMORY</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_NO_NAME">VIR_ERR_NO_NAME</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_NO_NETWORK">VIR_ERR_NO_NETWORK</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_NO_OS">VIR_ERR_NO_OS</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_NO_ROOT">VIR_ERR_NO_ROOT</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_NO_SOURCE">VIR_ERR_NO_SOURCE</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_NO_SUPPORT">VIR_ERR_NO_SUPPORT</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_NO_TARGET">VIR_ERR_NO_TARGET</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_NO_XEN">VIR_ERR_NO_XEN</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_NO_XENSTORE">VIR_ERR_NO_XENSTORE</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_OK">VIR_ERR_OK</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_OPEN_FAILED">VIR_ERR_OPEN_FAILED</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_OPERATION_DENIED">VIR_ERR_OPERATION_DENIED</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_OPERATION_FAILED">VIR_ERR_OPERATION_FAILED</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_OS_TYPE">VIR_ERR_OS_TYPE</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_PARSE_FAILED">VIR_ERR_PARSE_FAILED</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_POST_FAILED">VIR_ERR_POST_FAILED</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_READ_FAILED">VIR_ERR_READ_FAILED</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_RPC">VIR_ERR_RPC</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_SEXPR_SERIAL">VIR_ERR_SEXPR_SERIAL</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_SYSTEM_ERROR">VIR_ERR_SYSTEM_ERROR</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_UNKNOWN_HOST">VIR_ERR_UNKNOWN_HOST</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_WARNING">VIR_ERR_WARNING</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_WRITE_FAILED">VIR_ERR_WRITE_FAILED</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_XEN_CALL">VIR_ERR_XEN_CALL</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_XML_DETAIL">VIR_ERR_XML_DETAIL</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_XML_ERROR">VIR_ERR_XML_ERROR</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_FROM_CONF">VIR_FROM_CONF</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_FROM_DOM">VIR_FROM_DOM</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_FROM_NET">VIR_FROM_NET</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_FROM_NONE">VIR_FROM_NONE</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_FROM_OPENVZ">VIR_FROM_OPENVZ</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_FROM_PROXY">VIR_FROM_PROXY</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_FROM_QEMU">VIR_FROM_QEMU</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_FROM_REMOTE">VIR_FROM_REMOTE</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_FROM_RPC">VIR_FROM_RPC</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_FROM_SEXPR">VIR_FROM_SEXPR</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_FROM_TEST">VIR_FROM_TEST</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_FROM_XEN">VIR_FROM_XEN</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_FROM_XEND">VIR_FROM_XEND</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_FROM_XENSTORE">VIR_FROM_XENSTORE</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_FROM_XML">VIR_FROM_XML</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_WAR_NO_NETWORK">VIR_WAR_NO_NETWORK</a><br />
|
||||
<a href="html/libvirt-virterror.html#_virError">_virError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virConnCopyLastError">virConnCopyLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virConnGetLastError">virConnGetLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virConnResetLastError">virConnResetLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virConnSetErrorFunc">virConnSetErrorFunc</a><br />
|
||||
<a href="html/libvirt-virterror.html#virCopyLastError">virCopyLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virDefaultErrorFunc">virDefaultErrorFunc</a><br />
|
||||
<a href="html/libvirt-virterror.html#virError">virError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virErrorDomain">virErrorDomain</a><br />
|
||||
<a href="html/libvirt-virterror.html#virErrorFunc">virErrorFunc</a><br />
|
||||
<a href="html/libvirt-virterror.html#virErrorLevel">virErrorLevel</a><br />
|
||||
<a href="html/libvirt-virterror.html#virErrorNumber">virErrorNumber</a><br />
|
||||
<a href="html/libvirt-virterror.html#virErrorPtr">virErrorPtr</a><br />
|
||||
<a href="html/libvirt-virterror.html#virGetLastError">virGetLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virResetError">virResetError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virResetLastError">virResetLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
|
||||
</p></div></div><div class="linkList2"><div class="llinks2"><h3 class="links2"><span>main menu</span></h3><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">API Menu</a></li><li><a href="examples/index.html">C code examples</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></div><div class="llinks2"><h3 class="links2"><span>related links</span></h3><ul><li><a href="https://www.redhat.com/archives/libvir-list/">Mail archive</a></li><li><a href="https://bugzilla.redhat.com/bugzilla/buglist.cgi?product=Fedora+Core&component=libvirt&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=MODIFIED&short_desc_type=allwordssubstr&short_desc=&long_desc_type=allwordssubstr">Open bugs</a></li><li><a href="http://virt-manager.et.redhat.com/">virt-manager</a></li><li><a href="http://search.cpan.org/~danberr/Sys-Virt-0.1.0/">Perl bindings</a></li><li><a href="http://et.redhat.com/~rjones/ocaml-libvirt/">OCaml bindings</a></li><li><a href="http://www.cl.cam.ac.uk/Research/SRG/netos/xen/index.html">Xen project</a></li><li><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="12" value="Search..." /><input name="submit" type="submit" value="Go" /></form></li><li><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-90x34.gif" alt="Made with Libxml2 Logo" /></a></li></ul><p class="credits">Graphics and design by <a href="mail:dfong@redhat.com">Diana Fong</a></p></div></div><div id="bottom"><p class="p1"></p></div></div></body></html>
|
||||
@ -1,125 +0,0 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /><link rel="stylesheet" type="text/css" href="libvirt.css" /><link rel="SHORTCUT ICON" href="/32favicon.png" /><title>List of function manipulating types in libvirt</title></head><body><div id="container"><div id="intro"><div id="adjustments"></div><div id="pageHeader"></div><div id="content2"><h1 class="style1">List of function manipulating types in libvirt</h1><h2>Type char ** const:</h2><p><a href="html/libvirt-libvirt.html#virConnectListDefinedDomains">virConnectListDefinedDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListDefinedNetworks">virConnectListDefinedNetworks</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListNetworks">virConnectListNetworks</a><br />
|
||||
</p><h2>Type const unsigned char *:</h2><p><a href="html/libvirt-libvirt.html#virDomainLookupByUUID">virDomainLookupByUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByUUID">virNetworkLookupByUUID</a><br />
|
||||
</p><h2>Type int *:</h2><p><a href="html/libvirt-libvirt.html#virConnectListDomains">virConnectListDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetAutostart">virDomainGetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetSchedulerParameters">virDomainGetSchedulerParameters</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetSchedulerType">virDomainGetSchedulerType</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetAutostart">virNetworkGetAutostart</a><br />
|
||||
</p><h2>Type size_t:</h2><p><a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInterfaceStats">virDomainInterfaceStats</a><br />
|
||||
</p><h2>Type unsigned char *:</h2><p><a href="html/libvirt-libvirt.html#virDomainGetUUID">virDomainGetUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetUUID">virNetworkGetUUID</a><br />
|
||||
</p><h2>Type unsigned int:</h2><p><a href="html/libvirt-libvirt.html#virDomainCreateLinux">virDomainCreateLinux</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetVcpus">virDomainSetVcpus</a><br />
|
||||
</p><h2>Type unsigned long:</h2><p><a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMaxMemory">virDomainSetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMemory">virDomainSetMemory</a><br />
|
||||
</p><h2>Type unsigned long *:</h2><p><a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
|
||||
</p><h2>Type virConnectPtr:</h2><p><a href="html/libvirt-virterror.html#virConnCopyLastError">virConnCopyLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virConnGetLastError">virConnGetLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virConnResetLastError">virConnResetLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virConnSetErrorFunc">virConnSetErrorFunc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectClose">virConnectClose</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetCapabilities">virConnectGetCapabilities</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetHostname">virConnectGetHostname</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetMaxVcpus">virConnectGetMaxVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetType">virConnectGetType</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetURI">virConnectGetURI</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListDefinedDomains">virConnectListDefinedDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListDefinedNetworks">virConnectListDefinedNetworks</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListDomains">virConnectListDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListNetworks">virConnectListNetworks</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectNumOfDefinedDomains">virConnectNumOfDefinedDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectNumOfDefinedNetworks">virConnectNumOfDefinedNetworks</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectNumOfDomains">virConnectNumOfDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectNumOfNetworks">virConnectNumOfNetworks</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainCreateLinux">virDomainCreateLinux</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDefineXML">virDomainDefineXML</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByID">virDomainLookupByID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByName">virDomainLookupByName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByUUID">virDomainLookupByUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByUUIDString">virDomainLookupByUUIDString</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainRestore">virDomainRestore</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkCreateXML">virNetworkCreateXML</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkDefineXML">virNetworkDefineXML</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByName">virNetworkLookupByName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByUUID">virNetworkLookupByUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByUUIDString">virNetworkLookupByUUIDString</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNodeGetInfo">virNodeGetInfo</a><br />
|
||||
</p><h2>Type virDomainBlockStatsPtr:</h2><p><a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
</p><h2>Type virDomainInfoPtr:</h2><p><a href="html/libvirt-libvirt.html#virDomainGetInfo">virDomainGetInfo</a><br />
|
||||
</p><h2>Type virDomainInterfaceStatsPtr:</h2><p><a href="html/libvirt-libvirt.html#virDomainInterfaceStats">virDomainInterfaceStats</a><br />
|
||||
</p><h2>Type virDomainPtr:</h2><p><a href="html/libvirt-libvirt.html#virDomainAttachDevice">virDomainAttachDevice</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainCoreDump">virDomainCoreDump</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainCreate">virDomainCreate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDetachDevice">virDomainDetachDevice</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainFree">virDomainFree</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetAutostart">virDomainGetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetConnect">virDomainGetConnect</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetID">virDomainGetID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetInfo">virDomainGetInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetMaxMemory">virDomainGetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetMaxVcpus">virDomainGetMaxVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetName">virDomainGetName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetOSType">virDomainGetOSType</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetSchedulerParameters">virDomainGetSchedulerParameters</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetSchedulerType">virDomainGetSchedulerType</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetUUID">virDomainGetUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetUUIDString">virDomainGetUUIDString</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInterfaceStats">virDomainInterfaceStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainResume">virDomainResume</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetAutostart">virDomainSetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMaxMemory">virDomainSetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMemory">virDomainSetMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetSchedulerParameters">virDomainSetSchedulerParameters</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetVcpus">virDomainSetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainUndefine">virDomainUndefine</a><br />
|
||||
</p><h2>Type virErrorFunc:</h2><p><a href="html/libvirt-virterror.html#virConnSetErrorFunc">virConnSetErrorFunc</a><br />
|
||||
<a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
|
||||
</p><h2>Type virErrorPtr:</h2><p><a href="html/libvirt-virterror.html#virConnCopyLastError">virConnCopyLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virCopyLastError">virCopyLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virDefaultErrorFunc">virDefaultErrorFunc</a><br />
|
||||
<a href="html/libvirt-virterror.html#virErrorFunc">virErrorFunc</a><br />
|
||||
<a href="html/libvirt-virterror.html#virResetError">virResetError</a><br />
|
||||
</p><h2>Type virNetworkPtr:</h2><p><a href="html/libvirt-libvirt.html#virNetworkCreate">virNetworkCreate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkDestroy">virNetworkDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkFree">virNetworkFree</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetAutostart">virNetworkGetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetBridgeName">virNetworkGetBridgeName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetConnect">virNetworkGetConnect</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetName">virNetworkGetName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetUUID">virNetworkGetUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetUUIDString">virNetworkGetUUIDString</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetXMLDesc">virNetworkGetXMLDesc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkSetAutostart">virNetworkSetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkUndefine">virNetworkUndefine</a><br />
|
||||
</p><h2>Type virNodeInfoPtr:</h2><p><a href="html/libvirt-libvirt.html#virNodeGetInfo">virNodeGetInfo</a><br />
|
||||
</p><h2>Type virSchedParameterPtr:</h2><p><a href="html/libvirt-libvirt.html#virDomainGetSchedulerParameters">virDomainGetSchedulerParameters</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetSchedulerParameters">virDomainSetSchedulerParameters</a><br />
|
||||
</p><h2>Type virVcpuInfoPtr:</h2><p><a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
</p><h2>Type void *:</h2><p><a href="html/libvirt-virterror.html#virConnSetErrorFunc">virConnSetErrorFunc</a><br />
|
||||
<a href="html/libvirt-virterror.html#virErrorFunc">virErrorFunc</a><br />
|
||||
<a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
|
||||
</p></div></div><div class="linkList2"><div class="llinks2"><h3 class="links2"><span>main menu</span></h3><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">API Menu</a></li><li><a href="examples/index.html">C code examples</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></div><div class="llinks2"><h3 class="links2"><span>related links</span></h3><ul><li><a href="https://www.redhat.com/archives/libvir-list/">Mail archive</a></li><li><a href="https://bugzilla.redhat.com/bugzilla/buglist.cgi?product=Fedora+Core&component=libvirt&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=MODIFIED&short_desc_type=allwordssubstr&short_desc=&long_desc_type=allwordssubstr">Open bugs</a></li><li><a href="http://virt-manager.et.redhat.com/">virt-manager</a></li><li><a href="http://search.cpan.org/~danberr/Sys-Virt-0.1.0/">Perl bindings</a></li><li><a href="http://et.redhat.com/~rjones/ocaml-libvirt/">OCaml bindings</a></li><li><a href="http://www.cl.cam.ac.uk/Research/SRG/netos/xen/index.html">Xen project</a></li><li><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="12" value="Search..." /><input name="submit" type="submit" value="Go" /></form></li><li><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-90x34.gif" alt="Made with Libxml2 Logo" /></a></li></ul><p class="credits">Graphics and design by <a href="mail:dfong@redhat.com">Diana Fong</a></p></div></div><div id="bottom"><p class="p1"></p></div></div></body></html>
|
||||
@ -1,223 +0,0 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /><link rel="stylesheet" type="text/css" href="libvirt.css" /><link rel="SHORTCUT ICON" href="/32favicon.png" /><title>Alphabetic List of Symbols in libvirt</title></head><body><div id="container"><div id="intro"><div id="adjustments"></div><div id="pageHeader"></div><div id="content2"><h1 class="style1">Alphabetic List of Symbols in libvirt</h1><h2>Letter L:</h2><p><a href="html/libvirt-libvirt.html#LIBVIR_VERSION_NUMBER">LIBVIR_VERSION_NUMBER</a><br />
|
||||
</p><h2>Letter V:</h2><p><a href="html/libvirt-libvirt.html#VIR_COPY_CPUMAP">VIR_COPY_CPUMAP</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_CPU_MAPLEN">VIR_CPU_MAPLEN</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_CPU_USABLE">VIR_CPU_USABLE</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_BLOCKED">VIR_DOMAIN_BLOCKED</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_CRASHED">VIR_DOMAIN_CRASHED</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_DESTROY">VIR_DOMAIN_DESTROY</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_NONE">VIR_DOMAIN_NONE</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_NOSTATE">VIR_DOMAIN_NOSTATE</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_PAUSED">VIR_DOMAIN_PAUSED</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_PRESERVE">VIR_DOMAIN_PRESERVE</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_RENAME_RESTART">VIR_DOMAIN_RENAME_RESTART</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_RESTART">VIR_DOMAIN_RESTART</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_RUNNING">VIR_DOMAIN_RUNNING</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_SCHED_FIELD_BOOLEAN">VIR_DOMAIN_SCHED_FIELD_BOOLEAN</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_SCHED_FIELD_DOUBLE">VIR_DOMAIN_SCHED_FIELD_DOUBLE</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_SCHED_FIELD_INT">VIR_DOMAIN_SCHED_FIELD_INT</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_SCHED_FIELD_LENGTH">VIR_DOMAIN_SCHED_FIELD_LENGTH</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_SCHED_FIELD_LLONG">VIR_DOMAIN_SCHED_FIELD_LLONG</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_SCHED_FIELD_UINT">VIR_DOMAIN_SCHED_FIELD_UINT</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_SCHED_FIELD_ULLONG">VIR_DOMAIN_SCHED_FIELD_ULLONG</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_SHUTDOWN">VIR_DOMAIN_SHUTDOWN</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_DOMAIN_SHUTOFF">VIR_DOMAIN_SHUTOFF</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_CALL_FAILED">VIR_ERR_CALL_FAILED</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_CONF_SYNTAX">VIR_ERR_CONF_SYNTAX</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_DOM_EXIST">VIR_ERR_DOM_EXIST</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_DRIVER_FULL">VIR_ERR_DRIVER_FULL</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_ERROR">VIR_ERR_ERROR</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_GET_FAILED">VIR_ERR_GET_FAILED</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_GNUTLS_ERROR">VIR_ERR_GNUTLS_ERROR</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_HTTP_ERROR">VIR_ERR_HTTP_ERROR</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_INTERNAL_ERROR">VIR_ERR_INTERNAL_ERROR</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_INVALID_ARG">VIR_ERR_INVALID_ARG</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_INVALID_CONN">VIR_ERR_INVALID_CONN</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_INVALID_DOMAIN">VIR_ERR_INVALID_DOMAIN</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_INVALID_MAC">VIR_ERR_INVALID_MAC</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_INVALID_NETWORK">VIR_ERR_INVALID_NETWORK</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_NETWORK_EXIST">VIR_ERR_NETWORK_EXIST</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_NONE">VIR_ERR_NONE</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_NO_CONNECT">VIR_ERR_NO_CONNECT</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_NO_DEVICE">VIR_ERR_NO_DEVICE</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_NO_DOMAIN">VIR_ERR_NO_DOMAIN</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_NO_KERNEL">VIR_ERR_NO_KERNEL</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_NO_MEMORY">VIR_ERR_NO_MEMORY</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_NO_NAME">VIR_ERR_NO_NAME</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_NO_NETWORK">VIR_ERR_NO_NETWORK</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_NO_OS">VIR_ERR_NO_OS</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_NO_ROOT">VIR_ERR_NO_ROOT</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_NO_SOURCE">VIR_ERR_NO_SOURCE</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_NO_SUPPORT">VIR_ERR_NO_SUPPORT</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_NO_TARGET">VIR_ERR_NO_TARGET</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_NO_XEN">VIR_ERR_NO_XEN</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_NO_XENSTORE">VIR_ERR_NO_XENSTORE</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_OK">VIR_ERR_OK</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_OPEN_FAILED">VIR_ERR_OPEN_FAILED</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_OPERATION_DENIED">VIR_ERR_OPERATION_DENIED</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_OPERATION_FAILED">VIR_ERR_OPERATION_FAILED</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_OS_TYPE">VIR_ERR_OS_TYPE</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_PARSE_FAILED">VIR_ERR_PARSE_FAILED</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_POST_FAILED">VIR_ERR_POST_FAILED</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_READ_FAILED">VIR_ERR_READ_FAILED</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_RPC">VIR_ERR_RPC</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_SEXPR_SERIAL">VIR_ERR_SEXPR_SERIAL</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_SYSTEM_ERROR">VIR_ERR_SYSTEM_ERROR</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_UNKNOWN_HOST">VIR_ERR_UNKNOWN_HOST</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_WARNING">VIR_ERR_WARNING</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_WRITE_FAILED">VIR_ERR_WRITE_FAILED</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_XEN_CALL">VIR_ERR_XEN_CALL</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_XML_DETAIL">VIR_ERR_XML_DETAIL</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_ERR_XML_ERROR">VIR_ERR_XML_ERROR</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_FROM_CONF">VIR_FROM_CONF</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_FROM_DOM">VIR_FROM_DOM</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_FROM_NET">VIR_FROM_NET</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_FROM_NONE">VIR_FROM_NONE</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_FROM_OPENVZ">VIR_FROM_OPENVZ</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_FROM_PROXY">VIR_FROM_PROXY</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_FROM_QEMU">VIR_FROM_QEMU</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_FROM_REMOTE">VIR_FROM_REMOTE</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_FROM_RPC">VIR_FROM_RPC</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_FROM_SEXPR">VIR_FROM_SEXPR</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_FROM_TEST">VIR_FROM_TEST</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_FROM_XEN">VIR_FROM_XEN</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_FROM_XEND">VIR_FROM_XEND</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_FROM_XENSTORE">VIR_FROM_XENSTORE</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_FROM_XML">VIR_FROM_XML</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_GET_CPUMAP">VIR_GET_CPUMAP</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_MIGRATE_LIVE">VIR_MIGRATE_LIVE</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_NODEINFO_MAXCPUS">VIR_NODEINFO_MAXCPUS</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_UNUSE_CPU">VIR_UNUSE_CPU</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_USE_CPU">VIR_USE_CPU</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_UUID_BUFLEN">VIR_UUID_BUFLEN</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_UUID_STRING_BUFLEN">VIR_UUID_STRING_BUFLEN</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_VCPU_BLOCKED">VIR_VCPU_BLOCKED</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_VCPU_OFFLINE">VIR_VCPU_OFFLINE</a><br />
|
||||
<a href="html/libvirt-libvirt.html#VIR_VCPU_RUNNING">VIR_VCPU_RUNNING</a><br />
|
||||
<a href="html/libvirt-virterror.html#VIR_WAR_NO_NETWORK">VIR_WAR_NO_NETWORK</a><br />
|
||||
</p><h2>Letter _:</h2><p><a href="html/libvirt-libvirt.html#_virDomainBlockStats">_virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#_virDomainInfo">_virDomainInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#_virDomainInterfaceStats">_virDomainInterfaceStats</a><br />
|
||||
<a href="html/libvirt-virterror.html#_virError">_virError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#_virNodeInfo">_virNodeInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#_virSchedParameter">_virSchedParameter</a><br />
|
||||
<a href="html/libvirt-libvirt.html#_virVcpuInfo">_virVcpuInfo</a><br />
|
||||
</p><h2>Letter v:</h2><p><a href="html/libvirt-virterror.html#virConnCopyLastError">virConnCopyLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virConnGetLastError">virConnGetLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virConnResetLastError">virConnResetLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virConnSetErrorFunc">virConnSetErrorFunc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnect">virConnect</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectClose">virConnectClose</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetCapabilities">virConnectGetCapabilities</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetHostname">virConnectGetHostname</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetMaxVcpus">virConnectGetMaxVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetType">virConnectGetType</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetURI">virConnectGetURI</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectGetVersion">virConnectGetVersion</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListDefinedDomains">virConnectListDefinedDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListDefinedNetworks">virConnectListDefinedNetworks</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListDomains">virConnectListDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectListNetworks">virConnectListNetworks</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectNumOfDefinedDomains">virConnectNumOfDefinedDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectNumOfDefinedNetworks">virConnectNumOfDefinedNetworks</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectNumOfDomains">virConnectNumOfDomains</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectNumOfNetworks">virConnectNumOfNetworks</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectOpen">virConnectOpen</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectOpenReadOnly">virConnectOpenReadOnly</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virConnectPtr">virConnectPtr</a><br />
|
||||
<a href="html/libvirt-virterror.html#virCopyLastError">virCopyLastError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virDefaultErrorFunc">virDefaultErrorFunc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomain">virDomain</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainAttachDevice">virDomainAttachDevice</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainBlockStats">virDomainBlockStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainBlockStatsPtr">virDomainBlockStatsPtr</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainCoreDump">virDomainCoreDump</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainCreate">virDomainCreate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainCreateFlags">virDomainCreateFlags</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainCreateLinux">virDomainCreateLinux</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDefineXML">virDomainDefineXML</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDestroy">virDomainDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainDetachDevice">virDomainDetachDevice</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainFree">virDomainFree</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetAutostart">virDomainGetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetConnect">virDomainGetConnect</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetID">virDomainGetID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetInfo">virDomainGetInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetMaxMemory">virDomainGetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetMaxVcpus">virDomainGetMaxVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetName">virDomainGetName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetOSType">virDomainGetOSType</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetSchedulerParameters">virDomainGetSchedulerParameters</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetSchedulerType">virDomainGetSchedulerType</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetUUID">virDomainGetUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetUUIDString">virDomainGetUUIDString</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetVcpus">virDomainGetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainGetXMLDesc">virDomainGetXMLDesc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInfo">virDomainInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInfoPtr">virDomainInfoPtr</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInterfaceStats">virDomainInterfaceStats</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainInterfaceStatsPtr">virDomainInterfaceStatsPtr</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByID">virDomainLookupByID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByName">virDomainLookupByName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByUUID">virDomainLookupByUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainLookupByUUIDString">virDomainLookupByUUIDString</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrate">virDomainMigrate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainMigrateFlags">virDomainMigrateFlags</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainPinVcpu">virDomainPinVcpu</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainPtr">virDomainPtr</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainReboot">virDomainReboot</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainRestart">virDomainRestart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainRestore">virDomainRestore</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainResume">virDomainResume</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSave">virDomainSave</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetAutostart">virDomainSetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMaxMemory">virDomainSetMaxMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetMemory">virDomainSetMemory</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetSchedulerParameters">virDomainSetSchedulerParameters</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSetVcpus">virDomainSetVcpus</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainShutdown">virDomainShutdown</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainState">virDomainState</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainSuspend">virDomainSuspend</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virDomainUndefine">virDomainUndefine</a><br />
|
||||
<a href="html/libvirt-virterror.html#virError">virError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virErrorDomain">virErrorDomain</a><br />
|
||||
<a href="html/libvirt-virterror.html#virErrorFunc">virErrorFunc</a><br />
|
||||
<a href="html/libvirt-virterror.html#virErrorLevel">virErrorLevel</a><br />
|
||||
<a href="html/libvirt-virterror.html#virErrorNumber">virErrorNumber</a><br />
|
||||
<a href="html/libvirt-virterror.html#virErrorPtr">virErrorPtr</a><br />
|
||||
<a href="html/libvirt-virterror.html#virGetLastError">virGetLastError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virGetVersion">virGetVersion</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virInitialize">virInitialize</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetwork">virNetwork</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkCreate">virNetworkCreate</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkCreateXML">virNetworkCreateXML</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkDefineXML">virNetworkDefineXML</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkDestroy">virNetworkDestroy</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkFree">virNetworkFree</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetAutostart">virNetworkGetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetBridgeName">virNetworkGetBridgeName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetConnect">virNetworkGetConnect</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetName">virNetworkGetName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetUUID">virNetworkGetUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetUUIDString">virNetworkGetUUIDString</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkGetXMLDesc">virNetworkGetXMLDesc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByName">virNetworkLookupByName</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByUUID">virNetworkLookupByUUID</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkLookupByUUIDString">virNetworkLookupByUUIDString</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkPtr">virNetworkPtr</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkSetAutostart">virNetworkSetAutostart</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNetworkUndefine">virNetworkUndefine</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNodeGetInfo">virNodeGetInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNodeInfo">virNodeInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virNodeInfoPtr">virNodeInfoPtr</a><br />
|
||||
<a href="html/libvirt-virterror.html#virResetError">virResetError</a><br />
|
||||
<a href="html/libvirt-virterror.html#virResetLastError">virResetLastError</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virSchedParameter">virSchedParameter</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virSchedParameterPtr">virSchedParameterPtr</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virSchedParameterType">virSchedParameterType</a><br />
|
||||
<a href="html/libvirt-virterror.html#virSetErrorFunc">virSetErrorFunc</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virVcpuInfo">virVcpuInfo</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virVcpuInfoPtr">virVcpuInfoPtr</a><br />
|
||||
<a href="html/libvirt-libvirt.html#virVcpuState">virVcpuState</a><br />
|
||||
</p></div></div><div class="linkList2"><div class="llinks2"><h3 class="links2"><span>main menu</span></h3><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">API Menu</a></li><li><a href="examples/index.html">C code examples</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></div><div class="llinks2"><h3 class="links2"><span>related links</span></h3><ul><li><a href="https://www.redhat.com/archives/libvir-list/">Mail archive</a></li><li><a href="https://bugzilla.redhat.com/bugzilla/buglist.cgi?product=Fedora+Core&component=libvirt&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=MODIFIED&short_desc_type=allwordssubstr&short_desc=&long_desc_type=allwordssubstr">Open bugs</a></li><li><a href="http://virt-manager.et.redhat.com/">virt-manager</a></li><li><a href="http://search.cpan.org/~danberr/Sys-Virt-0.1.0/">Perl bindings</a></li><li><a href="http://et.redhat.com/~rjones/ocaml-libvirt/">OCaml bindings</a></li><li><a href="http://www.cl.cam.ac.uk/Research/SRG/netos/xen/index.html">Xen project</a></li><li><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="12" value="Search..." /><input name="submit" type="submit" value="Go" /></form></li><li><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-90x34.gif" alt="Made with Libxml2 Logo" /></a></li></ul><p class="credits">Graphics and design by <a href="mail:dfong@redhat.com">Diana Fong</a></p></div></div><div id="bottom"><p class="p1"></p></div></div></body></html>
|
||||
@ -3,81 +3,33 @@
|
||||
<xsl:stylesheet version="1.0"
|
||||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||||
|
||||
<!-- Import the rest of the site stylesheets -->
|
||||
<xsl:import href="site.xsl"/>
|
||||
|
||||
<!-- Generate XHTML-1.0 transitional -->
|
||||
<xsl:output method="xml" encoding="ISO-8859-1" indent="yes"
|
||||
doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
|
||||
|
||||
<xsl:param name="module">libvirt</xsl:param>
|
||||
|
||||
<!-- The table of content for the HTML page -->
|
||||
<xsl:variable name="menu_name">API Menu</xsl:variable>
|
||||
<xsl:variable name="develtoc">
|
||||
<form action="../search.php"
|
||||
enctype="application/x-www-form-urlencoded" method="get">
|
||||
<input name="query" type="text" size="20" value=""/>
|
||||
<input name="submit" type="submit" value="Search ..."/>
|
||||
</form>
|
||||
<ul><!-- style="margin-left: -1em" -->
|
||||
<li><a style="font-weight:bold"
|
||||
href="{$href_base}index.html">Main Menu</a></li>
|
||||
<li><a style="font-weight:bold"
|
||||
href="{$href_base}html/index.html">Modules Index</a></li>
|
||||
<li><a style="font-weight:bold"
|
||||
href="index.html">API Menu</a></li>
|
||||
</ul>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:template match="bug">
|
||||
<a href="https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id={@number}">
|
||||
<xsl:value-of select="@number"/></a>
|
||||
</xsl:template>
|
||||
<xsl:output method="xml" encoding="UTF-8" indent="yes"
|
||||
doctype-public="-//W3C//DTD XHTML 1.0//EN"
|
||||
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>
|
||||
|
||||
<xsl:template match="item">
|
||||
<li><xsl:apply-templates/></li>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="entry">
|
||||
|
||||
<p>
|
||||
<b><xsl:value-of select="@who"/></b>
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:value-of select="@date"/>
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:value-of select="@timezone"/>
|
||||
<span class="author"><xsl:value-of select="@who"/> </span>
|
||||
<span class="date"><xsl:value-of select="@date"/> </span>
|
||||
<span class="timezone"><xsl:value-of select="@timezone"/> </span>
|
||||
</p>
|
||||
<ul>
|
||||
<xsl:apply-templates select="item"/>
|
||||
</ul>
|
||||
</p>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="log">
|
||||
<xsl:variable name="title">ChangeLog last entries of <xsl:value-of select="$module"/></xsl:variable>
|
||||
<html>
|
||||
<head>
|
||||
<xsl:call-template name="style"/>
|
||||
<xsl:element name="title">
|
||||
<xsl:value-of select="$title"/>
|
||||
</xsl:element>
|
||||
</head>
|
||||
<body>
|
||||
<div id="container">
|
||||
<div id="intro">
|
||||
<div id="adjustments"/>
|
||||
<div id="pageHeader"/>
|
||||
<div id="content2">
|
||||
<xsl:call-template name="titlebox">
|
||||
<xsl:with-param name="title" select="$title"/>
|
||||
</xsl:call-template>
|
||||
<h1>Log of recent changes to libvirt</h1>
|
||||
<div id="changelog">
|
||||
<xsl:apply-templates select="entry"/>
|
||||
</div>
|
||||
</div>
|
||||
<xsl:call-template name="linkList2"/>
|
||||
<xsl:call-template name="bottom"/>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
@ -1,80 +0,0 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /><link rel="stylesheet" type="text/css" href="libvirt.css" /><link rel="SHORTCUT ICON" href="/32favicon.png" /><title>FAQ</title></head><body><div id="container"><div id="intro"><div id="adjustments"></div><div id="pageHeader"></div><div id="content2"><h1 class="style1">FAQ</h1><p>Table of Contents:</p><ul><li><a href="FAQ.html#License">License(s)</a></li>
|
||||
<li><a href="FAQ.html#Installati">Installation</a></li>
|
||||
<li><a href="FAQ.html#Compilatio">Compilation</a></li>
|
||||
<li><a href="FAQ.html#Developer">Developer corner</a></li>
|
||||
</ul><h3><a name="License" id="License">License</a>(s)</h3><ol><li><em>Licensing Terms for libvirt</em>
|
||||
<p>libvirt is released under the <a href="http://www.opensource.org/licenses/lgpl-license.html">GNU Lesser
|
||||
General Public License</a>, see the file COPYING.LIB in the distribution
|
||||
for the precise wording. The only library that libvirt depends upon is
|
||||
the Xen store access library which is also licenced under the LGPL.</p>
|
||||
</li>
|
||||
<li><em>Can I embed libvirt in a proprietary application ?</em>
|
||||
<p>Yes. The LGPL allows you to embed libvirt into a proprietary
|
||||
application. It would be graceful to send-back bug fixes and improvements
|
||||
as patches for possible incorporation in the main development tree. It
|
||||
will decrease your maintainance costs anyway if you do so.</p>
|
||||
</li>
|
||||
</ol><h3><a name="Installati" id="Installati">Installation</a></h3><ol><li><em>Where can I get libvirt</em> ?
|
||||
<p>The original distribution comes from <a href="ftp://libvirt.org/libvirt/">ftp://libvirt.org/libvirt/</a>.</p>
|
||||
</li>
|
||||
<li><em>I can't install the libvirt/libvirt-devel RPM packages due to
|
||||
failed dependencies</em>
|
||||
<p>The most generic solution is to re-fetch the latest src.rpm , and
|
||||
rebuild it locally with</p>
|
||||
<p><code>rpm --rebuild libvirt-xxx.src.rpm</code>.</p>
|
||||
<p>If everything goes well it will generate two binary rpm packages (one
|
||||
providing the shared libs and virsh, and the other one, the -devel
|
||||
package, providing includes, static libraries and scripts needed to build
|
||||
applications with libvirt that you can install locally.</p>
|
||||
<p>One can also rebuild the RPMs from a tarball:</p>
|
||||
<p><code>rpmbuild -ta libdir-xxx.tar.gz</code></p>
|
||||
<p>Or from a configured tree with:</p>
|
||||
<p><code>make rpm</code></p>
|
||||
</li>
|
||||
<li><em>Failure to use the API for non-root users</em>
|
||||
<p>Large parts of the API may only be accessible with root priviledges,
|
||||
however the read only access to the xenstore data doesnot have to be
|
||||
forbidden to user, at least for monitoring purposes. If "virsh dominfo"
|
||||
fails to run as an user, change the mode of the xenstore read-only socket
|
||||
with:</p>
|
||||
<p><code>chmod 666 /var/run/xenstored/socket_ro</code></p>
|
||||
<p>and also make sure that the Xen Daemon is running correctly with local
|
||||
HTTP server enabled, this is defined in
|
||||
<code>/etc/xen/xend-config.sxp</code> which need the following line to be
|
||||
enabled:</p>
|
||||
<p><code>(xend-http-server yes)</code></p>
|
||||
<p>If needed restart the xend daemon after making the change with the
|
||||
following command run as root:</p>
|
||||
<p><code>service xend restart</code></p>
|
||||
</li>
|
||||
</ol><h3><a name="Compilatio" id="Compilatio">Compilation</a></h3><ol><li><em>What is the process to compile libvirt ?</em>
|
||||
<p>As most UNIX libraries libvirt follows the "standard":</p>
|
||||
<p><code>gunzip -c libvirt-xxx.tar.gz | tar xvf -</code></p>
|
||||
<p><code>cd libvirt-xxxx</code></p>
|
||||
<p><code>./configure --help</code></p>
|
||||
<p>to see the options, then the compilation/installation proper</p>
|
||||
<p><code>./configure [possible options]</code></p>
|
||||
<p><code>make</code></p>
|
||||
<p><code>make install</code></p>
|
||||
<p>At that point you may have to rerun ldconfig or a similar utility to
|
||||
update your list of installed shared libs.</p>
|
||||
</li>
|
||||
<li><em>What other libraries are needed to compile/install libvirt ?</em>
|
||||
<p>Libvirt requires libxenstore, which is usually provided by the xen
|
||||
packages as well as the public headers to compile against libxenstore.</p>
|
||||
</li>
|
||||
<li><em>I use the CVS version and there is no configure script</em>
|
||||
<p>The configure script (and other Makefiles) are generated. Use the
|
||||
autogen.sh script to regenerate the configure script and Makefiles,
|
||||
like:</p>
|
||||
<p><code>./autogen.sh --prefix=/usr --disable-shared</code></p>
|
||||
</li>
|
||||
</ol><h3><a name="Developer" id="Developer">Developer</a> corner</h3><ol><li><em>Troubles compiling or linking programs using libvirt</em>
|
||||
<p>To simplify the process of reusing the library, libvirt comes with
|
||||
pkgconfig support, which can be used directly from autoconf support or
|
||||
via the pkg-config command line tool, like:</p>
|
||||
<p><code>pkg-config libvirt --libs</code></p>
|
||||
</li>
|
||||
</ol></div></div><div class="linkList2"><div class="llinks2"><h3 class="links2"><span>main menu</span></h3><ul><li><a href="index.html">Home</a></li><li><a href="news.html">Releases</a></li><li><a href="intro.html">Introduction</a></li><li><a href="architecture.html">libvirt architecture</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="format.html">XML Format</a></li><li><a href="python.html">Binding for Python</a></li><li><a href="errors.html">Handling of errors</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="remote.html">Remote support</a></li><li><a href="uri.html">Connection URIs</a></li><li><a href="hvsupport.html">Hypervisor support</a></li><li><a href="html/index.html">API Menu</a></li><li><a href="examples/index.html">C code examples</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></div><div class="llinks2"><h3 class="links2"><span>related links</span></h3><ul><li><a href="https://www.redhat.com/archives/libvir-list/">Mail archive</a></li><li><a href="https://bugzilla.redhat.com/bugzilla/buglist.cgi?product=Fedora+Core&component=libvirt&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=MODIFIED&short_desc_type=allwordssubstr&short_desc=&long_desc_type=allwordssubstr">Open bugs</a></li><li><a href="http://virt-manager.et.redhat.com/">virt-manager</a></li><li><a href="http://search.cpan.org/~danberr/Sys-Virt-0.1.0/">Perl bindings</a></li><li><a href="http://et.redhat.com/~rjones/ocaml-libvirt/">OCaml bindings</a></li><li><a href="http://www.cl.cam.ac.uk/Research/SRG/netos/xen/index.html">Xen project</a></li><li><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="12" value="Search..." /><input name="submit" type="submit" value="Go" /></form></li><li><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-90x34.gif" alt="Made with Libxml2 Logo" /></a></li></ul><p class="credits">Graphics and design by <a href="mail:dfong@redhat.com">Diana Fong</a></p></div></div><div id="bottom"><p class="p1"></p></div></div></body></html>
|
||||
144
docs/FAQ.html.in
Normal file
144
docs/FAQ.html.in
Normal file
@ -0,0 +1,144 @@
|
||||
<?xml version="1.0"?>
|
||||
<html>
|
||||
<body>
|
||||
<h1 >FAQ</h1>
|
||||
<p>Table of Contents:</p>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="FAQ.html#License">License(s)</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="FAQ.html#Installati">Installation</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="FAQ.html#Compilatio">Compilation</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="FAQ.html#Developer">Developer corner</a>
|
||||
</li>
|
||||
</ul>
|
||||
<h3><a name="License" id="License">License</a>(s)</h3>
|
||||
<ol>
|
||||
<li>
|
||||
<em>Licensing Terms for libvirt</em>
|
||||
<p>libvirt is released under the <a href="http://www.opensource.org/licenses/lgpl-license.html">GNU Lesser
|
||||
General Public License</a>, see the file COPYING.LIB in the distribution
|
||||
for the precise wording. The only library that libvirt depends upon is
|
||||
the Xen store access library which is also licenced under the LGPL.</p>
|
||||
</li>
|
||||
<li>
|
||||
<em>Can I embed libvirt in a proprietary application ?</em>
|
||||
<p>Yes. The LGPL allows you to embed libvirt into a proprietary
|
||||
application. It would be graceful to send-back bug fixes and improvements
|
||||
as patches for possible incorporation in the main development tree. It
|
||||
will decrease your maintenance costs anyway if you do so.</p>
|
||||
</li>
|
||||
</ol>
|
||||
<h3>
|
||||
<a name="Installati" id="Installati">Installation</a>
|
||||
</h3>
|
||||
<ol>
|
||||
<li><em>Where can I get libvirt</em> ?
|
||||
<p>The original distribution comes from <a href="ftp://libvirt.org/libvirt/">ftp://libvirt.org/libvirt/</a>.</p>
|
||||
</li>
|
||||
<li>
|
||||
<em>I can't install the libvirt/libvirt-devel RPM packages due to
|
||||
failed dependencies</em>
|
||||
<p>The most generic solution is to re-fetch the latest src.rpm , and
|
||||
rebuild it locally with</p>
|
||||
<p><code>rpm --rebuild libvirt-xxx.src.rpm</code>.</p>
|
||||
<p>If everything goes well it will generate two binary rpm packages (one
|
||||
providing the shared libs and virsh, and the other one, the -devel
|
||||
package, providing includes, static libraries and scripts needed to build
|
||||
applications with libvirt that you can install locally.</p>
|
||||
<p>One can also rebuild the RPMs from a tarball:</p>
|
||||
<p>
|
||||
<code>rpmbuild -ta libdir-xxx.tar.gz</code>
|
||||
</p>
|
||||
<p>Or from a configured tree with:</p>
|
||||
<p>
|
||||
<code>make rpm</code>
|
||||
</p>
|
||||
</li>
|
||||
<li>
|
||||
<em>Failure to use the API for non-root users</em>
|
||||
<p>Large parts of the API may only be accessible with root privileges,
|
||||
however the read only access to the xenstore data doesnot have to be
|
||||
forbidden to user, at least for monitoring purposes. If "virsh dominfo"
|
||||
fails to run as an user, change the mode of the xenstore read-only socket
|
||||
with:</p>
|
||||
<p>
|
||||
<code>chmod 666 /var/run/xenstored/socket_ro</code>
|
||||
</p>
|
||||
<p>and also make sure that the Xen Daemon is running correctly with local
|
||||
HTTP server enabled, this is defined in
|
||||
<code>/etc/xen/xend-config.sxp</code> which need the following line to be
|
||||
enabled:</p>
|
||||
<p>
|
||||
<code>(xend-http-server yes)</code>
|
||||
</p>
|
||||
<p>If needed restart the xend daemon after making the change with the
|
||||
following command run as root:</p>
|
||||
<p>
|
||||
<code>service xend restart</code>
|
||||
</p>
|
||||
</li>
|
||||
</ol>
|
||||
<h3>
|
||||
<a name="Compilatio" id="Compilatio">Compilation</a>
|
||||
</h3>
|
||||
<ol>
|
||||
<li>
|
||||
<em>What is the process to compile libvirt ?</em>
|
||||
<p>As most UNIX libraries libvirt follows the "standard":</p>
|
||||
<p>
|
||||
<code>gunzip -c libvirt-xxx.tar.gz | tar xvf -</code>
|
||||
</p>
|
||||
<p>
|
||||
<code>cd libvirt-xxxx</code>
|
||||
</p>
|
||||
<p>
|
||||
<code>./configure --help</code>
|
||||
</p>
|
||||
<p>to see the options, then the compilation/installation proper</p>
|
||||
<p>
|
||||
<code>./configure [possible options]</code>
|
||||
</p>
|
||||
<p>
|
||||
<code>make</code>
|
||||
</p>
|
||||
<p>
|
||||
<code>make install</code>
|
||||
</p>
|
||||
<p>At that point you may have to rerun ldconfig or a similar utility to
|
||||
update your list of installed shared libs.</p>
|
||||
</li>
|
||||
<li>
|
||||
<em>What other libraries are needed to compile/install libvirt ?</em>
|
||||
<p>Libvirt requires libxenstore, which is usually provided by the xen
|
||||
packages as well as the public headers to compile against libxenstore.</p>
|
||||
</li>
|
||||
<li>
|
||||
<em>I use the GIT version and there is no configure script</em>
|
||||
<p>The configure script (and other Makefiles) are generated. Use the
|
||||
autogen.sh script to regenerate the configure script and Makefiles,
|
||||
like:</p>
|
||||
<p>
|
||||
<code>./autogen.sh --prefix=/usr --disable-shared</code>
|
||||
</p>
|
||||
</li>
|
||||
</ol>
|
||||
<h3><a name="Developer" id="Developer">Developer</a> corner</h3>
|
||||
<ol>
|
||||
<li>
|
||||
<em>Troubles compiling or linking programs using libvirt</em>
|
||||
<p>To simplify the process of reusing the library, libvirt comes with
|
||||
pkgconfig support, which can be used directly from autoconf support or
|
||||
via the pkg-config command line tool, like:</p>
|
||||
<p>
|
||||
<code>pkg-config libvirt --libs</code>
|
||||
</p>
|
||||
</li>
|
||||
</ol>
|
||||
</body>
|
||||
</html>
|
||||
29
docs/Goals
29
docs/Goals
@ -1,29 +0,0 @@
|
||||
|
||||
Why libxen:
|
||||
-----------
|
||||
|
||||
|
||||
The main goals of the library is to provide an stable API abstracting
|
||||
the underlying acual implementation of the hypervisor calls.
|
||||
|
||||
1/ Stable API:
|
||||
by isolating the data structures and entry points used at the low
|
||||
level Xen Hypervisor interfaces, allowing evolution of said interface
|
||||
over time without breaking the application visible API and ABI
|
||||
|
||||
2/ Abstraction:
|
||||
by providing at the C level simplified concept exposed only as opaque
|
||||
structure for the hypervisor connection, domains and other kind of
|
||||
objects which may be needed in the future. It must also provide
|
||||
a set of higher level function calls simplifying the developement
|
||||
of applications using the supervisor.
|
||||
|
||||
3/ Maintainability and openness:
|
||||
All data structures and entry points must be fully documented, all
|
||||
changes will be driven in an open fashion based on a publicly archived
|
||||
mailing-list allowing peer-review before changes will be introduced.
|
||||
Tools and regression tests will be implemented and shipped as part of the
|
||||
releases of the library.
|
||||
|
||||
Daniel Veillard <veillard@redhat.com>
|
||||
$Date$
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 3.0 KiB |
203
docs/Makefile.am
203
docs/Makefile.am
@ -1,61 +1,153 @@
|
||||
## Process this file with automake to produce Makefile.in
|
||||
SUBDIRS= . examples devhelp
|
||||
SUBDIRS= schemas
|
||||
|
||||
# The directory containing the source code (if it contains documentation).
|
||||
DOC_SOURCE_DIR=../src
|
||||
|
||||
PAGES= index.html bugs.html FAQ.html remote.html
|
||||
APIPAGES=APIconstructors.html APIfiles.html APIfunctions.html \
|
||||
APIsymbols.html APIchunk0.html
|
||||
DEVHELP_DIR=$(datadir)/gtk-doc/html/libvirt
|
||||
|
||||
apihtml = \
|
||||
html/index.html \
|
||||
html/libvirt-libvirt.html \
|
||||
html/libvirt-virterror.html
|
||||
|
||||
apipng = \
|
||||
html/left.png \
|
||||
html/up.png \
|
||||
html/home.png \
|
||||
html/right.png
|
||||
|
||||
devhelphtml = \
|
||||
devhelp/libvirt.devhelp \
|
||||
devhelp/index.html \
|
||||
devhelp/general.html \
|
||||
devhelp/libvirt-libvirt.html \
|
||||
devhelp/libvirt-virterror.html
|
||||
|
||||
devhelppng = \
|
||||
devhelp/home.png \
|
||||
devhelp/left.png \
|
||||
devhelp/right.png \
|
||||
devhelp/up.png
|
||||
|
||||
devhelpcss = devhelp/style.css
|
||||
|
||||
devhelpxsl = devhelp/devhelp.xsl devhelp/html.xsl
|
||||
|
||||
png = \
|
||||
32favicon.png \
|
||||
footer_corner.png \
|
||||
footer_pattern.png \
|
||||
libvirt-header-bg.png \
|
||||
libvirt-header-logo.png \
|
||||
libvirtLogo.png \
|
||||
libvirt-net-logical.png \
|
||||
libvirt-net-physical.png \
|
||||
libvirt-daemon-arch.png \
|
||||
libvirt-driver-arch.png \
|
||||
libvirt-object-model.png \
|
||||
madeWith.png \
|
||||
et.png
|
||||
|
||||
gif = \
|
||||
architecture.gif \
|
||||
node.gif
|
||||
|
||||
dot_html_in = $(wildcard *.html.in)
|
||||
dot_html = $(dot_html_in:%.html.in=%.html)
|
||||
|
||||
patches = $(wildcard api_extension/*.patch)
|
||||
|
||||
xml = \
|
||||
libvirt-api.xml \
|
||||
libvirt-refs.xml
|
||||
|
||||
fig = \
|
||||
libvirt-net-logical.fig \
|
||||
libvirt-net-physical.fig \
|
||||
libvirt-daemon-arch.fig \
|
||||
libvirt-driver-arch.fig \
|
||||
libvirt-object-model.fig
|
||||
|
||||
EXTRA_DIST= \
|
||||
libvirt-api.xml libvirt-refs.xml apibuild.py \
|
||||
*.xsl *.html *.gif html/*.html html/*.png \
|
||||
*.xml *.rng
|
||||
apibuild.py \
|
||||
site.xsl newapi.xsl news.xsl page.xsl ChangeLog.xsl \
|
||||
$(dot_html) $(dot_html_in) $(gif) $(apihtml) $(apipng) \
|
||||
$(devhelphtml) $(devhelppng) $(devhelpcss) $(devhelpxsl) \
|
||||
$(xml) $(fig) $(png) \
|
||||
$(patches) \
|
||||
sitemap.html.in \
|
||||
ChangeLog.awk
|
||||
|
||||
MAINTAINERCLEANFILES = $(dot_html) $(apihtml) $(devhelphtml)
|
||||
|
||||
all: web
|
||||
|
||||
api: libvirt-api.xml libvirt-refs.xml
|
||||
|
||||
web: $(dot_html) html/index.html devhelp/index.html
|
||||
|
||||
ChangeLog.xml: ../ChangeLog ChangeLog.awk
|
||||
awk -f ChangeLog.awk < $< > $@
|
||||
|
||||
ChangeLog.html.in: ChangeLog.xml ChangeLog.xsl
|
||||
@if [ -x $(XSLTPROC) ] ; then \
|
||||
echo "Generating $@"; \
|
||||
name=`echo $@ | sed -e 's/.tmp//'`; \
|
||||
$(XSLTPROC) --nonet $(top_srcdir)/docs/ChangeLog.xsl $< > $@ \
|
||||
|| { rm $@ && exit 1; }; fi
|
||||
|
||||
%.png: %.fig
|
||||
convert -rotate 90 $< $@
|
||||
|
||||
%.html.tmp: %.html.in site.xsl page.xsl sitemap.html.in
|
||||
@if [ -x $(XSLTPROC) ] ; then \
|
||||
echo "Generating $@"; \
|
||||
name=`echo $@ | sed -e 's/.tmp//'`; \
|
||||
$(XSLTPROC) --stringparam pagename $$name --nonet --html \
|
||||
$(top_srcdir)/docs/site.xsl $< > $@ \
|
||||
|| { rm $@ && exit 1; }; fi
|
||||
|
||||
%.html: %.html.tmp
|
||||
@if test -x $(XMLLINT) && test -x $(XMLCATALOG) ; then \
|
||||
if $(XMLCATALOG) /etc/xml/catalog \
|
||||
"-//W3C//DTD XHTML 1.0 Strict//EN" > /dev/null ; then \
|
||||
echo "Validating $@" ; \
|
||||
$(XMLLINT) --nonet --format --valid $< > $@ \
|
||||
|| { rm $@ && exit 1; }; \
|
||||
else echo "missing XHTML1 DTD" ; fi ; fi
|
||||
|
||||
|
||||
man_MANS=
|
||||
|
||||
all: web $(top_builddir)/NEWS $(man_MANS)
|
||||
|
||||
virsh.1: virsh.pod
|
||||
pod2man -c "Virtualization Support" virsh.pod > virsh.1 && cp virsh.1 $(top_builddir)
|
||||
|
||||
api: libvirt-api.xml libvirt-refs.xml $(APIPAGES) $(srcdir)/html/index.html
|
||||
|
||||
web: $(PAGES)
|
||||
|
||||
$(PAGES): libvir.html site.xsl
|
||||
-@(if [ -x $(XSLTPROC) ] ; then \
|
||||
echo "Rebuilding the HTML Web pages from libvir.html" ; \
|
||||
$(XSLTPROC) --nonet --html $(top_srcdir)/docs/site.xsl $(top_srcdir)/docs/libvir.html > index.html ; fi );
|
||||
-@(if [ -x $(XMLLINT) ] ; then \
|
||||
echo "Validating the HTML Web pages" ; \
|
||||
$(XMLLINT) --nonet --valid --noout $(PAGES) ; fi );
|
||||
|
||||
|
||||
$(APIPAGES): libvirt-api.xml libvirt-refs.xml $(top_srcdir)/docs/site.xsl $(top_srcdir)/docs/api.xsl
|
||||
-@(if [ -x $(XSLTPROC) ] ; then \
|
||||
echo "Rebuilding the HTML API pages from libvirt-refs.xml" ; \
|
||||
$(XSLTPROC) --nonet --html $(top_srcdir)/docs/api.xsl \
|
||||
$(top_srcdir)/docs/libvir.html ; fi );
|
||||
-@(if [ -x $(XMLLINT) ] ; then \
|
||||
echo "Validating the HTML API pages" ; \
|
||||
$(XMLLINT) --nonet --valid --noout API*.html ; fi );
|
||||
|
||||
$(srcdir)/html/index.html: libvirt-api.xml $(srcdir)/newapi.xsl
|
||||
-@(if [ -x $(XSLTPROC) ] ; then \
|
||||
html/index.html: libvirt-api.xml newapi.xsl page.xsl sitemap.html.in
|
||||
-@if [ -x $(XSLTPROC) ] ; then \
|
||||
echo "Rebuilding the HTML pages from the XML API" ; \
|
||||
$(XSLTPROC) --nonet $(srcdir)/newapi.xsl libvirt-api.xml ; fi )
|
||||
-@(if [ -x $(XMLLINT) ] ; then \
|
||||
$(XSLTPROC) --nonet $(srcdir)/newapi.xsl libvirt-api.xml ; fi
|
||||
-@if test -x $(XMLLINT) && test -x $(XMLCATALOG) ; then \
|
||||
if $(XMLCATALOG) /etc/xml/catalog "-//W3C//DTD XHTML 1.0 Strict//EN" \
|
||||
> /dev/null ; then \
|
||||
echo "Validating the resulting XHTML pages" ; \
|
||||
$(XMLLINT) --nonet --valid --noout html/*.html ; fi );
|
||||
$(XMLLINT) --nonet --valid --noout html/*.html ; \
|
||||
else echo "missing XHTML1 DTD" ; fi ; fi
|
||||
|
||||
libvirt-api.xml libvirt-refs.xml: apibuild.py ../include/libvirt/*.h ../src/*.h ../src/*.c
|
||||
-(./apibuild.py)
|
||||
$(addprefix $(srcdir)/,$(devhelphtml)): $(srcdir)/libvirt-api.xml $(devhelpxsl)
|
||||
-@echo Rebuilding devhelp files
|
||||
-@if [ -x $(XSLTPROC) ] ; then \
|
||||
$(XSLTPROC) --nonet -o devhelp/libvirt.devhelp \
|
||||
$(top_srcdir)/docs/devhelp/devhelp.xsl libvirt-api.xml ; fi
|
||||
|
||||
$(top_builddir)/NEWS: $(top_srcdir)/docs/news.xsl $(top_srcdir)/docs/news.html
|
||||
-@(if [ -x $(XSLTPROC) ] ; then \
|
||||
$(XSLTPROC) --nonet $(top_srcdir)/docs/news.xsl $(top_srcdir)/docs/news.html > $(top_builddir)/NEWS ; fi );
|
||||
python_generated_files = \
|
||||
$(srcdir)/html/libvirt-libvirt.html \
|
||||
$(srcdir)/html/libvirt-virterror.html \
|
||||
$(srcdir)/libvirt-api.xml \
|
||||
$(srcdir)/libvirt-refs.xml
|
||||
|
||||
$(python_generated_files): $(srcdir)/apibuild.py \
|
||||
$(srcdir)/../include/libvirt/*.h \
|
||||
$(srcdir)/../src/libvirt.c \
|
||||
$(srcdir)/../src/util/virterror.c
|
||||
-srcdir=$(srcdir) $(srcdir)/apibuild.py
|
||||
|
||||
check-local: all
|
||||
|
||||
clean-local:
|
||||
rm -f *~ *.bak *.hierarchy *.signals *-unused.txt
|
||||
@ -67,8 +159,21 @@ rebuild: api all
|
||||
|
||||
install-data-local:
|
||||
$(mkinstalldirs) $(DESTDIR)$(HTML_DIR)
|
||||
-@INSTALL@ -m 0644 $(srcdir)/libvir.html $(srcdir)/FAQ.html $(srcdir)/redhat.gif $(srcdir)/Libxml2-Logo-90x34.gif $(DESTDIR)$(HTML_DIR)
|
||||
-$(INSTALL) -m 0644 $(srcdir)/FAQ.html \
|
||||
$(srcdir)/Libxml2-Logo-90x34.gif $(DESTDIR)$(HTML_DIR)
|
||||
$(mkinstalldirs) $(DESTDIR)$(HTML_DIR)/html
|
||||
-@INSTALL@ -m 0644 $(srcdir)/html/*.html $(DESTDIR)$(HTML_DIR)/html
|
||||
-@INSTALL@ -m 0644 $(srcdir)/html/*.png $(DESTDIR)$(HTML_DIR)/html
|
||||
for h in $(apihtml); do \
|
||||
$(INSTALL) -m 0644 $(srcdir)/$$h $(DESTDIR)$(HTML_DIR)/html; done
|
||||
for p in $(apipng); do \
|
||||
$(INSTALL) -m 0644 $(srcdir)/$$p $(DESTDIR)$(HTML_DIR)/html; done
|
||||
$(mkinstalldirs) $(DESTDIR)$(DEVHELP_DIR)
|
||||
for file in $(devhelphtml) $(devhelppng) $(devhelpcss); do \
|
||||
$(INSTALL) -m 0644 $(srcdir)/$${file} $(DESTDIR)$(DEVHELP_DIR) ; \
|
||||
done
|
||||
|
||||
uninstall-local:
|
||||
for h in $(apihtml); do rm $(DESTDIR)$(HTML_DIR)/$$h; done
|
||||
for p in $(apipng); do rm $(DESTDIR)$(HTML_DIR)/$$p; done
|
||||
for f in $(devhelphtml) $(devhelppng) $(devhelpcss); do \
|
||||
rm $(DESTDIR)$(DEVHELP_DIR)/$$(basename $$f); \
|
||||
done
|
||||
|
||||
136
docs/api.html.in
Normal file
136
docs/api.html.in
Normal file
@ -0,0 +1,136 @@
|
||||
<?xml version="1.0"?>
|
||||
<html>
|
||||
<body>
|
||||
<h1>The libvirt API concepts</h1>
|
||||
|
||||
<p> This page describes the main principles and architecture choices
|
||||
behind the definition of the libvirt API:
|
||||
<ul>
|
||||
<li>
|
||||
<a href="#Objects">Objects exposed</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#Functions">Functions and naming conventions</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#Driver">The drivers</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#Remote">Daemon and remote access</a>
|
||||
</li>
|
||||
</ul>
|
||||
<h2><a name="Objects" id="Objects">Objects exposed</a></h2>
|
||||
<p> As defined in the <a href="goals.html">goals section</a>, libvirt
|
||||
API need to expose all the resources needed to manage the virtualization
|
||||
support of recent operating systems. The first object manipulated though
|
||||
the API is <code>virConnectPtr</code> which represent a connection to
|
||||
an hypervisor. Any application using libvirt is likely to start using the
|
||||
API by calling one of <a href="html/libvirt-libvirt.html#virConnectOpen"
|
||||
>the virConnectOpen functions</a>. You will note that those functions take
|
||||
a name argument which is actually an URI to select the right hypervisor to
|
||||
open, this is needed to allow remote connections and also select between
|
||||
different possible hypervisors (for example on a Linux system it may be
|
||||
possible to use both KVM and LinuxContainers on the same node). A NULL
|
||||
name will default to a preselected hypervisor but it's probably not a
|
||||
wise thing to do in most cases. See the <a href="uri.html">connection
|
||||
URI</a> page for a full descriptions of the values allowed.<p>
|
||||
<p> Once the application obtained a <code class='docref'>virConnectPtr</code>
|
||||
connection to the
|
||||
hypervisor it can then use it to manage domains and related resources
|
||||
available for virtualization like storage and networking. All those are
|
||||
exposed as first class objects, and connected to the hypervisor connection
|
||||
(and the node or cluster where it is available).</p>
|
||||
<p class="image">
|
||||
<img alt="first class objects exposed by the API"
|
||||
src="libvirt-object-model.png"/>
|
||||
</p>
|
||||
<p> The figure above shows the five main objects exported by the API:</p>
|
||||
<ul>
|
||||
<li>virConnectPtr: represent a connection to an hypervisor.</li>
|
||||
<li>virDomainPtr: represent one domain either active or defined (i.e.
|
||||
existing as permanent config file and storage but not currently running
|
||||
on that node). The function <code class='docref'>virConnectListDomains</code>
|
||||
allows to list all the IDs for the domains active on this hypervisor.</li>
|
||||
<li>virNetworkPtr: represent one network either active or defined (i.e.
|
||||
existing as permanent config file and storage but not currently activated.
|
||||
The function <code class='docref'>virConnectListNetworks</code>
|
||||
allows to list all the virtualization networks actived on this node.</li>
|
||||
<li>virStorageVolPtr: represent one storage volume, usually this is used
|
||||
as a block device available to one of the domains. The function
|
||||
<code class="docref">virStorageVolLookupByPath</code> allows to find
|
||||
the object based on its path on the node.</li>
|
||||
<li>virStoragePoolPtr: represent a storage pool, i.e. a logical area
|
||||
which can be used to allocate and store storage volumes. The function
|
||||
<code class="docref">virStoragePoolLookupByVolume</code> allows to find
|
||||
the storage pool containing a given storage volume.</li>
|
||||
</ul>
|
||||
<p> Most object manipulated by the library can also be represented using
|
||||
XML descriptions. This is used primarily to create those object, but is
|
||||
also helpful to modify or save their description back.</p>
|
||||
<p> Domains, network and storage pools can be either <code>active</code>
|
||||
i.e. either running or available for immediate use, or
|
||||
<code>defined</code> in which case they are inactive but there is
|
||||
a permanent definition available in the system for them. Based on this
|
||||
thay can be activated dynamically in order to be used.</p>
|
||||
<p> Most kind of object can also be named in various ways:<p>
|
||||
<ul>
|
||||
<li>by their <code>name</code>, an user friendly identifier but
|
||||
whose unicity cannot be garanteed between two nodes.</li>
|
||||
<li>by their <code>ID</code>, which is a runtime unique identifier
|
||||
provided by the hypervisor for one given activation of the object,
|
||||
but it becomes invalid once the resource is deactivated.</li >
|
||||
<li>by their <code>UUID</code>, a 16 bytes unique identifier
|
||||
as defined in <a href="http://www.ietf.org/rfc/rfc4122.txt">RFC 4122</a>,
|
||||
which is garanteed to be unique for long term usage and across a
|
||||
set of nodes.</li>
|
||||
</ul>
|
||||
|
||||
<h2><a name="Functions" id="Functions">Functions and naming
|
||||
conventions</a></h2>
|
||||
<p> The naming of the functions present in the library is usually
|
||||
made of a prefix describing the object associated to the function
|
||||
and a verb describing the action on that object.</p>
|
||||
<p> For each first class object you will find apis
|
||||
for the following actions:</p>
|
||||
<ul>
|
||||
<li><b>Lookup</b>:...LookupByName,
|
||||
<li><b>Enumeration</b>:virConnectList... and virConnectNumOf...:
|
||||
those are used to enumerate a set of object available to an given
|
||||
hypervisor connection like:
|
||||
<code class='docref'>virConnectListDomains</code>,
|
||||
<code class='docref'>virConnectNumOfDomains</code>,
|
||||
<code class='docref'>virConnectListNetworks</code>,
|
||||
<code class='docref'>virConnectListStoragePools</code>, etc.</li>
|
||||
<li><b>Description</b>: ...GetInfo: those are generic accessor providing
|
||||
a set of informations about an object, they are
|
||||
<code class='docref'>virNodeGetInfo</code>,
|
||||
<code class='docref'>virDomainGetInfo</code>,
|
||||
<code class='docref'>virStoragePoolGetInfo</code>,
|
||||
<code class='docref'>virStorageVolGetInfo</code>.</li>
|
||||
<li><b>Accessors</b>: ...Get... and ...Set...: those are more specific
|
||||
accessors to query or modify the given object, like
|
||||
<code class='docref'>virConnectGetType</code>,
|
||||
<code class='docref'>virDomainGetMaxMemory</code>,
|
||||
<code class='docref'>virDomainSetMemory</code>,
|
||||
<code class='docref'>virDomainGetVcpus</code>,
|
||||
<code class='docref'>virStoragePoolSetAutostart</code>,
|
||||
<code class='docref'>virNetworkGetBridgeName</code>, etc.</li>
|
||||
<li><b>Creation</b>: </li>
|
||||
<li><b>Destruction</b>: ... </li>
|
||||
</ul>
|
||||
<p> For more in-depth details of the storage related APIs see
|
||||
<a href="storage.html">the storage management page</a>,
|
||||
<h2><a name="Driver" id="Driver">The libvirt drivers</a></h2>
|
||||
<p></p>
|
||||
<p class="image">
|
||||
<img alt="The libvirt driver architecture"
|
||||
src="libvirt-driver-arch.png"/>
|
||||
</p>
|
||||
<h2><a name="Remote" id="Remote">Daemon and remote access</a></h2>
|
||||
<p></p>
|
||||
<p class="image">
|
||||
<img alt="The libvirt daemon and remote architecture"
|
||||
src="libvirt-daemon-arch.png"/>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
274
docs/api.xsl
274
docs/api.xsl
@ -1,274 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- this stylesheet builds the API*.html , it works based on libvirt-refs.xml
|
||||
-->
|
||||
<xsl:stylesheet version="1.0"
|
||||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:exsl="http://exslt.org/common"
|
||||
extension-element-prefixes="exsl"
|
||||
exclude-result-prefixes="exsl">
|
||||
|
||||
<!-- Import the rest of the site stylesheets -->
|
||||
<xsl:import href="site.xsl"/>
|
||||
|
||||
<!-- Generate XHTML-1.0 transitional -->
|
||||
<xsl:output method="xml" encoding="ISO-8859-1" indent="yes"
|
||||
doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
|
||||
|
||||
<xsl:variable name="href_base" select="''"/>
|
||||
<xsl:variable name="apirefs" select="document('libvirt-refs.xml')"/>
|
||||
<xsl:variable name="module" select="$apirefs/apirefs/@name"/>
|
||||
<xsl:key name="refhref" match="reference" use="@name"/>
|
||||
|
||||
<xsl:template match="ref" mode="anchor">
|
||||
<xsl:variable name="name" select="@name"/>
|
||||
<xsl:for-each select="document('libvirt-refs.xml')">
|
||||
<a href="{key('refhref', $name)/@href}"><xsl:value-of select="$name"/></a><br/>
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
<xsl:template match="type" mode="reflist">
|
||||
<h2>Type <xsl:value-of select="@name"/>:</h2>
|
||||
<p>
|
||||
<xsl:for-each select="ref">
|
||||
<xsl:apply-templates mode="anchor" select="."/>
|
||||
<xsl:text>
|
||||
</xsl:text>
|
||||
</xsl:for-each>
|
||||
</p>
|
||||
</xsl:template>
|
||||
<xsl:template match="letter" mode="reflist">
|
||||
<h2>Letter <xsl:value-of select="@name"/>:</h2>
|
||||
<p>
|
||||
<xsl:for-each select="ref">
|
||||
<xsl:apply-templates mode="anchor" select="."/>
|
||||
<xsl:text>
|
||||
</xsl:text>
|
||||
</xsl:for-each>
|
||||
</p>
|
||||
</xsl:template>
|
||||
<xsl:template match="file" mode="reflist">
|
||||
<h2><a name="{@name}">Module <xsl:value-of select="@name"/></a>:</h2>
|
||||
<p>
|
||||
<xsl:for-each select="ref">
|
||||
<xsl:apply-templates mode="anchor" select="."/>
|
||||
<xsl:text>
|
||||
</xsl:text>
|
||||
</xsl:for-each>
|
||||
</p>
|
||||
</xsl:template>
|
||||
<xsl:template match="letter" mode="wordlist">
|
||||
<h2>Letter <xsl:value-of select="@name"/>:</h2>
|
||||
<dl>
|
||||
<xsl:for-each select="word">
|
||||
<dt><xsl:value-of select="@name"/></dt>
|
||||
<dd>
|
||||
<xsl:for-each select="ref">
|
||||
<xsl:apply-templates mode="anchor" select="."/>
|
||||
<xsl:text>
|
||||
</xsl:text>
|
||||
</xsl:for-each>
|
||||
</dd>
|
||||
</xsl:for-each>
|
||||
</dl>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="constructors">
|
||||
<xsl:message>Generating API Constructors</xsl:message>
|
||||
<xsl:variable name="title">List of constructors for <xsl:value-of select="$module"/></xsl:variable>
|
||||
<xsl:document href="APIconstructors.html" method="xml" encoding="ISO-8859-1"
|
||||
doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<xsl:call-template name="style"/>
|
||||
<xsl:element name="title">
|
||||
<xsl:value-of select="$title"/>
|
||||
</xsl:element>
|
||||
</head>
|
||||
<body>
|
||||
<div id="container">
|
||||
<div id="intro">
|
||||
<div id="adjustments"/>
|
||||
<div id="pageHeader"/>
|
||||
<div id="content2">
|
||||
<xsl:call-template name="titlebox">
|
||||
<xsl:with-param name="title" select="$title"/>
|
||||
</xsl:call-template>
|
||||
<xsl:apply-templates mode="reflist" select="type"/>
|
||||
</div>
|
||||
</div>
|
||||
<xsl:call-template name="linkList2"/>
|
||||
<xsl:call-template name="bottom"/>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:document>
|
||||
</xsl:template>
|
||||
<xsl:template match="files">
|
||||
<xsl:message>Generating API List of synbols per file</xsl:message>
|
||||
<xsl:variable name="title">List of Symbols per Module for <xsl:value-of select="$module"/></xsl:variable>
|
||||
<xsl:document href="APIfiles.html" method="xml" encoding="ISO-8859-1"
|
||||
doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<xsl:call-template name="style"/>
|
||||
<xsl:element name="title">
|
||||
<xsl:value-of select="$title"/>
|
||||
</xsl:element>
|
||||
</head>
|
||||
<body>
|
||||
<div id="container">
|
||||
<div id="intro">
|
||||
<div id="adjustments"/>
|
||||
<div id="pageHeader"/>
|
||||
<div id="content2">
|
||||
<xsl:call-template name="titlebox">
|
||||
<xsl:with-param name="title" select="$title"/>
|
||||
</xsl:call-template>
|
||||
<xsl:apply-templates mode="reflist" select="file"/>
|
||||
</div>
|
||||
</div>
|
||||
<xsl:call-template name="linkList2"/>
|
||||
<xsl:call-template name="bottom"/>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:document>
|
||||
</xsl:template>
|
||||
<xsl:template match="functions">
|
||||
<xsl:message>Generating API Functions by Type</xsl:message>
|
||||
<xsl:variable name="title">List of function manipulating types in <xsl:value-of select="$module"/></xsl:variable>
|
||||
<xsl:document href="APIfunctions.html" method="xml" encoding="ISO-8859-1"
|
||||
doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<xsl:call-template name="style"/>
|
||||
<xsl:element name="title">
|
||||
<xsl:value-of select="$title"/>
|
||||
</xsl:element>
|
||||
</head>
|
||||
<body>
|
||||
<div id="container">
|
||||
<div id="intro">
|
||||
<div id="adjustments"/>
|
||||
<div id="pageHeader"/>
|
||||
<div id="content2">
|
||||
<xsl:call-template name="titlebox">
|
||||
<xsl:with-param name="title" select="$title"/>
|
||||
</xsl:call-template>
|
||||
<xsl:apply-templates mode="reflist" select="type"/>
|
||||
</div>
|
||||
</div>
|
||||
<xsl:call-template name="linkList2"/>
|
||||
<xsl:call-template name="bottom"/>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:document>
|
||||
</xsl:template>
|
||||
<xsl:template match="alpha">
|
||||
<xsl:message>Generating API Alphabetic list</xsl:message>
|
||||
<xsl:variable name="title">Alphabetic List of Symbols in <xsl:value-of select="$module"/></xsl:variable>
|
||||
<xsl:document href="APIsymbols.html" method="xml" encoding="ISO-8859-1"
|
||||
doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<xsl:call-template name="style"/>
|
||||
<xsl:element name="title">
|
||||
<xsl:value-of select="$title"/>
|
||||
</xsl:element>
|
||||
</head>
|
||||
<body>
|
||||
<div id="container">
|
||||
<div id="intro">
|
||||
<div id="adjustments"/>
|
||||
<div id="pageHeader"/>
|
||||
<div id="content2">
|
||||
<xsl:call-template name="titlebox">
|
||||
<xsl:with-param name="title" select="$title"/>
|
||||
</xsl:call-template>
|
||||
<xsl:apply-templates mode="reflist" select="letter"/>
|
||||
</div>
|
||||
</div>
|
||||
<xsl:call-template name="linkList2"/>
|
||||
<xsl:call-template name="bottom"/>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:document>
|
||||
</xsl:template>
|
||||
<xsl:template name="apichunks">
|
||||
<h2 align="center">
|
||||
<xsl:for-each select="/apirefs/index/chunks/chunk">
|
||||
<xsl:variable name="name" select="@name"/>
|
||||
<xsl:variable name="start" select="@start"/>
|
||||
<xsl:variable name="end" select="@end"/>
|
||||
<xsl:variable name="block" select="concat($start, '-', $end)"/>
|
||||
<a href="API{$name}.html"><xsl:value-of select="$block"/></a>
|
||||
<xsl:text>
|
||||
</xsl:text>
|
||||
</xsl:for-each>
|
||||
</h2>
|
||||
</xsl:template>
|
||||
<xsl:template match="chunk">
|
||||
<xsl:variable name="name" select="@name"/>
|
||||
<xsl:variable name="start" select="@start"/>
|
||||
<xsl:variable name="end" select="@end"/>
|
||||
<xsl:variable name="block" select="concat($start, '-', $end)"/>
|
||||
<xsl:variable name="target" select="/apirefs/index/chunk[@name = $name]"/>
|
||||
<xsl:variable name="title">API Alphabetic Index <xsl:value-of select="$block"/> for <xsl:value-of select="$module"/></xsl:variable>
|
||||
<xsl:document href="API{$name}.html" method="xml" encoding="ISO-8859-1"
|
||||
doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<xsl:call-template name="style"/>
|
||||
<xsl:element name="title">
|
||||
<xsl:value-of select="$title"/>
|
||||
</xsl:element>
|
||||
</head>
|
||||
<body>
|
||||
<div id="container">
|
||||
<div id="intro">
|
||||
<div id="adjustments"/>
|
||||
<div id="pageHeader"/>
|
||||
<div id="content2">
|
||||
<xsl:call-template name="titlebox">
|
||||
<xsl:with-param name="title" select="$title"/>
|
||||
</xsl:call-template>
|
||||
<xsl:call-template name="apichunks"/>
|
||||
<xsl:apply-templates mode="wordlist"
|
||||
select="$target/letter"/>
|
||||
<xsl:call-template name="apichunks"/>
|
||||
</div>
|
||||
</div>
|
||||
<xsl:call-template name="linkList2"/>
|
||||
<xsl:call-template name="bottom"/>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:document>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="index">
|
||||
<xsl:message>Generating API Index</xsl:message>
|
||||
<xsl:apply-templates select="chunks/chunk"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="apirefs">
|
||||
<xsl:message>Generating API Cross References</xsl:message>
|
||||
<xsl:apply-templates select="constructors"/>
|
||||
<xsl:apply-templates select="functions"/>
|
||||
<xsl:apply-templates select="alpha"/>
|
||||
<xsl:apply-templates select="files"/>
|
||||
<xsl:apply-templates select="index"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="/">
|
||||
<xsl:apply-templates select="$apirefs/apirefs"/>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user