summaryrefslogtreecommitdiff
path: root/proto
diff options
context:
space:
mode:
Diffstat (limited to 'proto')
-rw-r--r--proto/ospf/config.Y11
-rw-r--r--proto/ospf/ospf.c3
-rw-r--r--proto/ospf/ospf.h2
3 files changed, 13 insertions, 3 deletions
diff --git a/proto/ospf/config.Y b/proto/ospf/config.Y
index 0951572f..5a58bf2e 100644
--- a/proto/ospf/config.Y
+++ b/proto/ospf/config.Y
@@ -1,7 +1,7 @@
/*
* BIRD -- OSPF Configuration
*
- * (c) 1999 Ondrej Filip <feela@network.cz>
+ * (c) 1999-2000 Ondrej Filip <feela@network.cz>
*
* Can be freely distributed and used under the terms of the GNU GPL.
*/
@@ -10,10 +10,14 @@ CF_HDR
#include "proto/ospf/ospf.h"
+CF_DEFINES
+
+#define OSPF_CFG ((struct ospf_config *) this_proto)
+
CF_DECLS
CF_KEYWORDS(OSPF, AREA, OSPF_METRIC1, OSPF_METRIC2, OSPF_TAG)
-CF_KEYWORDS(NEIGHBORS)
+CF_KEYWORDS(NEIGHBORS, RFC1583COMPAT)
%type <t> opttext
@@ -29,8 +33,9 @@ ospf_proto_start: proto_start OSPF {
ospf_proto:
ospf_proto_start proto_name '{'
- | ospf_proto proto_item ';'
+ | ospf_proto proto_item ';'
| ospf_proto ospf_area ';'
+ | ospf_proto RFC1583COMPAT bool ';' { OSPF_CFG->rfc1583 = $3; }
;
ospf_area: AREA idval {
diff --git a/proto/ospf/ospf.c b/proto/ospf/ospf.c
index bd66434e..62bab70f 100644
--- a/proto/ospf/ospf.c
+++ b/proto/ospf/ospf.c
@@ -61,6 +61,7 @@ ospf_init(struct proto_config *c)
{
struct proto *p = proto_new(c, sizeof(struct proto_ospf));
struct proto_ospf *po=(struct proto_ospf *)p;
+ struct ospf_config *oc=(struct ospf_config *)c;
debug("OSPF: Init requested.\n");
p->import_control = ospf_import_control;
@@ -71,6 +72,8 @@ ospf_init(struct proto_config *c)
p->rte_better = ospf_rte_better;
p->rte_same = ospf_rte_same;
+ po->rfc1583=oc->rfc1583;
+
return p;
}
diff --git a/proto/ospf/ospf.h b/proto/ospf/ospf.h
index 52c56e95..4627af1b 100644
--- a/proto/ospf/ospf.h
+++ b/proto/ospf/ospf.h
@@ -47,6 +47,7 @@
struct ospf_config {
struct proto_config c;
+ int rfc1583;
u32 area; /* FIXME: Area ID !!! This is wrong !!!
* Should respect interface */
};
@@ -345,6 +346,7 @@ struct proto_ospf {
list area_list;
int areano; /* Number of area I belong to */
struct fib efib; /* FIB for external routes */
+ int rfc1583;
};
static int ospf_start(struct proto *p);