From: Ivo Timmermans Date: Tue, 30 May 2000 11:18:12 +0000 (+0000) Subject: Added new configuration directive `Hostnames', which controls the resolving of IP... X-Git-Tag: release-1.0pre2~9 X-Git-Url: https://www.tinc-vpn.org/git/browse?p=tinc;a=commitdiff_plain;h=f826301889e1fa1a22770919f0385c3ca04c740a;hp=a7ad161d2b115b6a2a69c5dc8ddd33008d3562d0;ds=sidebyside Added new configuration directive `Hostnames', which controls the resolving of IP addresses to hostnames. --- diff --git a/src/conf.c b/src/conf.c index ed603701..35ca4d78 100644 --- a/src/conf.c +++ b/src/conf.c @@ -1,7 +1,9 @@ /* conf.c -- configuration code Copyright (C) 1998 Emphyrio, - Copyright (C) 1998,1999,2000 Ivo Timmermans + Copyright (C) 1998,1999,2000 Ivo Timmermans + 2000 Guus Sliepen + 2000 Cris van Pelt This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -16,10 +18,10 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + $Id: conf.c,v 1.9 2000/05/30 11:18:12 zarq Exp $ */ -/* Created more dynamic storage for lines read from the config file. -- - Cris van Pelt */ #include "config.h" @@ -62,6 +64,7 @@ static internal_config_t hazahaza[] = { { "TapDevice", tapdevice, TYPE_NAME }, { "KeyExpire", keyexpire, TYPE_INT }, { "VpnMask", vpnmask, TYPE_IP }, + { "Hostnames", resolve_dns, TYPE_BOOL }, { NULL, 0, 0 } }; diff --git a/src/conf.h b/src/conf.h index 36a7bb8b..de3d583c 100644 --- a/src/conf.h +++ b/src/conf.h @@ -1,6 +1,7 @@ /* conf.h -- header for conf.c - Copyright (C) 1998,1999,2000 Ivo Timmermans + Copyright (C) 1998,1999,2000 Ivo Timmermans + 2000 Guus Sliepen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -15,6 +16,8 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + $Id: conf.h,v 1.6 2000/05/30 11:18:12 zarq Exp $ */ #ifndef __TINC_CONF_H__ @@ -41,7 +44,8 @@ typedef enum which_t { allowconnect, pingtimeout, keyexpire, - vpnmask + vpnmask, + resolve_dns } which_t; typedef struct config_t { diff --git a/src/netutl.c b/src/netutl.c index f49178bd..a61c9173 100644 --- a/src/netutl.c +++ b/src/netutl.c @@ -1,6 +1,6 @@ /* netutl.c -- some supporting network utility code - Copyright (C) 1998,1999,2000 Ivo Timmermans + Copyright (C) 1998,1999,2000 Ivo Timmermans This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -15,6 +15,8 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + $Id: netutl.c,v 1.11 2000/05/30 11:18:12 zarq Exp $ */ #include "config.h" @@ -31,6 +33,7 @@ #include #include +#include "conf.h" #include "encr.h" #include "net.h" #include "netutl.h" @@ -166,20 +169,28 @@ char *hostlookup(unsigned long addr) char *name; struct hostent *host = NULL; struct in_addr in; + config_t const *cfg; + int lookup_hostname; cp in.s_addr = addr; - host = gethostbyaddr((char *)&in, sizeof(in), AF_INET); + lookup_hostname = 0; + if((cfg = get_config_val(resolve_dns)) != NULL) + if(cfg->data.val == stupid_true) + lookup_hostname = 1; + + if(lookup_hostname) + host = gethostbyaddr((char *)&in, sizeof(in), AF_INET); - if(host) + if(!lookup_hostname || !host) { - name = xmalloc(strlen(host->h_name)+20); - sprintf(name, "%s (%s)", host->h_name, inet_ntoa(in)); + name = xmalloc(20); + sprintf(name, "%s", inet_ntoa(in)); } else { - name = xmalloc(20); - sprintf(name, "%s", inet_ntoa(in)); + name = xmalloc(strlen(host->h_name)+20); + sprintf(name, "%s (%s)", host->h_name, inet_ntoa(in)); } cp return name;