- Netbuf = NetbufFromExt (\r
- (NET_FRAGMENT *) UdpRxData->FragmentTable,\r
- UdpRxData->FragmentCount,\r
- 0,\r
- (UINT32) Token->HeadLen,\r
- UdpIoRecycleDgram,\r
- Token\r
- );\r
-\r
- if (Netbuf == NULL) {\r
- gBS->SignalEvent (UdpRxData->RecycleSignal);\r
- Token->CallBack (NULL, NULL, EFI_OUT_OF_RESOURCES, Token->Context);\r
-\r
- UdpIoFreeRxToken (Token);\r
- return;\r
- }\r
+ if (RxToken->UdpIo->UdpVersion == UDP_IO_UDP4_VERSION) {\r
+\r
+ Netbuf = NetbufFromExt (\r
+ (NET_FRAGMENT *)((EFI_UDP4_RECEIVE_DATA *) RxData)->FragmentTable,\r
+ ((EFI_UDP4_RECEIVE_DATA *) RxData)->FragmentCount,\r
+ 0,\r
+ (UINT32) RxToken->HeadLen,\r
+ UdpIoRecycleDgram,\r
+ RxToken\r
+ );\r
+\r
+ if (Netbuf == NULL) {\r
+ gBS->SignalEvent (((EFI_UDP4_RECEIVE_DATA *) RxData)->RecycleSignal);\r
+ RxToken->CallBack (NULL, NULL, EFI_OUT_OF_RESOURCES, RxToken->Context);\r
+\r
+ UdpIoFreeRxToken (RxToken);\r
+ return;\r
+ }\r
+\r
+ Session = &((EFI_UDP4_RECEIVE_DATA *) RxData)->UdpSession;\r
+ EndPoint.LocalPort = ((EFI_UDP4_SESSION_DATA *) Session)->DestinationPort;\r
+ EndPoint.RemotePort = ((EFI_UDP4_SESSION_DATA *) Session)->SourcePort;\r
+\r
+ CopyMem (\r
+ &EndPoint.LocalAddr,\r
+ &((EFI_UDP4_SESSION_DATA *) Session)->DestinationAddress,\r
+ sizeof (EFI_IPv4_ADDRESS)\r
+ );\r
+\r
+ CopyMem (\r
+ &EndPoint.RemoteAddr,\r
+ &((EFI_UDP4_SESSION_DATA *) Session)->SourceAddress,\r
+ sizeof (EFI_IPv4_ADDRESS)\r
+ );\r
+\r
+ EndPoint.LocalAddr.Addr[0] = NTOHL (EndPoint.LocalAddr.Addr[0]);\r
+ EndPoint.RemoteAddr.Addr[0] = NTOHL (EndPoint.RemoteAddr.Addr[0]);\r
+ } else {\r
+\r
+ Netbuf = NetbufFromExt (\r
+ (NET_FRAGMENT *)((EFI_UDP6_RECEIVE_DATA *) RxData)->FragmentTable,\r
+ ((EFI_UDP6_RECEIVE_DATA *) RxData)->FragmentCount,\r
+ 0,\r
+ (UINT32) RxToken->HeadLen,\r
+ UdpIoRecycleDgram,\r
+ RxToken\r
+ );\r
+\r
+ if (Netbuf == NULL) {\r
+ gBS->SignalEvent (((EFI_UDP6_RECEIVE_DATA *) RxData)->RecycleSignal);\r
+ RxToken->CallBack (NULL, NULL, EFI_OUT_OF_RESOURCES, RxToken->Context);\r
+\r
+ UdpIoFreeRxToken (RxToken);\r
+ return;\r
+ }\r
+\r
+ Session = &((EFI_UDP6_RECEIVE_DATA *) RxData)->UdpSession;\r
+ EndPoint.LocalPort = ((EFI_UDP6_SESSION_DATA *) Session)->DestinationPort;\r
+ EndPoint.RemotePort = ((EFI_UDP6_SESSION_DATA *) Session)->SourcePort;\r