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()
|
- table: ocassional core dumps in rt_prune()
|
||||||
|
|
||||||
- bgp: get_route_info
|
|
||||||
|
|
||||||
Documentation
|
Documentation
|
||||||
~~~~~~~~~~~~~
|
~~~~~~~~~~~~~
|
||||||
- write doctool
|
- write doctool
|
||||||
|
|
|
@ -911,3 +911,18 @@ bgp_attr_init(struct bgp_proto *p)
|
||||||
p->withdraw_bucket = NULL;
|
p->withdraw_bucket = NULL;
|
||||||
fib_init(&p->prefix_fib, p->p.pool, sizeof(struct bgp_prefix), 0, bgp_init_prefix);
|
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_status: bgp_get_status,
|
||||||
get_attr: bgp_get_attr,
|
get_attr: bgp_get_attr,
|
||||||
reconfigure: bgp_reconfigure,
|
reconfigure: bgp_reconfigure,
|
||||||
#if 0
|
|
||||||
dump: bgp_dump,
|
|
||||||
get_route_info: bgp_get_route_info,
|
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 *);
|
void bgp_attr_init(struct bgp_proto *);
|
||||||
unsigned int bgp_encode_attrs(byte *w, struct ea_list *attrs, int remains);
|
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_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 */
|
/* packets.c */
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue