|
|
|
@ -46,6 +46,7 @@ import ( |
|
|
|
|
"github.com/ethereum/go-ethereum/metrics" |
|
|
|
|
"github.com/ethereum/go-ethereum/node" |
|
|
|
|
"github.com/ethereum/go-ethereum/p2p/discover" |
|
|
|
|
"github.com/ethereum/go-ethereum/p2p/discv5" |
|
|
|
|
"github.com/ethereum/go-ethereum/p2p/nat" |
|
|
|
|
"github.com/ethereum/go-ethereum/params" |
|
|
|
|
"github.com/ethereum/go-ethereum/pow" |
|
|
|
@ -505,13 +506,36 @@ func MakeBootstrapNodes(ctx *cli.Context) []*discover.Node { |
|
|
|
|
return bootnodes |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// MakeBootstrapNodesV5 creates a list of bootstrap nodes from the command line
|
|
|
|
|
// flags, reverting to pre-configured ones if none have been specified.
|
|
|
|
|
func MakeBootstrapNodesV5(ctx *cli.Context) []*discv5.Node { |
|
|
|
|
// Return pre-configured nodes if none were manually requested
|
|
|
|
|
if !ctx.GlobalIsSet(BootnodesFlag.Name) { |
|
|
|
|
return DiscoveryV5Bootnodes |
|
|
|
|
} |
|
|
|
|
// Otherwise parse and use the CLI bootstrap nodes
|
|
|
|
|
bootnodes := []*discv5.Node{} |
|
|
|
|
|
|
|
|
|
for _, url := range strings.Split(ctx.GlobalString(BootnodesFlag.Name), ",") { |
|
|
|
|
node, err := discv5.ParseNode(url) |
|
|
|
|
if err != nil { |
|
|
|
|
glog.V(logger.Error).Infof("Bootstrap URL %s: %v\n", url, err) |
|
|
|
|
continue |
|
|
|
|
} |
|
|
|
|
bootnodes = append(bootnodes, node) |
|
|
|
|
} |
|
|
|
|
return bootnodes |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// MakeListenAddress creates a TCP listening address string from set command
|
|
|
|
|
// line flags.
|
|
|
|
|
func MakeListenAddress(ctx *cli.Context) string { |
|
|
|
|
return fmt.Sprintf(":%d", ctx.GlobalInt(ListenPortFlag.Name)) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func MakeListenAddressV5(ctx *cli.Context) string { |
|
|
|
|
// MakeDiscoveryV5Address creates a UDP listening address string from set command
|
|
|
|
|
// line flags for the V5 discovery protocol.
|
|
|
|
|
func MakeDiscoveryV5Address(ctx *cli.Context) string { |
|
|
|
|
return fmt.Sprintf(":%d", ctx.GlobalInt(ListenPortFlag.Name)+1) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -647,9 +671,10 @@ func MakeNode(ctx *cli.Context, name, gitCommit string) *node.Node { |
|
|
|
|
UserIdent: makeNodeUserIdent(ctx), |
|
|
|
|
NoDiscovery: ctx.GlobalBool(NoDiscoverFlag.Name) || ctx.GlobalBool(LightModeFlag.Name), |
|
|
|
|
DiscoveryV5: ctx.GlobalBool(DiscoveryV5Flag.Name) || ctx.GlobalBool(LightModeFlag.Name) || ctx.GlobalInt(LightServFlag.Name) > 0, |
|
|
|
|
DiscoveryV5Addr: MakeDiscoveryV5Address(ctx), |
|
|
|
|
BootstrapNodes: MakeBootstrapNodes(ctx), |
|
|
|
|
BootstrapNodesV5: MakeBootstrapNodesV5(ctx), |
|
|
|
|
ListenAddr: MakeListenAddress(ctx), |
|
|
|
|
ListenAddrV5: MakeListenAddressV5(ctx), |
|
|
|
|
NAT: MakeNAT(ctx), |
|
|
|
|
MaxPeers: ctx.GlobalInt(MaxPeersFlag.Name), |
|
|
|
|
MaxPendingPeers: ctx.GlobalInt(MaxPendingPeersFlag.Name), |
|
|
|
|