<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        text-align:justify;
        text-justify:inter-ideograph;
        font-size:10.5pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"\7EAF\6587\672C Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.5pt;
        font-family:"Calibri","sans-serif";}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"\6279\6CE8\6846\6587\672C Char";
        margin:0cm;
        margin-bottom:.0001pt;
        text-align:justify;
        text-justify:inter-ideograph;
        font-size:9.0pt;
        font-family:"Calibri","sans-serif";}
span.Char
        {mso-style-name:"\7EAF\6587\672C Char";
        mso-style-priority:99;
        mso-style-link:\7EAF\6587\672C;
        font-family:"Calibri","sans-serif";}
span.Char0
        {mso-style-name:"\6279\6CE8\6846\6587\672C Char";
        mso-style-priority:99;
        mso-style-link:\6279\6CE8\6846\6587\672C;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
/* Page Definitions */
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="ZH-CN" link="blue" vlink="purple" style="text-justify-trim:punctuation">
<div class="WordSection1">
<p class="MsoPlainText"><span lang="EN-US">Hi,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">I am getting the following error when I try to migrate VM on my network using virsh migrate:<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">         error : qemuMonitorJSONCheckError:359 : internal error unable to execute QEMU command 'getfd': No file descriptor supplied via SCM_RIGHTS ;
<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">but, other vm's running on the server successfully migrated to remote server;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Libvirt Version: libvirt-0.10.2-46.el6.x86_64;
<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Qemu-kvm Version: qemu-kvm-0.12.1.2-2.448.el6.3.x86_64;
<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">OS Version: Red Hat Enterprise Linux Server release 6.6;
<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Thanks~<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Work Hard, Have Fun, Make History!<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Mail: raojunming113@pingan.com<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">-----</span><span style="font-family:SimSun">邮件原件</span><span lang="EN-US">-----<br>
</span><span style="font-family:SimSun">发件人</span><span lang="EN-US">: libvir-list-bounces@redhat.com [mailto:libvir-list-bounces@redhat.com]
</span><span style="font-family:SimSun">代表</span> <span lang="EN-US">libvir-list-request@redhat.com<br>
</span><span style="font-family:SimSun">发送时间</span><span lang="EN-US">: 2016</span><span style="font-family:SimSun">年</span><span lang="EN-US">5</span><span style="font-family:SimSun">月</span><span lang="EN-US">14</span><span style="font-family:SimSun">日</span><span lang="EN-US">
 7:47<br>
</span><span style="font-family:SimSun">收件人</span><span lang="EN-US">: libvir-list@redhat.com<br>
</span><span style="font-family:SimSun">主题</span><span lang="EN-US">: libvir-list Digest, Vol 126, Issue 182</span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Send libvir-list mailing list submissions to<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">         <a href="mailto:libvir-list@redhat.com">
<span style="color:windowtext;text-decoration:none">libvir-list@redhat.com</span></a><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">To subscribe or unsubscribe via the World Wide Web, visit<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">         <a href="https://www.redhat.com/mailman/listinfo/libvir-list">
<span style="color:windowtext;text-decoration:none">https://www.redhat.com/mailman/listinfo/libvir-list</span></a><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">or, via email, send a message with subject or body 'help' to<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">         <a href="mailto:libvir-list-request@redhat.com">
<span style="color:windowtext;text-decoration:none">libvir-list-request@redhat.com</span></a><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">You can reach the person managing the list at<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">         <a href="mailto:libvir-list-owner@redhat.com">
<span style="color:windowtext;text-decoration:none">libvir-list-owner@redhat.com</span></a><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">When replying, please edit your Subject line so it is more specific than "Re: Contents of libvir-list digest..."<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Today's Topics:<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">   1. [PATCH 3/6] iscsi: Export virISCSITargetAutologin (John Ferlan)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">   2. [PATCH 4/6] util: Add "--op nonpersistent" to iSCSI<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">      sendtargets (John Ferlan)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">   3. [PATCH 5/6] iscsi: Inhibit autologin for only libvirt         managed<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">      targets (John Ferlan)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">   4. [PATCH 6/6] iscsi: Remove initiatoriqn from<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">      virISCSIScanTargets (John Ferlan)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">   5. [PATCH] capabilities: Advertise cpuselection if -cpu host      is<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">      usable (Jiri Denemark)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">   6. Re: [PATCH 0/2] libxl: support pvusb (Jim Fehlig)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">   7. Re: [PATCH] libxl: add .domainInterfaceAddresses (Jim Fehlig)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">----------------------------------------------------------------------<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Message: 1<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Date: Fri, 13 May 2016 17:29:23 -0400<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">From: John Ferlan <<a href="mailto:jferlan@redhat.com"><span style="color:windowtext;text-decoration:none">jferlan@redhat.com</span></a>><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">To: <a href="mailto:libvir-list@redhat.com">
<span style="color:windowtext;text-decoration:none">libvir-list@redhat.com</span></a><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Subject: [libvirt] [PATCH 3/6] iscsi: Export virISCSITargetAutologin<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Message-ID: <<a href="mailto:1463174966-3185-4-git-send-email-jferlan@redhat.com"><span style="color:windowtext;text-decoration:none">1463174966-3185-4-git-send-email-jferlan@redhat.com</span></a>><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Make it accessible for future patches<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Signed-off-by: John Ferlan <<a href="mailto:jferlan@redhat.com"><span style="color:windowtext;text-decoration:none">jferlan@redhat.com</span></a>><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">---<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">src/libvirt_private.syms | 1 +<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">src/util/viriscsi.c      | 2 +-<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">src/util/viriscsi.h      | 7 +++++++<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">3 files changed, 9 insertions(+), 1 deletion(-)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index fb24808..719d753 100644<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">--- a/src/libvirt_private.syms<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+++ b/src/libvirt_private.syms<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">@@ -1675,6 +1675,7 @@ virISCSIGetSession;  virISCSINodeUpdate;  virISCSIRescanLUNs;  virISCSIScanTargets;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+virISCSITargetAutologin;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"> <o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"> # util/virjson.h<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">diff --git a/src/util/viriscsi.c b/src/util/viriscsi.c index be296d7..ea01b3d 100644<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">--- a/src/util/viriscsi.c<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+++ b/src/util/viriscsi.c<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">@@ -404,7 +404,7 @@ virISCSIGetTargets(char **const groups,  }<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"> <o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">-static int<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+int<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">virISCSITargetAutologin(const char *portal,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">                         const char *initiatoriqn,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">                         const char *target, diff --git a/src/util/viriscsi.h b/src/util/viriscsi.h index f4093f7..3e7ea68 100644<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">--- a/src/util/viriscsi.h<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+++ b/src/util/viriscsi.h<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">@@ -48,6 +48,13 @@ virISCSIRescanLUNs(const char *session)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">     ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"> int<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+virISCSITargetAutologin(const char *portal,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+                        const char *initiatoriqn,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+                        const char *target,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+                        bool enable)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(3) ATTRIBUTE_RETURN_CHECK;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+int<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">virISCSIScanTargets(const char *portal,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">                     const char *initiatoriqn,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">                     size_t *ntargetsret,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">--<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">2.5.5<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">------------------------------<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Message: 2<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Date: Fri, 13 May 2016 17:29:24 -0400<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">From: John Ferlan <<a href="mailto:jferlan@redhat.com"><span style="color:windowtext;text-decoration:none">jferlan@redhat.com</span></a>><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">To: <a href="mailto:libvir-list@redhat.com">
<span style="color:windowtext;text-decoration:none">libvir-list@redhat.com</span></a><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Subject: [libvirt] [PATCH 4/6] util: Add "--op nonpersistent" to iSCSI<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">         sendtargets<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Message-ID: <<a href="mailto:1463174966-3185-5-git-send-email-jferlan@redhat.com"><span style="color:windowtext;text-decoration:none">1463174966-3185-5-git-send-email-jferlan@redhat.com</span></a>><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">From: Fritz Elfert <<a href="mailto:fritz@fritz-elfert.de"><span style="color:windowtext;text-decoration:none">fritz@fritz-elfert.de</span></a>><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">The root cause of commit id '3c12b654' was to ensure that an iSCSI<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">sendtargets command to discover all the available targets on the<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">host didn't reset the "node.startup" value for a future restarts<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">on any target that libvirt is managing.<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">However, by adding the "--op nonpersistent" inhibits the iSCSI<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">initiator from recording/modifying in the bowels /var/lib/iscsi<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">of any target.<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Signed-off-by: John Ferlan <<a href="mailto:jferlan@redhat.com"><span style="color:windowtext;text-decoration:none">jferlan@redhat.com</span></a>><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">---<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">src/util/viriscsi.c  | 1 +<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">tests/viriscsitest.c | 4 +++-<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">2 files changed, 4 insertions(+), 1 deletion(-)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">diff --git a/src/util/viriscsi.c b/src/util/viriscsi.c<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">index ea01b3d..36612c5 100644<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">--- a/src/util/viriscsi.c<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+++ b/src/util/viriscsi.c<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">@@ -446,6 +446,7 @@ virISCSIScanTargets(const char *portal,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">                                              "--mode", "discovery",<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">                                              "--type", "sendtargets",<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">                                              "--portal", portal,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+                                             "--op", "nonpersistent",<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">                                              NULL);<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">     memset(&list, 0, sizeof(list));<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">diff --git a/tests/viriscsitest.c b/tests/viriscsitest.c<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">index c697a4a..b5b0e20 100644<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">--- a/tests/viriscsitest.c<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+++ b/tests/viriscsitest.c<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">@@ -90,7 +90,9 @@ static void testIscsiadmCb(const char *const*args,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">                args[4] && STREQ(args[4], "sendtargets") &&<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">                args[5] && STREQ(args[5], "--portal") &&<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">                args[6] && STREQ(args[6], "10.20.30.40:3260,1") &&<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">-               args[7] == NULL) {<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+               args[7] && STREQ(args[7], "--op") &&<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+               args[8] && STREQ(args[8], "nonpersistent") &&<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+               args[9] == NULL) {<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">         ignore_value(VIR_STRDUP(*output, iscsiadmSendtargetsOutput));<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">     } else {<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">         *status = -1;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">-- <o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">2.5.5<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">------------------------------<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Message: 3<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Date: Fri, 13 May 2016 17:29:25 -0400<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">From: John Ferlan <<a href="mailto:jferlan@redhat.com"><span style="color:windowtext;text-decoration:none">jferlan@redhat.com</span></a>><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">To: <a href="mailto:libvir-list@redhat.com">
<span style="color:windowtext;text-decoration:none">libvir-list@redhat.com</span></a><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Subject: [libvirt] [PATCH 5/6] iscsi: Inhibit autologin for only<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">         libvirt        managed targets<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Message-ID: <<a href="mailto:1463174966-3185-6-git-send-email-jferlan@redhat.com"><span style="color:windowtext;text-decoration:none">1463174966-3185-6-git-send-email-jferlan@redhat.com</span></a>><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><a href="https://bugzilla.redhat.com/show_bug.cgi?id=1331552"><span style="color:windowtext;text-decoration:none">https://bugzilla.redhat.com/show_bug.cgi?id=1331552</span></a><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Based on code originally posted by Fritz Elfert <<a href="mailto:fritz@fritz-elfert.de"><span style="color:windowtext;text-decoration:none">fritz@fritz-elfert.de</span></a>><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">to remove the Autologin code entirely from libvirt, but reworked to only<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">set Autologin for libvirt managed targets.<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Commit id '3c12b654' took a "large hammer" approach to inhibiting logins<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">which causes issues if there are iSCSI targets not being managed by libvirt.<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Now that the previous commit ensures that the iscsi initiator doesn't update<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">the /var/lib/iscsi tree with the results for a 'sendtargets' by using the<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">"--op nonpersistent" option, let's remove the code from virISCSIScanTargets<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">that disables autologin for every target, but add that same setting into<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">the start pool code for each managed/started target to ensure that nothing<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">else goes and tries to autologin.<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Signed-off-by: John Ferlan <<a href="mailto:jferlan@redhat.com"><span style="color:windowtext;text-decoration:none">jferlan@redhat.com</span></a>><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">---<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">src/storage/storage_backend_iscsi.c | 11 +++++++++++<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">src/util/viriscsi.c                 | 15 ++-------------<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">2 files changed, 13 insertions(+), 13 deletions(-)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">diff --git a/src/storage/storage_backend_iscsi.c b/src/storage/storage_backend_iscsi.c<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">index 9e2d01e..5fbf390 100644<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">--- a/src/storage/storage_backend_iscsi.c<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+++ b/src/storage/storage_backend_iscsi.c<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">@@ -404,6 +404,17 @@ virStorageBackendISCSIStartPool(virConnectPtr conn,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">                                 NULL, NULL) < 0)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">             goto cleanup;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+        /* Inhibit our autologin for our managed source device */<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+        if (virISCSITargetAutologin(portal,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+                                    pool->def->source.initiator.iqn,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+                                    pool->def->source.devices[0].path,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+                                    false) < 0) {<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+            virReportError(VIR_ERR_INTERNAL_ERROR,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+                           _("failed to inhibit autologin for target '%s'"),<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+                           pool->def->source.devices[0].path);<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+            goto cleanup;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+        }<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">         if (virStorageBackendISCSISetAuth(portal, conn, &pool->def->source) < 0)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">             goto cleanup;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">diff --git a/src/util/viriscsi.c b/src/util/viriscsi.c<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">index 36612c5..3133d88 100644<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">--- a/src/util/viriscsi.c<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+++ b/src/util/viriscsi.c<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">@@ -415,13 +415,14 @@ virISCSITargetAutologin(const char *portal,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">                                 "--value", enable ? "automatic" : "manual",<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">                                 NULL };<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+    VIR_DEBUG("set autologin for '%s' to '%d'", target, enable);<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">     return virISCSIConnection(portal, initiatoriqn, target, extraargv);<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">}<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"> <o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"> int<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">virISCSIScanTargets(const char *portal,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">-                    const char *initiatoriqn,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+                    const char *initiatoriqn ATTRIBUTE_UNUSED,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">                     size_t *ntargetsret,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">                     char ***targetsret)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">{<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">@@ -459,18 +460,6 @@ virISCSIScanTargets(const char *portal,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">                            &list, NULL, NULL) < 0)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">         goto cleanup;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">-    for (i = 0; i < list.ntargets; i++) {<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">-        /* We have to ignore failure, because we can't undo<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">-         * the results of 'sendtargets', unless we go scrubbing<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">-         * around in the dirt in /var/lib/iscsi.<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">-         */<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">-        if (virISCSITargetAutologin(portal,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">-                                    initiatoriqn,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">-                                    list.targets[i], false) < 0)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">-            VIR_WARN("Unable to disable auto-login on iSCSI target %s: %s",<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">-                     portal, list.targets[i]);<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">-    }<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">-<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">     if (ntargetsret && targetsret) {<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">         *ntargetsret = list.ntargets;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">         *targetsret = list.targets;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">-- <o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">2.5.5<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">------------------------------<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Message: 4<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Date: Fri, 13 May 2016 17:29:26 -0400<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">From: John Ferlan <<a href="mailto:jferlan@redhat.com"><span style="color:windowtext;text-decoration:none">jferlan@redhat.com</span></a>><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">To: <a href="mailto:libvir-list@redhat.com">
<span style="color:windowtext;text-decoration:none">libvir-list@redhat.com</span></a><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Subject: [libvirt] [PATCH 6/6] iscsi: Remove initiatoriqn from<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">         virISCSIScanTargets<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Message-ID: <<a href="mailto:1463174966-3185-7-git-send-email-jferlan@redhat.com"><span style="color:windowtext;text-decoration:none">1463174966-3185-7-git-send-email-jferlan@redhat.com</span></a>><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">No longer necessary to have it, so remove it.<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Signed-off-by: John Ferlan <<a href="mailto:jferlan@redhat.com"><span style="color:windowtext;text-decoration:none">jferlan@redhat.com</span></a>><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">---<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">src/storage/storage_backend_iscsi.c | 8 ++------<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">src/util/viriscsi.c                 | 3 +--<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">src/util/viriscsi.h                 | 1 -<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">tests/viriscsitest.c                | 3 +--<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">4 files changed, 4 insertions(+), 11 deletions(-)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">diff --git a/src/storage/storage_backend_iscsi.c b/src/storage/storage_backend_iscsi.c<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">index 5fbf390..b6b23d3 100644<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">--- a/src/storage/storage_backend_iscsi.c<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+++ b/src/storage/storage_backend_iscsi.c<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">@@ -197,9 +197,7 @@ virStorageBackendISCSIFindPoolSources(virConnectPtr conn ATTRIBUTE_UNUSED,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">     if (!(portal = virStorageBackendISCSIPortal(source)))<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">         goto cleanup;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">-    if (virISCSIScanTargets(portal,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">-                            source->initiator.iqn,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">-                            &ntargets, &targets) < 0)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+    if (virISCSIScanTargets(portal, &ntargets, &targets) < 0)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">         goto cleanup;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">     if (VIR_ALLOC_N(list.sources, ntargets) < 0)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">@@ -399,9 +397,7 @@ virStorageBackendISCSIStartPool(virConnectPtr conn,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">          * iscsiadm doesn't let you login to a target, unless you've<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">          * first issued a 'sendtargets' command to the portal :-(<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">          */<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">-        if (virISCSIScanTargets(portal,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">-                                pool->def->source.initiator.iqn,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">-                                NULL, NULL) < 0)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+        if (virISCSIScanTargets(portal, NULL, NULL) < 0)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">             goto cleanup;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">         /* Inhibit our autologin for our managed source device */<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">diff --git a/src/util/viriscsi.c b/src/util/viriscsi.c<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">index 3133d88..a2acb67 100644<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">--- a/src/util/viriscsi.c<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+++ b/src/util/viriscsi.c<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">@@ -321,7 +321,7 @@ virISCSIConnection(const char *portal,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">              * portal. Without the sendtargets all that is received is a<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">              * "iscsiadm: No records found"<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">              */<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">-            if (virISCSIScanTargets(portal, initiatoriqn, NULL, NULL) < 0)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+            if (virISCSIScanTargets(portal, NULL, NULL) < 0)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">                 goto cleanup;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">             break;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">@@ -422,7 +422,6 @@ virISCSITargetAutologin(const char *portal,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"> int<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">virISCSIScanTargets(const char *portal,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">-                    const char *initiatoriqn ATTRIBUTE_UNUSED,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">                     size_t *ntargetsret,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">                     char ***targetsret)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">{<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">diff --git a/src/util/viriscsi.h b/src/util/viriscsi.h<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">index 3e7ea68..44fb1f4 100644<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">--- a/src/util/viriscsi.h<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+++ b/src/util/viriscsi.h<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">@@ -56,7 +56,6 @@ virISCSITargetAutologin(const char *portal,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"> int<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">virISCSIScanTargets(const char *portal,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">-                    const char *initiatoriqn,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">                     size_t *ntargetsret,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">                     char ***targetsret)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">     ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">diff --git a/tests/viriscsitest.c b/tests/viriscsitest.c<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">index b5b0e20..40e4d10 100644<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">--- a/tests/viriscsitest.c<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+++ b/tests/viriscsitest.c<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">@@ -145,8 +145,7 @@ testISCSIScanTargets(const void *data)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">     virCommandSetDryRun(NULL, testIscsiadmCb, NULL);<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">-    if (virISCSIScanTargets(info->portal, NULL,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">-                            &ntargets, &targets) < 0)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+    if (virISCSIScanTargets(info->portal, &ntargets, &targets) < 0)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">         goto cleanup;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">     if (info->nexpected != ntargets) {<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">-- <o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">2.5.5<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">------------------------------<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Message: 5<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Date: Fri, 13 May 2016 23:36:17 +0200<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">From: Jiri Denemark <<a href="mailto:jdenemar@redhat.com"><span style="color:windowtext;text-decoration:none">jdenemar@redhat.com</span></a>><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">To: <a href="mailto:libvir-list@redhat.com">
<span style="color:windowtext;text-decoration:none">libvir-list@redhat.com</span></a><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Subject: [libvirt] [PATCH] capabilities: Advertise cpuselection if<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">         -cpu host is usable<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Message-ID:<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">         <<a href="mailto:a3394e6b8d0f28591147dd981909e9a1ae39f64d.1463175377.git.jdenemar@redhat.com"><span style="color:windowtext;text-decoration:none">a3394e6b8d0f28591147dd981909e9a1ae39f64d.1463175377.git.jdenemar@redhat.com</span></a>><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">         <o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">When -cpu host is supported by a QEMU binary, a user can use<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><cpu mode='host-passthrough'/> in domain XML even when libvirtd failed<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">to find a matching model for the host CPU. Let's make it obvious by<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">advertising <cpuselection/> guest capability whenever -cpu host is<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">supported.<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Signed-off-by: Jiri Denemark <<a href="mailto:jdenemar@redhat.com"><span style="color:windowtext;text-decoration:none">jdenemar@redhat.com</span></a>><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">---<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">src/qemu/qemu_capabilities.c                      | 7 ++++---<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">tests/qemucaps2xmldata/all_1.6.0-1.xml            | 1 +<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">tests/qemucaps2xmldata/nodisksnapshot_1.6.0-1.xml | 1 +<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">3 files changed, 6 insertions(+), 3 deletions(-)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">index 1bddf43..fcfd1cd 100644<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">--- a/src/qemu/qemu_capabilities.c<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+++ b/src/qemu/qemu_capabilities.c<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">@@ -928,9 +928,10 @@ virQEMUCapsInitGuestFromBinary(virCapsPtr caps,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">     machines = NULL;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">     nmachines = 0;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">-    if (caps->host.cpu &&<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">-        caps->host.cpu->model &&<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">-        virQEMUCapsGetCPUDefinitions(qemubinCaps, NULL) > 0 &&<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+    if ((virQEMUCapsGet(qemubinCaps, QEMU_CAPS_CPU_HOST) ||<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+         (caps->host.cpu &&<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+          caps->host.cpu->model &&<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+          virQEMUCapsGetCPUDefinitions(qemubinCaps, NULL) > 0)) &&<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">         !virCapabilitiesAddGuestFeature(guest, "cpuselection", true, false))<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">         goto cleanup;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">diff --git a/tests/qemucaps2xmldata/all_1.6.0-1.xml b/tests/qemucaps2xmldata/all_1.6.0-1.xml<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">index 2489f49..84d6000 100644<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">--- a/tests/qemucaps2xmldata/all_1.6.0-1.xml<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+++ b/tests/qemucaps2xmldata/all_1.6.0-1.xml<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">@@ -18,6 +18,7 @@<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">       </domain><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">     </arch><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">     <features><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+      <cpuselection/><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">       <deviceboot/><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">       <disksnapshot default='on' toggle='no'/><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">       <acpi default='on' toggle='yes'/><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">diff --git a/tests/qemucaps2xmldata/nodisksnapshot_1.6.0-1.xml b/tests/qemucaps2xmldata/nodisksnapshot_1.6.0-1.xml<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">index 281fab0..28762c2 100644<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">--- a/tests/qemucaps2xmldata/nodisksnapshot_1.6.0-1.xml<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+++ b/tests/qemucaps2xmldata/nodisksnapshot_1.6.0-1.xml<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">@@ -18,6 +18,7 @@<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">       </domain><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">     </arch><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">     <features><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">+      <cpuselection/><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">       <deviceboot/><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">       <disksnapshot default='off' toggle='no'/><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">       <acpi default='on' toggle='yes'/><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">-- <o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">2.8.2<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">------------------------------<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Message: 6<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Date: Fri, 13 May 2016 16:57:30 -0600<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">From: Jim Fehlig <<a href="mailto:jfehlig@suse.com"><span style="color:windowtext;text-decoration:none">jfehlig@suse.com</span></a>><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">To: Joao Martins <<a href="mailto:joao.m.martins@oracle.com"><span style="color:windowtext;text-decoration:none">joao.m.martins@oracle.com</span></a>><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Cc: <a href="mailto:libvirt-list@redhat.com">
<span style="color:windowtext;text-decoration:none">libvirt-list@redhat.com</span></a><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Subject: Re: [libvirt] [PATCH 0/2] libxl: support pvusb<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Message-ID: <<a href="mailto:57365BDA.7090005@suse.com"><span style="color:windowtext;text-decoration:none">57365BDA.7090005@suse.com</span></a>><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Content-Type: text/plain; charset=windows-1252<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">On 05/13/2016 07:14 AM, Joao Martins wrote:<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> On 05/12/2016 11:43 PM, Jim Fehlig wrote:<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">>> Chunyan Liu wrote:<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">>>> This patch series is to support pvusb in libxl driver.<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">>>><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">>>> Chunyan Liu (2):<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">>>>   libxl: support creating guest with USB hostdev<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">>>>   libxl: support hotplug USB host device<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">>> This series should also include support for converting domXML USB config to/from<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">>> xl.cfg(5) in src/xenconfig/xen_xl.c, along with a test.<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">>><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">>> FYI, the series fails to build with Xen < 4.7, where LIBXL_HAVE_PVUSB is not<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">>> defined :-).<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> Probably a nice follow-up after this series is in, would be to add the USB<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> subsys type to domain capabilities (that you address in the OVMF series)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Yes, good point. I'll add it to that series if this one makes it in first.<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Speaking of the OVMF series, I've fixed a few things after more testing and will<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">rebase and resend a V2. Thanks in advance if either of you have time to look at it.<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Regards,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Jim<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">------------------------------<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Message: 7<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Date: Fri, 13 May 2016 17:47:09 -0600<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">From: Jim Fehlig <<a href="mailto:jfehlig@suse.com"><span style="color:windowtext;text-decoration:none">jfehlig@suse.com</span></a>><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">To: Chunyan Liu <<a href="mailto:cyliu@suse.com"><span style="color:windowtext;text-decoration:none">cyliu@suse.com</span></a>>,
<a href="mailto:libvirt-list@redhat.com"><span style="color:windowtext;text-decoration:none">libvirt-list@redhat.com</span></a><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Subject: Re: [libvirt] [PATCH] libxl: add .domainInterfaceAddresses<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Message-ID: <<a href="mailto:5736677D.8030209@suse.com"><span style="color:windowtext;text-decoration:none">5736677D.8030209@suse.com</span></a>><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Content-Type: text/plain; charset=windows-1252<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">On 05/13/2016 12:21 AM, Chunyan Liu wrote:<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> Add .domainInterfaceAddresses so that user can have a way to<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> get domain interface address by 'virsh domifaddr'. Currently<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> it only supports '--source lease'.<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> Signed-off: Chunyan Liu <<a href="mailto:cyliu@suse.com"><span style="color:windowtext;text-decoration:none">cyliu@suse.com</span></a>><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> ---<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">>  src/libxl/libxl_driver.c | 140 +++++++++++++++++++++++++++++++++++++++++++++++<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">>  1 file changed, 140 insertions(+)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> index 062d6f8..f2bd6fa 100644<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> --- a/src/libxl/libxl_driver.c<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +++ b/src/libxl/libxl_driver.c<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> @@ -5425,6 +5425,145 @@ static int libxlNodeGetSecurityModel(virConnectPtr conn,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">>      return 0;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">>  }<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">>  <o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +static int<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +libxlGetDHCPInterfaces(virDomainPtr dom,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +                       virDomainObjPtr vm,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +                       virDomainInterfacePtr **ifaces)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +{<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +    int rv = -1;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +    int n_leases = 0;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +    size_t i, j;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +    size_t ifaces_count = 0;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +    virNetworkPtr network = NULL;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +    char macaddr[VIR_MAC_STRING_BUFLEN];<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +    virDomainInterfacePtr iface = NULL;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +    virNetworkDHCPLeasePtr *leases = NULL;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +    virDomainInterfacePtr *ifaces_ret = NULL;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +    if (!dom->conn->networkDriver ||<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +        !dom->conn->networkDriver->networkGetDHCPLeases) {<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +                       _("Network driver does not support DHCP lease query"));<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +        return -1;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +    }<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +    for (i = 0; i < vm->def->nnets; i++) {<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +        if (vm->def->nets[i]->type != VIR_DOMAIN_NET_TYPE_NETWORK)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +            continue;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +        virMacAddrFormat(&(vm->def->nets[i]->mac), macaddr);<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +        virObjectUnref(network);<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +        network = virNetworkLookupByName(dom->conn,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +                                         vm->def->nets[i]->data.network.name);<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +        if ((n_leases = virNetworkGetDHCPLeases(network, macaddr,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +                                                &leases, 0)) < 0)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +            goto error;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +        if (n_leases) {<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +            if (VIR_EXPAND_N(ifaces_ret, ifaces_count, 1) < 0)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +                goto error;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +            if (VIR_ALLOC(ifaces_ret[ifaces_count - 1]) < 0)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +                goto error;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +            iface = ifaces_ret[ifaces_count - 1];<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +            /* Assuming each lease corresponds to a separate IP */<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +            iface->naddrs = n_leases;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +            if (VIR_ALLOC_N(iface->addrs, iface->naddrs) < 0)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +                goto error;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +            if (VIR_STRDUP(iface->name, vm->def->nets[i]->ifname) < 0)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +                goto cleanup;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +            if (VIR_STRDUP(iface->hwaddr, macaddr) < 0)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +                goto cleanup;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +        }<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +        for (j = 0; j < n_leases; j++) {<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +            virNetworkDHCPLeasePtr lease = leases[j];<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +            virDomainIPAddressPtr ip_addr = &iface->addrs[j];<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +            if (VIR_STRDUP(ip_addr->addr, lease->ipaddr) < 0)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +                goto cleanup;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +            ip_addr->type = lease->type;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +            ip_addr->prefix = lease->prefix;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +        }<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +        for (j = 0; j < n_leases; j++)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +            virNetworkDHCPLeaseFree(leases[j]);<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +        VIR_FREE(leases);<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +    }<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +    *ifaces = ifaces_ret;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +    ifaces_ret = NULL;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +    rv = ifaces_count;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> + cleanup:<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +    virObjectUnref(network);<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +    if (leases) {<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +        for (i = 0; i < n_leases; i++)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +            virNetworkDHCPLeaseFree(leases[i]);<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +    }<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +    VIR_FREE(leases);<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +    return rv;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> + error:<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +    if (ifaces_ret) {<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +        for (i = 0; i < ifaces_count; i++)<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +            virDomainInterfaceFree(ifaces_ret[i]);<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +    }<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +    VIR_FREE(ifaces_ret);<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +    goto cleanup;<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">> +}<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">It's unfortunate this is a copy-paste from the qemu driver. The code is not<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">trivial and any bug fixes in one copy could be missed in the other. A lot of the<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">function is domain related, so probably can't be abstracted further to the<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">network code. Have you considered approaches that allow the drivers to share<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">this code?<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Regards,<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">Jim<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">------------------------------<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">--<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">libvir-list mailing list<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><a href="mailto:libvir-list@redhat.com"><span style="color:windowtext;text-decoration:none">libvir-list@redhat.com</span></a><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><a href="https://www.redhat.com/mailman/listinfo/libvir-list"><span style="color:windowtext;text-decoration:none">https://www.redhat.com/mailman/listinfo/libvir-list</span></a><o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">End of libvir-list Digest, Vol 126, Issue 182<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-US">*********************************************<o:p></o:p></span></p>
</div>
<p><br>********************************************************************************************************************************<br>The information in this email is confidential and may be legally privileged. If you have received this email in error or are not the intended recipient, please immediately notify the sender and delete this message from your computer. Any use, distribution, or copying of this email other than by the intended recipient is strictly prohibited. All messages sent to and from us may be monitored to ensure compliance with internal policies and to protect our business. <br>Emails are not secure and cannot be guaranteed to be error free as they can be intercepted, amended, lost or destroyed, or contain viruses. Anyone who communicates with us by email is taken to accept these risks. </p><p>收发邮件者请注意:<br>本邮件含保密信息,若误收本邮件,请务必通知发送人并直接删去,不得使用、传播或复制本邮件。<br>进出邮件均受到本公司合规监控。邮件可能发生被截留、被修改、丢失、被破坏或包含计算机病毒等不安全情况。 <br>********************************************************************************************************************************</p></body>
</html>