\r
UINT16 mIp4Id;\r
\r
-\r
/**\r
Prepend an IP4 head to the Packet. It will copy the options and\r
build the IP4 header fields. Used for IP4 fragmentation.\r
**/\r
EFI_STATUS\r
Ip4PrependHead (\r
- IN OUT NET_BUF *Packet,\r
- IN IP4_HEAD *Head,\r
- IN UINT8 *Option,\r
- IN UINT32 OptLen\r
+ IN OUT NET_BUF *Packet,\r
+ IN IP4_HEAD *Head,\r
+ IN UINT8 *Option,\r
+ IN UINT32 OptLen\r
)\r
{\r
- UINT32 HeadLen;\r
- UINT32 Len;\r
- IP4_HEAD *PacketHead;\r
- BOOLEAN FirstFragment;\r
+ UINT32 HeadLen;\r
+ UINT32 Len;\r
+ IP4_HEAD *PacketHead;\r
+ BOOLEAN FirstFragment;\r
\r
//\r
// Prepend the options: first get the option length, then copy it over.\r
HeadLen = IP4_MIN_HEADLEN + Len;\r
ASSERT (((Len % 4) == 0) && (HeadLen <= IP4_MAX_HEADLEN));\r
\r
- PacketHead = (IP4_HEAD *) NetbufAllocSpace (Packet, HeadLen, NET_BUF_HEAD);\r
+ PacketHead = (IP4_HEAD *)NetbufAllocSpace (Packet, HeadLen, NET_BUF_HEAD);\r
\r
if (PacketHead == NULL) {\r
return EFI_BAD_BUFFER_SIZE;\r
}\r
\r
- Ip4CopyOption (Option, OptLen, FirstFragment, (UINT8 *) (PacketHead + 1), &Len);\r
+ Ip4CopyOption (Option, OptLen, FirstFragment, (UINT8 *)(PacketHead + 1), &Len);\r
\r
//\r
// Set the head up, convert the host byte order to network byte order\r
//\r
- PacketHead->Ver = 4;\r
- PacketHead->HeadLen = (UINT8) (HeadLen >> 2);\r
- PacketHead->Tos = Head->Tos;\r
- PacketHead->TotalLen = HTONS ((UINT16) Packet->TotalSize);\r
- PacketHead->Id = HTONS (Head->Id);\r
- PacketHead->Fragment = HTONS (Head->Fragment);\r
- PacketHead->Checksum = 0;\r
- PacketHead->Ttl = Head->Ttl;\r
- PacketHead->Protocol = Head->Protocol;\r
- PacketHead->Src = HTONL (Head->Src);\r
- PacketHead->Dst = HTONL (Head->Dst);\r
- PacketHead->Checksum = (UINT16) (~NetblockChecksum ((UINT8 *) PacketHead, HeadLen));\r
-\r
- Packet->Ip.Ip4 = PacketHead;\r
+ PacketHead->Ver = 4;\r
+ PacketHead->HeadLen = (UINT8)(HeadLen >> 2);\r
+ PacketHead->Tos = Head->Tos;\r
+ PacketHead->TotalLen = HTONS ((UINT16)Packet->TotalSize);\r
+ PacketHead->Id = HTONS (Head->Id);\r
+ PacketHead->Fragment = HTONS (Head->Fragment);\r
+ PacketHead->Checksum = 0;\r
+ PacketHead->Ttl = Head->Ttl;\r
+ PacketHead->Protocol = Head->Protocol;\r
+ PacketHead->Src = HTONL (Head->Src);\r
+ PacketHead->Dst = HTONL (Head->Dst);\r
+ PacketHead->Checksum = (UINT16)(~NetblockChecksum ((UINT8 *)PacketHead, HeadLen));\r
+\r
+ Packet->Ip.Ip4 = PacketHead;\r
return EFI_SUCCESS;\r
}\r
\r
-\r
/**\r
Select an interface to send the packet generated in the IP4 driver\r
itself, that is, not by the requests of IP4 child's consumer. Such\r
**/\r
IP4_INTERFACE *\r
Ip4SelectInterface (\r
- IN IP4_SERVICE *IpSb,\r
- IN IP4_ADDR Dst,\r
- IN IP4_ADDR Src\r
+ IN IP4_SERVICE *IpSb,\r
+ IN IP4_ADDR Dst,\r
+ IN IP4_ADDR Src\r
)\r
{\r
- IP4_INTERFACE *IpIf;\r
- IP4_INTERFACE *Selected;\r
- LIST_ENTRY *Entry;\r
+ IP4_INTERFACE *IpIf;\r
+ IP4_INTERFACE *Selected;\r
+ LIST_ENTRY *Entry;\r
\r
//\r
// Select the interface the Dst is on if one of the connected\r
return Selected;\r
}\r
\r
-\r
/**\r
The default callback function for system generated packet.\r
It will free the packet.\r
**/\r
VOID\r
Ip4SysPacketSent (\r
- IP4_PROTOCOL *Ip4Instance,\r
- NET_BUF *Packet,\r
- EFI_STATUS IoStatus,\r
- UINT32 LinkFlag,\r
- VOID *Context\r
+ IP4_PROTOCOL *Ip4Instance,\r
+ NET_BUF *Packet,\r
+ EFI_STATUS IoStatus,\r
+ UINT32 LinkFlag,\r
+ VOID *Context\r
)\r
{\r
NetbufFree (Packet);\r
}\r
\r
-\r
/**\r
Transmit an IP4 packet. The packet comes either from the IP4\r
child's consumer (IpInstance != NULL) or the IP4 driver itself\r
**/\r
EFI_STATUS\r
Ip4Output (\r
- IN IP4_SERVICE *IpSb,\r
- IN IP4_PROTOCOL *IpInstance OPTIONAL,\r
- IN NET_BUF *Packet,\r
- IN IP4_HEAD *Head,\r
- IN UINT8 *Option,\r
- IN UINT32 OptLen,\r
- IN IP4_ADDR GateWay,\r
- IN IP4_FRAME_CALLBACK Callback,\r
- IN VOID *Context\r
+ IN IP4_SERVICE *IpSb,\r
+ IN IP4_PROTOCOL *IpInstance OPTIONAL,\r
+ IN NET_BUF *Packet,\r
+ IN IP4_HEAD *Head,\r
+ IN UINT8 *Option,\r
+ IN UINT32 OptLen,\r
+ IN IP4_ADDR GateWay,\r
+ IN IP4_FRAME_CALLBACK Callback,\r
+ IN VOID *Context\r
)\r
{\r
- IP4_INTERFACE *IpIf;\r
- IP4_ROUTE_CACHE_ENTRY *CacheEntry;\r
- IP4_ADDR Dest;\r
- EFI_STATUS Status;\r
- NET_BUF *Fragment;\r
- UINT32 Index;\r
- UINT32 HeadLen;\r
- UINT32 PacketLen;\r
- UINT32 Offset;\r
- UINT32 Mtu;\r
- UINT32 Num;\r
- BOOLEAN RawData;\r
+ IP4_INTERFACE *IpIf;\r
+ IP4_ROUTE_CACHE_ENTRY *CacheEntry;\r
+ IP4_ADDR Dest;\r
+ EFI_STATUS Status;\r
+ NET_BUF *Fragment;\r
+ UINT32 Index;\r
+ UINT32 HeadLen;\r
+ UINT32 PacketLen;\r
+ UINT32 Offset;\r
+ UINT32 Mtu;\r
+ UINT32 Num;\r
+ BOOLEAN RawData;\r
\r
//\r
// Select an interface/source for system packet, application\r
HeadLen = sizeof (IP4_HEAD) + ((OptLen + 3) & (~0x03));\r
\r
if ((IpInstance != NULL) && IpInstance->ConfigData.RawData) {\r
- RawData = TRUE;\r
+ RawData = TRUE;\r
} else {\r
- Head->HeadLen = (UINT8) (HeadLen >> 2);\r
- Head->Id = mIp4Id++;\r
- Head->Ver = 4;\r
- RawData = FALSE;\r
+ Head->HeadLen = (UINT8)(HeadLen >> 2);\r
+ Head->Id = mIp4Id++;\r
+ Head->Ver = 4;\r
+ RawData = FALSE;\r
}\r
\r
//\r
Context\r
);\r
\r
- if (EFI_ERROR(Status)) {\r
+ if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
\r
// it is local broadcast.\r
//\r
GateWay = IP4_ALLONE_ADDRESS;\r
-\r
} else if (IP4_IS_MULTICAST (Dest)) {\r
//\r
// Set the gateway to the destination if it is an multicast\r
// broadcast and multicast.\r
//\r
GateWay = Head->Dst;\r
-\r
} else if (GateWay == IP4_ALLZERO_ADDRESS) {\r
//\r
// Route the packet unless overridden, that is, GateWay isn't zero.\r
// fragment is NOT sent in this loop. First compute how many\r
// fragments there are.\r
//\r
- Mtu = (Mtu - HeadLen) & (~0x07);\r
- Num = (Packet->TotalSize + Mtu - 1) / Mtu;\r
+ Mtu = (Mtu - HeadLen) & (~0x07);\r
+ Num = (Packet->TotalSize + Mtu - 1) / Mtu;\r
\r
//\r
// Initialize the packet length and Offset. Other than the last\r
return Status;\r
}\r
\r
-\r
/**\r
The filter function to find a packet and all its fragments.\r
The packet's fragments have their Context set to the packet.\r
**/\r
BOOLEAN\r
Ip4CancelPacketFragments (\r
- IN IP4_LINK_TX_TOKEN *Frame,\r
- IN VOID *Context\r
+ IN IP4_LINK_TX_TOKEN *Frame,\r
+ IN VOID *Context\r
)\r
{\r
- if ((Frame->Packet == (NET_BUF *) Context) || (Frame->Context == Context)) {\r
+ if ((Frame->Packet == (NET_BUF *)Context) || (Frame->Context == Context)) {\r
return TRUE;\r
}\r
\r
return FALSE;\r
}\r
\r
-\r
/**\r
Cancel the Packet and all its fragments.\r
\r
**/\r
VOID\r
Ip4CancelPacket (\r
- IN IP4_INTERFACE *IpIf,\r
- IN NET_BUF *Packet,\r
- IN EFI_STATUS IoStatus\r
+ IN IP4_INTERFACE *IpIf,\r
+ IN NET_BUF *Packet,\r
+ IN EFI_STATUS IoStatus\r
)\r
{\r
Ip4CancelFrames (IpIf, IoStatus, Ip4CancelPacketFragments, Packet);\r