Allow a platform to specify a DHCP architecture ID, as this is
platform-specific.
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
static void configure_interface_dhcp(struct interface *interface)
{
static void configure_interface_dhcp(struct interface *interface)
{
+ const struct platform *platform;
+ char pidfile[256], id[10];
int rc;
const char *argv[] = {
pb_system_apps.udhcpc,
int rc;
const char *argv[] = {
pb_system_apps.udhcpc,
"-n",
"-O", "pxeconffile",
"-O", "pxepathprefix",
"-n",
"-O", "pxeconffile",
"-O", "pxepathprefix",
"-p", pidfile,
"-i", interface->name,
"-p", pidfile,
"-i", interface->name,
+ "-x", id, /* [11,12] - dhcp client identifier */
snprintf(pidfile, sizeof(pidfile), "%s/udhcpc-%s.pid",
PIDFILE_BASE, interface->name);
snprintf(pidfile, sizeof(pidfile), "%s/udhcpc-%s.pid",
PIDFILE_BASE, interface->name);
+ platform = platform_get();
+ if (platform && platform->dhcp_arch_id != 0xffff)
+ snprintf(id, sizeof(id), "0x5d:%04x", platform->dhcp_arch_id);
+ else
+ argv[11] = NULL;
+
process = process_create(interface);
process->path = pb_system_apps.udhcpc;
process = process_create(interface);
process->path = pb_system_apps.udhcpc;
static struct platform platform_powerpc = {
.name = "powerpc",
static struct platform platform_powerpc = {
.name = "powerpc",
+ .dhcp_arch_id = 0x000e,
.probe = probe,
.load_config = load_config,
.save_config = save_config,
.probe = probe,
.load_config = load_config,
.save_config = save_config,
+const struct platform *platform_get(void)
+{
+ return platform;
+}
+
int config_set(struct config *newconfig)
{
int rc;
int config_set(struct config *newconfig)
{
int rc;
bool (*probe)(struct platform *, void *);
int (*load_config)(struct platform *, struct config *);
int (*save_config)(struct platform *, struct config *);
bool (*probe)(struct platform *, void *);
int (*load_config)(struct platform *, struct config *);
int (*save_config)(struct platform *, struct config *);
void *platform_data;
};
int platform_init(void *ctx);
int platform_fini(void);
void *platform_data;
};
int platform_init(void *ctx);
int platform_fini(void);
+const struct platform *platform_get(void);
/* configuration interface */
const struct config *config_get(void);
/* configuration interface */
const struct config *config_get(void);