
On IRC, we discussed another alternative - keep the top-level item as an array, and instead of adding "server-duid" as an array element, just add it as an optional field member of each {} ipv6 lease in the array (multiple copies of the string, but oh well). At least that way, you aren't artificially adding a non-lease to the array itself, and hopefully libvirt 1.2.6 ignores unknown fields of a lease array entry.
This seems to be the most easy option. Also, how about adding another field to every lease: "generated-by": "leaseshelper v$X" (where X is the value provided by the macro PACKAGE_VERSION) so that whenever a new field is added in the future, we don't have trouble finding out which version of leaseshelper added it. Regards, Nehal J Wani