Mercurial > hg > freeDiameter
diff libfdproto/utils.c @ 1122:d4371b7aa0ff
New CMake option: ADDRESS_AVP_INCLUDE_PORT. Turn off for standard Host-IP-Address AVPs
author | Sebastien Decugis <sdecugis@freediameter.net> |
---|---|
date | Tue, 14 May 2013 18:01:31 +0800 |
parents | 79dd22145f52 |
children |
line wrap: on
line diff
--- a/libfdproto/utils.c Tue May 14 15:27:28 2013 +0800 +++ b/libfdproto/utils.c Tue May 14 18:01:31 2013 +0800 @@ -35,37 +35,29 @@ #include "fdproto-internal.h" -DECLARE_FD_DUMP_PROTOTYPE(fd_sa_dump_node, sSA * sa, int flags) +DECLARE_FD_DUMP_PROTOTYPE(fd_sa_dump, sSA * sa, int flags) { char addrbuf[INET6_ADDRSTRLEN]; + char servbuf[32]; + int rc; FD_DUMP_HANDLE_OFFSET(); + servbuf[0] = 0; + if (sa) { - int rc = getnameinfo(sa, sSAlen( sa ), addrbuf, sizeof(addrbuf), NULL, 0, flags); + if (sSAport(sa)) { + rc = getnameinfo(sa, sSAlen( sa ), addrbuf, sizeof(addrbuf), servbuf, sizeof(servbuf), flags); + } else { + rc = getnameinfo(sa, sSAlen( sa ), addrbuf, sizeof(addrbuf), NULL, 0, flags); + } if (rc) { CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "%s", gai_strerror(rc)), return NULL); } else { - CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "%s", &addrbuf[0]), return NULL); - } - } else { - CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "(NULL / ANY)"), return NULL); - } - - return *buf; -} - -DECLARE_FD_DUMP_PROTOTYPE(fd_sa_dump_node_serv, sSA * sa, int flags) -{ - char addrbuf[INET6_ADDRSTRLEN]; - char servbuf[32]; - FD_DUMP_HANDLE_OFFSET(); - - if (sa) { - int rc = getnameinfo(sa, sSAlen( sa ), addrbuf, sizeof(addrbuf), servbuf, sizeof(servbuf), flags); - if (rc) { - CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "%s", gai_strerror(rc)), return NULL); - } else { - CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "%s(%s)", &addrbuf[0], &servbuf[0]), return NULL); + if (servbuf[0]) { + CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "%s(%s)", &addrbuf[0], &servbuf[0]), return NULL); + } else { + CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "%s", &addrbuf[0]), return NULL); + } } } else { CHECK_MALLOC_DO( fd_dump_extend( FD_DUMP_STD_PARAMS, "(NULL / ANY)"), return NULL);