diff options
Diffstat (limited to 'ripd/ripd.h')
| -rw-r--r-- | ripd/ripd.h | 39 |
1 files changed, 32 insertions, 7 deletions
diff --git a/ripd/ripd.h b/ripd/ripd.h index 176a3bfc37..08f7a2442d 100644 --- a/ripd/ripd.h +++ b/ripd/ripd.h @@ -10,6 +10,7 @@ #include "nexthop.h" #include "distribute.h" #include "memory.h" +#include "bfd.h" /* RIP version number. */ #define RIPv1 1 @@ -50,7 +51,6 @@ /* RIP port number. */ #define RIP_PORT_DEFAULT 520 -#define RIP_VTY_PORT 2602 /* Default configuration file name. */ #define RIPD_DEFAULT_CONFIG "ripd.conf" @@ -140,7 +140,7 @@ struct rip { struct route_table *distance_table; /* RIP ECMP flag */ - bool ecmp; + uint8_t ecmp; /* Are we in passive-interface default mode? */ bool passive_default; @@ -182,6 +182,9 @@ struct rip { /* RIP queries. */ long queries; } counters; + + /* Default BFD profile to use with BFD sessions. */ + char *default_bfd_profile; }; RB_HEAD(rip_instance_head, rip); RB_PROTOTYPE(rip_instance_head, rip, entry, rip_instance_compare) @@ -265,6 +268,9 @@ struct rip_interface { /* Parent routing instance. */ struct rip *rip; + /* Interface data from zebra. */ + struct interface *ifp; + /* RIP is enabled on this interface. */ int enable_network; int enable_interface; @@ -318,6 +324,12 @@ struct rip_interface { /* Passive interface. */ int passive; + + /* BFD information. */ + struct { + bool enabled; + char *profile; + } bfd; }; /* RIP peer information. */ @@ -325,6 +337,9 @@ struct rip_peer { /* Parent routing instance. */ struct rip *rip; + /* Back-pointer to RIP interface. */ + struct rip_interface *ri; + /* Peer address. */ struct in_addr addr; @@ -343,6 +358,9 @@ struct rip_peer { /* Timeout thread. */ struct event *t_timeout; + + /* BFD information */ + struct bfd_session_params *bfd_session; }; struct rip_distance { @@ -461,16 +479,20 @@ extern void rip_if_rmap_update_interface(struct interface *ifp); extern int rip_show_network_config(struct vty *vty, struct rip *rip); extern void rip_show_redistribute_config(struct vty *vty, struct rip *rip); -extern void rip_peer_update(struct rip *rip, struct sockaddr_in *from, - uint8_t version); -extern void rip_peer_bad_route(struct rip *rip, struct sockaddr_in *from); -extern void rip_peer_bad_packet(struct rip *rip, struct sockaddr_in *from); +extern void rip_peer_free(struct rip_peer *peer); +extern void rip_peer_update(struct rip *rip, struct rip_interface *ri, + struct sockaddr_in *from, uint8_t version); +extern void rip_peer_bad_route(struct rip *rip, struct rip_interface *ri, + struct sockaddr_in *from); +extern void rip_peer_bad_packet(struct rip *rip, struct rip_interface *ri, + struct sockaddr_in *from); extern void rip_peer_display(struct vty *vty, struct rip *rip); extern struct rip_peer *rip_peer_lookup(struct rip *rip, struct in_addr *addr); extern struct rip_peer *rip_peer_lookup_next(struct rip *rip, struct in_addr *addr); extern int rip_peer_list_cmp(struct rip_peer *p1, struct rip_peer *p2); extern void rip_peer_list_del(void *arg); +void rip_peer_delete_routes(const struct rip_peer *peer); extern void rip_info_free(struct rip_info *); extern struct rip *rip_info_get_instance(const struct rip_info *rinfo); @@ -503,7 +525,6 @@ extern int offset_list_cmp(struct rip_offset_list *o1, extern void rip_vrf_init(void); extern void rip_vrf_terminate(void); -extern void rip_cli_init(void); extern struct zebra_privs_t ripd_privs; extern struct rip_instance_head rip_instances; @@ -514,4 +535,8 @@ extern struct event_loop *master; DECLARE_HOOK(rip_ifaddr_add, (struct connected * ifc), (ifc)); DECLARE_HOOK(rip_ifaddr_del, (struct connected * ifc), (ifc)); +extern void rip_ecmp_change(struct rip *rip); + +extern uint32_t zebra_ecmp_count; + #endif /* _ZEBRA_RIP_H */ |
