BGP now reports originating AS and origin type in get_route_info().
This commit is contained in:
parent
f49528a3df
commit
5e88d73025
4 changed files with 16 additions and 5 deletions
2
TODO
2
TODO
|
@ -6,8 +6,6 @@ Core
|
|||
|
||||
- table: ocassional core dumps in rt_prune()
|
||||
|
||||
- bgp: get_route_info
|
||||
|
||||
Documentation
|
||||
~~~~~~~~~~~~~
|
||||
- write doctool
|
||||
|
|
|
@ -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, "]");
|
||||
}
|
||||
|
|
|
@ -531,8 +531,5 @@ struct protocol proto_bgp = {
|
|||
get_status: bgp_get_status,
|
||||
get_attr: bgp_get_attr,
|
||||
reconfigure: bgp_reconfigure,
|
||||
#if 0
|
||||
dump: bgp_dump,
|
||||
get_route_info: bgp_get_route_info,
|
||||
#endif
|
||||
};
|
||||
|
|
|
@ -123,6 +123,7 @@ int bgp_import_control(struct proto *, struct rte **, struct ea_list **, struct
|
|||
void bgp_attr_init(struct bgp_proto *);
|
||||
unsigned int bgp_encode_attrs(byte *w, struct ea_list *attrs, int remains);
|
||||
void bgp_free_bucket(struct bgp_proto *p, struct bgp_bucket *buck);
|
||||
void bgp_get_route_info(struct rte *, byte *buf, struct ea_list *attrs);
|
||||
|
||||
/* packets.c */
|
||||
|
||||
|
|
Loading…
Reference in a new issue