Skip to content

Commit

Permalink
[autoboot] Allow setting expansions in filename and root-path
Browse files Browse the repository at this point in the history
Allow the DHCP filename and root-path to contain settings expansions,
such as

  http://boot.ipxe.org/demo/boot.php?mac=${mac:hexhyp}

Originally-implemented-by: Jarrod Johnson <jarrod.b.johnson@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
  • Loading branch information
mcb30 committed Jan 28, 2011
1 parent 990cbb8 commit 3ed849b
Showing 1 changed file with 32 additions and 10 deletions.
42 changes: 32 additions & 10 deletions src/usr/autoboot.c
Expand Up @@ -230,7 +230,9 @@ static void close_all_netdevs ( void ) {
*/
struct uri * fetch_next_server_and_filename ( struct settings *settings ) {
struct in_addr next_server;
char filename[256];
char buf[256];
char *filename;
struct uri *uri;

/* Fetch next-server setting */
fetch_ipv4_setting ( settings, &next_server_setting, &next_server );
Expand All @@ -239,11 +241,20 @@ struct uri * fetch_next_server_and_filename ( struct settings *settings ) {

/* Fetch filename setting */
fetch_string_setting ( settings, &filename_setting,
filename, sizeof ( filename ) );
if ( filename[0] )
printf ( "Filename: %s\n", filename );
buf, sizeof ( buf ) );
if ( buf[0] )
printf ( "Filename: %s\n", buf );

/* Expand filename setting */
filename = expand_settings ( buf );
if ( ! filename )
return NULL;

return parse_next_server_and_filename ( next_server, filename );
/* Parse next server and filename */
uri = parse_next_server_and_filename ( next_server, filename );

free ( filename );
return uri;
}

/**
Expand All @@ -253,15 +264,26 @@ struct uri * fetch_next_server_and_filename ( struct settings *settings ) {
* @ret uri URI, or NULL on failure
*/
static struct uri * fetch_root_path ( struct settings *settings ) {
char root_path[256];
char buf[256];
char *root_path;
struct uri *uri;

/* Fetch root-path setting */
fetch_string_setting ( settings, &root_path_setting,
root_path, sizeof ( root_path ) );
if ( root_path[0] )
printf ( "Root path: %s\n", root_path );
buf, sizeof ( buf ) );
if ( buf[0] )
printf ( "Root path: %s\n", buf );

/* Expand filename setting */
root_path = expand_settings ( buf );
if ( ! root_path )
return NULL;

return parse_uri ( root_path );
/* Parse root path */
uri = parse_uri ( root_path );

free ( root_path );
return uri;
}

/**
Expand Down

0 comments on commit 3ed849b

Please sign in to comment.