func NewUIServer(host string, daemon *daemon.Daemon) (Server, error) { router := NewUIRouter(daemon) netStr, listAddr, err := common.ParseHost(host) if err != nil { return nil, err } listener, err := net.ListenTCP(netStr, listAddr) if err != nil { return nil, fmt.Errorf("failed to create listener socket: %s", err) } return server{listener, host, router}, nil }
func (d *Daemon) GetUIIP() (*net.TCPAddr, error) { _, listAddr, err := common.ParseHost(d.conf.UIServerAddr) return listAddr, err }
func initEnv(ctx *cli.Context) error { config.OptsMU.Lock() if ctx.GlobalBool("debug") { common.SetupLOG(log, "DEBUG") config.Opts.Set(endpoint.OptionDebug, true) } else { common.SetupLOG(log, "INFO") } config.Opts.Set(endpoint.OptionDropNotify, true) config.Opts.Set(endpoint.OptionNAT46, true) config.Opts.Set(daemon.OptionPolicyTracing, enableTracing) config.Opts.Set(endpoint.OptionConntrack, !disableConntrack) config.Opts.Set(endpoint.OptionConntrackAccounting, !disableConntrack) config.Opts.Set(endpoint.OptionPolicy, !disablePolicy) config.OptsMU.Unlock() config.ValidLabelPrefixesMU.Lock() if labelPrefixFile != "" { var err error config.ValidLabelPrefixes, err = labels.ReadLabelPrefixCfgFrom(labelPrefixFile) if err != nil { log.Fatalf("Unable to read label prefix file: %s\n", err) } } else { config.ValidLabelPrefixes = labels.DefaultLabelPrefixCfg() } config.ValidLabelPrefixesMU.Unlock() _, r, err := net.ParseCIDR(nat46prefix) if err != nil { log.Fatalf("Invalid NAT46 prefix %s: %s", nat46prefix, err) } config.NAT46Prefix = r nodeAddress, err := addressing.NewNodeAddress(v6Address, v4Prefix, config.Device) if err != nil { log.Fatalf("Unable to parse node address: %s", err) } config.NodeAddress = nodeAddress // Mount BPF Map directory if not already done args := []string{"-q", common.BPFMapRoot} _, err = exec.Command("mountpoint", args...).CombinedOutput() if err != nil { args = []string{"bpffs", common.BPFMapRoot, "-t", "bpf"} out, err := exec.Command("mount", args...).CombinedOutput() if err != nil { log.Fatalf("Command execution failed: %s\n%s", err, out) } } if config.IsK8sEnabled() && !strings.HasPrefix(config.K8sEndpoint, "http") { config.K8sEndpoint = "http://" + config.K8sEndpoint } if uiServerAddr != "" { if _, _, err := common.ParseHost(uiServerAddr); err != nil { log.Fatalf("Invalid UI server address and port address '%s': %s", uiServerAddr, err) } config.UIServerAddr = uiServerAddr } return nil }