remove RB_IPV6
This commit is contained in:
parent
f21ef0cebc
commit
de2934965c
34 changed files with 15 additions and 336 deletions
12
authd/dns.c
12
authd/dns.c
|
@ -43,13 +43,11 @@ lookup_ip(const char *host, int aftype, DNSCB callback, void *data)
|
||||||
query->type = QUERY_A;
|
query->type = QUERY_A;
|
||||||
g_type = T_A;
|
g_type = T_A;
|
||||||
}
|
}
|
||||||
#ifdef RB_IPV6
|
|
||||||
else if(aftype == AF_INET6)
|
else if(aftype == AF_INET6)
|
||||||
{
|
{
|
||||||
query->type = QUERY_AAAA;
|
query->type = QUERY_AAAA;
|
||||||
g_type = T_AAAA;
|
g_type = T_AAAA;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
rb_free(query);
|
rb_free(query);
|
||||||
|
@ -85,10 +83,8 @@ lookup_hostname(const char *ip, DNSCB callback, void *data)
|
||||||
|
|
||||||
if(aftype == AF_INET)
|
if(aftype == AF_INET)
|
||||||
query->type = QUERY_PTR_A;
|
query->type = QUERY_PTR_A;
|
||||||
#ifdef RB_IPV6
|
|
||||||
else if(aftype == AF_INET6)
|
else if(aftype == AF_INET6)
|
||||||
query->type = QUERY_PTR_AAAA;
|
query->type = QUERY_PTR_AAAA;
|
||||||
#endif
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
rb_free(query);
|
rb_free(query);
|
||||||
|
@ -137,7 +133,6 @@ handle_lookup_ip_reply(void *data, struct DNSReply *reply)
|
||||||
if(GET_SS_FAMILY(&reply->addr) == AF_INET)
|
if(GET_SS_FAMILY(&reply->addr) == AF_INET)
|
||||||
rb_inet_ntop_sock((struct sockaddr *)&reply->addr, ip, sizeof(ip));
|
rb_inet_ntop_sock((struct sockaddr *)&reply->addr, ip, sizeof(ip));
|
||||||
break;
|
break;
|
||||||
#ifdef RB_IPV6
|
|
||||||
case QUERY_AAAA:
|
case QUERY_AAAA:
|
||||||
if(GET_SS_FAMILY(&reply->addr) == AF_INET6)
|
if(GET_SS_FAMILY(&reply->addr) == AF_INET6)
|
||||||
{
|
{
|
||||||
|
@ -149,7 +144,6 @@ handle_lookup_ip_reply(void *data, struct DNSReply *reply)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#endif
|
|
||||||
default:
|
default:
|
||||||
warn_opers(L_CRIT, "DNS: handle_lookup_ip_reply: unknown query type %d",
|
warn_opers(L_CRIT, "DNS: handle_lookup_ip_reply: unknown query type %d",
|
||||||
query->type);
|
query->type);
|
||||||
|
@ -189,7 +183,6 @@ handle_lookup_hostname_reply(void *data, struct DNSReply *reply)
|
||||||
if(ip->sin_addr.s_addr == ip_fwd->sin_addr.s_addr)
|
if(ip->sin_addr.s_addr == ip_fwd->sin_addr.s_addr)
|
||||||
hostname = reply->h_name;
|
hostname = reply->h_name;
|
||||||
}
|
}
|
||||||
#ifdef RB_IPV6
|
|
||||||
else if(query->type == QUERY_PTR_AAAA)
|
else if(query->type == QUERY_PTR_AAAA)
|
||||||
{
|
{
|
||||||
struct sockaddr_in6 *ip, *ip_fwd;
|
struct sockaddr_in6 *ip, *ip_fwd;
|
||||||
|
@ -199,7 +192,6 @@ handle_lookup_hostname_reply(void *data, struct DNSReply *reply)
|
||||||
if(memcmp(&ip->sin6_addr, &ip_fwd->sin6_addr, sizeof(struct in6_addr)) == 0)
|
if(memcmp(&ip->sin6_addr, &ip_fwd->sin6_addr, sizeof(struct in6_addr)) == 0)
|
||||||
hostname = reply->h_name;
|
hostname = reply->h_name;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Shouldn't happen */
|
/* Shouldn't happen */
|
||||||
|
@ -246,17 +238,13 @@ handle_resolve_dns(int parc, char *parv[])
|
||||||
|
|
||||||
switch(qtype)
|
switch(qtype)
|
||||||
{
|
{
|
||||||
#ifdef RB_IPV6
|
|
||||||
case '6':
|
case '6':
|
||||||
aftype = AF_INET6;
|
aftype = AF_INET6;
|
||||||
#endif
|
|
||||||
case '4':
|
case '4':
|
||||||
if(!lookup_ip(record, aftype, submit_dns_answer, id))
|
if(!lookup_ip(record, aftype, submit_dns_answer, id))
|
||||||
submit_dns_answer(NULL, false, qtype, NULL);
|
submit_dns_answer(NULL, false, qtype, NULL);
|
||||||
break;
|
break;
|
||||||
#ifdef RB_IPV6
|
|
||||||
case 'S':
|
case 'S':
|
||||||
#endif
|
|
||||||
case 'R':
|
case 'R':
|
||||||
if(!lookup_hostname(record, submit_dns_answer, id))
|
if(!lookup_hostname(record, submit_dns_answer, id))
|
||||||
submit_dns_answer(NULL, false, qtype, NULL);
|
submit_dns_answer(NULL, false, qtype, NULL);
|
||||||
|
|
|
@ -310,10 +310,8 @@ lookup_all_blacklists(struct auth_client *auth)
|
||||||
|
|
||||||
if(GET_SS_FAMILY(&auth->c_addr) == AF_INET)
|
if(GET_SS_FAMILY(&auth->c_addr) == AF_INET)
|
||||||
iptype = IPTYPE_IPV4;
|
iptype = IPTYPE_IPV4;
|
||||||
#ifdef RB_IPV6
|
|
||||||
else if(GET_SS_FAMILY(&auth->c_addr) == AF_INET6)
|
else if(GET_SS_FAMILY(&auth->c_addr) == AF_INET6)
|
||||||
iptype = IPTYPE_IPV6;
|
iptype = IPTYPE_IPV6;
|
||||||
#endif
|
|
||||||
else
|
else
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
|
|
@ -236,7 +236,6 @@ accept_opm(rb_fde_t *F, int status, struct sockaddr *addr, rb_socklen_t len, voi
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#ifdef RB_IPV6
|
|
||||||
case AF_INET6:
|
case AF_INET6:
|
||||||
{
|
{
|
||||||
struct sockaddr_in6 *s = (struct sockaddr_in6 *)&localaddr, *c = (struct sockaddr_in6 *)&auth->c_addr;
|
struct sockaddr_in6 *s = (struct sockaddr_in6 *)&localaddr, *c = (struct sockaddr_in6 *)&auth->c_addr;
|
||||||
|
@ -248,7 +247,6 @@ accept_opm(rb_fde_t *F, int status, struct sockaddr *addr, rb_socklen_t len, voi
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
default:
|
default:
|
||||||
warn_opers(L_CRIT, "OPM: unknown address type in listen function");
|
warn_opers(L_CRIT, "OPM: unknown address type in listen function");
|
||||||
exit(EX_PROVIDER_ERROR);
|
exit(EX_PROVIDER_ERROR);
|
||||||
|
@ -283,7 +281,6 @@ opm_connected(rb_fde_t *F, int error, void *data)
|
||||||
goto end;
|
goto end;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
#ifdef RB_IPV6
|
|
||||||
case AF_INET6:
|
case AF_INET6:
|
||||||
if(!proxy->ipv6)
|
if(!proxy->ipv6)
|
||||||
/* Welp, too bad */
|
/* Welp, too bad */
|
||||||
|
@ -294,7 +291,6 @@ opm_connected(rb_fde_t *F, int error, void *data)
|
||||||
goto end;
|
goto end;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
#endif
|
|
||||||
default:
|
default:
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
@ -347,13 +343,11 @@ socks5_connected(struct opm_scan *scan)
|
||||||
memcpy(c, &(((struct sockaddr_in *)&scan->listener->addr)->sin_addr.s_addr), 4); c += 4; /* Address */
|
memcpy(c, &(((struct sockaddr_in *)&scan->listener->addr)->sin_addr.s_addr), 4); c += 4; /* Address */
|
||||||
memcpy(c, &(((struct sockaddr_in *)&scan->listener->addr)->sin_port), 2); c += 2; /* Port */
|
memcpy(c, &(((struct sockaddr_in *)&scan->listener->addr)->sin_port), 2); c += 2; /* Port */
|
||||||
break;
|
break;
|
||||||
#ifdef RB_IPV6
|
|
||||||
case AF_INET6:
|
case AF_INET6:
|
||||||
*(c++) = '\x04'; /* Address type (4 = IPv6) */
|
*(c++) = '\x04'; /* Address type (4 = IPv6) */
|
||||||
memcpy(c, ((struct sockaddr_in6 *)&scan->listener->addr)->sin6_addr.s6_addr, 16); c += 16; /* Address */
|
memcpy(c, ((struct sockaddr_in6 *)&scan->listener->addr)->sin6_addr.s6_addr, 16); c += 16; /* Address */
|
||||||
memcpy(c, &(((struct sockaddr_in6 *)&scan->listener->addr)->sin6_port), 2); c += 2; /* Port */
|
memcpy(c, &(((struct sockaddr_in6 *)&scan->listener->addr)->sin6_port), 2); c += 2; /* Port */
|
||||||
break;
|
break;
|
||||||
#endif
|
|
||||||
default:
|
default:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -400,7 +394,6 @@ establish_connection(struct auth_client *auth, struct opm_proxy *proxy)
|
||||||
|
|
||||||
lrb_assert(lookup != NULL);
|
lrb_assert(lookup != NULL);
|
||||||
|
|
||||||
#ifdef RB_IPV6
|
|
||||||
if(GET_SS_FAMILY(&auth->c_addr) == AF_INET6)
|
if(GET_SS_FAMILY(&auth->c_addr) == AF_INET6)
|
||||||
{
|
{
|
||||||
if(proxy->proto == PROTO_SOCKS4)
|
if(proxy->proto == PROTO_SOCKS4)
|
||||||
|
@ -412,7 +405,6 @@ establish_connection(struct auth_client *auth, struct opm_proxy *proxy)
|
||||||
listener = &listeners[LISTEN_IPV6];
|
listener = &listeners[LISTEN_IPV6];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
|
||||||
listener = &listeners[LISTEN_IPV4];
|
listener = &listeners[LISTEN_IPV4];
|
||||||
|
|
||||||
if(listener->F == NULL)
|
if(listener->F == NULL)
|
||||||
|
@ -473,7 +465,6 @@ create_listener(const char *ip, uint16_t port)
|
||||||
|
|
||||||
SET_SS_PORT(&addr, htons(port));
|
SET_SS_PORT(&addr, htons(port));
|
||||||
|
|
||||||
#ifdef RB_IPV6
|
|
||||||
if(GET_SS_FAMILY(&addr) == AF_INET6)
|
if(GET_SS_FAMILY(&addr) == AF_INET6)
|
||||||
{
|
{
|
||||||
struct sockaddr_in6 *a1, *a2;
|
struct sockaddr_in6 *a1, *a2;
|
||||||
|
@ -492,7 +483,6 @@ create_listener(const char *ip, uint16_t port)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
struct sockaddr_in *a1, *a2;
|
struct sockaddr_in *a1, *a2;
|
||||||
|
|
||||||
|
@ -904,10 +894,8 @@ delete_opm_listener_all(const char *key __unused, int parc __unused, const char
|
||||||
if(listeners[LISTEN_IPV4].F != NULL)
|
if(listeners[LISTEN_IPV4].F != NULL)
|
||||||
rb_close(listeners[LISTEN_IPV4].F);
|
rb_close(listeners[LISTEN_IPV4].F);
|
||||||
|
|
||||||
#ifdef RB_IPV6
|
|
||||||
if(listeners[LISTEN_IPV6].F != NULL)
|
if(listeners[LISTEN_IPV6].F != NULL)
|
||||||
rb_close(listeners[LISTEN_IPV6].F);
|
rb_close(listeners[LISTEN_IPV6].F);
|
||||||
#endif
|
|
||||||
|
|
||||||
memset(&listeners, 0, sizeof(listeners));
|
memset(&listeners, 0, sizeof(listeners));
|
||||||
}
|
}
|
||||||
|
|
19
authd/res.c
19
authd/res.c
|
@ -56,9 +56,7 @@ static PF res_readreply;
|
||||||
#define RDLENGTH_SIZE (size_t)2
|
#define RDLENGTH_SIZE (size_t)2
|
||||||
#define ANSWER_FIXED_SIZE (TYPE_SIZE + CLASS_SIZE + TTL_SIZE + RDLENGTH_SIZE)
|
#define ANSWER_FIXED_SIZE (TYPE_SIZE + CLASS_SIZE + TTL_SIZE + RDLENGTH_SIZE)
|
||||||
|
|
||||||
#ifdef RB_IPV6
|
|
||||||
struct in6_addr ipv6_addr;
|
struct in6_addr ipv6_addr;
|
||||||
#endif
|
|
||||||
struct in_addr ipv4_addr;
|
struct in_addr ipv4_addr;
|
||||||
|
|
||||||
struct reslist
|
struct reslist
|
||||||
|
@ -112,10 +110,8 @@ static uint16_t generate_random_id(void);
|
||||||
static int
|
static int
|
||||||
res_ourserver(const struct rb_sockaddr_storage *inp)
|
res_ourserver(const struct rb_sockaddr_storage *inp)
|
||||||
{
|
{
|
||||||
#ifdef RB_IPV6
|
|
||||||
const struct sockaddr_in6 *v6;
|
const struct sockaddr_in6 *v6;
|
||||||
const struct sockaddr_in6 *v6in = (const struct sockaddr_in6 *)inp;
|
const struct sockaddr_in6 *v6in = (const struct sockaddr_in6 *)inp;
|
||||||
#endif
|
|
||||||
const struct sockaddr_in *v4;
|
const struct sockaddr_in *v4;
|
||||||
const struct sockaddr_in *v4in = (const struct sockaddr_in *)inp;
|
const struct sockaddr_in *v4in = (const struct sockaddr_in *)inp;
|
||||||
int ns;
|
int ns;
|
||||||
|
@ -123,9 +119,7 @@ res_ourserver(const struct rb_sockaddr_storage *inp)
|
||||||
for(ns = 0; ns < irc_nscount; ns++)
|
for(ns = 0; ns < irc_nscount; ns++)
|
||||||
{
|
{
|
||||||
const struct rb_sockaddr_storage *srv = &irc_nsaddr_list[ns];
|
const struct rb_sockaddr_storage *srv = &irc_nsaddr_list[ns];
|
||||||
#ifdef RB_IPV6
|
|
||||||
v6 = (const struct sockaddr_in6 *)srv;
|
v6 = (const struct sockaddr_in6 *)srv;
|
||||||
#endif
|
|
||||||
v4 = (const struct sockaddr_in *)srv;
|
v4 = (const struct sockaddr_in *)srv;
|
||||||
|
|
||||||
/* could probably just memcmp(srv, inp, srv.ss_len) here
|
/* could probably just memcmp(srv, inp, srv.ss_len) here
|
||||||
|
@ -133,7 +127,6 @@ res_ourserver(const struct rb_sockaddr_storage *inp)
|
||||||
*/
|
*/
|
||||||
switch (GET_SS_FAMILY(srv))
|
switch (GET_SS_FAMILY(srv))
|
||||||
{
|
{
|
||||||
#ifdef RB_IPV6
|
|
||||||
case AF_INET6:
|
case AF_INET6:
|
||||||
if(GET_SS_FAMILY(srv) == GET_SS_FAMILY(inp))
|
if(GET_SS_FAMILY(srv) == GET_SS_FAMILY(inp))
|
||||||
if(v6->sin6_port == v6in->sin6_port)
|
if(v6->sin6_port == v6in->sin6_port)
|
||||||
|
@ -143,7 +136,6 @@ res_ourserver(const struct rb_sockaddr_storage *inp)
|
||||||
sizeof(struct in6_addr)) == 0))
|
sizeof(struct in6_addr)) == 0))
|
||||||
return 1;
|
return 1;
|
||||||
break;
|
break;
|
||||||
#endif
|
|
||||||
case AF_INET:
|
case AF_INET:
|
||||||
if(GET_SS_FAMILY(srv) == GET_SS_FAMILY(inp))
|
if(GET_SS_FAMILY(srv) == GET_SS_FAMILY(inp))
|
||||||
if(v4->sin_port == v4in->sin_port)
|
if(v4->sin_port == v4in->sin_port)
|
||||||
|
@ -476,7 +468,6 @@ void build_rdns(char *buf, size_t size, const struct rb_sockaddr_storage *addr,
|
||||||
(unsigned int)(cp[0]),
|
(unsigned int)(cp[0]),
|
||||||
suffix == NULL ? "in-addr.arpa" : suffix);
|
suffix == NULL ? "in-addr.arpa" : suffix);
|
||||||
}
|
}
|
||||||
#ifdef RB_IPV6
|
|
||||||
else if (GET_SS_FAMILY(addr) == AF_INET6)
|
else if (GET_SS_FAMILY(addr) == AF_INET6)
|
||||||
{
|
{
|
||||||
const struct sockaddr_in6 *v6 = (const struct sockaddr_in6 *)addr;
|
const struct sockaddr_in6 *v6 = (const struct sockaddr_in6 *)addr;
|
||||||
|
@ -508,8 +499,6 @@ void build_rdns(char *buf, size_t size, const struct rb_sockaddr_storage *addr,
|
||||||
|
|
||||||
#undef HI_NIBBLE
|
#undef HI_NIBBLE
|
||||||
#undef LO_NIBBLE
|
#undef LO_NIBBLE
|
||||||
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -570,9 +559,7 @@ static void resend_query(struct reslist *request)
|
||||||
do_query_number(NULL, &request->addr, request);
|
do_query_number(NULL, &request->addr, request);
|
||||||
break;
|
break;
|
||||||
case T_A:
|
case T_A:
|
||||||
#ifdef RB_IPV6
|
|
||||||
case T_AAAA:
|
case T_AAAA:
|
||||||
#endif
|
|
||||||
do_query_name(NULL, request->name, request, request->type);
|
do_query_name(NULL, request->name, request, request->type);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -614,9 +601,7 @@ static int proc_answer(struct reslist *request, HEADER * header, char *buf, char
|
||||||
int n; /* temp count */
|
int n; /* temp count */
|
||||||
int rd_length;
|
int rd_length;
|
||||||
struct sockaddr_in *v4; /* conversion */
|
struct sockaddr_in *v4; /* conversion */
|
||||||
#ifdef RB_IPV6
|
|
||||||
struct sockaddr_in6 *v6;
|
struct sockaddr_in6 *v6;
|
||||||
#endif
|
|
||||||
current = (unsigned char *)buf + sizeof(HEADER);
|
current = (unsigned char *)buf + sizeof(HEADER);
|
||||||
|
|
||||||
for (; header->qdcount > 0; --header->qdcount)
|
for (; header->qdcount > 0; --header->qdcount)
|
||||||
|
@ -694,7 +679,6 @@ static int proc_answer(struct reslist *request, HEADER * header, char *buf, char
|
||||||
v4->sin_family = AF_INET;
|
v4->sin_family = AF_INET;
|
||||||
memcpy(&v4->sin_addr, current, sizeof(struct in_addr));
|
memcpy(&v4->sin_addr, current, sizeof(struct in_addr));
|
||||||
return (1);
|
return (1);
|
||||||
#ifdef RB_IPV6
|
|
||||||
case T_AAAA:
|
case T_AAAA:
|
||||||
if (request->type != T_AAAA)
|
if (request->type != T_AAAA)
|
||||||
return (0);
|
return (0);
|
||||||
|
@ -705,7 +689,6 @@ static int proc_answer(struct reslist *request, HEADER * header, char *buf, char
|
||||||
v6->sin6_family = AF_INET6;
|
v6->sin6_family = AF_INET6;
|
||||||
memcpy(&v6->sin6_addr, current, sizeof(struct in6_addr));
|
memcpy(&v6->sin6_addr, current, sizeof(struct in6_addr));
|
||||||
return (1);
|
return (1);
|
||||||
#endif
|
|
||||||
case T_PTR:
|
case T_PTR:
|
||||||
if (request->type != T_PTR)
|
if (request->type != T_PTR)
|
||||||
return (0);
|
return (0);
|
||||||
|
@ -856,11 +839,9 @@ static int res_read_single_reply(rb_fde_t *F, void *data)
|
||||||
* Lookup the 'authoritative' name that we were given for the
|
* Lookup the 'authoritative' name that we were given for the
|
||||||
* ip#.
|
* ip#.
|
||||||
*/
|
*/
|
||||||
#ifdef RB_IPV6
|
|
||||||
if (GET_SS_FAMILY(&request->addr) == AF_INET6)
|
if (GET_SS_FAMILY(&request->addr) == AF_INET6)
|
||||||
gethost_byname_type_fqdn(request->name, request->query, T_AAAA);
|
gethost_byname_type_fqdn(request->name, request->query, T_AAAA);
|
||||||
else
|
else
|
||||||
#endif
|
|
||||||
gethost_byname_type_fqdn(request->name, request->query, T_A);
|
gethost_byname_type_fqdn(request->name, request->query, T_A);
|
||||||
rem_request(request);
|
rem_request(request);
|
||||||
}
|
}
|
||||||
|
|
|
@ -168,9 +168,6 @@ if test x"$SUN" = xyes; then
|
||||||
AC_SEARCH_LIBS(inet_ntoa, nsl,, [AC_MSG_ERROR([libnsl not found! Aborting.])])
|
AC_SEARCH_LIBS(inet_ntoa, nsl,, [AC_MSG_ERROR([libnsl not found! Aborting.])])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_ARG_ENABLE(ipv6,
|
|
||||||
AC_HELP_STRING([--enable-ipv6],[Enable IPv6 support]),[ipv6=$enableval],[ipv6=no])
|
|
||||||
|
|
||||||
AC_SEARCH_LIBS(crypt, [crypt descrypt],,)
|
AC_SEARCH_LIBS(crypt, [crypt descrypt],,)
|
||||||
|
|
||||||
CRYPT_LIB=$ac_cv_search_crypt
|
CRYPT_LIB=$ac_cv_search_crypt
|
||||||
|
|
|
@ -53,7 +53,6 @@ eb_hostmask(const char *banstr, struct Client *client_p, struct Channel *chptr,
|
||||||
s3 = src_althost;
|
s3 = src_althost;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef RB_IPV6
|
|
||||||
/* handle Teredo if necessary */
|
/* handle Teredo if necessary */
|
||||||
if (GET_SS_FAMILY(&client_p->localClient->ip) == AF_INET6 && rb_ipv4_from_ipv6((const struct sockaddr_in6 *) &client_p->localClient->ip, &ip4))
|
if (GET_SS_FAMILY(&client_p->localClient->ip) == AF_INET6 && rb_ipv4_from_ipv6((const struct sockaddr_in6 *) &client_p->localClient->ip, &ip4))
|
||||||
{
|
{
|
||||||
|
@ -63,7 +62,6 @@ eb_hostmask(const char *banstr, struct Client *client_p, struct Channel *chptr,
|
||||||
s4, src_ip4host + sizeof src_ip4host - s4);
|
s4, src_ip4host + sizeof src_ip4host - s4);
|
||||||
s4 = src_ip4host;
|
s4 = src_ip4host;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
return match(banstr, s) || match(banstr, s2) || (s3 != NULL && match(banstr, s3)) || (s4 != NULL && match(banstr, s4)) ? EXTBAN_MATCH : EXTBAN_NOMATCH;
|
return match(banstr, s) || match(banstr, s2) || (s3 != NULL && match(banstr, s3)) || (s4 != NULL && match(banstr, s4)) ? EXTBAN_MATCH : EXTBAN_NOMATCH;
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,10 +28,8 @@
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
HM_HOST,
|
HM_HOST,
|
||||||
HM_IPV4
|
HM_IPV4,
|
||||||
#ifdef RB_IPV6
|
HM_IPV6,
|
||||||
, HM_IPV6
|
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
int parse_netmask(const char *, struct rb_sockaddr_storage *, int *);
|
int parse_netmask(const char *, struct rb_sockaddr_storage *, int *);
|
||||||
|
@ -57,9 +55,7 @@ struct ConfItem *find_dline(struct sockaddr *, int);
|
||||||
GET_SS_FAMILY(&(x)->localClient->ip), (x)->username, NULL))
|
GET_SS_FAMILY(&(x)->localClient->ip), (x)->username, NULL))
|
||||||
|
|
||||||
void report_auth(struct Client *);
|
void report_auth(struct Client *);
|
||||||
#ifdef RB_IPV6
|
|
||||||
int match_ipv6(struct sockaddr *, struct sockaddr *, int);
|
int match_ipv6(struct sockaddr *, struct sockaddr *, int);
|
||||||
#endif
|
|
||||||
int match_ipv4(struct sockaddr *, struct sockaddr *, int);
|
int match_ipv4(struct sockaddr *, struct sockaddr *, int);
|
||||||
|
|
||||||
/* Hashtable stuff... */
|
/* Hashtable stuff... */
|
||||||
|
|
|
@ -107,24 +107,11 @@
|
||||||
#define CLIENT_PARSE_ERROR -1
|
#define CLIENT_PARSE_ERROR -1
|
||||||
#define CLIENT_OK 1
|
#define CLIENT_OK 1
|
||||||
|
|
||||||
#ifdef RB_IPV6
|
|
||||||
#ifndef AF_INET6
|
#ifndef AF_INET6
|
||||||
#error "AF_INET6 not defined"
|
#error "AF_INET6 not defined"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#else /* #ifdef RB_IPV6 */
|
|
||||||
|
|
||||||
#ifndef AF_INET6
|
|
||||||
#define AF_INET6 AF_MAX /* Dummy AF_INET6 declaration */
|
|
||||||
#endif
|
|
||||||
#endif /* #ifdef RB_IPV6 */
|
|
||||||
|
|
||||||
#ifdef RB_IPV6
|
|
||||||
#define PATRICIA_BITS 128
|
#define PATRICIA_BITS 128
|
||||||
#else
|
|
||||||
#define PATRICIA_BITS 32
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Read buffer size */
|
/* Read buffer size */
|
||||||
#define READBUF_SIZE 16384
|
#define READBUF_SIZE 16384
|
||||||
|
|
|
@ -70,11 +70,7 @@ Info MyInformation[] = {
|
||||||
"Maximum Queue Length of Pending Connections"},
|
"Maximum Queue Length of Pending Connections"},
|
||||||
#endif /* SOMAXCONN */
|
#endif /* SOMAXCONN */
|
||||||
|
|
||||||
#ifdef RB_IPV6
|
|
||||||
{"IPV6", "ON", 0, "IPv6 Support"},
|
{"IPV6", "ON", 0, "IPv6 Support"},
|
||||||
#else
|
|
||||||
{"IPV6", "OFF", 0, "IPv6 Support"},
|
|
||||||
#endif
|
|
||||||
|
|
||||||
{"JOIN_LEAVE_COUNT_EXPIRE_TIME", "", JOIN_LEAVE_COUNT_EXPIRE_TIME,
|
{"JOIN_LEAVE_COUNT_EXPIRE_TIME", "", JOIN_LEAVE_COUNT_EXPIRE_TIME,
|
||||||
"Anti SpamBot Parameter"},
|
"Anti SpamBot Parameter"},
|
||||||
|
|
|
@ -283,10 +283,8 @@ struct server_info
|
||||||
char *network_name;
|
char *network_name;
|
||||||
int hub;
|
int hub;
|
||||||
struct rb_sockaddr_storage bind4;
|
struct rb_sockaddr_storage bind4;
|
||||||
int default_max_clients;
|
|
||||||
#ifdef RB_IPV6
|
|
||||||
struct rb_sockaddr_storage bind6;
|
struct rb_sockaddr_storage bind6;
|
||||||
#endif
|
int default_max_clients;
|
||||||
char *ssl_private_key;
|
char *ssl_private_key;
|
||||||
char *ssl_ca_cert;
|
char *ssl_ca_cert;
|
||||||
char *ssl_cert;
|
char *ssl_cert;
|
||||||
|
|
|
@ -181,10 +181,8 @@ struct server_conf
|
||||||
char *connect_host;
|
char *connect_host;
|
||||||
struct rb_sockaddr_storage connect4;
|
struct rb_sockaddr_storage connect4;
|
||||||
uint16_t dns_query_connect4;
|
uint16_t dns_query_connect4;
|
||||||
#ifdef RB_IPV6
|
|
||||||
struct rb_sockaddr_storage connect6;
|
struct rb_sockaddr_storage connect6;
|
||||||
uint16_t dns_query_connect6;
|
uint16_t dns_query_connect6;
|
||||||
#endif
|
|
||||||
char *passwd;
|
char *passwd;
|
||||||
char *spasswd;
|
char *spasswd;
|
||||||
char *certfp;
|
char *certfp;
|
||||||
|
@ -197,10 +195,8 @@ struct server_conf
|
||||||
char *bind_host;
|
char *bind_host;
|
||||||
struct rb_sockaddr_storage bind4;
|
struct rb_sockaddr_storage bind4;
|
||||||
uint16_t dns_query_bind4;
|
uint16_t dns_query_bind4;
|
||||||
#ifdef RB_IPV6
|
|
||||||
struct rb_sockaddr_storage bind6;
|
struct rb_sockaddr_storage bind6;
|
||||||
uint16_t dns_query_bind6;
|
uint16_t dns_query_bind6;
|
||||||
#endif
|
|
||||||
|
|
||||||
char *class_name;
|
char *class_name;
|
||||||
struct Class *class;
|
struct Class *class;
|
||||||
|
|
|
@ -335,11 +335,9 @@ configure_authd(void)
|
||||||
rb_helper_write(authd_helper, "O opm_listener %s %hu",
|
rb_helper_write(authd_helper, "O opm_listener %s %hu",
|
||||||
opm_listeners[LISTEN_IPV4].ipaddr, opm_listeners[LISTEN_IPV4].port);
|
opm_listeners[LISTEN_IPV4].ipaddr, opm_listeners[LISTEN_IPV4].port);
|
||||||
|
|
||||||
#ifdef RB_IPV6
|
|
||||||
if(opm_listeners[LISTEN_IPV6].ipaddr[0] != '\0')
|
if(opm_listeners[LISTEN_IPV6].ipaddr[0] != '\0')
|
||||||
rb_helper_write(authd_helper, "O opm_listener %s %hu",
|
rb_helper_write(authd_helper, "O opm_listener %s %hu",
|
||||||
opm_listeners[LISTEN_IPV6].ipaddr, opm_listeners[LISTEN_IPV6].port);
|
opm_listeners[LISTEN_IPV6].ipaddr, opm_listeners[LISTEN_IPV6].port);
|
||||||
#endif
|
|
||||||
|
|
||||||
RB_DLINK_FOREACH(ptr, opm_list.head)
|
RB_DLINK_FOREACH(ptr, opm_list.head)
|
||||||
{
|
{
|
||||||
|
|
|
@ -226,11 +226,9 @@ bandb_check_kline(struct ConfItem *aconf)
|
||||||
|
|
||||||
if(aftype != HM_HOST)
|
if(aftype != HM_HOST)
|
||||||
{
|
{
|
||||||
#ifdef RB_IPV6
|
|
||||||
if(aftype == HM_IPV6)
|
if(aftype == HM_IPV6)
|
||||||
aftype = AF_INET6;
|
aftype = AF_INET6;
|
||||||
else
|
else
|
||||||
#endif
|
|
||||||
aftype = AF_INET;
|
aftype = AF_INET;
|
||||||
|
|
||||||
kconf = find_conf_by_address(aconf->host, NULL, NULL, (struct sockaddr *)&daddr,
|
kconf = find_conf_by_address(aconf->host, NULL, NULL, (struct sockaddr *)&daddr,
|
||||||
|
|
|
@ -578,7 +578,6 @@ is_banned_list(struct Channel *chptr, rb_dlink_list *list,
|
||||||
s3 = src_althost;
|
s3 = src_althost;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef RB_IPV6
|
|
||||||
if(GET_SS_FAMILY(&who->localClient->ip) == AF_INET6 &&
|
if(GET_SS_FAMILY(&who->localClient->ip) == AF_INET6 &&
|
||||||
rb_ipv4_from_ipv6((const struct sockaddr_in6 *)&who->localClient->ip, &ip4))
|
rb_ipv4_from_ipv6((const struct sockaddr_in6 *)&who->localClient->ip, &ip4))
|
||||||
{
|
{
|
||||||
|
@ -588,7 +587,6 @@ is_banned_list(struct Channel *chptr, rb_dlink_list *list,
|
||||||
s4, src_ip4host + sizeof src_ip4host - s4);
|
s4, src_ip4host + sizeof src_ip4host - s4);
|
||||||
s4 = src_ip4host;
|
s4 = src_ip4host;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
RB_DLINK_FOREACH(ptr, list->head)
|
RB_DLINK_FOREACH(ptr, list->head)
|
||||||
{
|
{
|
||||||
|
@ -597,11 +595,8 @@ is_banned_list(struct Channel *chptr, rb_dlink_list *list,
|
||||||
match(actualBan->banstr, s2) ||
|
match(actualBan->banstr, s2) ||
|
||||||
match_cidr(actualBan->banstr, s2) ||
|
match_cidr(actualBan->banstr, s2) ||
|
||||||
match_extban(actualBan->banstr, who, chptr, CHFL_BAN) ||
|
match_extban(actualBan->banstr, who, chptr, CHFL_BAN) ||
|
||||||
(s3 != NULL && match(actualBan->banstr, s3))
|
(s3 != NULL && match(actualBan->banstr, s3)) ||
|
||||||
#ifdef RB_IPV6
|
|
||||||
||
|
|
||||||
(s4 != NULL && (match(actualBan->banstr, s4) || match_cidr(actualBan->banstr, s4)))
|
(s4 != NULL && (match(actualBan->banstr, s4) || match_cidr(actualBan->banstr, s4)))
|
||||||
#endif
|
|
||||||
)
|
)
|
||||||
break;
|
break;
|
||||||
else
|
else
|
||||||
|
|
|
@ -147,11 +147,9 @@ lookup_hostname(const char *hostname, int aftype, DNSCB callback, void *data)
|
||||||
req->callback = callback;
|
req->callback = callback;
|
||||||
req->data = data;
|
req->data = data;
|
||||||
|
|
||||||
#ifdef RB_IPV6
|
|
||||||
if(aftype == AF_INET6)
|
if(aftype == AF_INET6)
|
||||||
aft = 6;
|
aft = 6;
|
||||||
else
|
else
|
||||||
#endif
|
|
||||||
aft = 4;
|
aft = 4;
|
||||||
|
|
||||||
submit_dns(rid, aft == 4 ? DNS_HOST_IPV4 : DNS_HOST_IPV6, hostname);
|
submit_dns(rid, aft == 4 ? DNS_HOST_IPV4 : DNS_HOST_IPV6, hostname);
|
||||||
|
@ -172,11 +170,9 @@ lookup_ip(const char *addr, int aftype, DNSCB callback, void *data)
|
||||||
req->callback = callback;
|
req->callback = callback;
|
||||||
req->data = data;
|
req->data = data;
|
||||||
|
|
||||||
#ifdef RB_IPV6
|
|
||||||
if(aftype == AF_INET6)
|
if(aftype == AF_INET6)
|
||||||
aft = 6;
|
aft = 6;
|
||||||
else
|
else
|
||||||
#endif
|
|
||||||
aft = 4;
|
aft = 4;
|
||||||
|
|
||||||
submit_dns(rid, aft == 4 ? DNS_REVERSE_IPV4 : DNS_REVERSE_IPV6, addr);
|
submit_dns(rid, aft == 4 ? DNS_REVERSE_IPV4 : DNS_REVERSE_IPV6, addr);
|
||||||
|
@ -226,11 +222,9 @@ dns_results_callback(const char *callid, const char *status, const char *type, c
|
||||||
req->data = NULL;
|
req->data = NULL;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#ifdef RB_IPV6
|
|
||||||
if(aft == 6)
|
if(aft == 6)
|
||||||
aft = AF_INET6;
|
aft = AF_INET6;
|
||||||
else
|
else
|
||||||
#endif
|
|
||||||
aft = AF_INET;
|
aft = AF_INET;
|
||||||
|
|
||||||
req->callback(results, st, aft, req->data);
|
req->callback(results, st, aft, req->data);
|
||||||
|
|
|
@ -31,9 +31,7 @@
|
||||||
#include "send.h"
|
#include "send.h"
|
||||||
#include "match.h"
|
#include "match.h"
|
||||||
|
|
||||||
#ifdef RB_IPV6
|
|
||||||
static unsigned long hash_ipv6(struct sockaddr *, int);
|
static unsigned long hash_ipv6(struct sockaddr *, int);
|
||||||
#endif
|
|
||||||
static unsigned long hash_ipv4(struct sockaddr *, int);
|
static unsigned long hash_ipv4(struct sockaddr *, int);
|
||||||
|
|
||||||
|
|
||||||
|
@ -65,7 +63,6 @@ parse_netmask(const char *text, struct rb_sockaddr_storage *naddr, int *nb)
|
||||||
{
|
{
|
||||||
return HM_HOST;
|
return HM_HOST;
|
||||||
}
|
}
|
||||||
#ifdef RB_IPV6
|
|
||||||
if(strchr(ip, ':'))
|
if(strchr(ip, ':'))
|
||||||
{
|
{
|
||||||
if((ptr = strchr(ip, '/')))
|
if((ptr = strchr(ip, '/')))
|
||||||
|
@ -84,7 +81,6 @@ parse_netmask(const char *text, struct rb_sockaddr_storage *naddr, int *nb)
|
||||||
else
|
else
|
||||||
return HM_HOST;
|
return HM_HOST;
|
||||||
} else
|
} else
|
||||||
#endif
|
|
||||||
if(strchr(text, '.'))
|
if(strchr(text, '.'))
|
||||||
{
|
{
|
||||||
if((ptr = strchr(ip, '/')))
|
if((ptr = strchr(ip, '/')))
|
||||||
|
@ -139,7 +135,6 @@ hash_ipv4(struct sockaddr *saddr, int bits)
|
||||||
* Output: A hash value of the IP address.
|
* Output: A hash value of the IP address.
|
||||||
* Side effects: None
|
* Side effects: None
|
||||||
*/
|
*/
|
||||||
#ifdef RB_IPV6
|
|
||||||
static unsigned long
|
static unsigned long
|
||||||
hash_ipv6(struct sockaddr *saddr, int bits)
|
hash_ipv6(struct sockaddr *saddr, int bits)
|
||||||
{
|
{
|
||||||
|
@ -162,7 +157,6 @@ hash_ipv6(struct sockaddr *saddr, int bits)
|
||||||
}
|
}
|
||||||
return v & (ATABLE_SIZE - 1);
|
return v & (ATABLE_SIZE - 1);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
/* int hash_text(const char *start)
|
/* int hash_text(const char *start)
|
||||||
* Input: The start of the text to hash.
|
* Input: The start of the text to hash.
|
||||||
|
@ -227,7 +221,6 @@ find_conf_by_address(const char *name, const char *sockhost,
|
||||||
if(addr)
|
if(addr)
|
||||||
{
|
{
|
||||||
/* Check for IPV6 matches... */
|
/* Check for IPV6 matches... */
|
||||||
#ifdef RB_IPV6
|
|
||||||
if(fam == AF_INET6)
|
if(fam == AF_INET6)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -249,7 +242,6 @@ find_conf_by_address(const char *name, const char *sockhost,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
|
||||||
if(fam == AF_INET)
|
if(fam == AF_INET)
|
||||||
{
|
{
|
||||||
for (b = 32; b >= 0; b -= 8)
|
for (b = 32; b >= 0; b -= 8)
|
||||||
|
@ -369,9 +361,7 @@ find_address_conf(const char *host, const char *sockhost, const char *user,
|
||||||
{
|
{
|
||||||
struct ConfItem *iconf, *kconf;
|
struct ConfItem *iconf, *kconf;
|
||||||
const char *vuser;
|
const char *vuser;
|
||||||
#ifdef RB_IPV6
|
|
||||||
struct sockaddr_in ip4;
|
struct sockaddr_in ip4;
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Find the best I-line... If none, return NULL -A1kmm */
|
/* Find the best I-line... If none, return NULL -A1kmm */
|
||||||
if(!(iconf = find_conf_by_address(host, sockhost, NULL, ip, CONF_CLIENT, aftype, user, auth_user)))
|
if(!(iconf = find_conf_by_address(host, sockhost, NULL, ip, CONF_CLIENT, aftype, user, auth_user)))
|
||||||
|
@ -422,7 +412,6 @@ find_address_conf(const char *host, const char *sockhost, const char *user,
|
||||||
return kconf;
|
return kconf;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef RB_IPV6
|
|
||||||
if(ip != NULL && ip->sa_family == AF_INET6 &&
|
if(ip != NULL && ip->sa_family == AF_INET6 &&
|
||||||
rb_ipv4_from_ipv6((const struct sockaddr_in6 *)(const void *)ip, &ip4))
|
rb_ipv4_from_ipv6((const struct sockaddr_in6 *)(const void *)ip, &ip4))
|
||||||
{
|
{
|
||||||
|
@ -430,7 +419,6 @@ find_address_conf(const char *host, const char *sockhost, const char *user,
|
||||||
if(kconf)
|
if(kconf)
|
||||||
return kconf;
|
return kconf;
|
||||||
}
|
}
|
||||||
#endif /* RB_IPV6 */
|
|
||||||
|
|
||||||
return iconf;
|
return iconf;
|
||||||
}
|
}
|
||||||
|
@ -444,9 +432,7 @@ struct ConfItem *
|
||||||
find_dline(struct sockaddr *addr, int aftype)
|
find_dline(struct sockaddr *addr, int aftype)
|
||||||
{
|
{
|
||||||
struct ConfItem *aconf;
|
struct ConfItem *aconf;
|
||||||
#ifdef RB_IPV6
|
|
||||||
struct sockaddr_in addr2;
|
struct sockaddr_in addr2;
|
||||||
#endif
|
|
||||||
|
|
||||||
aconf = find_conf_by_address(NULL, NULL, NULL, addr, CONF_EXEMPTDLINE | 1, aftype, NULL, NULL);
|
aconf = find_conf_by_address(NULL, NULL, NULL, addr, CONF_EXEMPTDLINE | 1, aftype, NULL, NULL);
|
||||||
if(aconf)
|
if(aconf)
|
||||||
|
@ -454,7 +440,6 @@ find_dline(struct sockaddr *addr, int aftype)
|
||||||
aconf = find_conf_by_address(NULL, NULL, NULL, addr, CONF_DLINE | 1, aftype, NULL, NULL);
|
aconf = find_conf_by_address(NULL, NULL, NULL, addr, CONF_DLINE | 1, aftype, NULL, NULL);
|
||||||
if(aconf)
|
if(aconf)
|
||||||
return aconf;
|
return aconf;
|
||||||
#ifdef RB_IPV6
|
|
||||||
if(addr->sa_family == AF_INET6 &&
|
if(addr->sa_family == AF_INET6 &&
|
||||||
rb_ipv4_from_ipv6((const struct sockaddr_in6 *)(const void *)addr, &addr2))
|
rb_ipv4_from_ipv6((const struct sockaddr_in6 *)(const void *)addr, &addr2))
|
||||||
{
|
{
|
||||||
|
@ -462,7 +447,6 @@ find_dline(struct sockaddr *addr, int aftype)
|
||||||
if(aconf)
|
if(aconf)
|
||||||
return aconf;
|
return aconf;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -482,15 +466,12 @@ find_exact_conf_by_address(const char *address, int type, const char *username)
|
||||||
if(address == NULL)
|
if(address == NULL)
|
||||||
address = "/NOMATCH!/";
|
address = "/NOMATCH!/";
|
||||||
masktype = parse_netmask(address, &addr, &bits);
|
masktype = parse_netmask(address, &addr, &bits);
|
||||||
#ifdef RB_IPV6
|
|
||||||
if(masktype == HM_IPV6)
|
if(masktype == HM_IPV6)
|
||||||
{
|
{
|
||||||
/* We have to do this, since we do not re-hash for every bit -A1kmm. */
|
/* We have to do this, since we do not re-hash for every bit -A1kmm. */
|
||||||
hv = hash_ipv6((struct sockaddr *)&addr, bits - bits % 16);
|
hv = hash_ipv6((struct sockaddr *)&addr, bits - bits % 16);
|
||||||
}
|
}
|
||||||
else
|
else if(masktype == HM_IPV4)
|
||||||
#endif
|
|
||||||
if(masktype == HM_IPV4)
|
|
||||||
{
|
{
|
||||||
/* We have to do this, since we do not re-hash for every bit -A1kmm. */
|
/* We have to do this, since we do not re-hash for every bit -A1kmm. */
|
||||||
hv = hash_ipv4((struct sockaddr *)&addr, bits - bits % 8);
|
hv = hash_ipv4((struct sockaddr *)&addr, bits - bits % 8);
|
||||||
|
@ -539,7 +520,6 @@ add_conf_by_address(const char *address, int type, const char *username, const c
|
||||||
address = "/NOMATCH!/";
|
address = "/NOMATCH!/";
|
||||||
arec = rb_malloc(sizeof(struct AddressRec));
|
arec = rb_malloc(sizeof(struct AddressRec));
|
||||||
arec->masktype = parse_netmask(address, &arec->Mask.ipa.addr, &bits);
|
arec->masktype = parse_netmask(address, &arec->Mask.ipa.addr, &bits);
|
||||||
#ifdef RB_IPV6
|
|
||||||
if(arec->masktype == HM_IPV6)
|
if(arec->masktype == HM_IPV6)
|
||||||
{
|
{
|
||||||
arec->Mask.ipa.bits = bits;
|
arec->Mask.ipa.bits = bits;
|
||||||
|
@ -548,9 +528,7 @@ add_conf_by_address(const char *address, int type, const char *username, const c
|
||||||
arec->next = atable[(hv = hash_ipv6((struct sockaddr *)&arec->Mask.ipa.addr, bits))];
|
arec->next = atable[(hv = hash_ipv6((struct sockaddr *)&arec->Mask.ipa.addr, bits))];
|
||||||
atable[hv] = arec;
|
atable[hv] = arec;
|
||||||
}
|
}
|
||||||
else
|
else if(arec->masktype == HM_IPV4)
|
||||||
#endif
|
|
||||||
if(arec->masktype == HM_IPV4)
|
|
||||||
{
|
{
|
||||||
arec->Mask.ipa.bits = bits;
|
arec->Mask.ipa.bits = bits;
|
||||||
/* We have to do this, since we do not re-hash for every bit -A1kmm. */
|
/* We have to do this, since we do not re-hash for every bit -A1kmm. */
|
||||||
|
@ -585,16 +563,13 @@ delete_one_address_conf(const char *address, struct ConfItem *aconf)
|
||||||
struct AddressRec *arec, *arecl = NULL;
|
struct AddressRec *arec, *arecl = NULL;
|
||||||
struct rb_sockaddr_storage addr;
|
struct rb_sockaddr_storage addr;
|
||||||
masktype = parse_netmask(address, &addr, &bits);
|
masktype = parse_netmask(address, &addr, &bits);
|
||||||
#ifdef RB_IPV6
|
|
||||||
if(masktype == HM_IPV6)
|
if(masktype == HM_IPV6)
|
||||||
{
|
{
|
||||||
/* We have to do this, since we do not re-hash for every bit -A1kmm. */
|
/* We have to do this, since we do not re-hash for every bit -A1kmm. */
|
||||||
bits -= bits % 16;
|
bits -= bits % 16;
|
||||||
hv = hash_ipv6((struct sockaddr *)&addr, bits);
|
hv = hash_ipv6((struct sockaddr *)&addr, bits);
|
||||||
}
|
}
|
||||||
else
|
else if(masktype == HM_IPV4)
|
||||||
#endif
|
|
||||||
if(masktype == HM_IPV4)
|
|
||||||
{
|
{
|
||||||
/* We have to do this, since we do not re-hash for every bit -A1kmm. */
|
/* We have to do this, since we do not re-hash for every bit -A1kmm. */
|
||||||
bits -= bits % 8;
|
bits -= bits % 8;
|
||||||
|
|
|
@ -43,7 +43,7 @@
|
||||||
#include "s_assert.h"
|
#include "s_assert.h"
|
||||||
#include "logger.h"
|
#include "logger.h"
|
||||||
|
|
||||||
#if defined(NO_IN6ADDR_ANY) && defined(RB_IPV6)
|
#if defined(NO_IN6ADDR_ANY)
|
||||||
static const struct in6_addr in6addr_any =
|
static const struct in6_addr in6addr_any =
|
||||||
{ { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } } };
|
{ { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } } };
|
||||||
#endif
|
#endif
|
||||||
|
@ -164,7 +164,6 @@ inetport(struct Listener *listener)
|
||||||
|
|
||||||
F = rb_socket(GET_SS_FAMILY(&listener->addr), SOCK_STREAM, 0, "Listener socket");
|
F = rb_socket(GET_SS_FAMILY(&listener->addr), SOCK_STREAM, 0, "Listener socket");
|
||||||
|
|
||||||
#ifdef RB_IPV6
|
|
||||||
if(GET_SS_FAMILY(&listener->addr) == AF_INET6)
|
if(GET_SS_FAMILY(&listener->addr) == AF_INET6)
|
||||||
{
|
{
|
||||||
struct sockaddr_in6 *in6 = (struct sockaddr_in6 *)&listener->addr;
|
struct sockaddr_in6 *in6 = (struct sockaddr_in6 *)&listener->addr;
|
||||||
|
@ -173,9 +172,7 @@ inetport(struct Listener *listener)
|
||||||
rb_inet_ntop(AF_INET6, &in6->sin6_addr, listener->vhost, sizeof(listener->vhost));
|
rb_inet_ntop(AF_INET6, &in6->sin6_addr, listener->vhost, sizeof(listener->vhost));
|
||||||
listener->name = listener->vhost;
|
listener->name = listener->vhost;
|
||||||
}
|
}
|
||||||
} else
|
} else {
|
||||||
#endif
|
|
||||||
{
|
|
||||||
struct sockaddr_in *in = (struct sockaddr_in *)&listener->addr;
|
struct sockaddr_in *in = (struct sockaddr_in *)&listener->addr;
|
||||||
if(in->sin_addr.s_addr != INADDR_ANY)
|
if(in->sin_addr.s_addr != INADDR_ANY)
|
||||||
{
|
{
|
||||||
|
@ -281,7 +278,6 @@ find_listener(struct rb_sockaddr_storage *addr)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#ifdef RB_IPV6
|
|
||||||
case AF_INET6:
|
case AF_INET6:
|
||||||
{
|
{
|
||||||
struct sockaddr_in6 *in6 = (struct sockaddr_in6 *)addr;
|
struct sockaddr_in6 *in6 = (struct sockaddr_in6 *)addr;
|
||||||
|
@ -297,7 +293,6 @@ find_listener(struct rb_sockaddr_storage *addr)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -334,14 +329,12 @@ add_listener(int port, const char *vhost_ip, int family, int ssl, int defer_acce
|
||||||
if(rb_inet_pton(family, vhost_ip, &((struct sockaddr_in *)&vaddr)->sin_addr) <= 0)
|
if(rb_inet_pton(family, vhost_ip, &((struct sockaddr_in *)&vaddr)->sin_addr) <= 0)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#ifdef RB_IPV6
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(rb_inet_pton(family, vhost_ip, &((struct sockaddr_in6 *)&vaddr)->sin6_addr) <= 0)
|
if(rb_inet_pton(family, vhost_ip, &((struct sockaddr_in6 *)&vaddr)->sin6_addr) <= 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
switch(family)
|
switch(family)
|
||||||
|
@ -349,13 +342,11 @@ add_listener(int port, const char *vhost_ip, int family, int ssl, int defer_acce
|
||||||
case AF_INET:
|
case AF_INET:
|
||||||
((struct sockaddr_in *)&vaddr)->sin_addr.s_addr = INADDR_ANY;
|
((struct sockaddr_in *)&vaddr)->sin_addr.s_addr = INADDR_ANY;
|
||||||
break;
|
break;
|
||||||
#ifdef RB_IPV6
|
|
||||||
case AF_INET6:
|
case AF_INET6:
|
||||||
memcpy(&((struct sockaddr_in6 *)&vaddr)->sin6_addr, &in6addr_any, sizeof(struct in6_addr));
|
memcpy(&((struct sockaddr_in6 *)&vaddr)->sin6_addr, &in6addr_any, sizeof(struct in6_addr));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return;
|
return;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
switch(family)
|
switch(family)
|
||||||
|
@ -365,13 +356,11 @@ add_listener(int port, const char *vhost_ip, int family, int ssl, int defer_acce
|
||||||
SET_SS_FAMILY(&vaddr, AF_INET);
|
SET_SS_FAMILY(&vaddr, AF_INET);
|
||||||
SET_SS_PORT(&vaddr, htons(port));
|
SET_SS_PORT(&vaddr, htons(port));
|
||||||
break;
|
break;
|
||||||
#ifdef RB_IPV6
|
|
||||||
case AF_INET6:
|
case AF_INET6:
|
||||||
SET_SS_LEN(&vaddr, sizeof(struct sockaddr_in6));
|
SET_SS_LEN(&vaddr, sizeof(struct sockaddr_in6));
|
||||||
SET_SS_FAMILY(&vaddr, AF_INET6);
|
SET_SS_FAMILY(&vaddr, AF_INET6);
|
||||||
SET_SS_PORT(&vaddr, htons(port));
|
SET_SS_PORT(&vaddr, htons(port));
|
||||||
break;
|
break;
|
||||||
#endif
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
12
ircd/match.c
12
ircd/match.c
|
@ -332,14 +332,12 @@ int comp_with_mask_sock(struct sockaddr *addr, struct sockaddr *dest, unsigned i
|
||||||
iaddr = &((struct sockaddr_in *)(void *)addr)->sin_addr;
|
iaddr = &((struct sockaddr_in *)(void *)addr)->sin_addr;
|
||||||
idest = &((struct sockaddr_in *)(void *)dest)->sin_addr;
|
idest = &((struct sockaddr_in *)(void *)dest)->sin_addr;
|
||||||
}
|
}
|
||||||
#ifdef RB_IPV6
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
iaddr = &((struct sockaddr_in6 *)(void *)addr)->sin6_addr;
|
iaddr = &((struct sockaddr_in6 *)(void *)addr)->sin6_addr;
|
||||||
idest = &((struct sockaddr_in6 *)(void *)dest)->sin6_addr;
|
idest = &((struct sockaddr_in6 *)(void *)dest)->sin6_addr;
|
||||||
|
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
return (comp_with_mask(iaddr, idest, mask));
|
return (comp_with_mask(iaddr, idest, mask));
|
||||||
}
|
}
|
||||||
|
@ -371,7 +369,6 @@ int match_ips(const char *s1, const char *s2)
|
||||||
if (cidrlen <= 0)
|
if (cidrlen <= 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
#ifdef RB_IPV6
|
|
||||||
if (strchr(mask, ':') && strchr(address, ':'))
|
if (strchr(mask, ':') && strchr(address, ':'))
|
||||||
{
|
{
|
||||||
if (cidrlen > 128)
|
if (cidrlen > 128)
|
||||||
|
@ -381,9 +378,7 @@ int match_ips(const char *s1, const char *s2)
|
||||||
ipptr = &((struct sockaddr_in6 *)&ipaddr)->sin6_addr;
|
ipptr = &((struct sockaddr_in6 *)&ipaddr)->sin6_addr;
|
||||||
maskptr = &((struct sockaddr_in6 *)&maskaddr)->sin6_addr;
|
maskptr = &((struct sockaddr_in6 *)&maskaddr)->sin6_addr;
|
||||||
}
|
}
|
||||||
else
|
else if (!strchr(mask, ':') && !strchr(address, ':'))
|
||||||
#endif
|
|
||||||
if (!strchr(mask, ':') && !strchr(address, ':'))
|
|
||||||
{
|
{
|
||||||
if (cidrlen > 32)
|
if (cidrlen > 32)
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -447,7 +442,6 @@ int match_cidr(const char *s1, const char *s2)
|
||||||
if (cidrlen <= 0)
|
if (cidrlen <= 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
#ifdef RB_IPV6
|
|
||||||
if (strchr(ip, ':') && strchr(ipmask, ':'))
|
if (strchr(ip, ':') && strchr(ipmask, ':'))
|
||||||
{
|
{
|
||||||
if (cidrlen > 128)
|
if (cidrlen > 128)
|
||||||
|
@ -457,9 +451,7 @@ int match_cidr(const char *s1, const char *s2)
|
||||||
ipptr = &((struct sockaddr_in6 *)&ipaddr)->sin6_addr;
|
ipptr = &((struct sockaddr_in6 *)&ipaddr)->sin6_addr;
|
||||||
maskptr = &((struct sockaddr_in6 *)&maskaddr)->sin6_addr;
|
maskptr = &((struct sockaddr_in6 *)&maskaddr)->sin6_addr;
|
||||||
}
|
}
|
||||||
else
|
else if (!strchr(ip, ':') && !strchr(ipmask, ':'))
|
||||||
#endif
|
|
||||||
if (!strchr(ip, ':') && !strchr(ipmask, ':'))
|
|
||||||
{
|
{
|
||||||
if (cidrlen > 32)
|
if (cidrlen > 32)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -259,7 +259,6 @@ static void
|
||||||
conf_set_serverinfo_vhost6(void *data)
|
conf_set_serverinfo_vhost6(void *data)
|
||||||
{
|
{
|
||||||
|
|
||||||
#ifdef RB_IPV6
|
|
||||||
struct rb_sockaddr_storage addr;
|
struct rb_sockaddr_storage addr;
|
||||||
|
|
||||||
if(rb_inet_pton_sock(data, (struct sockaddr *)&addr) <= 0 || GET_SS_FAMILY(&addr) != AF_INET6)
|
if(rb_inet_pton_sock(data, (struct sockaddr *)&addr) <= 0 || GET_SS_FAMILY(&addr) != AF_INET6)
|
||||||
|
@ -269,9 +268,6 @@ conf_set_serverinfo_vhost6(void *data)
|
||||||
}
|
}
|
||||||
|
|
||||||
ServerInfo.bind6 = addr;
|
ServerInfo.bind6 = addr;
|
||||||
#else
|
|
||||||
conf_report_error("Warning -- ignoring serverinfo::vhost6 -- IPv6 support not available.");
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -778,7 +774,6 @@ conf_set_class_cidr_ipv4_bitlen(void *data)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef RB_IPV6
|
|
||||||
static void
|
static void
|
||||||
conf_set_class_cidr_ipv6_bitlen(void *data)
|
conf_set_class_cidr_ipv6_bitlen(void *data)
|
||||||
{
|
{
|
||||||
|
@ -791,7 +786,6 @@ conf_set_class_cidr_ipv6_bitlen(void *data)
|
||||||
yy_class->cidr_ipv6_bitlen = *(unsigned int *) data;
|
yy_class->cidr_ipv6_bitlen = *(unsigned int *) data;
|
||||||
|
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
conf_set_class_number_per_cidr(void *data)
|
conf_set_class_number_per_cidr(void *data)
|
||||||
|
@ -890,18 +884,14 @@ conf_set_listen_port_both(void *data, int ssl)
|
||||||
"It is suggested that users be migrated to SSL/TLS connections.", args->v.number);
|
"It is suggested that users be migrated to SSL/TLS connections.", args->v.number);
|
||||||
}
|
}
|
||||||
add_listener(args->v.number, listener_address, AF_INET, ssl, ssl || yy_defer_accept, yy_wsock);
|
add_listener(args->v.number, listener_address, AF_INET, ssl, ssl || yy_defer_accept, yy_wsock);
|
||||||
#ifdef RB_IPV6
|
|
||||||
add_listener(args->v.number, listener_address, AF_INET6, ssl, ssl || yy_defer_accept, yy_wsock);
|
add_listener(args->v.number, listener_address, AF_INET6, ssl, ssl || yy_defer_accept, yy_wsock);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int family;
|
int family;
|
||||||
#ifdef RB_IPV6
|
|
||||||
if(strchr(listener_address, ':') != NULL)
|
if(strchr(listener_address, ':') != NULL)
|
||||||
family = AF_INET6;
|
family = AF_INET6;
|
||||||
else
|
else
|
||||||
#endif
|
|
||||||
family = AF_INET;
|
family = AF_INET;
|
||||||
|
|
||||||
if (!ssl)
|
if (!ssl)
|
||||||
|
@ -1320,9 +1310,7 @@ conf_end_connect(struct TopConf *tc)
|
||||||
|
|
||||||
if(EmptyString(yy_server->connect_host)
|
if(EmptyString(yy_server->connect_host)
|
||||||
&& GET_SS_FAMILY(&yy_server->connect4) != AF_INET
|
&& GET_SS_FAMILY(&yy_server->connect4) != AF_INET
|
||||||
#ifdef RB_IPV6
|
|
||||||
&& GET_SS_FAMILY(&yy_server->connect6) != AF_INET6
|
&& GET_SS_FAMILY(&yy_server->connect6) != AF_INET6
|
||||||
#endif
|
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
conf_report_error("Ignoring connect block for %s -- missing host.",
|
conf_report_error("Ignoring connect block for %s -- missing host.",
|
||||||
|
@ -1359,12 +1347,10 @@ conf_set_connect_host(void *data)
|
||||||
{
|
{
|
||||||
yy_server->connect4 = addr;
|
yy_server->connect4 = addr;
|
||||||
}
|
}
|
||||||
#ifdef RB_IPV6
|
|
||||||
else if(GET_SS_FAMILY(&addr) == AF_INET6)
|
else if(GET_SS_FAMILY(&addr) == AF_INET6)
|
||||||
{
|
{
|
||||||
yy_server->connect6 = addr;
|
yy_server->connect6 = addr;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
conf_report_error("Unsupported IP address for server connect host (%s)",
|
conf_report_error("Unsupported IP address for server connect host (%s)",
|
||||||
|
@ -1387,12 +1373,10 @@ conf_set_connect_vhost(void *data)
|
||||||
{
|
{
|
||||||
yy_server->bind4 = addr;
|
yy_server->bind4 = addr;
|
||||||
}
|
}
|
||||||
#ifdef RB_IPV6
|
|
||||||
else if(GET_SS_FAMILY(&addr) == AF_INET6)
|
else if(GET_SS_FAMILY(&addr) == AF_INET6)
|
||||||
{
|
{
|
||||||
yy_server->bind6 = addr;
|
yy_server->bind6 = addr;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
conf_report_error("Unsupported IP address for server connect vhost (%s)",
|
conf_report_error("Unsupported IP address for server connect vhost (%s)",
|
||||||
|
@ -1453,10 +1437,8 @@ conf_set_connect_aftype(void *data)
|
||||||
|
|
||||||
if(rb_strcasecmp(aft, "ipv4") == 0)
|
if(rb_strcasecmp(aft, "ipv4") == 0)
|
||||||
yy_server->aftype = AF_INET;
|
yy_server->aftype = AF_INET;
|
||||||
#ifdef RB_IPV6
|
|
||||||
else if(rb_strcasecmp(aft, "ipv6") == 0)
|
else if(rb_strcasecmp(aft, "ipv6") == 0)
|
||||||
yy_server->aftype = AF_INET6;
|
yy_server->aftype = AF_INET6;
|
||||||
#endif
|
|
||||||
else
|
else
|
||||||
conf_report_error("connect::aftype '%s' is unknown.", aft);
|
conf_report_error("connect::aftype '%s' is unknown.", aft);
|
||||||
}
|
}
|
||||||
|
@ -2207,7 +2189,6 @@ conf_set_opm_listen_address_both(void *data, bool ipv6)
|
||||||
|
|
||||||
if(ipv6)
|
if(ipv6)
|
||||||
{
|
{
|
||||||
#ifdef RB_IPV6
|
|
||||||
if(GET_SS_FAMILY(&addr) != AF_INET6)
|
if(GET_SS_FAMILY(&addr) != AF_INET6)
|
||||||
{
|
{
|
||||||
conf_report_error("%s is of the wrong address type: %s", confstr, ip);
|
conf_report_error("%s is of the wrong address type: %s", confstr, ip);
|
||||||
|
@ -2221,10 +2202,6 @@ conf_set_opm_listen_address_both(void *data, bool ipv6)
|
||||||
}
|
}
|
||||||
|
|
||||||
yy_opm_address_ipv6 = rb_strdup(ip);
|
yy_opm_address_ipv6 = rb_strdup(ip);
|
||||||
#else
|
|
||||||
conf_report_error("%s requires IPv6 support in your ircd", confstr, ip);
|
|
||||||
return;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -2262,14 +2239,6 @@ conf_set_opm_listen_port_both(void *data, bool ipv6)
|
||||||
int port = *((int *)data);
|
int port = *((int *)data);
|
||||||
const char *confstr = (ipv6 ? "opm::port_ipv6" : "opm::port_ipv4");
|
const char *confstr = (ipv6 ? "opm::port_ipv6" : "opm::port_ipv4");
|
||||||
|
|
||||||
#ifndef RB_IPV6
|
|
||||||
if(ipv6)
|
|
||||||
{
|
|
||||||
conf_report_error("%s requires IPv6 support in your ircd", confstr);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if(port > 65535 || port <= 0)
|
if(port > 65535 || port <= 0)
|
||||||
{
|
{
|
||||||
conf_report_error("%s is out of range: %d", confstr, port);
|
conf_report_error("%s is out of range: %d", confstr, port);
|
||||||
|
@ -2696,9 +2665,7 @@ static struct ConfEntry conf_class_table[] =
|
||||||
{
|
{
|
||||||
{ "ping_time", CF_TIME, conf_set_class_ping_time, 0, NULL },
|
{ "ping_time", CF_TIME, conf_set_class_ping_time, 0, NULL },
|
||||||
{ "cidr_ipv4_bitlen", CF_INT, conf_set_class_cidr_ipv4_bitlen, 0, NULL },
|
{ "cidr_ipv4_bitlen", CF_INT, conf_set_class_cidr_ipv4_bitlen, 0, NULL },
|
||||||
#ifdef RB_IPV6
|
|
||||||
{ "cidr_ipv6_bitlen", CF_INT, conf_set_class_cidr_ipv6_bitlen, 0, NULL },
|
{ "cidr_ipv6_bitlen", CF_INT, conf_set_class_cidr_ipv6_bitlen, 0, NULL },
|
||||||
#endif
|
|
||||||
{ "number_per_cidr", CF_INT, conf_set_class_number_per_cidr, 0, NULL },
|
{ "number_per_cidr", CF_INT, conf_set_class_number_per_cidr, 0, NULL },
|
||||||
{ "number_per_ip", CF_INT, conf_set_class_number_per_ip, 0, NULL },
|
{ "number_per_ip", CF_INT, conf_set_class_number_per_ip, 0, NULL },
|
||||||
{ "number_per_ip_global", CF_INT,conf_set_class_number_per_ip_global, 0, NULL },
|
{ "number_per_ip_global", CF_INT,conf_set_class_number_per_ip_global, 0, NULL },
|
||||||
|
|
|
@ -166,10 +166,8 @@ add_reject(struct Client *client_p, const char *mask1, const char *mask2)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int bitlen = 32;
|
int bitlen = 32;
|
||||||
#ifdef RB_IPV6
|
|
||||||
if(GET_SS_FAMILY(&client_p->localClient->ip) == AF_INET6)
|
if(GET_SS_FAMILY(&client_p->localClient->ip) == AF_INET6)
|
||||||
bitlen = 128;
|
bitlen = 128;
|
||||||
#endif
|
|
||||||
pnode = make_and_lookup_ip(reject_tree, (struct sockaddr *)&client_p->localClient->ip, bitlen);
|
pnode = make_and_lookup_ip(reject_tree, (struct sockaddr *)&client_p->localClient->ip, bitlen);
|
||||||
pnode->data = rdata = rb_malloc(sizeof(reject_t));
|
pnode->data = rdata = rb_malloc(sizeof(reject_t));
|
||||||
rb_dlinkAddTail(pnode, &rdata->rnode, &reject_list);
|
rb_dlinkAddTail(pnode, &rdata->rnode, &reject_list);
|
||||||
|
@ -321,10 +319,8 @@ throttle_add(struct sockaddr *addr)
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
int bitlen = 32;
|
int bitlen = 32;
|
||||||
#ifdef RB_IPV6
|
|
||||||
if(GET_SS_FAMILY(addr) == AF_INET6)
|
if(GET_SS_FAMILY(addr) == AF_INET6)
|
||||||
bitlen = 128;
|
bitlen = 128;
|
||||||
#endif
|
|
||||||
t = rb_malloc(sizeof(throttle_t));
|
t = rb_malloc(sizeof(throttle_t));
|
||||||
t->last = rb_current_time();
|
t->last = rb_current_time();
|
||||||
t->count = 1;
|
t->count = 1;
|
||||||
|
|
|
@ -679,10 +679,8 @@ set_default_conf(void)
|
||||||
|
|
||||||
memset(&ServerInfo.bind4, 0, sizeof(ServerInfo.bind4));
|
memset(&ServerInfo.bind4, 0, sizeof(ServerInfo.bind4));
|
||||||
SET_SS_FAMILY(&ServerInfo.bind4, AF_UNSPEC);
|
SET_SS_FAMILY(&ServerInfo.bind4, AF_UNSPEC);
|
||||||
#ifdef RB_IPV6
|
|
||||||
memset(&ServerInfo.bind6, 0, sizeof(ServerInfo.bind6));
|
memset(&ServerInfo.bind6, 0, sizeof(ServerInfo.bind6));
|
||||||
SET_SS_FAMILY(&ServerInfo.bind6, AF_UNSPEC);
|
SET_SS_FAMILY(&ServerInfo.bind6, AF_UNSPEC);
|
||||||
#endif
|
|
||||||
|
|
||||||
AdminInfo.name = NULL;
|
AdminInfo.name = NULL;
|
||||||
AdminInfo.email = NULL;
|
AdminInfo.email = NULL;
|
||||||
|
|
|
@ -331,13 +331,11 @@ make_server_conf(void)
|
||||||
SET_SS_FAMILY(&server_p->bind4, AF_UNSPEC);
|
SET_SS_FAMILY(&server_p->bind4, AF_UNSPEC);
|
||||||
SET_SS_LEN(&server_p->bind4, sizeof(struct sockaddr_in));
|
SET_SS_LEN(&server_p->bind4, sizeof(struct sockaddr_in));
|
||||||
|
|
||||||
#ifdef RB_IPV6
|
|
||||||
SET_SS_FAMILY(&server_p->connect6, AF_UNSPEC);
|
SET_SS_FAMILY(&server_p->connect6, AF_UNSPEC);
|
||||||
SET_SS_LEN(&server_p->connect6, sizeof(struct sockaddr_in6));
|
SET_SS_LEN(&server_p->connect6, sizeof(struct sockaddr_in6));
|
||||||
|
|
||||||
SET_SS_FAMILY(&server_p->bind6, AF_UNSPEC);
|
SET_SS_FAMILY(&server_p->bind6, AF_UNSPEC);
|
||||||
SET_SS_LEN(&server_p->bind6, sizeof(struct sockaddr_in6));
|
SET_SS_LEN(&server_p->bind6, sizeof(struct sockaddr_in6));
|
||||||
#endif
|
|
||||||
|
|
||||||
server_p->aftype = AF_UNSPEC;
|
server_p->aftype = AF_UNSPEC;
|
||||||
|
|
||||||
|
@ -393,7 +391,6 @@ conf_connect_dns_callback(const char *result, int status, int aftype, void *data
|
||||||
|
|
||||||
server_p->dns_query_connect4 = 0;
|
server_p->dns_query_connect4 = 0;
|
||||||
}
|
}
|
||||||
#ifdef RB_IPV6
|
|
||||||
else if(aftype == AF_INET6)
|
else if(aftype == AF_INET6)
|
||||||
{
|
{
|
||||||
if(status == 1)
|
if(status == 1)
|
||||||
|
@ -401,7 +398,6 @@ conf_connect_dns_callback(const char *result, int status, int aftype, void *data
|
||||||
|
|
||||||
server_p->dns_query_connect6 = 0;
|
server_p->dns_query_connect6 = 0;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -426,7 +422,6 @@ conf_bind_dns_callback(const char *result, int status, int aftype, void *data)
|
||||||
|
|
||||||
server_p->dns_query_bind4 = 0;
|
server_p->dns_query_bind4 = 0;
|
||||||
}
|
}
|
||||||
#ifdef RB_IPV6
|
|
||||||
else if(aftype == AF_INET6)
|
else if(aftype == AF_INET6)
|
||||||
{
|
{
|
||||||
if(status == 1)
|
if(status == 1)
|
||||||
|
@ -434,7 +429,6 @@ conf_bind_dns_callback(const char *result, int status, int aftype, void *data)
|
||||||
|
|
||||||
server_p->dns_query_bind6 = 0;
|
server_p->dns_query_bind6 = 0;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -462,20 +456,16 @@ add_server_conf(struct server_conf *server_p)
|
||||||
{
|
{
|
||||||
server_p->dns_query_connect4 =
|
server_p->dns_query_connect4 =
|
||||||
lookup_hostname(server_p->connect_host, AF_INET, conf_connect_dns_callback, server_p);
|
lookup_hostname(server_p->connect_host, AF_INET, conf_connect_dns_callback, server_p);
|
||||||
#ifdef RB_IPV6
|
|
||||||
server_p->dns_query_connect6 =
|
server_p->dns_query_connect6 =
|
||||||
lookup_hostname(server_p->connect_host, AF_INET6, conf_connect_dns_callback, server_p);
|
lookup_hostname(server_p->connect_host, AF_INET6, conf_connect_dns_callback, server_p);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(server_p->bind_host)
|
if(server_p->bind_host)
|
||||||
{
|
{
|
||||||
server_p->dns_query_bind4 =
|
server_p->dns_query_bind4 =
|
||||||
lookup_hostname(server_p->bind_host, AF_INET, conf_bind_dns_callback, server_p);
|
lookup_hostname(server_p->bind_host, AF_INET, conf_bind_dns_callback, server_p);
|
||||||
#ifdef RB_IPV6
|
|
||||||
server_p->dns_query_bind6 =
|
server_p->dns_query_bind6 =
|
||||||
lookup_hostname(server_p->bind_host, AF_INET6, conf_bind_dns_callback, server_p);
|
lookup_hostname(server_p->bind_host, AF_INET6, conf_bind_dns_callback, server_p);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -379,11 +379,9 @@ check_server(const char *name, struct Client *client_p)
|
||||||
|| (GET_SS_FAMILY(&client_addr) == GET_SS_FAMILY(&tmp_p->connect4)
|
|| (GET_SS_FAMILY(&client_addr) == GET_SS_FAMILY(&tmp_p->connect4)
|
||||||
&& comp_with_mask_sock((struct sockaddr *)&client_addr,
|
&& comp_with_mask_sock((struct sockaddr *)&client_addr,
|
||||||
(struct sockaddr *)&tmp_p->connect4, 32))
|
(struct sockaddr *)&tmp_p->connect4, 32))
|
||||||
#ifdef RB_IPV6
|
|
||||||
|| (GET_SS_FAMILY(&client_addr) == GET_SS_FAMILY(&tmp_p->connect6)
|
|| (GET_SS_FAMILY(&client_addr) == GET_SS_FAMILY(&tmp_p->connect6)
|
||||||
&& comp_with_mask_sock((struct sockaddr *)&client_addr,
|
&& comp_with_mask_sock((struct sockaddr *)&client_addr,
|
||||||
(struct sockaddr *)&tmp_p->connect6, 128))
|
(struct sockaddr *)&tmp_p->connect6, 128))
|
||||||
#endif
|
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
host_matched = true;
|
host_matched = true;
|
||||||
|
@ -1045,7 +1043,6 @@ serv_connect(struct server_conf *server_p, struct Client *by)
|
||||||
SET_SS_FAMILY(&sa_connect, AF_UNSPEC);
|
SET_SS_FAMILY(&sa_connect, AF_UNSPEC);
|
||||||
SET_SS_FAMILY(&sa_bind, AF_UNSPEC);
|
SET_SS_FAMILY(&sa_bind, AF_UNSPEC);
|
||||||
|
|
||||||
#ifdef RB_IPV6
|
|
||||||
if(server_p->aftype != AF_UNSPEC
|
if(server_p->aftype != AF_UNSPEC
|
||||||
&& GET_SS_FAMILY(&server_p->connect4) == AF_INET
|
&& GET_SS_FAMILY(&server_p->connect4) == AF_INET
|
||||||
&& GET_SS_FAMILY(&server_p->connect6) == AF_INET6)
|
&& GET_SS_FAMILY(&server_p->connect6) == AF_INET6)
|
||||||
|
@ -1062,18 +1059,15 @@ serv_connect(struct server_conf *server_p, struct Client *by)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(server_p->aftype == AF_INET || GET_SS_FAMILY(&server_p->connect4) == AF_INET)
|
else if(server_p->aftype == AF_INET || GET_SS_FAMILY(&server_p->connect4) == AF_INET)
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
sa_connect = server_p->connect4;
|
sa_connect = server_p->connect4;
|
||||||
sa_bind = server_p->bind4;
|
sa_bind = server_p->bind4;
|
||||||
}
|
}
|
||||||
#ifdef RB_IPV6
|
|
||||||
else if(server_p->aftype == AF_INET6 || GET_SS_FAMILY(&server_p->connect6) == AF_INET6)
|
else if(server_p->aftype == AF_INET6 || GET_SS_FAMILY(&server_p->connect6) == AF_INET6)
|
||||||
{
|
{
|
||||||
sa_connect = server_p->connect6;
|
sa_connect = server_p->connect6;
|
||||||
sa_bind = server_p->bind6;
|
sa_bind = server_p->bind6;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
/* log */
|
/* log */
|
||||||
buf[0] = 0;
|
buf[0] = 0;
|
||||||
|
@ -1171,10 +1165,8 @@ serv_connect(struct server_conf *server_p, struct Client *by)
|
||||||
{
|
{
|
||||||
if(GET_SS_FAMILY(&sa_connect) == GET_SS_FAMILY(&ServerInfo.bind4))
|
if(GET_SS_FAMILY(&sa_connect) == GET_SS_FAMILY(&ServerInfo.bind4))
|
||||||
sa_bind = ServerInfo.bind4;
|
sa_bind = ServerInfo.bind4;
|
||||||
#ifdef RB_IPV6
|
|
||||||
if(GET_SS_FAMILY(&sa_connect) == GET_SS_FAMILY(&ServerInfo.bind6))
|
if(GET_SS_FAMILY(&sa_connect) == GET_SS_FAMILY(&ServerInfo.bind6))
|
||||||
sa_bind = ServerInfo.bind6;
|
sa_bind = ServerInfo.bind6;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
rb_connect_tcp(client_p->localClient->F,
|
rb_connect_tcp(client_p->localClient->F,
|
||||||
|
|
|
@ -172,27 +172,6 @@ rb_socklen_t=$rb_cv_socklen_t
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
AC_ARG_ENABLE(ipv6,AC_HELP_STRING([--disable-ipv6],[Disable IPv6 support]),[ipv6=$enableval],[ipv6=yes])
|
|
||||||
|
|
||||||
if test x$ipv6 != xyes; then
|
|
||||||
have_v6="no"
|
|
||||||
else
|
|
||||||
|
|
||||||
have_v6=yes
|
|
||||||
RB_PROTO_INET6([], [
|
|
||||||
AC_MSG_NOTICE([Disabling IPv6 support: PF_INET6 not found])
|
|
||||||
have_v6=no
|
|
||||||
])
|
|
||||||
|
|
||||||
if test "X$have_v6" = "Xyes"; then
|
|
||||||
RB_TYPE_STRUCT_SOCKADDR_IN6([], [
|
|
||||||
AC_MSG_NOTICE([Disabling IPv6 support: struct sockaddr_in6 not found])
|
|
||||||
have_v6=no
|
|
||||||
])
|
|
||||||
fi
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_CHECK_TYPES([struct sockaddr_storage],[
|
AC_CHECK_TYPES([struct sockaddr_storage],[
|
||||||
rb_have_sockaddr_storage=yes
|
rb_have_sockaddr_storage=yes
|
||||||
],[], [
|
],[], [
|
||||||
|
@ -490,10 +469,6 @@ AC_CONFIG_COMMANDS([include/librb-config.h],
|
||||||
|
|
||||||
_______EOF
|
_______EOF
|
||||||
|
|
||||||
if test "x$rb_have_ipv6" = "xyes"; then
|
|
||||||
echo "#define RB_IPV6 1" >> $outfile
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "x$rb_windows_h" = "xyes"; then
|
if test "x$rb_windows_h" = "xyes"; then
|
||||||
echo '#define WIN32_LEAN_AND_MEAN 1' >> $outfile
|
echo '#define WIN32_LEAN_AND_MEAN 1' >> $outfile
|
||||||
echo '#include <windows.h>' >> $outfile
|
echo '#include <windows.h>' >> $outfile
|
||||||
|
@ -664,8 +639,6 @@ fi
|
||||||
rb_sockaddr_storage="no"
|
rb_sockaddr_storage="no"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
rb_have_ipv6="$have_v6"
|
|
||||||
|
|
||||||
rb_mv="$MV"
|
rb_mv="$MV"
|
||||||
rb_rm="$RM"
|
rb_rm="$RM"
|
||||||
|
|
||||||
|
@ -691,7 +664,6 @@ echo
|
||||||
|
|
||||||
echo "Installing into: $prefix"
|
echo "Installing into: $prefix"
|
||||||
|
|
||||||
echo "IPv6 support ................... $have_v6"
|
|
||||||
echo "Assert debugging ............... $assert"
|
echo "Assert debugging ............... $assert"
|
||||||
echo "SSL Type........................ $SSL_TYPE"
|
echo "SSL Type........................ $SSL_TYPE"
|
||||||
echo
|
echo
|
||||||
|
|
|
@ -176,14 +176,9 @@ char *rb_strerror(int error);
|
||||||
#define GET_SS_LEN(x) (((struct sockaddr *)(x))->sa_len)
|
#define GET_SS_LEN(x) (((struct sockaddr *)(x))->sa_len)
|
||||||
#else /* !RB_SOCKADDR_HAS_SA_LEN */
|
#else /* !RB_SOCKADDR_HAS_SA_LEN */
|
||||||
#define SET_SS_LEN(x, y) (((struct sockaddr *)(x))->sa_family = ((struct sockaddr *)(x))->sa_family)
|
#define SET_SS_LEN(x, y) (((struct sockaddr *)(x))->sa_family = ((struct sockaddr *)(x))->sa_family)
|
||||||
#ifdef RB_IPV6
|
|
||||||
#define GET_SS_LEN(x) (((struct sockaddr *)(x))->sa_family == AF_INET ? sizeof(struct sockaddr_in) : sizeof(struct sockaddr_in6))
|
#define GET_SS_LEN(x) (((struct sockaddr *)(x))->sa_family == AF_INET ? sizeof(struct sockaddr_in) : sizeof(struct sockaddr_in6))
|
||||||
#else
|
|
||||||
#define GET_SS_LEN(x) (((struct sockaddr *)(x))->sa_family == AF_INET ? sizeof(struct sockaddr_in) : 0)
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef RB_IPV6
|
|
||||||
#define GET_SS_PORT(x) (((struct sockaddr *)(x))->sa_family == AF_INET ? ((struct sockaddr_in *)(x))->sin_port : ((struct sockaddr_in6 *)(x))->sin6_port)
|
#define GET_SS_PORT(x) (((struct sockaddr *)(x))->sa_family == AF_INET ? ((struct sockaddr_in *)(x))->sin_port : ((struct sockaddr_in6 *)(x))->sin6_port)
|
||||||
#define SET_SS_PORT(x, y) do { \
|
#define SET_SS_PORT(x, y) do { \
|
||||||
if(((struct sockaddr *)(x))->sa_family == AF_INET) { \
|
if(((struct sockaddr *)(x))->sa_family == AF_INET) { \
|
||||||
|
@ -192,10 +187,6 @@ char *rb_strerror(int error);
|
||||||
((struct sockaddr_in6 *)(x))->sin6_port = (y); \
|
((struct sockaddr_in6 *)(x))->sin6_port = (y); \
|
||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
#else
|
|
||||||
#define GET_SS_PORT(x) (((struct sockaddr_in *)(x))->sin_port)
|
|
||||||
#define SET_SS_PORT(x, y) (((struct sockaddr_in *)(x))->sin_port = y)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef INADDRSZ
|
#ifndef INADDRSZ
|
||||||
#define INADDRSZ 4
|
#define INADDRSZ 4
|
||||||
|
|
|
@ -36,9 +36,7 @@ typedef struct _rb_prefix_t
|
||||||
union
|
union
|
||||||
{
|
{
|
||||||
struct in_addr sin;
|
struct in_addr sin;
|
||||||
#ifdef RB_IPV6
|
|
||||||
struct in6_addr sin6;
|
struct in6_addr sin6;
|
||||||
#endif /* RB_IPV6 */
|
|
||||||
}
|
}
|
||||||
add;
|
add;
|
||||||
}
|
}
|
||||||
|
|
|
@ -69,9 +69,7 @@ int rb_maxconnections = 0;
|
||||||
|
|
||||||
static PF rb_connect_timeout;
|
static PF rb_connect_timeout;
|
||||||
static PF rb_connect_tryconnect;
|
static PF rb_connect_tryconnect;
|
||||||
#ifdef RB_IPV6
|
|
||||||
static void mangle_mapped_sockaddr(struct sockaddr *in);
|
static void mangle_mapped_sockaddr(struct sockaddr *in);
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef HAVE_SOCKETPAIR
|
#ifndef HAVE_SOCKETPAIR
|
||||||
static int rb_inet_socketpair(int d, int type, int protocol, rb_platform_fd_t sv[2]);
|
static int rb_inet_socketpair(int d, int type, int protocol, rb_platform_fd_t sv[2]);
|
||||||
|
@ -382,9 +380,7 @@ rb_accept_tryaccept(rb_fde_t *F, void *data)
|
||||||
rb_close(new_F);
|
rb_close(new_F);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef RB_IPV6
|
|
||||||
mangle_mapped_sockaddr((struct sockaddr *)&st);
|
mangle_mapped_sockaddr((struct sockaddr *)&st);
|
||||||
#endif
|
|
||||||
|
|
||||||
if(F->accept->precb != NULL)
|
if(F->accept->precb != NULL)
|
||||||
{
|
{
|
||||||
|
@ -708,7 +704,6 @@ rb_socket(int family, int sock_type, int proto, const char *note)
|
||||||
if(rb_unlikely(fd < 0))
|
if(rb_unlikely(fd < 0))
|
||||||
return NULL; /* errno will be passed through, yay.. */
|
return NULL; /* errno will be passed through, yay.. */
|
||||||
|
|
||||||
#if defined(RB_IPV6) && defined(IPV6_V6ONLY)
|
|
||||||
/*
|
/*
|
||||||
* Make sure we can take both IPv4 and IPv6 connections
|
* Make sure we can take both IPv4 and IPv6 connections
|
||||||
* on an AF_INET6 socket
|
* on an AF_INET6 socket
|
||||||
|
@ -724,7 +719,6 @@ rb_socket(int family, int sock_type, int proto, const char *note)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
F = rb_open(fd, RB_FD_SOCKET, note);
|
F = rb_open(fd, RB_FD_SOCKET, note);
|
||||||
if(F == NULL)
|
if(F == NULL)
|
||||||
|
@ -749,7 +743,6 @@ rb_socket(int family, int sock_type, int proto, const char *note)
|
||||||
* If a sockaddr_storage is AF_INET6 but is a mapped IPv4
|
* If a sockaddr_storage is AF_INET6 but is a mapped IPv4
|
||||||
* socket manged the sockaddr.
|
* socket manged the sockaddr.
|
||||||
*/
|
*/
|
||||||
#ifdef RB_IPV6
|
|
||||||
static void
|
static void
|
||||||
mangle_mapped_sockaddr(struct sockaddr *in)
|
mangle_mapped_sockaddr(struct sockaddr *in)
|
||||||
{
|
{
|
||||||
|
@ -765,7 +758,6 @@ mangle_mapped_sockaddr(struct sockaddr *in)
|
||||||
memcpy(in, &in4, sizeof(struct sockaddr_in));
|
memcpy(in, &in4, sizeof(struct sockaddr_in));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* rb_listen() - listen on a port
|
* rb_listen() - listen on a port
|
||||||
|
@ -1180,9 +1172,7 @@ inetntoa(const char *in)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static const char *inet_ntop4(const unsigned char *src, char *dst, unsigned int size);
|
static const char *inet_ntop4(const unsigned char *src, char *dst, unsigned int size);
|
||||||
#ifdef RB_IPV6
|
|
||||||
static const char *inet_ntop6(const unsigned char *src, char *dst, unsigned int size);
|
static const char *inet_ntop6(const unsigned char *src, char *dst, unsigned int size);
|
||||||
#endif
|
|
||||||
|
|
||||||
/* const char *
|
/* const char *
|
||||||
* inet_ntop4(src, dst, size)
|
* inet_ntop4(src, dst, size)
|
||||||
|
@ -1209,7 +1199,6 @@ inet_ntop4(const unsigned char *src, char *dst, unsigned int size)
|
||||||
* author:
|
* author:
|
||||||
* Paul Vixie, 1996.
|
* Paul Vixie, 1996.
|
||||||
*/
|
*/
|
||||||
#ifdef RB_IPV6
|
|
||||||
static const char *
|
static const char *
|
||||||
inet_ntop6(const unsigned char *src, char *dst, unsigned int size)
|
inet_ntop6(const unsigned char *src, char *dst, unsigned int size)
|
||||||
{
|
{
|
||||||
|
@ -1314,7 +1303,6 @@ inet_ntop6(const unsigned char *src, char *dst, unsigned int size)
|
||||||
}
|
}
|
||||||
return memcpy(dst, tmp, tp - tmp);
|
return memcpy(dst, tmp, tp - tmp);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
int
|
int
|
||||||
rb_inet_pton_sock(const char *src, struct sockaddr *dst)
|
rb_inet_pton_sock(const char *src, struct sockaddr *dst)
|
||||||
|
@ -1326,7 +1314,6 @@ rb_inet_pton_sock(const char *src, struct sockaddr *dst)
|
||||||
SET_SS_LEN(dst, sizeof(struct sockaddr_in));
|
SET_SS_LEN(dst, sizeof(struct sockaddr_in));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
#ifdef RB_IPV6
|
|
||||||
else if(rb_inet_pton(AF_INET6, src, &((struct sockaddr_in6 *)dst)->sin6_addr))
|
else if(rb_inet_pton(AF_INET6, src, &((struct sockaddr_in6 *)dst)->sin6_addr))
|
||||||
{
|
{
|
||||||
SET_SS_FAMILY(dst, AF_INET6);
|
SET_SS_FAMILY(dst, AF_INET6);
|
||||||
|
@ -1334,7 +1321,6 @@ rb_inet_pton_sock(const char *src, struct sockaddr *dst)
|
||||||
SET_SS_LEN(dst, sizeof(struct sockaddr_in6));
|
SET_SS_LEN(dst, sizeof(struct sockaddr_in6));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1345,11 +1331,9 @@ rb_inet_ntop_sock(struct sockaddr *src, char *dst, unsigned int size)
|
||||||
{
|
{
|
||||||
case AF_INET:
|
case AF_INET:
|
||||||
return (rb_inet_ntop(AF_INET, &((struct sockaddr_in *)src)->sin_addr, dst, size));
|
return (rb_inet_ntop(AF_INET, &((struct sockaddr_in *)src)->sin_addr, dst, size));
|
||||||
#ifdef RB_IPV6
|
|
||||||
case AF_INET6:
|
case AF_INET6:
|
||||||
return (rb_inet_ntop
|
return (rb_inet_ntop
|
||||||
(AF_INET6, &((struct sockaddr_in6 *)src)->sin6_addr, dst, size));
|
(AF_INET6, &((struct sockaddr_in6 *)src)->sin6_addr, dst, size));
|
||||||
#endif
|
|
||||||
default:
|
default:
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -1370,7 +1354,6 @@ rb_inet_ntop(int af, const void *src, char *dst, unsigned int size)
|
||||||
{
|
{
|
||||||
case AF_INET:
|
case AF_INET:
|
||||||
return (inet_ntop4(src, dst, size));
|
return (inet_ntop4(src, dst, size));
|
||||||
#ifdef RB_IPV6
|
|
||||||
case AF_INET6:
|
case AF_INET6:
|
||||||
if(IN6_IS_ADDR_V4MAPPED((const struct in6_addr *)src) ||
|
if(IN6_IS_ADDR_V4MAPPED((const struct in6_addr *)src) ||
|
||||||
IN6_IS_ADDR_V4COMPAT((const struct in6_addr *)src))
|
IN6_IS_ADDR_V4COMPAT((const struct in6_addr *)src))
|
||||||
|
@ -1379,9 +1362,6 @@ rb_inet_ntop(int af, const void *src, char *dst, unsigned int size)
|
||||||
s6_addr[12], dst, size));
|
s6_addr[12], dst, size));
|
||||||
else
|
else
|
||||||
return (inet_ntop6(src, dst, size));
|
return (inet_ntop6(src, dst, size));
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
default:
|
default:
|
||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
|
@ -1457,7 +1437,6 @@ inet_pton4(const char *src, unsigned char *dst)
|
||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef RB_IPV6
|
|
||||||
/* int
|
/* int
|
||||||
* inet_pton6(src, dst)
|
* inet_pton6(src, dst)
|
||||||
* convert presentation level address to network order binary form.
|
* convert presentation level address to network order binary form.
|
||||||
|
@ -1570,7 +1549,7 @@ inet_pton6(const char *src, unsigned char *dst)
|
||||||
memcpy(dst, tmp, IN6ADDRSZ);
|
memcpy(dst, tmp, IN6ADDRSZ);
|
||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
int
|
int
|
||||||
rb_inet_pton(int af, const char *src, void *dst)
|
rb_inet_pton(int af, const char *src, void *dst)
|
||||||
{
|
{
|
||||||
|
@ -1578,7 +1557,6 @@ rb_inet_pton(int af, const char *src, void *dst)
|
||||||
{
|
{
|
||||||
case AF_INET:
|
case AF_INET:
|
||||||
return (inet_pton4(src, dst));
|
return (inet_pton4(src, dst));
|
||||||
#ifdef RB_IPV6
|
|
||||||
case AF_INET6:
|
case AF_INET6:
|
||||||
/* Somebody might have passed as an IPv4 address this is sick but it works */
|
/* Somebody might have passed as an IPv4 address this is sick but it works */
|
||||||
if(inet_pton4(src, dst))
|
if(inet_pton4(src, dst))
|
||||||
|
@ -1589,7 +1567,6 @@ rb_inet_pton(int af, const char *src, void *dst)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return (inet_pton6(src, dst));
|
return (inet_pton6(src, dst));
|
||||||
#endif
|
|
||||||
default:
|
default:
|
||||||
return (-1);
|
return (-1);
|
||||||
}
|
}
|
||||||
|
@ -2257,7 +2234,6 @@ rb_send_fd_buf(rb_fde_t *xF, rb_fde_t **F, int count, void *data, size_t datasiz
|
||||||
#endif /* _WIN32 */
|
#endif /* _WIN32 */
|
||||||
#endif /* defined(HAVE_SENDMSG) && !defined(WIN32) */
|
#endif /* defined(HAVE_SENDMSG) && !defined(WIN32) */
|
||||||
|
|
||||||
#ifdef RB_IPV6
|
|
||||||
int
|
int
|
||||||
rb_ipv4_from_ipv6(const struct sockaddr_in6 *restrict ip6, struct sockaddr_in *restrict ip4)
|
rb_ipv4_from_ipv6(const struct sockaddr_in6 *restrict ip6, struct sockaddr_in *restrict ip4)
|
||||||
{
|
{
|
||||||
|
@ -2282,10 +2258,3 @@ rb_ipv4_from_ipv6(const struct sockaddr_in6 *restrict ip6, struct sockaddr_in *r
|
||||||
ip4->sin_port = 0;
|
ip4->sin_port = 0;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
int
|
|
||||||
rb_ipv4_from_ipv6(const struct sockaddr_in6 *restrict ip6, struct sockaddr_in *restrict ip4)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#endif /* RB_IPV6 */
|
|
||||||
|
|
|
@ -92,25 +92,17 @@ prefix_toa2(rb_prefix_t *prefix, char *buff, int buf_len)
|
||||||
static char *
|
static char *
|
||||||
prefix_toa(rb_prefix_t *prefix)
|
prefix_toa(rb_prefix_t *prefix)
|
||||||
{
|
{
|
||||||
#ifdef RB_IPV6
|
|
||||||
static char buf[INET6_ADDRSTRLEN + 6];
|
static char buf[INET6_ADDRSTRLEN + 6];
|
||||||
#else
|
|
||||||
static char buf[16 + 6];
|
|
||||||
#endif
|
|
||||||
return (prefix_toa2(prefix, buf, sizeof(buf)));
|
return (prefix_toa2(prefix, buf, sizeof(buf)));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static rb_prefix_t *
|
static rb_prefix_t *
|
||||||
New_Prefix2(int family, void *dest, int bitlen, rb_prefix_t *prefix)
|
New_Prefix2(int family, void *dest, int bitlen, rb_prefix_t *prefix)
|
||||||
{
|
{
|
||||||
int dynamic_allocated = 0;
|
int dynamic_allocated = 0;
|
||||||
#ifdef RB_IPV6
|
|
||||||
int default_bitlen = 128;
|
int default_bitlen = 128;
|
||||||
#else
|
|
||||||
int default_bitlen = 32;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef RB_IPV6
|
|
||||||
if(family == AF_INET6)
|
if(family == AF_INET6)
|
||||||
{
|
{
|
||||||
default_bitlen = 128;
|
default_bitlen = 128;
|
||||||
|
@ -121,9 +113,7 @@ New_Prefix2(int family, void *dest, int bitlen, rb_prefix_t *prefix)
|
||||||
}
|
}
|
||||||
memcpy(&prefix->add.sin6, dest, 16);
|
memcpy(&prefix->add.sin6, dest, 16);
|
||||||
}
|
}
|
||||||
else
|
else if(family == AF_INET)
|
||||||
#endif /* RB_IPV6 */
|
|
||||||
if(family == AF_INET)
|
|
||||||
{
|
{
|
||||||
if(prefix == NULL)
|
if(prefix == NULL)
|
||||||
{
|
{
|
||||||
|
@ -161,9 +151,7 @@ ascii2prefix(int family, const char *string)
|
||||||
long bitlen, maxbitlen = 0;
|
long bitlen, maxbitlen = 0;
|
||||||
char *cp;
|
char *cp;
|
||||||
struct in_addr sinaddr;
|
struct in_addr sinaddr;
|
||||||
#ifdef RB_IPV6
|
|
||||||
struct in6_addr sinaddr6;
|
struct in6_addr sinaddr6;
|
||||||
#endif /* RB_IPV6 */
|
|
||||||
int result;
|
int result;
|
||||||
char save[MAXLINE];
|
char save[MAXLINE];
|
||||||
|
|
||||||
|
@ -174,21 +162,17 @@ ascii2prefix(int family, const char *string)
|
||||||
if(family == 0)
|
if(family == 0)
|
||||||
{
|
{
|
||||||
family = AF_INET;
|
family = AF_INET;
|
||||||
#ifdef RB_IPV6
|
|
||||||
if(strchr(string, ':'))
|
if(strchr(string, ':'))
|
||||||
family = AF_INET6;
|
family = AF_INET6;
|
||||||
#endif /* RB_IPV6 */
|
|
||||||
}
|
}
|
||||||
if(family == AF_INET)
|
if(family == AF_INET)
|
||||||
{
|
{
|
||||||
maxbitlen = 32;
|
maxbitlen = 32;
|
||||||
}
|
}
|
||||||
#ifdef RB_IPV6
|
|
||||||
else if(family == AF_INET6)
|
else if(family == AF_INET6)
|
||||||
{
|
{
|
||||||
maxbitlen = 128;
|
maxbitlen = 128;
|
||||||
}
|
}
|
||||||
#endif /* RB_IPV6 */
|
|
||||||
|
|
||||||
if((cp = strchr(string, '/')) != NULL)
|
if((cp = strchr(string, '/')) != NULL)
|
||||||
{
|
{
|
||||||
|
@ -213,14 +197,12 @@ ascii2prefix(int family, const char *string)
|
||||||
return (NULL);
|
return (NULL);
|
||||||
return (New_Prefix(AF_INET, &sinaddr, bitlen));
|
return (New_Prefix(AF_INET, &sinaddr, bitlen));
|
||||||
}
|
}
|
||||||
#ifdef RB_IPV6
|
|
||||||
else if(family == AF_INET6)
|
else if(family == AF_INET6)
|
||||||
{
|
{
|
||||||
if((result = rb_inet_pton(AF_INET6, string, &sinaddr6)) <= 0)
|
if((result = rb_inet_pton(AF_INET6, string, &sinaddr6)) <= 0)
|
||||||
return (NULL);
|
return (NULL);
|
||||||
return (New_Prefix(AF_INET6, &sinaddr6, bitlen));
|
return (New_Prefix(AF_INET6, &sinaddr6, bitlen));
|
||||||
}
|
}
|
||||||
#endif /* RB_IPV6 */
|
|
||||||
else
|
else
|
||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
|
@ -916,11 +898,9 @@ make_and_lookup_ip(rb_patricia_tree_t *tree, struct sockaddr *in, int bitlen)
|
||||||
rb_prefix_t *prefix;
|
rb_prefix_t *prefix;
|
||||||
rb_patricia_node_t *node;
|
rb_patricia_node_t *node;
|
||||||
void *ipptr = NULL;
|
void *ipptr = NULL;
|
||||||
#ifdef RB_IPV6
|
|
||||||
if(in->sa_family == AF_INET6)
|
if(in->sa_family == AF_INET6)
|
||||||
ipptr = &((struct sockaddr_in6 *)in)->sin6_addr;
|
ipptr = &((struct sockaddr_in6 *)in)->sin6_addr;
|
||||||
else
|
else
|
||||||
#endif
|
|
||||||
ipptr = &((struct sockaddr_in *)in)->sin_addr;
|
ipptr = &((struct sockaddr_in *)in)->sin_addr;
|
||||||
|
|
||||||
prefix = New_Prefix(in->sa_family, ipptr, bitlen);
|
prefix = New_Prefix(in->sa_family, ipptr, bitlen);
|
||||||
|
@ -948,13 +928,11 @@ make_and_lookup(rb_patricia_tree_t *tree, const char *string)
|
||||||
node = rb_patricia_lookup(tree, prefix);
|
node = rb_patricia_lookup(tree, prefix);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#ifdef RB_IPV6
|
|
||||||
if((prefix = ascii2prefix(AF_INET6, string)) != NULL)
|
if((prefix = ascii2prefix(AF_INET6, string)) != NULL)
|
||||||
{
|
{
|
||||||
node = rb_patricia_lookup(tree, prefix);
|
node = rb_patricia_lookup(tree, prefix);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
|
||||||
return NULL;
|
return NULL;
|
||||||
#ifdef PATRICIA_DEBUG
|
#ifdef PATRICIA_DEBUG
|
||||||
printf("make_and_lookup: %s/%d\n", prefix_toa(prefix), prefix->bitlen);
|
printf("make_and_lookup: %s/%d\n", prefix_toa(prefix), prefix->bitlen);
|
||||||
|
@ -975,14 +953,12 @@ try_search_exact(rb_patricia_tree_t *tree, char *string)
|
||||||
Deref_Prefix(prefix);
|
Deref_Prefix(prefix);
|
||||||
return (node);
|
return (node);
|
||||||
}
|
}
|
||||||
#ifdef RB_IPV6
|
|
||||||
else if((prefix = ascii2prefix(AF_INET6, string)) != NULL)
|
else if((prefix = ascii2prefix(AF_INET6, string)) != NULL)
|
||||||
{
|
{
|
||||||
node = rb_patricia_search_exact(tree, prefix);
|
node = rb_patricia_search_exact(tree, prefix);
|
||||||
Deref_Prefix(prefix);
|
Deref_Prefix(prefix);
|
||||||
return (node);
|
return (node);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
else
|
else
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -1005,11 +981,7 @@ rb_match_ip(rb_patricia_tree_t *tree, struct sockaddr *ip)
|
||||||
void *ipptr;
|
void *ipptr;
|
||||||
unsigned int len;
|
unsigned int len;
|
||||||
int family;
|
int family;
|
||||||
#ifndef RB_IPV6
|
|
||||||
len = 32;
|
|
||||||
family = AF_INET;
|
|
||||||
ipptr = &((struct sockaddr_in *)ip)->sin_addr;
|
|
||||||
#else
|
|
||||||
if(ip->sa_family == AF_INET6)
|
if(ip->sa_family == AF_INET6)
|
||||||
{
|
{
|
||||||
len = 128;
|
len = 128;
|
||||||
|
@ -1022,7 +994,6 @@ rb_match_ip(rb_patricia_tree_t *tree, struct sockaddr *ip)
|
||||||
family = AF_INET;
|
family = AF_INET;
|
||||||
ipptr = &((struct sockaddr_in *)ip)->sin_addr;
|
ipptr = &((struct sockaddr_in *)ip)->sin_addr;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
if((prefix = New_Prefix(family, ipptr, len)) != NULL)
|
if((prefix = New_Prefix(family, ipptr, len)) != NULL)
|
||||||
{
|
{
|
||||||
|
@ -1040,13 +1011,7 @@ rb_match_ip_exact(rb_patricia_tree_t *tree, struct sockaddr *ip, unsigned int le
|
||||||
rb_patricia_node_t *node;
|
rb_patricia_node_t *node;
|
||||||
void *ipptr;
|
void *ipptr;
|
||||||
int family;
|
int family;
|
||||||
#ifndef RB_IPV6
|
|
||||||
if(len > 128)
|
|
||||||
len = 128;
|
|
||||||
|
|
||||||
family = AF_INET;
|
|
||||||
ipptr = &((struct sockaddr_in *)ip)->sin_addr;
|
|
||||||
#else
|
|
||||||
if(ip->sa_family == AF_INET6)
|
if(ip->sa_family == AF_INET6)
|
||||||
{
|
{
|
||||||
if(len > 128)
|
if(len > 128)
|
||||||
|
@ -1061,7 +1026,6 @@ rb_match_ip_exact(rb_patricia_tree_t *tree, struct sockaddr *ip, unsigned int le
|
||||||
family = AF_INET;
|
family = AF_INET;
|
||||||
ipptr = &((struct sockaddr_in *)ip)->sin_addr;
|
ipptr = &((struct sockaddr_in *)ip)->sin_addr;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
if((prefix = New_Prefix(family, ipptr, len)) != NULL)
|
if((prefix = New_Prefix(family, ipptr, len)) != NULL)
|
||||||
{
|
{
|
||||||
|
@ -1086,14 +1050,12 @@ rb_match_string(rb_patricia_tree_t *tree, const char *string)
|
||||||
Deref_Prefix(prefix);
|
Deref_Prefix(prefix);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#ifdef RB_IPV6
|
|
||||||
if((prefix = ascii2prefix(AF_INET6, string)) != NULL)
|
if((prefix = ascii2prefix(AF_INET6, string)) != NULL)
|
||||||
{
|
{
|
||||||
node = rb_patricia_search_best(tree, prefix);
|
node = rb_patricia_search_best(tree, prefix);
|
||||||
Deref_Prefix(prefix);
|
Deref_Prefix(prefix);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
|
||||||
return NULL;
|
return NULL;
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
|
@ -1109,14 +1071,12 @@ rb_match_exact_string(rb_patricia_tree_t *tree, const char *string)
|
||||||
Deref_Prefix(prefix);
|
Deref_Prefix(prefix);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#ifdef RB_IPV6
|
|
||||||
if((prefix = ascii2prefix(AF_INET6, string)) != NULL)
|
if((prefix = ascii2prefix(AF_INET6, string)) != NULL)
|
||||||
{
|
{
|
||||||
node = rb_patricia_search_exact(tree, prefix);
|
node = rb_patricia_search_exact(tree, prefix);
|
||||||
Deref_Prefix(prefix);
|
Deref_Prefix(prefix);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
|
||||||
return NULL;
|
return NULL;
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
|
|
|
@ -222,11 +222,9 @@ apply_dline(struct Client *source_p, const char *dlhost, int tdline_time, char *
|
||||||
sendto_one(source_p, ":%s NOTICE %s :Invalid D-Line", me.name, source_p->name);
|
sendto_one(source_p, ":%s NOTICE %s :Invalid D-Line", me.name, source_p->name);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#ifdef RB_IPV6
|
|
||||||
if(ty == HM_IPV6)
|
if(ty == HM_IPV6)
|
||||||
t = AF_INET6;
|
t = AF_INET6;
|
||||||
else
|
else
|
||||||
#endif
|
|
||||||
t = AF_INET;
|
t = AF_INET;
|
||||||
|
|
||||||
/* This means dlines wider than /16 cannot be set remotely */
|
/* This means dlines wider than /16 cannot be set remotely */
|
||||||
|
|
|
@ -107,12 +107,10 @@ mo_etrace(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *sourc
|
||||||
{
|
{
|
||||||
if(!irccmp(parv[1], "-full"))
|
if(!irccmp(parv[1], "-full"))
|
||||||
do_etrace_full(source_p);
|
do_etrace_full(source_p);
|
||||||
#ifdef RB_IPV6
|
|
||||||
else if(!irccmp(parv[1], "-v6"))
|
else if(!irccmp(parv[1], "-v6"))
|
||||||
do_etrace(source_p, 0, 1);
|
do_etrace(source_p, 0, 1);
|
||||||
else if(!irccmp(parv[1], "-v4"))
|
else if(!irccmp(parv[1], "-v4"))
|
||||||
do_etrace(source_p, 1, 0);
|
do_etrace(source_p, 1, 0);
|
||||||
#endif
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
struct Client *target_p = find_named_person(parv[1]);
|
struct Client *target_p = find_named_person(parv[1]);
|
||||||
|
@ -163,11 +161,9 @@ do_etrace(struct Client *source_p, int ipv4, int ipv6)
|
||||||
{
|
{
|
||||||
target_p = ptr->data;
|
target_p = ptr->data;
|
||||||
|
|
||||||
#ifdef RB_IPV6
|
|
||||||
if((!ipv4 && GET_SS_FAMILY(&target_p->localClient->ip) == AF_INET) ||
|
if((!ipv4 && GET_SS_FAMILY(&target_p->localClient->ip) == AF_INET) ||
|
||||||
(!ipv6 && GET_SS_FAMILY(&target_p->localClient->ip) == AF_INET6))
|
(!ipv6 && GET_SS_FAMILY(&target_p->localClient->ip) == AF_INET6))
|
||||||
continue;
|
continue;
|
||||||
#endif
|
|
||||||
|
|
||||||
sendto_one(source_p, form_str(RPL_ETRACE),
|
sendto_one(source_p, form_str(RPL_ETRACE),
|
||||||
me.name, source_p->name,
|
me.name, source_p->name,
|
||||||
|
|
|
@ -715,11 +715,9 @@ already_placed_kline(struct Client *source_p, const char *luser, const char *lho
|
||||||
bits = 0;
|
bits = 0;
|
||||||
if((t = parse_netmask(lhost, &iphost, &bits)) != HM_HOST)
|
if((t = parse_netmask(lhost, &iphost, &bits)) != HM_HOST)
|
||||||
{
|
{
|
||||||
#ifdef RB_IPV6
|
|
||||||
if(t == HM_IPV6)
|
if(t == HM_IPV6)
|
||||||
t = AF_INET6;
|
t = AF_INET6;
|
||||||
else
|
else
|
||||||
#endif
|
|
||||||
t = AF_INET;
|
t = AF_INET;
|
||||||
|
|
||||||
piphost = &iphost;
|
piphost = &iphost;
|
||||||
|
|
|
@ -123,11 +123,9 @@ mo_testline(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *sou
|
||||||
/* parses as an IP, check for a dline */
|
/* parses as an IP, check for a dline */
|
||||||
if((type = parse_netmask(host, &ip, &host_mask)) != HM_HOST)
|
if((type = parse_netmask(host, &ip, &host_mask)) != HM_HOST)
|
||||||
{
|
{
|
||||||
#ifdef RB_IPV6
|
|
||||||
if(type == HM_IPV6)
|
if(type == HM_IPV6)
|
||||||
aconf = find_dline((struct sockaddr *)&ip, AF_INET6);
|
aconf = find_dline((struct sockaddr *)&ip, AF_INET6);
|
||||||
else
|
else
|
||||||
#endif
|
|
||||||
aconf = find_dline((struct sockaddr *)&ip, AF_INET);
|
aconf = find_dline((struct sockaddr *)&ip, AF_INET);
|
||||||
|
|
||||||
if(aconf && aconf->status & CONF_DLINE)
|
if(aconf && aconf->status & CONF_DLINE)
|
||||||
|
@ -175,9 +173,7 @@ mo_testline(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *sou
|
||||||
if((aconf = find_address_conf(host, NULL, user_trunc, notildeuser_trunc,
|
if((aconf = find_address_conf(host, NULL, user_trunc, notildeuser_trunc,
|
||||||
(type != HM_HOST) ? (struct sockaddr *)&ip : NULL,
|
(type != HM_HOST) ? (struct sockaddr *)&ip : NULL,
|
||||||
(type != HM_HOST) ? (
|
(type != HM_HOST) ? (
|
||||||
#ifdef RB_IPV6
|
|
||||||
(type == HM_IPV6) ? AF_INET6 :
|
(type == HM_IPV6) ? AF_INET6 :
|
||||||
#endif
|
|
||||||
AF_INET) : 0, NULL)))
|
AF_INET) : 0, NULL)))
|
||||||
{
|
{
|
||||||
static char buf[HOSTLEN+USERLEN+2];
|
static char buf[HOSTLEN+USERLEN+2];
|
||||||
|
|
|
@ -140,9 +140,7 @@ confopts(void)
|
||||||
*p++ = 'Z';
|
*p++ = 'Z';
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef RB_IPV6
|
|
||||||
*p++ = '6';
|
*p++ = '6';
|
||||||
#endif
|
|
||||||
|
|
||||||
*p = '\0';
|
*p = '\0';
|
||||||
|
|
||||||
|
|
|
@ -233,9 +233,7 @@ single_whois(struct Client *source_p, struct Client *target_p, int operspy)
|
||||||
int tlen;
|
int tlen;
|
||||||
hook_data_client hdata;
|
hook_data_client hdata;
|
||||||
int extra_space = 0;
|
int extra_space = 0;
|
||||||
#ifdef RB_IPV6
|
|
||||||
struct sockaddr_in ip4;
|
struct sockaddr_in ip4;
|
||||||
#endif
|
|
||||||
|
|
||||||
if(target_p->user == NULL)
|
if(target_p->user == NULL)
|
||||||
{
|
{
|
||||||
|
@ -364,7 +362,6 @@ single_whois(struct Client *source_p, struct Client *target_p, int operspy)
|
||||||
form_str(RPL_WHOISACTUALLY),
|
form_str(RPL_WHOISACTUALLY),
|
||||||
target_p->name, target_p->sockhost);
|
target_p->name, target_p->sockhost);
|
||||||
|
|
||||||
#ifdef RB_IPV6
|
|
||||||
if (GET_SS_FAMILY(&target_p->localClient->ip) == AF_INET6 &&
|
if (GET_SS_FAMILY(&target_p->localClient->ip) == AF_INET6 &&
|
||||||
(show_ip(source_p, target_p) ||
|
(show_ip(source_p, target_p) ||
|
||||||
(source_p == target_p && !IsIPSpoof(target_p))) &&
|
(source_p == target_p && !IsIPSpoof(target_p))) &&
|
||||||
|
@ -376,7 +373,6 @@ single_whois(struct Client *source_p, struct Client *target_p, int operspy)
|
||||||
"%s :Underlying IPv4 is %s",
|
"%s :Underlying IPv4 is %s",
|
||||||
target_p->name, buf);
|
target_p->name, buf);
|
||||||
}
|
}
|
||||||
#endif /* RB_IPV6 */
|
|
||||||
|
|
||||||
sendto_one_numeric(source_p, RPL_WHOISIDLE, form_str(RPL_WHOISIDLE),
|
sendto_one_numeric(source_p, RPL_WHOISIDLE, form_str(RPL_WHOISIDLE),
|
||||||
target_p->name,
|
target_p->name,
|
||||||
|
|
Loading…
Reference in a new issue