Mercurial > hg > freeDiameter
diff libfdproto/utils.c @ 1103:d8591b1c56cd
Implemented a few hooks
author | Sebastien Decugis <sdecugis@freediameter.net> |
---|---|
date | Fri, 10 May 2013 18:48:57 +0800 |
parents | 44f3e48dfe27 |
children | 79dd22145f52 |
line wrap: on
line diff
--- a/libfdproto/utils.c Thu May 09 16:40:02 2013 +0800 +++ b/libfdproto/utils.c Fri May 10 18:48:57 2013 +0800 @@ -65,10 +65,28 @@ 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); + 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, "(NULL / ANY)"), return NULL); } return *buf; } + +void fd_sa_sdump_numeric(char * buf /* must be at least sSA_DUMP_STRLEN */, sSA * sa) +{ + char addrbuf[INET6_ADDRSTRLEN]; + char servbuf[32]; + + if (sa) { + int rc = getnameinfo(sa, sSAlen( sa ), addrbuf, sizeof(addrbuf), servbuf, sizeof(servbuf), NI_NUMERICHOST | NI_NUMERICSERV); + if (rc) { + snprintf(buf, sSA_DUMP_STRLEN, "%s", gai_strerror(rc)); + } else { + snprintf(buf, sSA_DUMP_STRLEN, "%s(%s)", addrbuf, servbuf); + } + } else { + snprintf(buf, sSA_DUMP_STRLEN, "(NULL / ANY)"); + } + +}