Go to the documentation of this file.
29 # include <sys/socket.h>
35 #if defined(__CYGWIN__) || defined(__MSYS__)
37 RETURN_SKIP(
"FIXME: This test needs more investigation on Cygwin");
39 char string_address[INET6_ADDRSTRLEN];
43 unsigned int iface_index;
44 const char* device_name;
46 char scoped_addr[128];
47 size_t scoped_addr_len;
49 size_t interface_id_len;
56 for (ix = 0; ix <
count; ix++) {
57 address = addresses + ix;
65 sizeof(string_address)));
68 if (strncmp(string_address,
"fe80::", 6) != 0)
72 device_name = address->
name;
74 scoped_addr_len =
sizeof(scoped_addr);
78 ASSERT(0 == strcmp(device_name, scoped_addr));
81 interface_id_len =
sizeof(interface_id);
86 ASSERT(strtoul(interface_id, NULL, 10) == iface_index);
89 ASSERT(0 == strcmp(device_name, interface_id));
98 fprintf(
stderr,
"Testing link-local address %s "
99 "(iface_index: 0x%02x, device_name: %s)\n",
106 fprintf(
stderr,
"Got scope_id 0x%02x\n",
addr.sin6_scope_id);
113 scoped_addr_len =
sizeof(scoped_addr);
121 #define GOOD_ADDR_LIST(X) \
126 X("fe80::2acf:daff:fedd:342a") \
127 X("fe80:0:0:0:2acf:daff:fedd:342a") \
128 X("fe80:0:0:0:2acf:daff:1.2.3.4") \
129 X("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255") \
131 #define BAD_ADDR_LIST(X) \
134 X("fe80:0:0:0:2acf:daff:fedd:342a:5678") \
135 X("fe80:0:0:0:2acf:daff:abcd:1.2.3.4") \
136 X("fe80:0:0:2acf:daff:1.2.3.4.5") \
137 X("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255.255") \
139 #define TEST_GOOD(ADDR) \
140 ASSERT(0 == uv_inet_pton(AF_INET6, ADDR, &addr)); \
141 ASSERT(0 == uv_inet_pton(AF_INET6, ADDR "%en1", &addr)); \
142 ASSERT(0 == uv_inet_pton(AF_INET6, ADDR "%%%%", &addr)); \
143 ASSERT(0 == uv_inet_pton(AF_INET6, ADDR "%en1:1.2.3.4", &addr)); \
145 #define TEST_BAD(ADDR) \
146 ASSERT(0 != uv_inet_pton(AF_INET6, ADDR, &addr)); \
147 ASSERT(0 != uv_inet_pton(AF_INET6, ADDR "%en1", &addr)); \
148 ASSERT(0 != uv_inet_pton(AF_INET6, ADDR "%%%%", &addr)); \
149 ASSERT(0 != uv_inet_pton(AF_INET6, ADDR "%en1:1.2.3.4", &addr)); \
152 struct in6_addr
addr;
161 #undef GOOD_ADDR_LIST
168 ASSERT(
s.sin6_len ==
sizeof(s));
UV_EXTERN int uv_if_indextoname(unsigned int ifindex, char *buffer, size_t *size)
UV_EXTERN int uv_ip6_addr(const char *ip, int port, struct sockaddr_in6 *addr)
#define GOOD_ADDR_LIST(X)
UV_EXTERN int uv_interface_addresses(uv_interface_address_t **addresses, int *count)
TEST_IMPL(ip6_addr_link_local)
UV_EXTERN void uv_free_interface_addresses(uv_interface_address_t *addresses, int count)
UV_EXTERN int uv_if_indextoiid(unsigned int ifindex, char *buffer, size_t *size)
unsigned short sin6_family
#define MAKE_VALGRIND_HAPPY()
UV_EXTERN int uv_inet_ntop(int af, const void *src, char *dst, size_t size)
struct ares_in6_addr sin6_addr
#define RETURN_SKIP(explanation)
union uv_interface_address_s::@400 address
unsigned int sin6_scope_id
struct sockaddr_in6 address6
grpc
Author(s):
autogenerated on Fri May 16 2025 03:00:26