0
0
mirror of https://gitlab.nic.cz/labs/bird.git synced 2024-12-22 01:31:55 +00:00

BGP now reports originating AS and origin type in get_route_info().

This commit is contained in:
Martin Mares 2000-05-19 11:01:41 +00:00
parent f49528a3df
commit 5e88d73025
4 changed files with 16 additions and 5 deletions

2
TODO
View File

@ -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

View File

@ -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, "]");
}

View File

@ -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
}; };

View File

@ -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 */