* [PATCH v2 0/2] Automatically configure VLAN from PXE on UEFI @ 2022-03-21 22:07 Chad Kimes 2022-03-21 22:07 ` [PATCH v2 1/2] Print VLAN info in EFI device path Chad Kimes 2022-03-21 22:07 ` [PATCH v2 2/2] Configure VLAN from UEFI device used for PXE Chad Kimes 0 siblings, 2 replies; 4+ messages in thread From: Chad Kimes @ 2022-03-21 22:07 UTC (permalink / raw) To: grub-devel; +Cc: Chad Kimes This patch series introduces automatic configuration of 802.1Q VLAN identifiers if the interface used for PXE booting on UEFI hardware was configured with a VLAN. The first patch adds the necessary types for parsing VLAN info from UEFI device paths, and uses that to produce a Vlan(x) device in the grub_efi_print_device_path output. The second patch handles automatic configuration of VLAN when booting from PXE on UEFI hardware. This patch depends on types introduced in the first patch. Chad Kimes (2): Print VLAN info in EFI device path Configure VLAN from UEFI device used for PXE grub-core/kern/efi/efi.c | 7 ++++++ grub-core/net/drivers/efi/efinet.c | 38 ++++++++++++++++++++++++++---- include/grub/efi/api.h | 9 +++++++ 3 files changed, 49 insertions(+), 5 deletions(-) -- 2.25.1 ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v2 1/2] Print VLAN info in EFI device path 2022-03-21 22:07 [PATCH v2 0/2] Automatically configure VLAN from PXE on UEFI Chad Kimes @ 2022-03-21 22:07 ` Chad Kimes 2022-03-21 22:07 ` [PATCH v2 2/2] Configure VLAN from UEFI device used for PXE Chad Kimes 1 sibling, 0 replies; 4+ messages in thread From: Chad Kimes @ 2022-03-21 22:07 UTC (permalink / raw) To: grub-devel; +Cc: Chad Kimes Signed-off-by: Chad Kimes <chkimes@github.com> --- grub-core/kern/efi/efi.c | 7 +++++++ include/grub/efi/api.h | 9 +++++++++ 2 files changed, 16 insertions(+) diff --git a/grub-core/kern/efi/efi.c b/grub-core/kern/efi/efi.c index 18858c327..d60a0b3e6 100644 --- a/grub-core/kern/efi/efi.c +++ b/grub-core/kern/efi/efi.c @@ -832,6 +832,13 @@ grub_efi_print_device_path (grub_efi_device_path_t *dp) sata->lun); } break; + case GRUB_EFI_VLAN_DEVICE_PATH_SUBTYPE: + { + grub_efi_vlan_device_path_t *vlan; + vlan = (grub_efi_vlan_device_path_t *) dp; + grub_printf ("/Vlan(%u)", vlan->vlan_id); + } + break; case GRUB_EFI_VENDOR_MESSAGING_DEVICE_PATH_SUBTYPE: dump_vendor_path ("Messaging", diff --git a/include/grub/efi/api.h b/include/grub/efi/api.h index 6c8d06e15..b8ec19aab 100644 --- a/include/grub/efi/api.h +++ b/include/grub/efi/api.h @@ -903,6 +903,15 @@ struct grub_efi_sata_device_path } GRUB_PACKED; typedef struct grub_efi_sata_device_path grub_efi_sata_device_path_t; +#define GRUB_EFI_VLAN_DEVICE_PATH_SUBTYPE 20 + +struct grub_efi_vlan_device_path +{ + grub_efi_device_path_t header; + grub_efi_uint16_t vlan_id; +} GRUB_PACKED; +typedef struct grub_efi_vlan_device_path grub_efi_vlan_device_path_t; + #define GRUB_EFI_VENDOR_MESSAGING_DEVICE_PATH_SUBTYPE 10 /* Media Device Path. */ -- 2.25.1 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH v2 2/2] Configure VLAN from UEFI device used for PXE 2022-03-21 22:07 [PATCH v2 0/2] Automatically configure VLAN from PXE on UEFI Chad Kimes 2022-03-21 22:07 ` [PATCH v2 1/2] Print VLAN info in EFI device path Chad Kimes @ 2022-03-21 22:07 ` Chad Kimes 2022-04-14 16:04 ` Daniel Kiper 1 sibling, 1 reply; 4+ messages in thread From: Chad Kimes @ 2022-03-21 22:07 UTC (permalink / raw) To: grub-devel; +Cc: Chad Kimes Signed-off-by: Chad Kimes <chkimes@github.com> --- grub-core/net/drivers/efi/efinet.c | 38 ++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/grub-core/net/drivers/efi/efinet.c b/grub-core/net/drivers/efi/efinet.c index 381c138db..107e1f09e 100644 --- a/grub-core/net/drivers/efi/efinet.c +++ b/grub-core/net/drivers/efi/efinet.c @@ -339,6 +339,10 @@ grub_efi_net_config_real (grub_efi_handle_t hnd, char **device, { struct grub_net_card *card; grub_efi_device_path_t *dp; + struct grub_net_network_level_interface *inter; + grub_efi_device_path_t *vlan_dp; + grub_efi_uint16_t vlan_dp_len; + grub_efi_vlan_device_path_t *vlan; dp = grub_efi_get_device_path (hnd); if (! dp) @@ -387,11 +391,35 @@ grub_efi_net_config_real (grub_efi_handle_t hnd, char **device, if (! pxe) continue; pxe_mode = pxe->mode; - grub_net_configure_by_dhcp_ack (card->name, card, 0, - (struct grub_net_bootp_packet *) - &pxe_mode->dhcp_ack, - sizeof (pxe_mode->dhcp_ack), - 1, device, path); + + inter = grub_net_configure_by_dhcp_ack (card->name, card, 0, + (struct grub_net_bootp_packet *) + &pxe_mode->dhcp_ack, + sizeof (pxe_mode->dhcp_ack), + 1, device, path); + + if (inter) + { + /* + * search the device path for any VLAN subtype and use it + * to configure the interface + */ + vlan_dp = dp; + + while (!GRUB_EFI_END_ENTIRE_DEVICE_PATH (vlan_dp)) + { + if (GRUB_EFI_DEVICE_PATH_TYPE (vlan_dp) == GRUB_EFI_MESSAGING_DEVICE_PATH_TYPE + && GRUB_EFI_DEVICE_PATH_SUBTYPE (vlan_dp) == GRUB_EFI_VLAN_DEVICE_PATH_SUBTYPE) + { + vlan = (grub_efi_vlan_device_path_t *) vlan_dp; + inter->vlantag = vlan->vlan_id; + break; + } + + vlan_dp_len = GRUB_EFI_DEVICE_PATH_LENGTH (vlan_dp); + vlan_dp = (grub_efi_device_path_t *) ((char *) vlan_dp + vlan_dp_len); + } + } return; } } -- 2.25.1 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v2 2/2] Configure VLAN from UEFI device used for PXE 2022-03-21 22:07 ` [PATCH v2 2/2] Configure VLAN from UEFI device used for PXE Chad Kimes @ 2022-04-14 16:04 ` Daniel Kiper 0 siblings, 0 replies; 4+ messages in thread From: Daniel Kiper @ 2022-04-14 16:04 UTC (permalink / raw) To: Chad Kimes; +Cc: grub-devel On Mon, Mar 21, 2022 at 06:07:32PM -0400, Chad Kimes via Grub-devel wrote: I would prefer if you copy some text from the cover letter here. > Signed-off-by: Chad Kimes <chkimes@github.com> > --- > grub-core/net/drivers/efi/efinet.c | 38 ++++++++++++++++++++++++++---- > 1 file changed, 33 insertions(+), 5 deletions(-) > > diff --git a/grub-core/net/drivers/efi/efinet.c b/grub-core/net/drivers/efi/efinet.c > index 381c138db..107e1f09e 100644 > --- a/grub-core/net/drivers/efi/efinet.c > +++ b/grub-core/net/drivers/efi/efinet.c > @@ -339,6 +339,10 @@ grub_efi_net_config_real (grub_efi_handle_t hnd, char **device, > { > struct grub_net_card *card; > grub_efi_device_path_t *dp; > + struct grub_net_network_level_interface *inter; > + grub_efi_device_path_t *vlan_dp; > + grub_efi_uint16_t vlan_dp_len; > + grub_efi_vlan_device_path_t *vlan; > > dp = grub_efi_get_device_path (hnd); > if (! dp) > @@ -387,11 +391,35 @@ grub_efi_net_config_real (grub_efi_handle_t hnd, char **device, > if (! pxe) > continue; > pxe_mode = pxe->mode; > - grub_net_configure_by_dhcp_ack (card->name, card, 0, > - (struct grub_net_bootp_packet *) > - &pxe_mode->dhcp_ack, > - sizeof (pxe_mode->dhcp_ack), > - 1, device, path); > + > + inter = grub_net_configure_by_dhcp_ack (card->name, card, 0, > + (struct grub_net_bootp_packet *) > + &pxe_mode->dhcp_ack, > + sizeof (pxe_mode->dhcp_ack), > + 1, device, path); > + > + if (inter) I prefer "if (inter != NULL)". > + { > + /* > + * search the device path for any VLAN subtype and use it > + * to configure the interface > + */ > + vlan_dp = dp; > + > + while (!GRUB_EFI_END_ENTIRE_DEVICE_PATH (vlan_dp)) > + { > + if (GRUB_EFI_DEVICE_PATH_TYPE (vlan_dp) == GRUB_EFI_MESSAGING_DEVICE_PATH_TYPE > + && GRUB_EFI_DEVICE_PATH_SUBTYPE (vlan_dp) == GRUB_EFI_VLAN_DEVICE_PATH_SUBTYPE) > + { > + vlan = (grub_efi_vlan_device_path_t *) vlan_dp; > + inter->vlantag = vlan->vlan_id; > + break; > + } > + > + vlan_dp_len = GRUB_EFI_DEVICE_PATH_LENGTH (vlan_dp); > + vlan_dp = (grub_efi_device_path_t *) ((char *) vlan_dp + vlan_dp_len); s/char */grub_uint8_t */ even if that translates to almost the same type. Simply I think grub_uint8_t is more natural here. Anyway, I will fix all these minor issues this time for you. So, Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com> Thank you for adding this feature! Daniel ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2022-04-14 16:04 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-03-21 22:07 [PATCH v2 0/2] Automatically configure VLAN from PXE on UEFI Chad Kimes 2022-03-21 22:07 ` [PATCH v2 1/2] Print VLAN info in EFI device path Chad Kimes 2022-03-21 22:07 ` [PATCH v2 2/2] Configure VLAN from UEFI device used for PXE Chad Kimes 2022-04-14 16:04 ` Daniel Kiper
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.