# HG changeset patch # User Sebastien Decugis # Date 1270189666 -32400 # Node ID 6418a188c1b59d4a27cc8b62a461c772ff3d5aa8 # Parent 6a71c3f3ab779e981fe804383836129d67b2e292 getnameinfo is also more sensitive on freeBSD diff -r 6a71c3f3ab77 -r 6418a188c1b5 freeDiameter/cnxctx.c --- a/freeDiameter/cnxctx.c Fri Apr 02 14:49:42 2010 +0900 +++ b/freeDiameter/cnxctx.c Fri Apr 02 15:27:46 2010 +0900 @@ -128,7 +128,7 @@ } /* Create the socket */ - CHECK_FCT_DO( fd_tcp_create_bind_server( &cnx->cc_socket, sa, sSSlen(sa) ), goto error ); + CHECK_FCT_DO( fd_tcp_create_bind_server( &cnx->cc_socket, sa, sSAlen(sa) ), goto error ); /* Generate the name for the connection object */ { diff -r 6a71c3f3ab77 -r 6418a188c1b5 freeDiameter/p_cnx.c --- a/freeDiameter/p_cnx.c Fri Apr 02 14:49:42 2010 +0900 +++ b/freeDiameter/p_cnx.c Fri Apr 02 15:27:46 2010 +0900 @@ -227,7 +227,7 @@ switch (nc->proto) { case IPPROTO_TCP: - cnx = fd_cnx_cli_connect_tcp((sSA *)&nc->ss, sSSlen(&nc->ss)); + cnx = fd_cnx_cli_connect_tcp((sSA *)&nc->ss, sSAlen(&nc->ss)); break; #ifndef DISABLE_SCTP case IPPROTO_SCTP: diff -r 6a71c3f3ab77 -r 6418a188c1b5 freeDiameter/sctp.c --- a/freeDiameter/sctp.c Fri Apr 02 14:49:42 2010 +0900 +++ b/freeDiameter/sctp.c Fri Apr 02 15:27:46 2010 +0900 @@ -713,7 +713,7 @@ else s.sin6.sin6_port = htons(port); - CHECK_SYS( bind(*sock, &s.sa, sSSlen(&s)) ); + CHECK_SYS( bind(*sock, &s.sa, sSAlen(&s)) ); } else { /* Explicit endpoints to bind to from config */ diff -r 6a71c3f3ab77 -r 6418a188c1b5 freeDiameter/tests/testcnx.c --- a/freeDiameter/tests/testcnx.c Fri Apr 02 14:49:42 2010 +0900 +++ b/freeDiameter/tests/testcnx.c Fri Apr 02 15:27:46 2010 +0900 @@ -485,7 +485,7 @@ case IPPROTO_TCP: { struct fd_endpoint * ep = (struct fd_endpoint *)(eps.next); - cnx = fd_cnx_cli_connect_tcp( &ep->sa, sSSlen(&ep->ss) ); + cnx = fd_cnx_cli_connect_tcp( &ep->sa, sSAlen(&ep->ss) ); CHECK( 1, (cnx ? 1 : 0) ^ cf->expect_failure ); } break; diff -r 6a71c3f3ab77 -r 6418a188c1b5 include/freeDiameter/libfreeDiameter.h --- a/include/freeDiameter/libfreeDiameter.h Fri Apr 02 14:49:42 2010 +0900 +++ b/include/freeDiameter/libfreeDiameter.h Fri Apr 02 15:27:46 2010 +0900 @@ -271,13 +271,19 @@ #define sSA4 struct sockaddr_in #define sSA6 struct sockaddr_in6 +/* The sockaddr length of a sSS structure */ +#define sSAlen( _sa_ ) \ + ( (socklen_t) ( (((sSA *)_sa_)->sa_family == AF_INET) ? (sizeof(sSA4)) : \ + ((((sSA *)_sa_)->sa_family == AF_INET6) ? (sizeof(sSA6)) : \ + 0 ) ) ) + /* Dump one sockaddr Node information */ #define sSA_DUMP_NODE( sa, flag ) { \ sSA * __sa = (sSA *)(sa); \ char __addrbuf[INET6_ADDRSTRLEN]; \ if (__sa) { \ int __rc = getnameinfo(__sa, \ - sizeof(sSS), \ + sSAlen(__sa), \ __addrbuf, \ sizeof(__addrbuf), \ NULL, \ @@ -298,7 +304,7 @@ char __servbuf[32]; \ if (__sa) { \ int __rc = getnameinfo(__sa, \ - sizeof(sSS), \ + sSAlen(__sa), \ __addrbuf, \ sizeof(__addrbuf), \ __servbuf, \ @@ -452,12 +458,6 @@ "Unknown")) #endif /* DISABLE_SCTP */ -/* The sockaddr length of a sSS structure */ -#define sSSlen( _ss_ ) \ - ( (socklen_t) ( (((sSS *)_ss_)->ss_family == AF_INET) ? (sizeof(sSA4)) : \ - ((((sSS *)_ss_)->ss_family == AF_INET6) ? (sizeof(sSA6)) : \ - 0 ) ) ) - /* Define the value of IP loopback address */ #ifndef INADDR_LOOPBACK #define INADDR_LOOPBACK inet_addr("127.0.0.1")