summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--proto/ospf/ospf.c9
-rw-r--r--proto/ospf/ospf.h3
2 files changed, 11 insertions, 1 deletions
diff --git a/proto/ospf/ospf.c b/proto/ospf/ospf.c
index 1fa33fc..47e2b78 100644
--- a/proto/ospf/ospf.c
+++ b/proto/ospf/ospf.c
@@ -44,7 +44,13 @@ tryadj(struct ospf_neighbor *n, struct proto *p)
{
DBG("%s: Going to build adjacency.\n", p->name);
neigh_chstate(n,NEIGHBOR_EXSTART);
- /* FIXME Go on */
+ if(n->adj==0) /* First time adjacency */
+ {
+ n->dds=random_u32;
+ }
+ n->dds++;
+ n->ms=NEIGHBOR_MASTER;
+ /* FIXME Go on, start to send DD packets */
}
/* Neighbor is inactive for a long time. Remove it. */
@@ -284,6 +290,7 @@ ospf_hello_rx(struct ospf_hello_packet *ps, struct proto *p,
n->priority=ps->priority;
n->options=ps->options;
n->ifa=ifa;
+ n->adj=0;
neigh_chstate(n,NEIGHBOR_INIT);
}
tm_start(n->inactim,ifa->deadc*ifa->helloint);
diff --git a/proto/ospf/ospf.h b/proto/ospf/ospf.h
index ca563a4..dde436c 100644
--- a/proto/ospf/ospf.h
+++ b/proto/ospf/ospf.h
@@ -123,6 +123,8 @@ struct ospf_neighbor
#define NEIGHBOR_FULL 7
timer *inactim; /* Inactivity timer */
byte ms; /* Master/slave */
+#define NEIGHBOR_SLAVE 0
+#define NEIGHBOR_MASTER 1
u32 dds; /* DD Sequence number being sentg */
u32 ddr; /* last Dat Des packet */
u32 rid; /* Router ID */
@@ -130,6 +132,7 @@ struct ospf_neighbor
byte options; /* Options */
u32 dr; /* Neigbour's idea of DR */
u32 bdr; /* Neigbour's idea of BDR */
+ u8 adj; /* built adjacency? */
};
#endif /* _BIRD_OSPF_H_ */