summaryrefslogtreecommitdiff
path: root/pimd/pim_iface.c
diff options
context:
space:
mode:
Diffstat (limited to 'pimd/pim_iface.c')
-rw-r--r--pimd/pim_iface.c37
1 files changed, 29 insertions, 8 deletions
diff --git a/pimd/pim_iface.c b/pimd/pim_iface.c
index cf50371712..3e24e69639 100644
--- a/pimd/pim_iface.c
+++ b/pimd/pim_iface.c
@@ -85,6 +85,7 @@ static void pim_sec_addr_free(struct pim_secondary_addr *sec_addr)
XFREE(MTYPE_PIM_SEC_ADDR, sec_addr);
}
+__attribute__((unused))
static int pim_sec_addr_comp(const void *p1, const void *p2)
{
const struct pim_secondary_addr *sec1 = p1;
@@ -126,6 +127,7 @@ 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;
@@ -187,6 +189,7 @@ struct pim_interface *pim_if_new(struct interface *ifp, bool igmp, bool pim,
pim_sock_reset(ifp);
pim_if_add_vif(ifp, ispimreg, is_vxlan_term);
+#endif
pim_ifp->pim->mcast_if_count++;
return pim_ifp;
@@ -195,12 +198,15 @@ struct pim_interface *pim_if_new(struct interface *ifp, bool igmp, bool pim,
void pim_if_delete(struct interface *ifp)
{
struct pim_interface *pim_ifp;
- struct pim_ifchannel *ch;
assert(ifp);
pim_ifp = ifp->info;
assert(pim_ifp);
+ pim_ifp->pim->mcast_if_count--;
+#if PIM_IPV == 4
+ struct pim_ifchannel *ch;
+
if (pim_ifp->gm_join_list) {
pim_if_igmp_join_del_all(ifp);
}
@@ -211,7 +217,6 @@ void pim_if_delete(struct interface *ifp)
pim_neighbor_delete_all(ifp, "Interface removed from configuration");
pim_if_del_vif(ifp);
- pim_ifp->pim->mcast_if_count--;
pim_igmp_if_fini(pim_ifp);
@@ -228,6 +233,7 @@ void pim_if_delete(struct interface *ifp)
}
XFREE(MTYPE_PIM_INTERFACE, pim_ifp);
+#endif
ifp->info = NULL;
}
@@ -496,7 +502,6 @@ void pim_if_addr_add(struct connected *ifc)
{
struct pim_interface *pim_ifp;
struct interface *ifp;
- struct in_addr ifaddr;
bool vxlan_term;
assert(ifc);
@@ -517,13 +522,14 @@ void pim_if_addr_add(struct connected *ifc)
? "secondary"
: "primary");
- ifaddr = ifc->address->u.prefix4;
-
detect_address_change(ifp, 0, __func__);
// if (ifc->address->family != AF_INET)
// return;
+#if PIM_IPV == 4
+ struct in_addr ifaddr = ifc->address->u.prefix4;
+
if (PIM_IF_TEST_IGMP(pim_ifp->options)) {
struct gm_sock *igmp;
@@ -589,6 +595,7 @@ void pim_if_addr_add(struct connected *ifc)
true);
}
} /* igmp mtrace only */
+#endif
if (PIM_IF_TEST_PIM(pim_ifp->options)) {
@@ -640,6 +647,7 @@ void pim_if_addr_add(struct connected *ifc)
static void pim_if_addr_del_igmp(struct connected *ifc)
{
+#if PIM_IPV == 4
struct pim_interface *pim_ifp = ifc->ifp->info;
struct gm_sock *igmp;
struct in_addr ifaddr;
@@ -662,6 +670,7 @@ static void pim_if_addr_del_igmp(struct connected *ifc)
/* if addr found, del IGMP socket */
igmp_sock_delete(igmp);
}
+#endif
}
static void pim_if_addr_del_pim(struct connected *ifc)
@@ -1341,6 +1350,7 @@ int pim_if_igmp_join_del(struct interface *ifp, struct in_addr group_addr,
return 0;
}
+__attribute__((unused))
static void pim_if_igmp_join_del_all(struct interface *ifp)
{
struct pim_interface *pim_ifp;
@@ -1548,6 +1558,7 @@ 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);
/*
@@ -1559,8 +1570,10 @@ 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
/*
* If we are a vrf device that is up, open up the pim_socket for
* listening
@@ -1588,6 +1601,7 @@ static int pim_ifp_create(struct interface *ifp)
"%s: Cannot enable pim on %s. MAXVIFS(%d) reached. Deleting and readding the vxlan termimation device after unconfiguring pim from other interfaces may succeed.",
__func__, ifp->name, MAXVIFS);
}
+#endif
return 0;
}
@@ -1596,7 +1610,6 @@ static int pim_ifp_up(struct interface *ifp)
{
struct pim_interface *pim_ifp;
struct pim_instance *pim;
- uint32_t table_id;
if (PIM_DEBUG_ZEBRA) {
zlog_debug(
@@ -1617,6 +1630,9 @@ 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
@@ -1645,6 +1661,7 @@ static int pim_ifp_up(struct interface *ifp)
}
}
}
+#endif
return 0;
}
@@ -1658,6 +1675,7 @@ 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);
/*
@@ -1680,14 +1698,13 @@ static int pim_ifp_down(struct interface *ifp)
pim_if_del_vif(ifp);
pim_ifstat_reset(ifp);
}
+#endif
return 0;
}
static int pim_ifp_destroy(struct interface *ifp)
{
- struct pim_instance *pim;
-
if (PIM_DEBUG_ZEBRA) {
zlog_debug(
"%s: %s index %d vrf %s(%u) flags %ld metric %d mtu %d operative %d",
@@ -1696,12 +1713,16 @@ 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);
pim = ifp->vrf->info;
if (pim && pim->vxlan.term_if == ifp)
pim_vxlan_del_term_dev(pim);
+#endif
return 0;
}