[ipxe-devel] [PATCH] [autoboot] Use next-server from filename settings block
Alex Williamson
alex.williamson at redhat.com
Fri Jun 21 21:15:03 UTC 2013
Ping. Comments? Thanks,
Alex
On Fri, 2013-06-07 at 09:38 -0600, Alex Williamson wrote:
> In cases where we have both a DHCP and ProxyDHCP response we retrieve
> the next-server and filename independently. This means they can
> actually come from different settings blocks. For instance, net0.dhcp
> is currently ordered before proxydhcp, so we can take the filename
> from proxydhcp and next-server from net0.dhcp. It's sensible that
> filename+next-server should be treated as a pair and retrieved from
> the same settings block. Re-order fetch_next_server_and_filename to
> get filename first, find the origin settings block, and get
> next_server from the same.
>
> Signed-off-by: Alex Williamson <alex.williamson at redhat.com>
> ---
> src/usr/autoboot.c | 16 +++++++++++-----
> 1 file changed, 11 insertions(+), 5 deletions(-)
>
> diff --git a/src/usr/autoboot.c b/src/usr/autoboot.c
> index b2d288e..6a1a70c 100644
> --- a/src/usr/autoboot.c
> +++ b/src/usr/autoboot.c
> @@ -252,15 +252,11 @@ static void close_all_netdevs ( void ) {
> */
> struct uri * fetch_next_server_and_filename ( struct settings *settings ) {
> struct in_addr next_server;
> + struct settings *filename_settings;
> char buf[256];
> char *filename;
> struct uri *uri;
>
> - /* Fetch next-server setting */
> - fetch_ipv4_setting ( settings, &next_server_setting, &next_server );
> - if ( next_server.s_addr )
> - printf ( "Next server: %s\n", inet_ntoa ( next_server ) );
> -
> /* Fetch filename setting */
> fetch_string_setting ( settings, &filename_setting,
> buf, sizeof ( buf ) );
> @@ -272,6 +268,16 @@ struct uri * fetch_next_server_and_filename ( struct settings *settings ) {
> if ( ! filename )
> return NULL;
>
> + /* Get settings block for filename; use next-server from same */
> + filename_settings = fetch_setting_origin ( settings,
> + &filename_setting );
> +
> + /* Fetch next-server setting */
> + fetch_ipv4_setting ( filename_settings,
> + &next_server_setting, &next_server );
> + if ( next_server.s_addr )
> + printf ( "Next server: %s\n", inet_ntoa ( next_server ) );
> +
> /* Parse next server and filename */
> uri = parse_next_server_and_filename ( next_server, filename );
>
>
> _______________________________________________
> ipxe-devel mailing list
> ipxe-devel at lists.ipxe.org
> https://lists.ipxe.org/mailman/listinfo.cgi/ipxe-devel
More information about the ipxe-devel
mailing list