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 <[email protected]>
> ---
>  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
> [email protected]
> https://lists.ipxe.org/mailman/listinfo.cgi/ipxe-devel



_______________________________________________
ipxe-devel mailing list
[email protected]
https://lists.ipxe.org/mailman/listinfo.cgi/ipxe-devel

Reply via email to