[libvirt] [PATCHv3 03/16] LXC: set IP addresses to veth devices in the container

John Ferlan jferlan at redhat.com
Wed Oct 22 10:25:33 UTC 2014



On 10/22/2014 06:05 AM, Daniel P. Berrange wrote:
> On Fri, Oct 10, 2014 at 02:03:55PM +0200, Cédric Bosdonnat wrote:
>> Uses the new virDomainNetDef ips to set the IP addresses on the network
>> interfaces in the container.
>> ---
>>  src/lxc/lxc_container.c | 24 +++++++++++++++++++++++-
>>  1 file changed, 23 insertions(+), 1 deletion(-)
>>
>> diff --git a/src/lxc/lxc_container.c b/src/lxc/lxc_container.c
>> index 2af2674..608d39f 100644
>> --- a/src/lxc/lxc_container.c
>> +++ b/src/lxc/lxc_container.c
>> @@ -496,7 +496,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] ==
>> @@ -517,6 +517,28 @@ 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 : 24;
>> +            virSocketAddr address;
>> +            int family = AF_INET;
>> +
>> +            if (strchr(ip->address, ':'))
>> +                family = AF_INET6;
>> +
>> +            if (virSocketAddrParse(&address, ip->address, family) < 0)
>> +                goto error_out;
> 
> Hmm, so this again makes me think we should have another patch in the series
> just before this, but after the first XML patch, which converts the virDomainConf
> to use  virSocketAddr directly. I think it would be good practice for us to extend
> the XML to include teh address family too, instead of just doing strchr for ':'
> to detect IPv6.
> 

FYI: See virSocketAddrNumericFamily


>> +
>> +            VIR_DEBUG("Adding IP address '%s/%u' to '%s'",
>> +                      ip->address, ip->prefix, newname);
>> +            if (virNetDevSetIPv4Address(newname, &address, prefix) < 0) {
>> +                virReportError(VIR_ERR_SYSTEM_ERROR,
>> +                               _("Failed to set IP address '%s' on %s"),
>> +                               ip->address, newname);
>> +                goto error_out;
>> +            }
>> +        }
>> +
> 
> Regards,
> Daniel
> 




More information about the libvir-list mailing list