Commit | Line | Data |
---|---|---|
965f77c4 RC |
1 | /* |
2 | * Fundamental constants relating to ICMP Protocol | |
3 | * | |
4 | * Copyright (C) 1999-2019, Broadcom. | |
5 | * | |
6 | * Unless you and Broadcom execute a separate written software license | |
7 | * agreement governing use of this software, this software is licensed to you | |
8 | * under the terms of the GNU General Public License version 2 (the "GPL"), | |
9 | * available at http://www.broadcom.com/licenses/GPLv2.php, with the | |
10 | * following added to such license: | |
11 | * | |
12 | * As a special exception, the copyright holders of this software give you | |
13 | * permission to link this software with independent modules, and to copy and | |
14 | * distribute the resulting executable under terms of your choice, provided that | |
15 | * you also meet, for each linked independent module, the terms and conditions of | |
16 | * the license of that module. An independent module is a module which is not | |
17 | * derived from this software. The special exception does not apply to any | |
18 | * modifications of the software. | |
19 | * | |
20 | * Notwithstanding the above, under no circumstances may you combine this | |
21 | * software in any way with any other Broadcom software provided under a license | |
22 | * other than the GPL, without Broadcom's express prior written consent. | |
23 | * | |
24 | * | |
25 | * <<Broadcom-WL-IPTag/Open:>> | |
26 | * | |
27 | * $Id: bcmicmp.h 700076 2017-05-17 14:42:22Z $ | |
28 | */ | |
29 | ||
30 | #ifndef _bcmicmp_h_ | |
31 | #define _bcmicmp_h_ | |
32 | ||
33 | #ifndef _TYPEDEFS_H_ | |
34 | #include <typedefs.h> | |
35 | #endif // endif | |
36 | ||
37 | /* This marks the start of a packed structure section. */ | |
38 | #include <packed_section_start.h> | |
39 | ||
40 | #define ICMP_TYPE_ECHO_REQUEST 8 /* ICMP type echo request */ | |
41 | #define ICMP_TYPE_ECHO_REPLY 0 /* ICMP type echo reply */ | |
42 | ||
43 | #define ICMP_CHKSUM_OFFSET 2 /* ICMP body checksum offset */ | |
44 | ||
45 | /* ICMP6 error and control message types */ | |
46 | #define ICMP6_DEST_UNREACHABLE 1 | |
47 | #define ICMP6_PKT_TOO_BIG 2 | |
48 | #define ICMP6_TIME_EXCEEDED 3 | |
49 | #define ICMP6_PARAM_PROBLEM 4 | |
50 | #define ICMP6_ECHO_REQUEST 128 | |
51 | #define ICMP6_ECHO_REPLY 129 | |
52 | #define ICMP_MCAST_LISTENER_QUERY 130 | |
53 | #define ICMP_MCAST_LISTENER_REPORT 131 | |
54 | #define ICMP_MCAST_LISTENER_DONE 132 | |
55 | #define ICMP6_RTR_SOLICITATION 133 | |
56 | #define ICMP6_RTR_ADVERTISEMENT 134 | |
57 | #define ICMP6_NEIGH_SOLICITATION 135 | |
58 | #define ICMP6_NEIGH_ADVERTISEMENT 136 | |
59 | #define ICMP6_REDIRECT 137 | |
60 | ||
61 | #define ICMP6_RTRSOL_OPT_OFFSET 8 | |
62 | #define ICMP6_RTRADV_OPT_OFFSET 16 | |
63 | #define ICMP6_NEIGHSOL_OPT_OFFSET 24 | |
64 | #define ICMP6_NEIGHADV_OPT_OFFSET 24 | |
65 | #define ICMP6_REDIRECT_OPT_OFFSET 40 | |
66 | ||
67 | BWL_PRE_PACKED_STRUCT struct icmp6_opt { | |
68 | uint8 type; /* Option identifier */ | |
69 | uint8 length; /* Lenth including type and length */ | |
70 | uint8 data[0]; /* Variable length data */ | |
71 | } BWL_POST_PACKED_STRUCT; | |
72 | ||
73 | #define ICMP6_OPT_TYPE_SRC_LINK_LAYER 1 | |
74 | #define ICMP6_OPT_TYPE_TGT_LINK_LAYER 2 | |
75 | #define ICMP6_OPT_TYPE_PREFIX_INFO 3 | |
76 | #define ICMP6_OPT_TYPE_REDIR_HDR 4 | |
77 | #define ICMP6_OPT_TYPE_MTU 5 | |
78 | ||
79 | /* These fields are stored in network order */ | |
80 | BWL_PRE_PACKED_STRUCT struct bcmicmp_hdr { | |
81 | uint8 type; /* Echo or Echo-reply */ | |
82 | uint8 code; /* Always 0 */ | |
83 | uint16 chksum; /* Icmp packet checksum */ | |
84 | } BWL_POST_PACKED_STRUCT; | |
85 | ||
86 | /* This marks the end of a packed structure section. */ | |
87 | #include <packed_section_end.h> | |
88 | ||
89 | #endif /* #ifndef _bcmicmp_h_ */ |