1
2
3 """Internet Control Message Protocol for IPv6."""
4 from __future__ import absolute_import
5
6 from . import dpkt
7
8 ICMP6_DST_UNREACH = 1
9 ICMP6_PACKET_TOO_BIG = 2
10 ICMP6_TIME_EXCEEDED = 3
11 ICMP6_PARAM_PROB = 4
12
13 ICMP6_ECHO_REQUEST = 128
14 ICMP6_ECHO_REPLY = 129
15 MLD_LISTENER_QUERY = 130
16 MLD_LISTENER_REPORT = 131
17 MLD_LISTENER_DONE = 132
18
19
20 ICMP6_MEMBERSHIP_QUERY = 130
21 ICMP6_MEMBERSHIP_REPORT = 131
22 ICMP6_MEMBERSHIP_REDUCTION = 132
23
24 ND_ROUTER_SOLICIT = 133
25 ND_ROUTER_ADVERT = 134
26 ND_NEIGHBOR_SOLICIT = 135
27 ND_NEIGHBOR_ADVERT = 136
28 ND_REDIRECT = 137
29
30 ICMP6_ROUTER_RENUMBERING = 138
31
32 ICMP6_WRUREQUEST = 139
33 ICMP6_WRUREPLY = 140
34 ICMP6_FQDN_QUERY = 139
35 ICMP6_FQDN_REPLY = 140
36 ICMP6_NI_QUERY = 139
37 ICMP6_NI_REPLY = 140
38
39 ICMP6_MAXTYPE = 201
40
41
43 """Internet Control Message Protocol for IPv6.
44
45 TODO: Longer class information....
46
47 Attributes:
48 __hdr__: Header fields of ICMPv6.
49 TODO.
50 """
51
52 __hdr__ = (
53 ('type', 'B', 0),
54 ('code', 'B', 0),
55 ('sum', 'H', 0)
56 )
57
58 - class Error(dpkt.Packet):
59 __hdr__ = (('pad', 'I', 0), )
60
65
67
69 __hdr__ = (('mtu', 'I', 1232), )
70
72
75
76 - class Echo(dpkt.Packet):
77 __hdr__ = (('id', 'H', 0), ('seq', 'H', 0))
78
79 _typesw = {1: Unreach, 2: TooBig, 3: TimeExceed, 4: ParamProb, 128: Echo, 129: Echo}
80
88