[libvirt] [PATCH 3/3] (REVISED) Support for IPv6 / multiple addresses per interface in virInterface

Laine Stump laine at laine.org
Thu Oct 29 06:53:58 UTC 2009


On 10/28/2009 07:06 AM, Daniel Veillard wrote:
> On Fri, Oct 23, 2009 at 01:31:19PM -0400, Laine Stump wrote:
>    
>> diff --git a/src/conf/interface_conf.c b/src/conf/interface_conf.c
>> index d46f7ac..7cb71ed 100644
>> --- a/src/conf/interface_conf.c
>> +++ b/src/conf/interface_conf.c
>> @@ -53,9 +53,31 @@ void virInterfaceBareDefFree(virInterfaceBareDefPtr def) {
>>       VIR_FREE(def);
>>   }
>>
>> +static
>> +void virInterfaceIpDefFree(virInterfaceIpDefPtr def) {
>> +    if (def == NULL)
>> +        return;
>> +    VIR_FREE(def->address);
>> +}
>>      
>    Hum ... shouldn't def be freed too there ???
>    


Yes, you are correct. It will be fixed in the redo.


>
>> +        ctxt->node = ipNodes[ii];
>> +        ret = virInterfaceDefParseIp(conn, ip, ctxt);
>> +        if (ret != 0) {
>> +            virInterfaceIpDefFree(ip);
>> +            goto error;
>>      
>    Hum ....
>    
>> +        }
>> +        def->ips[def->nips++] = ip;
>> +    }
>> +
>> +    ret = 0;
>> +
>> +error:
>> +    VIR_FREE(ipNodes);
>> +    return(ret);
>> +}
>>      
>    It's hard to be sure we aren't leaking there too. On second reading
>    this looks okay because def is passed by the caller and we are storing
>    the data there.
>    


Correct. The caller will clean up if there's a failure.


>      Hum, we don't check there that an ipv6/4 protocol is not defined
>      multiple time. Maybe this could be slightly refactored to search
> for 1 protocol node with type IPv4 and the one protocol node for type
> Ipv6 something like
>     v4 = virXPathNode(conn, "./protocol[@family = 'ipv4']", ctxt)
>     v6 = virXPathNode(conn, "./protocol[@family = 'ipv6']", ctxt)
>    

Yeah, I can do that.

In the meantime, I've sent a netcf patch that gets vlan xml passing the 
libvirt parse, but I'm having trouble finding the info for bridges and 
bonds either in sysfs or netlink, and my brain is finished for the day. 
Basically, for a bridge to pass, we need the name of the physical 
interface, and for bond to pass, we need an miimon node with freq 
property, or an arpmode node with interval and target properties, in 
addition to the names of the physical interfaces. I'm not finding those 
anywhere.




More information about the libvir-list mailing list