///\r
#define IP4_US_TO_SEC(Us) (((Us) + 999999) / 1000000)\r
\r
+/**\r
+ Return the cast type (Unicast/Boradcast) specific to an\r
+ interface. All the addresses are host byte ordered.\r
+\r
+ @param IpAddr The IP address to classify in host byte order\r
+ @param IpIf The interface that IpAddr received from\r
+\r
+ @return The cast type of this IP address specific to the interface.\r
+ @retval IP4_LOCAL_HOST The IpAddr equals to the interface's address\r
+ @retval IP4_SUBNET_BROADCAST The IpAddr is a directed subnet boradcast to the\r
+ interface\r
+ @retval IP4_NET_BROADCAST The IpAddr is a network broadcast to the interface\r
+ @retval 0 Otherwise.\r
+\r
+**/\r
INTN\r
Ip4GetNetCast (\r
- IN IP4_ADDR IpAddr,\r
- IN IP4_INTERFACE *IpIf\r
+ IN IP4_ADDR IpAddr,\r
+ IN IP4_INTERFACE *IpIf\r
);\r
\r
+/**\r
+ Find the cast type of the packet related to the local host.\r
+ This isn't the same as link layer cast type. For example, DHCP\r
+ server may send local broadcast to the local unicast MAC.\r
+\r
+ @param IpSb The IP4 service binding instance that received the\r
+ packet\r
+ @param Dst The destination address in the packet (host byte\r
+ order)\r
+ @param Src The source address in the packet (host byte order)\r
+\r
+ @return The cast type for the Dst, it will return on the first non-promiscuous\r
+ cast type to a configured interface. If the packet doesn't match any of\r
+ the interface, multicast address and local broadcast address are checked.\r
+\r
+**/\r
INTN\r
Ip4GetHostCast (\r
- IN IP4_SERVICE *IpSb,\r
- IN IP4_ADDR Dst,\r
- IN IP4_ADDR Src\r
+ IN IP4_SERVICE *IpSb,\r
+ IN IP4_ADDR Dst,\r
+ IN IP4_ADDR Src\r
);\r
\r
+/**\r
+ Find an interface whose configured IP address is Ip.\r
+\r
+ @param IpSb The IP4 service binding instance\r
+ @param Ip The Ip address (host byte order) to find\r
+\r
+ @return The IP4_INTERFACE point if found, otherwise NULL\r
+\r
+**/\r
IP4_INTERFACE *\r
Ip4FindInterface (\r
- IN IP4_SERVICE *IpService,\r
- IN IP4_ADDR Addr\r
+ IN IP4_SERVICE *IpSb,\r
+ IN IP4_ADDR Ip\r
);\r
\r
+/**\r
+ Find an interface that Ip is on that connected network.\r
+\r
+ @param IpSb The IP4 service binding instance\r
+ @param Ip The Ip address (host byte order) to find\r
+\r
+ @return The IP4_INTERFACE point if found, otherwise NULL\r
+\r
+**/\r
IP4_INTERFACE *\r
Ip4FindNet (\r
- IN IP4_SERVICE *IpService,\r
- IN IP4_ADDR Addr\r
+ IN IP4_SERVICE *IpSb,\r
+ IN IP4_ADDR Ip\r
);\r
\r
+/**\r
+ Find an interface of the service with the same Ip/Netmask pair.\r
+\r
+ @param IpSb Ip4 service binding instance\r
+ @param Ip The Ip adress to find (host byte order)\r
+ @param Netmask The network to find (host byte order)\r
+\r
+ @return The IP4_INTERFACE point if found, otherwise NULL\r
+\r
+**/\r
IP4_INTERFACE *\r
Ip4FindStationAddress (\r
- IN IP4_SERVICE *IpSb,\r
- IN IP4_ADDR Ip,\r
- IN IP4_ADDR Netmask\r
+ IN IP4_SERVICE *IpSb,\r
+ IN IP4_ADDR Ip,\r
+ IN IP4_ADDR Netmask\r
);\r
\r
+/**\r
+ Get the MAC address for a multicast IP address. Call\r
+ Mnp's McastIpToMac to find the MAC address in stead of\r
+ hard code the NIC to be Ethernet.\r
+\r
+ @param Mnp The Mnp instance to get the MAC address.\r
+ @param Multicast The multicast IP address to translate.\r
+ @param Mac The buffer to hold the translated address.\r
+\r
+ @retval EFI_SUCCESS if the multicast IP is successfully translated to a\r
+ multicast MAC address.\r
+ @retval other Otherwise some error.\r
+\r
+**/\r
EFI_STATUS\r
Ip4GetMulticastMac (\r
IN EFI_MANAGED_NETWORK_PROTOCOL *Mnp,\r
OUT EFI_MAC_ADDRESS *Mac\r
);\r
\r
+/**\r
+ Convert the multibyte field in IP header's byter order.\r
+ In spite of its name, it can also be used to convert from\r
+ host to network byte order.\r
+\r
+ @param Head The IP head to convert\r
+\r
+ @return Point to the converted IP head\r
+\r
+**/\r
IP4_HEAD *\r
Ip4NtohHead (\r
- IN IP4_HEAD *Head\r
+ IN IP4_HEAD *Head\r
);\r
\r
+/**\r
+ Set the Ip4 variable data.\r
+ \r
+ Save the list of all of the IPv4 addresses and subnet masks that are currently\r
+ being used to volatile variable storage.\r
+\r
+ @param IpSb Ip4 service binding instance\r
+\r
+ @retval EFI_SUCCESS Successfully set variable.\r
+ @retval EFI_OUT_OF_RESOURCES There are not enough resources to set the variable.\r
+ @retval other Set variable failed.\r
+\r
+**/\r
EFI_STATUS\r
Ip4SetVariableData (\r
- IN IP4_SERVICE *IpSb\r
+ IN IP4_SERVICE *IpSb\r
);\r
\r
+/**\r
+ Clear the variable and free the resource.\r
+\r
+ @param IpSb Ip4 service binding instance\r
+\r
+ @return None.\r
+\r
+**/\r
VOID\r
Ip4ClearVariableData (\r
- IN IP4_SERVICE *IpSb\r
+ IN IP4_SERVICE *IpSb\r
);\r
\r
#endif\r