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:
parent
73d0dcfcc1
commit
950fb8e916
16 changed files with 579 additions and 333 deletions
122
src/netutl.c
122
src/netutl.c
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue