<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>
</pre>
<p>
- <span class="since">Since 1.2.12</span> the network devices and host devices
- with network capabilities can be provided zero or more IP addresses to set
- on the target device. Note that some hypervisors or network device types
- will simply ignore them or only use the first one. The <code>family</code>
- attribute can be set to either <code>ipv4</code> or <code>ipv6</code>, the
- <code>address</code> attribute holds the IP address. The <code>prefix</code>
- is not mandatory since some hypervisors do not handle it.
- </p>
-
- <p>
- <span class="since">Since 1.2.12</span> route elements can also be added
- 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.
+ <span class="since">Since 1.2.12</span> network devices and
+ hostdev devices with network capabilities can optionally be provided
+ one or more IP addresses to set on the network device in the
+ guest. Note that some hypervisors or network device types will
+ simply ignore them or only use the first one.
+ The <code>family</code> attribute can be set to
+ either <code>ipv4</code> or <code>ipv6</code>, and the
+ <code>address</code> attribute contains the IP address. The
+ optional <code>prefix</code> is the number of 1 bits in the
+ netmask, and will be automatically set if not specified - for
+ IPv4 the default prefix is determined according to the network
+ "class" (A, B, or C - see RFC870), and for IPv6 the default
+ prefix is 64. The optional <code>peer</code> attribute holds the
+ IP address of the other end of a point-to-point network
+ device <span class="since">(since 2.1.0)</span>.
+ </p>
+
+ <p>
+ <span class="since">Since 1.2.12</span> route elements can also be
+ added to define IP routes to add in the guest. 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 used by the LXC driver.
</p>
<h5><a name="elementVhostuser">vhost-user interface</a></h5>
unsigned int prefixValue = 0;
char *familyStr = NULL;
int family = AF_UNSPEC;
- char *address = NULL;
+ char *address = NULL, *peer = NULL;
if (!(address = virXMLPropString(node, "address"))) {
virReportError(VIR_ERR_XML_ERROR, "%s",
}
ip->prefix = prefixValue;
+ if ((peer = virXMLPropString(node, "peer")) != NULL &&
+ virSocketAddrParse(&ip->peer, peer, family) < 0) {
+ virReportError(VIR_ERR_INVALID_ARG,
+ _("Invalid peer '%s' in <ip>"), peer);
+ goto cleanup;
+ }
+
ret = ip;
ip = NULL;
VIR_FREE(prefixStr);
VIR_FREE(familyStr);
VIR_FREE(address);
+ VIR_FREE(peer);
VIR_FREE(ip);
return ret;
}
virBufferAsprintf(buf, " family='%s'", familyStr);
if (def->ips[i]->prefix)
virBufferAsprintf(buf, " prefix='%u'", def->ips[i]->prefix);
+ if (VIR_SOCKET_ADDR_VALID(&def->ips[i]->peer)) {
+ if (!(ipStr = virSocketAddrFormat(&def->ips[i]->peer)))
+ return -1;
+ virBufferAsprintf(buf, " peer='%s'", ipStr);
+ VIR_FREE(ipStr);
+ }
virBufferAddLit(buf, "/>\n");
}