From f826301889e1fa1a22770919f0385c3ca04c740a Mon Sep 17 00:00:00 2001 From: Ivo Timmermans Date: Tue, 30 May 2000 11:18:12 +0000 Subject: [PATCH] Added new configuration directive `Hostnames', which controls the resolving of IP addresses to hostnames. --- src/conf.c | 9 ++++++--- src/conf.h | 8 ++++++-- src/netutl.c | 25 ++++++++++++++++++------- 3 files changed, 30 insertions(+), 12 deletions(-) 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; -- 2.39.5