-func serve(nbii *nbi.NbiEngineConfig, sbii *sbi.SbiEngineConfig, sdli *sdl.SdlEngineConfig, rpei *rpe.RpeEngineConfig) {
- err := sbii.OpenSocket(*args["sbi-if"])
+func serveSBI(triggerSBI <-chan bool, sbiEngine sbi.Engine, sdlEngine sdl.Engine, rpeEngine rpe.Engine) {
+ for {
+ if <-triggerSBI {
+ data, err := sdlEngine.ReadAll(*args["filename"])
+ if err != nil || data == nil {
+ rtmgr.Logger.Error("Cannot get data from sdl interface due to: " + err.Error())
+ continue
+ }
+ sbiEngine.UpdateEndpoints(data)
+ policies := rpeEngine.GeneratePolicies(rtmgr.Eps)
+ err = sbiEngine.DistributeAll(policies)
+ if err != nil {
+ rtmgr.Logger.Error("Routing table cannot be published due to: " + err.Error())
+ }
+ }
+ }
+}
+
+func serve(nbiEngine nbi.Engine, sbiEngine sbi.Engine, sdlEngine sdl.Engine, rpeEngine rpe.Engine) {
+
+ triggerSBI := make(chan bool)
+
+ nbiErr := nbiEngine.Initialize(*args["xm-url"], *args["nbi-if"], *args["filename"], *args["configfile"],
+ sdlEngine, rpeEngine, triggerSBI)
+ if nbiErr != nil {
+ rtmgr.Logger.Error("Failed to initialize nbi due to: " + nbiErr.Error())
+ return
+ }
+
+ err := sbiEngine.Initialize(*args["sbi-if"])