#include "ircd.h"
#include "res.h"
#include "reslib.h"
-#include "irc_string.h"
-#include "sprintf_irc.h"
+#include "match.h"
#include "numeric.h"
#include "client.h" /* SNO_* */
static struct reslist *find_id(int id);
static struct DNSReply *make_dnsreply(struct reslist *request);
-extern struct rb_sockaddr_storage irc_nsaddr_list[IRCD_MAXNS];
-extern int irc_nscount;
-extern char irc_domain[HOSTLEN + 1];
-
-
/*
* int
* res_ourserver(inp)
*/
static int res_ourserver(const struct rb_sockaddr_storage *inp)
{
-#ifdef IPV6
- struct sockaddr_in6 *v6;
- struct sockaddr_in6 *v6in = (struct sockaddr_in6 *)inp;
+#ifdef RB_IPV6
+ const struct sockaddr_in6 *v6;
+ const struct sockaddr_in6 *v6in = (const struct sockaddr_in6 *)inp;
#endif
- struct sockaddr_in *v4;
- struct sockaddr_in *v4in = (struct sockaddr_in *)inp;
+ const struct sockaddr_in *v4;
+ const struct sockaddr_in *v4in = (const struct sockaddr_in *)inp;
int ns;
for (ns = 0; ns < irc_nscount; ns++)
{
const struct rb_sockaddr_storage *srv = &irc_nsaddr_list[ns];
-#ifdef IPV6
- v6 = (struct sockaddr_in6 *)srv;
+#ifdef RB_IPV6
+ v6 = (const struct sockaddr_in6 *)srv;
#endif
- v4 = (struct sockaddr_in *)srv;
+ v4 = (const struct sockaddr_in *)srv;
/* could probably just memcmp(srv, inp, srv.ss_len) here
* but we'll air on the side of caution - stu
*/
switch (srv->ss_family)
{
-#ifdef IPV6
+#ifdef RB_IPV6
case AF_INET6:
if (srv->ss_family == inp->ss_family)
if (v6->sin6_port == v6in->sin6_port)
{
irc_res_init();
- if (res_fd <= 0) /* there isn't any such thing as fd 0, that's just a myth. */
+ if (res_fd == NULL)
{
if ((res_fd = rb_socket(irc_nsaddr_list[0].ss_family, SOCK_DGRAM, 0,
"UDP resolver socket")) == NULL)
{
char host_name[HOSTLEN + 1];
- strlcpy(host_name, name, HOSTLEN + 1);
+ rb_strlcpy(host_name, name, HOSTLEN + 1);
add_local_domain(host_name, HOSTLEN);
if (request == NULL)
request->state = REQ_A;
}
- strlcpy(request->queryname, host_name, sizeof(request->queryname));
+ rb_strlcpy(request->queryname, host_name, sizeof(request->queryname));
request->type = type;
query_name(request);
}
if (addr->ss_family == AF_INET)
{
- struct sockaddr_in *v4 = (struct sockaddr_in *)addr;
+ const struct sockaddr_in *v4 = (const struct sockaddr_in *)addr;
cp = (const unsigned char *)&v4->sin_addr.s_addr;
rb_sprintf(request->queryname, "%u.%u.%u.%u.in-addr.arpa", (unsigned int)(cp[3]),
(unsigned int)(cp[2]), (unsigned int)(cp[1]), (unsigned int)(cp[0]));
}
-#ifdef IPV6
+#ifdef RB_IPV6
else if (addr->ss_family == AF_INET6)
{
- struct sockaddr_in6 *v6 = (struct sockaddr_in6 *)addr;
+ const struct sockaddr_in6 *v6 = (const struct sockaddr_in6 *)addr;
cp = (const unsigned char *)&v6->sin6_addr.s6_addr;
(void)sprintf(request->queryname, "%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x."
do_query_number(NULL, &request->addr, request);
break;
case T_A:
-#ifdef IPV6
+#ifdef RB_IPV6
case T_AAAA:
#endif
do_query_name(NULL, request->name, request, request->type);
int n; /* temp count */
int rd_length;
struct sockaddr_in *v4; /* conversion */
-#ifdef IPV6
+#ifdef RB_IPV6
struct sockaddr_in6 *v6;
#endif
current = (unsigned char *)buf + sizeof(HEADER);
memcpy(&v4->sin_addr, current, sizeof(struct in_addr));
return (1);
break;
-#ifdef IPV6
+#ifdef RB_IPV6
case T_AAAA:
if (request->type != T_AAAA)
return (0);
else if (n == 0)
return (0); /* no more answers left */
- strlcpy(request->name, hostbuf, HOSTLEN + 1);
+ rb_strlcpy(request->name, hostbuf, HOSTLEN + 1);
return (1);
break;
* ip#.
*
*/
-#ifdef IPV6
+#ifdef RB_IPV6
if (request->addr.ss_family == AF_INET6)
gethost_byname_type(request->name, request->query, T_AAAA);
else
for (i = 0; i < irc_nscount; i++)
{
- if (!inetntop_sock((struct sockaddr *)&(irc_nsaddr_list[i]),
+ if (!rb_inet_ntop_sock((struct sockaddr *)&(irc_nsaddr_list[i]),
ipaddr, sizeof ipaddr))
- strlcpy(ipaddr, "?", sizeof ipaddr);
+ rb_strlcpy(ipaddr, "?", sizeof ipaddr);
sendto_one_numeric(source_p, RPL_STATSDEBUG,
"A %s", ipaddr);
}