summaryrefslogtreecommitdiff
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
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.
-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;