71b81af13f9e870c99b52039da2069eeaa419206
[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.urn.opendaylight.params.xml.ns.yang.bgp.message.rev171207.path.attributes.Attributes;
17
18 /**
19  * Condition Policy: Check if route matches defined condition.
20  */
21 public interface ConditionsPolicy<T, N> {
22     /**
23      * Check if route matches defined condition (Import Policy).
24      *
25      * @param routeEntryInfo             contains route Entry Info(AS, ClusterId, OriginatorId)
26      * @param routeEntryImportParameters contains route basic information
27      * @param attributes                 attributes
28      * @param conditions                 configured conditions
29      * @return true if all defined condition matches
30      */
31     boolean matchImportCondition(
32             @Nonnull RouteEntryBaseAttributes routeEntryInfo,
33             @Nonnull BGPRouteEntryImportParameters routeEntryImportParameters,
34             @Nullable N attributes,
35             @Nonnull T conditions);
36
37     /**
38      * Check if route matches defined condition (Export Policy).
39      *
40      * @param routeEntryInfo             contains route Entry Info(AS, ClusterId, OriginatorId)
41      * @param routeEntryExportParameters route basic export information
42      * @param attributes                 attributes
43      * @param conditions                 configured conditions
44      * @return true if all defined condition matches
45      */
46     boolean matchExportCondition(
47             @Nonnull RouteEntryBaseAttributes routeEntryInfo,
48             @Nonnull BGPRouteEntryExportParameters routeEntryExportParameters,
49             @Nullable N attributes,
50             T conditions);
51
52     /**
53      * Returns the specific attribute to check if match condition.
54      *
55      * @param attributes route attributes
56      * @return specific attribute
57      */
58     @Nullable
59     N getConditionParameter(@Nonnull Attributes attributes);
60 }