diff --git a/internal/dhcp/dhcp_test.go b/internal/dhcp/dhcp_test.go index 1681fec..94f1b78 100644 --- a/internal/dhcp/dhcp_test.go +++ b/internal/dhcp/dhcp_test.go @@ -52,10 +52,11 @@ func newConf(t *testing.T, cidr string) Config { t.Helper() _, network, _ := net.ParseCIDR(cidr) return Config{ - Network: network, - Gateway: net.ParseIP("192.168.1.1").To4(), - Name: "test", - ConfDir: t.TempDir(), + Network: network, + Gateway: net.ParseIP("192.168.1.1").To4(), + DefaultRoute: true, + Name: "test", + ConfDir: t.TempDir(), } } @@ -94,6 +95,17 @@ func TestGenerateConfig_ContainsGateway(t *testing.T) { } } +func TestGenerateConfig_NoDefaultRoute(t *testing.T) { + conf := newConf(t, "192.168.1.0/29") + conf.DefaultRoute = false + path, _, _ := GenerateConfig(conf) + content, _ := os.ReadFile(path) + + if strings.Contains(string(content), "dhcp-option=3,") { + t.Errorf("dhcp-option=3 présente alors que DefaultRoute=false :\n%s", content) + } +} + func TestGenerateConfig_ContainsDhcpRange(t *testing.T) { _, network, _ := net.ParseCIDR("10.10.0.0/24") conf := Config{ diff --git a/internal/dhcp/generate.go b/internal/dhcp/generate.go index 3c46fe2..90608f3 100644 --- a/internal/dhcp/generate.go +++ b/internal/dhcp/generate.go @@ -14,7 +14,9 @@ func GenerateConfig(c Config) (string, map[string]string, error) { var sb strings.Builder fmt.Fprintf(&sb, "no-resolv\n") fmt.Fprintf(&sb, "dhcp-range=%s,static,%s,12h\n", c.Network.IP.String(), mask) - fmt.Fprintf(&sb, "dhcp-option=3,%s\n", c.Gateway.String()) + if c.DefaultRoute { + fmt.Fprintf(&sb, "dhcp-option=3,%s\n", c.Gateway.String()) + } fmt.Fprintf(&sb, "dhcp-option=6,1.1.1.1,8.8.8.8\n\n") entries := make(map[string]string) diff --git a/internal/dhcp/struct.go b/internal/dhcp/struct.go index 4c69b9c..d73e052 100644 --- a/internal/dhcp/struct.go +++ b/internal/dhcp/struct.go @@ -5,8 +5,9 @@ import ( ) type Config struct { - Network *net.IPNet - Gateway net.IP - Name string - ConfDir string + Network *net.IPNet + Gateway net.IP + DefaultRoute bool + Name string + ConfDir string } diff --git a/internal/subnet/create.go b/internal/subnet/create.go index f161d98..8607328 100644 --- a/internal/subnet/create.go +++ b/internal/subnet/create.go @@ -136,10 +136,11 @@ func setupVxlanHost(d subnetData, vethE string) error { func startDHCP(db *badger.DB, subnetName string, d subnetData) error { conf := dhcp.Config{ - Network: d.cidr, - Gateway: d.interfaceIP, - Name: d.vpc + "_" + d.bridge, - ConfDir: "/etc/dnsmasq.d", + Network: d.cidr, + Gateway: d.interfaceIP, + DefaultRoute: d.mode == "vxlan", + Name: d.vpc + "_" + d.bridge, + ConfDir: "/etc/dnsmasq.d", } _, entries, err := dhcp.GenerateConfig(conf) if err != nil {