1c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* 2c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * INET An implementation of the TCP/IP protocol suite for the LINUX 3c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * operating system. INET is implemented using the BSD Socket 4c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * interface as the means of communication with the user level. 5c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * 6c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * Definitions for the ICMP protocol. 7c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * 8c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * Version: @(#)icmp.h 1.0.3 04/28/93 9c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * 10c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * Author: Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG> 11c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * 12c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * This program is free software; you can redistribute it and/or 13c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * modify it under the terms of the GNU General Public License 14c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * as published by the Free Software Foundation; either version 15c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * 2 of the License, or (at your option) any later version. 16c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru */ 17c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef _LINUX_ICMP_H 18c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define _LINUX_ICMP_H 19c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 20c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#include <linux/types.h> 21c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 22c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define ICMP_ECHOREPLY 0 /* Echo Reply */ 23c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define ICMP_DEST_UNREACH 3 /* Destination Unreachable */ 24c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define ICMP_SOURCE_QUENCH 4 /* Source Quench */ 25c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define ICMP_REDIRECT 5 /* Redirect (change route) */ 26c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define ICMP_ECHO 8 /* Echo Request */ 27c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define ICMP_TIME_EXCEEDED 11 /* Time Exceeded */ 28c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define ICMP_PARAMETERPROB 12 /* Parameter Problem */ 29c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define ICMP_TIMESTAMP 13 /* Timestamp Request */ 30c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define ICMP_TIMESTAMPREPLY 14 /* Timestamp Reply */ 31c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define ICMP_INFO_REQUEST 15 /* Information Request */ 32c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define ICMP_INFO_REPLY 16 /* Information Reply */ 33c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define ICMP_ADDRESS 17 /* Address Mask Request */ 34c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define ICMP_ADDRESSREPLY 18 /* Address Mask Reply */ 35c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define NR_ICMP_TYPES 18 36c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 37c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 38c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* Codes for UNREACH. */ 39c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define ICMP_NET_UNREACH 0 /* Network Unreachable */ 40c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define ICMP_HOST_UNREACH 1 /* Host Unreachable */ 41c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define ICMP_PROT_UNREACH 2 /* Protocol Unreachable */ 42c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define ICMP_PORT_UNREACH 3 /* Port Unreachable */ 43c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define ICMP_FRAG_NEEDED 4 /* Fragmentation Needed/DF set */ 44c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define ICMP_SR_FAILED 5 /* Source Route failed */ 45c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define ICMP_NET_UNKNOWN 6 46c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define ICMP_HOST_UNKNOWN 7 47c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define ICMP_HOST_ISOLATED 8 48c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define ICMP_NET_ANO 9 49c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define ICMP_HOST_ANO 10 50c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define ICMP_NET_UNR_TOS 11 51c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define ICMP_HOST_UNR_TOS 12 52c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define ICMP_PKT_FILTERED 13 /* Packet filtered */ 53c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define ICMP_PREC_VIOLATION 14 /* Precedence violation */ 54c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define ICMP_PREC_CUTOFF 15 /* Precedence cut off */ 55c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define NR_ICMP_UNREACH 15 /* instead of hardcoding immediate value */ 56c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 57c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* Codes for REDIRECT. */ 58c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define ICMP_REDIR_NET 0 /* Redirect Net */ 59c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define ICMP_REDIR_HOST 1 /* Redirect Host */ 60c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define ICMP_REDIR_NETTOS 2 /* Redirect Net for TOS */ 61c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define ICMP_REDIR_HOSTTOS 3 /* Redirect Host for TOS */ 62c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 63c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* Codes for TIME_EXCEEDED. */ 64c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define ICMP_EXC_TTL 0 /* TTL count exceeded */ 65c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define ICMP_EXC_FRAGTIME 1 /* Fragment Reass time exceeded */ 66c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 67c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 68c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct icmphdr { 69c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u8 type; 70c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u8 code; 71c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u16 checksum; 72c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru union { 73c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct { 74c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u16 id; 75c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u16 sequence; 76c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru } echo; 77c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 gateway; 78c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru struct { 79c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u16 __unused; 80c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u16 mtu; 81c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru } frag; 82c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru } un; 83c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 84c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 85c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* 86c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * constants for (set|get)sockopt 87c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru */ 88c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 89c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define ICMP_FILTER 1 90c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 91c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct icmp_filter { 92c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru __u32 data; 93c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru}; 94c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 95c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru 96c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif /* _LINUX_ICMP_H */ 97