Route Constrain policies
[bgpcep.git] / bgp / openconfig-rp-spi / src / main / java / org / opendaylight / protocol / bgp / openconfig / routing / policy / spi / policy / condition / ConditionsPolicy.java
1 /*
2  * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8
9 package org.opendaylight.protocol.bgp.openconfig.routing.policy.spi.policy.condition;
10
11 import javax.annotation.Nonnull;
12 import javax.annotation.Nullable;
13 import org.opendaylight.protocol.bgp.openconfig.routing.policy.spi.RouteEntryBaseAttributes;
14 import org.opendaylight.protocol.bgp.rib.spi.policy.BGPRouteEntryExportParameters;
15 import org.opendaylight.protocol.bgp.rib.spi.policy.BGPRouteEntryImportParameters;
16 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.types.rev151009.AfiSafiType;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.path.attributes.Attributes;
18
19 /**
20  * Condition Policy: Check if route matches defined condition.
21  */
22 public interface ConditionsPolicy<T, N> {
23     /**
24      * Check if route matches defined condition (Import Policy).
25      *
26      * @param afiSafiType                Afi Safi Type
27      * @param routeEntryInfo             contains route Entry Info(AS, ClusterId, OriginatorId)
28      * @param routeEntryImportParameters contains route basic information
29      * @param attributes                 attributes
30      * @param conditions                 configured conditions
31      * @return true if all defined condition matches
32      */
33     boolean matchImportCondition(
34             @Nonnull Class<? extends AfiSafiType> afiSafiType,
35             @Nonnull RouteEntryBaseAttributes routeEntryInfo,
36             @Nonnull BGPRouteEntryImportParameters routeEntryImportParameters,
37             @Nullable N attributes,
38             @Nonnull T conditions);
39
40     /**
41      * Check if route matches defined condition (Export Policy).
42      *
43      * @param afiSafiType                Afi Safi Type
44      * @param routeEntryInfo             contains route Entry Info(AS, ClusterId, OriginatorId)
45      * @param routeEntryExportParameters route basic export information
46      * @param attributes                 attributes
47      * @param conditions                 configured conditions
48      * @return true if all defined condition matches
49      */
50     boolean matchExportCondition(
51             @Nonnull Class<? extends AfiSafiType> afiSafiType,
52             @Nonnull RouteEntryBaseAttributes routeEntryInfo,
53             @Nonnull BGPRouteEntryExportParameters routeEntryExportParameters,
54             @Nullable N attributes,
55             T conditions);
56
57     /**
58      * Returns the specific attribute to check if match condition.
59      *
60      * @param attributes route attributes
61      * @return specific attribute
62      */
63     @Nullable
64     N getConditionParameter(@Nonnull Attributes attributes);
65 }