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
91
92
93
99
100
101
102
103
104
105
106
107
108
114
115
116
117
118
119
...
...
...
#define NX_SOURCE_CODE
#include "nx_api.h"
#include "nx_ipv6.h"
#include "nx_icmpv6.h"
#ifdef FEATURE_NX_IPV6
...
UINT _nx_icmpv6_validate_options(NX_ICMPV6_OPTION *option, INT length, INT additional_check)
{
UINT option_len;
while (length > 0)
{
if (option -> nx_icmpv6_option_length == 0)
{
return(NX_NOT_SUCCESSFUL);
}if (option -> nx_icmpv6_option_length == 0) { ... }
if ((additional_check == NX_NO_SLLA) &&
(option -> nx_icmpv6_option_type == 1))
{
return(NX_NOT_SUCCESSFUL);
}if ((additional_check == NX_NO_SLLA) && (option -> nx_icmpv6_option_type == 1)) { ... }
option_len = ((UINT)option -> nx_icmpv6_option_length) << 3;
length -= (INT)option_len;
option = (NX_ICMPV6_OPTION *)NX_UCHAR_POINTER_ADD(option, option_len);
}while (length > 0) { ... }
if (length < 0)
{
return(NX_NOT_SUCCESSFUL);
}if (length < 0) { ... }
return(NX_SUCCESS);
}_nx_icmpv6_validate_options (NX_ICMPV6_OPTION *option, INT length, INT additional_check) { ... }
/* ... */
#endif