Commit 93f50ca3 authored by Jan Moskyto Matejka's avatar Jan Moskyto Matejka
Browse files

Nest: names for nhu_state values

It took too much time to analyze what's the meaning of nhu_state values
so I spent less than the same amount of time documenting it.
parent b2b84359
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -168,6 +168,11 @@ typedef struct rtable {
  struct fib_iterator nhu_fit;		/* Next Hop Update FIB iterator */
} rtable;

#define NHU_CLEAN	0
#define NHU_SCHEDULED	1
#define NHU_RUNNING	2
#define NHU_DIRTY	3

typedef struct network {
  struct rte *routes;			/* Available routes for this network */
  struct fib_node n;			/* FIB flags reserved for kernel syncer */
+14 −8
Original line number Diff line number Diff line
@@ -1561,11 +1561,14 @@ rt_schedule_hcu(rtable *tab)
static inline void
rt_schedule_nhu(rtable *tab)
{
  if (tab->nhu_state == 0)
  if (tab->nhu_state == NHU_CLEAN)
    ev_schedule(tab->rt_event);

  /* state change 0->1, 2->3 */
  tab->nhu_state |= 1;
  /* state change:
   *   NHU_CLEAN   -> NHU_SCHEDULED
   *   NHU_RUNNING -> NHU_DIRTY
   */
  tab->nhu_state |= NHU_SCHEDULED;
}

void
@@ -1897,13 +1900,13 @@ rt_next_hop_update(rtable *tab)
  struct fib_iterator *fit = &tab->nhu_fit;
  int max_feed = 32;

  if (tab->nhu_state == 0)
  if (tab->nhu_state == NHU_CLEAN)
    return;

  if (tab->nhu_state == 1)
  if (tab->nhu_state == NHU_SCHEDULED)
    {
      FIB_ITERATE_INIT(fit, &tab->fib);
      tab->nhu_state = 2;
      tab->nhu_state = NHU_RUNNING;
    }

  FIB_ITERATE_START(&tab->fib, fit, net, n)
@@ -1918,10 +1921,13 @@ rt_next_hop_update(rtable *tab)
    }
  FIB_ITERATE_END;

  /* state change 2->0, 3->1 */
  /* State change:
   *   NHU_DIRTY   -> NHU_SCHEDULED
   *   NHU_RUNNING -> NHU_CLEAN
   */
  tab->nhu_state &= 1;

  if (tab->nhu_state > 0)
  if (tab->nhu_state != NHU_CLEAN)
    ev_schedule(tab->rt_event);
}