152 |
|
if (!EmptyString(name)) |
153 |
|
{ |
154 |
|
const struct sockaddr_in *v4, *v4dns; |
155 |
– |
#ifdef IPV6 |
155 |
|
const struct sockaddr_in6 *v6, *v6dns; |
156 |
|
|
157 |
|
if (auth->client->localClient->ip.ss.ss_family == AF_INET6) |
167 |
|
} |
168 |
|
} |
169 |
|
else |
171 |
– |
#endif |
170 |
|
{ |
171 |
|
v4 = (const struct sockaddr_in *)&auth->client->localClient->ip; |
172 |
|
v4dns = (const struct sockaddr_in *)addr; |
223 |
|
{ |
224 |
|
struct irc_ssaddr localaddr; |
225 |
|
socklen_t locallen = sizeof(struct irc_ssaddr); |
228 |
– |
#ifdef IPV6 |
226 |
|
struct sockaddr_in6 *v6; |
230 |
– |
#else |
231 |
– |
struct sockaddr_in *v4; |
232 |
– |
#endif |
227 |
|
|
228 |
|
/* open a socket of the same type as the client socket */ |
229 |
|
if (comm_open(&auth->fd, auth->client->localClient->ip.ss.ss_family, |
250 |
|
getsockname(auth->client->localClient->fd.fd, (struct sockaddr*)&localaddr, |
251 |
|
&locallen); |
252 |
|
|
259 |
– |
#ifdef IPV6 |
253 |
|
remove_ipv6_mapping(&localaddr); |
254 |
|
v6 = (struct sockaddr_in6 *)&localaddr; |
255 |
|
v6->sin6_port = htons(0); |
263 |
– |
#else |
264 |
– |
localaddr.ss_len = locallen; |
265 |
– |
v4 = (struct sockaddr_in *)&localaddr; |
266 |
– |
v4->sin_port = htons(0); |
267 |
– |
#endif |
256 |
|
localaddr.ss_port = htons(0); |
257 |
|
|
258 |
|
comm_connect_tcp(&auth->fd, auth->client->sockhost, RFC1413_PORT, |
351 |
|
socklen_t ulen = sizeof(struct irc_ssaddr); |
352 |
|
socklen_t tlen = sizeof(struct irc_ssaddr); |
353 |
|
uint16_t uport, tport; |
366 |
– |
#ifdef IPV6 |
354 |
|
struct sockaddr_in6 *v6; |
368 |
– |
#else |
369 |
– |
struct sockaddr_in *v4; |
370 |
– |
#endif |
355 |
|
|
356 |
|
if (error != COMM_OK) |
357 |
|
{ |
368 |
|
return; |
369 |
|
} |
370 |
|
|
387 |
– |
#ifdef IPV6 |
371 |
|
v6 = (struct sockaddr_in6 *)&us; |
372 |
|
uport = ntohs(v6->sin6_port); |
373 |
|
v6 = (struct sockaddr_in6 *)&them; |
374 |
|
tport = ntohs(v6->sin6_port); |
375 |
|
remove_ipv6_mapping(&us); |
376 |
|
remove_ipv6_mapping(&them); |
394 |
– |
#else |
395 |
– |
v4 = (struct sockaddr_in *)&us; |
396 |
– |
uport = ntohs(v4->sin_port); |
397 |
– |
v4 = (struct sockaddr_in *)&them; |
398 |
– |
tport = ntohs(v4->sin_port); |
399 |
– |
us.ss_len = ulen; |
400 |
– |
them.ss_len = tlen; |
401 |
– |
#endif |
377 |
|
|
378 |
|
snprintf(authbuf, sizeof(authbuf), "%u, %u\r\n", tport, uport); |
379 |
|
|