diff options
Diffstat (limited to 'policy/policy.go')
-rw-r--r-- | policy/policy.go | 20 |
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 } |