
On 10/22/2013 04:15 PM, Daniel P. Berrange wrote:
On Tue, Oct 22, 2013 at 04:15:37PM +0530, Nehal J Wani wrote:
Q1. The --dhcp-script option will require libvirt to provide a script or executable file to be run. Now as the man page says, this file is executed "Whenever a new DHCP ease is created, or an old one destroyed". Life was easy with the script, as it used the command sed to remove the destroyed lease. eblake had suggested me to use a C program instead. So I wanted to finalize whether to go with C or continue with shell script.
Libvirt aims to avoid shell code whereever possible, since it is really a very bad language from terms of reliability and security. eg quoting rules are easy to get wrong, error handling is awful, portability is non-trivial.
For examples of writing a helper C program, see how src/util/iohelper.c is compiled into libvirt_iohelper.
Q2. The above executable file will be writing the custom formatted lease parameters to a file "dnsmasq-ip-mac.status" (suggestion open for name). This newly created/updated file will be parsed by the API. We need to decide the format for the file. Do we continue with space separated parameters as before?
Ideally do not invent any new format - use a format that we already have a parser for - eg the src/util/virconf.h or src/util/virkeyfile.h APIs for loading configs.
or XML, if the config file format is insufficient. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org