Imported Upstream version 2.88
[platform/upstream/dnsmasq.git] / src / radv-protocol.h
1 /* dnsmasq is Copyright (c) 2000-2022 Simon Kelley
2
3    This program is free software; you can redistribute it and/or modify
4    it under the terms of the GNU General Public License as published by
5    the Free Software Foundation; version 2 dated June, 1991, or
6    (at your option) version 3 dated 29 June, 2007.
7  
8    This program is distributed in the hope that it will be useful,
9    but WITHOUT ANY WARRANTY; without even the implied warranty of
10    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11    GNU General Public License for more details.
12      
13    You should have received a copy of the GNU General Public License
14    along with this program.  If not, see <http://www.gnu.org/licenses/>.
15 */
16
17 #define ALL_NODES                 "FF02::1"
18 #define ALL_ROUTERS               "FF02::2"
19
20 struct ping_packet {
21   u8 type, code;
22   u16 checksum;
23   u16 identifier;
24   u16 sequence_no;
25 };
26
27 struct ra_packet {
28   u8 type, code;
29   u16 checksum;
30   u8 hop_limit, flags;
31   u16 lifetime;
32   u32 reachable_time;
33   u32 retrans_time;
34 };
35
36 struct neigh_packet {
37   u8 type, code;
38   u16 checksum;
39   u16 reserved;
40   struct in6_addr target;
41 };
42
43 struct prefix_opt {
44   u8 type, len, prefix_len, flags;
45   u32 valid_lifetime, preferred_lifetime, reserved;
46   struct in6_addr prefix;
47 };
48
49 #define ICMP6_OPT_SOURCE_MAC   1
50 #define ICMP6_OPT_PREFIX       3
51 #define ICMP6_OPT_MTU          5
52 #define ICMP6_OPT_ADV_INTERVAL 7
53 #define ICMP6_OPT_RT_INFO     24
54 #define ICMP6_OPT_RDNSS       25
55 #define ICMP6_OPT_DNSSL       31