]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Network/Tcp4Dxe/Socket.h
Use Mde library and definition instead of some native definitions in NetLib, to simpl...
[mirror_edk2.git] / MdeModulePkg / Universal / Network / Tcp4Dxe / Socket.h
index 34b098bcde5e798387ce41157b125dfdce0062f1..95f29a1d75aed4f6cad886bd6d652a3dae005907 100644 (file)
@@ -211,24 +211,6 @@ typedef struct _SOCK_BUFFER {
   NET_BUF_QUEUE *DataQueue; // the queue to buffer data\r
 } SOCK_BUFFER;\r
 \r
-//\r
-// the initialize data for create a new socket\r
-//\r
-typedef struct _SOCK_INIT_DATA {\r
-  SOCK_TYPE   Type;\r
-  SOCK_STATE  State;\r
-\r
-  SOCKET      *Parent;        // the parent of this socket\r
-  UINT32      BackLog;        // the connection limit for listening socket\r
-  UINT32      SndBufferSize;  // the high warter mark of send buffer\r
-  UINT32      RcvBufferSize;  // the high warter mark of receive buffer\r
-  VOID        *Protocol;      // the pointer to protocol function template\r
-                              // wanted to install on socket\r
-\r
-  SOCK_PROTO_HANDLER  ProtoHandler;\r
-\r
-  EFI_HANDLE   DriverBinding; // the driver binding handle\r
-} SOCK_INIT_DATA;\r
 \r
 //\r
 // socket provided oprerations for low layer protocol\r
@@ -317,6 +299,51 @@ SockRcvdErr (
   IN EFI_STATUS   Error\r
   );\r
 \r
+typedef\r
+EFI_STATUS\r
+(*SOCK_CREATE_CALLBACK) (\r
+  IN SOCKET  *This,\r
+  IN VOID    *Context\r
+  );\r
+\r
+typedef\r
+VOID\r
+(*SOCK_DESTROY_CALLBACK) (\r
+  IN SOCKET  *This,\r
+  IN VOID    *Context\r
+  );\r
+\r
+//\r
+// the initialize data for create a new socket\r
+//\r
+typedef struct _SOCK_INIT_DATA {\r
+  SOCK_TYPE   Type;\r
+  SOCK_STATE  State;\r
+\r
+  SOCKET      *Parent;        // the parent of this socket\r
+  UINT32      BackLog;        // the connection limit for listening socket\r
+  UINT32      SndBufferSize;  // the high warter mark of send buffer\r
+  UINT32      RcvBufferSize;  // the high warter mark of receive buffer\r
+  VOID        *Protocol;      // the pointer to protocol function template\r
+                              // wanted to install on socket\r
+\r
+  //\r
+  // Callbacks after socket is created and before socket is to be destroyed.\r
+  //\r
+  SOCK_CREATE_CALLBACK   CreateCallback;\r
+  SOCK_DESTROY_CALLBACK  DestroyCallback;\r
+  VOID                   *Context;\r
+\r
+  //\r
+  // Opaque protocol data.\r
+  //\r
+  VOID                   *ProtoData;\r
+  UINT32                 DataSize;\r
+\r
+  SOCK_PROTO_HANDLER     ProtoHandler;\r
+\r
+  EFI_HANDLE   DriverBinding; // the driver binding handle\r
+} SOCK_INIT_DATA;\r
 //\r
 // the socket structure representing a network service access point\r
 //\r
@@ -330,11 +357,12 @@ struct _SOCKET {
   EFI_HANDLE            DriverBinding;  // socket't driver binding protocol\r
   EFI_DEVICE_PATH_PROTOCOL  *ParentDevicePath;\r
   EFI_DEVICE_PATH_PROTOCOL  *DevicePath;\r
+  LIST_ENTRY                Link;  \r
   SOCK_CONFIGURE_STATE  ConfigureState;\r
   SOCK_TYPE             Type;\r
   SOCK_STATE            State;\r
   UINT16                Flag;\r
-  NET_LOCK              Lock;       // the lock of socket\r
+  EFI_LOCK              Lock;       // the lock of socket\r
   SOCK_BUFFER           SndBuffer;  // send buffer of application's data\r
   SOCK_BUFFER           RcvBuffer;  // receive buffer of received data\r
   EFI_STATUS            SockError;  // the error returned by low layer protocol\r
@@ -346,14 +374,14 @@ struct _SOCKET {
   UINT32          BackLog;        // the limit of connection to this socket\r
   UINT32          ConnCnt;        // the current count of connections to it\r
   SOCKET          *Parent;        // listening parent that accept the connection\r
-  NET_LIST_ENTRY  ConnectionList; // the connections maintained by this socket\r
+  LIST_ENTRY      ConnectionList; // the connections maintained by this socket\r
   //\r
   // the queue to buffer application's asynchronous token\r
   //\r
-  NET_LIST_ENTRY  ListenTokenList;\r
-  NET_LIST_ENTRY  RcvTokenList;\r
-  NET_LIST_ENTRY  SndTokenList;\r
-  NET_LIST_ENTRY  ProcessingSndTokenList;\r
+  LIST_ENTRY      ListenTokenList;\r
+  LIST_ENTRY      RcvTokenList;\r
+  LIST_ENTRY      SndTokenList;\r
+  LIST_ENTRY      ProcessingSndTokenList;\r
 \r
   SOCK_COMPLETION_TOKEN *ConnectionToken; // app's token to signal if connected\r
   SOCK_COMPLETION_TOKEN *CloseToken;      // app's token to signal if closed\r
@@ -367,13 +395,20 @@ struct _SOCKET {
     EFI_TCP4_PROTOCOL TcpProtocol;\r
     EFI_UDP4_PROTOCOL UdpProtocol;\r
   } NetProtocol;\r
+\r
+  //\r
+  // Callbacks.\r
+  //\r
+  SOCK_CREATE_CALLBACK   CreateCallback;\r
+  SOCK_DESTROY_CALLBACK  DestroyCallback;\r
+  VOID                   *Context;\r
 };\r
 \r
 //\r
 // the token structure buffered in socket layer\r
 //\r
 typedef struct _SOCK_TOKEN {\r
-  NET_LIST_ENTRY        TokenList;      // the entry to add in the token list\r
+  LIST_ENTRY            TokenList;      // the entry to add in the token list\r
   SOCK_COMPLETION_TOKEN *Token;         // The application's token\r
   UINT32                RemainDataLen;  // unprocessed data length\r
   SOCKET                *Sock;          // the poninter to the socket this token\r
@@ -400,9 +435,7 @@ typedef struct _TCP_RSV_DATA {
 //\r
 SOCKET  *\r
 SockCreateChild (\r
-  IN SOCK_INIT_DATA *SockInitData,\r
-  IN VOID           *ProtoData,\r
-  IN UINT32         Len\r
+  IN SOCK_INIT_DATA *SockInitData\r
   );\r
 \r
 //\r