authd: use GET_SS_FAMILY() where appropriate
This commit is contained in:
parent
8da0b2f2cb
commit
c99ae1907f
1 changed files with 27 additions and 32 deletions
59
authd/res.c
59
authd/res.c
|
@ -167,7 +167,8 @@ random_socket(int family)
|
||||||
* revised for ircd, cryogen(stu) may03
|
* revised for ircd, cryogen(stu) may03
|
||||||
* slightly modified for charybdis, mr_flea oct12
|
* slightly modified for charybdis, mr_flea oct12
|
||||||
*/
|
*/
|
||||||
static int res_ourserver(const struct rb_sockaddr_storage *inp)
|
static int
|
||||||
|
res_ourserver(const struct rb_sockaddr_storage *inp)
|
||||||
{
|
{
|
||||||
#ifdef RB_IPV6
|
#ifdef RB_IPV6
|
||||||
const struct sockaddr_in6 *v6;
|
const struct sockaddr_in6 *v6;
|
||||||
|
@ -177,49 +178,43 @@ static int res_ourserver(const struct rb_sockaddr_storage *inp)
|
||||||
const struct sockaddr_in *v4in = (const struct sockaddr_in *)inp;
|
const struct sockaddr_in *v4in = (const struct sockaddr_in *)inp;
|
||||||
int ns;
|
int ns;
|
||||||
|
|
||||||
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];
|
||||||
|
|
||||||
if (srv->ss_family != inp->ss_family)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
#ifdef RB_IPV6
|
#ifdef RB_IPV6
|
||||||
v6 = (const struct sockaddr_in6 *)srv;
|
v6 = (const struct sockaddr_in6 *)srv;
|
||||||
#endif
|
#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
|
||||||
* but we'll err on the side of caution - stu
|
* but we'll air on the side of caution - stu
|
||||||
*/
|
*/
|
||||||
switch (srv->ss_family)
|
switch (GET_SS_FAMILY(srv))
|
||||||
{
|
{
|
||||||
#ifdef RB_IPV6
|
#ifdef RB_IPV6
|
||||||
case AF_INET6:
|
case AF_INET6:
|
||||||
if (v6->sin6_port == v6in->sin6_port)
|
if(GET_SS_FAMILY(srv) == GET_SS_FAMILY(inp))
|
||||||
if ((memcmp(&v6->sin6_addr.s6_addr, &v6in->sin6_addr.s6_addr,
|
if(v6->sin6_port == v6in->sin6_port)
|
||||||
sizeof(struct in6_addr)) == 0) ||
|
if((memcmp(&v6->sin6_addr.s6_addr, &v6in->sin6_addr.s6_addr,
|
||||||
(memcmp(&v6->sin6_addr.s6_addr, &in6addr_any,
|
sizeof(struct in6_addr)) == 0) ||
|
||||||
sizeof(struct in6_addr)) == 0))
|
(memcmp(&v6->sin6_addr.s6_addr, &in6addr_any,
|
||||||
{
|
sizeof(struct in6_addr)) == 0))
|
||||||
return ns;
|
return 1;
|
||||||
}
|
break;
|
||||||
break;
|
|
||||||
#endif
|
#endif
|
||||||
case AF_INET:
|
case AF_INET:
|
||||||
if (v4->sin_port == v4in->sin_port)
|
if(GET_SS_FAMILY(srv) == GET_SS_FAMILY(inp))
|
||||||
if ((v4->sin_addr.s_addr == INADDR_ANY)
|
if(v4->sin_port == v4in->sin_port)
|
||||||
|| (v4->sin_addr.s_addr == v4in->sin_addr.s_addr))
|
if((v4->sin_addr.s_addr == INADDR_ANY)
|
||||||
{
|
|| (v4->sin_addr.s_addr == v4in->sin_addr.s_addr))
|
||||||
return ns;
|
return 1;
|
||||||
}
|
break;
|
||||||
break;
|
default:
|
||||||
default:
|
break;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return -1;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -280,7 +275,7 @@ static void start_resolver(void)
|
||||||
|
|
||||||
if (res_fd == NULL)
|
if (res_fd == NULL)
|
||||||
{
|
{
|
||||||
if ((res_fd = rb_socket(irc_nsaddr_list[0].ss_family, SOCK_DGRAM, 0,
|
if ((res_fd = rb_socket(GET_SS_FAMILY(&irc_nsaddr_list[0]), SOCK_DGRAM, 0,
|
||||||
"UDP resolver socket")) == NULL)
|
"UDP resolver socket")) == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -549,7 +544,7 @@ static void do_query_number(struct DNSQuery *query, const struct rb_sockaddr_sto
|
||||||
request->name = (char *)rb_malloc(IRCD_RES_HOSTLEN + 1);
|
request->name = (char *)rb_malloc(IRCD_RES_HOSTLEN + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (addr->ss_family == AF_INET)
|
if (GET_SS_FAMILY(addr) == AF_INET)
|
||||||
{
|
{
|
||||||
const struct sockaddr_in *v4 = (const struct sockaddr_in *)addr;
|
const struct sockaddr_in *v4 = (const struct sockaddr_in *)addr;
|
||||||
cp = (const unsigned char *)&v4->sin_addr.s_addr;
|
cp = (const unsigned char *)&v4->sin_addr.s_addr;
|
||||||
|
@ -558,7 +553,7 @@ static void do_query_number(struct DNSQuery *query, const struct rb_sockaddr_sto
|
||||||
(unsigned int)(cp[2]), (unsigned int)(cp[1]), (unsigned int)(cp[0]));
|
(unsigned int)(cp[2]), (unsigned int)(cp[1]), (unsigned int)(cp[0]));
|
||||||
}
|
}
|
||||||
#ifdef RB_IPV6
|
#ifdef RB_IPV6
|
||||||
else if (addr->ss_family == 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;
|
||||||
cp = (const unsigned char *)&v6->sin6_addr.s6_addr;
|
cp = (const unsigned char *)&v6->sin6_addr.s6_addr;
|
||||||
|
|
Loading…
Reference in a new issue