Home | History | Annotate | Line # | Download | only in inc
      1  1.1  jakllsch /*	$NetBSD: efiudp.h,v 1.1.1.1 2014/04/01 16:16:07 jakllsch Exp $	*/
      2  1.1  jakllsch 
      3  1.1  jakllsch #ifndef _EFI_UDP_H
      4  1.1  jakllsch #define _EFI_UDP_H
      5  1.1  jakllsch 
      6  1.1  jakllsch 
      7  1.1  jakllsch /*++
      8  1.1  jakllsch Copyright (c) 2013  Intel Corporation
      9  1.1  jakllsch 
     10  1.1  jakllsch --*/
     11  1.1  jakllsch 
     12  1.1  jakllsch #define EFI_UDP4_SERVICE_BINDING_PROTOCOL \
     13  1.1  jakllsch     { 0x83f01464, 0x99bd, 0x45e5, {0xb3, 0x83, 0xaf, 0x63, 0x05, 0xd8, 0xe9, 0xe6} }
     14  1.1  jakllsch 
     15  1.1  jakllsch #define EFI_UDP4_PROTOCOL \
     16  1.1  jakllsch     { 0x3ad9df29, 0x4501, 0x478d, {0xb1, 0xf8, 0x7f, 0x7f, 0xe7, 0x0e, 0x50, 0xf3} }
     17  1.1  jakllsch 
     18  1.1  jakllsch #define EFI_UDP6_SERVICE_BINDING_PROTOCOL \
     19  1.1  jakllsch     { 0x66ed4721, 0x3c98, 0x4d3e, {0x81, 0xe3, 0xd0, 0x3d, 0xd3, 0x9a, 0x72, 0x54} }
     20  1.1  jakllsch 
     21  1.1  jakllsch #define EFI_UDP6_PROTOCOL \
     22  1.1  jakllsch     { 0x4f948815, 0xb4b9, 0x43cb, {0x8a, 0x33, 0x90, 0xe0, 0x60, 0xb3,0x49, 0x55} }
     23  1.1  jakllsch 
     24  1.1  jakllsch INTERFACE_DECL(_EFI_UDP4);
     25  1.1  jakllsch INTERFACE_DECL(_EFI_UDP6);
     26  1.1  jakllsch 
     27  1.1  jakllsch typedef struct {
     28  1.1  jakllsch     BOOLEAN          AcceptBroadcast;
     29  1.1  jakllsch     BOOLEAN          AcceptPromiscuous;
     30  1.1  jakllsch     BOOLEAN          AcceptAnyPort;
     31  1.1  jakllsch     BOOLEAN          AllowDuplicatePort;
     32  1.1  jakllsch     UINT8            TypeOfService;
     33  1.1  jakllsch     UINT8            TimeToLive;
     34  1.1  jakllsch     BOOLEAN          DoNotFragment;
     35  1.1  jakllsch     UINT32           ReceiveTimeout;
     36  1.1  jakllsch     UINT32           TransmitTimeout;
     37  1.1  jakllsch     BOOLEAN          UseDefaultAddress;
     38  1.1  jakllsch     EFI_IPv4_ADDRESS StationAddress;
     39  1.1  jakllsch     EFI_IPv4_ADDRESS SubnetMask;
     40  1.1  jakllsch     UINT16           StationPort;
     41  1.1  jakllsch     EFI_IPv4_ADDRESS RemoteAddress;
     42  1.1  jakllsch     UINT16           RemotePort;
     43  1.1  jakllsch } EFI_UDP4_CONFIG_DATA;
     44  1.1  jakllsch 
     45  1.1  jakllsch typedef
     46  1.1  jakllsch EFI_STATUS
     47  1.1  jakllsch (EFIAPI *EFI_UDP4_GET_MODE_DATA) (
     48  1.1  jakllsch     IN struct _EFI_UDP4                 *This,
     49  1.1  jakllsch     OUT EFI_UDP4_CONFIG_DATA            *Udp4ConfigData OPTIONAL,
     50  1.1  jakllsch     OUT EFI_IP4_MODE_DATA               *Ip4ModeData    OPTIONAL,
     51  1.1  jakllsch     OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData  OPTIONAL,
     52  1.1  jakllsch     OUT EFI_SIMPLE_NETWORK_MODE         *SnpModeData    OPTIONAL
     53  1.1  jakllsch     );
     54  1.1  jakllsch 
     55  1.1  jakllsch typedef
     56  1.1  jakllsch EFI_STATUS
     57  1.1  jakllsch (EFIAPI *EFI_UDP4_CONFIGURE) (
     58  1.1  jakllsch     IN struct _EFI_UDP4     *This,
     59  1.1  jakllsch     IN EFI_UDP4_CONFIG_DATA *UdpConfigData OPTIONAL
     60  1.1  jakllsch     );
     61  1.1  jakllsch 
     62  1.1  jakllsch typedef
     63  1.1  jakllsch EFI_STATUS
     64  1.1  jakllsch (EFIAPI *EFI_UDP4_GROUPS) (
     65  1.1  jakllsch     IN struct _EFI_UDP4 *This,
     66  1.1  jakllsch     IN BOOLEAN          JoinFlag,
     67  1.1  jakllsch     IN EFI_IPv4_ADDRESS *MulticastAddress OPTIONAL
     68  1.1  jakllsch     );
     69  1.1  jakllsch 
     70  1.1  jakllsch typedef
     71  1.1  jakllsch EFI_STATUS
     72  1.1  jakllsch (EFIAPI *EFI_UDP4_ROUTES) (
     73  1.1  jakllsch     IN struct _EFI_UDP4 *This,
     74  1.1  jakllsch     IN BOOLEAN          DeleteRoute,
     75  1.1  jakllsch     IN EFI_IPv4_ADDRESS *SubnetAddress,
     76  1.1  jakllsch     IN EFI_IPv4_ADDRESS *SubnetMask,
     77  1.1  jakllsch     IN EFI_IPv4_ADDRESS *GatewayAddress
     78  1.1  jakllsch     );
     79  1.1  jakllsch 
     80  1.1  jakllsch #define EFI_NETWORK_UNREACHABLE  EFIERR(100)
     81  1.1  jakllsch #define EFI_HOST_UNREACHABLE     EFIERR(101)
     82  1.1  jakllsch #define EFI_PROTOCOL_UNREACHABLE EFIERR(102)
     83  1.1  jakllsch #define EFI_PORT_UNREACHABLE     EFIERR(103)
     84  1.1  jakllsch 
     85  1.1  jakllsch typedef struct {
     86  1.1  jakllsch     EFI_IPv4_ADDRESS SourceAddress;
     87  1.1  jakllsch     UINT16           SourcePort;
     88  1.1  jakllsch     EFI_IPv4_ADDRESS DestinationAddress;
     89  1.1  jakllsch     UINT16           DestinationPort;
     90  1.1  jakllsch } EFI_UDP4_SESSION_DATA;
     91  1.1  jakllsch 
     92  1.1  jakllsch typedef struct {
     93  1.1  jakllsch     UINT32 FragmentLength;
     94  1.1  jakllsch     VOID   *FragmentBuffer;
     95  1.1  jakllsch } EFI_UDP4_FRAGMENT_DATA;
     96  1.1  jakllsch 
     97  1.1  jakllsch typedef struct {
     98  1.1  jakllsch     EFI_TIME               TimeStamp;
     99  1.1  jakllsch     EFI_EVENT              RecycleSignal;
    100  1.1  jakllsch     EFI_UDP4_SESSION_DATA  UdpSession;
    101  1.1  jakllsch     UINT32                 DataLength;
    102  1.1  jakllsch     UINT32                 FragmentCount;
    103  1.1  jakllsch     EFI_UDP4_FRAGMENT_DATA FragmentTable[1];
    104  1.1  jakllsch } EFI_UDP4_RECEIVE_DATA;
    105  1.1  jakllsch 
    106  1.1  jakllsch typedef struct {
    107  1.1  jakllsch     EFI_UDP4_SESSION_DATA  *UdpSessionData;
    108  1.1  jakllsch     EFI_IPv4_ADDRESS       *GatewayAddress;
    109  1.1  jakllsch     UINT32                 DataLength;
    110  1.1  jakllsch     UINT32                 FragmentCount;
    111  1.1  jakllsch     EFI_UDP4_FRAGMENT_DATA FragmentTable[1];
    112  1.1  jakllsch } EFI_UDP4_TRANSMIT_DATA;
    113  1.1  jakllsch 
    114  1.1  jakllsch typedef struct {
    115  1.1  jakllsch     EFI_EVENT                  Event;
    116  1.1  jakllsch     EFI_STATUS                 Status;
    117  1.1  jakllsch     union {
    118  1.1  jakllsch         EFI_UDP4_RECEIVE_DATA  *RxData;
    119  1.1  jakllsch 	EFI_UDP4_TRANSMIT_DATA *TxData;
    120  1.1  jakllsch     }                          Packet;
    121  1.1  jakllsch } EFI_UDP4_COMPLETION_TOKEN;
    122  1.1  jakllsch 
    123  1.1  jakllsch typedef
    124  1.1  jakllsch EFI_STATUS
    125  1.1  jakllsch (EFIAPI *EFI_UDP4_TRANSMIT) (
    126  1.1  jakllsch     IN struct _EFI_UDP4          *This,
    127  1.1  jakllsch     IN EFI_UDP4_COMPLETION_TOKEN *Token
    128  1.1  jakllsch     );
    129  1.1  jakllsch 
    130  1.1  jakllsch typedef
    131  1.1  jakllsch EFI_STATUS
    132  1.1  jakllsch (EFIAPI *EFI_UDP4_RECEIVE) (
    133  1.1  jakllsch     IN struct _EFI_UDP4          *This,
    134  1.1  jakllsch     IN EFI_UDP4_COMPLETION_TOKEN *Token
    135  1.1  jakllsch     );
    136  1.1  jakllsch 
    137  1.1  jakllsch typedef
    138  1.1  jakllsch EFI_STATUS
    139  1.1  jakllsch (EFIAPI *EFI_UDP4_CANCEL)(
    140  1.1  jakllsch     IN struct _EFI_UDP4          *This,
    141  1.1  jakllsch     IN EFI_UDP4_COMPLETION_TOKEN *Token OPTIONAL
    142  1.1  jakllsch     );
    143  1.1  jakllsch 
    144  1.1  jakllsch typedef
    145  1.1  jakllsch EFI_STATUS
    146  1.1  jakllsch (EFIAPI *EFI_UDP4_POLL) (
    147  1.1  jakllsch     IN struct _EFI_UDP4 *This
    148  1.1  jakllsch     );
    149  1.1  jakllsch 
    150  1.1  jakllsch typedef struct _EFI_UDP4 {
    151  1.1  jakllsch     EFI_UDP4_GET_MODE_DATA GetModeData;
    152  1.1  jakllsch     EFI_UDP4_CONFIGURE     Configure;
    153  1.1  jakllsch     EFI_UDP4_GROUPS        Groups;
    154  1.1  jakllsch     EFI_UDP4_ROUTES        Routes;
    155  1.1  jakllsch     EFI_UDP4_TRANSMIT      Transmit;
    156  1.1  jakllsch     EFI_UDP4_RECEIVE       Receive;
    157  1.1  jakllsch     EFI_UDP4_CANCEL        Cancel;
    158  1.1  jakllsch     EFI_UDP4_POLL          Poll;
    159  1.1  jakllsch } EFI_UDP4;
    160  1.1  jakllsch 
    161  1.1  jakllsch typedef struct {
    162  1.1  jakllsch     BOOLEAN          AcceptPromiscuous;
    163  1.1  jakllsch     BOOLEAN          AcceptAnyPort;
    164  1.1  jakllsch     BOOLEAN          AllowDuplicatePort;
    165  1.1  jakllsch     UINT8            TrafficClass;
    166  1.1  jakllsch     UINT8            HopLimit;
    167  1.1  jakllsch     UINT32           ReceiveTimeout;
    168  1.1  jakllsch     UINT32           TransmitTimeout;
    169  1.1  jakllsch     EFI_IPv6_ADDRESS StationAddress;
    170  1.1  jakllsch     UINT16           StationPort;
    171  1.1  jakllsch     EFI_IPv6_ADDRESS RemoteAddress;
    172  1.1  jakllsch     UINT16           RemotePort;
    173  1.1  jakllsch } EFI_UDP6_CONFIG_DATA;
    174  1.1  jakllsch 
    175  1.1  jakllsch typedef
    176  1.1  jakllsch EFI_STATUS
    177  1.1  jakllsch (EFIAPI *EFI_UDP6_GET_MODE_DATA) (
    178  1.1  jakllsch     IN struct _EFI_UDP6                 *This,
    179  1.1  jakllsch     OUT EFI_UDP6_CONFIG_DATA            *Udp6ConfigData OPTIONAL,
    180  1.1  jakllsch     OUT EFI_IP6_MODE_DATA               *Ip6ModeData    OPTIONAL,
    181  1.1  jakllsch     OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData  OPTIONAL,
    182  1.1  jakllsch     OUT EFI_SIMPLE_NETWORK_MODE         *SnpModeData    OPTIONAL
    183  1.1  jakllsch     );
    184  1.1  jakllsch 
    185  1.1  jakllsch typedef
    186  1.1  jakllsch EFI_STATUS
    187  1.1  jakllsch (EFIAPI *EFI_UDP6_CONFIGURE) (
    188  1.1  jakllsch     IN struct _EFI_UDP6     *This,
    189  1.1  jakllsch     IN EFI_UDP6_CONFIG_DATA *UdpConfigData OPTIONAL
    190  1.1  jakllsch     );
    191  1.1  jakllsch 
    192  1.1  jakllsch typedef
    193  1.1  jakllsch EFI_STATUS
    194  1.1  jakllsch (EFIAPI *EFI_UDP6_GROUPS) (
    195  1.1  jakllsch     IN struct _EFI_UDP6 *This,
    196  1.1  jakllsch     IN BOOLEAN          JoinFlag,
    197  1.1  jakllsch     IN EFI_IPv6_ADDRESS *MulticastAddress OPTIONAL
    198  1.1  jakllsch     );
    199  1.1  jakllsch 
    200  1.1  jakllsch typedef struct {
    201  1.1  jakllsch     EFI_IPv6_ADDRESS SourceAddress;
    202  1.1  jakllsch     UINT16           SourcePort;
    203  1.1  jakllsch     EFI_IPv6_ADDRESS DestinationAddress;
    204  1.1  jakllsch     UINT16           DestinationPort;
    205  1.1  jakllsch } EFI_UDP6_SESSION_DATA;
    206  1.1  jakllsch 
    207  1.1  jakllsch typedef struct {
    208  1.1  jakllsch     UINT32 FragmentLength;
    209  1.1  jakllsch     VOID   *FragmentBuffer;
    210  1.1  jakllsch } EFI_UDP6_FRAGMENT_DATA;
    211  1.1  jakllsch 
    212  1.1  jakllsch typedef struct {
    213  1.1  jakllsch     EFI_TIME               TimeStamp;
    214  1.1  jakllsch     EFI_EVENT              RecycleSignal;
    215  1.1  jakllsch     EFI_UDP6_SESSION_DATA  UdpSession;
    216  1.1  jakllsch     UINT32                 DataLength;
    217  1.1  jakllsch     UINT32                 FragmentCount;
    218  1.1  jakllsch     EFI_UDP6_FRAGMENT_DATA FragmentTable[1];
    219  1.1  jakllsch } EFI_UDP6_RECEIVE_DATA;
    220  1.1  jakllsch 
    221  1.1  jakllsch typedef struct {
    222  1.1  jakllsch     EFI_UDP6_SESSION_DATA  *UdpSessionData;
    223  1.1  jakllsch     UINT32                 DataLength;
    224  1.1  jakllsch     UINT32                 FragmentCount;
    225  1.1  jakllsch     EFI_UDP6_FRAGMENT_DATA FragmentTable[1];
    226  1.1  jakllsch } EFI_UDP6_TRANSMIT_DATA;
    227  1.1  jakllsch 
    228  1.1  jakllsch typedef struct {
    229  1.1  jakllsch     EFI_EVENT                  Event;
    230  1.1  jakllsch     EFI_STATUS                 Status;
    231  1.1  jakllsch     union {
    232  1.1  jakllsch         EFI_UDP6_RECEIVE_DATA  *RxData;
    233  1.1  jakllsch         EFI_UDP6_TRANSMIT_DATA *TxData;
    234  1.1  jakllsch     }                          Packet;
    235  1.1  jakllsch } EFI_UDP6_COMPLETION_TOKEN;
    236  1.1  jakllsch 
    237  1.1  jakllsch typedef
    238  1.1  jakllsch EFI_STATUS
    239  1.1  jakllsch (EFIAPI *EFI_UDP6_TRANSMIT) (
    240  1.1  jakllsch     IN struct _EFI_UDP6          *This,
    241  1.1  jakllsch     IN EFI_UDP6_COMPLETION_TOKEN *Token
    242  1.1  jakllsch     );
    243  1.1  jakllsch 
    244  1.1  jakllsch typedef
    245  1.1  jakllsch EFI_STATUS
    246  1.1  jakllsch (EFIAPI *EFI_UDP6_RECEIVE) (
    247  1.1  jakllsch     IN struct _EFI_UDP6          *This,
    248  1.1  jakllsch     IN EFI_UDP6_COMPLETION_TOKEN *Token
    249  1.1  jakllsch     );
    250  1.1  jakllsch 
    251  1.1  jakllsch typedef
    252  1.1  jakllsch EFI_STATUS
    253  1.1  jakllsch (EFIAPI *EFI_UDP6_CANCEL)(
    254  1.1  jakllsch     IN struct _EFI_UDP6          *This,
    255  1.1  jakllsch     IN EFI_UDP6_COMPLETION_TOKEN *Token OPTIONAL
    256  1.1  jakllsch     );
    257  1.1  jakllsch 
    258  1.1  jakllsch typedef
    259  1.1  jakllsch EFI_STATUS
    260  1.1  jakllsch (EFIAPI *EFI_UDP6_POLL) (
    261  1.1  jakllsch     IN struct _EFI_UDP6 *This
    262  1.1  jakllsch     );
    263  1.1  jakllsch 
    264  1.1  jakllsch typedef struct _EFI_UDP6 {
    265  1.1  jakllsch     EFI_UDP6_GET_MODE_DATA GetModeData;
    266  1.1  jakllsch     EFI_UDP6_CONFIGURE     Configure;
    267  1.1  jakllsch     EFI_UDP6_GROUPS        Groups;
    268  1.1  jakllsch     EFI_UDP6_TRANSMIT      Transmit;
    269  1.1  jakllsch     EFI_UDP6_RECEIVE       Receive;
    270  1.1  jakllsch     EFI_UDP6_CANCEL        Cancel;
    271  1.1  jakllsch     EFI_UDP6_POLL          Poll;
    272  1.1  jakllsch } EFI_UDP6;
    273  1.1  jakllsch 
    274  1.1  jakllsch #endif /* _EFI_UDP_H */
    275