Unverified Commit 9a5c1000 authored by zeim839's avatar zeim839 Committed by GitHub

cmd/geth, p2p: add support for custom discovery UDP port (#24979)

This adds a new flag to set the discovery port to be different from
the TCP listener port.
Co-authored-by: 's avatarFelix Lange <fjl@twurst.com>
parent 1438e7c3
...@@ -119,6 +119,7 @@ var ( ...@@ -119,6 +119,7 @@ var (
utils.CachePreimagesFlag, utils.CachePreimagesFlag,
utils.FDLimitFlag, utils.FDLimitFlag,
utils.ListenPortFlag, utils.ListenPortFlag,
utils.DiscoveryPortFlag,
utils.MaxPeersFlag, utils.MaxPeersFlag,
utils.MaxPendingPeersFlag, utils.MaxPendingPeersFlag,
utils.MiningEnabledFlag, utils.MiningEnabledFlag,
......
...@@ -835,6 +835,12 @@ var ( ...@@ -835,6 +835,12 @@ var (
Usage: "Sets DNS discovery entry points (use \"\" to disable DNS)", Usage: "Sets DNS discovery entry points (use \"\" to disable DNS)",
Category: flags.NetworkingCategory, Category: flags.NetworkingCategory,
} }
DiscoveryPortFlag = &cli.IntFlag{
Name: "discovery.port",
Usage: "Use a custom UDP port for P2P discovery",
Value: 30303,
Category: flags.NetworkingCategory,
}
// Console // Console
JSpathFlag = &flags.DirectoryFlag{ JSpathFlag = &flags.DirectoryFlag{
...@@ -1116,12 +1122,15 @@ func setBootstrapNodesV5(ctx *cli.Context, cfg *p2p.Config) { ...@@ -1116,12 +1122,15 @@ func setBootstrapNodesV5(ctx *cli.Context, cfg *p2p.Config) {
} }
} }
// setListenAddress creates a TCP listening address string from set command // setListenAddress creates TCP/UDP listening address strings from set command
// line flags. // line flags
func setListenAddress(ctx *cli.Context, cfg *p2p.Config) { func setListenAddress(ctx *cli.Context, cfg *p2p.Config) {
if ctx.IsSet(ListenPortFlag.Name) { if ctx.IsSet(ListenPortFlag.Name) {
cfg.ListenAddr = fmt.Sprintf(":%d", ctx.Int(ListenPortFlag.Name)) cfg.ListenAddr = fmt.Sprintf(":%d", ctx.Int(ListenPortFlag.Name))
} }
if ctx.IsSet(DiscoveryPortFlag.Name) {
cfg.DiscAddr = fmt.Sprintf(":%d", ctx.Int(DiscoveryPortFlag.Name))
}
} }
// setNAT creates a port mapper from command line flags. // setNAT creates a port mapper from command line flags.
......
...@@ -136,6 +136,10 @@ type Config struct { ...@@ -136,6 +136,10 @@ type Config struct {
// the server is started. // the server is started.
ListenAddr string ListenAddr string
// If DiscAddr is set to a non-nil value, the server will use ListenAddr
// for TCP and DiscAddr for the UDP discovery protocol.
DiscAddr string
// If set to a non-nil value, the given NAT port mapper // If set to a non-nil value, the given NAT port mapper
// is used to make the listening port available to the // is used to make the listening port available to the
// Internet. // Internet.
...@@ -549,7 +553,15 @@ func (srv *Server) setupDiscovery() error { ...@@ -549,7 +553,15 @@ func (srv *Server) setupDiscovery() error {
return nil return nil
} }
addr, err := net.ResolveUDPAddr("udp", srv.ListenAddr) listenAddr := srv.ListenAddr
// Use an alternate listening address for UDP if
// a custom discovery address is configured.
if srv.DiscAddr != "" {
listenAddr = srv.DiscAddr
}
addr, err := net.ResolveUDPAddr("udp", listenAddr)
if err != nil { if err != nil {
return err return err
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment