[libvirt] [RFC, PATCH] network: add 'netboot' option to dhcp config

Paolo Bonzini bonzini at gnu.org
Mon Sep 14 23:57:47 UTC 2009


On 09/15/2009 01:01 AM, Jeremy Kerr wrote:
> Hi Paolo,
>
>> Since there is only one TFTP server running in the network
>
> IIRC, it's possible to have more than one: the Server-Name (id 66) of the DHCP
> response specifies which. However, we probably only ever want to start one
> server, so the<tftp>  tag should work fine.

Yes, what I meant is that in general the TFTP server started by libvirt 
will run on the address provided by /network/ip at address.  So libvirt can 
only start one TFTP server even though in the future it might support 
multiple DHCP ranges.

In this case, some ranges may not support BOOTP and some may, and they 
can give different boot files, but all must share a single 
dnsmasq-provided TFTP server (using a server attribute would be fine; 
but that TFTP server will not be started by libvirt).

This can be seen from the fact that BOOTP is nothing more than a few 
options within a DHCP packet (i.e. <dhcp><bootp/></dhcp>), but TFTP 
binds on a completely different port and could be a separate process 
(hence <tftp> is a sibling of <dhcp>).  dnsmasq is special.

>> , it is not
>> possible to specify different roots for different dhcp ranges.  I think
>> the schema should be
>>
>>       <ip address="192.168.122.1" netmask="255.255.255.0">
>>         <tftp root="/srv/tftp">
>>         <dhcp>
>>           <range start="192.168.122.2" end="192.168.122.254" />
>>           <bootp file="pxeboot.img"/>
>>         </dhcp>
>>       </ip>
>
> If you want it to be specific to the range, shouldn't it be within the<range>
> tag? Currently the code will only parse one<dhcp>  tag.

No, I want it to be specific to the _network_, since it will bind to 
/network/ip at address.

> One thing that I've tried to keep in mind is that the tftp service may be
> provided by a separate machine in the network, so we may need some way in the
> future to represent that - maybe no<tftp>  tag

That's already implemented by my patch, and can be used with an external 
TFTP server, for example started via (x)inetd.

> and use server="w.x.y.z" in
> the bootp tag. Also, would be cool to have separate files for different hosts,
> but that may be thinking too far ahead at this stage :)

Yes.  That's something you'd get for free if libvirt supported multiple 
DHCP ranges.

Paolo




More information about the libvir-list mailing list