diff options
Diffstat (limited to 'pimd/pim_static.c')
| -rw-r--r-- | pimd/pim_static.c | 50 | 
1 files changed, 10 insertions, 40 deletions
diff --git a/pimd/pim_static.c b/pimd/pim_static.c index 581b855f92..f5449d2824 100644 --- a/pimd/pim_static.c +++ b/pimd/pim_static.c @@ -97,10 +97,11 @@ int pim_static_add(struct pim_instance *pim, struct interface *iif,  	}  	for (ALL_LIST_ELEMENTS_RO(pim->static_routes, node, s_route)) { -		if (!pim_addr_cmp(s_route->group, group) -		    && !pim_addr_cmp(s_route->source, source)) { -			if (s_route->iif == iif_index -			    && s_route->oif_ttls[oif_index]) { +		if (!pim_addr_cmp(s_route->group, group) && +		    !pim_addr_cmp(s_route->source, source) && +		    (s_route->iif == iif_index)) { + +			if (s_route->oif_ttls[oif_index]) {  				zlog_warn(  					"%s %s: Unable to add static route: Route already exists (iif=%d,oif=%d,group=%pPAs,source=%pPAs)",  					__FILE__, __func__, iif_index, @@ -122,42 +123,11 @@ int pim_static_add(struct pim_instance *pim, struct interface *iif,  			/* Route exists and has the same input interface, but  			 * adding a new output interface */ -			if (s_route->iif == iif_index) { -				s_route->oif_ttls[oif_index] = 1; -				oil_if_set(&s_route->c_oil, oif_index, 1); -				s_route->c_oil.oif_creation[oif_index] = -					pim_time_monotonic_sec(); -				++s_route->c_oil.oil_ref_count; -			} else { -				/* input interface changed */ -				s_route->iif = iif_index; -				pim_static_mroute_iif_update( -					&s_route->c_oil, iif_index, __func__); - -#ifdef PIM_ENFORCE_LOOPFREE_MFC -				/* check to make sure the new input was not an -				 * old output */ -				if (s_route->oif_ttls[iif_index]) { -					s_route->oif_ttls[iif_index] = 0; -					s_route->c_oil.oif_creation[iif_index] = -						0; -					oil_if_set(&s_route->c_oil, iif_index, -						   0); -					--s_route->c_oil.oil_ref_count; -				} -#endif - -				/* now add the new output, if it is new */ -				if (!s_route->oif_ttls[oif_index]) { -					s_route->oif_ttls[oif_index] = 1; -					s_route->c_oil.oif_creation[oif_index] = -						pim_time_monotonic_sec(); -					oil_if_set(&s_route->c_oil, oif_index, -						   1); -					++s_route->c_oil.oil_ref_count; -				} -			} - +			s_route->oif_ttls[oif_index] = 1; +			oil_if_set(&s_route->c_oil, oif_index, 1); +			s_route->c_oil.oif_creation[oif_index] = +				pim_time_monotonic_sec(); +			++s_route->c_oil.oil_ref_count;  			break;  		}  	}  | 
