struct ospf_neigbor added. Neigbor state machine implementation can start.

This commit is contained in:
Ondrej Filip 1999-05-24 21:17:16 +00:00
parent 65112dd270
commit c76674f0e9
2 changed files with 24 additions and 11 deletions

View file

@ -273,14 +273,6 @@ hello_timer_hook(timer *timer)
p->name, ifa->iface->name); p->name, ifa->iface->name);
} }
void
add_hello_timer(struct ospf_iface *ifa)
{
struct proto *p;
p=(struct proto *)(ifa->proto);
}
void void
wait_timer_hook(timer *timer) wait_timer_hook(timer *timer)
{ {
@ -296,6 +288,7 @@ wait_timer_hook(timer *timer)
/* /*
* Wait time fired. Now we must change state * Wait time fired. Now we must change state
* to DR or DROTHER depending on priority * to DR or DROTHER depending on priority
* FIXME: I can be also BDR
*/ */
if(ifa->priority!=0) if(ifa->priority!=0)
{ {
@ -303,6 +296,7 @@ wait_timer_hook(timer *timer)
ifa->state=OSPF_IS_DR; ifa->state=OSPF_IS_DR;
ifa->drip=ifa->iface->addr->ip; ifa->drip=ifa->iface->addr->ip;
ifa->drid=p->cf->global->router_id;
/* FIXME: Set ifa->drid */ /* FIXME: Set ifa->drid */
} }
else else
@ -343,7 +337,7 @@ ospf_add_timers(struct ospf_iface *ifa, pool *pool, int wait)
ifa->wait_timer->recurrent=0; ifa->wait_timer->recurrent=0;
ifa->wait_timer->expires=0; ifa->wait_timer->expires=0;
ifa->state=OSPF_IS_WAITING; 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(p->name);
DBG(": Installing wait timer.\n"); DBG(": Installing wait timer.\n");
} }

View file

@ -70,8 +70,7 @@ struct ospf_iface {
#define PRIORITY_D 1 #define PRIORITY_D 1
#define HELLOINT_D 10 #define HELLOINT_D 10
#define DEADINT_D 4 #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 { struct ospf_sock {
@ -113,4 +112,24 @@ struct ospf_hello_packet {
u32 bdr; 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_ */ #endif /* _BIRD_OSPF_H_ */