summaryrefslogtreecommitdiffhomepage
path: root/api/grpc_server.go
diff options
context:
space:
mode:
Diffstat (limited to 'api/grpc_server.go')
-rw-r--r--api/grpc_server.go22
1 files changed, 18 insertions, 4 deletions
diff --git a/api/grpc_server.go b/api/grpc_server.go
index 3b8f2fe4..1d8cca6a 100644
--- a/api/grpc_server.go
+++ b/api/grpc_server.go
@@ -26,13 +26,14 @@ import (
"sync"
"time"
+ log "github.com/sirupsen/logrus"
+ "golang.org/x/net/context"
+ "google.golang.org/grpc"
+
"github.com/osrg/gobgp/config"
"github.com/osrg/gobgp/packet/bgp"
"github.com/osrg/gobgp/server"
"github.com/osrg/gobgp/table"
- log "github.com/sirupsen/logrus"
- "golang.org/x/net/context"
- "google.golang.org/grpc"
)
type Server struct {
@@ -345,6 +346,18 @@ func (s *Server) GetNeighbor(ctx context.Context, arg *GetNeighborRequest) (*Get
return &GetNeighborResponse{Peers: p}, nil
}
+func NewValidationFromTableStruct(v *table.Validation) *RPKIValidation {
+ if v == nil {
+ return &RPKIValidation{}
+ }
+ return &RPKIValidation{
+ Reason: RPKIValidation_Reason(v.Reason.ToInt()),
+ Matched: NewRoaListFromTableStructList(v.Matched),
+ UnmatchedAs: NewRoaListFromTableStructList(v.UnmatchedAs),
+ UnmatchedLength: NewRoaListFromTableStructList(v.UnmatchedLength),
+ }
+}
+
func ToPathApi(path *table.Path) *Path {
nlri := path.GetNlri()
n, _ := nlri.Serialize()
@@ -362,7 +375,8 @@ func ToPathApi(path *table.Path) *Path {
Pattrs: pattrs,
Age: path.GetTimestamp().Unix(),
IsWithdraw: path.IsWithdraw,
- Validation: int32(path.Validation().ToInt()),
+ Validation: int32(path.ValidationStatus().ToInt()),
+ ValidationDetail: NewValidationFromTableStruct(path.Validation()),
Filtered: path.Filtered("") == table.POLICY_DIRECTION_IN,
Family: family,
Stale: path.IsStale(),