X-Git-Url: https://www.tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Fsubnet.c;h=1b7bc386700b06b02b1739456f1b676d4701d746;hp=fff384ff26e59c639fc6db78472de7e11883c19a;hb=87ad5c97a9a73a65050ad7adce34503f856d8665;hpb=ac066bb057dcb187bf91670793ba5e6ca456e052 diff --git a/src/subnet.c b/src/subnet.c index fff384ff..1b7bc386 100644 --- a/src/subnet.c +++ b/src/subnet.c @@ -17,7 +17,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id: subnet.c,v 1.1.2.26 2001/10/27 13:13:35 guus Exp $ + $Id: subnet.c,v 1.1.2.28 2001/10/30 12:59:12 guus Exp $ */ #include "config.h" @@ -40,25 +40,12 @@ avl_tree_t *subnet_tree; -void init_subnets(void) -{ -cp - subnet_tree = avl_alloc_tree((avl_compare_t)subnet_compare, (avl_action_t)free_subnet); -cp -} - /* Subnet comparison */ int subnet_compare_mac(subnet_t *a, subnet_t *b) { - int result; cp - result = memcmp(&a->net.mac.address, &b->net.mac.address, sizeof(mac_t)); - - if(result) - return result; - - return strcmp(a->owner->name, b->owner->name); + return memcmp(&a->net.mac.address, &b->net.mac.address, sizeof(mac_t)); } int subnet_compare_ipv4(subnet_t *a, subnet_t *b) @@ -76,7 +63,7 @@ cp else if(a->net.ipv4.mask > b->net.ipv4.mask) return 1; - return strcmp(a->owner->name, b->owner->name); + return 0; } int subnet_compare_ipv6(subnet_t *a, subnet_t *b) @@ -95,7 +82,7 @@ cp if(result) return result; - return strcmp(a->owner->name, b->owner->name); + return 0; } int subnet_compare(subnet_t *a, subnet_t *b) @@ -121,6 +108,36 @@ cp } } +/* Initialising trees */ + +void init_subnets(void) +{ +cp + subnet_tree = avl_alloc_tree((avl_compare_t)subnet_compare, (avl_action_t)free_subnet); +cp +} + +void exit_subnets(void) +{ +cp + avl_delete_tree(subnet_tree); +cp +} + +avl_tree_t *new_subnet_tree(void) +{ +cp + return avl_alloc_tree((avl_compare_t)subnet_compare, NULL); +cp +} + +void free_subnet_tree(avl_tree_t *subnet_tree) +{ +cp + avl_delete_tree(subnet_tree); +cp +} + /* Allocating and freeing space for subnets */ subnet_t *new_subnet(void) @@ -135,7 +152,7 @@ cp free(subnet); } -/* Linked list management */ +/* Adding and removing subnets */ void subnet_add(node_t *n, subnet_t *subnet) {