summaryrefslogtreecommitdiff
path: root/proto/ospf/ospf.c
diff options
context:
space:
mode:
Diffstat (limited to 'proto/ospf/ospf.c')
-rw-r--r--proto/ospf/ospf.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/proto/ospf/ospf.c b/proto/ospf/ospf.c
index bc7d9741..f55bec88 100644
--- a/proto/ospf/ospf.c
+++ b/proto/ospf/ospf.c
@@ -159,7 +159,7 @@ ospf_rt_notify(struct proto *p, net *n, rte *new, rte *old, ea_list *attrs)
if(new) /* Got some new route */
{
- originate_ext_lsa(n, old, po);
+ originate_ext_lsa(n, new, po);
}
else
{
@@ -201,9 +201,17 @@ static void
ospf_get_route_info(rte *rte, byte *buf, ea_list *attrs)
{
char met=' ';
+ char type=' ';
- if(rte->u.ospf.type=='E') met='1';
+ if(rte->attrs->source==RTS_OSPF_EXT)
+ {
+ met='1';
+ type='E';
+ }
+ //if(rte->u.ospf.type=='E') met='1';
if(rte->u.ospf.metric2!=0) met='2';
+ if(rte->attrs->source==RTS_OSPF_IA) type='A';
+ if(rte->attrs->source==RTS_OSPF) type='I';
buf += bsprintf(buf, " %c%c %d", rte->u.ospf.type, met,
(rte->u.ospf.metric2==0) ? rte->u.ospf.metric1 : rte->u.ospf.metric2);
}