*/
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)
int64_t state_transition; /* Record current state uptime */
};
-void pim_upstream_free(struct pim_upstream *up);
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_instance *pim,
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,
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);
void pim_upstream_spt_prefix_list_update(struct pim_instance *pim,
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 */