IN EFI_HANDLE ControllerHandle\r
)\r
{\r
- EFI_STATUS Status;\r
- IP_IO_OPEN_DATA OpenData;\r
+ EFI_STATUS Status;\r
+ IP_IO_OPEN_DATA OpenData;\r
+ EFI_IP4_CONFIG_DATA *Ip4ConfigData;\r
\r
ZeroMem (Udp4Service, sizeof (UDP4_SERVICE_DATA));\r
\r
//\r
// Create the IpIo for this service context.\r
//\r
- Udp4Service->IpIo = IpIoCreate (ImageHandle, ControllerHandle);\r
+ Udp4Service->IpIo = IpIoCreate (ImageHandle, ControllerHandle, IP_VERSION_4);\r
if (Udp4Service->IpIo == NULL) {\r
return EFI_OUT_OF_RESOURCES;\r
}\r
//\r
// Set the OpenData used to open the IpIo.\r
//\r
- CopyMem (&OpenData.IpConfigData, &mIpIoDefaultIpConfigData, sizeof (OpenData.IpConfigData));\r
- OpenData.IpConfigData.AcceptBroadcast = TRUE;\r
- OpenData.RcvdContext = (VOID *) Udp4Service;\r
- OpenData.SndContext = NULL;\r
- OpenData.PktRcvdNotify = Udp4DgramRcvd;\r
- OpenData.PktSentNotify = Udp4DgramSent;\r
+ Ip4ConfigData = &OpenData.IpConfigData.Ip4CfgData;\r
+ CopyMem (Ip4ConfigData, &mIp4IoDefaultIpConfigData, sizeof (EFI_IP4_CONFIG_DATA));\r
+ Ip4ConfigData->AcceptBroadcast = TRUE;\r
+ OpenData.RcvdContext = (VOID *) Udp4Service;\r
+ OpenData.SndContext = NULL;\r
+ OpenData.PktRcvdNotify = Udp4DgramRcvd;\r
+ OpenData.PktSentNotify = Udp4DgramSent;\r
\r
//\r
// Configure and start the IpIo.\r
IN OUT EFI_IP4_CONFIG_DATA *Ip4ConfigData\r
)\r
{\r
- CopyMem (Ip4ConfigData, &mIpIoDefaultIpConfigData, sizeof (*Ip4ConfigData));\r
+ CopyMem (Ip4ConfigData, &mIp4IoDefaultIpConfigData, sizeof (*Ip4ConfigData));\r
\r
Ip4ConfigData->DefaultProtocol = EFI_IP_PROTO_UDP;\r
Ip4ConfigData->AcceptBroadcast = Udp4ConfigData->AcceptBroadcast;\r
IN NET_BUF *Packet\r
)\r
{\r
- EFI_UDP4_HEADER *Udp4Header;\r
+ EFI_UDP_HEADER *Udp4Header;\r
UINT16 HeadSum;\r
EFI_UDP4_RECEIVE_DATA RxData;\r
EFI_UDP4_SESSION_DATA *Udp4Session;\r
//\r
// Get the datagram header from the packet buffer.\r
//\r
- Udp4Header = (EFI_UDP4_HEADER *) NetbufGetByte (Packet, 0, NULL);\r
+ Udp4Header = (EFI_UDP_HEADER *) NetbufGetByte (Packet, 0, NULL);\r
\r
if (Udp4Header->Checksum != 0) {\r
//\r
// check the checksum.\r
//\r
HeadSum = NetPseudoHeadChecksum (\r
- NetSession->Source,\r
- NetSession->Dest,\r
+ NetSession->Source.Addr[0],\r
+ NetSession->Dest.Addr[0],\r
EFI_IP_PROTO_UDP,\r
0\r
);\r
IP_IO_OVERRIDE Override;\r
IP_IO_IP_INFO *IpSender;\r
\r
- IpSender = IpIoFindSender (&IpIo, NetSession->Dest);\r
+ IpSender = IpIoFindSender (&IpIo, NetSession->IpVersion, &NetSession->Dest);\r
if (IpSender == NULL) {\r
//\r
// No apropriate sender, since we cannot send out the ICMP message through\r
return;\r
}\r
\r
- IpHdr = NetSession->IpHdr;\r
+ IpHdr = NetSession->IpHdr.Ip4Hdr;\r
\r
//\r
// Calculate the requried length of the icmp error message.\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
+ Override.Ip4OverrideData.DoNotFragment = FALSE;\r
+ Override.Ip4OverrideData.TypeOfService = 0;\r
+ Override.Ip4OverrideData.TimeToLive = 255;\r
+ Override.Ip4OverrideData.Protocol = EFI_IP_PROTO_ICMP;\r
\r
- CopyMem (&Override.SourceAddress, &NetSession->Dest, sizeof (EFI_IPv4_ADDRESS));\r
- ZeroMem (&Override.GatewayAddress, sizeof (EFI_IPv4_ADDRESS));\r
+ CopyMem (&Override.Ip4OverrideData.SourceAddress, &NetSession->Dest, sizeof (EFI_IPv4_ADDRESS));\r
+ ZeroMem (&Override.Ip4OverrideData.GatewayAddress, sizeof (EFI_IPv4_ADDRESS));\r
\r
//\r
// Send out this icmp packet.\r
//\r
- IpIoSend (IpIo, Packet, IpSender, NULL, NULL, NetSession->Source, &Override);\r
+ IpIoSend (IpIo, Packet, IpSender, NULL, NULL, &NetSession->Source, &Override);\r
\r
NetbufFree (Packet);\r
}\r
IN NET_BUF *Packet\r
)\r
{\r
- EFI_UDP4_HEADER *Udp4Header;\r
+ EFI_UDP_HEADER *Udp4Header;\r
EFI_UDP4_SESSION_DATA Udp4Session;\r
LIST_ENTRY *Entry;\r
UDP4_INSTANCE_DATA *Instance;\r
\r
- Udp4Header = (EFI_UDP4_HEADER *) NetbufGetByte (Packet, 0, NULL);\r
+ Udp4Header = (EFI_UDP_HEADER *) NetbufGetByte (Packet, 0, NULL);\r
\r
CopyMem (&Udp4Session.SourceAddress, &NetSession->Source, sizeof (EFI_IPv4_ADDRESS));\r
CopyMem (&Udp4Session.DestinationAddress, &NetSession->Dest, sizeof (EFI_IPv4_ADDRESS));\r
//\r
// Translate the Icmp Error code according to the udp spec.\r
//\r
- Instance->IcmpError = IpIoGetIcmpErrStatus (IcmpError, NULL, NULL);\r
+ Instance->IcmpError = IpIoGetIcmpErrStatus (IcmpError, IP_VERSION_4, NULL, NULL);\r
\r
if (IcmpError > ICMP_ERR_UNREACH_PORT) {\r
Instance->IcmpError = EFI_ICMP_ERROR;\r