mirror of
https://github.com/libvirt/libvirt.git
synced 2026-08-17 16:44:43 -05:00
LXC: set IP addresses to veth devices in the container
Uses the new virDomainNetDef ips to set the IP addresses on the network interfaces in the container.
This commit is contained in:
+19
-1
@@ -495,7 +495,7 @@ static int lxcContainerRenameAndEnableInterfaces(virDomainDefPtr vmDef,
|
||||
char **veths)
|
||||
{
|
||||
int rc = 0;
|
||||
size_t i;
|
||||
size_t i, j;
|
||||
char *newname = NULL;
|
||||
virDomainNetDefPtr netDef;
|
||||
bool privNet = vmDef->features[VIR_DOMAIN_FEATURE_PRIVNET] ==
|
||||
@@ -516,6 +516,24 @@ static int lxcContainerRenameAndEnableInterfaces(virDomainDefPtr vmDef,
|
||||
if (rc < 0)
|
||||
goto error_out;
|
||||
|
||||
for (j = 0; j < netDef->nips; j++) {
|
||||
virDomainNetIpDefPtr ip = netDef->ips[j];
|
||||
unsigned int prefix = (ip->prefix > 0) ? ip->prefix :
|
||||
VIR_SOCKET_ADDR_DEFAULT_PREFIX;
|
||||
char *ipStr = virSocketAddrFormat(&ip->address);
|
||||
|
||||
VIR_DEBUG("Adding IP address '%s/%u' to '%s'",
|
||||
ipStr, ip->prefix, newname);
|
||||
if (virNetDevSetIPAddress(newname, &ip->address, prefix) < 0) {
|
||||
virReportError(VIR_ERR_SYSTEM_ERROR,
|
||||
_("Failed to set IP address '%s' on %s"),
|
||||
ipStr, newname);
|
||||
VIR_FREE(ipStr);
|
||||
goto error_out;
|
||||
}
|
||||
VIR_FREE(ipStr);
|
||||
}
|
||||
|
||||
VIR_DEBUG("Enabling %s", newname);
|
||||
rc = virNetDevSetOnline(newname, true);
|
||||
if (rc < 0)
|
||||
|
||||
@@ -54,6 +54,8 @@ typedef struct {
|
||||
# define VIR_SOCKET_ADDR_FAMILY(s) \
|
||||
((s)->data.sa.sa_family)
|
||||
|
||||
# define VIR_SOCKET_ADDR_DEFAULT_PREFIX 24
|
||||
|
||||
typedef virSocketAddr *virSocketAddrPtr;
|
||||
|
||||
typedef struct _virSocketAddrRange virSocketAddrRange;
|
||||
|
||||
Reference in New Issue
Block a user