X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=MdeModulePkg%2FUniversal%2FNetwork%2FIp4Dxe%2FIp4Icmp.h;h=922886a96e67a61886405779b77bb4c3631885f6;hp=f4641e2ef60908fa406e8375f31afb69327872ff;hb=c0fd7f734e2d33e22215899b40a47b843129541d;hpb=772db4bb33ae66fa20e39f786b5f80d107d450a5 diff --git a/MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Icmp.h b/MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Icmp.h index f4641e2ef6..922886a96e 100644 --- a/MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Icmp.h +++ b/MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Icmp.h @@ -1,99 +1,97 @@ -/** @file - -Copyright (c) 2005 - 2006, Intel Corporation -All rights reserved. This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - - -Module Name: - - Ip4Icmp.h - -Abstract: - - Header file for ICMP protocol. - - -**/ - -#ifndef __EFI_IP4_ICMP_H__ -#define __EFI_IP4_ICMP_H__ - -enum { - // - // ICMP type definations - // - ICMP_ECHO_REPLY = 0, - ICMP_DEST_UNREACHABLE = 3, - ICMP_SOURCE_QUENCH = 4, - ICMP_REDIRECT = 5, - ICMP_ECHO_REQUEST = 8, - ICMP_TIME_EXCEEDED = 11, - ICMP_PARAMETER_PROBLEM = 12, - ICMP_TIMESTAMP = 13, - ICMP_INFO_REQUEST = 15, - ICMP_INFO_REPLY = 16, - ICMP_TYPE_MAX = ICMP_INFO_REPLY, - - ICMP_DEFAULT_CODE = 0, - - // - // ICMP code definations for ICMP_DEST_UNREACHABLE - // - ICMP_NET_UNREACHABLE = 0, - ICMP_HOST_UNREACHABLE = 1, - ICMP_PROTO_UNREACHABLE = 2, // Host may generate - ICMP_PORT_UNREACHABLE = 3, // Host may generate - ICMP_FRAGMENT_FAILED = 4, - ICMP_SOURCEROUTE_FAILED = 5, // Host may generate - ICMP_NET_UNKNOWN = 6, - ICMP_HOST_UNKNOWN = 7, - ICMP_SOURCE_ISOLATED = 8, - ICMP_NET_PROHIBITED = 9, - ICMP_HOST_PROHIBITED = 10, - ICMP_NET_UNREACHABLE_TOS = 11, - ICMP_HOST_UNREACHABLE_TOS = 12, - - // - // ICMP code definations for ICMP_TIME_EXCEEDED - // - ICMP_TIMEOUT_IN_TRANSIT = 0, - ICMp_TIMEOUT_REASSEMBLE = 1, // Host may generate - - // - // ICMP code definations for ICMP_TIME_EXCEEDED - // - ICMP_NET_REDIRECT = 0, - ICMP_HOST_REDIRECT = 1, - ICMP_NET_TOS_REDIRECT = 2, - ICMP_HOST_TOS_REDIRECT = 3, - - // - // ICMP message classes, each class of ICMP message shares - // a common message format. INVALID_MESSAGE is only a flag. - // - ICMP_INVALID_MESSAGE = 0, - ICMP_ERROR_MESSAGE = 1, - ICMP_QUERY_MESSAGE = 2, -}; - -typedef struct { - UINT8 IcmpType; - UINT8 IcmpClass; -} IP4_ICMP_CLASS; - -extern IP4_ICMP_CLASS mIcmpClass[]; -extern EFI_IP4_ICMP_TYPE mIp4SupportedIcmp[]; - -EFI_STATUS -Ip4IcmpHandle ( - IN IP4_SERVICE *IpSb, - IN IP4_HEAD *Header, - IN NET_BUF *Packet - ); -#endif +/** @file + Header file for ICMP protocol. + +Copyright (c) 2005 - 2018, Intel Corporation. All rights reserved.
+SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef __EFI_IP4_ICMP_H__ +#define __EFI_IP4_ICMP_H__ + + // + // ICMP type definations + // +#define ICMP_ECHO_REPLY 0 +#define ICMP_DEST_UNREACHABLE 3 +#define ICMP_SOURCE_QUENCH 4 +#define ICMP_REDIRECT 5 +#define ICMP_ECHO_REQUEST 8 +#define ICMP_TIME_EXCEEDED 11 +#define ICMP_PARAMETER_PROBLEM 12 +#define ICMP_TIMESTAMP 13 +#define ICMP_INFO_REQUEST 15 +#define ICMP_INFO_REPLY 16 +#define ICMP_TYPE_MAX ICMP_INFO_REPLY + +#define ICMP_DEFAULT_CODE 0 + + // + // ICMP code definations for ICMP_DEST_UNREACHABLE + // +#define ICMP_NET_UNREACHABLE 0 +#define ICMP_HOST_UNREACHABLE 1 +#define ICMP_PROTO_UNREACHABLE 2 // Host may generate +#define ICMP_PORT_UNREACHABLE 3 // Host may generate +#define ICMP_FRAGMENT_FAILED 4 +#define ICMP_SOURCEROUTE_FAILED 5 // Host may generate +#define ICMP_NET_UNKNOWN 6 +#define ICMP_HOST_UNKNOWN 7 +#define ICMP_SOURCE_ISOLATED 8 +#define ICMP_NET_PROHIBITED 9 +#define ICMP_HOST_PROHIBITED 10 +#define ICMP_NET_UNREACHABLE_TOS 11 +#define ICMP_HOST_UNREACHABLE_TOS 12 + + // + // ICMP code definations for ICMP_TIME_EXCEEDED + // +#define ICMP_TIMEOUT_IN_TRANSIT 0 +#define ICMP_TIMEOUT_REASSEMBLE 1 // Host may generate + + // + // ICMP code definations for ICMP_TIME_EXCEEDED + // +#define ICMP_NET_REDIRECT 0 +#define ICMP_HOST_REDIRECT 1 +#define ICMP_NET_TOS_REDIRECT 2 +#define ICMP_HOST_TOS_REDIRECT 3 + + // + // ICMP message classes, each class of ICMP message shares + // a common message format. INVALID_MESSAGE is only a flag. + // +#define ICMP_INVALID_MESSAGE 0 +#define ICMP_ERROR_MESSAGE 1 +#define ICMP_QUERY_MESSAGE 2 + +typedef struct { + UINT8 IcmpType; + UINT8 IcmpClass; +} IP4_ICMP_CLASS; + +extern IP4_ICMP_CLASS mIcmpClass[]; +extern EFI_IP4_ICMP_TYPE mIp4SupportedIcmp[]; + +/** + Handle the ICMP packet. First validate the message format, + then according to the message types, process it as query or + error packet. + + @param[in] IpSb The IP4 service that receivd the packet. + @param[in] Head The IP4 head of the ICMP query packet. + @param[in] Packet The content of the ICMP query with IP4 head + removed. + + @retval EFI_INVALID_PARAMETER The packet is malformated. + @retval EFI_SUCCESS The ICMP message is successfully processed. + @retval Others Failed to handle ICMP packet. + +**/ +EFI_STATUS +Ip4IcmpHandle ( + IN IP4_SERVICE *IpSb, + IN IP4_HEAD *Head, + IN NET_BUF *Packet + ); +#endif