summaryrefslogtreecommitdiff
path: root/proto/bgp/attrs.c
diff options
context:
space:
mode:
authorMartin Mares <mj@ucw.cz>2000-05-19 11:01:41 +0000
committerMartin Mares <mj@ucw.cz>2000-05-19 11:01:41 +0000
commit5e88d7302599b7ac521624c77adf0b3c72601670 (patch)
treef2b45af33fde31c5d519f28a524e3d95c1321934 /proto/bgp/attrs.c
parentf49528a3dfa034415527824cbbd0762f3829f0cd (diff)
BGP now reports originating AS and origin type in get_route_info().
Diffstat (limited to 'proto/bgp/attrs.c')
-rw-r--r--proto/bgp/attrs.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/proto/bgp/attrs.c b/proto/bgp/attrs.c
index 4dda0ac0..b074eb21 100644
--- a/proto/bgp/attrs.c
+++ b/proto/bgp/attrs.c
@@ -911,3 +911,18 @@ bgp_attr_init(struct bgp_proto *p)
p->withdraw_bucket = NULL;
fib_init(&p->prefix_fib, p->p.pool, sizeof(struct bgp_prefix), 0, bgp_init_prefix);
}
+
+void
+bgp_get_route_info(rte *e, byte *buf, ea_list *attrs)
+{
+ eattr *p = ea_find(attrs, EA_CODE(EAP_BGP, BA_AS_PATH));
+ eattr *o = ea_find(attrs, EA_CODE(EAP_BGP, BA_ORIGIN));
+ int origas;
+
+ buf += bsprintf(buf, " (%d) [", e->pref);
+ if (p && (origas = as_path_get_first(p->u.ptr)) >= 0)
+ buf += bsprintf(buf, "AS%d", origas);
+ if (o)
+ buf += bsprintf(buf, "%c", "ie?"[o->u.data]);
+ strcpy(buf, "]");
+}