\r
/**\r
Gets the current operational settings for this instance of the EFI IPv4 Protocol driver.\r
+ \r
+ The GetModeData() function returns the current operational mode data for this\r
+ driver instance. The data fields in EFI_IP4_MODE_DATA are read only. This\r
+ function is used optionally to retrieve the operational mode data of underlying\r
+ networks or drivers.\r
\r
@param This Pointer to the EFI_IP4_PROTOCOL instance.\r
@param Ip4ModeData Pointer to the EFI IPv4 Protocol mode data structure.\r
\r
/**\r
Assigns an IPv4 address and subnet mask to this EFI IPv4 Protocol driver instance.\r
+ \r
+ The Configure() function is used to set, change, or reset the operational\r
+ parameters and filter settings for this EFI IPv4 Protocol instance. Until these\r
+ parameters have been set, no network traffic can be sent or received by this\r
+ instance. Once the parameters have been reset (by calling this function with\r
+ IpConfigData set to NULL), no more traffic can be sent or received until these\r
+ parameters have been set again. Each EFI IPv4 Protocol instance can be started\r
+ and stopped independently of each other by enabling or disabling their receive\r
+ filter settings with the Configure() function.\r
+ \r
+ When IpConfigData.UseDefaultAddress is set to FALSE, the new station address will\r
+ be appended as an alias address into the addresses list in the EFI IPv4 Protocol\r
+ driver. While set to TRUE, Configure() will trigger the EFI_IP4_CONFIG_PROTOCOL\r
+ to retrieve the default IPv4 address if it is not available yet. Clients could\r
+ frequently call GetModeData() to check the status to ensure that the default IPv4\r
+ address is ready.\r
+ \r
+ If operational parameters are reset or changed, any pending transmit and receive\r
+ requests will be cancelled. Their completion token status will be set to EFI_ABORTED\r
+ and their events will be signaled.\r
\r
@param This Pointer to the EFI_IP4_PROTOCOL instance.\r
@param IpConfigData Pointer to the EFI IPv4 Protocol configuration data structure.\r
\r
/**\r
Joins and leaves multicast groups.\r
+ \r
+ The Groups() function is used to join and leave multicast group sessions. Joining\r
+ a group will enable reception of matching multicast packets. Leaving a group will\r
+ disable the multicast packet reception.\r
+ \r
+ If JoinFlag is FALSE and GroupAddress is NULL, all joined groups will be left.\r
\r
@param This Pointer to the EFI_IP4_PROTOCOL instance.\r
@param JoinFlag Set to TRUE to join the multicast group session and FALSE to leave.\r
/**\r
Adds and deletes routing table entries.\r
\r
+ The Routes() function adds a route to or deletes a route from the routing table.\r
+ \r
+ Routes are determined by comparing the SubnetAddress with the destination IPv4\r
+ address arithmetically AND-ed with the SubnetMask. The gateway address must be\r
+ on the same subnet as the configured station address.\r
+ \r
+ The default route is added with SubnetAddress and SubnetMask both set to 0.0.0.0.\r
+ The default route matches all destination IPv4 addresses that do not match any\r
+ other routes.\r
+ \r
+ A GatewayAddress that is zero is a nonroute. Packets are sent to the destination\r
+ IP address if it can be found in the ARP cache or on the local subnet. One automatic\r
+ nonroute entry will be inserted into the routing table for outgoing packets that\r
+ are addressed to a local subnet (gateway address of 0.0.0.0).\r
+ \r
+ Each EFI IPv4 Protocol instance has its own independent routing table. Those EFI\r
+ IPv4 Protocol instances that use the default IPv4 address will also have copies\r
+ of the routing table that was provided by the EFI_IP4_CONFIG_PROTOCOL, and these\r
+ copies will be updated whenever the EIF IPv4 Protocol driver reconfigures its\r
+ instances. As a result, client modification to the routing table will be lost.\r
+\r
@param This Pointer to the EFI_IP4_PROTOCOL instance.\r
@param DeleteRoute Set to TRUE to delete this route from the routing table. Set to\r
FALSE to add this route to the routing table. SubnetAddress\r
/**\r
Places outgoing data packets into the transmit queue.\r
\r
+ The Transmit() function places a sending request in the transmit queue of this\r
+ EFI IPv4 Protocol instance. Whenever the packet in the token is sent out or some\r
+ errors occur, the event in the token will be signaled and the status is updated.\r
+\r
@param This Pointer to the EFI_IP4_PROTOCOL instance.\r
@param Token Pointer to the transmit token.\r
\r
\r
/**\r
Places a receiving request into the receiving queue.\r
+ \r
+ The Receive() function places a completion token into the receive packet queue.\r
+ This function is always asynchronous.\r
+ \r
+ The Token.Event field in the completion token must be filled in by the caller\r
+ and cannot be NULL. When the receive operation completes, the EFI IPv4 Protocol\r
+ driver updates the Token.Status and Token.Packet.RxData fields and the Token.Event\r
+ is signaled.\r
\r
@param This Pointer to the EFI_IP4_PROTOCOL instance.\r
@param Token Pointer to a token that is associated with the receive data descriptor.\r
\r
/**\r
Abort an asynchronous transmit or receive request.\r
+ \r
+ The Cancel() function is used to abort a pending transmit or receive request.\r
+ If the token is in the transmit or receive request queues, after calling this\r
+ function, Token->Status will be set to EFI_ABORTED and then Token->Event will\r
+ be signaled. If the token is not in one of the queues, which usually means the\r
+ asynchronous operation has completed, this function will not signal the token\r
+ and EFI_NOT_FOUND is returned.\r
\r
@param This Pointer to the EFI_IP4_PROTOCOL instance.\r
@param Token Pointer to a token that has been issued by\r
\r
/**\r
Polls for incoming data packets and processes outgoing data packets.\r
+ \r
+ The Poll() function polls for incoming data packets and processes outgoing data\r
+ packets. Network drivers and applications can call the EFI_IP4_PROTOCOL.Poll()\r
+ function to increase the rate that data packets are moved between the communications\r
+ device and the transmit and receive queues.\r
+ \r
+ In some systems the periodic timer event may not poll the underlying communications\r
+ device fast enough to transmit and/or receive all data packets without missing\r
+ incoming packets or dropping outgoing packets. Drivers and applications that are\r
+ experiencing packet loss should try calling the EFI_IP4_PROTOCOL.Poll() function\r
+ more often.\r
\r
@param This Pointer to the EFI_IP4_PROTOCOL instance.\r
\r