diff options
author | Ondrej Zajicek (work) <santiago@crfreenet.org> | 2019-01-02 15:57:14 +0100 |
---|---|---|
committer | Ondrej Zajicek (work) <santiago@crfreenet.org> | 2019-01-02 15:57:14 +0100 |
commit | e16b0aef31adf7000c22430adc3ceb9fc969ae14 (patch) | |
tree | f992514274dc060db8ffe0136a5e1ad6f3fd7004 | |
parent | 4659b2ae45672868646900c81c963da221363b40 (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.c | 4 |
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; |