p->name, ifa->iface->name);
}
-void
-add_hello_timer(struct ospf_iface *ifa)
-{
- struct proto *p;
- p=(struct proto *)(ifa->proto);
-
-}
-
void
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)
{
ifa->state=OSPF_IS_DR;
ifa->drip=ifa->iface->addr->ip;
+ ifa->drid=p->cf->global->router_id;
/* FIXME: Set ifa->drid */
}
else
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");
}
#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 {
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_ */