diff options
| author | Donald Sharp <sharpd@nvidia.com> | 2020-12-10 10:24:47 -0500 | 
|---|---|---|
| committer | Donald Sharp <sharpd@nvidia.com> | 2020-12-11 20:45:43 -0500 | 
| commit | 3ceae22b7f540eed5768d10820c32684bb0123f2 (patch) | |
| tree | a10c48da502791382cafc37b090c188d6eaff537 | |
| parent | 89527adde7e5046ecb97d0c94b10760dd30f3276 (diff) | |
Revert "zebra: When shutting down an interface immediately notify about rnh"
This reverts commit 0aaa722883245c2109d9856ca0656749860fc579.
| -rw-r--r-- | zebra/connected.c | 4 | ||||
| -rw-r--r-- | zebra/kernel_socket.c | 4 | ||||
| -rw-r--r-- | zebra/redistribute.c | 2 | ||||
| -rw-r--r-- | zebra/rib.h | 2 | ||||
| -rw-r--r-- | zebra/rt_netlink.c | 6 | ||||
| -rw-r--r-- | zebra/zapi_msg.c | 2 | ||||
| -rw-r--r-- | zebra/zebra_rib.c | 15 | 
7 files changed, 11 insertions, 24 deletions
diff --git a/zebra/connected.c b/zebra/connected.c index 70ea2e3805..c885c533e6 100644 --- a/zebra/connected.c +++ b/zebra/connected.c @@ -402,10 +402,10 @@ void connected_down(struct interface *ifp, struct connected *ifc)  	 * head.  	 */  	rib_delete(afi, SAFI_UNICAST, zvrf->vrf->vrf_id, ZEBRA_ROUTE_CONNECT, 0, -		   0, &p, NULL, &nh, 0, zvrf->table_id, 0, 0, false, true); +		   0, &p, NULL, &nh, 0, zvrf->table_id, 0, 0, false);  	rib_delete(afi, SAFI_MULTICAST, zvrf->vrf->vrf_id, ZEBRA_ROUTE_CONNECT, -		   0, 0, &p, NULL, &nh, 0, zvrf->table_id, 0, 0, false, true); +		   0, 0, &p, NULL, &nh, 0, zvrf->table_id, 0, 0, false);  	/* Schedule LSP forwarding entries for processing, if appropriate. */  	if (zvrf->vrf->vrf_id == VRF_DEFAULT) { diff --git a/zebra/kernel_socket.c b/zebra/kernel_socket.c index 9d74aeca28..adbdf54c1f 100644 --- a/zebra/kernel_socket.c +++ b/zebra/kernel_socket.c @@ -1107,7 +1107,7 @@ void rtm_read(struct rt_msghdr *rtm)  	if (rtm->rtm_type == RTM_CHANGE)  		rib_delete(afi, SAFI_UNICAST, VRF_DEFAULT, ZEBRA_ROUTE_KERNEL,  			   0, zebra_flags, &p, NULL, NULL, 0, RT_TABLE_MAIN, 0, -			   0, true, false); +			   0, true);  	if (rtm->rtm_type == RTM_GET || rtm->rtm_type == RTM_ADD  	    || rtm->rtm_type == RTM_CHANGE)  		rib_add(afi, SAFI_UNICAST, VRF_DEFAULT, ZEBRA_ROUTE_KERNEL, 0, @@ -1116,7 +1116,7 @@ void rtm_read(struct rt_msghdr *rtm)  	else  		rib_delete(afi, SAFI_UNICAST, VRF_DEFAULT, ZEBRA_ROUTE_KERNEL,  			   0, zebra_flags, &p, NULL, &nh, 0, RT_TABLE_MAIN, 0, -			   0, true, false); +			   0, true);  }  /* Interface function for the kernel routing table updates.  Support diff --git a/zebra/redistribute.c b/zebra/redistribute.c index 1f075cfb4b..370dbaa240 100644 --- a/zebra/redistribute.c +++ b/zebra/redistribute.c @@ -715,7 +715,7 @@ int zebra_del_import_table_entry(struct zebra_vrf *zvrf, struct route_node *rn,  	rib_delete(afi, SAFI_UNICAST, zvrf->vrf->vrf_id, ZEBRA_ROUTE_TABLE,  		   re->table, re->flags, &p, NULL, re->nhe->nhg.nexthop,  		   re->nhe_id, zvrf->table_id, re->metric, re->distance, -		   false, false); +		   false);  	return 0;  } diff --git a/zebra/rib.h b/zebra/rib.h index fe7073656c..c385d7326c 100644 --- a/zebra/rib.h +++ b/zebra/rib.h @@ -393,7 +393,7 @@ extern void rib_delete(afi_t afi, safi_t safi, vrf_id_t vrf_id, int type,  		       struct prefix *p, struct prefix_ipv6 *src_p,  		       const struct nexthop *nh, uint32_t nhe_id,  		       uint32_t table_id, uint32_t metric, uint8_t distance, -		       bool fromkernel, bool connected_down); +		       bool fromkernel);  extern struct route_entry *rib_match(afi_t afi, safi_t safi, vrf_id_t vrf_id,  				     union g_addr *addr, diff --git a/zebra/rt_netlink.c b/zebra/rt_netlink.c index f59fbae3af..1ff1afac93 100644 --- a/zebra/rt_netlink.c +++ b/zebra/rt_netlink.c @@ -869,7 +869,7 @@ static int netlink_route_change_read_unicast(struct nlmsghdr *h, ns_id_t ns_id,  		if (nhe_id) {  			rib_delete(afi, SAFI_UNICAST, vrf_id, proto, 0, flags,  				   &p, &src_p, NULL, nhe_id, table, metric, -				   distance, true, false); +				   distance, true);  		} else {  			if (!tb[RTA_MULTIPATH]) {  				struct nexthop nh; @@ -879,13 +879,13 @@ static int netlink_route_change_read_unicast(struct nlmsghdr *h, ns_id_t ns_id,  					gate, afi, vrf_id);  				rib_delete(afi, SAFI_UNICAST, vrf_id, proto, 0,  					   flags, &p, &src_p, &nh, 0, table, -					   metric, distance, true, false); +					   metric, distance, true);  			} else {  				/* XXX: need to compare the entire list of  				 * nexthops here for NLM_F_APPEND stupidity */  				rib_delete(afi, SAFI_UNICAST, vrf_id, proto, 0,  					   flags, &p, &src_p, NULL, 0, table, -					   metric, distance, true, false); +					   metric, distance, true);  			}  		}  	} diff --git a/zebra/zapi_msg.c b/zebra/zapi_msg.c index f2ff8d53f2..90c6a24e7b 100644 --- a/zebra/zapi_msg.c +++ b/zebra/zapi_msg.c @@ -2080,7 +2080,7 @@ static void zread_route_del(ZAPI_HANDLER_ARGS)  	rib_delete(afi, api.safi, zvrf_id(zvrf), api.type, api.instance,  		   api.flags, &api.prefix, src_p, NULL, 0, table_id, api.metric, -		   api.distance, false, false); +		   api.distance, false);  	/* Stats */  	switch (api.prefix.family) { diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c index 0aea0b6cfa..f4be9a8504 100644 --- a/zebra/zebra_rib.c +++ b/zebra/zebra_rib.c @@ -3088,7 +3088,7 @@ void rib_delete(afi_t afi, safi_t safi, vrf_id_t vrf_id, int type,  		unsigned short instance, uint32_t flags, struct prefix *p,  		struct prefix_ipv6 *src_p, const struct nexthop *nh,  		uint32_t nhe_id, uint32_t table_id, uint32_t metric, -		uint8_t distance, bool fromkernel, bool connected_down) +		uint8_t distance, bool fromkernel)  {  	struct route_table *table;  	struct route_node *rn; @@ -3294,19 +3294,6 @@ void rib_delete(afi_t afi, safi_t safi, vrf_id_t vrf_id, int type,  		rib_delnode(rn, same);  	} -	/* -	 * This is to force an immediate re-eval of this particular -	 * node via nexthop tracking.  Why?  Because there are scenarios -	 * where the interface is flapping and the normal queuing methodology -	 * will cause down/up events to very very rarely be combined into -	 * a non-event from nexthop tracking perspective.  Leading -	 * to some fun timing situations with upper level routing protocol -	 * trying to and failing to install routes during this blip.  Especially -	 * when zebra is under load. -	 */ -	if (connected_down) -		zebra_rib_evaluate_rn_nexthops(rn, -					       zebra_router_get_next_sequence());  	route_unlock_node(rn);  	return;  }  | 
