summaryrefslogtreecommitdiffstats
path: root/NetworkPkg/Ip4Dxe/Ip4Output.c
diff options
context:
space:
mode:
Diffstat (limited to 'NetworkPkg/Ip4Dxe/Ip4Output.c')
-rw-r--r--NetworkPkg/Ip4Dxe/Ip4Output.c148
1 files changed, 70 insertions, 78 deletions
diff --git a/NetworkPkg/Ip4Dxe/Ip4Output.c b/NetworkPkg/Ip4Dxe/Ip4Output.c
index c161b72542..b8da0b0511 100644
--- a/NetworkPkg/Ip4Dxe/Ip4Output.c
+++ b/NetworkPkg/Ip4Dxe/Ip4Output.c
@@ -10,7 +10,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
UINT16 mIp4Id;
-
/**
Prepend an IP4 head to the Packet. It will copy the options and
build the IP4 header fields. Used for IP4 fragmentation.
@@ -31,16 +30,16 @@ UINT16 mIp4Id;
**/
EFI_STATUS
Ip4PrependHead (
- IN OUT NET_BUF *Packet,
- IN IP4_HEAD *Head,
- IN UINT8 *Option,
- IN UINT32 OptLen
+ IN OUT NET_BUF *Packet,
+ IN IP4_HEAD *Head,
+ IN UINT8 *Option,
+ IN UINT32 OptLen
)
{
- UINT32 HeadLen;
- UINT32 Len;
- IP4_HEAD *PacketHead;
- BOOLEAN FirstFragment;
+ UINT32 HeadLen;
+ UINT32 Len;
+ IP4_HEAD *PacketHead;
+ BOOLEAN FirstFragment;
//
// Prepend the options: first get the option length, then copy it over.
@@ -53,35 +52,34 @@ Ip4PrependHead (
HeadLen = IP4_MIN_HEADLEN + Len;
ASSERT (((Len % 4) == 0) && (HeadLen <= IP4_MAX_HEADLEN));
- PacketHead = (IP4_HEAD *) NetbufAllocSpace (Packet, HeadLen, NET_BUF_HEAD);
+ PacketHead = (IP4_HEAD *)NetbufAllocSpace (Packet, HeadLen, NET_BUF_HEAD);
if (PacketHead == NULL) {
return EFI_BAD_BUFFER_SIZE;
}
- Ip4CopyOption (Option, OptLen, FirstFragment, (UINT8 *) (PacketHead + 1), &Len);
+ Ip4CopyOption (Option, OptLen, FirstFragment, (UINT8 *)(PacketHead + 1), &Len);
//
// Set the head up, convert the host byte order to network byte order
//
- PacketHead->Ver = 4;
- PacketHead->HeadLen = (UINT8) (HeadLen >> 2);
- PacketHead->Tos = Head->Tos;
- PacketHead->TotalLen = HTONS ((UINT16) Packet->TotalSize);
- PacketHead->Id = HTONS (Head->Id);
- PacketHead->Fragment = HTONS (Head->Fragment);
- PacketHead->Checksum = 0;
- PacketHead->Ttl = Head->Ttl;
- PacketHead->Protocol = Head->Protocol;
- PacketHead->Src = HTONL (Head->Src);
- PacketHead->Dst = HTONL (Head->Dst);
- PacketHead->Checksum = (UINT16) (~NetblockChecksum ((UINT8 *) PacketHead, HeadLen));
-
- Packet->Ip.Ip4 = PacketHead;
+ PacketHead->Ver = 4;
+ PacketHead->HeadLen = (UINT8)(HeadLen >> 2);
+ PacketHead->Tos = Head->Tos;
+ PacketHead->TotalLen = HTONS ((UINT16)Packet->TotalSize);
+ PacketHead->Id = HTONS (Head->Id);
+ PacketHead->Fragment = HTONS (Head->Fragment);
+ PacketHead->Checksum = 0;
+ PacketHead->Ttl = Head->Ttl;
+ PacketHead->Protocol = Head->Protocol;
+ PacketHead->Src = HTONL (Head->Src);
+ PacketHead->Dst = HTONL (Head->Dst);
+ PacketHead->Checksum = (UINT16)(~NetblockChecksum ((UINT8 *)PacketHead, HeadLen));
+
+ Packet->Ip.Ip4 = PacketHead;
return EFI_SUCCESS;
}
-
/**
Select an interface to send the packet generated in the IP4 driver
itself, that is, not by the requests of IP4 child's consumer. Such
@@ -97,14 +95,14 @@ Ip4PrependHead (
**/
IP4_INTERFACE *
Ip4SelectInterface (
- IN IP4_SERVICE *IpSb,
- IN IP4_ADDR Dst,
- IN IP4_ADDR Src
+ IN IP4_SERVICE *IpSb,
+ IN IP4_ADDR Dst,
+ IN IP4_ADDR Src
)
{
- IP4_INTERFACE *IpIf;
- IP4_INTERFACE *Selected;
- LIST_ENTRY *Entry;
+ IP4_INTERFACE *IpIf;
+ IP4_INTERFACE *Selected;
+ LIST_ENTRY *Entry;
//
// Select the interface the Dst is on if one of the connected
@@ -143,7 +141,6 @@ Ip4SelectInterface (
return Selected;
}
-
/**
The default callback function for system generated packet.
It will free the packet.
@@ -159,17 +156,16 @@ Ip4SelectInterface (
**/
VOID
Ip4SysPacketSent (
- IP4_PROTOCOL *Ip4Instance,
- NET_BUF *Packet,
- EFI_STATUS IoStatus,
- UINT32 LinkFlag,
- VOID *Context
+ IP4_PROTOCOL *Ip4Instance,
+ NET_BUF *Packet,
+ EFI_STATUS IoStatus,
+ UINT32 LinkFlag,
+ VOID *Context
)
{
NetbufFree (Packet);
}
-
/**
Transmit an IP4 packet. The packet comes either from the IP4
child's consumer (IpInstance != NULL) or the IP4 driver itself
@@ -207,29 +203,29 @@ Ip4SysPacketSent (
**/
EFI_STATUS
Ip4Output (
- IN IP4_SERVICE *IpSb,
- IN IP4_PROTOCOL *IpInstance OPTIONAL,
- IN NET_BUF *Packet,
- IN IP4_HEAD *Head,
- IN UINT8 *Option,
- IN UINT32 OptLen,
- IN IP4_ADDR GateWay,
- IN IP4_FRAME_CALLBACK Callback,
- IN VOID *Context
+ IN IP4_SERVICE *IpSb,
+ IN IP4_PROTOCOL *IpInstance OPTIONAL,
+ IN NET_BUF *Packet,
+ IN IP4_HEAD *Head,
+ IN UINT8 *Option,
+ IN UINT32 OptLen,
+ IN IP4_ADDR GateWay,
+ IN IP4_FRAME_CALLBACK Callback,
+ IN VOID *Context
)
{
- IP4_INTERFACE *IpIf;
- IP4_ROUTE_CACHE_ENTRY *CacheEntry;
- IP4_ADDR Dest;
- EFI_STATUS Status;
- NET_BUF *Fragment;
- UINT32 Index;
- UINT32 HeadLen;
- UINT32 PacketLen;
- UINT32 Offset;
- UINT32 Mtu;
- UINT32 Num;
- BOOLEAN RawData;
+ IP4_INTERFACE *IpIf;
+ IP4_ROUTE_CACHE_ENTRY *CacheEntry;
+ IP4_ADDR Dest;
+ EFI_STATUS Status;
+ NET_BUF *Fragment;
+ UINT32 Index;
+ UINT32 HeadLen;
+ UINT32 PacketLen;
+ UINT32 Offset;
+ UINT32 Mtu;
+ UINT32 Num;
+ BOOLEAN RawData;
//
// Select an interface/source for system packet, application
@@ -256,12 +252,12 @@ Ip4Output (
HeadLen = sizeof (IP4_HEAD) + ((OptLen + 3) & (~0x03));
if ((IpInstance != NULL) && IpInstance->ConfigData.RawData) {
- RawData = TRUE;
+ RawData = TRUE;
} else {
- Head->HeadLen = (UINT8) (HeadLen >> 2);
- Head->Id = mIp4Id++;
- Head->Ver = 4;
- RawData = FALSE;
+ Head->HeadLen = (UINT8)(HeadLen >> 2);
+ Head->Id = mIp4Id++;
+ Head->Ver = 4;
+ RawData = FALSE;
}
//
@@ -277,7 +273,7 @@ Ip4Output (
Context
);
- if (EFI_ERROR(Status)) {
+ if (EFI_ERROR (Status)) {
return Status;
}
@@ -289,7 +285,6 @@ Ip4Output (
// it is local broadcast.
//
GateWay = IP4_ALLONE_ADDRESS;
-
} else if (IP4_IS_MULTICAST (Dest)) {
//
// Set the gateway to the destination if it is an multicast
@@ -297,7 +292,6 @@ Ip4Output (
// broadcast and multicast.
//
GateWay = Head->Dst;
-
} else if (GateWay == IP4_ALLZERO_ADDRESS) {
//
// Route the packet unless overridden, that is, GateWay isn't zero.
@@ -343,8 +337,8 @@ Ip4Output (
// fragment is NOT sent in this loop. First compute how many
// fragments there are.
//
- Mtu = (Mtu - HeadLen) & (~0x07);
- Num = (Packet->TotalSize + Mtu - 1) / Mtu;
+ Mtu = (Mtu - HeadLen) & (~0x07);
+ Num = (Packet->TotalSize + Mtu - 1) / Mtu;
//
// Initialize the packet length and Offset. Other than the last
@@ -437,7 +431,6 @@ ON_ERROR:
return Status;
}
-
/**
The filter function to find a packet and all its fragments.
The packet's fragments have their Context set to the packet.
@@ -451,18 +444,17 @@ ON_ERROR:
**/
BOOLEAN
Ip4CancelPacketFragments (
- IN IP4_LINK_TX_TOKEN *Frame,
- IN VOID *Context
+ IN IP4_LINK_TX_TOKEN *Frame,
+ IN VOID *Context
)
{
- if ((Frame->Packet == (NET_BUF *) Context) || (Frame->Context == Context)) {
+ if ((Frame->Packet == (NET_BUF *)Context) || (Frame->Context == Context)) {
return TRUE;
}
return FALSE;
}
-
/**
Cancel the Packet and all its fragments.
@@ -473,9 +465,9 @@ Ip4CancelPacketFragments (
**/
VOID
Ip4CancelPacket (
- IN IP4_INTERFACE *IpIf,
- IN NET_BUF *Packet,
- IN EFI_STATUS IoStatus
+ IN IP4_INTERFACE *IpIf,
+ IN NET_BUF *Packet,
+ IN EFI_STATUS IoStatus
)
{
Ip4CancelFrames (IpIf, IoStatus, Ip4CancelPacketFragments, Packet);