/*
 * Copyright (C) 2014 Red Hat, Inc.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
 * and is available at http://www.eclipse.org/legal/epl-v10.html
 *
 * Authors : Dave Tucker, Flavio Fernandes
 */

package org.opendaylight.ovsdb.openstack.netvirt.api;

import java.net.InetAddress;
import java.net.InterfaceAddress;
import java.util.Set;
import java.util.UUID;

/**
 * A MultiTenantForwardingProvider provides Multi-Tenant L3 Forwarding
 */
public interface MultiTenantRouterForwardingProvider {

  void addStaticArpEntry(UUID tenantId, String macAddress, InetAddress ipAddress);

  void addIpRewriteRule(UUID tenantId, InetAddress matchAddress, InetAddress rewriteAddress);

  void addRouterInterface(UUID tenantId, String macAddress, Set<InterfaceAddress> addresses);

  void addForwardingTableEntry(UUID tenantId, InetAddress ipAddress, String macAddress);

  void addDefaultRouteEntry(UUID tenantId, String macAddress, InetAddress nextHop);

}

@@ -363,16 +363,183 @@
 t.api;%0A%0A
+import org.opendaylight.controller.sal.core.Node;%0Aimport org.opendaylight.controller.sal.utils.Status;%0Aimport org.opendaylight.ovsdb.openstack.netvirt.AbstractEvent;%0A%0A
 import j
@@ -618,31 +618,8 @@
 Set;
-%0Aimport java.util.UUID;
 %0A%0A/*
@@ -757,451 +757,1144 @@
 %0A%0A  
-void addStaticArpEntry(UUID tenantId, String macAddress, InetAddress ipAddress);%0A%0A  void addIpRewriteRule(UUID tenantId, InetAddress matchAddress, InetAddress rewriteAddress);%0A%0A  void addRouterInterface(UUID tenantId, String macAddress, Set%3CInterfaceAddress%3E addresses);%0A%0A  void addForwardingTableEntry(UUID tenantId, InetAddress ipAddress, String macAddress);%0A%0A  void addDefaultRouteEntry(UUID tenantId, String macAddress, InetAddress nextHop
+  Status programStaticArpEntry(Node node, Long dpid, String segmentationId,%0A                                 String macAddress, InetAddress ipAddress, AbstractEvent.Action action);%0A%0A    Status programIpRewriteRule(Node node, Long dpid, String segmentationId, InetAddress matchAddress,%0A                                InetAddress rewriteAddress, AbstractEvent.Action action);%0A%0A    Status programIpRewriteExclusion(Node node, Long dpid, String segmentationId,%0A                                     InterfaceAddress excludedAddress, AbstractEvent.Action action);%0A%0A    Status programRouterInterface(Node node, Long dpid, String segmentationId, String macAddress,%0A                                  Set%3CInterfaceAddress%3E addresses, AbstractEvent.Action action);%0A%0A    Status programForwardingTableEntry(Node node, Long dpid, String segmentationId, InetAddress ipAddress,%0A                                       String macAddress, AbstractEvent.Action action);%0A%0A    Status programDefaultRouteEntry(Node node, Long dpid, String segmentationId, String macAddress,%0A                                    InetAddress nextHop, AbstractEvent.Action action
 );%0A%0A

Add node and dpid information to L3 Forwarding API