]> git.proxmox.com Git - mirror_frr.git/blobdiff - zebra/zebra_rnh.h
isisd: implement the 'lsp-too-large' notification
[mirror_frr.git] / zebra / zebra_rnh.h
index bd121ec83c6ef1d0f56541c1cc34cea451cda610..33302f0ee27dc5d083fc4123761edbbf63bbdab9 100644 (file)
@@ -27,7 +27,7 @@
 
 /* Nexthop structure. */
 struct rnh {
-       u_char flags;
+       uint8_t flags;
 
 #define ZEBRA_NHT_CONNECTED    0x1
 #define ZEBRA_NHT_DELETED       0x2
@@ -39,14 +39,16 @@ struct rnh {
        struct route_entry *state;
        struct prefix resolved_route;
        struct list *client_list;
-       struct list *
-               zebra_static_route_list; /* static routes dependent on this NH
-                                           */
-       struct list
-               *zebra_pseudowire_list; /* pseudowires dependent on this NH */
+
+       /* pseudowires dependent on this nh */
+       struct list *zebra_pseudowire_list;
+
        struct route_node *node;
-       int filtered[ZEBRA_ROUTE_MAX]; /* if this has been filtered for client
-                                         */
+
+       /*
+        * if this has been filtered for the client
+        */
+       int filtered[ZEBRA_ROUTE_MAX];
 };
 
 typedef enum { RNH_NEXTHOP_TYPE, RNH_IMPORT_CHECK_TYPE } rnh_type_t;
@@ -54,6 +56,8 @@ typedef enum { RNH_NEXTHOP_TYPE, RNH_IMPORT_CHECK_TYPE } rnh_type_t;
 extern int zebra_rnh_ip_default_route;
 extern int zebra_rnh_ipv6_default_route;
 
+extern void zebra_rnh_init(void);
+
 static inline int rnh_resolve_via_default(int family)
 {
        if (((family == AF_INET) && zebra_rnh_ip_default_route)
@@ -64,29 +68,20 @@ static inline int rnh_resolve_via_default(int family)
 }
 
 extern struct rnh *zebra_add_rnh(struct prefix *p, vrf_id_t vrfid,
-                                rnh_type_t type);
+                                rnh_type_t type, bool *exists);
 extern struct rnh *zebra_lookup_rnh(struct prefix *p, vrf_id_t vrfid,
                                    rnh_type_t type);
 extern void zebra_free_rnh(struct rnh *rnh);
 extern void zebra_delete_rnh(struct rnh *rnh, rnh_type_t type);
 extern void zebra_add_rnh_client(struct rnh *rnh, struct zserv *client,
                                 rnh_type_t type, vrf_id_t vrfid);
-extern void zebra_register_rnh_static_nh(vrf_id_t, struct prefix *,
-                                        struct route_node *);
-extern void zebra_deregister_rnh_static_nexthops(vrf_id_t,
-                                                struct nexthop *nexthop,
-                                                struct route_node *rn);
-extern void zebra_deregister_rnh_static_nh(vrf_id_t, struct prefix *,
-                                          struct route_node *);
 extern void zebra_register_rnh_pseudowire(vrf_id_t, struct zebra_pw *);
 extern void zebra_deregister_rnh_pseudowire(vrf_id_t, struct zebra_pw *);
 extern void zebra_remove_rnh_client(struct rnh *rnh, struct zserv *client,
                                    rnh_type_t type);
-extern void zebra_evaluate_rnh(vrf_id_t vrfid, int family, int force,
+extern void zebra_evaluate_rnh(struct zebra_vrf *zvrf, int family, int force,
                               rnh_type_t type, struct prefix *p);
 extern void zebra_print_rnh_table(vrf_id_t vrfid, int family, struct vty *vty,
                                  rnh_type_t);
 extern char *rnh_str(struct rnh *rnh, char *buf, int size);
-extern int zebra_cleanup_rnh_client(vrf_id_t vrf, int family,
-                                   struct zserv *client, rnh_type_t type);
 #endif /*_ZEBRA_RNH_H */