/*
* Copyright (C) 2001-2003 Hewlett-Packard Co.
* Contributed by Stephane Eranian <eranian@hpl.hp.com>
+ * Copyright (C) 2006-2009 Intel Corporation
+ * Contributed by Fenghua Yu <fenghua.yu@intel.com>
+ * Contributed by Bibo Mao <bibo.mao@intel.com>
+ * Contributed by Chandramouli Narayanan <mouli@linux.intel.com>
*
* This file is part of the ELILO, the EFI Linux boot loader.
*
}
static EFI_STATUS
-netfs_setdefaults(VOID *intf, CHAR16 *config, CHAR16 *kname, UINTN maxlen, CHAR16 *devpath)
+netfs_setdefaults(VOID *intf, config_file_t *config, CHAR16 *kname, UINTN maxlen, CHAR16 *devpath)
{
netfs_interface_t *netfs = (netfs_interface_t *)intf;
netfs_info_t info;
set_var(VAR_NETFS_DOMAINAME, info.domainame);
if (info.using_pxe) {
- status = netfs->netfs_query_layer(netfs, 0, NETFS_CONFIG_LAYER, maxlen, config);
+ status = netfs->netfs_query_layer(netfs, 0, NETFS_CONFIG_LAYER, maxlen, config[0].fname);
if (EFI_ERROR(status)) {
- StrnCpy(config, NETFS_DEFAULT_CONFIG, maxlen-1);
- config[maxlen-1] = CHAR_NULL;
+ StrnCpy(config[0].fname, NETFS_DEFAULT_CONFIG, maxlen-1);
+ config[0].fname[maxlen-1] = CHAR_NULL;
}
status = netfs->netfs_query_layer(netfs, 0, NETFS_KERNEL_LAYER, maxlen, kname);
}
} else {
#ifdef ENABLE_MACHINE_SPECIFIC_NETCONFIG
+
+# if defined(CONFIG_ia64)
+# define CONFIG_ARCH_EXTENSION L"-ia64.conf\0"
+# define EXTENSION_LENGTH 11
+# elif defined (CONFIG_ia32)
+# define CONFIG_ARCH_EXTENSION L"-ia32.conf\0"
+# define EXTENSION_LENGTH 11
+# elif defined (CONFIG_x86_64)
+# define CONFIG_ARCH_EXTENSION L"-x86_64.conf\0"
+# define EXTENSION_LENGTH 13
+# else
+# error "You need to specfy your default arch config file"
+# endif
+
+# define CONFIG_EXTENSION L".conf\0"
/*
- * will try a machine specific file first.
- * the file is constructed based on the IP(v4) address
+ * will try machine/subnet specific files first.
+ * the filenames are constructed based on the IP(v4) address
*/
- convert_ip2hex(ipaddr, m, config);
-
- config[8] = L'.';
- config[9] = L'c';
- config[10] = L'o';
- config[11] = L'n';
- config[12] = L'f';
- config[13] = CHAR_NULL;
+ convert_ip2hex(ipaddr, m, str);
+ StrnCpy(config[0].fname, str, maxlen-1);
+ StrnCpy(config[0].fname+8, CONFIG_EXTENSION, 6);
+
+ StrnCpy(config[1].fname, str, maxlen-1);
+ StrnCpy(config[1].fname+6, CONFIG_ARCH_EXTENSION, EXTENSION_LENGTH);
+
+ StrnCpy(config[2].fname, str, maxlen-1);
+ StrnCpy(config[2].fname+6, CONFIG_EXTENSION, 6);
+
+ StrnCpy(config[3].fname, str, maxlen-1);
+ StrnCpy(config[3].fname+4, CONFIG_ARCH_EXTENSION, EXTENSION_LENGTH);
+
+ StrnCpy(config[4].fname, str, maxlen-1);
+ StrnCpy(config[4].fname+4, CONFIG_EXTENSION, 6);
+
+ StrnCpy(config[5].fname, str, maxlen-1);
+ StrnCpy(config[5].fname+2, CONFIG_ARCH_EXTENSION, EXTENSION_LENGTH);
+
+ StrnCpy(config[6].fname, str, maxlen-1);
+ StrnCpy(config[6].fname+2, CONFIG_EXTENSION, 6);
#else
- StrnCpy(config, NETFS_DEFAULT_CONFIG, maxlen-1);
- config[maxlen-1] = CHAR_NULL;
+ StrnCpy(config[0].fname, NETFS_DEFAULT_CONFIG, maxlen-1);
+ config[0].fname[maxlen-1] = CHAR_NULL;
#endif
StrnCpy(kname, NETFS_DEFAULT_KERNEL, maxlen-1);
kname[maxlen-1] = CHAR_NULL;