package cmd import ( "net" "net/netip" "github.com/charmbracelet/log" ) func runServer(server func(net.Listener) error) { if proto != "tcp" && proto != "udp" { log.Fatal("unsupported protocol, must be either tcp or udp") } if v6 { proto += "6" } addr, ok := netip.AddrFromSlice(ip) if !ok { log.Fatal("invalid ip") } ap := netip.AddrPortFrom(addr, port) listener, err := net.Listen(proto, ap.String()) if err != nil { log.Fatal("unable to listen", "err", err) } log.Info("starting server", "proto", proto, "ip", ip, "port", port) err = server(listener) if err != nil { log.Fatal("error while handling connections", "err", err) } }