summaryrefslogtreecommitdiff
path: root/proto
diff options
context:
space:
mode:
Diffstat (limited to 'proto')
-rw-r--r--proto/bgp/bgp.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/proto/bgp/bgp.c b/proto/bgp/bgp.c
index 0f1c9446..f706e76e 100644
--- a/proto/bgp/bgp.c
+++ b/proto/bgp/bgp.c
@@ -790,7 +790,7 @@ bgp_find_proto(sock *sk)
{
struct bgp_proto *p = (struct bgp_proto *) pc->proto;
if (ipa_equal(p->cf->remote_ip, sk->daddr) &&
- (!ipa_is_link_local(sk->daddr) || (p->cf->iface == sk->iface)))
+ (!p->cf->iface || (p->cf->iface == sk->iface)))
return p;
}
@@ -1324,11 +1324,8 @@ bgp_check_config(struct bgp_config *c)
if (!c->remote_as)
cf_error("Remote AS number must be set");
- // if (ipa_is_link_local(c->remote_ip) && !c->iface)
- // cf_error("Link-local neighbor address requires specified interface");
-
- if (!ipa_is_link_local(c->remote_ip) != !c->iface)
- cf_error("Link-local address and interface scope must be used together");
+ if (ipa_is_link_local(c->remote_ip) && !c->iface)
+ cf_error("Link-local neighbor address requires specified interface");
if (!(c->capabilities && c->enable_as4) && (c->remote_as > 0xFFFF))
cf_error("Neighbor AS number out of range (AS4 not available)");
@@ -1346,6 +1343,9 @@ bgp_check_config(struct bgp_config *c)
ipa_is_link_local(c->source_addr)))
cf_error("Multihop BGP cannot be used with link-local addresses");
+ if (c->multihop && c->iface)
+ cf_error("Multihop BGP cannot be bound to interface");
+
if (c->multihop && c->check_link)
cf_error("Multihop BGP cannot depend on link state");