summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Mares <mj@ucw.cz>2000-05-08 12:40:00 +0200
committerMartin Mares <mj@ucw.cz>2000-05-08 12:40:00 +0200
commit916c8c0abacfd5ba93353fec9dba84a81845c95e (patch)
tree8d0abb12434e6e0b9ea3304f799504a298e17003
parent1151401e2b8b4434bbd1419ff33a48f2848d600d (diff)
downloadbird-916c8c0abacfd5ba93353fec9dba84a81845c95e.tar
bird-916c8c0abacfd5ba93353fec9dba84a81845c95e.zip
Use preferences properly.
-rw-r--r--nest/route.h4
-rw-r--r--proto/ospf/config.Y1
-rw-r--r--proto/ospf/rt.c1
-rw-r--r--sysdep/unix/krt.Y2
4 files changed, 5 insertions, 3 deletions
diff --git a/nest/route.h b/nest/route.h
index c36cde6..66a32ed 100644
--- a/nest/route.h
+++ b/nest/route.h
@@ -351,10 +351,10 @@ extern struct protocol *attr_class_to_protocol[EAP_MAX];
#define DEF_PREF_DIRECT 240 /* Directly connected */
#define DEF_PREF_STATIC 200 /* Static route */
-#define DEF_PREF_OSPF_INTERNAL 150 /* OSPF intra-area, inter-area and type 1 external routes */
+#define DEF_PREF_OSPF 150 /* OSPF intra-area, inter-area and type 1 external routes */
#define DEF_PREF_RIP 120 /* RIP */
#define DEF_PREF_BGP 100 /* BGP */
-#define DEF_PREF_OSPF_EXTERNAL 80 /* OSPF external routes */
#define DEF_PREF_PIPE 70 /* Routes piped from other tables */
+#define DEF_PREF_INHERITED 10 /* Routes inherited from other routing daemons */
#endif
diff --git a/proto/ospf/config.Y b/proto/ospf/config.Y
index 1edaeb0..dcd7500 100644
--- a/proto/ospf/config.Y
+++ b/proto/ospf/config.Y
@@ -20,6 +20,7 @@ CF_ADDTO(proto, ospf_proto '}')
ospf_proto_start: proto_start OSPF {
this_proto = proto_config_new(&proto_ospf, sizeof(struct ospf_config));
+ this_proto->preference = DEF_PREF_OSPF;
}
;
diff --git a/proto/ospf/rt.c b/proto/ospf/rt.c
index 1950342..7c7d46e 100644
--- a/proto/ospf/rt.c
+++ b/proto/ospf/rt.c
@@ -211,6 +211,7 @@ again:
e->u.ospf.tag=0; /* FIXME Some config? */
e->pflags = 0;
e->net=ne;
+ e->pref = p->preference;
DBG("Modifying rt entry %I\n (IP: %I, GW: %I, Iface: %s)\n",
nf->fn.prefix,ip,en->nh,en->nhi->name);
rte_update(p->table, ne, p, e);
diff --git a/sysdep/unix/krt.Y b/sysdep/unix/krt.Y
index b5ca3c0..11fd0c0 100644
--- a/sysdep/unix/krt.Y
+++ b/sysdep/unix/krt.Y
@@ -31,7 +31,7 @@ kern_proto_start: proto_start KERNEL {
cf_error("Kernel protocol already defined");
#endif
cf_krt = this_proto = proto_config_new(&proto_unix_kernel, sizeof(struct krt_config));
- this_proto->preference = 0;
+ this_proto->preference = DEF_PREF_INHERITED;
THIS_KRT->scan_time = 60;
THIS_KRT->learn = THIS_KRT->persist = 0;
krt_scan_construct(THIS_KRT);