소스 검색

Merge pull request #5 from repos-holder/master

Fixes for DHCP
Ettore Di Giacinto 3 년 전
부모
커밋
0e26c2cbce
2개의 변경된 파일17개의 추가작업 그리고 12개의 파일을 삭제
  1. 15 10
      cmd/main.go
  2. 2 2
      pkg/vpn/dhcp.go

+ 15 - 10
cmd/main.go

@@ -21,6 +21,7 @@ import (
 	"os"
 	"os"
 	"path/filepath"
 	"path/filepath"
 	"time"
 	"time"
+	"net"
 
 
 	"github.com/mudler/edgevpn/api"
 	"github.com/mudler/edgevpn/api"
 	edgevpn "github.com/mudler/edgevpn/pkg/node"
 	edgevpn "github.com/mudler/edgevpn/pkg/node"
@@ -63,6 +64,10 @@ func MainFlags() []cli.Flag {
 			Value: ":8080",
 			Value: ":8080",
 			Usage: "API listening port",
 			Usage: "API listening port",
 		},
 		},
+		&cli.BoolFlag{
+			Name:   "dhcp",
+			Usage:  "Enables p2p ip negotiation (experimental)",
+		},
 		&cli.StringFlag{
 		&cli.StringFlag{
 			Name:  "lease-dir",
 			Name:  "lease-dir",
 			Value: filepath.Join(basedir, ".edgevpn", "leases"),
 			Value: filepath.Join(basedir, ".edgevpn", "leases"),
@@ -70,8 +75,9 @@ func MainFlags() []cli.Flag {
 		},
 		},
 		&cli.StringFlag{
 		&cli.StringFlag{
 			Name:   "address",
 			Name:   "address",
-			Usage:  "VPN virtual address, e.g. 10.1.0.1/24. No address specified enables p2p ip negotiation (experimental)",
+			Usage:  "VPN virtual address",
 			EnvVar: "ADDRESS",
 			EnvVar: "ADDRESS",
+			Value:  "10.1.0.1/24",
 		},
 		},
 		&cli.StringFlag{
 		&cli.StringFlag{
 			Name:   "router",
 			Name:   "router",
@@ -101,15 +107,14 @@ func Main() func(c *cli.Context) error {
 		}
 		}
 		o, vpnOpts, ll := cliToOpts(c)
 		o, vpnOpts, ll := cliToOpts(c)
 
 
-		if c.String("address") == "" {
-			nodeOpts, vO := vpn.DHCP(ll, 10*time.Second, c.String("lease-dir"))
-			o = append(
-				append(
-					o,
-					services.Alive(30*time.Second)...,
-				),
-				nodeOpts...,
-			)
+		o = append(o, services.Alive(30*time.Second)...)
+		if c.Bool("dhcp") {
+			address, _, err := net.ParseCIDR(c.String("address"));
+			if err != nil {
+				return err
+			}
+			nodeOpts, vO := vpn.DHCP(ll, 10*time.Second, c.String("lease-dir"), address.String())
+			o = append(o, nodeOpts...,)
 			vpnOpts = append(vpnOpts, vO...)
 			vpnOpts = append(vpnOpts, vO...)
 		}
 		}
 
 

+ 2 - 2
pkg/vpn/dhcp.go

@@ -45,7 +45,7 @@ func checkDHCPLease(c node.Config, leasedir string) string {
 	return ""
 	return ""
 }
 }
 
 
-func DHCP(l log.StandardLogger, announcetime time.Duration, leasedir string) ([]node.Option, []Option) {
+func DHCP(l log.StandardLogger, announcetime time.Duration, leasedir string, address string) ([]node.Option, []Option) {
 	ip := make(chan string, 1)
 	ip := make(chan string, 1)
 	return []node.Option{
 	return []node.Option{
 			func(cfg *node.Config) error {
 			func(cfg *node.Config) error {
@@ -110,7 +110,7 @@ func DHCP(l log.StandardLogger, announcetime time.Duration, leasedir string) ([]
 						// We are lead
 						// We are lead
 						l.Debug("picking up between", ips)
 						l.Debug("picking up between", ips)
 
 
-						wantedIP = utils.NextIP("10.1.0.1", ips)
+						wantedIP = utils.NextIP(address, ips)
 					}
 					}
 
 
 					// Save lease to disk
 					// Save lease to disk