Mercurial > hg > freeDiameter
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 ? */