Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP1:GA
grub2.1383
grub2-efinet-ipv6-dhcpv6-use-mac-device.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File grub2-efinet-ipv6-dhcpv6-use-mac-device.patch of Package grub2.1383
Index: grub-2.02~beta2/grub-core/net/bootp.c =================================================================== --- grub-2.02~beta2.orig/grub-core/net/bootp.c +++ grub-2.02~beta2/grub-core/net/bootp.c @@ -1228,6 +1228,10 @@ grub_cmd_bootp6 (struct grub_command *cm { if (argc > 0 && grub_strcmp (card->name, args[0]) != 0) continue; +#ifdef GRUB_MACHINE_EFI + else if (!card->is_efi_mac_device (card)) + continue; +#endif ncards++; } @@ -1237,6 +1241,10 @@ grub_cmd_bootp6 (struct grub_command *cm if (argc > 0 && grub_strcmp (card->name, args[0]) != 0) continue; +#ifdef GRUB_MACHINE_EFI + else if (!card->is_efi_mac_device (card)) + continue; +#endif ifaces = grub_net_ipv6_get_link_local (card, &card->default_address); if (!ifaces) Index: grub-2.02~beta2/grub-core/net/drivers/efi/efinet.c =================================================================== --- grub-2.02~beta2.orig/grub-core/net/drivers/efi/efinet.c +++ grub-2.02~beta2/grub-core/net/drivers/efi/efinet.c @@ -145,6 +145,45 @@ grub_efinet_get_device_handle (struct gr return card->efi_handle; } +static int +grub_efinet_is_mac_device (struct grub_net_card *card) +{ + grub_efi_handle_t efi_handle; + grub_efi_device_path_t *dp; + grub_efi_device_path_t *next, *p; + grub_efi_uint8_t type; + grub_efi_uint8_t subtype; + + efi_handle = grub_efinet_get_device_handle (card); + + if (!efi_handle) + return 0; + + dp = grub_efi_get_device_path (efi_handle); + + if (GRUB_EFI_END_ENTIRE_DEVICE_PATH (dp)) + return 0; + + for (p = (grub_efi_device_path_t *) dp, next = GRUB_EFI_NEXT_DEVICE_PATH (p); + ! GRUB_EFI_END_ENTIRE_DEVICE_PATH (next); + p = next, next = GRUB_EFI_NEXT_DEVICE_PATH (next)) + ; + + if (p) + { + type = GRUB_EFI_DEVICE_PATH_TYPE (p); + subtype = GRUB_EFI_DEVICE_PATH_SUBTYPE (p); + + if (type == GRUB_EFI_MESSAGING_DEVICE_PATH_TYPE + && subtype == GRUB_EFI_MAC_ADDRESS_DEVICE_PATH_SUBTYPE) + { + return 1; + } + } + + return 0; +} + static void grub_efinet_findcards (void) { @@ -211,6 +250,7 @@ grub_efinet_findcards (void) sizeof (card->default_address.mac)); card->efi_net = net; card->efi_handle = *handle; + card->is_efi_mac_device = grub_efinet_is_mac_device; grub_net_card_register (card); } Index: grub-2.02~beta2/include/grub/net.h =================================================================== --- grub-2.02~beta2.orig/include/grub/net.h +++ grub-2.02~beta2/include/grub/net.h @@ -140,6 +140,7 @@ struct grub_net_card struct grub_efi_simple_network *efi_net; grub_efi_handle_t efi_handle; grub_size_t last_pkt_size; + int (*is_efi_mac_device) (struct grub_net_card* card); }; #endif void *data;
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor