Re: [PATCH v2 03/15] efi_loader: device_path: add definition of DEVICE_PATH_SUB_TYPE_MSG_IPV4

Ilias Apalodimas
2024-11-10T09:02:15Z

Hi Adriano

On Fri, 8 Nov 2024 at 15:39, Adriano Cordova <adrianox@gmail.com> wrote:
>
> Add definition for DEVICE_PATH_SUB_TYPE_MSG_IPV4 device path
> subtype.
>
> Signed-off-by: Adriano Cordova <adrianox@gmail.com>
> ---
> include/efi_api.h | 17 +++++++++++++++++
> 1 file changed, 17 insertions(+)
>
> diff --git a/include/efi_api.h b/include/efi_api.h
> index f07d074f93..c76519a20a 100644
> --- a/include/efi_api.h
> +++ b/include/efi_api.h
> @@ -616,6 +616,7 @@ struct efi_device_path_acpi_path {
> # define DEVICE_PATH_SUB_TYPE_MSG_SCSI 0x02
> # define DEVICE_PATH_SUB_TYPE_MSG_USB 0x05
> # define DEVICE_PATH_SUB_TYPE_MSG_MAC_ADDR 0x0b
> +# define DEVICE_PATH_SUB_TYPE_MSG_IPV4 0x0c
> # define DEVICE_PATH_SUB_TYPE_MSG_UART 0x0e
> # define DEVICE_PATH_SUB_TYPE_MSG_USB_CLASS 0x0f
> # define DEVICE_PATH_SUB_TYPE_MSG_USB_WWI 0x10
> @@ -691,6 +692,22 @@ struct efi_device_path_uri {
> u8 uri[];
> } __packed;
>
> +struct efi_ipv4_address {
> + u8 ip_addr[4];
> +} __attribute__((aligned(4)));

Is the alignment required by the spec?

> +
> +struct efi_device_path_ipv4 {
> + struct efi_device_path dp;
> + struct efi_ipv4_address local_ip_address;
> + struct efi_ipv4_address remote_ip_address;

These are aligned members in a packed struct which might cause
alignment warnings.
Commit 7dfab398558 explains why.

> + u16 local_port;
> + u16 remote_port;
> + u16 protocol;
> + u8 static_ip_address;
> + struct efi_ipv4_address gateway_ip_address;
> + struct efi_ipv4_address subnet_mask;
> +} __packed;
> +
> #define DEVICE_PATH_TYPE_MEDIA_DEVICE 0x04
> # define DEVICE_PATH_SUB_TYPE_HARD_DRIVE_PATH 0x01
> # define DEVICE_PATH_SUB_TYPE_CDROM_PATH 0x02
> --
> 2.43.0
>

Thanks
/Ilias