summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Mares <mj@ucw.cz>2000-05-16 13:43:26 +0000
committerMartin Mares <mj@ucw.cz>2000-05-16 13:43:26 +0000
commitdf9f0fb30a7046872eff21624a315d5fd56e938f (patch)
tree7ae96014fc94ba23ea640db451ca90da738d4e87
parentf990fc61e0dd13ae90c9bbff811736dfd52988b0 (diff)
Don't log state changes if nothing user-visible has changed.
-rw-r--r--TODO4
-rw-r--r--nest/proto.c12
-rw-r--r--nest/protocol.h1
3 files changed, 12 insertions, 5 deletions
diff --git a/TODO b/TODO
index c8fb0d1a..f2380b34 100644
--- a/TODO
+++ b/TODO
@@ -1,7 +1,5 @@
Core
~~~~
-- kernel: persistent mode
-
- client: Ctrl-R eats one more enter
- client: paging?
- client: data losses on large dumps?
@@ -12,8 +10,6 @@ Core
- bgp: timing of updates?
- bgp: dump and get_route_info
-- proto: Don't show repeated `Changed state to ...' messages if only internal states change
-
Documentation
~~~~~~~~~~~~~
- write doctool
diff --git a/nest/proto.c b/nest/proto.c
index dab40a6c..e81aadc9 100644
--- a/nest/proto.c
+++ b/nest/proto.c
@@ -59,7 +59,17 @@ proto_relink(struct proto *p)
{
list *l;
- PD(p, "State changed to %s", proto_state_name(p));
+ if (p->debug & D_STATES)
+ {
+ char *name = proto_state_name(p);
+ if (name != p->last_state_name_announced)
+ {
+ p->last_state_name_announced = name;
+ PD(p, "State changed to %s", proto_state_name(p));
+ }
+ }
+ else
+ p->last_state_name_announced = NULL;
rem_node(&p->n);
switch (p->core_state)
{
diff --git a/nest/protocol.h b/nest/protocol.h
index f08b3bc3..df9064b3 100644
--- a/nest/protocol.h
+++ b/nest/protocol.h
@@ -107,6 +107,7 @@ struct proto {
unsigned reconfiguring; /* We're shutting down due to reconfiguration */
u32 hash_key; /* Random key used for hashing of neighbors */
bird_clock_t last_state_change; /* Time of last state transition */
+ char *last_state_name_announced; /* Last state name we've announced to the user */
/*
* General protocol hooks: