ONOS-196 Add --macSrcRewrite and --macDstRewrite options to add-point-intent command
Add the option for specifying a mac address rewrite.
Generate instructions for the rewrite and include them in the
treatment for the intent.
Change-Id: Ib2fa5ad5a6eb1d9617159c34d832fd89f7245db9
diff --git a/cli/src/main/java/org/onlab/onos/cli/net/AddPointToPointIntentCommand.java b/cli/src/main/java/org/onlab/onos/cli/net/AddPointToPointIntentCommand.java
index 26bb1c0..4cb43b9 100644
--- a/cli/src/main/java/org/onlab/onos/cli/net/AddPointToPointIntentCommand.java
+++ b/cli/src/main/java/org/onlab/onos/cli/net/AddPointToPointIntentCommand.java
@@ -19,6 +19,7 @@
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Option;
import org.onlab.onos.net.ConnectPoint;
import org.onlab.onos.net.DeviceId;
import org.onlab.onos.net.PortNumber;
@@ -28,11 +29,12 @@
import org.onlab.onos.net.intent.Intent;
import org.onlab.onos.net.intent.IntentService;
import org.onlab.onos.net.intent.PointToPointIntent;
+import org.onlab.packet.MacAddress;
-import static org.onlab.onos.net.flow.DefaultTrafficTreatment.builder;
-
+import static com.google.common.base.Strings.isNullOrEmpty;
import static org.onlab.onos.net.DeviceId.deviceId;
import static org.onlab.onos.net.PortNumber.portNumber;
+import static org.onlab.onos.net.flow.DefaultTrafficTreatment.builder;
/**
* Installs point-to-point connectivity intents.
@@ -51,6 +53,36 @@
required = true, multiValued = false)
String egressDeviceString = null;
+ @Option(name = "--srcMacRewrite", description = "Source MAC address to rewrite",
+ required = false, multiValued = false)
+ private String rewriteSrcMacAddressString = null;
+
+ @Option(name = "--dstMacRewrite", description = "Destination MAC address to rewrite",
+ required = false, multiValued = false)
+ private String rewriteDstMacAddressString = null;
+
+
+ /**
+ * Generates a traffic treatment for this intent. If the mac address rewrite
+ * argument is specified the treatment is updated
+ * to implement the rewrite rule if necessary.
+ */
+ private TrafficTreatment buildTrafficTreatment() {
+ final TrafficTreatment.Builder builder = builder();
+
+ if (!isNullOrEmpty(rewriteSrcMacAddressString)) {
+ final MacAddress rewriteSrcMacAddress =
+ MacAddress.valueOf(rewriteSrcMacAddressString);
+ builder.setEthSrc(rewriteSrcMacAddress);
+ }
+ if (!isNullOrEmpty(rewriteDstMacAddressString)) {
+ final MacAddress rewriteDstMacAddress =
+ MacAddress.valueOf(rewriteDstMacAddressString);
+ builder.setEthDst(rewriteDstMacAddress);
+ }
+ return builder.build();
+ }
+
@Override
protected void execute() {
IntentService service = get(IntentService.class);
@@ -64,7 +96,7 @@
ConnectPoint egress = new ConnectPoint(egressDeviceId, egressPortNumber);
TrafficSelector selector = buildTrafficSelector();
- TrafficTreatment treatment = builder().build();
+ TrafficTreatment treatment = buildTrafficTreatment();
List<Constraint> constraints = buildConstraints();