diff options
Diffstat (limited to 'proto')
-rw-r--r-- | proto/ospf/ospf.c | 12 | ||||
-rw-r--r-- | proto/ospf/ospf.h | 1 |
2 files changed, 13 insertions, 0 deletions
diff --git a/proto/ospf/ospf.c b/proto/ospf/ospf.c index e73e1cea..2cbd9648 100644 --- a/proto/ospf/ospf.c +++ b/proto/ospf/ospf.c @@ -16,6 +16,7 @@ ospf_start(struct proto *p) p->if_notify=ospf_if_notify; p->rte_better=ospf_rte_better; + p->rte_same=ospf_rte_same; fib_init(&po->efib,p->pool,sizeof(struct extfib),16,init_efib); return PS_UP; @@ -98,6 +99,17 @@ ospf_rte_better(struct rte *new, struct rte *old) } } +static int +ospf_rte_same(struct rte *new, struct rte *old) +{ + struct proto *p = new->attrs->proto; + + if(new->attrs->source!=old->attrs->source) return 0; + if(new->u.ospf.metric1!=old->u.ospf.metric1) return 0; + if(new->u.ospf.metric2!=old->u.ospf.metric2) return 0; + return 1; +} + static void ospf_postconfig(struct proto_config *c) { diff --git a/proto/ospf/ospf.h b/proto/ospf/ospf.h index 7214a00d..8645e710 100644 --- a/proto/ospf/ospf.h +++ b/proto/ospf/ospf.h @@ -350,6 +350,7 @@ static struct proto *ospf_init(struct proto_config *c); static void ospf_preconfig(struct protocol *p, struct config *c); static void ospf_postconfig(struct proto_config *c); static int ospf_rte_better(struct rte *new, struct rte *old); +static int ospf_rte_same(struct rte *new, struct rte *old); #include "proto/ospf/hello.h" |