1
10
11
12
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
84
88
89
90
91
92
94
95
96
97
98
104
105
106
107
108
109
110
111
112
113
114
115
119
120
121
125
126
127
133
134
135
136
137
138
139
140
141
...
...
#define NX_SOURCE_CODE
#include "nx_api.h"
#include "nx_ipv6.h"
#include "nx_nd_cache.h"
#ifdef FEATURE_NX_IPV6...
...
INT _nxd_ipv6_search_onlink(NX_IP *ip_ptr, ULONG *dest_addr)
{
UINT addr_index;
NX_IPV6_PREFIX_ENTRY *prefix_entry;
NXD_IPV6_ADDRESS *ipv6_address;
/* ... */
if (IPv6_Address_Type(dest_addr) & IPV6_ADDRESS_LINKLOCAL)
{
return(1);
}if (IPv6_Address_Type(dest_addr) & IPV6_ADDRESS_LINKLOCAL) { ... }
prefix_entry = ip_ptr -> nx_ipv6_prefix_list_ptr;
/* ... */
while (prefix_entry)
{
if (CHECK_IP_ADDRESSES_BY_PREFIX(dest_addr,
prefix_entry -> nx_ipv6_prefix_entry_network_address,
prefix_entry -> nx_ipv6_prefix_entry_prefix_length))
{
return(1);
}if (CHECK_IP_ADDRESSES_BY_PREFIX(dest_addr, prefix_entry -> nx_ipv6_prefix_entry_network_address, prefix_entry -> nx_ipv6_prefix_entry_prefix_length)) { ... }
prefix_entry = prefix_entry -> nx_ipv6_prefix_entry_next;
}while (prefix_entry) { ... }
for (addr_index = 0; addr_index < NX_MAX_IPV6_ADDRESSES; addr_index++)
{
ipv6_address = &ip_ptr -> nx_ipv6_address[addr_index];
if (!(ipv6_address -> nxd_ipv6_address_valid))
{
continue;
}if (!(ipv6_address -> nxd_ipv6_address_valid)) { ... }
if (ipv6_address -> nxd_ipv6_address_ConfigurationMethod != NX_IPV6_ADDRESS_MANUAL_CONFIG)
{
continue;
}if (ipv6_address -> nxd_ipv6_address_ConfigurationMethod != NX_IPV6_ADDRESS_MANUAL_CONFIG) { ... }
if (CHECK_IP_ADDRESSES_BY_PREFIX(dest_addr,
ipv6_address -> nxd_ipv6_address,
ipv6_address -> nxd_ipv6_address_prefix_length))
{
return(1);
}if (CHECK_IP_ADDRESSES_BY_PREFIX(dest_addr, ipv6_address -> nxd_ipv6_address, ipv6_address -> nxd_ipv6_address_prefix_length)) { ... }
}for (addr_index = 0; addr_index < NX_MAX_IPV6_ADDRESSES; addr_index++) { ... }
return(0);
}_nxd_ipv6_search_onlink (NX_IP *ip_ptr, ULONG *dest_addr) { ... }
/* ... */
#endif