mirror of
https://git.savannah.gnu.org/git/grub.git
synced 2026-10-28 01:59:49 +00:00
net: Remove variables hooks when interface is unregisted
The grub_net_network_level_interface_unregister(), previously implemented in a header, did not remove the variables hooks that were registered in grub_net_network_level_interface_register(). Fix this by implementing the same logic used to register the variables and move the function into the grub-core/net/net.c. Signed-off-by: B Horn <b@horn.uk> Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
1 parent
a1dd8e59da
commit
aa8b4d7fac
2 files changed
+33
-10
No files matched your search
@@ -984,6 +984,38 @@ grub_net_network_level_interface_register (struct grub_net_network_level_interfa
|
|||||||
grub_net_network_level_interfaces = inter;
|
grub_net_network_level_interfaces = inter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
grub_net_network_level_interface_unregister (struct grub_net_network_level_interface *inter)
|
||||||
|
{
|
||||||
|
char *name;
|
||||||
|
|
||||||
|
{
|
||||||
|
char buf[GRUB_NET_MAX_STR_HWADDR_LEN];
|
||||||
|
|
||||||
|
grub_net_hwaddr_to_str (&inter->hwaddress, buf);
|
||||||
|
name = grub_xasprintf ("net_%s_mac", inter->name);
|
||||||
|
if (name != NULL)
|
||||||
|
grub_register_variable_hook (name, NULL, NULL);
|
||||||
|
grub_free (name);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
char buf[GRUB_NET_MAX_STR_ADDR_LEN];
|
||||||
|
|
||||||
|
grub_net_addr_to_str (&inter->address, buf);
|
||||||
|
name = grub_xasprintf ("net_%s_ip", inter->name);
|
||||||
|
if (name != NULL)
|
||||||
|
grub_register_variable_hook (name, NULL, NULL);
|
||||||
|
grub_free (name);
|
||||||
|
}
|
||||||
|
|
||||||
|
inter->card->num_ifaces--;
|
||||||
|
*inter->prev = inter->next;
|
||||||
|
if (inter->next)
|
||||||
|
inter->next->prev = inter->prev;
|
||||||
|
inter->next = 0;
|
||||||
|
inter->prev = 0;
|
||||||
|
}
|
||||||
|
|
||||||
grub_err_t
|
grub_err_t
|
||||||
grub_net_add_ipv4_local (struct grub_net_network_level_interface *inter,
|
grub_net_add_ipv4_local (struct grub_net_network_level_interface *inter,
|
||||||
|
|||||||
+1
-10
@@ -540,16 +540,7 @@ void grub_bootp_fini (void);
|
|||||||
void grub_dns_init (void);
|
void grub_dns_init (void);
|
||||||
void grub_dns_fini (void);
|
void grub_dns_fini (void);
|
||||||
|
|
||||||
static inline void
|
void grub_net_network_level_interface_unregister (struct grub_net_network_level_interface *inter);
|
||||||
grub_net_network_level_interface_unregister (struct grub_net_network_level_interface *inter)
|
|
||||||
{
|
|
||||||
inter->card->num_ifaces--;
|
|
||||||
*inter->prev = inter->next;
|
|
||||||
if (inter->next)
|
|
||||||
inter->next->prev = inter->prev;
|
|
||||||
inter->next = 0;
|
|
||||||
inter->prev = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
grub_net_tcp_retransmit (void);
|
grub_net_tcp_retransmit (void);
|
||||||
|
|||||||
Reference in new issue
Block a user