summaryrefslogtreecommitdiff
path: root/proto/bgp/bgp.c
diff options
context:
space:
mode:
authorOndrej Zajicek (work) <santiago@crfreenet.org>2019-01-02 15:57:14 +0100
committerOndrej Zajicek (work) <santiago@crfreenet.org>2019-01-02 15:57:14 +0100
commite16b0aef31adf7000c22430adc3ceb9fc969ae14 (patch)
treef992514274dc060db8ffe0136a5e1ad6f3fd7004 /proto/bgp/bgp.c
parent4659b2ae45672868646900c81c963da221363b40 (diff)
BGP: Postpone setting link_addr
It may happen that the LLv6 address for given iface is not defined during BGP start, so we postpone the check to the the session establishment.
Diffstat (limited to 'proto/bgp/bgp.c')
-rw-r--r--proto/bgp/bgp.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/proto/bgp/bgp.c b/proto/bgp/bgp.c
index fb6c9881..ceeec727 100644
--- a/proto/bgp/bgp.c
+++ b/proto/bgp/bgp.c
@@ -505,6 +505,10 @@ bgp_conn_enter_established_state(struct bgp_conn *conn)
if (ipa_zero(p->source_addr))
p->source_addr = conn->sk->saddr;
+ /* In case of LLv6 is not valid during BGP start */
+ if (ipa_zero(p->link_addr) && p->neigh && p->neigh->iface && p->neigh->iface->llv6)
+ p->link_addr = p->neigh->iface->llv6->ip;
+
conn->sk->fast_rx = 0;
p->conn = conn;