summaryrefslogtreecommitdiff
path: root/proto/ospf/iface.c
diff options
context:
space:
mode:
Diffstat (limited to 'proto/ospf/iface.c')
-rw-r--r--proto/ospf/iface.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/proto/ospf/iface.c b/proto/ospf/iface.c
index 47ab8dcb..7015f012 100644
--- a/proto/ospf/iface.c
+++ b/proto/ospf/iface.c
@@ -73,9 +73,8 @@ downint(struct ospf_iface *ifa)
void
ospf_int_sm(struct ospf_iface *ifa, int event)
{
- struct proto *p;
-
- p=(struct proto *)(ifa->proto);
+ struct proto *p=(struct proto *)(ifa->proto);
+ struct proto_ospf *po=ifa->proto;
DBG("%s: SM on iface %s. Event is \"%s\".\n",
p->name, ifa->iface->name, ospf_ism[event]);
@@ -105,12 +104,14 @@ ospf_int_sm(struct ospf_iface *ifa, int event)
}
addifa_rtlsa(ifa);
}
+ originate_rt_lsa(ifa->oa,po);
break;
case ISM_BACKS:
case ISM_WAITF:
if(ifa->state==OSPF_IS_WAITING)
{
bdr_election(ifa ,p);
+ originate_rt_lsa(ifa->oa,po);
}
break;
case ISM_NEICH:
@@ -119,16 +120,21 @@ ospf_int_sm(struct ospf_iface *ifa, int event)
{
bdr_election(ifa ,p);
}
+ originate_rt_lsa(ifa->oa,po);
+ break;
case ISM_DOWN:
iface_chstate(ifa, OSPF_IS_DOWN);
downint(ifa);
+ originate_rt_lsa(ifa->oa,po);
break;
case ISM_LOOP: /* Useless? */
iface_chstate(ifa, OSPF_IS_LOOP);
downint(ifa);
+ originate_rt_lsa(ifa->oa,po);
break;
case ISM_UNLOOP:
iface_chstate(ifa, OSPF_IS_DOWN);
+ originate_rt_lsa(ifa->oa,po);
break;
default:
die("%s: ISM - Unknown event?",p->name);