mirror of
https://github.com/lightningnetwork/lnd.git
synced 2026-08-13 12:32:48 +02:00
In this commit we add FindPath, a BFS-based shsortest-path algorithm that finds routes through the channel graph for onion messages. The search filters nodes by the OnionMessage feature bits (38/39). We also add a unit tests covering: direct neighbor routing, multi-hop paths, feature-bit filtering, missing destination nodes, destination without onion support, max hop limits, cycle handling, and shortest-path selection. choice of BFS is because there isn't any weight involve.
33 lines
1.2 KiB
Go
33 lines
1.2 KiB
Go
package onionmessage
|
|
|
|
import "errors"
|
|
|
|
var (
|
|
// ErrActorShuttingDown is returned by the actor logic when its context
|
|
// is cancelled.
|
|
ErrActorShuttingDown = errors.New("actor shutting down")
|
|
|
|
// ErrNextNodeIdEmpty is returned when the next node ID is missing from
|
|
// the route data.
|
|
ErrNextNodeIdEmpty = errors.New("next node ID empty")
|
|
|
|
// ErrSCIDEmpty is returned when the short channel ID is missing from
|
|
// the route data.
|
|
ErrSCIDEmpty = errors.New("short channel ID empty")
|
|
|
|
// ErrSamePeerCycle is returned when a forwarding onion message
|
|
// would be sent back to the same peer it was received from.
|
|
ErrSamePeerCycle = errors.New("onion message cycle: next " +
|
|
"hop is the sending peer")
|
|
// ErrNoPathFound is returned when no path exists between the source
|
|
// and destination nodes that supports onion messaging.
|
|
ErrNoPathFound = errors.New("no path found to destination")
|
|
|
|
// ErrDestinationNoOnionSupport is returned when the destination node
|
|
// does not advertise support for onion messages.
|
|
ErrDestinationNoOnionSupport = errors.New("destination does not " +
|
|
"support onion messages")
|
|
|
|
// ErrNodeNotFound is returned when the node is not found in the graph.
|
|
ErrNodeNotFound = errors.New("node not found in graph")
|
|
)
|