import java.net.InetAddress;
import java.util.List;
-import org.opendaylight.controller.sal.core.Node;
-import org.opendaylight.controller.sal.utils.Status;
-import org.opendaylight.controller.sal.utils.StatusCode;
import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
import org.opendaylight.ovsdb.openstack.netvirt.api.Constants;
+import org.opendaylight.ovsdb.openstack.netvirt.api.L2ForwardingProvider;
import org.opendaylight.ovsdb.openstack.netvirt.api.L3ForwardingProvider;
+import org.opendaylight.ovsdb.openstack.netvirt.api.Status;
+import org.opendaylight.ovsdb.openstack.netvirt.api.StatusCode;
+import org.opendaylight.ovsdb.openstack.netvirt.providers.ConfigInterface;
import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.OF13Provider;
import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.Service;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.Instruction;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.InstructionBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.InstructionKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder;
import com.google.common.collect.Lists;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
-public class L3ForwardingService extends AbstractServiceInstance implements L3ForwardingProvider {
+public class L3ForwardingService extends AbstractServiceInstance implements L3ForwardingProvider, ConfigInterface {
public L3ForwardingService() {
super(Service.L3_FORWARDING);
}
}
@Override
- public Status programForwardingTableEntry(Node node, Long dpid, String segmentationId, InetAddress ipAddress,
+ public Status programForwardingTableEntry(Long dpid, String segmentationId, InetAddress ipAddress,
String macAddress, Action action) {
String nodeName = Constants.OPENFLOW_NODE_PREFIX + dpid;
flowBuilder.setMatch(matchBuilder.build());
flowBuilder.setInstructions(isb.setInstruction(instructions).build());
- String flowId = "L3Forwarding_" + ipAddress.getHostAddress();
+ String flowId = "L3Forwarding_" + segmentationId + "_" + ipAddress.getHostAddress();
flowBuilder.setId(new FlowId(flowId));
FlowKey key = new FlowKey(new FlowId(flowId));
flowBuilder.setBarrier(true);
// ToDo: WriteFlow/RemoveFlow should return something we can use to check success
return new Status(StatusCode.SUCCESS);
}
+
+ @Override
+ public void setDependencies(BundleContext bundleContext, ServiceReference serviceReference) {
+ super.setOrchestrator(bundleContext.getServiceReference(L3ForwardingProvider.class.getName()), this);
+ }
+
+ @Override
+ public void setDependencies(Object impl) {
+
+ }
}