1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
//! IPv6 Neighbor Discovery Protocol (NDP, RFC 4861) AST definitions.
//!
//! Defines link-local IPv6 address resolution, Neighbor Unreachability Detection (NUD), Duplicate
//! Address Detection (DAD), and Stateless Address Autoconfiguration (SLAAC) router discovery messages
//! specified in RFC 4861 over ICMPv6 (Next Header `58`, Hop Limit `255`). Supports `ROUTER_SOLICIT`
//! (Type `133`), `ROUTER_ADVERT` (Type `134`, carrying `ROUTER_LIFETIME`), `NEIGHBOR_SOLICIT` (Type
//! `135`, automatically computing the Solicited-Node Multicast destination `ff02::1:ffXX:XXXX` and
//! attaching Option 1 Source Link-Layer Address `SLLA`), `NEIGHBOR_ADVERT` (Type `136`, setting
//! Solicited + Override flags `0x60` and Option 2 Target Link-Layer Address `TLLA`), and `REDIRECT` (`137`).
//!
//! Canonical `.fasm` syntax:
//! `a -> b NDP [ROUTER_SOLICIT | ROUTER_ADVERT | NEIGHBOR_SOLICIT | NEIGHBOR_ADVERT | REDIRECT] [TARGET <ipv6>] [SLLA <mac>] [TLLA <mac>] [ROUTER_LIFETIME <u16>]`
use PhantomData;
use IpAddr;
/// RFC 4861 IPv6 Neighbor Discovery ICMPv6 message type code.
/// IPv6 Neighbor Discovery Protocol (RFC 4861) specification over ICMPv6 (`58`).
///
/// Syntax mapping: `NDP [ROUTER_SOLICIT | ROUTER_ADVERT | NEIGHBOR_SOLICIT | NEIGHBOR_ADVERT | REDIRECT] [TARGET <ipv6>] [SLLA <mac>] [TLLA <mac>] [ROUTER_LIFETIME <u16>]`