[ONOS-5070] Adds mirroring functionality.
Changes:
- Adds mirroring behaviour;
- Adds mirroring description;
- Adds mirroring name;
- Implements for Ovsdb the mirroring;
- Adds OvsdbMirror entity;
- Adds constants related to Mirror table;
- Fix one issue related to Mirror table
- Extends OvsdbClientService introducing mirroring;
- Implements mirroring functionality in DefaulOvsdbClient;
- Support for different types of device id
Change-Id: Ie291f49b3c61b7998010f555ae11deb8c021063d
diff --git a/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbClientService.java b/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbClientService.java
index 5a0676b..a5ba5a3 100644
--- a/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbClientService.java
+++ b/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbClientService.java
@@ -19,6 +19,8 @@
import org.onlab.packet.IpAddress;
import org.onosproject.net.DeviceId;
import org.onosproject.net.behaviour.ControllerInfo;
+import org.onosproject.net.behaviour.MirroringStatistics;
+import org.onosproject.net.behaviour.MirroringName;
import org.onosproject.ovsdb.rfc.jsonrpc.OvsdbRpc;
import org.onosproject.ovsdb.rfc.message.TableUpdates;
import org.onosproject.ovsdb.rfc.notation.Row;
@@ -40,6 +42,41 @@
OvsdbNodeId nodeId();
/**
+ * Creates a mirror port. Mirrors the traffic
+ * that goes to selectDstPort or comes from
+ * selectSrcPort or packets containing selectVlan
+ * to mirrorPort or to all ports that trunk mirrorVlan.
+ *
+ * @param bridgeName the name of the bridge
+ * @param mirror the OVSDB mirror description
+ * @return true if mirror creation is successful, false otherwise
+ */
+ boolean createMirror(String bridgeName, OvsdbMirror mirror);
+
+ /**
+ * Gets the Mirror uuid.
+ *
+ * @param mirrorName mirror name
+ * @return mirror uuid, empty if no uuid is found
+ */
+ String getMirrorUuid(String mirrorName);
+
+ /**
+ * Gets mirroring statistics of the device.
+ *
+ * @param deviceId target device id
+ * @return set of mirroring statistics; empty if no mirror is found
+ */
+ Set<MirroringStatistics> getMirroringStatistics(DeviceId deviceId);
+
+ /**
+ * Drops the configuration for mirror.
+ *
+ * @param mirroringName
+ */
+ void dropMirror(MirroringName mirroringName);
+
+ /**
* Creates a tunnel port with given options.
*
* @deprecated version 1.7.0 - Hummingbird