issue separate DNS queries for ipv4 and ipv6
Adding multiple questions on a single DNS query is not supportted by most DNS servers. This patch issues two separate DNS queries sequentially for ipv4 and then for ipv6. Fixes: https://savannah.gnu.org/bugs/?39710 * grub-core/net/bootp.c (parse_dhcp_vendor): Add DNS option. * grub-core/net/dns.c (grub_dns_qtype_id): New enum. * (grub_net_dns_lookup): Now using separated dns packages. * (grub_cmd_nslookup): Add error condition. * (grub_cmd_list_dns): Print DNS option. * (grub_cmd_add_dns): Add four parameters: --only-ipv4, * --only-ipv6, --prefer-ipv4, and --prefer-ipv6. * include/grub/net.h (grub_dns_option_t): New enum. * (grub_net_network_level_address): option added. Also-by: Paulo Flabiano Smorigo <pfsmorigo@br.ibm.com> Signed-off-by: Paulo Flabiano Smorigo <pfsmorigo@br.ibm.com>
This commit is contained in:
parent
339eacce1b
commit
9e236169e9
4 changed files with 125 additions and 39 deletions
|
@ -156,6 +156,14 @@ typedef enum grub_network_level_protocol_id
|
|||
GRUB_NET_NETWORK_LEVEL_PROTOCOL_IPV6
|
||||
} grub_network_level_protocol_id_t;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
DNS_OPTION_IPV4,
|
||||
DNS_OPTION_IPV6,
|
||||
DNS_OPTION_PREFER_IPV4,
|
||||
DNS_OPTION_PREFER_IPV6
|
||||
} grub_dns_option_t;
|
||||
|
||||
typedef struct grub_net_network_level_address
|
||||
{
|
||||
grub_network_level_protocol_id_t type;
|
||||
|
@ -164,6 +172,7 @@ typedef struct grub_net_network_level_address
|
|||
grub_uint32_t ipv4;
|
||||
grub_uint64_t ipv6[2];
|
||||
};
|
||||
grub_dns_option_t option;
|
||||
} grub_net_network_level_address_t;
|
||||
|
||||
typedef struct grub_net_network_level_netaddress
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue