Changes in uspace/lib/net/include/icmp_header.h [a26b9e3:849ed54] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/net/include/icmp_header.h
ra26b9e3 r849ed54 27 27 */ 28 28 29 /** @addtogroup libnet29 /** @addtogroup icmp 30 30 * @{ 31 31 */ 32 32 33 33 /** @file 34 * ICMP header definition.35 * Based on the RFC792.34 * ICMP header definition. 35 * Based on the RFC~792. 36 36 */ 37 37 38 #ifndef LIBNET_ICMP_HEADER_H_39 #define LIBNET_ICMP_HEADER_H_38 #ifndef __NET_ICMP_HEADER_H__ 39 #define __NET_ICMP_HEADER_H__ 40 40 41 41 #include <sys/types.h> 42 42 43 #include < net/in.h>44 #include < net/icmp_codes.h>43 #include <in.h> 44 #include <icmp_codes.h> 45 45 46 /** ICMP header size in bytes. */ 47 #define ICMP_HEADER_SIZE sizeof(icmp_header_t) 46 /** ICMP header size in bytes. 47 */ 48 #define ICMP_HEADER_SIZE sizeof(icmp_header_t) 48 49 49 50 /** Type definition of the echo specific data. 50 * @see icmp_echo51 * @see icmp_echo 51 52 */ 52 typedef struct icmp_echo 53 typedef struct icmp_echo icmp_echo_t; 53 54 54 55 /** Type definition of the echo specific data pointer. 55 * @see icmp_echo56 * @see icmp_echo 56 57 */ 57 typedef icmp_echo_t * icmp_echo_ref;58 typedef icmp_echo_t * icmp_echo_ref; 58 59 59 /** Echo specific data. */ 60 struct icmp_echo { 61 /** Message idintifier. */ 60 /** Echo specific data. 61 */ 62 struct icmp_echo{ 63 /** Message idintifier. 64 */ 62 65 icmp_param_t identifier; 63 /** Message sequence number. */ 66 /** Message sequence number. 67 */ 64 68 icmp_param_t sequence_number; 65 69 } __attribute__ ((packed)); 66 70 67 71 /** Type definition of the internet control message header. 68 * @see icmp_header72 * @see icmp_header 69 73 */ 70 typedef struct icmp_header 74 typedef struct icmp_header icmp_header_t; 71 75 72 76 /** Type definition of the internet control message header pointer. 73 * @see icmp_header77 * @see icmp_header 74 78 */ 75 typedef icmp_header_t * icmp_header_ref;79 typedef icmp_header_t * icmp_header_ref; 76 80 77 /** Internet control message header. */ 78 struct icmp_header { 79 /** The type of the message. */ 81 /** Internet control message header. 82 */ 83 struct icmp_header{ 84 /** The type of the message. 85 */ 80 86 uint8_t type; 81 82 /** 83 * The error code for the datagram reported by the ICMP message. 84 * The interpretation is dependent on the message type. 87 /** The error code for the datagram reported by the ICMP message. 88 * The interpretation is dependent on the message type. 85 89 */ 86 90 uint8_t code; 87 88 /** 89 * The checksum is the 16-bit ones's complement of the one's complement 90 * sum of the ICMP message starting with the ICMP Type. For computing 91 * the checksum, the checksum field should be zero. If the checksum does 92 * not match the contents, the datagram is discarded. 91 /** The checksum is the 16-bit ones's complement of the one's complement sum of the ICMP message starting with the ICMP Type. 92 * For computing the checksum, the checksum field should be zero. 93 * If the checksum does not match the contents, the datagram is discarded. 93 94 */ 94 95 uint16_t checksum; 95 96 /** Message specific data. */ 97 union { 98 /** Echo specific data. */ 96 /** Message specific data. 97 */ 98 union{ 99 /** Echo specific data. 100 */ 99 101 icmp_echo_t echo; 100 /** Proposed gateway value. */ 102 /** Proposed gateway value. 103 */ 101 104 in_addr_t gateway; 102 103 /** Fragmentation needed specific data. */ 104 struct { 105 /** Reserved field. Must be zero. */ 105 /** Fragmentation needed specific data. 106 */ 107 struct{ 108 /** Reserved field. 109 * Must be zero. 110 */ 106 111 icmp_param_t reserved; 107 /** Proposed MTU. */ 112 /** Proposed MTU. 113 */ 108 114 icmp_param_t mtu; 109 115 } frag; 110 111 /** Parameter problem specific data. */ 112 struct { 113 /** Problem pointer. */ 116 /** Parameter problem specific data. 117 */ 118 struct{ 119 /** Problem pointer. 120 */ 114 121 icmp_param_t pointer; 115 /** Reserved field. Must be zero. */ 122 /** Reserved field. 123 * Must be zero. 124 */ 116 125 icmp_param_t reserved; 117 126 } param;
Note:
See TracChangeset
for help on using the changeset viewer.