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.
This commit is contained in:
parent
b2b84359ab
commit
93f50ca317
2 changed files with 19 additions and 8 deletions
|
@ -168,6 +168,11 @@ typedef struct rtable {
|
||||||
struct fib_iterator nhu_fit; /* Next Hop Update FIB iterator */
|
struct fib_iterator nhu_fit; /* Next Hop Update FIB iterator */
|
||||||
} rtable;
|
} rtable;
|
||||||
|
|
||||||
|
#define NHU_CLEAN 0
|
||||||
|
#define NHU_SCHEDULED 1
|
||||||
|
#define NHU_RUNNING 2
|
||||||
|
#define NHU_DIRTY 3
|
||||||
|
|
||||||
typedef struct network {
|
typedef struct network {
|
||||||
struct rte *routes; /* Available routes for this network */
|
struct rte *routes; /* Available routes for this network */
|
||||||
struct fib_node n; /* FIB flags reserved for kernel syncer */
|
struct fib_node n; /* FIB flags reserved for kernel syncer */
|
||||||
|
|
|
@ -1561,11 +1561,14 @@ rt_schedule_hcu(rtable *tab)
|
||||||
static inline void
|
static inline void
|
||||||
rt_schedule_nhu(rtable *tab)
|
rt_schedule_nhu(rtable *tab)
|
||||||
{
|
{
|
||||||
if (tab->nhu_state == 0)
|
if (tab->nhu_state == NHU_CLEAN)
|
||||||
ev_schedule(tab->rt_event);
|
ev_schedule(tab->rt_event);
|
||||||
|
|
||||||
/* state change 0->1, 2->3 */
|
/* state change:
|
||||||
tab->nhu_state |= 1;
|
* NHU_CLEAN -> NHU_SCHEDULED
|
||||||
|
* NHU_RUNNING -> NHU_DIRTY
|
||||||
|
*/
|
||||||
|
tab->nhu_state |= NHU_SCHEDULED;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -1897,13 +1900,13 @@ rt_next_hop_update(rtable *tab)
|
||||||
struct fib_iterator *fit = &tab->nhu_fit;
|
struct fib_iterator *fit = &tab->nhu_fit;
|
||||||
int max_feed = 32;
|
int max_feed = 32;
|
||||||
|
|
||||||
if (tab->nhu_state == 0)
|
if (tab->nhu_state == NHU_CLEAN)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (tab->nhu_state == 1)
|
if (tab->nhu_state == NHU_SCHEDULED)
|
||||||
{
|
{
|
||||||
FIB_ITERATE_INIT(fit, &tab->fib);
|
FIB_ITERATE_INIT(fit, &tab->fib);
|
||||||
tab->nhu_state = 2;
|
tab->nhu_state = NHU_RUNNING;
|
||||||
}
|
}
|
||||||
|
|
||||||
FIB_ITERATE_START(&tab->fib, fit, net, n)
|
FIB_ITERATE_START(&tab->fib, fit, net, n)
|
||||||
|
@ -1918,10 +1921,13 @@ rt_next_hop_update(rtable *tab)
|
||||||
}
|
}
|
||||||
FIB_ITERATE_END;
|
FIB_ITERATE_END;
|
||||||
|
|
||||||
/* state change 2->0, 3->1 */
|
/* State change:
|
||||||
|
* NHU_DIRTY -> NHU_SCHEDULED
|
||||||
|
* NHU_RUNNING -> NHU_CLEAN
|
||||||
|
*/
|
||||||
tab->nhu_state &= 1;
|
tab->nhu_state &= 1;
|
||||||
|
|
||||||
if (tab->nhu_state > 0)
|
if (tab->nhu_state != NHU_CLEAN)
|
||||||
ev_schedule(tab->rt_event);
|
ev_schedule(tab->rt_event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue