+char* addr2str(ipaddr_ptr_t *res, int nores){
+ int size;
+ int ret;
+ if (!res->gen->sa_family)
+ return NULL;
+
+ if(res->gen->sa_family==AF_INET){
+ size=sizeof(struct sockaddr_in);
+ }else if(res->gen->sa_family==AF_INET6){
+ size=sizeof(struct sockaddr_in6);
+ }else{
+ return NULL;
+ }
+ if((ret=getnameinfo(res->gen, size,
+ addr2str_buf, sizeof (addr2str_buf), 0, 0, NI_NUMERICHOST))<0){
+ dbgprintf(0,"Error! %s\n",gai_strerror(ret));
+ }
+
+ if (parms.no_resolve||nores){
+ return addr2str_buf;
+ }else{
+ addr2nm_buf[0] = '\0';
+ getnameinfo(res->gen, size,
+ addr2nm_buf, sizeof (addr2nm_buf), 0, 0, NI_IDN);
+ snprintf(addr2both_buf,1000," %s (%s)", addr2nm_buf[0] ? addr2nm_buf : addr2str_buf, addr2str_buf);
+ return addr2both_buf;
+ }
+ return NULL;
+}
+