Subversion Repositories HelenOS

Rev

Rev 4720 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

/*
 * Copyright (c) 2009 Lukas Mejdrech
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * - Redistributions of source code must retain the above copyright
 *   notice, this list of conditions and the following disclaimer.
 * - Redistributions in binary form must reproduce the above copyright
 *   notice, this list of conditions and the following disclaimer in the
 *   documentation and/or other materials provided with the distribution.
 * - The name of the author may not be used to endorse or promote products
 *   derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

/** @addtogroup icmp
 *  @{
 */

/** @file
 *  ICMP types and codes according to the on-line IANA - ICMP Type Numbers - <http://http://www.iana.org/assignments/icmp-parameters>, cited September 14 2009.
 *  Names according to the linux src/include/linux/icmp.h header file.
 */

#ifndef __NET_ICMP_CODES_H__
#define __NET_ICMP_CODES_H__

/** ICMP type type definition.
 */
typedef uint8_t icmp_type_t;

/** ICMP code type definition.
 */
typedef uint8_t icmp_code_t;

/** ICMP parameter type definition.
 */
typedef uint16_t    icmp_param_t;

/** @name ICMP types definitions
 */
/*@{*/

/** Echo Reply.
 */
#define ICMP_ECHOREPLY      0

/** Destination Unreachable.
 */
#define ICMP_DEST_UNREACH   3

/** Source Quench.
 */
#define ICMP_SOURCE_QUENCH  4

/** Redirect.
 */
#define ICMP_REDIRECT       5

/** Alternate Host Address.
 */
#define ICMP_ALTERNATE_ADDR 6

/** Echo Request.
 */
#define ICMP_ECHO           8

/** Router advertisement.
 */
#define ICMP_ROUTER_ADV     9

/** Router solicitation.
 */
#define ICMP_ROUTER_SOL     10

/** Time Exceeded.
 */
#define ICMP_TIME_EXCEEDED  11

/** Parameter Problem.
 */
#define ICMP_PARAMETERPROB  12

/** Timestamp Request.
 */
#define ICMP_TIMESTAMP      13

/** Timestamp Reply.
 */
#define ICMP_TIMESTAMPREPLY 14

/** Information Request.
 */
#define ICMP_INFO_REQUEST   15

/** Information Reply.
 */
#define ICMP_INFO_REPLY     16

/** Address Mask Request.
 */
#define ICMP_ADDRESS        17

/** Address Mask Reply.
 */
#define ICMP_ADDRESSREPLY   18

/** Traceroute.
 */
#define ICMP_TRACEROUTE     30

/** Datagram Conversion Error.
 */
#define ICMP_CONVERSION_ERROR   31

/** Mobile Host Redirect.
 */
#define ICMP_REDIRECT_MOBILE    32

/** IPv6 Where-Are-You.
 */
#define ICMP_IPV6_WHERE_ARE_YOU 33

/** IPv6 I-Am-Here.
 */
#define ICMP_IPV6_I_AM_HERE 34

/** Mobile Registration Request.
 */
#define ICMP_MOBILE_REQUEST 35

/** Mobile Registration Reply.
 */
#define ICMP_MOBILE_REPLY   36

/** Domain name request.
 */
#define ICMP_DN_REQUEST     37

/** Domain name reply.
 */
#define ICMP_DN_REPLY       38

/** SKIP.
 */
#define ICMP_SKIP           39

/** Photuris.
 */
#define ICMP_PHOTURIS       40

/*@}*/

/** @name ICMP_DEST_UNREACH codes definitions
 */
/*@{*/

/** Network Unreachable.
 */
#define ICMP_NET_UNREACH    0

/** Host Unreachable.
 */
#define ICMP_HOST_UNREACH   1

/** Protocol Unreachable.
 */
#define ICMP_PROT_UNREACH   2

/** Port Unreachable.
 */
#define ICMP_PORT_UNREACH   3

/** Fragmentation needed but the Do Not Fragment bit was set.
 */
#define ICMP_FRAG_NEEDED    4

/** Source Route failed.
 */
#define ICMP_SR_FAILED      5

/** Destination network unknown.
 */
#define ICMP_NET_UNKNOWN    6

/** Destination host unknown.
 */
#define ICMP_HOST_UNKNOWN   7

/** Source host isolated (obsolete).
 */
#define ICMP_HOST_ISOLATED  8

/** Destination network administratively prohibited.
 */
#define ICMP_NET_ANO        9

/** Destination host administratively prohibited.
 */
#define ICMP_HOST_ANO       10

/** Network unreachable for this type of service.
 */
#define ICMP_NET_UNR_TOS    11

/** Host unreachable for this type of service.
 */
#define ICMP_HOST_UNR_TOS   12

/** Communication administratively prohibited by filtering.
 */
#define ICMP_PKT_FILTERED   13

/** Host precedence violation.
 */
#define ICMP_PREC_VIOLATION 14

/** Precedence cutoff in effect.
 */
#define ICMP_PREC_CUTOFF    15

/*@}*/

/** @name ICMP_REDIRECT codes definitions
 */
/*@{*/

/** Network redirect (or subnet).
 */
#define ICMP_REDIR_NET      0

/** Host redirect.
 */
#define ICMP_REDIR_HOST     1

/** Network redirect for this type of service.
 */
#define ICMP_REDIR_NETTOS   2

/** Host redirect for this type of service.
 */
#define ICMP_REDIR_HOSTTOS  3

/*@}*/

/** @name ICMP_ALTERNATE_ADDRESS codes definitions
 */
/*@{*/

/** Alternate address for host.
 */
#define ICMP_ALTERNATE_HOST 0

/*@}*/

/** @name ICMP_TIME_EXCEEDED codes definitions
 */
/*@{*/

/** Transit TTL exceeded.
 */
#define ICMP_EXC_TTL        0

/** Reassembly TTL exceeded.
 */
#define ICMP_EXC_FRAGTIME   1

/*@}*/

/** @name ICMP_ROUTER_ADV codes definitions
 */
/*@{*/

/** Normal router advertisement.
 */
#define ICMP_ROUTER_NORMAL  0

/** Does not route common traffic.
 */
#define ICMP_ROUTER_NO_NORMAL_TRAFFIC   16

/*@}*/

/** @name ICMP_TIME_EXCEEDED codes definitions
 */
/*@{*/

/** Transit TTL exceeded.
 */
#define ICMP_EXC_TTL        0

/** Reassembly TTL exceeded.
 */
#define ICMP_EXC_FRAGTIME   1

/*@}*/

/** @name ICMP_PARAMETERPROB codes definitions
 */
/*@{*/

/** Pointer indicates the error.
 */
#define ICMP_PARAM_POINTER  0

/** Missing required option.
 */
#define ICMP_PARAM_MISSING  1

/** Bad length.
 */
#define ICMP_PARAM_LENGTH   2

/*@}*/

/** @name ICMP_PHOTURIS codes definitions
 */
/*@{*/

/** Bad SPI.
 */
#define ICMP_PHOTURIS_BAD_SPI   0

/** Authentication failed.
 */
#define ICMP_PHOTURIS_AUTHENTICATION    1

/** Decompression failed.
 */
#define ICMP_PHOTURIS_DECOMPRESSION     2

/** Decryption failed.
 */
#define ICMP_PHOTURIS_DECRYPTION    3

/** Need authentication.
 */
#define ICMP_PHOTURIS_NEED_AUTHENTICATION   4

/** Need authorization.
 */
#define ICMP_PHOTURIS_NEED_AUTHORIZATION    5

/*@}*/

#endif

/** @}
 */