New variables 'net_default_*' to determine MAC/IP of default interface.
This commit is contained in:
parent
43fe02cbaf
commit
2aa072d76a
3 changed files with 75 additions and 1 deletions
|
@ -1,3 +1,7 @@
|
||||||
|
2013-05-07 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
New variables 'net_default_*' to determine MAC/IP of default interface.
|
||||||
|
|
||||||
2013-05-07 Vladimir Serbinenko <phcoder@gmail.com>
|
2013-05-07 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
* tests/gettext_strings_test.in: A test to check for strings not
|
* tests/gettext_strings_test.in: A test to check for strings not
|
||||||
|
|
|
@ -211,6 +211,9 @@ grub_net_configure_by_dhcp_ack (const char *name,
|
||||||
grub_print_error ();
|
grub_print_error ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (is_def)
|
||||||
|
grub_env_set ("net_default_interface", name);
|
||||||
|
|
||||||
if (device && !*device && bp->server_ip)
|
if (device && !*device && bp->server_ip)
|
||||||
{
|
{
|
||||||
*device = grub_xasprintf ("tftp,%d.%d.%d.%d",
|
*device = grub_xasprintf ("tftp,%d.%d.%d.%d",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/*
|
/*
|
||||||
* GRUB -- GRand Unified Bootloader
|
* GRUB -- GRand Unified Bootloader
|
||||||
* Copyright (C) 2010,2011 Free Software Foundation, Inc.
|
* Copyright (C) 2010,2011,2012,2013 Free Software Foundation, Inc.
|
||||||
*
|
*
|
||||||
* GRUB is free software: you can redistribute it and/or modify
|
* GRUB is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -813,6 +813,69 @@ defserver_get_env (struct grub_env_var *var __attribute__ ((unused)),
|
||||||
return grub_net_default_server ? : "";
|
return grub_net_default_server ? : "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char *
|
||||||
|
defip_get_env (struct grub_env_var *var __attribute__ ((unused)),
|
||||||
|
const char *val __attribute__ ((unused)))
|
||||||
|
{
|
||||||
|
const char *intf = grub_env_get ("net_default_interface");
|
||||||
|
const char *ret = NULL;
|
||||||
|
if (intf)
|
||||||
|
{
|
||||||
|
char *buf = grub_xasprintf ("net_%s_ip", intf);
|
||||||
|
if (buf)
|
||||||
|
ret = grub_env_get (buf);
|
||||||
|
grub_free (buf);
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static char *
|
||||||
|
defip_set_env (struct grub_env_var *var __attribute__ ((unused)),
|
||||||
|
const char *val)
|
||||||
|
{
|
||||||
|
const char *intf = grub_env_get ("net_default_interface");
|
||||||
|
if (intf)
|
||||||
|
{
|
||||||
|
char *buf = grub_xasprintf ("net_%s_ip", intf);
|
||||||
|
if (buf)
|
||||||
|
grub_env_set (buf, val);
|
||||||
|
grub_free (buf);
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static const char *
|
||||||
|
defmac_get_env (struct grub_env_var *var __attribute__ ((unused)),
|
||||||
|
const char *val __attribute__ ((unused)))
|
||||||
|
{
|
||||||
|
const char *intf = grub_env_get ("net_default_interface");
|
||||||
|
const char *ret = NULL;
|
||||||
|
if (intf)
|
||||||
|
{
|
||||||
|
char *buf = grub_xasprintf ("net_%s_mac", intf);
|
||||||
|
if (buf)
|
||||||
|
ret = grub_env_get (buf);
|
||||||
|
grub_free (buf);
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static char *
|
||||||
|
defmac_set_env (struct grub_env_var *var __attribute__ ((unused)),
|
||||||
|
const char *val)
|
||||||
|
{
|
||||||
|
const char *intf = grub_env_get ("net_default_interface");
|
||||||
|
if (intf)
|
||||||
|
{
|
||||||
|
char *buf = grub_xasprintf ("net_%s_mac", intf);
|
||||||
|
if (buf)
|
||||||
|
grub_env_set (buf, val);
|
||||||
|
grub_free (buf);
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
grub_net_network_level_interface_register (struct grub_net_network_level_interface *inter)
|
grub_net_network_level_interface_register (struct grub_net_network_level_interface *inter)
|
||||||
|
@ -1560,6 +1623,10 @@ GRUB_MOD_INIT(net)
|
||||||
defserver_set_env);
|
defserver_set_env);
|
||||||
grub_register_variable_hook ("pxe_default_server", defserver_get_env,
|
grub_register_variable_hook ("pxe_default_server", defserver_get_env,
|
||||||
defserver_set_env);
|
defserver_set_env);
|
||||||
|
grub_register_variable_hook ("net_default_ip", defip_get_env,
|
||||||
|
defip_set_env);
|
||||||
|
grub_register_variable_hook ("net_default_mac", defmac_get_env,
|
||||||
|
defmac_set_env);
|
||||||
|
|
||||||
cmd_addaddr = grub_register_command ("net_add_addr", grub_cmd_addaddr,
|
cmd_addaddr = grub_register_command ("net_add_addr", grub_cmd_addaddr,
|
||||||
/* TRANSLATORS: HWADDRESS stands for
|
/* TRANSLATORS: HWADDRESS stands for
|
||||||
|
|
Loading…
Reference in a new issue