]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Network/Ip4Dxe/Ip4If.h
NetworkPkg: Move Network library and drivers from MdeModulePkg to NetworkPkg
[mirror_edk2.git] / MdeModulePkg / Universal / Network / Ip4Dxe / Ip4If.h
diff --git a/MdeModulePkg/Universal/Network/Ip4Dxe/Ip4If.h b/MdeModulePkg/Universal/Network/Ip4Dxe/Ip4If.h
deleted file mode 100644 (file)
index d73bb52..0000000
+++ /dev/null
@@ -1,340 +0,0 @@
-/** @file\r
-  Definition for IP4 pesudo interface structure.\r
-\r
-Copyright (c) 2005 - 2018, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-**/\r
-\r
-#ifndef __EFI_IP4_IF_H__\r
-#define __EFI_IP4_IF_H__\r
-\r
-#define IP4_FRAME_RX_SIGNATURE  SIGNATURE_32 ('I', 'P', 'F', 'R')\r
-#define IP4_FRAME_TX_SIGNATURE  SIGNATURE_32 ('I', 'P', 'F', 'T')\r
-#define IP4_FRAME_ARP_SIGNATURE SIGNATURE_32 ('I', 'P', 'F', 'A')\r
-#define IP4_INTERFACE_SIGNATURE SIGNATURE_32 ('I', 'P', 'I', 'F')\r
-\r
-/**\r
-  This prototype is used by both receive and transmission.\r
-  When receiving Netbuf is allocated by IP4_INTERFACE, and\r
-  released by IP4. Flag shows whether the frame is received\r
-  as link broadcast/multicast...\r
-\r
-  When transmitting, the Netbuf is from IP4, and provided\r
-  to the callback as a reference. Flag isn't used.\r
-\r
-  @param[in] IpInstance The instance that sent or received the packet.\r
-                        IpInstance can be NULL which means that it is the IP4 driver\r
-                        itself sending the packets. IP4 driver may send packets that\r
-                        don't belong to any instance, such as ICMP errors, ICMP echo\r
-                        responses, or IGMP packets. IpInstance is used as a tag in\r
-                        this module.\r
-  @param[in] Packet     The sent or received packet.\r
-  @param[in] IoStatus   Status of sending or receiving.\r
-  @param[in] LinkFlag   Indicate if the frame is received as link broadcast/multicast.\r
-                        When transmitting, it is not used.\r
-  @param[in] Context    Additional data for callback.\r
-\r
-  @retval None.\r
-**/\r
-typedef\r
-VOID\r
-(*IP4_FRAME_CALLBACK)(\r
-  IN IP4_PROTOCOL              *IpInstance       OPTIONAL,\r
-  IN NET_BUF                   *Packet,\r
-  IN EFI_STATUS                IoStatus,\r
-  IN UINT32                    LinkFlag,\r
-  IN VOID                      *Context\r
-  );\r
-\r
-///\r
-/// Each receive request is wrapped in an IP4_LINK_RX_TOKEN.\r
-/// Upon completion, the Callback will be called. Only one\r
-/// receive request is send to MNP. IpInstance is always NULL.\r
-/// Reference MNP's spec for information.\r
-///\r
-typedef struct {\r
-  UINT32                                Signature;\r
-  IP4_INTERFACE                         *Interface;\r
-\r
-  IP4_PROTOCOL                          *IpInstance;\r
-  IP4_FRAME_CALLBACK                    CallBack;\r
-  VOID                                  *Context;\r
-\r
-  EFI_MANAGED_NETWORK_COMPLETION_TOKEN  MnpToken;\r
-} IP4_LINK_RX_TOKEN;\r
-\r
-///\r
-/// Each transmit request is wrapped in an IP4_LINK_TX_TOKEN.\r
-/// Upon completion, the Callback will be called.\r
-///\r
-typedef struct {\r
-  UINT32                                Signature;\r
-  LIST_ENTRY                            Link;\r
-\r
-  IP4_INTERFACE                         *Interface;\r
-  IP4_SERVICE                           *IpSb;\r
-\r
-  IP4_PROTOCOL                          *IpInstance;\r
-  IP4_FRAME_CALLBACK                    CallBack;\r
-  NET_BUF                               *Packet;\r
-  VOID                                  *Context;\r
-\r
-  EFI_MAC_ADDRESS                       DstMac;\r
-  EFI_MAC_ADDRESS                       SrcMac;\r
-\r
-  EFI_MANAGED_NETWORK_COMPLETION_TOKEN  MnpToken;\r
-  EFI_MANAGED_NETWORK_TRANSMIT_DATA     MnpTxData;\r
-} IP4_LINK_TX_TOKEN;\r
-\r
-///\r
-/// Only one ARP request is requested for all the frames in\r
-/// a time. It is started for the first frames to the Ip. Any\r
-/// subsequent transmission frame will be linked to Frames, and\r
-/// be sent all at once the ARP requests succeed.\r
-///\r
-typedef struct {\r
-  UINT32                  Signature;\r
-  LIST_ENTRY              Link;\r
-\r
-  LIST_ENTRY              Frames;\r
-  IP4_INTERFACE           *Interface;\r
-\r
-  //\r
-  // ARP requesting staffs\r
-  //\r
-  EFI_EVENT               OnResolved;\r
-  IP4_ADDR                Ip;\r
-  EFI_MAC_ADDRESS         Mac;\r
-} IP4_ARP_QUE;\r
-\r
-/**\r
-  Callback to select which frame to cancel. Caller can cancel a\r
-  single frame, or all the frame from an IP instance.\r
-\r
-  @param Frame      The sending frame to check for cancellation.\r
-  @param Context    Additional data for callback.\r
-\r
-  @retval TRUE      The sending of the frame should be cancelled.\r
-  @retval FALSE     Do not cancel the frame sending.\r
-**/\r
-typedef\r
-BOOLEAN\r
-(*IP4_FRAME_TO_CANCEL)(\r
-  IP4_LINK_TX_TOKEN       *Frame,\r
-  VOID                    *Context\r
-  );\r
-\r
-//\r
-// Each IP4 instance has its own station address. All the instances\r
-// with the same station address share a single interface structure.\r
-// Each interface has its own ARP child, and shares one MNP child.\r
-// Notice the special cases that DHCP can configure the interface\r
-// with 0.0.0.0/0.0.0.0.\r
-//\r
-struct _IP4_INTERFACE {\r
-  UINT32                        Signature;\r
-  LIST_ENTRY                    Link;\r
-  INTN                          RefCnt;\r
-\r
-  //\r
-  // IP address and subnet mask of the interface. It also contains\r
-  // the subnet/net broadcast address for quick access. The fields\r
-  // are invalid if (Configured == FALSE)\r
-  //\r
-  IP4_ADDR                      Ip;\r
-  IP4_ADDR                      SubnetMask;\r
-  IP4_ADDR                      SubnetBrdcast;\r
-  IP4_ADDR                      NetBrdcast;\r
-  BOOLEAN                       Configured;\r
-\r
-  //\r
-  // Handle used to create/destroy ARP child. All the IP children\r
-  // share one MNP which is owned by IP service binding.\r
-  //\r
-  EFI_HANDLE                    Controller;\r
-  EFI_HANDLE                    Image;\r
-\r
-  EFI_MANAGED_NETWORK_PROTOCOL  *Mnp;\r
-  EFI_ARP_PROTOCOL              *Arp;\r
-  EFI_HANDLE                    ArpHandle;\r
-\r
-  //\r
-  // Queues to keep the frames sent and waiting ARP request.\r
-  //\r
-  LIST_ENTRY                    ArpQues;\r
-  LIST_ENTRY                    SentFrames;\r
-  IP4_LINK_RX_TOKEN             *RecvRequest;\r
-\r
-  //\r
-  // The interface's MAC and broadcast MAC address.\r
-  //\r
-  EFI_MAC_ADDRESS               Mac;\r
-  EFI_MAC_ADDRESS               BroadcastMac;\r
-  UINT32                        HwaddrLen;\r
-\r
-  //\r
-  // All the IP instances that have the same IP/SubnetMask are linked\r
-  // together through IpInstances. If any of the instance enables\r
-  // promiscuous receive, PromiscRecv is true.\r
-  //\r
-  LIST_ENTRY                    IpInstances;\r
-  BOOLEAN                       PromiscRecv;\r
-};\r
-\r
-/**\r
-  Create an IP4_INTERFACE. Delay the creation of ARP instance until\r
-  the interface is configured.\r
-\r
-  @param[in]  Mnp               The shared MNP child of this IP4 service binding\r
-                                instance.\r
-  @param[in]  Controller        The controller this IP4 service binding instance\r
-                                is installed. Most like the UNDI handle.\r
-  @param[in]  ImageHandle       This driver's image handle.\r
-\r
-  @return Point to the created IP4_INTERFACE, otherwise NULL.\r
-\r
-**/\r
-IP4_INTERFACE *\r
-Ip4CreateInterface (\r
-  IN  EFI_MANAGED_NETWORK_PROTOCOL  *Mnp,\r
-  IN  EFI_HANDLE                    Controller,\r
-  IN  EFI_HANDLE                    ImageHandle\r
-  );\r
-\r
-/**\r
-  Set the interface's address, create and configure\r
-  the ARP child if necessary.\r
-\r
-  @param  Interface         The interface to set the address.\r
-  @param  IpAddr            The interface's IP address.\r
-  @param  SubnetMask        The interface's netmask.\r
-\r
-  @retval EFI_SUCCESS           The interface is configured with Ip/netmask pair,\r
-                                and a ARP is created for it.\r
-  @retval Others                Failed to set the interface's address.\r
-\r
-**/\r
-EFI_STATUS\r
-Ip4SetAddress (\r
-  IN OUT IP4_INTERFACE      *Interface,\r
-  IN     IP4_ADDR           IpAddr,\r
-  IN     IP4_ADDR           SubnetMask\r
-  );\r
-\r
-/**\r
-  Free the interface used by IpInstance. All the IP instance with\r
-  the same Ip/Netmask pair share the same interface. It is reference\r
-  counted. All the frames haven't been sent will be cancelled.\r
-  Because the IpInstance is optional, the caller must remove\r
-  IpInstance from the interface's instance list itself.\r
-\r
-  @param[in]  Interface         The interface used by the IpInstance.\r
-  @param[in]  IpInstance        The Ip instance that free the interface. NULL if\r
-                                the Ip driver is releasing the default interface.\r
-\r
-  @retval EFI_SUCCESS           The interface use IpInstance is freed.\r
-\r
-**/\r
-EFI_STATUS\r
-Ip4FreeInterface (\r
-  IN  IP4_INTERFACE         *Interface,\r
-  IN  IP4_PROTOCOL          *IpInstance           OPTIONAL\r
-  );\r
-\r
-/**\r
-  Send a frame from the interface. If the next hop is broadcast or\r
-  multicast address, it is transmitted immediately. If the next hop\r
-  is a unicast, it will consult ARP to resolve the NextHop's MAC.\r
-  If some error happened, the CallBack won't be called. So, the caller\r
-  must test the return value, and take action when there is an error.\r
-\r
-  @param[in]  Interface         The interface to send the frame from\r
-  @param[in]  IpInstance        The IP child that request the transmission.  NULL\r
-                                if it is the IP4 driver itself.\r
-  @param[in]  Packet            The packet to transmit.\r
-  @param[in]  NextHop           The immediate destination to transmit the packet\r
-                                to.\r
-  @param[in]  CallBack          Function to call back when transmit finished.\r
-  @param[in]  Context           Opaque parameter to the call back.\r
-  @param[in]  IpSb              The pointer to the IP4 service binding instance.\r
-\r
-  @retval EFI_OUT_OF_RESOURCES  Failed to allocate resource to send the frame\r
-  @retval EFI_NO_MAPPING        Can't resolve the MAC for the nexthop\r
-  @retval EFI_SUCCESS           The packet is successfully transmitted.\r
-  @retval other                 Other error occurs.\r
-\r
-**/\r
-EFI_STATUS\r
-Ip4SendFrame (\r
-  IN  IP4_INTERFACE         *Interface,\r
-  IN  IP4_PROTOCOL          *IpInstance       OPTIONAL,\r
-  IN  NET_BUF               *Packet,\r
-  IN  IP4_ADDR              NextHop,\r
-  IN  IP4_FRAME_CALLBACK    CallBack,\r
-  IN  VOID                  *Context,\r
-  IN IP4_SERVICE            *IpSb\r
-  );\r
-\r
-/**\r
-  Remove all the frames on the interface that pass the FrameToCancel,\r
-  either queued on ARP queues or that have already been delivered to\r
-  MNP and not yet recycled.\r
-\r
-  @param[in]  Interface         Interface to remove the frames from.\r
-  @param[in]  IoStatus          The transmit status returned to the frames'\r
-                                callback.\r
-  @param[in]  FrameToCancel     Function to select the frame to cancel, NULL to\r
-                                select all.\r
-  @param[in]  Context           Opaque parameters passed to FrameToCancel.\r
-\r
-**/\r
-VOID\r
-Ip4CancelFrames (\r
-  IN IP4_INTERFACE          *Interface,\r
-  IN EFI_STATUS             IoStatus,\r
-  IN IP4_FRAME_TO_CANCEL    FrameToCancel    OPTIONAL,\r
-  IN VOID                   *Context\r
-  );\r
-\r
-/**\r
-  If there is a pending receive request, cancel it. Don't call\r
-  the receive request's callback because this function can be only\r
-  called if the instance or driver is tearing itself down. It\r
-  doesn't make sense to call it back. But it is necessary to call\r
-  the transmit token's callback to give it a chance to free the\r
-  packet and update the upper layer's transmit request status, say\r
-  that from the UDP.\r
-\r
-  @param[in]  Interface         The interface used by the IpInstance\r
-\r
-**/\r
-VOID\r
-Ip4CancelReceive (\r
-  IN IP4_INTERFACE          *Interface\r
-  );\r
-\r
-/**\r
-  Request to receive the packet from the interface.\r
-\r
-  @param[in]  Interface         The interface to receive the frames from.\r
-  @param[in]  IpInstance        The instance that requests the receive. NULL for\r
-                                the driver itself.\r
-  @param[in]  CallBack          Function to call when receive finished.\r
-  @param[in]  Context           Opaque parameter to the callback.\r
-\r
-  @retval EFI_ALREADY_STARTED   There is already a pending receive request.\r
-  @retval EFI_OUT_OF_RESOURCES  Failed to allocate resource to receive.\r
-  @retval EFI_SUCCESS           The recieve request has been started.\r
-  @retval other                 Other error occurs.\r
-\r
-**/\r
-EFI_STATUS\r
-Ip4ReceiveFrame (\r
-  IN  IP4_INTERFACE         *Interface,\r
-  IN  IP4_PROTOCOL          *IpInstance       OPTIONAL,\r
-  IN  IP4_FRAME_CALLBACK    CallBack,\r
-  IN  VOID                  *Context\r
-  );\r
-\r
-#endif\r