mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2024-12-22 09:41:54 +00:00
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
@ -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 */
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user