lnd/onionmessage/errors.go
Abdullahi Yunus fd25ba9853
onionmessage: add BFS pathfinding for onion messages
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.
2026-04-29 22:34:44 +01:00

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")
)