\r
#include "Ip6Impl.h"\r
\r
-EFI_IP6_ICMP_TYPE mIp6SupportedIcmp[23] = {\r
-\r
+EFI_IP6_ICMP_TYPE mIp6SupportedIcmp[23] = {\r
{\r
ICMP_V6_DEST_UNREACHABLE,\r
ICMP_V6_NO_ROUTE_TO_DEST\r
**/\r
EFI_STATUS\r
Ip6IcmpReplyEcho (\r
- IN IP6_SERVICE *IpSb,\r
- IN EFI_IP6_HEADER *Head,\r
- IN NET_BUF *Packet\r
+ IN IP6_SERVICE *IpSb,\r
+ IN EFI_IP6_HEADER *Head,\r
+ IN NET_BUF *Packet\r
)\r
{\r
- IP6_ICMP_INFORMATION_HEAD *Icmp;\r
- NET_BUF *Data;\r
- EFI_STATUS Status;\r
- EFI_IP6_HEADER ReplyHead;\r
+ IP6_ICMP_INFORMATION_HEAD *Icmp;\r
+ NET_BUF *Data;\r
+ EFI_STATUS Status;\r
+ EFI_IP6_HEADER ReplyHead;\r
\r
Status = EFI_OUT_OF_RESOURCES;\r
//\r
// use specific destination. See RFC1122. SRR/RR option\r
// update is omitted.\r
//\r
- Icmp = (IP6_ICMP_INFORMATION_HEAD *) NetbufGetByte (Data, 0, NULL);\r
+ Icmp = (IP6_ICMP_INFORMATION_HEAD *)NetbufGetByte (Data, 0, NULL);\r
if (Icmp == NULL) {\r
NetbufFree (Data);\r
goto Exit;\r
//\r
ZeroMem (&ReplyHead, sizeof (EFI_IP6_HEADER));\r
\r
- ReplyHead.PayloadLength = HTONS ((UINT16) (Packet->TotalSize));\r
- ReplyHead.NextHeader = IP6_ICMP;\r
- ReplyHead.HopLimit = IpSb->CurHopLimit;\r
+ ReplyHead.PayloadLength = HTONS ((UINT16)(Packet->TotalSize));\r
+ ReplyHead.NextHeader = IP6_ICMP;\r
+ ReplyHead.HopLimit = IpSb->CurHopLimit;\r
IP6_COPY_ADDRESS (&ReplyHead.DestinationAddress, &Head->SourceAddress);\r
\r
if (Ip6IsOneOfSetAddress (IpSb, &Head->DestinationAddress, NULL, NULL)) {\r
**/\r
EFI_STATUS\r
Ip6ProcessPacketTooBig (\r
- IN IP6_SERVICE *IpSb,\r
- IN EFI_IP6_HEADER *Head,\r
- IN NET_BUF *Packet\r
+ IN IP6_SERVICE *IpSb,\r
+ IN EFI_IP6_HEADER *Head,\r
+ IN NET_BUF *Packet\r
)\r
{\r
- IP6_ICMP_ERROR_HEAD Icmp;\r
- UINT32 Mtu;\r
- IP6_ROUTE_ENTRY *RouteEntry;\r
- EFI_IPv6_ADDRESS *DestAddress;\r
+ IP6_ICMP_ERROR_HEAD Icmp;\r
+ UINT32 Mtu;\r
+ IP6_ROUTE_ENTRY *RouteEntry;\r
+ EFI_IPv6_ADDRESS *DestAddress;\r
\r
- NetbufCopy (Packet, 0, sizeof (Icmp), (UINT8 *) &Icmp);\r
+ NetbufCopy (Packet, 0, sizeof (Icmp), (UINT8 *)&Icmp);\r
Mtu = NTOHL (Icmp.Fourth);\r
DestAddress = &Icmp.IpHead.DestinationAddress;\r
\r
**/\r
EFI_STATUS\r
Ip6ProcessIcmpError (\r
- IN IP6_SERVICE *IpSb,\r
- IN EFI_IP6_HEADER *Head,\r
- IN NET_BUF *Packet\r
+ IN IP6_SERVICE *IpSb,\r
+ IN EFI_IP6_HEADER *Head,\r
+ IN NET_BUF *Packet\r
)\r
{\r
- IP6_ICMP_ERROR_HEAD Icmp;\r
+ IP6_ICMP_ERROR_HEAD Icmp;\r
\r
//\r
// Check the validity of the packet\r
goto DROP;\r
}\r
\r
- NetbufCopy (Packet, 0, sizeof (Icmp), (UINT8 *) &Icmp);\r
+ NetbufCopy (Packet, 0, sizeof (Icmp), (UINT8 *)&Icmp);\r
if (Icmp.Head.Type == ICMP_V6_PACKET_TOO_BIG) {\r
return Ip6ProcessPacketTooBig (IpSb, Head, Packet);\r
}\r
**/\r
EFI_STATUS\r
Ip6ProcessIcmpInformation (\r
- IN IP6_SERVICE *IpSb,\r
- IN EFI_IP6_HEADER *Head,\r
- IN NET_BUF *Packet\r
+ IN IP6_SERVICE *IpSb,\r
+ IN EFI_IP6_HEADER *Head,\r
+ IN NET_BUF *Packet\r
)\r
{\r
- IP6_ICMP_INFORMATION_HEAD Icmp;\r
- EFI_STATUS Status;\r
+ IP6_ICMP_INFORMATION_HEAD Icmp;\r
+ EFI_STATUS Status;\r
\r
NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE);\r
NET_CHECK_SIGNATURE (Packet, NET_BUF_SIGNATURE);\r
ASSERT (Head != NULL);\r
\r
- NetbufCopy (Packet, 0, sizeof (Icmp), (UINT8 *) &Icmp);\r
+ NetbufCopy (Packet, 0, sizeof (Icmp), (UINT8 *)&Icmp);\r
Status = EFI_INVALID_PARAMETER;\r
\r
switch (Icmp.Head.Type) {\r
- case ICMP_V6_ECHO_REQUEST:\r
- //\r
- // If ICMPv6 echo, reply it\r
- //\r
- if (Icmp.Head.Code == 0) {\r
- Status = Ip6IcmpReplyEcho (IpSb, Head, Packet);\r
- }\r
- break;\r
- case ICMP_V6_LISTENER_QUERY:\r
- Status = Ip6ProcessMldQuery (IpSb, Head, Packet);\r
- break;\r
- case ICMP_V6_LISTENER_REPORT:\r
- case ICMP_V6_LISTENER_REPORT_2:\r
- Status = Ip6ProcessMldReport (IpSb, Head, Packet);\r
- break;\r
- case ICMP_V6_NEIGHBOR_SOLICIT:\r
- Status = Ip6ProcessNeighborSolicit (IpSb, Head, Packet);\r
- break;\r
- case ICMP_V6_NEIGHBOR_ADVERTISE:\r
- Status = Ip6ProcessNeighborAdvertise (IpSb, Head, Packet);\r
- break;\r
- case ICMP_V6_ROUTER_ADVERTISE:\r
- Status = Ip6ProcessRouterAdvertise (IpSb, Head, Packet);\r
- break;\r
- case ICMP_V6_REDIRECT:\r
- Status = Ip6ProcessRedirect (IpSb, Head, Packet);\r
- break;\r
- case ICMP_V6_ECHO_REPLY:\r
- Status = Ip6Demultiplex (IpSb, Head, Packet);\r
- break;\r
- default:\r
- Status = EFI_INVALID_PARAMETER;\r
- break;\r
+ case ICMP_V6_ECHO_REQUEST:\r
+ //\r
+ // If ICMPv6 echo, reply it\r
+ //\r
+ if (Icmp.Head.Code == 0) {\r
+ Status = Ip6IcmpReplyEcho (IpSb, Head, Packet);\r
+ }\r
+\r
+ break;\r
+ case ICMP_V6_LISTENER_QUERY:\r
+ Status = Ip6ProcessMldQuery (IpSb, Head, Packet);\r
+ break;\r
+ case ICMP_V6_LISTENER_REPORT:\r
+ case ICMP_V6_LISTENER_REPORT_2:\r
+ Status = Ip6ProcessMldReport (IpSb, Head, Packet);\r
+ break;\r
+ case ICMP_V6_NEIGHBOR_SOLICIT:\r
+ Status = Ip6ProcessNeighborSolicit (IpSb, Head, Packet);\r
+ break;\r
+ case ICMP_V6_NEIGHBOR_ADVERTISE:\r
+ Status = Ip6ProcessNeighborAdvertise (IpSb, Head, Packet);\r
+ break;\r
+ case ICMP_V6_ROUTER_ADVERTISE:\r
+ Status = Ip6ProcessRouterAdvertise (IpSb, Head, Packet);\r
+ break;\r
+ case ICMP_V6_REDIRECT:\r
+ Status = Ip6ProcessRedirect (IpSb, Head, Packet);\r
+ break;\r
+ case ICMP_V6_ECHO_REPLY:\r
+ Status = Ip6Demultiplex (IpSb, Head, Packet);\r
+ break;\r
+ default:\r
+ Status = EFI_INVALID_PARAMETER;\r
+ break;\r
}\r
\r
return Status;\r
**/\r
EFI_STATUS\r
Ip6IcmpHandle (\r
- IN IP6_SERVICE *IpSb,\r
- IN EFI_IP6_HEADER *Head,\r
- IN NET_BUF *Packet\r
+ IN IP6_SERVICE *IpSb,\r
+ IN EFI_IP6_HEADER *Head,\r
+ IN NET_BUF *Packet\r
)\r
{\r
- IP6_ICMP_HEAD Icmp;\r
- UINT16 PseudoCheckSum;\r
- UINT16 CheckSum;\r
+ IP6_ICMP_HEAD Icmp;\r
+ UINT16 PseudoCheckSum;\r
+ UINT16 CheckSum;\r
\r
//\r
// Check the validity of the incoming packet.\r
goto DROP;\r
}\r
\r
- NetbufCopy (Packet, 0, sizeof (Icmp), (UINT8 *) &Icmp);\r
+ NetbufCopy (Packet, 0, sizeof (Icmp), (UINT8 *)&Icmp);\r
\r
//\r
// Make sure checksum is valid.\r
**/\r
VOID\r
Ip6GetPrefix (\r
- IN UINT8 PrefixLength,\r
- IN OUT EFI_IPv6_ADDRESS *Prefix\r
+ IN UINT8 PrefixLength,\r
+ IN OUT EFI_IPv6_ADDRESS *Prefix\r
)\r
{\r
- UINT8 Byte;\r
- UINT8 Bit;\r
- UINT8 Mask;\r
- UINT8 Value;\r
+ UINT8 Byte;\r
+ UINT8 Bit;\r
+ UINT8 Mask;\r
+ UINT8 Value;\r
\r
ASSERT ((Prefix != NULL) && (PrefixLength < IP6_PREFIX_MAX));\r
\r
if (PrefixLength == 0) {\r
ZeroMem (Prefix, sizeof (EFI_IPv6_ADDRESS));\r
- return ;\r
+ return;\r
}\r
\r
if (PrefixLength >= IP6_PREFIX_MAX) {\r
- return ;\r
+ return;\r
}\r
\r
- Byte = (UINT8) (PrefixLength / 8);\r
- Bit = (UINT8) (PrefixLength % 8);\r
+ Byte = (UINT8)(PrefixLength / 8);\r
+ Bit = (UINT8)(PrefixLength % 8);\r
Value = Prefix->Addr[Byte];\r
\r
if (Byte > 0) {\r
}\r
\r
if (Bit > 0) {\r
- Mask = (UINT8) (0xFF << (8 - Bit));\r
- Prefix->Addr[Byte] = (UINT8) (Value & Mask);\r
+ Mask = (UINT8)(0xFF << (8 - Bit));\r
+ Prefix->Addr[Byte] = (UINT8)(Value & Mask);\r
}\r
-\r
}\r
\r
/**\r
**/\r
BOOLEAN\r
Ip6IsAnycast (\r
- IN IP6_SERVICE *IpSb,\r
- IN EFI_IPv6_ADDRESS *DestinationAddress\r
+ IN IP6_SERVICE *IpSb,\r
+ IN EFI_IPv6_ADDRESS *DestinationAddress\r
)\r
{\r
- IP6_PREFIX_LIST_ENTRY *PrefixEntry;\r
- EFI_IPv6_ADDRESS Prefix;\r
- BOOLEAN Flag;\r
+ IP6_PREFIX_LIST_ENTRY *PrefixEntry;\r
+ EFI_IPv6_ADDRESS Prefix;\r
+ BOOLEAN Flag;\r
\r
ZeroMem (&Prefix, sizeof (EFI_IPv6_ADDRESS));\r
\r
**/\r
EFI_STATUS\r
Ip6SendIcmpError (\r
- IN IP6_SERVICE *IpSb,\r
- IN NET_BUF *Packet,\r
- IN EFI_IPv6_ADDRESS *SourceAddress OPTIONAL,\r
- IN EFI_IPv6_ADDRESS *DestinationAddress,\r
- IN UINT8 Type,\r
- IN UINT8 Code,\r
- IN UINT32 *Pointer OPTIONAL\r
+ IN IP6_SERVICE *IpSb,\r
+ IN NET_BUF *Packet,\r
+ IN EFI_IPv6_ADDRESS *SourceAddress OPTIONAL,\r
+ IN EFI_IPv6_ADDRESS *DestinationAddress,\r
+ IN UINT8 Type,\r
+ IN UINT8 Code,\r
+ IN UINT32 *Pointer OPTIONAL\r
)\r
{\r
- UINT32 PacketLen;\r
- NET_BUF *ErrorMsg;\r
- UINT16 PayloadLen;\r
- EFI_IP6_HEADER Head;\r
- IP6_ICMP_INFORMATION_HEAD *IcmpHead;\r
- UINT8 *ErrorBody;\r
+ UINT32 PacketLen;\r
+ NET_BUF *ErrorMsg;\r
+ UINT16 PayloadLen;\r
+ EFI_IP6_HEADER Head;\r
+ IP6_ICMP_INFORMATION_HEAD *IcmpHead;\r
+ UINT8 *ErrorBody;\r
\r
if (DestinationAddress == NULL) {\r
return EFI_INVALID_PARAMETER;\r
if (NetIp6IsUnspecifiedAddr (DestinationAddress) ||\r
IP6_IS_MULTICAST (DestinationAddress) ||\r
Ip6IsAnycast (IpSb, DestinationAddress)\r
- ) {\r
+ )\r
+ {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
switch (Type) {\r
- case ICMP_V6_DEST_UNREACHABLE:\r
- case ICMP_V6_TIME_EXCEEDED:\r
- break;\r
+ case ICMP_V6_DEST_UNREACHABLE:\r
+ case ICMP_V6_TIME_EXCEEDED:\r
+ break;\r
\r
- case ICMP_V6_PARAMETER_PROBLEM:\r
- if (Pointer == NULL) {\r
- return EFI_INVALID_PARAMETER;\r
- }\r
+ case ICMP_V6_PARAMETER_PROBLEM:\r
+ if (Pointer == NULL) {\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
\r
- break;\r
+ break;\r
\r
- default:\r
- return EFI_INVALID_PARAMETER;\r
+ default:\r
+ return EFI_INVALID_PARAMETER;\r
}\r
\r
PacketLen = sizeof (IP6_ICMP_ERROR_HEAD) + Packet->TotalSize;\r
return EFI_OUT_OF_RESOURCES;\r
}\r
\r
- PayloadLen = (UINT16) (PacketLen - sizeof (EFI_IP6_HEADER));\r
+ PayloadLen = (UINT16)(PacketLen - sizeof (EFI_IP6_HEADER));\r
\r
//\r
// Create the basic IPv6 header.\r
//\r
ZeroMem (&Head, sizeof (EFI_IP6_HEADER));\r
\r
- Head.PayloadLength = HTONS (PayloadLen);\r
- Head.NextHeader = IP6_ICMP;\r
- Head.HopLimit = IpSb->CurHopLimit;\r
+ Head.PayloadLength = HTONS (PayloadLen);\r
+ Head.NextHeader = IP6_ICMP;\r
+ Head.HopLimit = IpSb->CurHopLimit;\r
\r
if (SourceAddress != NULL) {\r
IP6_COPY_ADDRESS (&Head.SourceAddress, SourceAddress);\r
//\r
// Fill in the ICMP error message head\r
//\r
- IcmpHead = (IP6_ICMP_INFORMATION_HEAD *) NetbufAllocSpace (ErrorMsg, sizeof (IP6_ICMP_INFORMATION_HEAD), FALSE);\r
+ IcmpHead = (IP6_ICMP_INFORMATION_HEAD *)NetbufAllocSpace (ErrorMsg, sizeof (IP6_ICMP_INFORMATION_HEAD), FALSE);\r
if (IcmpHead == NULL) {\r
NetbufFree (ErrorMsg);\r
return EFI_OUT_OF_RESOURCES;\r
// Fill in the ICMP error message body\r
//\r
PayloadLen -= sizeof (IP6_ICMP_INFORMATION_HEAD);\r
- ErrorBody = NetbufAllocSpace (ErrorMsg, PayloadLen, FALSE);\r
+ ErrorBody = NetbufAllocSpace (ErrorMsg, PayloadLen, FALSE);\r
if (ErrorBody != NULL) {\r
ZeroMem (ErrorBody, PayloadLen);\r
NetbufCopy (Packet, 0, PayloadLen, ErrorBody);\r
//\r
return Ip6Output (IpSb, NULL, NULL, ErrorMsg, &Head, NULL, 0, Ip6SysPacketSent, NULL);\r
}\r
-\r