summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOndrej Filip <feela@network.cz>1999-05-24 23:17:16 +0200
committerOndrej Filip <feela@network.cz>1999-05-24 23:17:16 +0200
commitc76674f0e98d356ea235ea76fd55d71a3673b123 (patch)
treed70bbb5ee3857e3a26f4c5457c4598244257d8a6
parent65112dd270dbfa598c1f8a5074bf7224b9e1469c (diff)
downloadbird-c76674f0e98d356ea235ea76fd55d71a3673b123.tar
bird-c76674f0e98d356ea235ea76fd55d71a3673b123.zip
struct ospf_neigbor added. Neigbor state machine implementation can start.
-rw-r--r--proto/ospf/ospf.c12
-rw-r--r--proto/ospf/ospf.h23
2 files changed, 24 insertions, 11 deletions
diff --git a/proto/ospf/ospf.c b/proto/ospf/ospf.c
index ac2eef1..914adce 100644
--- a/proto/ospf/ospf.c
+++ b/proto/ospf/ospf.c
@@ -274,14 +274,6 @@ hello_timer_hook(timer *timer)
}
void
-add_hello_timer(struct ospf_iface *ifa)
-{
- struct proto *p;
- p=(struct proto *)(ifa->proto);
-
-}
-
-void
wait_timer_hook(timer *timer)
{
struct ospf_iface *ifa;
@@ -296,6 +288,7 @@ wait_timer_hook(timer *timer)
/*
* Wait time fired. Now we must change state
* to DR or DROTHER depending on priority
+ * FIXME: I can be also BDR
*/
if(ifa->priority!=0)
{
@@ -303,6 +296,7 @@ wait_timer_hook(timer *timer)
ifa->state=OSPF_IS_DR;
ifa->drip=ifa->iface->addr->ip;
+ ifa->drid=p->cf->global->router_id;
/* FIXME: Set ifa->drid */
}
else
@@ -343,7 +337,7 @@ ospf_add_timers(struct ospf_iface *ifa, pool *pool, int wait)
ifa->wait_timer->recurrent=0;
ifa->wait_timer->expires=0;
ifa->state=OSPF_IS_WAITING;
- tm_start(ifa->wait_timer,(wait!=0 ? wait : WAIT_D));
+ tm_start(ifa->wait_timer,(wait!=0 ? wait : WAIT_DMH*ifa->helloint));
DBG(p->name);
DBG(": Installing wait timer.\n");
}
diff --git a/proto/ospf/ospf.h b/proto/ospf/ospf.h
index 6b57596..4ab38d6 100644
--- a/proto/ospf/ospf.h
+++ b/proto/ospf/ospf.h
@@ -70,8 +70,7 @@ struct ospf_iface {
#define PRIORITY_D 1
#define HELLOINT_D 10
#define DEADINT_D 4
-#define WAIT_D 20 /* Value of Wait timer - I didn't found it in RFC */
-
+#define WAIT_DMH 2 /* Value of Wait timer - not found it in RFC - using 2*HELLO */
};
struct ospf_sock {
@@ -113,4 +112,24 @@ struct ospf_hello_packet {
u32 bdr;
};
+/* FIXME: int is not a good idea */
+struct ospf_neighbor
+{
+ int state;
+#define NEIGHBOR_DOWN 0
+#define NEIGHBOR_INIT 1
+#define NEIGHBOR_2WAY 2
+#define NEIGHBOR_ATTEMPT 3
+#define NEIGHBOR_EXSTART 4
+ timer *inactim; /* Inactivity timer */
+ int ms; /* Master/slave */
+ int dds; /* DD Sequence number being sentg */
+ int ddr; /* last Dat Des packet */
+ u32 rid; /* Router ID */
+ int pri; /* Priority */
+ int options; /* Options */
+ u32 dr; /* Neigbour's idea of DR */
+ u32 bdr; /* Neigbour's idea of BDR */
+};
+
#endif /* _BIRD_OSPF_H_ */