Added new configuration directive `Hostnames', which controls the resolving of IP addresses to hostnames.
This commit is contained in:
		
							parent
							
								
									a7ad161d2b
								
							
						
					
					
						commit
						f826301889
					
				
					 3 changed files with 31 additions and 13 deletions
				
			
		| 
						 | 
				
			
			@ -1,7 +1,9 @@
 | 
			
		|||
/*
 | 
			
		||||
    conf.c -- configuration code
 | 
			
		||||
    Copyright (C) 1998 Emphyrio,
 | 
			
		||||
    Copyright (C) 1998,1999,2000 Ivo Timmermans <zarq@iname.com>
 | 
			
		||||
    Copyright (C) 1998,1999,2000 Ivo Timmermans <itimmermans@bigfoot.com>
 | 
			
		||||
                            2000 Guus Sliepen <guus@sliepen.warande.net>
 | 
			
		||||
			    2000 Cris van Pelt <tribbel@arise.dhs.org>
 | 
			
		||||
 | 
			
		||||
    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 }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,7 @@
 | 
			
		|||
/*
 | 
			
		||||
    conf.h -- header for conf.c
 | 
			
		||||
    Copyright (C) 1998,1999,2000 Ivo Timmermans <zarq@iname.com>
 | 
			
		||||
    Copyright (C) 1998,1999,2000 Ivo Timmermans <itimmermans@bigfoot.com>
 | 
			
		||||
                            2000 Guus Sliepen <guus@sliepen.warande.net>
 | 
			
		||||
 | 
			
		||||
    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 {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										27
									
								
								src/netutl.c
									
										
									
									
									
								
							
							
						
						
									
										27
									
								
								src/netutl.c
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -1,6 +1,6 @@
 | 
			
		|||
/*
 | 
			
		||||
    netutl.c -- some supporting network utility code
 | 
			
		||||
    Copyright (C) 1998,1999,2000 Ivo Timmermans <zarq@iname.com>
 | 
			
		||||
    Copyright (C) 1998,1999,2000 Ivo Timmermans <itimmermans@bigfoot.com>
 | 
			
		||||
 | 
			
		||||
    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 <utils.h>
 | 
			
		||||
#include <xalloc.h>
 | 
			
		||||
 | 
			
		||||
#include "conf.h"
 | 
			
		||||
#include "encr.h"
 | 
			
		||||
#include "net.h"
 | 
			
		||||
#include "netutl.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -166,21 +169,29 @@ 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(host)
 | 
			
		||||
    {
 | 
			
		||||
      name = xmalloc(strlen(host->h_name)+20);
 | 
			
		||||
      sprintf(name, "%s (%s)", host->h_name, inet_ntoa(in));
 | 
			
		||||
    }
 | 
			
		||||
  else
 | 
			
		||||
  if(lookup_hostname)
 | 
			
		||||
    host = gethostbyaddr((char *)&in, sizeof(in), AF_INET);
 | 
			
		||||
 | 
			
		||||
  if(!lookup_hostname || !host)
 | 
			
		||||
    {
 | 
			
		||||
      name = xmalloc(20);
 | 
			
		||||
      sprintf(name, "%s", inet_ntoa(in));
 | 
			
		||||
    }
 | 
			
		||||
  else
 | 
			
		||||
    {
 | 
			
		||||
      name = xmalloc(strlen(host->h_name)+20);
 | 
			
		||||
      sprintf(name, "%s (%s)", host->h_name, inet_ntoa(in));
 | 
			
		||||
    }
 | 
			
		||||
cp
 | 
			
		||||
  return name;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue