dnstree.c (356345) | dnstree.c (361435) |
---|---|
1/* 2 * util/storage/dnstree.c - support for rbtree types suitable for DNS code. 3 * 4 * Copyright (c) 2008, NLnet Labs. All rights reserved. 5 * 6 * This software is open source. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 90 unchanged lines hidden (view full) --- 99 node->node.key = node; 100 memcpy(&node->addr, addr, addrlen); 101 node->addrlen = addrlen; 102 node->net = net; 103 node->parent = NULL; 104 return rbtree_insert(tree, &node->node) != NULL; 105} 106 | 1/* 2 * util/storage/dnstree.c - support for rbtree types suitable for DNS code. 3 * 4 * Copyright (c) 2008, NLnet Labs. All rights reserved. 5 * 6 * This software is open source. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 90 unchanged lines hidden (view full) --- 99 node->node.key = node; 100 memcpy(&node->addr, addr, addrlen); 101 node->addrlen = addrlen; 102 node->net = net; 103 node->parent = NULL; 104 return rbtree_insert(tree, &node->node) != NULL; 105} 106 |
107void addr_tree_init_parents(rbtree_type* tree) | 107void addr_tree_init_parents_node(struct addr_tree_node* node) |
108{ | 108{ |
109 struct addr_tree_node* node, *prev = NULL, *p; | 109 struct addr_tree_node* prev = NULL, *p; |
110 int m; | 110 int m; |
111 RBTREE_FOR(node, struct addr_tree_node*, tree) { | 111 for(; (rbnode_type*)node != RBTREE_NULL; 112 node = (struct addr_tree_node*)rbtree_next((rbnode_type*)node)) { |
112 node->parent = NULL; 113 if(!prev || prev->addrlen != node->addrlen) { 114 prev = node; 115 continue; 116 } 117 m = addr_in_common(&prev->addr, prev->net, &node->addr, 118 node->net, node->addrlen); 119 /* sort order like: ::/0, 1::/2, 1::/4, ... 2::/2 */ --- 5 unchanged lines hidden (view full) --- 125 * this one is a (grand)parent */ 126 node->parent = p; 127 break; 128 } 129 prev = node; 130 } 131} 132 | 113 node->parent = NULL; 114 if(!prev || prev->addrlen != node->addrlen) { 115 prev = node; 116 continue; 117 } 118 m = addr_in_common(&prev->addr, prev->net, &node->addr, 119 node->net, node->addrlen); 120 /* sort order like: ::/0, 1::/2, 1::/4, ... 2::/2 */ --- 5 unchanged lines hidden (view full) --- 126 * this one is a (grand)parent */ 127 node->parent = p; 128 break; 129 } 130 prev = node; 131 } 132} 133 |
134void addr_tree_init_parents(rbtree_type* tree) 135{ 136 addr_tree_init_parents_node( 137 (struct addr_tree_node*)rbtree_first(tree)); 138} 139 |
|
133void name_tree_init_parents(rbtree_type* tree) 134{ 135 struct name_tree_node* node, *prev = NULL, *p; 136 int m; 137 RBTREE_FOR(node, struct name_tree_node*, tree) { 138 node->parent = NULL; 139 if(!prev || prev->dclass != node->dclass) { 140 prev = node; --- 155 unchanged lines hidden --- | 140void name_tree_init_parents(rbtree_type* tree) 141{ 142 struct name_tree_node* node, *prev = NULL, *p; 143 int m; 144 RBTREE_FOR(node, struct name_tree_node*, tree) { 145 node->parent = NULL; 146 if(!prev || prev->dclass != node->dclass) { 147 prev = node; --- 155 unchanged lines hidden --- |