]> git.proxmox.com Git - mirror_frr.git/blobdiff - isisd/isis_route.h
zebra: Fix label manager memory leak (#5680)
[mirror_frr.git] / isisd / isis_route.h
index 6c7d9aea950202140092137fc657618ca6b10d77..2326bb8228c05569573c615de7d460a73cdf9d90 100644 (file)
 #ifndef _ZEBRA_ISIS_ROUTE_H
 #define _ZEBRA_ISIS_ROUTE_H
 
-struct isis_nexthop6 {
-       ifindex_t ifindex;
-       struct in6_addr ip6;
-       struct in6_addr router_address6;
-       unsigned int lock;
-};
+#include "lib/nexthop.h"
 
 struct isis_nexthop {
        ifindex_t ifindex;
-       struct in_addr ip;
-       struct in_addr router_address;
+       int family;
+       union g_addr ip;
        unsigned int lock;
 };
 
@@ -43,21 +38,37 @@ struct isis_route_info {
 #define ISIS_ROUTE_FLAG_ACTIVE       0x01  /* active route for the prefix */
 #define ISIS_ROUTE_FLAG_ZEBRA_SYNCED 0x02  /* set when route synced to zebra */
 #define ISIS_ROUTE_FLAG_ZEBRA_RESYNC 0x04  /* set when route needs to sync */
-       u_char flag;
-       u_int32_t cost;
-       u_int32_t depth;
+       uint8_t flag;
+       uint32_t cost;
+       uint32_t depth;
        struct list *nexthops;
-       struct list *nexthops6;
 };
 
-struct isis_route_info *isis_route_create(struct prefix *prefix, u_int32_t cost,
-                                         u_int32_t depth,
+DECLARE_HOOK(isis_route_update_hook,
+            (struct isis_area * area, struct prefix *prefix,
+             struct isis_route_info *route_info),
+            (area, prefix, route_info))
+
+struct isis_route_info *isis_route_create(struct prefix *prefix,
+                                         struct prefix_ipv6 *src_p,
+                                         uint32_t cost,
+                                         uint32_t depth,
                                          struct list *adjacencies,
-                                         struct isis_area *area, int level);
+                                         struct isis_area *area,
+                                         struct route_table *table);
+
+/* Walk the given table and install new routes to zebra and remove old ones.
+ * route status is tracked using ISIS_ROUTE_FLAG_ACTIVE */
+void isis_route_verify_table(struct isis_area *area,
+                            struct route_table *table);
+
+/* Same as isis_route_verify_table, but merge L1 and L2 routes before */
+void isis_route_verify_merge(struct isis_area *area,
+                            struct route_table *level1_table,
+                            struct route_table *level2_table);
 
-void isis_route_validate(struct isis_area *area);
+/* Unset ISIS_ROUTE_FLAG_ACTIVE on all routes. Used before running spf. */
 void isis_route_invalidate_table(struct isis_area *area,
                                 struct route_table *table);
-void isis_route_invalidate(struct isis_area *area);
 
 #endif /* _ZEBRA_ISIS_ROUTE_H */