2013-09-26 17:14:40 +02:00

1095 lines
29 KiB
Plaintext

$NetBSD: patch-ae,v 1.2 2012/07/10 09:09:11 mef Exp $
(1) Add some prototype for static functions
(2) convert log -> mylog
- log(LOG_DEBUG, "start getting MXRRs with caching");
+ mylog(LOG_DEBUG, "start getting MXRRs with caching");
--- dns.c.orig 2003-08-20 14:13:03.000000000 +0900
+++ dns.c 2012-06-28 18:39:20.000000000 +0900
@@ -79,6 +79,19 @@
# define RES_INSECURE1 0x00000400 /* type 1 security disabled */
#endif
+static int query_domain P((char *, int));
+static int process_query P((int));
+static int make_query P((struct dns_stat *, int));
+#if INET6
+static int whichserver P((const SockAddr *));
+#else
+static int whichserver P((const struct sockaddr_in *));
+#endif
+static void got_answer P((struct query_chain *, u_char *, int));
+static void remove_query P((struct query_chain *));
+static struct mx* newmx P((char *, int, int, struct domain *, long));
+static void show_query P((u_char *, u_char *, u_char *));
+
int
pregetmx(dl)
struct domain *dl;
@@ -87,7 +100,6 @@
char **map_arg;
long stime, etime;
int n;
- static int query_domain(), process_query();
#ifdef INET6
SockAddr dsin; /* dummy */
#endif
@@ -109,7 +121,7 @@
}
}
- log(LOG_DEBUG, "start getting MXRRs with caching");
+ mylog(LOG_DEBUG, "start getting MXRRs with caching");
n = 0;
stime = time(NULL);
if (env.queueid != NULL)
@@ -120,7 +132,7 @@
if (cnf.pgateway != NULL)
{
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "pregetting A of protocol gateway: %s",
+ mylog(LOG_DEBUG, "pregetting A of protocol gateway: %s",
cnf.pgateway);
#ifdef INET6
if (cnf.inetdom & SMTP_V4)
@@ -144,7 +156,7 @@
if (cnf.fallbackmx != NULL)
{
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "pregetting A of fallbackmx: %s",
+ mylog(LOG_DEBUG, "pregetting A of fallbackmx: %s",
cnf.fallbackmx);
#ifdef INET6
if (cnf.inetdom & SMTP_V4)
@@ -185,7 +197,7 @@
#endif
{
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG,
+ mylog(LOG_DEBUG,
"pregetting A of sourceIP: %s", p);
#ifdef INET6
if (cnf.inetdom & SMTP_V4)
@@ -243,7 +255,7 @@
|| (strcasecmp(*map_arg, "MX?") == 0))
{
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "pregetting MX: %s", dp->name);
+ mylog(LOG_DEBUG, "pregetting MX: %s", dp->name);
if (query_domain(dp->name, T_MX) < 0)
return -1;
n++;
@@ -251,7 +263,7 @@
else if (strcasecmp(*map_arg, "A") == 0)
{
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "pregetting A: %s", dp->name);
+ mylog(LOG_DEBUG, "pregetting A: %s", dp->name);
#ifdef INET6
if (cnf.inetdom & SMTP_V4)
{
@@ -272,7 +284,7 @@
else if (**map_arg != '[')
{
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "pregetting MX: %s", *map_arg);
+ mylog(LOG_DEBUG, "pregetting MX: %s", *map_arg);
if (query_domain(*map_arg, T_MX) < 0)
return -1;
n++;
@@ -291,7 +303,7 @@
goto skip_preget_a;
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG,
+ mylog(LOG_DEBUG,
"pregetting A of sourceIP: %s",
(*map_arg) + 1);
#ifdef INET6
@@ -333,16 +345,16 @@
else
setproctitle("syncing MX: %d", n);
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "syncing responses of MXRRs");
+ mylog(LOG_DEBUG, "syncing responses of MXRRs");
if (process_query(1) < 0) /* sync */
return -1;
etime = time(NULL);
- log(LOG_DEBUG, "got MXRRs: %d MXs in %d seconds",
+ mylog(LOG_DEBUG, "got MXRRs: %d MXs in %d seconds",
n, etime - stime);
}
else
{
- log(LOG_DEBUG, "no MXRRs to sync");
+ mylog(LOG_DEBUG, "no MXRRs to sync");
}
return 0;
}
@@ -353,7 +365,6 @@
int type;
{
struct dns_stat *qrp, **hashp;
- static int make_query();
qrp = hash_query_lookup(name, &hashp);
if (qrp == NULL) {
@@ -361,7 +372,7 @@
bzero(qrp, sizeof(struct dns_stat));
if (qrp == NULL)
{
- log(LOG_NOTICE, "out of memory (dns_query)");
+ mylog(LOG_NOTICE, "out of memory (dns_query)");
return -1;
}
qrp->name = newstr(name);
@@ -375,7 +386,7 @@
case T_AAAA:
break;
default:
- log(LOG_NOTICE, "query_domain: unknown query type: %d", type);
+ mylog(LOG_NOTICE, "query_domain: unknown query type: %d", type);
return 0;
}
@@ -396,7 +407,6 @@
u_char buf[MAXPACKET];
int n;
struct query_chain *qchain;
- static int process_query();
switch (type) {
case T_MX:
@@ -419,7 +429,7 @@
{
/* already got */
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "ignore request n=%s t=%d",
+ mylog(LOG_DEBUG, "ignore request n=%s t=%d",
qrp->name, type);
return 0;
}
@@ -439,18 +449,18 @@
{
/* already in processing */
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "skip request n=%s t=%d", qrp->name, type);
+ mylog(LOG_DEBUG, "skip request n=%s t=%d", qrp->name, type);
return 0;
}
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "res_mkquery n=%s t=%d", qrp->name, type);
+ mylog(LOG_DEBUG, "res_mkquery n=%s t=%d", qrp->name, type);
n = res_mkquery(QUERY, qrp->name, C_IN, type, NULL, 0, NULL,
buf, sizeof(buf));
if (n <= 0)
{
/* error */
- log(LOG_NOTICE, "res_mkquery failed for %s type %d",
+ mylog(LOG_NOTICE, "res_mkquery failed for %s type %d",
qrp->name, type);
return -1;
}
@@ -459,7 +469,7 @@
if (qchain == NULL)
{
/* error */
- log(LOG_NOTICE, "out of memory (make_query)");
+ mylog(LOG_NOTICE, "out of memory (make_query)");
return -1;
}
bzero(qchain, sizeof(struct query_chain));
@@ -469,7 +479,7 @@
if (qchain->request == NULL)
{
/* error */
- log(LOG_NOTICE, "out of memory (make_query)");
+ mylog(LOG_NOTICE, "out of memory (make_query)");
return -1;
}
bcopy(buf, qchain->request, n);
@@ -492,7 +502,7 @@
qchain->prev = NULL;
query_chain_count++;
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "DNS: query concurrency = %d", query_chain_count);
+ mylog(LOG_DEBUG, "DNS: query concurrency = %d", query_chain_count);
if (sti.maxcquery < query_chain_count)
sti.maxcquery = query_chain_count;
@@ -501,10 +511,10 @@
{
struct query_chain *qcp;
- log(LOG_DEBUG, "Chain after linked:");
+ mylog(LOG_DEBUG, "Chain after linked:");
for (qcp = QueryChain; qcp != NULL; qcp = qcp->next)
{
- log(LOG_DEBUG, " %s", qcp->stat->name);
+ mylog(LOG_DEBUG, " %s", qcp->stat->name);
}
}
#endif
@@ -514,7 +524,7 @@
return 0;
}
-int
+static int
whichserver(inp)
#if INET6
const SockAddr *inp;
@@ -591,14 +601,12 @@
char nbuf[MAXDNAME+1];
struct dns_stat *qrp;
int pending;
- static void got_answer();
- static void remove_query();
if (sync == 0 && cnf.cquery_max != 0
&& query_chain_count >= cnf.cquery_max)
{
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "reached to max concurrency (%d)....syncing",
+ mylog(LOG_DEBUG, "reached to max concurrency (%d)....syncing",
query_chain_count);
sync = -1;
}
@@ -612,7 +620,7 @@
s = socket(AF_INET, SOCK_DGRAM, PF_UNSPEC);
if (s < 0) {
/* error */
- log(LOG_NOTICE,
+ mylog(LOG_NOTICE,
"socket failed (process_query)");
return -1;
}
@@ -622,7 +630,7 @@
s6 = socket(AF_INET6, SOCK_DGRAM, PF_UNSPEC);
if (s6 < 0) {
/* error */
- log(LOG_NOTICE,
+ mylog(LOG_NOTICE,
"socket(INET6) failed (process_query)");
return -1;
}
@@ -633,7 +641,7 @@
s = socket(AF_INET, SOCK_DGRAM, PF_UNSPEC);
if (s < 0) {
/* error */
- log(LOG_NOTICE, "socket failed (process_query)");
+ mylog(LOG_NOTICE, "socket failed (process_query)");
return -1;
}
}
@@ -663,14 +671,14 @@
nextqcp = qcp->next;
remove_query(qcp);
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "DNS: no valid ns, removing %s type %d",
+ mylog(LOG_DEBUG, "DNS: no valid ns, removing %s type %d",
qcp->stat->name, qcp->type);
qcp = nextqcp;
continue;
}
qcp->try++;
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "DNS: retry count=%d", qcp->try);
+ mylog(LOG_DEBUG, "DNS: retry count=%d", qcp->try);
}
}
if (qcp->try >= (u_char)_res.retry)
@@ -680,7 +688,7 @@
nextqcp = qcp->next;
remove_query(qcp);
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "DNS: no valid ns, removing %s type %d",
+ mylog(LOG_DEBUG, "DNS: no valid ns, removing %s type %d",
qcp->stat->name, qcp->type);
qcp = nextqcp;
continue;
@@ -689,7 +697,7 @@
{
itvl = _res.retrans << qcp->try;
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "DNS: waiting %d sec.", itvl);
+ mylog(LOG_DEBUG, "DNS: waiting %d sec.", itvl);
if (qcp->try > 0)
itvl /= _res.nscount;
if (itvl <= 0)
@@ -700,7 +708,7 @@
if (nsap->in.sin_family == AF_INET)
{
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "send query n=%s t=%d (s=%s)",
+ mylog(LOG_DEBUG, "send query n=%s t=%d (s=%s)",
qcp->stat->name, qcp->type,
inet_ntoa(nsap->in.sin_addr));
@@ -711,7 +719,7 @@
{
qcp->badns |= 1<<qcp->ns;
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "sendto failed: invalid ns (%s)", strerror(errno));
+ mylog(LOG_DEBUG, "sendto failed: invalid ns (%s)", strerror(errno));
}
}
if (nsap->in6.sin6_family == AF_INET6)
@@ -722,7 +730,7 @@
{
inet_ntop(AF_INET6, &nsap->in6.sin6_addr,
buf, sizeof(buf));
- log(LOG_DEBUG, "send query n=%s t=%d (s=%s)",
+ mylog(LOG_DEBUG, "send query n=%s t=%d (s=%s)",
qcp->stat->name, qcp->type, buf);
}
@@ -733,13 +741,13 @@
{
qcp->badns |= 1<<qcp->ns;
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "sendto failed: invalid ns (%s)", strerror(errno));
+ mylog(LOG_DEBUG, "sendto failed: invalid ns (%s)", strerror(errno));
}
}
#else
nsap = &NSADDR_LIST(qcp->ns);
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "send query n=%s t=%d (s=%s)",
+ mylog(LOG_DEBUG, "send query n=%s t=%d (s=%s)",
qcp->stat->name, qcp->type,
inet_ntoa(nsap->sin_addr));
@@ -749,7 +757,7 @@
{
qcp->badns |= 1<<qcp->ns;
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "sendto failed: invalid ns");
+ mylog(LOG_DEBUG, "sendto failed: invalid ns");
}
#endif
sti.nqueries++;
@@ -793,7 +801,7 @@
timeout.tv_usec = 0;
}
if ((cnf.debug & DEBUG_DNS) && (timeout.tv_sec > 0))
- log(LOG_DEBUG, "DNS: waiting %d sec in %s mode",
+ mylog(LOG_DEBUG, "DNS: waiting %d sec in %s mode",
timeout.tv_sec, sync?"sync":"nosync");
FD_ZERO(&dsmask);
#if INET6
@@ -825,7 +833,7 @@
resplen = recvfrom(s, &answer, anssiz, 0,
(struct sockaddr *)&from, &fromlen);
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "DNS: got answer from %s",
+ mylog(LOG_DEBUG, "DNS: got answer from %s",
inet_ntoa(from.in.sin_addr));
}
else if (s6 >= 0 && FD_ISSET(s6, &dsmask))
@@ -838,7 +846,7 @@
{
inet_ntop(AF_INET6, &from.in6.sin6_addr,
buf, sizeof(buf));
- log(LOG_DEBUG,
+ mylog(LOG_DEBUG,
"DNS: got answer from %s", buf);
}
}
@@ -846,19 +854,20 @@
resplen = recvfrom(s, &answer, anssiz, 0,
(struct sockaddr *)&from, &fromlen);
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "DNS: got answer from %s",
+ mylog(LOG_DEBUG, "DNS: got answer from %s",
inet_ntoa(from.sin_addr));
#endif
if (0) {
show_query("DNS: answer received",
- &answer, &answer+resplen);
+ (u_char *)&answer,
+ (u_char *)&answer+resplen);
}
now = time(NULL);
if (resplen <= 0) {
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "DNS: bad anssiz %d",
+ mylog(LOG_DEBUG, "DNS: bad anssiz %d",
resplen);
continue; /* error */
}
@@ -870,7 +879,7 @@
if (!(_res.options & RES_INSECURE1))
{
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG,
+ mylog(LOG_DEBUG,
"DNS: not from our server");
continue;
}
@@ -888,14 +897,15 @@
GETSHORT(class, ap);
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "DNS: got answer for %s type %d",
+ mylog(LOG_DEBUG, "DNS: got answer for %s type %d",
nbuf, type);
qrp = hash_query_lookup(nbuf, NULL);
if (qrp == NULL)
{
show_query("DNS: no associated query sent",
- &answer, &answer+resplen);
+ (u_char *)&answer,
+ (u_char *)&answer+resplen);
continue; /* no associated request */
}
qcp = qrp->requests;
@@ -904,7 +914,8 @@
if (qcp == NULL)
{
show_query("DNS: no associated query",
- &answer, &answer+resplen);
+ (u_char *)&answer,
+ (u_char *)&answer+resplen);
continue; /* no associated request */
}
@@ -915,7 +926,7 @@
{
qcp->badns |= (1<<ns);
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "DNS: badnsF rcode=%d %x/%x",
+ mylog(LOG_DEBUG, "DNS: badnsF rcode=%d %x/%x",
hp->rcode,
qcp->badns, (1<<_res.nscount)-1);
if (qcp->badns != (1<<_res.nscount)-1)
@@ -924,7 +935,7 @@
qrp->rr_timeout |= qcp->need;
remove_query(qcp);
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "DNS: TCP requested, removing %s type %d",
+ mylog(LOG_DEBUG, "DNS: TCP requested, removing %s type %d",
qcp->stat->name, qcp->type);
continue;
}
@@ -933,7 +944,7 @@
qrp->rr_timeout |= qcp->need;
remove_query(qcp);
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "DNS: TCP requested, removing %s type %d",
+ mylog(LOG_DEBUG, "DNS: TCP requested, removing %s type %d",
qcp->stat->name, qcp->type);
continue;
}
@@ -952,7 +963,7 @@
if (sync != 0) {
pending = 0;
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "DNS: sync: get nearest timeout from %d", now);
+ mylog(LOG_DEBUG, "DNS: sync: get nearest timeout from %d", now);
for (qcp = QueryChain; qcp != NULL;)
{
if (qcp->try >= (u_char)_res.retry)
@@ -962,7 +973,7 @@
nextqcp = qcp->next;
remove_query(qcp);
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "DNS: sync timeout (n=%s, t=%d)",
+ mylog(LOG_DEBUG, "DNS: sync timeout (n=%s, t=%d)",
qcp->stat->name, qcp->type);
qcp = nextqcp;
continue;
@@ -970,7 +981,7 @@
pending++;
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "DNS: event timeout=%d", qcp->time);
+ mylog(LOG_DEBUG, "DNS: event timeout=%d", qcp->time);
qcp = qcp->next;
}
if (sync < 0)
@@ -978,7 +989,7 @@
if (pending)
{
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "DNS: retry in sync mode");
+ mylog(LOG_DEBUG, "DNS: retry in sync mode");
/* sleep(1); * XXX */
goto again;
}
@@ -989,12 +1000,12 @@
nextqcp = qcp->next;
remove_query(qcp);
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "DNS: final timeout (n=%s, t=%d)",
+ mylog(LOG_DEBUG, "DNS: final timeout (n=%s, t=%d)",
qcp->stat->name, qcp->type);
qcp = nextqcp;
}
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "DNS: closing socket");
+ mylog(LOG_DEBUG, "DNS: closing socket");
#if INET6
if (s >= 0)
{
@@ -1038,10 +1049,10 @@
#if 0
if (cnf.debug & DEBUG_DNS)
{
- log(LOG_DEBUG, "Chain after removed:");
+ mylog(LOG_DEBUG, "Chain after removed:");
for (qcp = QueryChain; qcp != NULL; qcp = qcp->next)
{
- log(LOG_DEBUG, " %s", qcp->stat->name);
+ mylog(LOG_DEBUG, " %s", qcp->stat->name);
}
}
#endif
@@ -1069,7 +1080,7 @@
#endif
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "DNS: got answer, removing %s type %d",
+ mylog(LOG_DEBUG, "DNS: got answer, removing %s type %d",
qcp->stat->name, qcp->type);
b = (u_char *) answer;
@@ -1080,7 +1091,7 @@
if (hp->aa == 0 && hp->ra == 0) {
/* this nameserver does not support recursion */
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "non recursive ns=%d", qcp->ns);
+ mylog(LOG_DEBUG, "non recursive ns=%d", qcp->ns);
qcp->badns |= 1<<qcp->ns;
return; /* keep waiting for a reply from other NS */
}
@@ -1098,7 +1109,7 @@
{
/* host not found */
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "DNS: host (any other data) not found");
+ mylog(LOG_DEBUG, "DNS: host (any other data) not found");
qcp->stat->rr_noex = RR_ALL;
return;
@@ -1109,7 +1120,7 @@
{
/* no data, other data exist */
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "DNS: no data for %d", qcp->type);
+ mylog(LOG_DEBUG, "DNS: no data for %d", qcp->type);
if (qcp->type == T_ANY)
{
@@ -1153,7 +1164,7 @@
}
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "DNS: valid data");
+ mylog(LOG_DEBUG, "DNS: valid data");
while (qdcount--)
{
@@ -1161,7 +1172,7 @@
ap += n;
if (ap + INT16SZ*2 > eom)
{
- /* log(LOG_NOTICE, "corrupt DNS answer"); */
+ /* mylog(LOG_NOTICE, "corrupt DNS answer"); */
return;
}
GETSHORT(type, ap);
@@ -1181,7 +1192,7 @@
ap += n;
if (ap + INT16SZ*3 + INT32SZ > eom)
{
- /* log(LOG_NOTICE, "corrupt DNS answer"); */
+ /* mylog(LOG_NOTICE, "corrupt DNS answer"); */
return;
}
GETSHORT(type, ap);
@@ -1190,13 +1201,13 @@
GETSHORT(n, ap);
if (ap + n > eom)
{
- /* log(LOG_NOTICE, "corrupt DNS answer"); */
+ /* mylog(LOG_NOTICE, "corrupt DNS answer"); */
return;
}
if (class != C_IN)
{
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "DNS: unexpected class %d in an", class);
+ mylog(LOG_DEBUG, "DNS: unexpected class %d in an", class);
ap += n;
continue;
}
@@ -1230,7 +1241,7 @@
return;
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "DNS: got MX for %s, %s p=%d",
+ mylog(LOG_DEBUG, "DNS: got MX for %s, %s p=%d",
nbuf, nbuf2, pref);
qrp->rr_got |= RR_MX;
@@ -1269,7 +1280,7 @@
{
addr_found = 1;
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "DNS: got AAAA for %s",
+ mylog(LOG_DEBUG, "DNS: got AAAA for %s",
qcp->stat->name);
qcp->stat->rr_got |= RR_AAAA;
@@ -1279,7 +1290,7 @@
/* may be address for an alias */
cname_found = 0;
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "DNS: got aliased (%s) AAAA for %s",
+ mylog(LOG_DEBUG, "DNS: got aliased (%s) AAAA for %s",
nbuf, qcp->stat->name);
qrp = hash_query_lookup(nbuf, NULL);
if (qrp == NULL)
@@ -1310,7 +1321,7 @@
{
addr_found = 1;
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "DNS: got A for %s",
+ mylog(LOG_DEBUG, "DNS: got A for %s",
qcp->stat->name);
qcp->stat->rr_got |= RR_A;
@@ -1320,7 +1331,7 @@
cname_found = 0;
/* may be address for an alias */
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "DNS: got aliased (%s) A for %s",
+ mylog(LOG_DEBUG, "DNS: got aliased (%s) A for %s",
nbuf, qcp->stat->name);
qrp = hash_query_lookup(nbuf, NULL);
if (qrp == NULL)
@@ -1343,13 +1354,13 @@
return;
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "DNS: got CNAME %s for %s",
+ mylog(LOG_DEBUG, "DNS: got CNAME %s for %s",
nbuf2, nbuf);
if (strcasecmp(nbuf, nbuf2) == 0)
{
/* CNAME points back itself, ignore it */
- log(LOG_INFO,
+ mylog(LOG_INFO,
"CNAME %s points back itself (q=%d)",
nbuf, qcp->type);
return;
@@ -1377,7 +1388,7 @@
bzero(qrp2, sizeof(struct dns_stat));
if (qrp2 == NULL)
{
- log(LOG_NOTICE,
+ mylog(LOG_NOTICE,
"out of memory (dns_query)");
return;
}
@@ -1442,13 +1453,13 @@
ap += INT16SZ + INT16SZ + INT32SZ;
if (ap + INT16SZ > eom)
{
- /* log(LOG_NOTICE, "corrupt DNS answer"); */
+ /* mylog(LOG_NOTICE, "corrupt DNS answer"); */
return;
}
GETSHORT(n, ap);
if (ap + n > eom)
{
- /* log(LOG_NOTICE, "corrupt DNS answer"); */
+ /* mylog(LOG_NOTICE, "corrupt DNS answer"); */
return;
}
ap += n;
@@ -1461,13 +1472,13 @@
ap += INT16SZ + INT16SZ + INT32SZ;
if (ap + INT16SZ > eom)
{
- /* log(LOG_NOTICE, "corrupt DNS answer"); */
+ /* mylog(LOG_NOTICE, "corrupt DNS answer"); */
return;
}
GETSHORT(n, ap);
if (ap + n > eom)
{
- /* log(LOG_NOTICE, "corrupt DNS answer"); */
+ /* mylog(LOG_NOTICE, "corrupt DNS answer"); */
return;
}
ap += n;
@@ -1482,7 +1493,7 @@
ap += n;
if (ap + INT16SZ*3 + INT32SZ > eom)
{
- /* log(LOG_NOTICE, "corrupt DNS answer"); */
+ /* mylog(LOG_NOTICE, "corrupt DNS answer"); */
return;
}
GETSHORT(type, ap);
@@ -1491,13 +1502,13 @@
GETSHORT(addrsize, ap);
if (ap + addrsize > eom)
{
- /* log(LOG_NOTICE, "corrupt DNS answer"); */
+ /* mylog(LOG_NOTICE, "corrupt DNS answer"); */
return;
}
if (class != C_IN)
{
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "DNS: unexpected class %d in ar", class);
+ mylog(LOG_DEBUG, "DNS: unexpected class %d in ar", class);
ap += addrsize;
continue;
}
@@ -1530,7 +1541,7 @@
}
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "DNS: got additional Address RR for %s type=%d",
+ mylog(LOG_DEBUG, "DNS: got additional Address RR for %s type=%d",
nbuf, type);
#if FAKE_AR_CHECK
@@ -1546,7 +1557,7 @@
if (!found)
{
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "DNS: ignoring additional Address RR");
+ mylog(LOG_DEBUG, "DNS: ignoring additional Address RR");
ap += addrsize;
continue;
}
@@ -1559,7 +1570,7 @@
bzero(qrp, sizeof(struct dns_stat));
if (qrp == NULL)
{
- log(LOG_NOTICE, "out of memory (dns_query)");
+ mylog(LOG_NOTICE, "out of memory (dns_query)");
return;
}
qrp->name = newstr(nbuf);
@@ -1593,7 +1604,7 @@
bzero(qrp, sizeof(struct dns_stat));
if (qrp == NULL)
{
- log(LOG_NOTICE,
+ mylog(LOG_NOTICE,
"out of memory (dns_query)");
return;
}
@@ -1606,20 +1617,20 @@
if (cnf.inetdom & SMTP_V6 || cnf.v4v6fallback)
{
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "DNS: getting AAAA RR for %s",
+ mylog(LOG_DEBUG, "DNS: getting AAAA RR for %s",
mxp->name);
make_query(qrp, T_AAAA);
}
if (cnf.inetdom & SMTP_V4 || cnf.v4v6fallback)
{
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "DNS: getting A RR for %s",
+ mylog(LOG_DEBUG, "DNS: getting A RR for %s",
mxp->name);
make_query(qrp, T_A);
}
#else
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "DNS: getting A RR for %s",
+ mylog(LOG_DEBUG, "DNS: getting A RR for %s",
mxp->name);
make_query(qrp, T_A);
if (cnf.v4v6fallback)
@@ -1654,7 +1665,7 @@
continue;
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "getting MX for %s", dp->name);
+ mylog(LOG_DEBUG, "getting MX for %s", dp->name);
offset = 0;
needfindaddr = 0;
@@ -1702,15 +1713,15 @@
{
struct mx *mxp;
- log(LOG_DEBUG, "final MX list for %s", dp->name);
+ mylog(LOG_DEBUG, "final MX list for %s", dp->name);
mxp = dp->firstmx;
if (mxp == NULL)
{
- log(LOG_DEBUG, " NO MX!");
+ mylog(LOG_DEBUG, " NO MX!");
}
while (mxp != NULL)
{
- log(LOG_DEBUG, " %s(%d, %d)", mxp->name,
+ mylog(LOG_DEBUG, " %s(%d, %d)", mxp->name,
mxp->pref, mxp->weight);
mxp = mxp->next;
}
@@ -1734,12 +1745,12 @@
int found = 0;
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "protocol gateway checking for %s",
+ mylog(LOG_DEBUG, "protocol gateway checking for %s",
dp->name);
for (mxp = dp->firstmx; mxp != NULL; mxp = mxp->next)
{
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "checking MX: %s", mxp->name);
+ mylog(LOG_DEBUG, "checking MX: %s", mxp->name);
if (mxp->host == NULL)
{
/* no hosts, try next MX */
@@ -1751,7 +1762,7 @@
{
/*
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "proto: %d",
+ mylog(LOG_DEBUG, "proto: %d",
addrp->domain);
*/
#ifdef INET6
@@ -1764,10 +1775,9 @@
#endif
{
struct mx *gwmxp;
- static struct mx* newmx();
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "setting protocol gateway as first MX");
+ mylog(LOG_DEBUG, "setting protocol gateway as first MX");
if ((gwmxp = newmx(cnf.pgateway,
-2, 0, dp, 0))
== NULL)
@@ -1818,7 +1828,7 @@
if (mxpp == NULL)
{
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "linking MX %s(%d) at the top",
+ mylog(LOG_DEBUG, "linking MX %s(%d) at the top",
newmxp->name, newmxp->pref);
domp->firstmx = newmxp;
@@ -1826,7 +1836,7 @@
else
{
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "linking MX %s(%d) after MX %s(%d)",
+ mylog(LOG_DEBUG, "linking MX %s(%d) after MX %s(%d)",
newmxp->name, newmxp->pref,
mxpp->name, mxpp->pref);
@@ -1857,14 +1867,14 @@
{
/* already registered, drop lower one */
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "duplicated MX %s(%d) found",
+ mylog(LOG_DEBUG, "duplicated MX %s(%d) found",
mxp->name, mxp->pref);
if (mxp->pref > pref
|| (mxp->pref == pref && mxp->weight > weight))
{
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "remove it and reuse");
+ mylog(LOG_DEBUG, "remove it and reuse");
if (mxp == dp->firstmx)
dp->firstmx = mxp->next;
@@ -1874,7 +1884,7 @@
else
{
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "leave it and ignore newer");
+ mylog(LOG_DEBUG, "leave it and ignore newer");
return mxp; /* do nothing */
}
@@ -1886,7 +1896,7 @@
mxp = (struct mx*)MALLOC(sizeof(struct mx));
if (mxp == NULL)
{
- log(LOG_NOTICE, "out of memory (newmx)");
+ mylog(LOG_NOTICE, "out of memory (newmx)");
return NULL;
}
bzero(mxp, sizeof(struct mx));
@@ -1923,7 +1933,7 @@
char msgbuf[MAXLINE], *mxname;
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "getmxrr(%s, %s) offset=%d opt=%x",
+ mylog(LOG_DEBUG, "getmxrr(%s, %s) offset=%d opt=%x",
name, dp->name, offset, opt);
if (!query_mx)
@@ -1962,7 +1972,7 @@
if (mxp == NULL)
return -1;
addinetaddress(mxp, AF_INET, sizeof(nsin.in.sin_addr),
- &nsin.in.sin_addr);
+ (u_char *)&nsin.in.sin_addr);
}
#ifdef INET6
else if (inet_pton(INET6, name + 1, &nsin.in6.sin6_addr) > 0)
@@ -1974,7 +1984,7 @@
return -1;
addinetaddress(mxp, AF_INET6,
sizeof(nsin.in6.sin6_addr),
- &nsin.in6.sin6_addr);
+ (u_char *)&nsin.in6.sin6_addr);
}
#endif
else
@@ -2000,7 +2010,7 @@
qrp = qrp->cname;
if (cnf.debug & DEBUG_DNS && cnamechain > 0)
- log(LOG_DEBUG, "CNAME traced: %s", qrp->name);
+ mylog(LOG_DEBUG, "CNAME traced: %s", qrp->name);
if (cnamechain >= CNAMELOOPMAX)
{
@@ -2010,7 +2020,7 @@
}
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "%s: timeout=%x noex=%x got=%x",
+ mylog(LOG_DEBUG, "%s: timeout=%x noex=%x got=%x",
qrp->name, qrp->rr_timeout, qrp->rr_noex, qrp->rr_got);
if (qrp == NULL || qrp->rr_timeout & RR_MX) {
@@ -2045,7 +2055,7 @@
return -1;
}
else
- log(LOG_INFO, "No MX/A on %s for %s; ignored",
+ mylog(LOG_INFO, "No MX/A on %s for %s; ignored",
name, dp->name);
return 0;
}
@@ -2090,12 +2100,12 @@
mxname = cmxp->name;
#if 0
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "mx=%s pref=%d", mxname, cmxp->pref);
+ mylog(LOG_DEBUG, "mx=%s pref=%d", mxname, cmxp->pref);
#endif
if (isamyalias(mxname))
{
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "found localhost (%s) in MX list",
+ mylog(LOG_DEBUG, "found localhost (%s) in MX list",
mxname);
if (!seenlocal || cmxp->pref < localpref)
localpref = cmxp->pref;
@@ -2137,13 +2147,13 @@
/* already registered, drop lower one */
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "duplicated MX %s(%d) found",
+ mylog(LOG_DEBUG, "duplicated MX %s(%d) found",
mxp->name, mxp->pref);
if (mxp->pref > offset + cmxp->pref)
{
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "remove it for re-link");
+ mylog(LOG_DEBUG, "remove it for re-link");
mxp->pref = offset + cmxp->pref;
if (mxp == dp->firstmx)
dp->firstmx = mxp->next;
@@ -2221,6 +2231,7 @@
return 0;
}
+static void
show_query(t, b, e)
u_char *t, *b, *e;
{
@@ -2247,13 +2258,13 @@
ap += n;
if (ap + INT16SZ*2 > eom)
{
- /* log(LOG_NOTICE, "corrupt DNS answer"); */
+ /* mylog(LOG_NOTICE, "corrupt DNS answer"); */
return;
}
GETSHORT(class, ap);
GETSHORT(type, ap);
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "%s: %s(%d,%d), rcode=%d",
+ mylog(LOG_DEBUG, "%s: %s(%d,%d), rcode=%d",
t, nbuf, class, type, ntohs(hp->rcode));
}
@@ -2268,7 +2279,7 @@
ap += n;
if (ap + INT16SZ*3 + INT32SZ > eom)
{
- /* log(LOG_NOTICE, "corrupt DNS answer"); */
+ /* mylog(LOG_NOTICE, "corrupt DNS answer"); */
return;
}
GETSHORT(class, ap);
@@ -2277,13 +2288,13 @@
GETSHORT(n, ap);
if (ap + n > eom)
{
- /* log(LOG_NOTICE, "corrupt DNS answer"); */
+ /* mylog(LOG_NOTICE, "corrupt DNS answer"); */
return;
}
if (class != C_IN)
{
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "DNS: unexpected class %d in an", class);
+ mylog(LOG_DEBUG, "DNS: unexpected class %d in an", class);
ap += n;
continue;
}
@@ -2294,20 +2305,20 @@
break;
ap += n;
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "got MX pref=%d,host=(%s)", pref, nbuf);
+ mylog(LOG_DEBUG, "got MX pref=%d,host=(%s)", pref, nbuf);
#if 0 /* for debug */
hep = gethostbyname(nbuf);
if (hep == NULL) {
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "get A -- h_errno=%d", h_errno);
+ mylog(LOG_DEBUG, "get A -- h_errno=%d", h_errno);
} else {
if (cnf.debug & DEBUG_DNS)
- log(LOG_DEBUG, "get A -- OK");
+ mylog(LOG_DEBUG, "get A -- OK");
}
#endif
} else {
ap += n;
- /* log(LOG_DEBUG, "unexpected answer type: %d", type); */
+ /* mylog(LOG_DEBUG, "unexpected answer type: %d", type); */
}
}
}