提交 690969af 编写于 作者: V Vasiliy Tolstov 提交者: Daniel P. Berrange

libvirt domain xml allow to set peer address

Signed-off-by: NVasiliy Tolstov <v.tolstov@selfip.ru>
上级 b3d06987
...@@ -4758,6 +4758,7 @@ qemu-kvm -net nic,model=? /dev/null ...@@ -4758,6 +4758,7 @@ qemu-kvm -net nic,model=? /dev/null
&lt;source network='default'/&gt; &lt;source network='default'/&gt;
&lt;target dev='vnet0'/&gt; &lt;target dev='vnet0'/&gt;
<b>&lt;ip address='192.168.122.5' prefix='24'/&gt;</b> <b>&lt;ip address='192.168.122.5' prefix='24'/&gt;</b>
<b>&lt;ip address='192.168.122.5' prefix='24' peer='10.0.0.10'/&gt;</b>
<b>&lt;route family='ipv4' address='192.168.122.0' prefix='24' gateway='192.168.122.1'/&gt;</b> <b>&lt;route family='ipv4' address='192.168.122.0' prefix='24' gateway='192.168.122.1'/&gt;</b>
<b>&lt;route family='ipv4' address='192.168.122.8' gateway='192.168.122.1'/&gt;</b> <b>&lt;route family='ipv4' address='192.168.122.8' gateway='192.168.122.1'/&gt;</b>
&lt;/interface&gt; &lt;/interface&gt;
...@@ -4790,7 +4791,16 @@ qemu-kvm -net nic,model=? /dev/null ...@@ -4790,7 +4791,16 @@ qemu-kvm -net nic,model=? /dev/null
to define the network routes to use for the network device. The attributes to define the network routes to use for the network device. The attributes
of this element are described in the documentation for the <code>route</code> of this element are described in the documentation for the <code>route</code>
element in <a href="formatnetwork.html#elementsStaticroute">network definitions</a>. element in <a href="formatnetwork.html#elementsStaticroute">network definitions</a>.
This is only used by the LXC driver. This is used by the LXC driver and <span class="since">Since 1.3.3</span> by the QEMU
driver.
</p>
<p>
<span class="since">Since 1.3.3</span> ip elements can hold peer attribute to assign
a point-to-point address for the network device. The attributes of this element
are described in the documentation for the <code>ip</code> element in
<a href="formatnetwork.html#elementsAddress">network definitions</a>.
This is only used by the LXC and QEMU drivers.
</p> </p>
<h5><a name="elementVhostuser">vhost-user interface</a></h5> <h5><a name="elementVhostuser">vhost-user interface</a></h5>
......
...@@ -2393,6 +2393,11 @@ ...@@ -2393,6 +2393,11 @@
<ref name="ipPrefix"/> <ref name="ipPrefix"/>
</attribute> </attribute>
</optional> </optional>
<optional>
<attribute name="peer">
<ref name="ipAddr"/>
</attribute>
</optional>
<empty/> <empty/>
</element> </element>
</zeroOrMore> </zeroOrMore>
......
...@@ -5733,7 +5733,7 @@ virDomainNetIpParseXML(xmlNodePtr node) ...@@ -5733,7 +5733,7 @@ virDomainNetIpParseXML(xmlNodePtr node)
unsigned int prefixValue = 0; unsigned int prefixValue = 0;
char *familyStr = NULL; char *familyStr = NULL;
int family = AF_UNSPEC; int family = AF_UNSPEC;
char *address = NULL; char *address = NULL, *peer = NULL;
if (!(prefixStr = virXMLPropString(node, "prefix")) || if (!(prefixStr = virXMLPropString(node, "prefix")) ||
(virStrToLong_ui(prefixStr, NULL, 10, &prefixValue) < 0)) { (virStrToLong_ui(prefixStr, NULL, 10, &prefixValue) < 0)) {
...@@ -5747,6 +5747,9 @@ virDomainNetIpParseXML(xmlNodePtr node) ...@@ -5747,6 +5747,9 @@ virDomainNetIpParseXML(xmlNodePtr node)
goto cleanup; goto cleanup;
} }
if ((peer = virXMLPropString(node, "peer")) == NULL)
VIR_DEBUG("Peer is empty");
familyStr = virXMLPropString(node, "family"); familyStr = virXMLPropString(node, "family");
if (familyStr && STREQ(familyStr, "ipv4")) if (familyStr && STREQ(familyStr, "ipv4"))
family = AF_INET; family = AF_INET;
...@@ -5764,6 +5767,14 @@ virDomainNetIpParseXML(xmlNodePtr node) ...@@ -5764,6 +5767,14 @@ virDomainNetIpParseXML(xmlNodePtr node)
address); address);
goto cleanup; goto cleanup;
} }
if ((peer != NULL) && (virSocketAddrParse(&ip->peer, peer, family) < 0)) {
virReportError(VIR_ERR_INVALID_ARG,
_("Failed to parse IP address: '%s'"),
peer);
goto cleanup;
}
ip->prefix = prefixValue; ip->prefix = prefixValue;
ret = ip; ret = ip;
...@@ -5773,6 +5784,7 @@ virDomainNetIpParseXML(xmlNodePtr node) ...@@ -5773,6 +5784,7 @@ virDomainNetIpParseXML(xmlNodePtr node)
VIR_FREE(prefixStr); VIR_FREE(prefixStr);
VIR_FREE(familyStr); VIR_FREE(familyStr);
VIR_FREE(address); VIR_FREE(address);
VIR_FREE(peer);
VIR_FREE(ip); VIR_FREE(ip);
return ret; return ret;
} }
......
...@@ -514,6 +514,7 @@ typedef struct _virDomainNetIpDef virDomainNetIpDef; ...@@ -514,6 +514,7 @@ typedef struct _virDomainNetIpDef virDomainNetIpDef;
typedef virDomainNetIpDef *virDomainNetIpDefPtr; typedef virDomainNetIpDef *virDomainNetIpDefPtr;
struct _virDomainNetIpDef { struct _virDomainNetIpDef {
virSocketAddr address; /* ipv4 or ipv6 address */ virSocketAddr address; /* ipv4 or ipv6 address */
virSocketAddr peer; /* ipv4 or ipv6 address of peer */
unsigned int prefix; /* number of 1 bits in the net mask */ unsigned int prefix; /* number of 1 bits in the net mask */
}; };
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册