//\r
// Set the OpenData used to open the IpIo.\r
//\r
- OpenData.IpConfigData = mIpIoDefaultIpConfigData;\r
+ CopyMem (&OpenData.IpConfigData, &mIpIoDefaultIpConfigData, sizeof (EFI_IP4_CONFIG_DATA));\r
OpenData.IpConfigData.AcceptBroadcast = TRUE;\r
OpenData.RcvdContext = (VOID *) Udp4Service;\r
OpenData.SndContext = NULL;\r
// Save the pointer to the UDP4_SERVICE_DATA, and initialize other members.\r
//\r
Instance->Udp4Service = Udp4Service;\r
- Instance->Udp4Proto = mUdp4Protocol;\r
+ CopyMem (&Instance->Udp4Proto, &mUdp4Protocol, sizeof (EFI_UDP4_PROTOCOL));\r
Instance->IcmpError = EFI_SUCCESS;\r
Instance->Configured = FALSE;\r
Instance->IsNoMapping = FALSE;\r
continue;\r
}\r
\r
- if (EFI_IP_EQUAL (ConfigData->StationAddress, *Address) &&\r
+ if (EFI_IP4_EQUAL (ConfigData->StationAddress, *Address) &&\r
(ConfigData->StationPort == Port)) {\r
//\r
// if both the address and the port are the same, return TRUE.\r
}\r
\r
if (!NewConfigData->UseDefaultAddress &&\r
- (!EFI_IP_EQUAL (NewConfigData->StationAddress, OldConfigData->StationAddress) ||\r
- !EFI_IP_EQUAL (NewConfigData->SubnetMask, OldConfigData->SubnetMask))) {\r
+ (!EFI_IP4_EQUAL (NewConfigData->StationAddress, OldConfigData->StationAddress) ||\r
+ !EFI_IP4_EQUAL (NewConfigData->SubnetMask, OldConfigData->SubnetMask))) {\r
//\r
// If the instance doesn't use the default address, and the new address or\r
// new subnet mask is different from the old values.\r
}\r
}\r
\r
- if (!EFI_IP_EQUAL (NewConfigData->RemoteAddress, OldConfigData->RemoteAddress)) {\r
+ if (!EFI_IP4_EQUAL (NewConfigData->RemoteAddress, OldConfigData->RemoteAddress)) {\r
//\r
// The remoteaddress is not the same.\r
//\r
return FALSE;\r
}\r
\r
- if ((EFI_IP4 (NewConfigData->RemoteAddress) != 0) &&\r
- (NewConfigData->RemotePort != OldConfigData->RemotePort)) {\r
+ if (!EFI_IP4_EQUAL (NewConfigData->RemoteAddress, mZeroIp4Addr) && (NewConfigData->RemotePort != OldConfigData->RemotePort)) {\r
//\r
// The RemotePort differs if it's designated in the configdata.\r
//\r
IN EFI_IP4_CONFIG_DATA *Ip4ConfigData\r
)\r
{\r
- *Ip4ConfigData = mIpIoDefaultIpConfigData;\r
+ CopyMem (Ip4ConfigData, &mIpIoDefaultIpConfigData, sizeof (EFI_IP4_CONFIG_DATA));\r
+\r
Ip4ConfigData->DefaultProtocol = EFI_IP_PROTO_UDP;\r
Ip4ConfigData->AcceptBroadcast = Udp4ConfigData->AcceptBroadcast;\r
Ip4ConfigData->AcceptPromiscuous = Udp4ConfigData->AcceptPromiscuous;\r
EFI_UDP4_CONFIG_DATA *ConfigData;\r
EFI_UDP4_SESSION_DATA *UdpSessionData;\r
IP4_ADDR SourceAddress;\r
+ IP4_ADDR GatewayAddress;\r
\r
if (TxToken->Event == NULL) {\r
return EFI_INVALID_PARAMETER;\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
- if ((TxData->GatewayAddress != NULL) &&\r
- !Ip4IsUnicast(EFI_NTOHL (*(TxData->GatewayAddress)), 0)) {\r
- //\r
- // The specified GatewayAddress is not a unicast IPv4 address while it's not 0.\r
- //\r
- return EFI_INVALID_PARAMETER;\r
+ if (TxData->GatewayAddress != NULL) {\r
+ NetCopyMem (&GatewayAddress, TxData->GatewayAddress, sizeof (IP4_ADDR));\r
+\r
+ if (!Ip4IsUnicast (NTOHL (GatewayAddress), 0)) {\r
+ //\r
+ // The specified GatewayAddress is not a unicast IPv4 address while it's not 0.\r
+ //\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
}\r
\r
ConfigData = &Instance->ConfigData;\r
\r
if (UdpSessionData != NULL) {\r
\r
- SourceAddress = EFI_NTOHL (UdpSessionData->SourceAddress);\r
+ NetCopyMem (&SourceAddress, &UdpSessionData->SourceAddress, sizeof (IP4_ADDR));\r
\r
- if ((SourceAddress != 0) && !Ip4IsUnicast (SourceAddress, 0)) {\r
+ if ((SourceAddress != 0) && !Ip4IsUnicast (HTONL (SourceAddress), 0)) {\r
//\r
// Check whether SourceAddress is a valid IPv4 address in case it's not zero.\r
// The configured station address is used if SourceAddress is zero.\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
- if (EFI_IP4 (UdpSessionData->DestinationAddress) == 0) {\r
+ if (EFI_IP4_EQUAL (UdpSessionData->DestinationAddress, mZeroIp4Addr)) {\r
//\r
// The DestinationAddress specified in the UdpSessionData is 0.\r
//\r
return EFI_INVALID_PARAMETER;\r
}\r
- } else if (EFI_IP4 (ConfigData->RemoteAddress) == 0) {\r
+ } else if (EFI_IP4_EQUAL (ConfigData->RemoteAddress, mZeroIp4Addr)) {\r
//\r
// the configured RemoteAddress is all zero, and the user doens't override the\r
// destination address.\r
\r
McastIp = Arg;\r
\r
- if ((McastIp != NULL) && ((UINTN) EFI_IP4 (*McastIp) != (UINTN) (Item->Key))) {\r
+ if ((McastIp != NULL) && (!EFI_IP4_EQUAL (*McastIp, (UINTN) Item->Key))) {\r
//\r
- // McastIp is not NULL and the multicast address contained in the Item\r
+ // McastIp is not NULL and the multicast address contained in the Item \r
// is not the same as McastIp.\r
//\r
return EFI_SUCCESS;\r
return FALSE;\r
}\r
\r
- if ((EFI_IP4 (ConfigData->RemoteAddress) != 0) &&\r
- !EFI_IP_EQUAL (ConfigData->RemoteAddress, Udp4Session->SourceAddress)) {\r
+ if (!EFI_IP4_EQUAL (ConfigData->RemoteAddress, mZeroIp4Addr) &&\r
+ !EFI_IP4_EQUAL (ConfigData->RemoteAddress, Udp4Session->SourceAddress)) {\r
//\r
// This datagram doesn't come from the instance's specified sender.\r
//\r
return FALSE;\r
}\r
\r
- if ((EFI_IP4 (ConfigData->StationAddress) == 0) ||\r
- EFI_IP_EQUAL (Udp4Session->DestinationAddress, ConfigData->StationAddress)) {\r
+ if (EFI_IP4_EQUAL (ConfigData->StationAddress, mZeroIp4Addr) ||\r
+ EFI_IP4_EQUAL (Udp4Session->DestinationAddress, ConfigData->StationAddress)) {\r
//\r
// The instance is configured to receive datagrams destinated to any station IP or\r
// the destination address of this datagram matches the configured station IP.\r
return TRUE;\r
}\r
\r
- Destination = EFI_IP4 (Udp4Session->DestinationAddress);\r
+ NetCopyMem (&Destination, &Udp4Session->DestinationAddress, sizeof (IP4_ADDR));\r
\r
if (IP4_IS_LOCAL_BROADCAST (Destination) && ConfigData->AcceptBroadcast) {\r
//\r
\r
NetListInit (&Wrap->Link);\r
\r
- Wrap->RxData = *RxData;\r
+ CopyMem (&Wrap->RxData, RxData, sizeof (EFI_UDP4_RECEIVE_DATA));\r
\r
//\r
// Create the Recycle event.\r
//\r
// Wrap the RxData and put this Wrap into the instances RcvdDgramQue.\r
//\r
- Wrap = Udp4WrapRxData (Instance, Packet, RxData);\r
+ CopyMem (&Wrap, Udp4WrapRxData (Instance, Packet, RxData), sizeof (UDP4_RXDATA_WRAP));\r
if (Wrap == NULL) {\r
continue;\r
}\r
\r
gRT->GetTime (&RxData.TimeStamp, NULL);\r
\r
- Udp4Session = &RxData.UdpSession;\r
- EFI_IP4 (Udp4Session->SourceAddress) = NetSession->Source;\r
- EFI_IP4 (Udp4Session->DestinationAddress) = NetSession->Dest;\r
- Udp4Session->SourcePort = NTOHS (Udp4Header->SrcPort);\r
- Udp4Session->DestinationPort = NTOHS (Udp4Header->DstPort);\r
+ Udp4Session = &RxData.UdpSession;\r
+ Udp4Session->SourcePort = NTOHS (Udp4Header->SrcPort);\r
+ Udp4Session->DestinationPort = NTOHS (Udp4Header->DstPort);\r
+\r
+ NetCopyMem (&Udp4Session->SourceAddress, &NetSession->Source, sizeof (EFI_IPv4_ADDRESS));\r
+ NetCopyMem (&Udp4Session->DestinationAddress, &NetSession->Dest, sizeof (EFI_IPv4_ADDRESS));\r
\r
//\r
// Trim the UDP header.\r
//\r
// Fill the override data.\r
//\r
- Override.DoNotFragment = FALSE;\r
- Override.TypeOfService = 0;\r
- Override.TimeToLive = 255;\r
- Override.Protocol = EFI_IP_PROTO_ICMP;\r
- EFI_IP4 (Override.SourceAddress) = NetSession->Dest;\r
- EFI_IP4 (Override.GatewayAddress) = 0;\r
+ Override.DoNotFragment = FALSE;\r
+ Override.TypeOfService = 0;\r
+ Override.TimeToLive = 255;\r
+ Override.Protocol = EFI_IP_PROTO_ICMP;\r
+\r
+ NetCopyMem (&Override.SourceAddress, &NetSession->Dest, sizeof (EFI_IPv4_ADDRESS));\r
+ NetZeroMem (&Override.GatewayAddress, sizeof (EFI_IPv4_ADDRESS));\r
\r
//\r
// Send out this icmp packet.\r
\r
Udp4Header = (EFI_UDP4_HEADER *) NetbufGetByte (Packet, 0, NULL);\r
\r
- EFI_IP4 (Udp4Session.SourceAddress) = NetSession->Source;\r
- EFI_IP4 (Udp4Session.DestinationAddress) = NetSession->Dest;\r
- Udp4Session.SourcePort = NTOHS (Udp4Header->DstPort);\r
- Udp4Session.DestinationPort = NTOHS (Udp4Header->SrcPort);\r
+ NetCopyMem (&Udp4Session.SourceAddress, &NetSession->Source, sizeof (EFI_IPv4_ADDRESS));\r
+ NetCopyMem (&Udp4Session.DestinationAddress, &NetSession->Dest, sizeof (EFI_IPv4_ADDRESS));\r
+\r
+ Udp4Session.SourcePort = NTOHS (Udp4Header->DstPort);\r
+ Udp4Session.DestinationPort = NTOHS (Udp4Header->SrcPort);\r
\r
NET_LIST_FOR_EACH (Entry, &Udp4Service->ChildrenList) {\r
//\r
if (!Instance->Configured ||\r
Instance->ConfigData.AcceptPromiscuous ||\r
Instance->ConfigData.AcceptAnyPort ||\r
- (EFI_IP4 (Instance->ConfigData.StationAddress) == 0)) {\r
+ EFI_IP4_EQUAL (Instance->ConfigData.StationAddress, mZeroIp4Addr)) {\r
//\r
// Don't try to deliver the ICMP error to this instance if it is not configured,\r
// or it's configured to be promiscuous or accept any port or accept all the\r