Respect netmask from bootp/dhcp.

* grub-core/net/bootp.c (parse_dhcp_vendor): Parse mask.
	(grub_net_configure_by_dhcp_ack): Use mask and grub_net_add_ipv4_local.
	* grub-core/net/net.c (grub_net_add_addr): Split creating local route
	into ...
	(grub_net_add_ipv4_local): ... this.
	(grub_cmd_addaddr): Use grub_net_add_ipv4_local.
	* include/grub/net.h (GRUB_NET_BOOTP_NETMASK): New enum value.
	(grub_net_add_ipv4_local): New proto.
This commit is contained in:
Vladimir 'phcoder' Serbinenko 2012-06-20 23:46:50 +02:00
parent 67caf9eb06
commit d6b7c7c986
4 changed files with 76 additions and 32 deletions

View file

@ -409,6 +409,7 @@ struct grub_net_bootp_packet
enum
{
GRUB_NET_BOOTP_PAD = 0x00,
GRUB_NET_BOOTP_NETMASK = 0x01,
GRUB_NET_BOOTP_ROUTER = 0x03,
GRUB_NET_BOOTP_DNS = 0x06,
GRUB_NET_BOOTP_HOSTNAME = 0x0c,
@ -426,6 +427,10 @@ grub_net_configure_by_dhcp_ack (const char *name,
grub_size_t size,
int is_def, char **device, char **path);
grub_err_t
grub_net_add_ipv4_local (struct grub_net_network_level_interface *inf,
int mask);
void
grub_net_process_dhcp (struct grub_net_buff *nb,
struct grub_net_card *card);