Support for multiple route paths
[netvirt.git] / vpnservice / fibmanager / fibmanager-api / src / main / java / org / opendaylight / netvirt / fibmanager / api / IFibManager.java
index 4bca84fbca9830dde73618f4beccfc63d95149f9..2de386c710088d3fcdabaec194e20670a04164d6 100644 (file)
@@ -8,25 +8,82 @@
 
 package org.opendaylight.netvirt.fibmanager.api;
 
+import com.google.common.util.concurrent.FutureCallback;
+
 import java.math.BigInteger;
 import java.util.List;
 
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fibmanager.rev150330.RouterInterface;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fibmanager.rev150330.vrfentries.VrfEntry;
+
 public interface IFibManager {
-    void populateFibOnNewDpn(BigInteger dpnId, long vpnId, String rd);
-    void cleanUpDpnForVpn(BigInteger dpnId, long vpnId, String rd, String nextHopIp);
-    void populateFibOnDpn(BigInteger localDpnId, BigInteger destDpnId, long vpnId, String rd, String nextHopIp);
-    void cleanUpDpnForVpn(BigInteger dpnId, long vpnId, String rd);
+    void populateFibOnNewDpn(BigInteger dpnId, long vpnId, String rd,
+                             FutureCallback<List<Void>> callback);
+
+    void cleanUpExternalRoutesOnDpn(BigInteger dpnId, long vpnId, String rd,
+                                    String localNextHopIp, String remoteNextHopIp);
+
+    void populateExternalRoutesOnDpn(BigInteger localDpnId, long vpnId, String rd,
+                                     String localNextHopIp, String remoteNextHopIp);
+
+    void cleanUpInternalRoutesOnDpn(BigInteger dpnId, long vpnId, String rd,
+                                    String localNextHopIp, String remoteNextHopIp);
+
+    void populateInternalRoutesOnDpn(BigInteger localDpnId, long vpnId, String rd,
+                                     String localNextHopIp, String remoteNextHopIp);
+
+    void cleanUpDpnForVpn(BigInteger dpnId, long vpnId, String rd,
+                          FutureCallback<List<Void>> callback);
+
     List<String> printFibEntries();
 
     // TODO Feels like this method is not used anywhere
-    void addStaticRoute(String prefix, String nextHop, String rd, int label);
+    void addStaticRoute(String vpnName, String prefix, String nextHop, String rd, int label);
+
     void deleteStaticRoute(String prefix, String nextHop, String rd);
+
     void setConfTransType(String service, String transportType);
+
     String getConfTransType();
+
     boolean isVPNConfigured();
+
     void writeConfTransTypeConfigDS();
+
     String getReqTransType();
+
     String getTransportTypeStr(String tunType);
-    void handleRemoteRoute(boolean action, BigInteger localDpnId, BigInteger remoteDpnId,
-                           long vpnId, String rd, String destPrefix, String nextHopIp);
+
+    void manageRemoteRouteOnDPN(boolean action,
+                                BigInteger localDpnId,
+                                long vpnId,
+                                String rd,
+                                String destPrefix,
+                                String destTepIp,
+                                long label);
+
+    void addOrUpdateFibEntry(DataBroker broker, String rd, String macAddress, String prefix, List<String> nextHopList,
+                             VrfEntry.EncapType encapType, long label, long l3vni, String gwMacAddress,
+                             RouteOrigin origin, WriteTransaction writeConfigTxn);
+
+    void addFibEntryForRouterInterface(DataBroker broker, String rd, String prefix,
+                                       RouterInterface routerInterface, long label, WriteTransaction writeConfigTxn);
+
+    void removeOrUpdateFibEntry(DataBroker broker, String rd, String prefix, String nextHopToRemove,
+                                WriteTransaction writeConfigTxn);
+
+    void removeFibEntry(DataBroker broker, String rd, String prefix, WriteTransaction writeConfigTxn);
+
+    void updateFibEntry(DataBroker broker, String rd, String prefix, List<String> nextHopList,
+                        String gwMacAddress, long label, WriteTransaction writeConfigTxn);
+
+    void addVrfTable(DataBroker broker, String rd, WriteTransaction writeConfigTxn);
+
+    void removeVrfTable(DataBroker broker, String rd, WriteTransaction writeConfigTxn);
+
+    void removeInterVPNLinkRouteFlows(String interVpnLinkName,
+                                      boolean isVpnFirstEndPoint,
+                                      VrfEntry vrfEntry);
 }