summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--policy/policy.go20
1 files changed, 19 insertions, 1 deletions
diff --git a/policy/policy.go b/policy/policy.go
index 259712ec..ab1d2b1a 100644
--- a/policy/policy.go
+++ b/policy/policy.go
@@ -69,7 +69,7 @@ func NewPolicy(pd config.PolicyDefinition, ds config.DefinedSets) *Policy {
}
for _, statement := range stmtList {
-
+ fmt.Println(statement.Conditions.BgpConditions)
conditions := make([]Condition, 0)
// prefix match
@@ -91,6 +91,10 @@ func NewPolicy(pd config.PolicyDefinition, ds config.DefinedSets) *Policy {
conditions = append(conditions, ac)
}
+ if statement.Conditions.BgpConditions.RpkiValidationResult != config.RPKI_VALIDATION_RESULT_TYPE_NONE {
+ conditions = append(conditions, NewRPKIValidationCondition(statement.Conditions.BgpConditions.RpkiValidationResult))
+ }
+
bgpDefset := &ds.BgpDefinedSets
bgpConditions := &statement.Conditions.BgpConditions
// AsPathCondition
@@ -972,6 +976,20 @@ func (c *ExtCommunityCondition) evaluate(path *table.Path) bool {
return result
}
+type RPKIValidationCondition struct {
+ result config.RpkiValidationResultType
+}
+
+func NewRPKIValidationCondition(result config.RpkiValidationResultType) *RPKIValidationCondition {
+ return &RPKIValidationCondition{
+ result: result,
+ }
+}
+
+func (c *RPKIValidationCondition) evaluate(path *table.Path) bool {
+ return c.result == path.Validation
+}
+
type Action interface {
apply(*table.Path) *table.Path
}