...
B1D - src any, local dst, nmr dst
- find peer_ni using dst_nid
- If this is a resend and peer_ni is unhealthy fail the send
- If this is an original send, then use the peer_ni even if it's not healthy.
- select the best_ni to send from by going through all the local nis that can reach the dst_nid
- consider local_ni health in the selection by selecting the local_ni with the best health value.
- If this is a resend do not select a local_ni that has already been used.
- send over that path
(Olaf) I'm thinking along these lines:
- find
peer_ni
usingdst_nid
(non-MR, so this is the onlypeer_ni
candidate)- no issue if
peer_ni
is healthy - try this
peer_ni
even if it is unhealthy if this is the 1st attempt to send this message - fail if resending to an unhealthy
peer_ni
- no issue if
- pick the preferred NI for this
peer_ni
if set- otherwise pick a healthy local NI and make it the preferred NI for this
peer_ni
- otherwise pick a healthy local NI and make it the preferred NI for this
- send over this path
B2D - src any, route dst, nmr dst
...