Bug 6786: L3VPN is not honoring VTEP add or delete in operational cloud
[netvirt.git] / vpnservice / fibmanager / fibmanager-api / src / main / java / org / opendaylight / netvirt / fibmanager / api / IFibManager.java
1 /*
2  * Copyright (c) 2015 - 2016 Ericsson India Global Services Pvt Ltd. and others.  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.netvirt.fibmanager.api;
10
11 import com.google.common.util.concurrent.FutureCallback;
12 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
13 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
14 import java.math.BigInteger;
15 import java.util.List;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fibmanager.rev150330.vrfentries.VrfEntry;
17
18 public interface IFibManager {
19     void populateFibOnNewDpn(BigInteger dpnId, long vpnId, String rd,
20                              final FutureCallback<List<Void>> callback);
21     void cleanUpExternalRoutesOnDpn(BigInteger dpnId, long vpnId, String rd,
22                                     String localNextHopIp, String remoteNextHopIp);
23     void populateExternalRoutesOnDpn(BigInteger localDpnId, long vpnId, String rd,
24                                      String localNextHopIp, String remoteNextHopIp);
25     void cleanUpInternalRoutesOnDpn(final BigInteger dpnId, final long vpnId, final String rd,
26                                     final String localNextHopIp, final String remoteNextHopIp);
27     void populateInternalRoutesOnDpn(BigInteger localDpnId, long vpnId, String rd,
28                                      String localNextHopIp, String remoteNextHopIp);
29     void cleanUpDpnForVpn(BigInteger dpnId, long vpnId, String rd,
30                           final FutureCallback<List<Void>> callback);
31     List<String> printFibEntries();
32
33     // TODO Feels like this method is not used anywhere
34     void addStaticRoute(String prefix, String nextHop, String rd, int label);
35     void deleteStaticRoute(String prefix, String nextHop, String rd);
36     void setConfTransType(String service, String transportType);
37     String getConfTransType();
38     boolean isVPNConfigured();
39     void writeConfTransTypeConfigDS();
40     String getReqTransType();
41     String getTransportTypeStr(String tunType);
42
43     void manageRemoteRouteOnDPN(final boolean action,
44                                 BigInteger localDpnId,
45                                 long vpnId,
46                                 String  rd,
47                                 String destPrefix,
48                                 String destTepIp);
49
50     void addOrUpdateFibEntry(DataBroker broker, String rd, String prefix, List<String> nextHopList,
51                              int label, RouteOrigin origin, WriteTransaction writeConfigTxn);
52     void removeOrUpdateFibEntry(DataBroker broker, String rd, String prefix, String nextHopToRemove, WriteTransaction writeConfigTxn);
53     void removeFibEntry(DataBroker broker, String rd, String prefix, WriteTransaction writeConfigTxn);
54     void updateFibEntry(DataBroker broker, String rd, String prefix , List<String> nextHopList, WriteTransaction writeConfigTxn);
55     void addVrfTable(DataBroker broker, String rd, WriteTransaction writeConfigTxn);
56     void removeVrfTable(DataBroker broker, String rd, WriteTransaction writeConfigTxn);
57     void removeInterVPNLinkRouteFlows(final String interVpnLinkName,
58                                       final boolean isVpnFirstEndPoint,
59                                       final VrfEntry vrfEntry);
60 }