Commit 61375bd0 authored by Ondrej Zajicek (work)'s avatar Ondrej Zajicek (work)
Browse files

Nest: Avoid unnecessary net_format() in 'show route' command

When output of 'show route' command was generated, the net_format() was
called for each network prematurely, even if the result was not needed.

Fix the code to call net_format() only when needed. This makes queries
that process many networks but show only few (e.g. 'show route where ..',
or 'show route count') much faster (like 5x - 10x faster).
parent 9ac16df3
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -111,10 +111,9 @@ rt_show_net(struct cli *c, net *n, struct rt_show_data *d)
  ASSUME(!d->export_mode || ec);

  int first = 1;
  int first_show = 1;
  int pass = 0;

  bsnprintf(ia, sizeof(ia), "%N", n->n.addr);

  for (e = n->routes; e; e = e->next)
    {
      if (rte_is_filtered(e) != d->filtered)
@@ -188,10 +187,17 @@ rt_show_net(struct cli *c, net *n, struct rt_show_data *d)
	goto skip;

      if (d->stats < 2)
      {
	if (first_show)
	  net_format(n->n.addr, ia, sizeof(ia));
	else
	  ia[0] = 0;

	rt_show_rte(c, ia, e, d, (e->net->routes == ee));
	first_show = 0;
      }

      d->show_counter++;
      ia[0] = 0;

    skip:
      if (e != ee)