func (s *Server) ModPath(stream api.Grpc_ModPathServer) error { for { arg, err := stream.Recv() if err == io.EOF { break } else if err != nil { return err } if arg.Resource != api.Resource_GLOBAL && arg.Resource != api.Resource_VRF { return fmt.Errorf("unsupported resource: %s", arg.Resource) } req := NewGrpcRequest(REQ_MOD_PATH, arg.Name, bgp.RouteFamily(0), arg) s.bgpServerCh <- req res := <-req.ResponseCh if err := res.Err(); err != nil { log.Debug(err.Error()) return err } } err := stream.SendAndClose(&api.Error{ Code: api.Error_SUCCESS, }) return err }
func (s *Server) ModPath(stream api.Grpc_ModPathServer) error { for { arg, err := stream.Recv() if err == io.EOF { break } else if err != nil { return err } if arg.Resource != api.Resource_GLOBAL { return fmt.Errorf("unsupported resource: %s", arg.Resource) } reqType := REQ_GLOBAL_ADD if arg.Path.IsWithdraw { reqType = REQ_GLOBAL_DELETE } rf, err := convertAf2Rf(arg.Path.Nlri.Af) if err != nil { return err } req := NewGrpcRequest(reqType, "", rf, arg.Path) s.bgpServerCh <- req res := <-req.ResponseCh if err := res.Err(); err != nil { log.Debug(err.Error()) return err } } err := stream.SendAndClose(&api.Error{ Code: api.Error_SUCCESS, }) return err }