Yahoo Groups archive

Milter-greylist

Index last updated: 2026-04-28 23:32 UTC

Message

Re: [milter-greylist] milter-greylist 2.1.10

2006-07-31 by Hajimu UMEMOTO

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/

Attachments

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.