Merge branch 'master' of ssh://gerrit.onlab.us:29418/onos-next
diff --git a/core/api/src/main/java/org/onlab/onos/net/flow/Criteria.java b/core/api/src/main/java/org/onlab/onos/net/flow/Criteria.java
index 9595797..4717cc4 100644
--- a/core/api/src/main/java/org/onlab/onos/net/flow/Criteria.java
+++ b/core/api/src/main/java/org/onlab/onos/net/flow/Criteria.java
@@ -20,6 +20,18 @@
return null;
}
+ /**
+ * Creates a match on ETH_DST field using the specified value. This value
+ * may be a wildcard mask.
+ *
+ * @param macValue MAC address value or wildcard mask
+ * @return match criterion
+ */
+ public static Criterion matchEthDst(MACValue macValue) {
+ return null;
+ }
+
+
// Dummy to illustrate the concept for now; delete ASAP
private static class MACValue { }
}
diff --git a/core/api/src/main/java/org/onlab/onos/net/flow/FlowRule.java b/core/api/src/main/java/org/onlab/onos/net/flow/FlowRule.java
index 7204745..5f44630 100644
--- a/core/api/src/main/java/org/onlab/onos/net/flow/FlowRule.java
+++ b/core/api/src/main/java/org/onlab/onos/net/flow/FlowRule.java
@@ -2,14 +2,14 @@
import org.onlab.onos.net.DeviceId;
-import java.util.List;
-
/**
* Represents a generalized match & action pair to be applied to
* an infrastucture device.
*/
public interface FlowRule {
+ //TODO: build cookie value
+
/**
* Returns the flow rule priority given in natural order; higher numbers
* mean higher priorities.
@@ -38,6 +38,6 @@
*
* @return traffic treatment
*/
- List<Treatment> treatments();
+ TrafficTreatment treatment();
}
diff --git a/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProviderService.java b/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProviderService.java
index 76689c2..661b195 100644
--- a/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProviderService.java
+++ b/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProviderService.java
@@ -22,4 +22,11 @@
*/
void flowMissing(FlowRule flowRule);
+ /**
+ * Signals that a flow rule was indeed added.
+ *
+ * @param flowRule the added flow rule
+ */
+ void flowAdded(FlowRule flowRule);
+
}
diff --git a/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleService.java b/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleService.java
index ccb6a51..724051f 100644
--- a/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleService.java
+++ b/core/api/src/main/java/org/onlab/onos/net/flow/FlowRuleService.java
@@ -26,6 +26,15 @@
void applyFlowRules(FlowRule... flowRules);
/**
+ * Removes the specified flow rules from their respective devices.
+ *
+ * @param flowRules one or more flow rules
+ * throws SomeKindOfException that indicates which ones were removed and
+ * which ones failed
+ */
+ void removeFlowRules(FlowRule... flowRules);
+
+ /**
* Adds the specified flow rule listener.
*
* @param listener flow rule listener
diff --git a/core/api/src/main/java/org/onlab/onos/net/flow/TrafficSelector.java b/core/api/src/main/java/org/onlab/onos/net/flow/TrafficSelector.java
index c024e9c..9678dc1 100644
--- a/core/api/src/main/java/org/onlab/onos/net/flow/TrafficSelector.java
+++ b/core/api/src/main/java/org/onlab/onos/net/flow/TrafficSelector.java
@@ -24,8 +24,9 @@
* already been added, it will be replaced by this one.
*
* @param criterion new criterion
+ * @return self
*/
- void add(Criterion criterion);
+ Builder add(Criterion criterion);
/**
* Builds an immutable traffic selector.
diff --git a/core/api/src/main/java/org/onlab/onos/net/flow/TrafficTreatment.java b/core/api/src/main/java/org/onlab/onos/net/flow/TrafficTreatment.java
index 0eb5299..b8b9c10 100644
--- a/core/api/src/main/java/org/onlab/onos/net/flow/TrafficTreatment.java
+++ b/core/api/src/main/java/org/onlab/onos/net/flow/TrafficTreatment.java
@@ -25,7 +25,7 @@
*
* @param instruction new instruction
*/
- void add(Instruction instruction);
+ Builder add(Instruction instruction);
/**
* Builds an immutable traffic treatment descriptor.
diff --git a/core/api/src/main/java/org/onlab/onos/net/packet/PacketProcessor.java b/core/api/src/main/java/org/onlab/onos/net/packet/PacketProcessor.java
index a53a08c..fc77c94 100644
--- a/core/api/src/main/java/org/onlab/onos/net/packet/PacketProcessor.java
+++ b/core/api/src/main/java/org/onlab/onos/net/packet/PacketProcessor.java
@@ -1,10 +1,15 @@
package org.onlab.onos.net.packet;
+
/**
* Abstraction of an inbound packet processor.
*/
public interface PacketProcessor {
+ public static final int ADVISOR_MAX = Integer.MAX_VALUE / 3;
+ public static final int DIRECTOR_MAX = (Integer.MAX_VALUE / 3) * 2;
+ public static final int OBSERVER_MAX = Integer.MAX_VALUE;
+
/**
* Processes the inbound packet as specified in the given context.
*
diff --git a/core/api/src/main/java/org/onlab/onos/net/packet/PacketProvider.java b/core/api/src/main/java/org/onlab/onos/net/packet/PacketProvider.java
index 14597ee..738c801 100644
--- a/core/api/src/main/java/org/onlab/onos/net/packet/PacketProvider.java
+++ b/core/api/src/main/java/org/onlab/onos/net/packet/PacketProvider.java
@@ -1,9 +1,11 @@
package org.onlab.onos.net.packet;
+import org.onlab.onos.net.provider.Provider;
+
/**
* Abstraction of a packet provider capable of emitting packets.
*/
-public interface PacketProvider {
+public interface PacketProvider extends Provider{
/**
* Emits the specified outbound packet onto the network.
diff --git a/core/api/src/main/java/org/onlab/onos/net/packet/PacketProviderRegistry.java b/core/api/src/main/java/org/onlab/onos/net/packet/PacketProviderRegistry.java
new file mode 100644
index 0000000..86df510
--- /dev/null
+++ b/core/api/src/main/java/org/onlab/onos/net/packet/PacketProviderRegistry.java
@@ -0,0 +1,10 @@
+package org.onlab.onos.net.packet;
+
+import org.onlab.onos.net.provider.ProviderRegistry;
+
+/**
+ * Abstraction of an infrastructure packet provider registry.
+ */
+public interface PacketProviderRegistry
+extends ProviderRegistry<PacketProvider, PacketProviderService> {
+}
diff --git a/core/api/src/main/java/org/onlab/onos/net/packet/PacketProviderService.java b/core/api/src/main/java/org/onlab/onos/net/packet/PacketProviderService.java
index 1b58f3e..217ce1f 100644
--- a/core/api/src/main/java/org/onlab/onos/net/packet/PacketProviderService.java
+++ b/core/api/src/main/java/org/onlab/onos/net/packet/PacketProviderService.java
@@ -1,9 +1,11 @@
package org.onlab.onos.net.packet;
+import org.onlab.onos.net.provider.ProviderService;
+
/**
* Entity capable of processing inbound packets.
*/
-public interface PacketProviderService {
+public interface PacketProviderService extends ProviderService<PacketProvider>{
/**
* Submits inbound packet context for processing. This processing will be
diff --git a/core/api/src/main/java/org/onlab/onos/net/packet/PacketService.java b/core/api/src/main/java/org/onlab/onos/net/packet/PacketService.java
index 5debf1b..d2db536 100644
--- a/core/api/src/main/java/org/onlab/onos/net/packet/PacketService.java
+++ b/core/api/src/main/java/org/onlab/onos/net/packet/PacketService.java
@@ -18,7 +18,7 @@
* @throws java.lang.IllegalArgumentException if a processor with the
* given priority already exists
*/
- void addProcessor(PacketProcessor processor, long priority);
+ void addProcessor(PacketProcessor processor, int priority);
/**
* Removes the specified processor from the processing pipeline.