package main import ( "os" "os/signal" syscall "golang.org/x/sys/unix" "github.com/go-logr/logr" "edge-infra.dev/pkg/lib/fog" "edge-infra.dev/pkg/sds/k8s/daemonsetdns" "edge-infra.dev/pkg/sds/k8s/iplookup" ) // Creates a dns server with the given protocol and runs it func startDNSServer(net string, cl *iplookup.IPLookup, logger logr.Logger) { server := daemonsetdns.Dnsserver(net, cl) if err := server.ListenAndServe(); err != nil { logger.Error(err, "Error occurred running DNS server") os.Exit(1) } } func main() { log := fog.New().WithName("daemonsetdns") log.Info("Starting server") cl, err := iplookup.New() if err != nil { log.Error(err, "Unable to start iplookup client") } // start server for both tcp and udp go startDNSServer("tcp", cl, log) go startDNSServer("udp", cl, log) sig := make(chan os.Signal, 1) signal.Notify(sig, syscall.SIGINT, syscall.SIGTERM) s := <-sig log.Info("Signal received, stopping", "signal", s) }