SET(sarg_VERSION 2)
SET(sarg_REVISION "3rc1")
SET(sarg_BUILD "")
-SET(sarg_BUILDDATE "Mar-02-2010")
+SET(sarg_BUILDDATE "Mar-08-2010")
INCLUDE(AddFileDependencies)
INCLUDE(CheckIncludeFile)
CHECK_FUNCTION_EXISTS(backtrace HAVE_BACKTRACE)
CHECK_FUNCTION_EXISTS(symlink HAVE_SYMLINK)
CHECK_FUNCTION_EXISTS(lstat HAVE_LSTAT)
+CHECK_FUNCTION_EXISTS(getnameinfo HAVE_GETNAMEINFO)
# Find gd
CHECK_INCLUDE_FILE(gd.h HAVE_GD_H)
AC_CHECK_FUNCS(backtrace)
AC_CHECK_FUNCS(symlink)
AC_CHECK_FUNCS(lstat)
+AC_CHECK_FUNCS(getnameinfo)
dnl check for the rlim_t size
AC_CHECK_SIZEOF(rlim_t,1,[#if HAVE_SYS_RESOURCE_H
#cmakedefine HAVE_BACKTRACE
#cmakedefine HAVE_SYMLINK
#cmakedefine HAVE_LSTAT
+#cmakedefine HAVE_GETNAMEINFO
#define RLIM_STRING "@RLIM_STRING@"
#define ICONV_CONST @ICONV_CONST@
-#define VERSION PACKAGE_VERSION" Mar-02-2010"
+#define VERSION PACKAGE_VERSION" Mar-08-2010"
#define PGM PACKAGE_NAME
#define URL "http://sarg.sourceforge.net"
void ip2name(char *ip,int ip_len)
{
+#ifdef HAVE_GETNAMEINFO
+ struct sockaddr_storage sa;
+ char host[NI_MAXHOST];
+ int n1,n2,n3,n4,next=0;
+ int error;
+
+ memset(&sa,0,sizeof(sa));
+ if (sscanf(ip,"%d.%d.%d.%d%n",&n1,&n2,&n3,&n4,&next)==4 && ip[next]=='\0') {
+ struct sockaddr_in *s4=(struct sockaddr_in *)&sa;
+ if (inet_pton(AF_INET,ip,&s4->sin_addr)!=1) return;
+ sa.ss_family=AF_INET;
+ } else {
+ struct sockaddr_in6 *s6=(struct sockaddr_in6 *)&sa;
+ if (inet_pton(AF_INET6,ip,&s6->sin6_addr)!=1) return;
+ sa.ss_family=AF_INET6;
+ }
+ error=getnameinfo((struct sockaddr *)&sa,sizeof(sa),host,sizeof(host),NULL,0,0);
+ if (error==0)
+ {
+ strncpy(ip,host,ip_len-1);
+ ip[ip_len-1]='\0';
+ } else {
+ debuga(_("IP to name resolution (getnameinfo) on IP address %s failed with error %d - %s\n"),ip,error,gai_strerror(error));
+ }
+#else
u_long addr;
struct hostent *hp;
char **p;
strncpy(ip,hp->h_name,ip_len-1);
ip[ip_len-1]=0;
}
-
+#endif
return;
}
continue;
}
strcpy(u2,uinfo->id);
- if(Ip2Name && uinfo->id_is_ip) ip2name(u2,sizeof(u2));
+ if(Ip2Name && uinfo->id_is_ip) {
+ strcpy(ipantes,u2);
+ ip2name(u2,sizeof(u2));
+ strcpy(nameantes,u2);
+ }
user_find(uinfo->label,MAX_USER_LEN, u2);
strcpy(wdirname,dirname);