Diff for /libelwix/src/patricia.c between versions 1.1 and 1.2

version 1.1, 2013/01/17 10:05:35 version 1.2, 2013/05/30 09:07:33
Line 213  static inline prefix_t *New_Prefix(int family, void *d Line 213  static inline prefix_t *New_Prefix(int family, void *d
   
 // ------------------------------------------------------------------------------------  // ------------------------------------------------------------------------------------
   
inline char *prefix_toa(prefix_t * prefix)char *prefix_toa(prefix_t * prefix)
 {  {
     return prefix_toa2x(prefix, NULL, 0);      return prefix_toa2x(prefix, NULL, 0);
 }  }
   
inline prefix_t *ascii2prefix(int family, char *string)prefix_t *ascii2prefix(int family, char *string)
 {  {
         u_long bitlen, maxbitlen = 0;          u_long bitlen, maxbitlen = 0;
         char *cp;          char *cp;
Line 279  inline prefix_t *ascii2prefix(int family, char *string Line 279  inline prefix_t *ascii2prefix(int family, char *string
                         return NULL;                          return NULL;
 }  }
   
inline prefix_t *Ref_Prefix(prefix_t *prefix)prefix_t *Ref_Prefix(prefix_t *prefix)
 {  {
         if (!prefix)          if (!prefix)
                 return NULL;                  return NULL;
Line 293  inline prefix_t *Ref_Prefix(prefix_t *prefix) Line 293  inline prefix_t *Ref_Prefix(prefix_t *prefix)
         return prefix;          return prefix;
 }  }
   
inline void Deref_Prefix(prefix_t *prefix)void Deref_Prefix(prefix_t *prefix)
 {  {
         if (!prefix)          if (!prefix)
                 return;                  return;
Line 309  inline void Deref_Prefix(prefix_t *prefix) Line 309  inline void Deref_Prefix(prefix_t *prefix)
 /* } */  /* } */
   
 /* these routines support continuous mask only */  /* these routines support continuous mask only */
inline patricia_tree_t *New_Patricia(int maxbits)patricia_tree_t *New_Patricia(int maxbits)
 {  {
         patricia_tree_t *patricia;          patricia_tree_t *patricia;
   
Line 330  inline patricia_tree_t *New_Patricia(int maxbits) Line 330  inline patricia_tree_t *New_Patricia(int maxbits)
  * if func is supplied, it will be called as func(node->data)   * if func is supplied, it will be called as func(node->data)
  * before deleting the node   * before deleting the node
  */   */
inline void Clear_Patricia(patricia_tree_t *patricia, void_fn_t func)void Clear_Patricia(patricia_tree_t *patricia, void_fn_t func)
 {  {
         assert(patricia);          assert(patricia);
         if (patricia->head) {          if (patricia->head) {
Line 368  inline void Clear_Patricia(patricia_tree_t *patricia,  Line 368  inline void Clear_Patricia(patricia_tree_t *patricia, 
         /* Delete(patricia); */          /* Delete(patricia); */
 }  }
   
inline void Destroy_Patricia(patricia_tree_t *patricia, void_fn_t func)void Destroy_Patricia(patricia_tree_t *patricia, void_fn_t func)
 {  {
         Clear_Patricia(patricia, func);          Clear_Patricia(patricia, func);
         Delete(patricia);          Delete(patricia);
Line 379  inline void Destroy_Patricia(patricia_tree_t *patricia Line 379  inline void Destroy_Patricia(patricia_tree_t *patricia
 /*  /*
  * if func is supplied, it will be called as func(node->prefix, node->data)   * if func is supplied, it will be called as func(node->prefix, node->data)
  */   */
inline void patricia_process(patricia_tree_t *patricia, void_fn_t func)void patricia_process(patricia_tree_t *patricia, void_fn_t func)
 {  {
         patricia_node_t *node;          patricia_node_t *node;
   
Line 391  inline void patricia_process(patricia_tree_t *patricia Line 391  inline void patricia_process(patricia_tree_t *patricia
 }  }
   
   
inline patricia_node_t *patricia_search_exact(patricia_tree_t *patricia, prefix_t *prefix)patricia_node_t *patricia_search_exact(patricia_tree_t *patricia, prefix_t *prefix)
 {  {
         patricia_node_t *node;          patricia_node_t *node;
         u_char *addr;          u_char *addr;
Line 459  inline patricia_node_t *patricia_search_exact(patricia Line 459  inline patricia_node_t *patricia_search_exact(patricia
   
   
 /* if inclusive != 0, "best" may be the given prefix itself */  /* if inclusive != 0, "best" may be the given prefix itself */
inline patricia_node_t *patricia_search_best2(patricia_tree_t *patricia, prefix_t *prefix, int inclusive)patricia_node_t *patricia_search_best2(patricia_tree_t *patricia, prefix_t *prefix, int inclusive)
 {  {
         patricia_node_t *node;          patricia_node_t *node;
         patricia_node_t *stack[PATRICIA_MAXBITS + 1];          patricia_node_t *stack[PATRICIA_MAXBITS + 1];
Line 549  inline patricia_node_t *patricia_search_best2(patricia Line 549  inline patricia_node_t *patricia_search_best2(patricia
         return NULL;          return NULL;
 }  }
   
inline patricia_node_t *patricia_search_best(patricia_tree_t *patricia, prefix_t *prefix)patricia_node_t *patricia_search_best(patricia_tree_t *patricia, prefix_t *prefix)
 {  {
     return patricia_search_best2(patricia, prefix, 1);      return patricia_search_best2(patricia, prefix, 1);
 }  }
   
   
inline patricia_node_t *patricia_lookup(patricia_tree_t *patricia, prefix_t *prefix)patricia_node_t *patricia_lookup(patricia_tree_t *patricia, prefix_t *prefix)
 {  {
         patricia_node_t *node, *new_node, *parent, *glue;          patricia_node_t *node, *new_node, *parent, *glue;
         u_char *addr, *test_addr;          u_char *addr, *test_addr;
Line 759  inline patricia_node_t *patricia_lookup(patricia_tree_ Line 759  inline patricia_node_t *patricia_lookup(patricia_tree_
 }  }
   
   
inline void patricia_remove(patricia_tree_t *patricia, patricia_node_t *node)void patricia_remove(patricia_tree_t *patricia, patricia_node_t *node)
 {  {
         patricia_node_t *parent, *child;          patricia_node_t *parent, *child;
   
Line 860  inline void patricia_remove(patricia_tree_t *patricia, Line 860  inline void patricia_remove(patricia_tree_t *patricia,
   
 /* { from demo.c */  /* { from demo.c */
   
inline void lookup_then_remove(patricia_tree_t *tree, char *string)void lookup_then_remove(patricia_tree_t *tree, char *string)
 {  {
         patricia_node_t *node;          patricia_node_t *node;
   
Line 868  inline void lookup_then_remove(patricia_tree_t *tree,  Line 868  inline void lookup_then_remove(patricia_tree_t *tree, 
                 patricia_remove(tree, node);                  patricia_remove(tree, node);
 }  }
   
inline patricia_node_t *make_and_lookup(patricia_tree_t *tree, char *string)patricia_node_t *make_and_lookup(patricia_tree_t *tree, char *string)
 {  {
         prefix_t *prefix;          prefix_t *prefix;
         patricia_node_t *node;          patricia_node_t *node;
Line 883  inline patricia_node_t *make_and_lookup(patricia_tree_ Line 883  inline patricia_node_t *make_and_lookup(patricia_tree_
         return node;          return node;
 }  }
   
inline patricia_node_t *try_search_exact(patricia_tree_t *tree, char *string)patricia_node_t *try_search_exact(patricia_tree_t *tree, char *string)
 {  {
         prefix_t *prefix;          prefix_t *prefix;
         patricia_node_t *node;          patricia_node_t *node;
Line 904  inline patricia_node_t *try_search_exact(patricia_tree Line 904  inline patricia_node_t *try_search_exact(patricia_tree
         return node;          return node;
 }  }
   
inline patricia_node_t *try_search_best(patricia_tree_t *tree, char *string)patricia_node_t *try_search_best(patricia_tree_t *tree, char *string)
 {  {
         prefix_t *prefix;          prefix_t *prefix;
         patricia_node_t *node;          patricia_node_t *node;

Removed from v.1.1  
changed lines
  Added in v.1.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>