]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.c
Changed the code style. it could pass EBC and ICC build.
[mirror_edk2.git] / MdeModulePkg / Library / DxeIpIoLib / DxeIpIoLib.c
index 4a068eaf72bdc9cd3ae9c33b2cb8d4119d15f783..608bdd297ea2e960e8eb0f3e8537af6dfa0eded0 100644 (file)
@@ -29,6 +29,7 @@ Abstract:
 #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
@@ -47,8 +48,8 @@ EFI_IP4_CONFIG_DATA  mIpIoDefaultIpConfigData = {
   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
@@ -57,6 +58,19 @@ EFI_IP4_CONFIG_DATA  mIpIoDefaultIpConfigData = {
   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
@@ -229,7 +243,7 @@ IpIoIcmpHandler (
     case ICMP_CODE_UNREACH_PROTOCOL:\r
     case ICMP_CODE_UNREACH_PORT:\r
     case ICMP_CODE_UNREACH_SRCFAIL:\r
-      IcmpErr = ICMP_ERR_UNREACH_NET + Code;\r
+      IcmpErr = (ICMP_ERROR) (ICMP_ERR_UNREACH_NET + Code);\r
 \r
       break;\r
 \r
@@ -266,7 +280,7 @@ IpIoIcmpHandler (
       return EFI_ABORTED;\r
     }\r
 \r
-    IcmpErr = Code + ICMP_ERR_TIMXCEED_INTRANS;\r
+    IcmpErr = (ICMP_ERROR) (Code + ICMP_ERR_TIMXCEED_INTRANS);\r
 \r
     break;\r
 \r
@@ -362,7 +376,7 @@ IpIoCreateSndEntry (
   EFI_IP4_TRANSMIT_DATA     *TxData;\r
   EFI_STATUS                Status;\r
   EFI_IP4_OVERRIDE_DATA     *OverrideData;\r
-  UINT32                    Index;\r
+  volatile UINT32           Index;\r
 \r
   //\r
   // Allocate resource for SndEntry\r
@@ -416,21 +430,21 @@ IpIoCreateSndEntry (
     //\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
   TxData->TotalDataLength               = Pkt->TotalSize;\r
   TxData->FragmentCount                 = Pkt->BlockOpNum;\r
 \r
-  for (Index = 0; Index < Pkt->BlockOpNum; Index++) {\r
 \r
+  for (Index = 0; Index < Pkt->BlockOpNum; Index++) {\r
     TxData->FragmentTable[Index].FragmentBuffer = Pkt->BlockOp[Index].Head;\r
     TxData->FragmentTable[Index].FragmentLength = Pkt->BlockOp[Index].Size;\r
   }\r
@@ -654,7 +668,7 @@ IpIoListenHandler (
 \r
   if (EFI_SUCCESS == Status) {\r
 \r
-    IpIo->PktRcvdNotify (EFI_SUCCESS, 0, &Session, Pkt, IpIo->RcvdContext);\r
+    IpIo->PktRcvdNotify (EFI_SUCCESS, (ICMP_ERROR) 0, &Session, Pkt, IpIo->RcvdContext);\r
   } else {\r
     //\r
     // Status is EFI_ICMP_ERROR\r
@@ -761,7 +775,6 @@ IpIoOpen (
 {\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
@@ -782,8 +795,7 @@ IpIoOpen (
   // (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
@@ -857,6 +869,7 @@ IpIoStop (
   //\r
   // Detroy the Ip List used by IpIo\r
   //\r
+\r
   while (!NetListIsEmpty (&(IpIo->IpList))) {\r
     IpInfo = NET_LIST_HEAD (&(IpIo->IpList), IP_IO_IP_INFO, Entry);\r
 \r
@@ -1050,7 +1063,7 @@ IpIoAddIp (
              IpIo->Controller,\r
              IpIo->Image,\r
              &IpInfo->ChildHandle,\r
-             &IpInfo->Ip\r
+             (VOID **) &IpInfo->Ip\r
              );\r
   if (EFI_ERROR (Status)) {\r
     goto ReleaseIpInfo;\r
@@ -1146,8 +1159,8 @@ IpIoConfigIp (
       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
@@ -1271,29 +1284,42 @@ IpIoGetIcmpErrStatus (
   OUT BOOLEAN     *Notify OPTIONAL\r
   )\r
 {\r
-  ICMP_ERROR_INFO  IcmpErrMap[] = {\r
-    { EFI_NETWORK_UNREACHABLE,  FALSE, TRUE  }, // ICMP_ERR_UNREACH_NET\r
-    { EFI_HOST_UNREACHABLE,     FALSE, TRUE  }, // ICMP_ERR_UNREACH_HOST\r
-    { EFI_PROTOCOL_UNREACHABLE, TRUE,  TRUE  }, // ICMP_ERR_UNREACH_PROTOCOL\r
-    { EFI_PORT_UNREACHABLE,     TRUE,  TRUE  }, // ICMP_ERR_UNREACH_PORT\r
-    { EFI_ICMP_ERROR,           TRUE,  TRUE  }, // ICMP_ERR_MSGSIZE\r
-    { EFI_ICMP_ERROR,           FALSE, TRUE  }, // ICMP_ERR_UNREACH_SRCFAIL\r
-    { EFI_HOST_UNREACHABLE,     FALSE, TRUE  }, // ICMP_ERR_TIMXCEED_INTRANS\r
-    { EFI_HOST_UNREACHABLE,     FALSE, TRUE  }, // ICMP_ERR_TIMEXCEED_REASS\r
-    { EFI_ICMP_ERROR,           FALSE, FALSE }, // ICMP_ERR_QUENCH\r
-    { EFI_ICMP_ERROR,           FALSE, TRUE  }  // ICMP_ERR_PARAMPROB\r
-  };\r
-\r
   ASSERT ((IcmpError >= ICMP_ERR_UNREACH_NET) && (IcmpError <= ICMP_ERR_PARAMPROB));\r
 \r
   if (IsHard != NULL) {\r
-    *IsHard = IcmpErrMap[IcmpError].IsHard;\r
+    *IsHard = mIcmpErrMap[IcmpError].IsHard;\r
   }\r
 \r
   if (Notify != NULL) {\r
-    *Notify = IcmpErrMap[IcmpError].Notify;\r
+    *Notify = mIcmpErrMap[IcmpError].Notify;\r
+  }\r
+\r
+  switch (IcmpError) {\r
+  case ICMP_ERR_UNREACH_NET:\r
+    return  EFI_NETWORK_UNREACHABLE;\r
+\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
+  case ICMP_ERR_UNREACH_PROTOCOL:\r
+    return  EFI_PROTOCOL_UNREACHABLE;\r
+\r
+  case ICMP_ERR_UNREACH_PORT:\r
+    return  EFI_PORT_UNREACHABLE;\r
+\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