Home | History | Annotate | Download | only in ManagedNetwork
      1 /*++
      2 
      3 Copyright (c) 2005 - 2006, Intel Corporation. All rights reserved.<BR>
      4 This program and the accompanying materials
      5 are licensed and made available under the terms and conditions of the BSD License
      6 which accompanies this distribution.  The full text of the license may be found at
      7 http://opensource.org/licenses/bsd-license.php
      8 
      9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     11 
     12 Module Name:
     13 
     14   ManagedNetwork.h
     15 
     16 Abstract:
     17 
     18   UEFI Managed Network protocol definition.
     19 
     20 --*/
     21 
     22 #ifndef _MANAGED_NETWORK_H_
     23 #define _MANAGED_NETWORK_H_
     24 
     25 #include EFI_PROTOCOL_DEFINITION (SimpleNetwork)
     26 #include EFI_PROTOCOL_DEFINITION (ServiceBinding)
     27 
     28 #define EFI_MANAGED_NETWORK_SERVICE_BINDING_PROTOCOL_GUID \
     29   { 0xf36ff770, 0xa7e1, 0x42cf, {0x9e, 0xd2, 0x56, 0xf0, 0xf2, 0x71, 0xf4, 0x4c} }
     30 
     31 #define EFI_MANAGED_NETWORK_PROTOCOL_GUID \
     32   { 0x7ab33a91, 0xace5, 0x4326, {0xb5, 0x72, 0xe7, 0xee, 0x33, 0xd3, 0x9f, 0x16} }
     33 
     34 EFI_FORWARD_DECLARATION (EFI_MANAGED_NETWORK_PROTOCOL);
     35 
     36 typedef struct {
     37   UINT32     ReceivedQueueTimeoutValue;
     38   UINT32     TransmitQueueTimeoutValue;
     39   UINT16     ProtocolTypeFilter;
     40   BOOLEAN    EnableUnicastReceive;
     41   BOOLEAN    EnableMulticastReceive;
     42   BOOLEAN    EnableBroadcastReceive;
     43   BOOLEAN    EnablePromiscuousReceive;
     44   BOOLEAN    FlushQueuesOnReset;
     45   BOOLEAN    EnableReceiveTimestamps;
     46   BOOLEAN    DisableBackgroundPolling;
     47 } EFI_MANAGED_NETWORK_CONFIG_DATA;
     48 
     49 typedef struct {
     50   EFI_TIME      Timestamp;
     51   EFI_EVENT     RecycleEvent;
     52   UINT32        PacketLength;
     53   UINT32        HeaderLength;
     54   UINT32        AddressLength;
     55   UINT32        DataLength;
     56   BOOLEAN       BroadcastFlag;
     57   BOOLEAN       MulticastFlag;
     58   BOOLEAN       PromiscuousFlag;
     59   UINT16        ProtocolType;
     60   VOID          *DestinationAddress;
     61   VOID          *SourceAddress;
     62   VOID          *MediaHeader;
     63   VOID          *PacketData;
     64 } EFI_MANAGED_NETWORK_RECEIVE_DATA;
     65 
     66 typedef struct {
     67   UINT32        FragmentLength;
     68   VOID          *FragmentBuffer;
     69 } EFI_MANAGED_NETWORK_FRAGMENT_DATA;
     70 
     71 typedef struct {
     72   EFI_MAC_ADDRESS                   *DestinationAddress;
     73   EFI_MAC_ADDRESS                   *SourceAddress;
     74   UINT16                            ProtocolType;
     75   UINT32                            DataLength;
     76   UINT16                            HeaderLength;
     77   UINT16                            FragmentCount;
     78   EFI_MANAGED_NETWORK_FRAGMENT_DATA FragmentTable[1];
     79 } EFI_MANAGED_NETWORK_TRANSMIT_DATA;
     80 
     81 
     82 typedef struct {
     83   EFI_EVENT                             Event;
     84   EFI_STATUS                            Status;
     85   union {
     86     EFI_MANAGED_NETWORK_RECEIVE_DATA    *RxData;
     87     EFI_MANAGED_NETWORK_TRANSMIT_DATA   *TxData;
     88   } Packet;
     89 } EFI_MANAGED_NETWORK_COMPLETION_TOKEN;
     90 
     91 typedef
     92 EFI_STATUS
     93 (EFIAPI *EFI_MANAGED_NETWORK_GET_MODE_DATA) (
     94   IN  EFI_MANAGED_NETWORK_PROTOCOL     *This,
     95   OUT EFI_MANAGED_NETWORK_CONFIG_DATA  *MnpConfigData  OPTIONAL,
     96   OUT EFI_SIMPLE_NETWORK_MODE          *SnpModeData  OPTIONAL
     97   );
     98 
     99 typedef
    100 EFI_STATUS
    101 (EFIAPI *EFI_MANAGED_NETWORK_CONFIGURE) (
    102   IN EFI_MANAGED_NETWORK_PROTOCOL     *This,
    103   IN EFI_MANAGED_NETWORK_CONFIG_DATA  *MnpConfigData  OPTIONAL
    104   );
    105 
    106 typedef
    107 EFI_STATUS
    108 (EFIAPI *EFI_MANAGED_NETWORK_MCAST_IP_TO_MAC) (
    109   IN  EFI_MANAGED_NETWORK_PROTOCOL  *This,
    110   IN  BOOLEAN                       Ipv6Flag,
    111   IN  EFI_IP_ADDRESS                *IpAddress,
    112   OUT EFI_MAC_ADDRESS               *MacAddress
    113   );
    114 
    115 typedef
    116 EFI_STATUS
    117 (EFIAPI *EFI_MANAGED_NETWORK_GROUPS) (
    118   IN EFI_MANAGED_NETWORK_PROTOCOL  *This,
    119   IN BOOLEAN                       JoinFlag,
    120   IN EFI_MAC_ADDRESS               *MacAddress  OPTIONAL
    121   );
    122 
    123 typedef
    124 EFI_STATUS
    125 (EFIAPI *EFI_MANAGED_NETWORK_TRANSMIT) (
    126   IN EFI_MANAGED_NETWORK_PROTOCOL          *This,
    127   IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN  *Token
    128   );
    129 
    130 typedef
    131 EFI_STATUS
    132 (EFIAPI *EFI_MANAGED_NETWORK_RECEIVE) (
    133   IN EFI_MANAGED_NETWORK_PROTOCOL          *This,
    134   IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN  *Token
    135   );
    136 
    137 typedef
    138 EFI_STATUS
    139 (EFIAPI *EFI_MANAGED_NETWORK_CANCEL) (
    140   IN EFI_MANAGED_NETWORK_PROTOCOL          *This,
    141   IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN  *Token  OPTIONAL
    142   );
    143 
    144 typedef
    145 EFI_STATUS
    146 (EFIAPI *EFI_MANAGED_NETWORK_POLL) (
    147   IN EFI_MANAGED_NETWORK_PROTOCOL    *This
    148   );
    149 
    150 struct _EFI_MANAGED_NETWORK_PROTOCOL {
    151   EFI_MANAGED_NETWORK_GET_MODE_DATA       GetModeData;
    152   EFI_MANAGED_NETWORK_CONFIGURE           Configure;
    153   EFI_MANAGED_NETWORK_MCAST_IP_TO_MAC     McastIpToMac;
    154   EFI_MANAGED_NETWORK_GROUPS              Groups;
    155   EFI_MANAGED_NETWORK_TRANSMIT            Transmit;
    156   EFI_MANAGED_NETWORK_RECEIVE             Receive;
    157   EFI_MANAGED_NETWORK_CANCEL              Cancel;
    158   EFI_MANAGED_NETWORK_POLL                Poll;
    159 };
    160 
    161 extern EFI_GUID gEfiManagedNetworkServiceBindingProtocolGuid;
    162 extern EFI_GUID gEfiManagedNetworkProtocolGuid;
    163 
    164 #endif
    165