#include <Library/DebugLib.h>\r
#include <Library/UefiBootServicesTableLib.h>\r
#include <Library/MemoryAllocationLib.h>\r
+#include <Library/BaseMemoryLib.h>\r
\r
\r
#define NET_PROTO_HDR(Buf, Type) ((Type *) ((Buf)->BlockOp[0].Head))\r
FALSE,\r
FALSE,\r
FALSE,\r
- {0, 0, 0, 0},\r
- {0, 0, 0, 0},\r
+ {{0, 0, 0, 0}},\r
+ {{0, 0, 0, 0}},\r
0,\r
255,\r
FALSE,\r
0\r
};\r
\r
+STATIC ICMP_ERROR_INFO mIcmpErrMap[10] = {\r
+ {FALSE, TRUE},\r
+ {FALSE, TRUE},\r
+ {TRUE, TRUE},\r
+ {TRUE, TRUE},\r
+ {TRUE, TRUE},\r
+ {FALSE, TRUE},\r
+ {FALSE, TRUE},\r
+ {FALSE, TRUE},\r
+ {FALSE, FALSE},\r
+ {FALSE, TRUE}\r
+};\r
+\r
STATIC\r
VOID\r
EFIAPI\r
//\r
// Set the fields of OverrideData\r
//\r
- *OverrideData = * (EFI_IP4_OVERRIDE_DATA *) Override;\r
+ NetCopyMem (OverrideData, Override, sizeof (*OverrideData));\r
}\r
\r
//\r
// Set the fields of TxData\r
//\r
- EFI_IP4 (TxData->DestinationAddress) = Dest;\r
+ NetCopyMem (&TxData->DestinationAddress, &Dest, sizeof (EFI_IPv4_ADDRESS));\r
TxData->OverrideData = OverrideData;\r
TxData->OptionsLength = 0;\r
TxData->OptionsBuffer = NULL;\r
{\r
EFI_STATUS Status;\r
EFI_IP4_PROTOCOL *Ip;\r
- EFI_IPv4_ADDRESS ZeroIp;\r
\r
if (IpIo->IsConfigured) {\r
return EFI_ACCESS_DENIED;\r
// (0.0.0.0, 0.0.0.0, 0.0.0.0). Delete this statement if Ip modified\r
// its code\r
//\r
- EFI_IP4 (ZeroIp) = 0;\r
- Status = Ip->Routes (Ip, TRUE, &ZeroIp, &ZeroIp, &ZeroIp);\r
+ Status = Ip->Routes (Ip, TRUE, &mZeroIp4Addr, &mZeroIp4Addr, &mZeroIp4Addr);\r
\r
if (EFI_ERROR (Status) && (EFI_NOT_FOUND != Status)) {\r
return Status;\r
Ip4ConfigData->SubnetMask = Ip4ModeData.ConfigData.SubnetMask;\r
}\r
\r
- IpInfo->Addr = EFI_IP4 (Ip4ConfigData->StationAddress);\r
- IpInfo->SubnetMask = EFI_IP4 (Ip4ConfigData->SubnetMask);\r
+ NetCopyMem (&IpInfo->Addr, &Ip4ConfigData->StationAddress, sizeof (IP4_ADDR));\r
+ NetCopyMem (&IpInfo->SubnetMask, &Ip4ConfigData->SubnetMask, sizeof (IP4_ADDR));\r
\r
Status = Ip->Receive (Ip, &IpInfo->DummyRcvToken);\r
if (EFI_ERROR (Status)) {\r
OUT BOOLEAN *Notify OPTIONAL\r
)\r
{\r
- ICMP_ERROR_INFO IcmpErrMap[10];\r
-\r
- IcmpErrMap[0].Error = EFI_NETWORK_UNREACHABLE;\r
- IcmpErrMap[0].IsHard = FALSE;\r
- IcmpErrMap[0].Notify = TRUE;\r
-\r
- IcmpErrMap[1].Error = EFI_HOST_UNREACHABLE;\r
- IcmpErrMap[1].IsHard = FALSE;\r
- IcmpErrMap[1].Notify = TRUE;\r
-\r
- IcmpErrMap[2].Error = EFI_PROTOCOL_UNREACHABLE;\r
- IcmpErrMap[2].IsHard = TRUE;\r
- IcmpErrMap[2].Notify = TRUE;\r
-\r
- IcmpErrMap[3].Error = EFI_PORT_UNREACHABLE;\r
- IcmpErrMap[3].IsHard = TRUE;\r
- IcmpErrMap[3].Notify = TRUE;\r
-\r
- IcmpErrMap[4].Error = EFI_ICMP_ERROR;\r
- IcmpErrMap[4].IsHard = TRUE;\r
- IcmpErrMap[4].Notify = TRUE;\r
-\r
- IcmpErrMap[5].Error = EFI_ICMP_ERROR;\r
- IcmpErrMap[5].IsHard = FALSE;\r
- IcmpErrMap[5].Notify = TRUE;\r
+ ASSERT ((IcmpError >= ICMP_ERR_UNREACH_NET) && (IcmpError <= ICMP_ERR_PARAMPROB));\r
\r
- IcmpErrMap[6].Error = EFI_HOST_UNREACHABLE;\r
- IcmpErrMap[6].IsHard = FALSE;\r
- IcmpErrMap[6].Notify = TRUE;\r
+ if (IsHard != NULL) {\r
+ *IsHard = mIcmpErrMap[IcmpError].IsHard;\r
+ }\r
\r
- IcmpErrMap[7].Error = EFI_HOST_UNREACHABLE;\r
- IcmpErrMap[7].IsHard = FALSE;\r
- IcmpErrMap[7].Notify = TRUE;\r
+ if (Notify != NULL) {\r
+ *Notify = mIcmpErrMap[IcmpError].Notify;\r
+ }\r
\r
- IcmpErrMap[8].Error = EFI_ICMP_ERROR;\r
- IcmpErrMap[8].IsHard = FALSE;\r
- IcmpErrMap[8].Notify = FALSE;\r
+ switch (IcmpError) {\r
+ case ICMP_ERR_UNREACH_NET:\r
+ return EFI_NETWORK_UNREACHABLE;\r
\r
- IcmpErrMap[9].Error = EFI_ICMP_ERROR;\r
- IcmpErrMap[9].IsHard = FALSE;\r
- IcmpErrMap[9].Notify = TRUE;\r
+ case ICMP_ERR_TIMXCEED_INTRANS:\r
+ case ICMP_ERR_TIMXCEED_REASS:\r
+ case ICMP_ERR_UNREACH_HOST:\r
+ return EFI_HOST_UNREACHABLE;\r
\r
- ASSERT ((IcmpError >= ICMP_ERR_UNREACH_NET) && (IcmpError <= ICMP_ERR_PARAMPROB));\r
+ case ICMP_ERR_UNREACH_PROTOCOL:\r
+ return EFI_PROTOCOL_UNREACHABLE;\r
\r
- if (IsHard != NULL) {\r
- *IsHard = IcmpErrMap[IcmpError].IsHard;\r
- }\r
+ case ICMP_ERR_UNREACH_PORT:\r
+ return EFI_PORT_UNREACHABLE;\r
\r
- if (Notify != NULL) {\r
- *Notify = IcmpErrMap[IcmpError].Notify;\r
+ case ICMP_ERR_MSGSIZE:\r
+ case ICMP_ERR_UNREACH_SRCFAIL:\r
+ case ICMP_ERR_QUENCH:\r
+ case ICMP_ERR_PARAMPROB:\r
+ return EFI_ICMP_ERROR;\r
}\r
\r
- return IcmpErrMap[IcmpError].Error;\r
+ //\r
+ // will never run here!\r
+ //\r
+ ASSERT (FALSE);\r
+ return EFI_UNSUPPORTED;\r
}\r
\r