package routerrpc import ( "github.com/lightningnetwork/lnd/macaroons" "github.com/lightningnetwork/lnd/routing" ) // Config is the main configuration file for the router RPC server. It contains // all the items required for the router RPC server to carry out its duties. // The fields with struct tags are meant to be parsed as normal configuration // options, while if able to be populated, the latter fields MUST also be // specified. type Config struct { RoutingConfig // RouterMacPath is the path for the router macaroon. If unspecified // then we assume that the macaroon will be found under the network // directory, named DefaultRouterMacFilename. RouterMacPath string `long:"routermacaroonpath" description:"Path to the router macaroon"` // NetworkDir is the main network directory wherein the router rpc // server will find the macaroon named DefaultRouterMacFilename. NetworkDir string // MacService is the main macaroon service that we'll use to handle // authentication for the Router rpc server. MacService *macaroons.Service // Router is the main channel router instance that backs this RPC // server. // // TODO(roasbeef): make into pkg lvl interface? // // TODO(roasbeef): assumes router handles saving payment state Router *routing.ChannelRouter // RouterBackend contains shared logic between this sub server and the // main rpc server. RouterBackend *RouterBackend } // DefaultConfig defines the config defaults. func DefaultConfig() *Config { defaultRoutingConfig := RoutingConfig{ AprioriHopProbability: routing.DefaultAprioriHopProbability, AprioriWeight: routing.DefaultAprioriWeight, MinRouteProbability: routing.DefaultMinRouteProbability, PenaltyHalfLife: routing.DefaultPenaltyHalfLife, AttemptCost: routing.DefaultAttemptCost.ToSatoshis(), AttemptCostPPM: routing.DefaultAttemptCostPPM, MaxMcHistory: routing.DefaultMaxMcHistory, } return &Config{ RoutingConfig: defaultRoutingConfig, } } // GetRoutingConfig returns the routing config based on this sub server config. func GetRoutingConfig(cfg *Config) *RoutingConfig { return &RoutingConfig{ AprioriHopProbability: cfg.AprioriHopProbability, AprioriWeight: cfg.AprioriWeight, MinRouteProbability: cfg.MinRouteProbability, AttemptCost: cfg.AttemptCost, AttemptCostPPM: cfg.AttemptCostPPM, PenaltyHalfLife: cfg.PenaltyHalfLife, MaxMcHistory: cfg.MaxMcHistory, } }