Hi,
>>>>> On Mon, 31 Jul 2006 11:56:56 +0000
>>>>> Emmanuel Dreyfus <manu@...> said:
manu> On Mon, Jul 31, 2006 at 06:12:55PM +0900, Hajimu UMEMOTO wrote:
> My patch to query T_AAAA when blacklisted is AF_INET6 was not applied.
> It is for consistency with other part, and it should be still applied
> even when we decide not to support IPv6 DNSRBL.
manu> Could you please repost it? I can't find it
Okay, here it is.
Index: dnsrbl.c
diff -u -p dnsrbl.c.orig dnsrbl.c
--- dnsrbl.c.orig Sat Jul 29 00:41:51 2006
+++ dnsrbl.c Sat Jul 29 03:42:14 2006
@@ -103,10 +103,12 @@ dnsrbl_check_source(sa, salen, source)
int anslen;
ns_msg handle;
ns_rr rr;
- int i;
+ int qtype, i;
char *dnsrbl = source->d_domain;
struct sockaddr *blacklisted;
int retval = 0;
+ char *addr;
+ size_t len;
blacklisted = SA(&source->d_blacklisted);
@@ -123,7 +125,27 @@ dnsrbl_check_source(sa, salen, source)
(void)strncat(req, ".", NS_MAXDNAME);
(void)strncat(req, dnsrbl, NS_MAXDNAME);
- anslen = res_nquery(&res, req, C_IN, T_A, ans, sizeof(ans));
+ switch (blacklisted->sa_family) {
+ case AF_INET:
+ qtype = T_A;
+ addr = (char *)SADDR4(blacklisted);
+ len = sizeof(*SADDR4(blacklisted));
+ break;
+#ifdef AF_INET6
+ case AF_INET6:
+ qtype = T_AAAA;
+ addr = (char *)SADDR6(blacklisted);
+ len = sizeof(*SADDR6(blacklisted));
+ break;
+#endif
+ default:
+ syslog(LOG_ERR, "unexpected address family %d",
+ blacklisted->sa_family);
+ exit(EX_SOFTWARE);
+ break;
+ }
+
+ anslen = res_nquery(&res, req, C_IN, qtype, ans, sizeof(ans));
if (anslen == -1)
goto end;
@@ -134,9 +156,6 @@ dnsrbl_check_source(sa, salen, source)
}
for (i = 0; i < ns_msg_count(handle, ns_s_an); i++) {
- char *addr;
- size_t len;
-
if ((ns_parserr(&handle, ns_s_an, i, &rr)) != 0) {
syslog(LOG_ERR, "ns_parserr failed: %s",
strerror(errno));
@@ -145,35 +164,16 @@ dnsrbl_check_source(sa, salen, source)
}
switch (blacklisted->sa_family) {
- case AF_INET: {
- struct sockaddr_in *sin;
-
+ case AF_INET:
if (rr.type != T_A)
continue;
-
- sin = SA4(blacklisted);
- addr = (char *)&sin->sin_addr;
- len = sizeof(sin->sin_addr);
break;
- }
#ifdef AF_INET6
- case AF_INET6: {
- struct sockaddr_in6 *sin6;
-
+ case AF_INET6:
if (rr.type != T_AAAA)
continue;
-
- sin6 = SA6(blacklisted);
- addr = (char *)&sin6->sin6_addr;
- len = sizeof(sin6->sin6_addr);
break;
- }
#endif
- default:
- syslog(LOG_ERR, "unexpected address family %d",
- blacklisted->sa_family);
- exit(EX_SOFTWARE);
- break;
}
if (memcmp(addr, rr.rdata, len) == 0) {
Sincerely,
--
Hajimu UMEMOTO @ Internet Mutual Aid Society Yokohama, Japan
ume@... ume@{,jp.}FreeBSD.org
http://www.imasy.org/~ume/Message
Re: [milter-greylist] milter-greylist 2.1.10
2006-07-31 by Hajimu UMEMOTO
Attachments
- No local attachments were found for this message.