Mercurial > hg > freeDiameter
changeset 370:06692259d788
Enforce address family from config when connecting to a peer
author | Sebastien Decugis <sdecugis@nict.go.jp> |
---|---|
date | Mon, 05 Jul 2010 11:07:02 +0900 |
parents | 350e1cca3782 |
children | ba39f4afd45d |
files | freeDiameter/p_cnx.c |
diffstat | 1 files changed, 12 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/freeDiameter/p_cnx.c Sat Jul 03 14:14:00 2010 +0900 +++ b/freeDiameter/p_cnx.c Mon Jul 05 11:07:02 2010 +0900 @@ -87,7 +87,8 @@ ret = getaddrinfo(peer->p_hdr.info.pi_diamid, NULL, &hints, &ai); if (ret) { fd_log_debug("Unable to resolve address for peer '%s' (%s), aborting\n", peer->p_hdr.info.pi_diamid, gai_strerror(ret)); - fd_psm_terminate( peer, NULL ); + if (ret != EAI_AGAIN) + fd_psm_terminate( peer, NULL ); return 0; } @@ -105,6 +106,16 @@ AF_INET : AF_INET6)); } + if (fd_g_config->cnf_flags.no_ip4) { + CHECK_FCT( fd_ep_filter_family( + &peer->p_hdr.info.pi_endpoints, + AF_INET6)); + } + if (fd_g_config->cnf_flags.no_ip6) { + CHECK_FCT( fd_ep_filter_family( + &peer->p_hdr.info.pi_endpoints, + AF_INET)); + } /* Now check we have at least one address to attempt */ if (FD_IS_LIST_EMPTY(&peer->p_hdr.info.pi_endpoints)) {