mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 05:35:25 +00:00
libvirt domain xml allow to set peer address
Signed-off-by: Vasiliy Tolstov <v.tolstov@selfip.ru>
This commit is contained in:
parent
b3d069872c
commit
690969af9c
@ -4758,6 +4758,7 @@ qemu-kvm -net nic,model=? /dev/null
|
||||
<source network='default'/>
|
||||
<target dev='vnet0'/>
|
||||
<b><ip address='192.168.122.5' prefix='24'/></b>
|
||||
<b><ip address='192.168.122.5' prefix='24' peer='10.0.0.10'/></b>
|
||||
<b><route family='ipv4' address='192.168.122.0' prefix='24' gateway='192.168.122.1'/></b>
|
||||
<b><route family='ipv4' address='192.168.122.8' gateway='192.168.122.1'/></b>
|
||||
</interface>
|
||||
@ -4790,7 +4791,16 @@ qemu-kvm -net nic,model=? /dev/null
|
||||
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>
|
||||
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>
|
||||
|
||||
<h5><a name="elementVhostuser">vhost-user interface</a></h5>
|
||||
|
@ -2393,6 +2393,11 @@
|
||||
<ref name="ipPrefix"/>
|
||||
</attribute>
|
||||
</optional>
|
||||
<optional>
|
||||
<attribute name="peer">
|
||||
<ref name="ipAddr"/>
|
||||
</attribute>
|
||||
</optional>
|
||||
<empty/>
|
||||
</element>
|
||||
</zeroOrMore>
|
||||
|
@ -5733,7 +5733,7 @@ virDomainNetIpParseXML(xmlNodePtr node)
|
||||
unsigned int prefixValue = 0;
|
||||
char *familyStr = NULL;
|
||||
int family = AF_UNSPEC;
|
||||
char *address = NULL;
|
||||
char *address = NULL, *peer = NULL;
|
||||
|
||||
if (!(prefixStr = virXMLPropString(node, "prefix")) ||
|
||||
(virStrToLong_ui(prefixStr, NULL, 10, &prefixValue) < 0)) {
|
||||
@ -5747,6 +5747,9 @@ virDomainNetIpParseXML(xmlNodePtr node)
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if ((peer = virXMLPropString(node, "peer")) == NULL)
|
||||
VIR_DEBUG("Peer is empty");
|
||||
|
||||
familyStr = virXMLPropString(node, "family");
|
||||
if (familyStr && STREQ(familyStr, "ipv4"))
|
||||
family = AF_INET;
|
||||
@ -5764,6 +5767,14 @@ virDomainNetIpParseXML(xmlNodePtr node)
|
||||
address);
|
||||
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;
|
||||
|
||||
ret = ip;
|
||||
@ -5773,6 +5784,7 @@ virDomainNetIpParseXML(xmlNodePtr node)
|
||||
VIR_FREE(prefixStr);
|
||||
VIR_FREE(familyStr);
|
||||
VIR_FREE(address);
|
||||
VIR_FREE(peer);
|
||||
VIR_FREE(ip);
|
||||
return ret;
|
||||
}
|
||||
|
@ -514,6 +514,7 @@ typedef struct _virDomainNetIpDef virDomainNetIpDef;
|
||||
typedef virDomainNetIpDef *virDomainNetIpDefPtr;
|
||||
struct _virDomainNetIpDef {
|
||||
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 */
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user