mirror of
https://review.haiku-os.org/haiku
synced 2025-02-19 12:09:30 +01:00
* Drop gnu-efi Change-Id: Ib601fc8ced49b18281b6b98cf861a5aef1b9c065 Reviewed-on: https://review.haiku-os.org/c/haiku/+/2026 Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com> Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
93 lines
3.1 KiB
C
93 lines
3.1 KiB
C
// Copyright 2016 The Fuchsia Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#pragma once
|
|
|
|
#include <efi/types.h>
|
|
#include <efi/protocol/simple-network.h>
|
|
|
|
#define EFI_MANAGED_NETWORK_PROTOCOL_GUID \
|
|
{0x7ab33a91, 0xace5, 0x4326,{0xb5, 0x72, 0xe7, 0xee, 0x33, 0xd3, 0x9f, 0x16}}
|
|
extern efi_guid ManagedNetworkProtocol;
|
|
|
|
typedef struct {
|
|
efi_time Timestamp;
|
|
efi_event RecycleEvent;
|
|
uint32_t PacketLength;
|
|
uint32_t HeaderLength;
|
|
uint32_t AddressLength;
|
|
uint32_t DataLength;
|
|
bool BroadcastFlag;
|
|
bool MulticastFlag;
|
|
bool PromiscuousFlag;
|
|
uint16_t ProtocolType;
|
|
void* DestinationAddress;
|
|
void* SourceAddress;
|
|
void* MediaHeader;
|
|
void* PacketData;
|
|
} efi_managed_network_receive_data;
|
|
|
|
typedef struct {
|
|
uint32_t FragmentLength;
|
|
void* FragmentBuffer;
|
|
} efi_managed_network_fragment_data;
|
|
|
|
typedef struct {
|
|
efi_mac_addr* DestinationAddress;
|
|
efi_mac_addr* SourceAddress;
|
|
uint16_t ProtocolType;
|
|
uint32_t DataLength;
|
|
uint16_t HeaderLength;
|
|
uint16_t FragmentCount;
|
|
efi_managed_network_fragment_data FragmentTable[1];
|
|
} efi_managed_network_transmit_data;
|
|
|
|
typedef struct {
|
|
uint32_t ReceivedQueueTimeoutValue;
|
|
uint32_t TransmitQueueTimeoutValue;
|
|
uint16_t ProtocolTypeFilter;
|
|
bool EnableUnicastReceive;
|
|
bool EnableMulticastReceive;
|
|
bool EnableBroadcastReceive;
|
|
bool EnablePromiscuousReceive;
|
|
bool FlushQueuesOnReset;
|
|
bool EnableReceiveTimestamps;
|
|
bool DisableBackgroundPolling;
|
|
} efi_managed_network_config_data;
|
|
|
|
typedef struct {
|
|
efi_event Event;
|
|
efi_status Status;
|
|
union {
|
|
efi_managed_network_receive_data* RxData;
|
|
efi_managed_network_transmit_data* TxData;
|
|
} Packet;
|
|
} efi_managed_network_sync_completion_token;
|
|
|
|
typedef struct efi_managed_network_protocol {
|
|
efi_status (*GetModeData) (struct efi_managed_network_protocol* self,
|
|
efi_managed_network_config_data* mnp_config_data,
|
|
efi_simple_network_mode* snp_mode_data) EFIAPI;
|
|
|
|
efi_status (*Configure) (struct efi_managed_network_protocol* self,
|
|
efi_managed_network_config_data* mnp_config_data) EFIAPI;
|
|
|
|
efi_status (*McastIpToMac) (struct efi_managed_network_protocol* self,
|
|
bool ipv6_flag, efi_ip_addr* ip_addr, efi_mac_addr* mac_addr) EFIAPI;
|
|
|
|
efi_status (*Groups) (struct efi_managed_network_protocol* self, bool join_flag,
|
|
efi_mac_addr* mac_addr) EFIAPI;
|
|
|
|
efi_status (*Transmit) (struct efi_managed_network_protocol* self,
|
|
efi_managed_network_sync_completion_token* token) EFIAPI;
|
|
|
|
efi_status (*Receive) (struct efi_managed_network_protocol* self,
|
|
efi_managed_network_sync_completion_token* token) EFIAPI;
|
|
|
|
efi_status (*Cancel) (struct efi_managed_network_protocol* self,
|
|
efi_managed_network_sync_completion_token* token) EFIAPI;
|
|
|
|
efi_status (*Poll) (struct efi_managed_network_protocol* self) EFIAPI;
|
|
} efi_managed_network_protocol;
|