changeset 140:34e47f4addf8

Fix broken test
author Sebastien Decugis <sdecugis@nict.go.jp>
date Wed, 16 Dec 2009 17:20:31 +0900
parents 8b8d11fadc4e
children 4e671e8dcae8
files freeDiameter/endpoints.c freeDiameter/tests/testcnx.c include/freeDiameter/freeDiameter.h
diffstat 3 files changed, 20 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/freeDiameter/endpoints.c	Wed Dec 16 17:12:51 2009 +0900
+++ b/freeDiameter/endpoints.c	Wed Dec 16 17:20:31 2009 +0900
@@ -52,20 +52,25 @@
 	CHECK_PARAMS( list && sa && (sl <= sizeof(sSS)) );
 	
 	/* Filter out loopback addresses, unspecified addresses, and invalid families */
-	ptr.sa = sa;
-	switch (sa->sa_family) {
-		case AF_INET:
-			if (IN_IS_ADDR_UNSPECIFIED(&ptr.sin->sin_addr) || IN_IS_ADDR_LOOPBACK(&ptr.sin->sin_addr))
+	if (! (flags & EP_ACCEPTALL)) {
+		ptr.sa = sa;
+		switch (sa->sa_family) {
+			case AF_INET:
+				if (IN_IS_ADDR_UNSPECIFIED(&ptr.sin->sin_addr) || IN_IS_ADDR_LOOPBACK(&ptr.sin->sin_addr))
+					return 0;
+				break;
+
+			case AF_INET6:
+				if (IN6_IS_ADDR_UNSPECIFIED(&ptr.sin6->sin6_addr) || IN6_IS_ADDR_LOOPBACK(&ptr.sin6->sin6_addr))
+					return 0;
+				break;
+
+			default:
 				return 0;
-			break;
-			
-		case AF_INET6:
-			if (IN6_IS_ADDR_UNSPECIFIED(&ptr.sin6->sin6_addr) || IN6_IS_ADDR_LOOPBACK(&ptr.sin6->sin6_addr))
-				return 0;
-			break;
-			
-		default:
-			return 0;
+		}
+	} else {
+		/* remove it */
+		flags &= ~EP_ACCEPTALL;
 	}
 	
 	/* Search place in the list */
--- a/freeDiameter/tests/testcnx.c	Wed Dec 16 17:12:51 2009 +0900
+++ b/freeDiameter/tests/testcnx.c	Wed Dec 16 17:20:31 2009 +0900
@@ -590,7 +590,7 @@
 		CHECK( 0, getaddrinfo("localhost", _stringize(TEST_PORT), &hints, &ai) );
 		aip = ai;
 		while (aip) {
-			CHECK( 0, fd_ep_add_merge( &eps, aip->ai_addr, aip->ai_addrlen, EP_FL_DISC ));
+			CHECK( 0, fd_ep_add_merge( &eps, aip->ai_addr, aip->ai_addrlen, EP_FL_DISC | EP_ACCEPTALL ));
 			aip = aip->ai_next;
 		};
 		freeaddrinfo(ai);
--- a/include/freeDiameter/freeDiameter.h	Wed Dec 16 17:12:51 2009 +0900
+++ b/include/freeDiameter/freeDiameter.h	Wed Dec 16 17:20:31 2009 +0900
@@ -678,6 +678,7 @@
 #define	EP_FL_ADV	(1 << 2)	/* This endpoint was advertized in Diameter CER/CEA exchange */
 #define	EP_FL_LL	(1 << 3)	/* Lower layer mechanism provided this endpoint */
 #define	EP_FL_PRIMARY	(1 << 4)	/* This endpoint is primary in a multihomed SCTP association */
+#define	EP_ACCEPTALL	(1 << 15)	/* This flag allows bypassing the address filter in fd_ep_add_merge. */
 	uint32_t	flags;		/* Additional information about the endpoint */
 		
 	/* To add: a validity timestamp for DNS records ? How do we retrieve this lifetime from DNS ? */
"Welcome to our mercurial repository"