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 /proto | |
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.
Diffstat (limited to 'proto')
-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; |