Big and bad commit of my current tree...

- Added seperate file for connection list handling
- Updating everything to use connlist, meta and subnet files
- Removed dependency on libgmp
- Lots of other stuff...
This commit is contained in:
Guus Sliepen 2000-10-11 10:35:17 +00:00
parent 73d0dcfcc1
commit 950fb8e916
16 changed files with 579 additions and 333 deletions

View file

@ -16,7 +16,7 @@
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.12.4.10 2000/09/15 12:58:40 zarq Exp $
$Id: netutl.c,v 1.12.4.11 2000/10/11 10:35:17 guus Exp $
*/
#include "config.h"
@ -41,25 +41,6 @@
#include "system.h"
/*
look for a connection associated with the given vpn ip,
return its connection structure.
Skips connections that are not activated!
*/
conn_list_t *lookup_conn(ip_t ip)
{
conn_list_t *p = conn_list;
cp
/* Exact match suggested by James B. MacLean */
for(p = conn_list; p != NULL; p = p->next)
if((ip == p->vpn_ip) && p->status.active)
return p;
for(p = conn_list; p != NULL; p = p->next)
if(((ip & p->vpn_mask) == (p->vpn_ip & p->vpn_mask)) && p->status.active)
return p;
cp
return NULL;
}
/*
free a queue and all of its elements
@ -80,93 +61,6 @@ cp
cp
}
/*
free a conn_list_t element and all its pointers
*/
void free_conn_element(conn_list_t *p)
{
cp
if(p->sq)
destroy_queue(p->sq);
if(p->rq)
destroy_queue(p->rq);
if(p->name)
free(p->name);
if(p->hostname)
free(p->hostname);
free_key(p->public_key);
free_key(p->datakey);
free(p);
cp
}
/*
remove all marked connections
*/
void prune_conn_list(void)
{
conn_list_t *p, *prev = NULL, *next = NULL;
cp
for(p = conn_list; p != NULL; )
{
next = p->next;
if(p->status.remove)
{
if(prev)
prev->next = next;
else
conn_list = next;
free_conn_element(p);
}
else
prev = p;
p = next;
}
cp
}
/*
creates new conn_list element, and initializes it
*/
conn_list_t *new_conn_list(void)
{
conn_list_t *p = xmalloc(sizeof(*p));
cp
/* initialise all those stupid pointers at once */
memset(p, '\0', sizeof(*p));
p->vpn_mask = (ip_t)(~0L); /* If this isn't done, it would be a
wastebucket for all packets with
unknown destination. */
p->nexthop = p;
cp
return p;
}
/*
free all elements of conn_list
*/
void destroy_conn_list(void)
{
conn_list_t *p, *next;
cp
for(p = conn_list; p != NULL; )
{
next = p->next;
free_conn_element(p);
p = next;
}
conn_list = NULL;
cp
}
/*
look up the name associated with the ip
address `addr'
*/
char *hostlookup(unsigned long addr)
{
@ -238,17 +132,3 @@ cp
return ip;
}
void dump_conn_list(void)
{
conn_list_t *p;
cp
syslog(LOG_DEBUG, _("Connection list:"));
for(p = conn_list; p != NULL; p = p->next)
{
syslog(LOG_DEBUG, _("%s netmask %d.%d.%d.%d at %s port %hd flags %d sockets %d, %d status %04x"),
p->name, IP_ADDR_V(p->vpn_mask), p->hostname, p->port, p->flags,
p->socket, p->meta_socket, p->status);
}
cp
}