diff options
author | Ondrej Filip <feela@network.cz> | 1999-05-24 21:17:16 +0000 |
---|---|---|
committer | Ondrej Filip <feela@network.cz> | 1999-05-24 21:17:16 +0000 |
commit | c76674f0e98d356ea235ea76fd55d71a3673b123 (patch) | |
tree | d70bbb5ee3857e3a26f4c5457c4598244257d8a6 | |
parent | 65112dd270dbfa598c1f8a5074bf7224b9e1469c (diff) |
struct ospf_neigbor added. Neigbor state machine implementation can start.
-rw-r--r-- | proto/ospf/ospf.c | 12 | ||||
-rw-r--r-- | proto/ospf/ospf.h | 23 |
2 files changed, 24 insertions, 11 deletions
diff --git a/proto/ospf/ospf.c b/proto/ospf/ospf.c index ac2eef19..914adce9 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 6b575961..4ab38d6b 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_ */ |