b6e72acb0d4c41a1d87c73a9b362634b19277400
[bgpcep.git] / bgp / rib-spi / src / main / java / org / opendaylight / protocol / bgp / rib / spi / policy / BGPRibRoutingPolicy.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 package org.opendaylight.protocol.bgp.rib.spi.policy;
9
10 import java.util.Optional;
11 import javax.annotation.Nonnull;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev171207.path.attributes.Attributes;
13
14 /**
15  * Interface for BGP RIB Routing Policy. Apply Import/Export Routing Policy to route attributes.
16  */
17 public interface BGPRibRoutingPolicy {
18     /**
19      * Apply import policy to route attributes.
20      *
21      * @param policyParameters containing attributes and sender peer information
22      * @param attributes       Route attributes
23      * @return modified route attributes after apply policies
24      */
25     @Nonnull
26     Optional<Attributes> applyImportPolicies(
27             @Nonnull BGPRouteEntryImportParameters policyParameters,
28             @Nonnull Attributes attributes
29     );
30
31     /**
32      * Apply export policy to route attributes.
33      *
34      * @param policyParameters containing attributes and sender/receiver peer information
35      * @param attributes       Route attributes
36      * @return modified route attributes after apply policies
37      */
38     @Nonnull
39     Optional<Attributes> applyExportPolicies(
40             @Nonnull BGPRouteEntryExportParameters policyParameters,
41             @Nonnull Attributes attributes
42     );
43 }