Home | History | Annotate | Download | only in IScsiDxe
      1 /** @file
      2   iSCSI Tcp4 IO related definitions.
      3 
      4 Copyright (c) 2004 - 2008, Intel Corporation. All rights reserved.<BR>
      5 This program and the accompanying materials
      6 are licensed and made available under the terms and conditions of the BSD License
      7 which accompanies this distribution.  The full text of the license may be found at
      8 http://opensource.org/licenses/bsd-license.php
      9 
     10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     12 
     13 **/
     14 
     15 #ifndef _ISCSI_TCP4_IO_H_
     16 #define _ISCSI_TCP4_IO_H_
     17 
     18 #include <Library/NetLib.h>
     19 #include <Protocol/Tcp4.h>
     20 
     21 typedef struct _TCP4_IO_CONFIG_DATA {
     22   EFI_IPv4_ADDRESS  LocalIp;
     23   EFI_IPv4_ADDRESS  SubnetMask;
     24   EFI_IPv4_ADDRESS  Gateway;
     25 
     26   EFI_IPv4_ADDRESS  RemoteIp;
     27   UINT16            RemotePort;
     28 } TCP4_IO_CONFIG_DATA;
     29 
     30 typedef struct _TCP4_IO {
     31   EFI_HANDLE                Image;
     32   EFI_HANDLE                Controller;
     33 
     34   EFI_HANDLE                Handle;
     35   EFI_TCP4_PROTOCOL         *Tcp4;
     36 
     37   EFI_TCP4_CONNECTION_TOKEN ConnToken;
     38   EFI_TCP4_IO_TOKEN         TxToken;
     39   EFI_TCP4_IO_TOKEN         RxToken;
     40   EFI_TCP4_CLOSE_TOKEN      CloseToken;
     41 
     42   BOOLEAN                   IsConnDone;
     43   BOOLEAN                   IsTxDone;
     44   BOOLEAN                   IsRxDone;
     45   BOOLEAN                   IsCloseDone;
     46 } TCP4_IO;
     47 
     48 /**
     49   Create a TCP socket with the specified configuration data.
     50 
     51   @param[in]  Image      The handle of the driver image.
     52   @param[in]  Controller The handle of the controller.
     53   @param[in]  ConfigData The Tcp4 configuration data.
     54   @param[in]  Tcp4Io     The Tcp4Io.
     55 
     56   @retval EFI_SUCCESS    The TCP socket is created and configured.
     57   @retval Others         Failed to create the TCP socket or configure it.
     58 **/
     59 EFI_STATUS
     60 Tcp4IoCreateSocket (
     61   IN EFI_HANDLE           Image,
     62   IN EFI_HANDLE           Controller,
     63   IN TCP4_IO_CONFIG_DATA  *ConfigData,
     64   IN TCP4_IO              *Tcp4Io
     65   );
     66 
     67 /**
     68   Destroy the socket.
     69 
     70   @param[in]  Tcp4Io The Tcp4Io which wraps the socket to be destroyeds.
     71 **/
     72 VOID
     73 Tcp4IoDestroySocket (
     74   IN TCP4_IO  *Tcp4Io
     75   );
     76 
     77 /**
     78   Connect to the other endpoint of the TCP socket.
     79 
     80   @param[in, out]  Tcp4Io    The Tcp4Io wrapping the TCP socket.
     81   @param[in]       Timeout   The time to wait for connection done.
     82 
     83   @retval EFI_SUCCESS          Connect to the other endpoint of the TCP socket successfully.
     84   @retval EFI_TIMEOUT          Failed to connect to the other endpoint of the TCP socket in the                               specified time period.
     85   @retval Others               Other errors as indicated.
     86 **/
     87 EFI_STATUS
     88 Tcp4IoConnect (
     89   IN OUT TCP4_IO    *Tcp4Io,
     90   IN EFI_EVENT      Timeout
     91   );
     92 
     93 /**
     94   Reset the socket.
     95 
     96   @param[in, out]  Tcp4Io The Tcp4Io wrapping the TCP socket.
     97 **/
     98 VOID
     99 Tcp4IoReset (
    100   IN OUT TCP4_IO  *Tcp4Io
    101   );
    102 
    103 /**
    104   Transmit the Packet to the other endpoint of the socket.
    105 
    106   @param[in]   Tcp4Io          The Tcp4Io wrapping the TCP socket.
    107   @param[in]   Packet          The packet to transmit.
    108 
    109   @retval EFI_SUCCESS          The packet is trasmitted.
    110   @retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
    111   @retval Others               Other errors as indicated.
    112 **/
    113 EFI_STATUS
    114 Tcp4IoTransmit (
    115   IN TCP4_IO  *Tcp4Io,
    116   IN NET_BUF  *Packet
    117   );
    118 
    119 /**
    120   Receive data from the socket.
    121 
    122   @param[in]  Tcp4Io           The Tcp4Io which wraps the socket to be destroyed.
    123   @param[in]  Packet           The buffer to hold the data copy from the soket rx buffer.
    124   @param[in]  AsyncMode        Is this receive asyncronous or not.
    125   @param[in]  Timeout          The time to wait for receiving the amount of data the Packet
    126                                can hold.
    127 
    128   @retval EFI_SUCCESS          The required amount of data is received from the socket.
    129   @retval EFI_OUT_OF_RESOURCES Failed to allocate momery.
    130   @retval EFI_TIMEOUT          Failed to receive the required amount of data in the
    131                                specified time period.
    132   @retval Others               Other errors as indicated.
    133 **/
    134 EFI_STATUS
    135 Tcp4IoReceive (
    136   IN TCP4_IO    *Tcp4Io,
    137   IN NET_BUF    *Packet,
    138   IN BOOLEAN    AsyncMode,
    139   IN EFI_EVENT  Timeout
    140   );
    141 
    142 #endif
    143