diff --git a/pimd/pim_iface.c b/pimd/pim_iface.c index 9a92f02d13..d1b4966ec9 100644 --- a/pimd/pim_iface.c +++ b/pimd/pim_iface.c @@ -127,7 +127,6 @@ struct pim_interface *pim_if_new(struct interface *ifp, bool igmp, bool pim, pim_ifp->pim = ifp->vrf->info; pim_ifp->mroute_vif_index = -1; -#if PIM_IPV == 4 pim_ifp->igmp_version = IGMP_DEFAULT_VERSION; pim_ifp->gm_default_robustness_variable = IGMP_DEFAULT_ROBUSTNESS_VARIABLE; @@ -153,10 +152,12 @@ struct pim_interface *pim_if_new(struct interface *ifp, bool igmp, bool pim, if (pim) PIM_IF_DO_PIM(pim_ifp->options); +#if PIM_IPV == 4 if (igmp) PIM_IF_DO_IGMP(pim_ifp->options); PIM_IF_DO_IGMP_LISTEN_ALLROUTERS(pim_ifp->options); +#endif pim_ifp->gm_join_list = NULL; pim_ifp->pim_neighbor_list = NULL; @@ -186,10 +187,11 @@ struct pim_interface *pim_if_new(struct interface *ifp, bool igmp, bool pim, ifp->info = pim_ifp; +#if PIM_IPV == 4 pim_sock_reset(ifp); +#endif pim_if_add_vif(ifp, ispimreg, is_vxlan_term); -#endif pim_ifp->pim->mcast_if_count++; return pim_ifp; @@ -208,9 +210,12 @@ void pim_if_delete(struct interface *ifp) if (pim_ifp->gm_join_list) { pim_if_igmp_join_del_all(ifp); } +#endif pim_ifchannel_delete_all(ifp); +#if PIM_IPV == 4 igmp_sock_delete_all(ifp); +#endif pim_neighbor_delete_all(ifp, "Interface removed from configuration"); @@ -224,7 +229,6 @@ void pim_if_delete(struct interface *ifp) XFREE(MTYPE_PIM_INTERFACE, pim_ifp->boundary_oil_plist); XFREE(MTYPE_PIM_INTERFACE, pim_ifp); -#endif ifp->info = NULL; } @@ -1618,7 +1622,6 @@ static int pim_ifp_create(struct interface *ifp) */ if (pim_ifp) pim_ifp->pim = pim; -#if PIM_IPV == 4 pim_if_addr_add_all(ifp); /* @@ -1630,7 +1633,6 @@ static int pim_ifp_create(struct interface *ifp) * this is a no-op if it's already been done. */ pim_if_create_pimreg(pim); -#endif } #if PIM_IPV == 4 @@ -1668,6 +1670,7 @@ static int pim_ifp_create(struct interface *ifp) static int pim_ifp_up(struct interface *ifp) { + uint32_t table_id; struct pim_interface *pim_ifp; struct pim_instance *pim; @@ -1690,9 +1693,6 @@ static int pim_ifp_up(struct interface *ifp) if (pim_ifp) pim_ifp->pim = pim; -#if PIM_IPV == 4 - uint32_t table_id; - /* pim_if_addr_add_all() suffices for bringing up both IGMP and PIM @@ -1721,7 +1721,6 @@ static int pim_ifp_up(struct interface *ifp) } } } -#endif return 0; } @@ -1735,7 +1734,6 @@ static int pim_ifp_down(struct interface *ifp) ifp->mtu, if_is_operative(ifp)); } -#if PIM_IPV == 4 if (!if_is_operative(ifp)) { pim_ifchannel_delete_all(ifp); /* @@ -1744,6 +1742,7 @@ static int pim_ifp_down(struct interface *ifp) */ pim_if_addr_del_all(ifp); +#if PIM_IPV == 4 /* pim_sock_delete() closes the socket, stops read and timer threads, @@ -1752,13 +1751,15 @@ static int pim_ifp_down(struct interface *ifp) if (ifp->info) { pim_sock_delete(ifp, "link down"); } +#endif } if (ifp->info) { pim_if_del_vif(ifp); +#if PIM_IPV == 4 pim_ifstat_reset(ifp); - } #endif + } return 0; } @@ -1773,12 +1774,12 @@ static int pim_ifp_destroy(struct interface *ifp) ifp->mtu, if_is_operative(ifp)); } -#if PIM_IPV == 4 - struct pim_instance *pim; - if (!if_is_operative(ifp)) pim_if_addr_del_all(ifp); +#if PIM_IPV == 4 + struct pim_instance *pim; + pim = ifp->vrf->info; if (pim && pim->vxlan.term_if == ifp) pim_vxlan_del_term_dev(pim); diff --git a/pimd/pim_igmp.h b/pimd/pim_igmp.h index d1490fddf8..4d7229dcce 100644 --- a/pimd/pim_igmp.h +++ b/pimd/pim_igmp.h @@ -128,6 +128,15 @@ void pim_igmp_other_querier_timer_off(struct gm_sock *igmp); int igmp_validate_checksum(char *igmp_msg, int igmp_msg_len); #else /* PIM_IPV != 4 */ +static inline void pim_igmp_if_init(struct pim_interface *pim_ifp, + struct interface *ifp) +{ +} + +static inline void pim_igmp_if_fini(struct pim_interface *pim_ifp) +{ +} + static inline void pim_igmp_general_query_on(struct gm_sock *igmp) { } diff --git a/pimd/pim_zebra.c b/pimd/pim_zebra.c index 1d5a3dd47f..7f463715a5 100644 --- a/pimd/pim_zebra.c +++ b/pimd/pim_zebra.c @@ -55,7 +55,6 @@ struct zclient *zclient; /* Router-id update message from zebra. */ -__attribute__((unused)) static int pim_router_id_update_zebra(ZAPI_CALLBACK_ARGS) { struct prefix router_id; @@ -65,7 +64,6 @@ static int pim_router_id_update_zebra(ZAPI_CALLBACK_ARGS) return 0; } -__attribute__((unused)) static int pim_zebra_interface_vrf_update(ZAPI_CALLBACK_ARGS) { struct interface *ifp; @@ -158,6 +156,10 @@ static int pim_zebra_if_address_add(ZAPI_CALLBACK_ARGS) SET_FLAG(c->flags, ZEBRA_IFA_SECONDARY); } } +#else /* PIM_IPV != 4 */ + if (p->family != PIM_AF) + return 0; +#endif pim_if_addr_add(c); if (pim_ifp) { @@ -178,12 +180,6 @@ static int pim_zebra_if_address_add(ZAPI_CALLBACK_ARGS) pim_if_addr_add_all(ifp); } } -#else /* PIM_IPV != 4 */ - (void)pim_ifp; - - if (p->family == PIM_AF) - pim_if_addr_add(c); -#endif return 0; } @@ -222,8 +218,7 @@ static int pim_zebra_if_address_del(ZAPI_CALLBACK_ARGS) #endif } -#if PIM_IPV == 4 - if (p->family == AF_INET) { + if (p->family == PIM_AF) { struct pim_instance *pim; pim = vrf->info; @@ -231,10 +226,6 @@ static int pim_zebra_if_address_del(ZAPI_CALLBACK_ARGS) pim_rp_setup(pim); pim_i_am_rp_re_evaluate(pim); } -#else - if (p->family == PIM_AF) - pim_if_addr_del(c, 0); -#endif connected_free(&c); return 0; @@ -461,10 +452,10 @@ static zclient_handler *const pim_handlers[] = { [ZEBRA_INTERFACE_ADDRESS_DELETE] = pim_zebra_if_address_del, [ZEBRA_NEXTHOP_UPDATE] = pim_parse_nexthop_update, -#if PIM_IPV == 4 [ZEBRA_ROUTER_ID_UPDATE] = pim_router_id_update_zebra, [ZEBRA_INTERFACE_VRF_UPDATE] = pim_zebra_interface_vrf_update, +#if PIM_IPV == 4 [ZEBRA_VXLAN_SG_ADD] = pim_zebra_vxlan_sg_proc, [ZEBRA_VXLAN_SG_DEL] = pim_zebra_vxlan_sg_proc,