summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--proto/ospf/ospf.c26
-rw-r--r--proto/ospf/rt.c2
2 files changed, 21 insertions, 7 deletions
diff --git a/proto/ospf/ospf.c b/proto/ospf/ospf.c
index dd7ffab0..bc7d9741 100644
--- a/proto/ospf/ospf.c
+++ b/proto/ospf/ospf.c
@@ -197,12 +197,24 @@ ospf_get_status(struct proto *p, byte *buf)
}
}
+static void
+ospf_get_route_info(rte *rte, byte *buf, ea_list *attrs)
+{
+ char met=' ';
+
+ if(rte->u.ospf.type=='E') met='1';
+ if(rte->u.ospf.metric2!=0) met='2';
+ buf += bsprintf(buf, " %c%c %d", rte->u.ospf.type, met,
+ (rte->u.ospf.metric2==0) ? rte->u.ospf.metric1 : rte->u.ospf.metric2);
+}
+
struct protocol proto_ospf = {
- name: "OSPF",
- template: "ospf%d",
- init: ospf_init,
- dump: ospf_dump,
- start: ospf_start,
- shutdown: ospf_shutdown,
- get_status: ospf_get_status
+ name: "OSPF",
+ template: "ospf%d",
+ init: ospf_init,
+ dump: ospf_dump,
+ start: ospf_start,
+ shutdown: ospf_shutdown,
+ get_route_info: ospf_get_route_info,
+ get_status: ospf_get_status
};
diff --git a/proto/ospf/rt.c b/proto/ospf/rt.c
index d50e438a..6b4c18f3 100644
--- a/proto/ospf/rt.c
+++ b/proto/ospf/rt.c
@@ -229,6 +229,7 @@ again:
e->u.ospf.metric1=nf->metric;
e->u.ospf.metric2=0;
e->u.ospf.tag=0; /* FIXME Some config? */
+ e->u.ospf.type='I';
e->pflags = 0;
e->net=ne;
e->pref = p->preference;
@@ -448,6 +449,7 @@ noch:
e->u.ospf.metric1=nf->metric;
e->u.ospf.metric2=nf->metric2;
e->u.ospf.tag=0; /* FIXME Some config? */
+ e->u.ospf.type='E';
e->pflags = 0;
e->net=ne;
e->pref = p->preference;