summaryrefslogtreecommitdiff
path: root/pimd/pim_zebra.c
diff options
context:
space:
mode:
Diffstat (limited to 'pimd/pim_zebra.c')
-rw-r--r--pimd/pim_zebra.c31
1 files changed, 3 insertions, 28 deletions
diff --git a/pimd/pim_zebra.c b/pimd/pim_zebra.c
index 675e81f5a1..3b93dd2b3c 100644
--- a/pimd/pim_zebra.c
+++ b/pimd/pim_zebra.c
@@ -601,7 +601,6 @@ void pim_scan_individual_oil(struct channel_oil *c_oil, int in_vif_index)
{
struct in_addr vif_source;
int input_iface_vif_index;
- int old_vif_index;
pim_rp_set_upstream_addr(c_oil->pim, &vif_source,
c_oil->oil.mfcc_origin,
@@ -701,33 +700,9 @@ void pim_scan_individual_oil(struct channel_oil *c_oil, int in_vif_index)
}
/* update iif vif_index */
- old_vif_index = c_oil->oil.mfcc_parent;
- c_oil->oil.mfcc_parent = input_iface_vif_index;
-
- /* update kernel multicast forwarding cache (MFC) */
- if (pim_mroute_add(c_oil, __PRETTY_FUNCTION__)) {
- if (PIM_DEBUG_MROUTE) {
- /* just log warning */
- struct interface *old_iif = pim_if_find_by_vif_index(
- c_oil->pim, old_vif_index);
- struct interface *new_iif = pim_if_find_by_vif_index(
- c_oil->pim, input_iface_vif_index);
- char source_str[INET_ADDRSTRLEN];
- char group_str[INET_ADDRSTRLEN];
- pim_inet4_dump("<source?>", c_oil->oil.mfcc_origin,
- source_str, sizeof(source_str));
- pim_inet4_dump("<group?>", c_oil->oil.mfcc_mcastgrp,
- group_str, sizeof(group_str));
- zlog_debug(
- "%s %s: (S,G)=(%s,%s) failure updating input interface from %s vif_index=%d to %s vif_index=%d",
- __FILE__, __PRETTY_FUNCTION__, source_str,
- group_str,
- old_iif ? old_iif->name : "<old_iif?>",
- c_oil->oil.mfcc_parent,
- new_iif ? new_iif->name : "<new_iif?>",
- input_iface_vif_index);
- }
- }
+ pim_channel_oil_change_iif(c_oil->pim, c_oil, input_iface_vif_index,
+ __PRETTY_FUNCTION__);
+ pim_mroute_add(c_oil, __PRETTY_FUNCTION__);
}
void pim_scan_oil(struct pim_instance *pim)