From c76674f0e98d356ea235ea76fd55d71a3673b123 Mon Sep 17 00:00:00 2001 From: Ondrej Filip Date: Mon, 24 May 1999 21:17:16 +0000 Subject: struct ospf_neigbor added. Neigbor state machine implementation can start. --- proto/ospf/ospf.c | 12 +++--------- proto/ospf/ospf.h | 23 +++++++++++++++++++++-- 2 files changed, 24 insertions(+), 11 deletions(-) (limited to 'proto/ospf') 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 @@ -273,14 +273,6 @@ hello_timer_hook(timer *timer) 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) { @@ -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_ */ -- cgit v1.2.3