X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=pimd%2Fpim_rp.h;h=dd7cd5d75e35504a7c57851355042be7f5d07aab;hb=c0b6ef23f74ef05f6a7550b78590e31605e7f90f;hp=e0f8e16be0d37e1e549b4eeb1d19c8ea8936f714;hpb=febe440bc46fe0dfe38ba329fbfef318eef89710;p=mirror_frr.git diff --git a/pimd/pim_rp.h b/pimd/pim_rp.h index e0f8e16be..dd7cd5d75 100644 --- a/pimd/pim_rp.h +++ b/pimd/pim_rp.h @@ -27,9 +27,16 @@ #include "pim_iface.h" #include "pim_rpf.h" +enum rp_source { + RP_SRC_NONE = 0, + RP_SRC_STATIC, + RP_SRC_BSR +}; + struct rp_info { struct prefix group; struct pim_rpf rp; + enum rp_source rp_src; int i_am_rp; char *plist; }; @@ -39,10 +46,16 @@ void pim_rp_free(struct pim_instance *pim); void pim_rp_list_hash_clean(void *data); -int pim_rp_new(struct pim_instance *pim, const char *rp, const char *group, - const char *plist); -int pim_rp_del(struct pim_instance *pim, const char *rp, const char *group, - const char *plist); +int pim_rp_new(struct pim_instance *pim, struct in_addr rp_addr, + struct prefix group, const char *plist, + enum rp_source rp_src_flag); +int pim_rp_del_config(struct pim_instance *pim, const char *rp, + const char *group, const char *plist); +int pim_rp_del(struct pim_instance *pim, struct in_addr rp_addr, + struct prefix group, const char *plist, + enum rp_source rp_src_flag); +int pim_rp_change(struct pim_instance *pim, struct in_addr new_rp_addr, + struct prefix group, enum rp_source rp_src_flag); void pim_rp_prefix_list_update(struct pim_instance *pim, struct prefix_list *plist); @@ -68,9 +81,10 @@ struct pim_rpf *pim_rp_g(struct pim_instance *pim, struct in_addr group); void pim_rp_show_information(struct pim_instance *pim, struct vty *vty, bool uj); -void pim_resolve_rp_nh(struct pim_instance *pim); +void pim_resolve_rp_nh(struct pim_instance *pim, struct pim_neighbor *nbr); int pim_rp_list_cmp(void *v1, void *v2); struct rp_info *pim_rp_find_match_group(struct pim_instance *pim, const struct prefix *group); void pim_upstream_update(struct pim_instance *pim, struct pim_upstream *up); +void pim_rp_refresh_group_to_rp_mapping(struct pim_instance *pim); #endif