On Fri, Feb 22, 2008 at 08:04:26AM +0000, Mark McLoughlin wrote:
Hi Rich,
On Thu, 2008-02-21 at 20:54 +0000, Richard W.M. Jones wrote:
> What this patch allows you to do is to create a table of IP address to
> host (defined by its hardware / MAC address) for each virtual network.
> Optionally you can also assign a hostname. When a host starts up and
> requests an IP address through DHCP, if it is in this table then it
> gets the fixed IP address from the table and, optionally, a fixed
> hostname.
>
> Four new API calls are added. Two are required to list the contents
> of the mapping table. Two more allow you to add and delete a mapping.
>
> The mapping table is semi-permanent. It is stored in
> /var/lib/libvirt/hosts-<networkname>.conf and survives across libvirtd
> restarts.
Cool stuff, but why isn't this just an addition to the network's XML
definition?
It is possible, but tricky to get the on-the-fly updates when the semantics
of the APIs for creating/definging networks.
If you call 'virNetworkDefine' with a new XML doc, it loads the new config
into memory, but does not apply the config until you destroy & restart
the network in question. We can't destroy & restart the network since this
would break networking for any live guests attached to the network.
So if we wanted to represent this in the master XML for a network we'd have
to follow the example of domain device hotplug, and have APIs to add/remove
a snippet of XML describing the new entry.
virNetworkAddHostMapping(virNetworkPtr net, char *xml);
virNetworkRemoveHostMapping(virNetworkPtr net, char *xml);
Where the XML was:
'<mapping hostname="foo"
mac="00:33:22:55:44:11"/>'
Dan.
--
|=- Red Hat, Engineering, Emerging Technologies, Boston. +1 978 392 2496 -=|
|=- Perl modules:
http://search.cpan.org/~danberr/ -=|
|=- Projects:
http://freshmeat.net/~danielpb/ -=|
|=- GnuPG: 7D3B9505 F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 -=|