[libvirt] [PATCH 02/10] conf: Network - add ability to read/write XML DHCP state
TJ
libvirt at iam.tj
Thu Feb 28 03:35:45 UTC 2013
On 28/02/13 03:23, Eric Blake wrote:
> On 02/27/2013 07:57 PM, TJ wrote:
>> From: TJ <linux at iam.tj>
>>
>> Maintain backwards XML compatibility by assuming existing default values
>> and only adding the additional XML properties if settings are not
>> default.
>>
>> Signed-off-by: TJ <linux at iam.tj>
>> ---
>> src/conf/network_conf.c | 28 ++++++++++++++++++++++++----
>> 1 file changed, 24 insertions(+), 4 deletions(-)
>>
>
>> + def->dhcp_enabled = true;
>> + if ((tmp = virXMLPropString(node, "enabled"))) {
>> + def->dhcp_enabled = strncmp("no", tmp, 2) == 0 ? false : def->dhcp_enabled;
>
> Yuck. This lets a user pass in trailing garbage. Use STREQ, not strncmp.
>
> For that matter, assigning def->dhcp_enabled to itself looks odd. I'd
> probably write:
>
> def->dhcp_enabled = true;
> if ((tmp = virXMLPropString(node, "enabled"))) {
> if (STREQ(tmp, "no"))
> def->dhcp_enabled = false;
> VIR_FREE(tmp);
>
> so that it doesn't look so screwy.
I knew there was probably a better 'libvirt' style but couldn't find examples when I was looking for them.
>> + !def->dhcp_enabled || def->dhcp_relay) {
>> int ii;
>> - virBufferAddLit(buf, "<dhcp>\n");
>> + virBufferAddLit(buf, "<dhcp");
>> + if (!def->dhcp_enabled)
>> + virBufferAddLit(buf, " enabled='no'");
>> + if (def->dhcp_relay)
>> + virBufferAddLit(buf, " relay='yes'");
>> + virBufferAddLit(buf, ">\n");
>> +
>> virBufferAdjustIndent(buf, 2);
>>
>> - for (ii = 0 ; ii < def->nranges ; ii++) {
>> + for (ii = 0 ; def->nranges && ii < def->nranges ; ii++) {
>
> This line is a spurious change.
Ahh yes. I introduced that to catch a bug found using gdb when nranges == 0 in the mistaken thinking that the loop would do at least one iteration. Later I realised the bug was caused by another issue
entirely but forgot to revert that change.
More information about the libvir-list
mailing list