diff options
author | Ondrej Zajicek <santiago@crfreenet.org> | 2023-01-03 17:01:54 +0100 |
---|---|---|
committer | Ondrej Zajicek <santiago@crfreenet.org> | 2023-01-03 17:01:54 +0100 |
commit | b28431e557c4f63923476094a919a0630001275e (patch) | |
tree | 0be1f9c6c1283fb6c4c258dd47c75575873de3ab | |
parent | d3f50ede127df338f575e188566035b2a46cf6c6 (diff) |
Nest: Fix leaking internal attributes in RIP and Babel
During backporting attribute changes from 3.0-branch, some internal
attributes (RIP iface and Babel seqno) leaked to 'show route all' output.
Allow protocols to hide specific attributes with GA_HIDDEN value.
Thanks to Nigel Kukard for the bugreport.
-rw-r--r-- | nest/protocol.h | 1 | ||||
-rw-r--r-- | nest/rt-attr.c | 4 | ||||
-rw-r--r-- | proto/babel/babel.c | 6 | ||||
-rw-r--r-- | proto/rip/rip.c | 3 |
4 files changed, 10 insertions, 4 deletions
diff --git a/nest/protocol.h b/nest/protocol.h index 46744357..fcbf0539 100644 --- a/nest/protocol.h +++ b/nest/protocol.h @@ -94,6 +94,7 @@ void protos_dump_all(void); #define GA_UNKNOWN 0 /* Attribute not recognized */ #define GA_NAME 1 /* Result = name */ #define GA_FULL 2 /* Result = both name and value */ +#define GA_HIDDEN 3 /* Attribute should not be printed */ /* * Known protocols diff --git a/nest/rt-attr.c b/nest/rt-attr.c index 22b45db9..d793c72e 100644 --- a/nest/rt-attr.c +++ b/nest/rt-attr.c @@ -981,7 +981,9 @@ ea_show(struct cli *c, const eattr *e) bsprintf(pos, "<type %02x>", e->type); } } - cli_printf(c, -1012, "\t%s", buf); + + if (status != GA_HIDDEN) + cli_printf(c, -1012, "\t%s", buf); } /** diff --git a/proto/babel/babel.c b/proto/babel/babel.c index 86cec63b..ecde07b3 100644 --- a/proto/babel/babel.c +++ b/proto/babel/babel.c @@ -2081,9 +2081,6 @@ babel_get_attr(const eattr *a, byte *buf, int buflen UNUSED) { switch (a->id) { - case EA_BABEL_SEQNO: - return GA_FULL; - case EA_BABEL_METRIC: bsprintf(buf, "metric: %d", a->u.data); return GA_FULL; @@ -2096,6 +2093,9 @@ babel_get_attr(const eattr *a, byte *buf, int buflen UNUSED) return GA_FULL; } + case EA_BABEL_SEQNO: + return GA_HIDDEN; + default: return GA_UNKNOWN; } diff --git a/proto/rip/rip.c b/proto/rip/rip.c index b0b5b8a1..5f3161ee 100644 --- a/proto/rip/rip.c +++ b/proto/rip/rip.c @@ -1233,6 +1233,9 @@ rip_get_attr(const eattr *a, byte *buf, int buflen UNUSED) bsprintf(buf, "tag: %04x", a->u.data); return GA_FULL; + case EA_RIP_FROM: + return GA_HIDDEN; + default: return GA_UNKNOWN; } |