m/n/c/network: configure given DNS servers
Actually configure the list of statically-configured DNS servers.
Change-Id: I174be38195db4e63af2dfe7499e3e721f7b54556
Reviewed-on: https://review.monogon.dev/c/monogon/+/1524
Tested-by: Jenkins CI
Reviewed-by: Leopold Schabel <leo@monogon.tech>
diff --git a/metropolis/node/core/network/static.go b/metropolis/node/core/network/static.go
index 29e3c48..0c694e7 100644
--- a/metropolis/node/core/network/static.go
+++ b/metropolis/node/core/network/static.go
@@ -18,6 +18,7 @@
"source.monogon.dev/go/algorithm/toposort"
"source.monogon.dev/metropolis/node/core/network/dhcp4c"
dhcpcb "source.monogon.dev/metropolis/node/core/network/dhcp4c/callback"
+ "source.monogon.dev/metropolis/node/core/network/dns"
"source.monogon.dev/metropolis/pkg/logtree"
"source.monogon.dev/metropolis/pkg/supervisor"
netpb "source.monogon.dev/net/proto"
@@ -115,6 +116,18 @@
}
l.Infof("Configured interface %q", i.Name)
}
+ var nsIPList []net.IP
+ for _, ns := range s.StaticConfig.Nameserver {
+ nsIP := net.ParseIP(ns.Ip)
+ if nsIP == nil {
+ l.Warningf("failed to parse %q as nameserver IP", ns.Ip)
+ }
+ nsIPList = append(nsIPList, nsIP)
+ }
+ if len(nsIPList) > 0 {
+ s.ConfigureDNS(dns.NewUpstreamDirective(nsIPList))
+ }
+
supervisor.Signal(ctx, supervisor.SignalHealthy)
supervisor.Signal(ctx, supervisor.SignalDone)
return nil