diff options
Diffstat (limited to 'pimd/pim_ifchannel.h')
-rw-r--r-- | pimd/pim_ifchannel.h | 119 |
1 files changed, 57 insertions, 62 deletions
diff --git a/pimd/pim_ifchannel.h b/pimd/pim_ifchannel.h index 455493a5b..2260fd451 100644 --- a/pimd/pim_ifchannel.h +++ b/pimd/pim_ifchannel.h @@ -28,31 +28,29 @@ struct pim_ifchannel; #include "pim_upstream.h" -enum pim_ifmembership { - PIM_IFMEMBERSHIP_NOINFO, - PIM_IFMEMBERSHIP_INCLUDE -}; +enum pim_ifmembership { PIM_IFMEMBERSHIP_NOINFO, PIM_IFMEMBERSHIP_INCLUDE }; enum pim_ifjoin_state { - PIM_IFJOIN_NOINFO, - PIM_IFJOIN_JOIN, - PIM_IFJOIN_PRUNE, - PIM_IFJOIN_PRUNE_PENDING, - PIM_IFJOIN_PRUNE_TMP, - PIM_IFJOIN_PRUNE_PENDING_TMP, + PIM_IFJOIN_NOINFO, + PIM_IFJOIN_JOIN, + PIM_IFJOIN_PRUNE, + PIM_IFJOIN_PRUNE_PENDING, + PIM_IFJOIN_PRUNE_TMP, + PIM_IFJOIN_PRUNE_PENDING_TMP, }; enum pim_ifassert_state { - PIM_IFASSERT_NOINFO, - PIM_IFASSERT_I_AM_WINNER, - PIM_IFASSERT_I_AM_LOSER + PIM_IFASSERT_NOINFO, + PIM_IFASSERT_I_AM_WINNER, + PIM_IFASSERT_I_AM_LOSER }; struct pim_assert_metric { - uint32_t rpt_bit_flag; - uint32_t metric_preference; - uint32_t route_metric; - struct in_addr ip_address; /* neighbor router that sourced the Assert message */ + uint32_t rpt_bit_flag; + uint32_t metric_preference; + uint32_t route_metric; + struct in_addr ip_address; /* neighbor router that sourced the Assert + message */ }; /* @@ -82,63 +80,58 @@ struct pim_assert_metric { Per-interface (S,G) state */ struct pim_ifchannel { - struct pim_ifchannel *parent; - struct list *sources; - struct prefix_sg sg; - char sg_str[PIM_SG_LEN]; - struct interface *interface; /* backpointer to interface */ - uint32_t flags; - - /* IGMPv3 determined interface has local members for (S,G) ? */ - enum pim_ifmembership local_ifmembership; - - /* Per-interface (S,G) Join/Prune State (Section 4.1.4 of RFC4601) */ - enum pim_ifjoin_state ifjoin_state; - struct thread *t_ifjoin_expiry_timer; - struct thread *t_ifjoin_prune_pending_timer; - int64_t ifjoin_creation; /* Record uptime of ifjoin state */ - - /* Per-interface (S,G) Assert State (Section 4.6.1 of RFC4601) */ - enum pim_ifassert_state ifassert_state; - struct thread *t_ifassert_timer; - struct in_addr ifassert_winner; - struct pim_assert_metric ifassert_winner_metric; - int64_t ifassert_creation; /* Record uptime of ifassert state */ - struct pim_assert_metric ifassert_my_metric; - - /* Upstream (S,G) state */ - struct pim_upstream *upstream; + struct pim_ifchannel *parent; + struct list *sources; + struct prefix_sg sg; + char sg_str[PIM_SG_LEN]; + struct interface *interface; /* backpointer to interface */ + uint32_t flags; + + /* IGMPv3 determined interface has local members for (S,G) ? */ + enum pim_ifmembership local_ifmembership; + + /* Per-interface (S,G) Join/Prune State (Section 4.1.4 of RFC4601) */ + enum pim_ifjoin_state ifjoin_state; + struct thread *t_ifjoin_expiry_timer; + struct thread *t_ifjoin_prune_pending_timer; + int64_t ifjoin_creation; /* Record uptime of ifjoin state */ + + /* Per-interface (S,G) Assert State (Section 4.6.1 of RFC4601) */ + enum pim_ifassert_state ifassert_state; + struct thread *t_ifassert_timer; + struct in_addr ifassert_winner; + struct pim_assert_metric ifassert_winner_metric; + int64_t ifassert_creation; /* Record uptime of ifassert state */ + struct pim_assert_metric ifassert_my_metric; + + /* Upstream (S,G) state */ + struct pim_upstream *upstream; }; void pim_ifchannel_free(struct pim_ifchannel *ch); void pim_ifchannel_delete(struct pim_ifchannel *ch); -void pim_ifchannel_delete_all (struct interface *ifp); +void pim_ifchannel_delete_all(struct interface *ifp); void pim_ifchannel_membership_clear(struct interface *ifp); void pim_ifchannel_delete_on_noinfo(struct interface *ifp); struct pim_ifchannel *pim_ifchannel_find(struct interface *ifp, struct prefix_sg *sg); struct pim_ifchannel *pim_ifchannel_add(struct interface *ifp, struct prefix_sg *sg, int flags); -void pim_ifchannel_join_add(struct interface *ifp, - struct in_addr neigh_addr, - struct in_addr upstream, - struct prefix_sg *sg, - uint8_t source_flags, - uint16_t holdtime); -void pim_ifchannel_prune(struct interface *ifp, - struct in_addr upstream, - struct prefix_sg *sg, - uint8_t source_flags, +void pim_ifchannel_join_add(struct interface *ifp, struct in_addr neigh_addr, + struct in_addr upstream, struct prefix_sg *sg, + uint8_t source_flags, uint16_t holdtime); +void pim_ifchannel_prune(struct interface *ifp, struct in_addr upstream, + struct prefix_sg *sg, uint8_t source_flags, uint16_t holdtime); int pim_ifchannel_local_membership_add(struct interface *ifp, struct prefix_sg *sg); void pim_ifchannel_local_membership_del(struct interface *ifp, struct prefix_sg *sg); -void pim_ifchannel_ifjoin_switch(const char *caller, - struct pim_ifchannel *ch, +void pim_ifchannel_ifjoin_switch(const char *caller, struct pim_ifchannel *ch, enum pim_ifjoin_state new_state); -const char *pim_ifchannel_ifjoin_name(enum pim_ifjoin_state ifjoin_state, int flags); +const char *pim_ifchannel_ifjoin_name(enum pim_ifjoin_state ifjoin_state, + int flags); const char *pim_ifchannel_ifassert_name(enum pim_ifassert_state ifassert_state); int pim_ifchannel_isin_oiflist(struct pim_ifchannel *ch); @@ -149,11 +142,13 @@ void pim_ifchannel_update_could_assert(struct pim_ifchannel *ch); void pim_ifchannel_update_my_assert_metric(struct pim_ifchannel *ch); void pim_ifchannel_update_assert_tracking_desired(struct pim_ifchannel *ch); -void pim_ifchannel_scan_forward_start (struct interface *new_ifp); -void pim_ifchannel_set_star_g_join_state (struct pim_ifchannel *ch, int eom, uint8_t source_flags, uint8_t join, uint8_t starg_alone); +void pim_ifchannel_scan_forward_start(struct interface *new_ifp); +void pim_ifchannel_set_star_g_join_state(struct pim_ifchannel *ch, int eom, + uint8_t source_flags, uint8_t join, + uint8_t starg_alone); -int pim_ifchannel_compare (struct pim_ifchannel *ch1, struct pim_ifchannel *ch2); +int pim_ifchannel_compare(struct pim_ifchannel *ch1, struct pim_ifchannel *ch2); -unsigned int pim_ifchannel_hash_key (void *arg); -int pim_ifchannel_equal (const void *arg1, const void *arg2); +unsigned int pim_ifchannel_hash_key(void *arg); +int pim_ifchannel_equal(const void *arg1, const void *arg2); #endif /* PIM_IFCHANNEL_H */ |