func run(be backend.Backend, exit chan int) { var err error defer func() { if err == nil || err == task.ErrCanceled { exit <- 0 } else { log.Error(err) exit <- 1 } }() iface, ipaddr, err := lookupIface() if err != nil { return } if iface.MTU == 0 { err = fmt.Errorf("Failed to determine MTU for %s interface", ipaddr) return } log.Infof("Using %s as external interface", ipaddr) sn, err := be.Init(iface, ipaddr, opts.ipMasq) if err != nil { log.Error("Could not init %v backend: %v", be.Name(), err) return } writeSubnetFile(sn) daemon.SdNotify("READY=1") log.Infof("%s mode initialized", be.Name()) be.Run() }