summaryrefslogtreecommitdiff
path: root/proto/bgp/bgp.c
diff options
context:
space:
mode:
authorAlexander Zubkov <green@qrator.net>2024-02-07 19:11:10 +0100
committerOndrej Zajicek <santiago@crfreenet.org>2024-02-07 19:11:10 +0100
commit574d7eb241a60622b0573ab1460cb23d968ba1cc (patch)
treeb17bc117bad5762d520ae91d003c44137918368c /proto/bgp/bgp.c
parent0b52f7c01f55707b25eebd0a66c48eafe06fe455 (diff)
BGP: Allow multiple EBGP neighbors with the same peer.
We can distinguish BGP sessions if at least one side uses a different IP address. Extend olock mechanism to handle local IP as a part of key, with optional wildcard, so BGP sessions could local IP in the olock and not block themselves.
Diffstat (limited to 'proto/bgp/bgp.c')
-rw-r--r--proto/bgp/bgp.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/proto/bgp/bgp.c b/proto/bgp/bgp.c
index cd57c32b..e97b45e6 100644
--- a/proto/bgp/bgp.c
+++ b/proto/bgp/bgp.c
@@ -1616,6 +1616,7 @@ bgp_start(struct proto *P)
struct object_lock *lock;
lock = p->lock = olock_new(P->pool);
lock->addr = p->remote_ip;
+ lock->addr_local = p->cf->local_ip;
lock->port = p->cf->remote_port;
lock->iface = p->cf->iface;
lock->vrf = p->cf->iface ? NULL : p->p.vrf;