[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