--- a/zebra/zebra_nhg.c	2019-10-18 01:59:17.582282539 +0300
+++ b/zebra/zebra_nhg.c	2019-10-18 02:00:17.501997253 +0300
@@ -1456,20 +1456,9 @@
 	while (rn) {
 		route_unlock_node(rn);
 
-		/* Lookup should halt if we've matched against ourselves ('top',
-		 * if specified) - i.e., we cannot have a nexthop NH1 is
-		 * resolved by a route NH1. The exception is if the route is a
-		 * host route.
-		 */
-		if (top && rn == top)
-			if (((afi == AFI_IP) && (rn->p.prefixlen != 32))
-			    || ((afi == AFI_IP6) && (rn->p.prefixlen != 128))) {
-				if (IS_ZEBRA_DEBUG_RIB_DETAILED)
-					zlog_debug(
-						"\t%s: Matched against ourself and prefix length is not max bit length",
-						__PRETTY_FUNCTION__);
-				return 0;
-			}
+		/* If lookup self prefix return immediately. */
+		if (rn == top)
+		    return 0;
 
 		/* Pick up selected route. */
 		/* However, do not resolve over default route unless explicitly