}
kroute_remove(struct kroute_node *kr){	struct knexthop_node	*s;	struct kroute_nexthop	 h;	/*	 * the foreach is suboptimal, but:	 * -routes disappering that have nexthops attached should not	 *  happen often; except for some ibgp and multihop that should	 *  be connected routes anyway	 * -maintaining an SLIST per kroute_node is probably worse	 * -it is easy to change if needed ;-)	 */	RB_REMOVE(kroute_tree, &krt, kr);	if ((kr->flags & F_KERNEL) && (kr->flags & F_NEXTHOP))		RB_FOREACH(s, knexthop_tree, &knt)			if (s->kroute == kr) {				/*				 * XXX check again wether there's another				 * non-bgp route. if not, notify RDE				 * that this nexthop is now invalid				 */				bzero(&h, sizeof(h));				if (kroute_nexthop_insert(s->nexthop, &h) == -1)					return (-1);				if (h.valid == 0)	/* no alternate route */					send_nexthop_update(&h);			}	free(kr);	return (0);}