Support metadata in forwarding objective
Change-Id: Iaa916a8b2749bec6b9db42fe3f3765b922bd921b
diff --git a/core/api/src/main/java/org/onosproject/net/flowobjective/DefaultForwardingObjective.java b/core/api/src/main/java/org/onosproject/net/flowobjective/DefaultForwardingObjective.java
index fd08fd4..bb38039 100644
--- a/core/api/src/main/java/org/onosproject/net/flowobjective/DefaultForwardingObjective.java
+++ b/core/api/src/main/java/org/onosproject/net/flowobjective/DefaultForwardingObjective.java
@@ -44,6 +44,7 @@
private final TrafficTreatment treatment;
private final Operation op;
private final Optional<ObjectiveContext> context;
+ private final TrafficSelector meta;
private final int id;
@@ -58,6 +59,7 @@
this.treatment = builder.treatment;
this.op = builder.op;
this.context = Optional.ofNullable(builder.context);
+ this.meta = builder.meta;
this.id = Objects.hash(selector, flag, permanent,
timeout, appId, priority, nextId,
@@ -122,9 +124,14 @@
}
@Override
+ public TrafficSelector meta() {
+ return meta;
+ }
+
+ @Override
public int hashCode() {
return Objects.hash(selector, flag, permanent, timeout, appId,
- priority, nextId, treatment, op);
+ priority, nextId, treatment, op, meta);
}
@Override
@@ -142,7 +149,8 @@
&& Objects.equals(this.priority, other.priority)
&& Objects.equals(this.nextId, other.nextId)
&& Objects.equals(this.treatment, other.treatment)
- && Objects.equals(this.op, other.op);
+ && Objects.equals(this.op, other.op)
+ && Objects.equals(this.meta, other.meta);
}
return false;
}
@@ -156,6 +164,7 @@
.add("selector", selector())
.add("treatment", treatment())
.add("nextId", nextId())
+ .add("meta", meta())
.add("flag", flag())
.add("appId", appId())
.add("permanent", permanent())
@@ -192,6 +201,7 @@
private TrafficTreatment treatment;
private Operation op;
private ObjectiveContext context;
+ private TrafficSelector meta;
// Creates an empty builder
private Builder() {
@@ -208,6 +218,7 @@
this.nextId = objective.nextId();
this.treatment = objective.treatment();
this.op = objective.op();
+ this.meta = objective.meta();
}
@Override
@@ -260,6 +271,12 @@
}
@Override
+ public Builder withMeta(TrafficSelector meta) {
+ this.meta = meta;
+ return this;
+ }
+
+ @Override
public ForwardingObjective add() {
checkNotNull(selector, "Must have a selector");
checkNotNull(flag, "A flag must be set");