]> git.proxmox.com Git - mirror_frr.git/blobdiff - lib/table.h
Merge pull request #254 from donaldsharp/shutdown3
[mirror_frr.git] / lib / table.h
index e6cdcfef1ebdd2a9aaf54c257b7056460ebcebbb..1691a8e20ada6e6759203a21b927ee637b5abc98 100644 (file)
@@ -25,6 +25,7 @@
 
 #include "memory.h"
 DECLARE_MTYPE(ROUTE_TABLE)
+DECLARE_MTYPE(ROUTE_NODE)
 
 /*
  * Forward declarations.
@@ -61,6 +62,7 @@ struct route_table
    * Delegate that performs certain functions for this table.
    */
   route_table_delegate_t *delegate;
+  void (*cleanup)(struct route_table *, struct route_node *);
   
   unsigned long count;
   
@@ -157,18 +159,23 @@ extern struct route_node *route_node_get (struct route_table *const,
                                           const struct prefix *);
 extern struct route_node *route_node_lookup (const struct route_table *,
                                              const struct prefix *);
+extern struct route_node *route_node_lookup_maynull (const struct route_table *,
+                                             const struct prefix *);
 extern struct route_node *route_lock_node (struct route_node *node);
 extern struct route_node *route_node_match (const struct route_table *,
                                             const struct prefix *);
 extern struct route_node *route_node_match_ipv4 (const struct route_table *,
                                                 const struct in_addr *);
-#ifdef HAVE_IPV6
 extern struct route_node *route_node_match_ipv6 (const struct route_table *,
                                                 const struct in6_addr *);
-#endif /* HAVE_IPV6 */
 
 extern unsigned long route_table_count (const struct route_table *);
 
+extern struct route_node *route_node_create (route_table_delegate_t *,
+                                            struct route_table *);
+extern void route_node_destroy (route_table_delegate_t *,
+                               struct route_table *, struct route_node *);
+
 extern struct route_node *
 route_table_get_next (const struct route_table *table, struct prefix *p);
 extern int