summaryrefslogtreecommitdiffstats
path: root/proto/bgp
diff options
context:
space:
mode:
authorOndrej Zajicek <santiago@crfreenet.org>2009-04-29 22:17:40 +0200
committerOndrej Zajicek <santiago@crfreenet.org>2009-04-29 22:17:40 +0200
commitb7a735ea9d14ceb5c31712fbe122b54f0d7ec6e7 (patch)
tree90ea968fe37b2620b1cc4ec3a7f80f1cc4f24f12 /proto/bgp
parent4827b69ff43661f4f34d437999b0edaac76f7355 (diff)
downloadbird-b7a735ea9d14ceb5c31712fbe122b54f0d7ec6e7.tar
bird-b7a735ea9d14ceb5c31712fbe122b54f0d7ec6e7.zip
Allow 'third party' BGP updates for originated routes.
Diffstat (limited to 'proto/bgp')
-rw-r--r--proto/bgp/attrs.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/proto/bgp/attrs.c b/proto/bgp/attrs.c
index 585bfd1..8a849e7 100644
--- a/proto/bgp/attrs.c
+++ b/proto/bgp/attrs.c
@@ -788,8 +788,8 @@ bgp_create_attrs(struct bgp_proto *p, rte *e, ea_list **attrs, struct linpool *p
z = bgp_set_attr_wa(ea->attrs+2, pool, BA_NEXT_HOP, NEXT_HOP_LENGTH);
if (p->cf->next_hop_self ||
- !p->is_internal ||
- rta->dest != RTD_ROUTER)
+ rta->dest != RTD_ROUTER ||
+ (!p->is_internal && (e->attrs->iface != p->neigh->iface)))
set_next_hop(z, p->source_addr);
else
set_next_hop(z, e->attrs->gw);