summaryrefslogtreecommitdiffstats
path: root/proto/ospf/ospf.h
diff options
context:
space:
mode:
authorOndrej Zajicek <santiago@crfreenet.org>2010-03-26 14:48:01 +0100
committerOndrej Zajicek <santiago@crfreenet.org>2010-03-26 14:48:01 +0100
commitaf157fa3dbe2bba0674eb7634efd3ade6c89d604 (patch)
treea4ea7c3b83a3af814eace38d9c02bd2f468d644d /proto/ospf/ospf.h
parent885b3d6127ae2c5c4f17d9dba95ffe67bdf7a688 (diff)
downloadbird-af157fa3dbe2bba0674eb7634efd3ade6c89d604.tar
bird-af157fa3dbe2bba0674eb7634efd3ade6c89d604.zip
Disable multiple OSPF pseudointerfaces on BSD.
Diffstat (limited to 'proto/ospf/ospf.h')
-rw-r--r--proto/ospf/ospf.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/proto/ospf/ospf.h b/proto/ospf/ospf.h
index 9e02d75..ef51b9f 100644
--- a/proto/ospf/ospf.h
+++ b/proto/ospf/ospf.h
@@ -772,6 +772,25 @@ struct ospf_iface_patt
#endif
};
+#if defined(OSPFv2) && !defined(CONFIG_MC_PROPER_SRC)
+static inline int
+ospf_iface_stubby(struct ospf_iface_patt *ip, struct ifa *addr)
+{
+ /*
+ * We cannot properly support multiple OSPF ifaces on real iface
+ * with multiple prefixes, therefore we force OSPF ifaces with
+ * non-primary IP prefixes to be stub.
+ */
+ return ip->stub || !(addr->flags & IA_PRIMARY);
+}
+#else
+static inline int
+ospf_iface_stubby(struct ospf_iface_patt *ip, struct ifa *addr UNUSED)
+{
+ return ip->stub;
+}
+#endif
+
int ospf_import_control(struct proto *p, rte **new, ea_list **attrs,
struct linpool *pool);
struct ea_list *ospf_make_tmp_attrs(struct rte *rt, struct linpool *pool);