...

Source file src/edge-infra.dev/cmd/sds/daemonsetdns/main.go

Documentation: edge-infra.dev/cmd/sds/daemonsetdns

     1  package main
     2  
     3  import (
     4  	"os"
     5  	"os/signal"
     6  
     7  	syscall "golang.org/x/sys/unix"
     8  
     9  	"github.com/go-logr/logr"
    10  
    11  	"edge-infra.dev/pkg/lib/fog"
    12  	"edge-infra.dev/pkg/sds/k8s/daemonsetdns"
    13  	"edge-infra.dev/pkg/sds/k8s/iplookup"
    14  )
    15  
    16  // Creates a dns server with the given protocol and runs it
    17  func startDNSServer(net string, cl *iplookup.IPLookup, logger logr.Logger) {
    18  	server := daemonsetdns.Dnsserver(net, cl)
    19  	if err := server.ListenAndServe(); err != nil {
    20  		logger.Error(err, "Error occurred running DNS server")
    21  		os.Exit(1)
    22  	}
    23  }
    24  
    25  func main() {
    26  	log := fog.New().WithName("daemonsetdns")
    27  	log.Info("Starting server")
    28  
    29  	cl, err := iplookup.New()
    30  	if err != nil {
    31  		log.Error(err, "Unable to start iplookup client")
    32  	}
    33  
    34  	// start server for both tcp and udp
    35  	go startDNSServer("tcp", cl, log)
    36  	go startDNSServer("udp", cl, log)
    37  
    38  	sig := make(chan os.Signal, 1)
    39  	signal.Notify(sig, syscall.SIGINT, syscall.SIGTERM)
    40  	s := <-sig
    41  	log.Info("Signal received, stopping", "signal", s)
    42  }
    43  

View as plain text