/*
netutl.c -- some supporting network utility code
- Copyright (C) 1998,99 Ivo Timmermans <zarq@iname.com>
+ Copyright (C) 1998,1999,2000 Ivo Timmermans <zarq@iname.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
/*
look for a connection associated with the given vpn ip,
- return its connection structure
+ return its connection structure.
+ Skips connections that are not activated!
*/
conn_list_t *lookup_conn(ip_t ip)
{
cp
/* Exact match suggested by James B. MacLean */
for(p = conn_list; p != NULL; p = p->next)
- if(ip == p->vpn_ip)
+ if((ip == p->vpn_ip) && p->active)
return p;
for(p = conn_list; p != NULL; p = p->next)
- if((ip & p->vpn_mask) == (p->vpn_ip & p->vpn_mask))
+ if(((ip & p->vpn_mask) == (p->vpn_ip & p->vpn_mask)) && p->active)
return p;
cp
return NULL;
cp
if(p->hostname)
free(p->hostname);
- if(p->pp)
- free(p->pp);
if(p->sq)
destroy_queue(p->sq);
if(p->rq)
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;