1
10
13
14
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
92
93
94
95
110
111
112
113
115
116
118
119
120
121
122
123
129
130
132
133
134
135
136
137
138
139
...
...
...
#define NX_SOURCE_CODE
#include "nx_api.h"
#include "nx_ipv6.h"
#include "nx_icmpv6.h"
#ifdef FEATURE_NX_IPV6
...
UINT _nx_ipv6_option_error(NX_IP *ip_ptr, NX_PACKET *packet_ptr, UCHAR option_type, UINT offset)
{
UINT rv = NX_SUCCESS;
NX_IPV6_HEADER *ip_header_ptr = (NX_IPV6_HEADER *)packet_ptr -> nx_packet_ip_header;
/* ... */
switch (option_type >> 6)
{
case 3:
if ((ip_header_ptr -> nx_ip_header_destination_ip[0] & (ULONG)0xFF000000) == (ULONG)0xFF000000)
{
rv = NX_OPTION_HEADER_ERROR;
break;
}if ((ip_header_ptr -> nx_ip_header_destination_ip[0] & (ULONG)0xFF000000) == (ULONG)0xFF000000) { ... }
/* ... */
case 3:
case 2:
#ifndef NX_DISABLE_ICMPV6_ERROR_MESSAGE
NX_ICMPV6_SEND_PARAMETER_PROBLEM(ip_ptr, packet_ptr, 2, (ULONG)(offset + sizeof(NX_IPV6_HEADER)));/* ... */
#else
NX_PARAMETER_NOT_USED(ip_ptr);
NX_PARAMETER_NOT_USED(offset);/* ... */
#endif
case 2:
case 1:
rv = NX_OPTION_HEADER_ERROR;
break;
case 1:
case 0:
default:
break;default
}switch (option_type >> 6) { ... }
return(rv);
}_nx_ipv6_option_error (NX_IP *ip_ptr, NX_PACKET *packet_ptr, UCHAR option_type, UINT offset) { ... }
/* ... */
#endif