summaryrefslogtreecommitdiffstats
path: root/proto/ospf
diff options
context:
space:
mode:
authorOndrej Filip <feela@network.cz>2000-01-05 01:03:47 +0100
committerOndrej Filip <feela@network.cz>2000-01-05 01:03:47 +0100
commit150875747813977ddf12474fa10a771090586402 (patch)
tree8e74d517989c3f7fb7ceda4db1101d36907bfa05 /proto/ospf
parent7a7c1d9f34b95263d3bc100dec6cf3b94f1a9802 (diff)
downloadbird-150875747813977ddf12474fa10a771090586402.tar
bird-150875747813977ddf12474fa10a771090586402.zip
Preparing for building LS databaze. Huh, why is it so complicated? :-(
Adding definition of some constants.
Diffstat (limited to 'proto/ospf')
-rw-r--r--proto/ospf/ospf.c19
-rw-r--r--proto/ospf/ospf.h21
2 files changed, 35 insertions, 5 deletions
diff --git a/proto/ospf/ospf.c b/proto/ospf/ospf.c
index ccaad53..db77336 100644
--- a/proto/ospf/ospf.c
+++ b/proto/ospf/ospf.c
@@ -17,7 +17,11 @@ ospf_start(struct proto *p)
p->if_notify=ospf_if_notify;
/* Create graph of LSA's */
- po->gr=ospf_top_new(po);
+ po->areano=1; /* FIXME should respect config! */
+ po->firstarea=(struct ospf_area *)malloc(sizeof(struct ospf_area));
+ po->firstarea->gr=ospf_top_new(po);
+ po->firstarea->next=NULL;
+ po->firstarea->areaid=0;
return PS_UP;
}
@@ -30,6 +34,7 @@ ospf_dump(struct proto *p)
struct ospf_neighbor *n;
struct ospf_config *c = (void *) p->cf;
struct proto_ospf *po=(struct proto_ospf *)p;
+ struct ospf_area *oa;
debug("%s: AreaID: %u\n", p->name, c->area );
@@ -45,9 +50,15 @@ ospf_dump(struct proto *p)
}
}
- debug("\n%s: LSA graph dump start:\n", p->name);
- ospf_top_dump(po->gr);
- debug("%s: LSA graph dump finished\n\n", p->name);
+ oa=po->firstarea;
+ while(oa!=NULL)
+ {
+ debug("\n%s: LSA graph dump for area \"%d\" start:\n", p->name,oa->areaid);
+ ospf_top_dump(oa->gr);
+ debug("%s: LSA graph dump for area \"%d\" finished\n\n", p->name,
+ oa->areaid);
+ oa=oa->next;
+ }
}
diff --git a/proto/ospf/ospf.h b/proto/ospf/ospf.h
index 5b8758b..647deba 100644
--- a/proto/ospf/ospf.h
+++ b/proto/ospf/ospf.h
@@ -38,6 +38,18 @@
#error Multicast address not defined in IPv6
#endif
+
+#define LSREFRESHTIME 1800 /* 30 minut */
+#define MINLSINTERVAL 5
+#define MINLSARRIVAL 1
+#define MAXAGE 3600 /* 1 hour */
+#define CHECKAGE 300 /* 5 min */
+#define MAXAGEDIFF 900 /* 15 min */
+#define LSINFINITY 0xffffff
+/*#define DEFAULTDES 0.0.0.0 FIXME: How to define it? */
+#define INITSEQNUM 0x80000001 /* Initial Sequence Number */
+#define MAXSEQNUM 0x7fffffff /* Maximal Sequence Number */
+
struct ospf_config {
struct proto_config c;
u32 area; /* FIXME: Area ID !!! This is wrong !!!
@@ -197,10 +209,17 @@ struct ospf_neighbor
#define INM_INACTTIM 11 /* Inactivity timer */
#define INM_LLDOWN 12 /* Line down */
+struct ospf_area {
+ struct ospf_area *next;
+ u32 areaid;
+ struct top_graph *gr; /* LSA graph */
+};
+
struct proto_ospf {
struct proto proto;
list iface_list; /* Interfaces we really use */
- struct top_graph *gr; /* LSA graph */
+ int areano; /* Number of area I belong to */
+ struct ospf_area *firstarea;
};
static int ospf_start(struct proto *p);