]> git.proxmox.com Git - mirror_frr.git/blobdiff - pimd/pim_upstream.h
lib: enforce vrf_name_to_id by returning default_vrf when name is null
[mirror_frr.git] / pimd / pim_upstream.h
index b6a9729f0f5680d548fc57a9ab187811be9cdeb6..a347ab991c98717595259b85e269c062a4f8cc7c 100644 (file)
@@ -119,7 +119,7 @@ struct pim_upstream {
         */
        struct thread *t_rs_timer;
 #define PIM_REGISTER_SUPPRESSION_PERIOD (60)
-#define PIM_REGISTER_PROBE_PERIOD       (15)
+#define PIM_REGISTER_PROBE_PERIOD        (5)
 
        /*
         * KAT(S,G)
@@ -137,26 +137,28 @@ struct pim_upstream {
        int64_t state_transition; /* Record current state uptime */
 };
 
-struct list *pim_upstream_list;
-struct hash *pim_upstream_hash;
-
-void pim_upstream_free(struct pim_upstream *up);
-struct pim_upstream *pim_upstream_find(struct prefix_sg *sg);
+struct pim_upstream *pim_upstream_find(struct pim_instance *pim,
+                                      struct prefix_sg *sg);
 struct pim_upstream *pim_upstream_find_or_add(struct prefix_sg *sg,
                                              struct interface *ifp, int flags,
                                              const char *name);
-struct pim_upstream *pim_upstream_add(struct prefix_sg *sg,
+struct pim_upstream *pim_upstream_add(struct pim_instance *pim,
+                                     struct prefix_sg *sg,
                                      struct interface *ifp, int flags,
-                                     const char *name);
+                                     const char *name,
+                                     struct pim_ifchannel *ch);
 void pim_upstream_ref(struct pim_upstream *up, int flags, const char *name);
-struct pim_upstream *pim_upstream_del(struct pim_upstream *up,
+struct pim_upstream *pim_upstream_del(struct pim_instance *pim,
+                                     struct pim_upstream *up,
                                      const char *name);
 
-int pim_upstream_evaluate_join_desired(struct pim_upstream *up);
+int pim_upstream_evaluate_join_desired(struct pim_instance *pim,
+                                      struct pim_upstream *up);
 int pim_upstream_evaluate_join_desired_interface(struct pim_upstream *up,
                                                 struct pim_ifchannel *ch,
                                                 struct pim_ifchannel *starch);
-void pim_upstream_update_join_desired(struct pim_upstream *up);
+void pim_upstream_update_join_desired(struct pim_instance *pim,
+                                     struct pim_upstream *up);
 
 void pim_upstream_join_suppress(struct pim_upstream *up,
                                struct in_addr rpf_addr, int holdtime);
@@ -166,7 +168,8 @@ void pim_upstream_join_timer_decrease_to_t_override(const char *debug_label,
 
 void pim_upstream_join_timer_restart(struct pim_upstream *up,
                                     struct pim_rpf *old);
-void pim_upstream_rpf_genid_changed(struct in_addr neigh_addr);
+void pim_upstream_rpf_genid_changed(struct pim_instance *pim,
+                                   struct in_addr neigh_addr);
 void pim_upstream_rpf_interface_changed(struct pim_upstream *up,
                                        struct interface *old_rpf_ifp);
 
@@ -176,8 +179,9 @@ void pim_upstream_update_my_assert_metric(struct pim_upstream *up);
 void pim_upstream_keep_alive_timer_start(struct pim_upstream *up,
                                         uint32_t time);
 
-int pim_upstream_switch_to_spt_desired(struct prefix_sg *sg);
-#define SwitchToSptDesired(sg) pim_upstream_switch_to_spt_desired (sg)
+int pim_upstream_switch_to_spt_desired(struct pim_instance *pim,
+                                      struct prefix_sg *sg);
+#define SwitchToSptDesired(pim, sg) pim_upstream_switch_to_spt_desired (pim, sg)
 int pim_upstream_is_sg_rpt(struct pim_upstream *up);
 
 void pim_upstream_set_sptbit(struct pim_upstream *up,
@@ -188,29 +192,36 @@ void pim_upstream_start_register_stop_timer(struct pim_upstream *up,
 
 void pim_upstream_send_join(struct pim_upstream *up);
 
-void pim_upstream_switch(struct pim_upstream *up,
+void pim_upstream_switch(struct pim_instance *pim, struct pim_upstream *up,
                         enum pim_upstream_state new_state);
 
 const char *pim_upstream_state2str(enum pim_upstream_state join_state);
 #define PIM_REG_STATE_STR_LEN 12
 const char *pim_reg_state2str(enum pim_reg_state state, char *state_str);
 
-int pim_upstream_inherited_olist_decide(struct pim_upstream *up);
-int pim_upstream_inherited_olist(struct pim_upstream *up);
+int pim_upstream_inherited_olist_decide(struct pim_instance *pim,
+                                       struct pim_upstream *up);
+int pim_upstream_inherited_olist(struct pim_instance *pim,
+                                struct pim_upstream *up);
 int pim_upstream_empty_inherited_olist(struct pim_upstream *up);
 
-void pim_upstream_find_new_rpf(void);
+void pim_upstream_find_new_rpf(struct pim_instance *pim);
 void pim_upstream_msdp_reg_timer_start(struct pim_upstream *up);
 
-void pim_upstream_init(void);
-void pim_upstream_terminate(void);
+void pim_upstream_init(struct pim_instance *pim);
+void pim_upstream_terminate(struct pim_instance *pim);
 
 void join_timer_start(struct pim_upstream *up);
 int pim_upstream_compare(void *arg1, void *arg2);
-void pim_upstream_register_reevaluate(void);
+void pim_upstream_register_reevaluate(struct pim_instance *pim);
+
+void pim_upstream_add_lhr_star_pimreg(struct pim_instance *pim);
+void pim_upstream_remove_lhr_star_pimreg(struct pim_instance *pim,
+                                        const char *nlist);
 
-void pim_upstream_add_lhr_star_pimreg(void);
-void pim_upstream_remove_lhr_star_pimreg(const char *nlist);
+void pim_upstream_spt_prefix_list_update(struct pim_instance *pim,
+                                        struct prefix_list *pl);
 
-void pim_upstream_spt_prefix_list_update(struct prefix_list *pl);
+unsigned int pim_upstream_hash_key(void *arg);
+bool pim_upstream_equal(const void *arg1, const void *arg2);
 #endif /* PIM_UPSTREAM_H */