Added new Action classes and Match classes to use MatchAction Framework to set up the routing rules for Segment Routing

Change-Id: I214691cd8ea38c991a14f93af3bed0238a8c8f4b
diff --git a/src/main/java/net/onrc/onos/core/matchaction/action/CopyTtlOutAction.java b/src/main/java/net/onrc/onos/core/matchaction/action/CopyTtlOutAction.java
new file mode 100644
index 0000000..d0d1e3d
--- /dev/null
+++ b/src/main/java/net/onrc/onos/core/matchaction/action/CopyTtlOutAction.java
@@ -0,0 +1,9 @@
+package net.onrc.onos.core.matchaction.action;
+
+public class CopyTtlOutAction implements Action {
+
+    public CopyTtlOutAction() {
+
+    }
+
+}
diff --git a/src/main/java/net/onrc/onos/core/matchaction/action/DecMplsTtlAction.java b/src/main/java/net/onrc/onos/core/matchaction/action/DecMplsTtlAction.java
new file mode 100644
index 0000000..02cfeec
--- /dev/null
+++ b/src/main/java/net/onrc/onos/core/matchaction/action/DecMplsTtlAction.java
@@ -0,0 +1,14 @@
+package net.onrc.onos.core.matchaction.action;
+
+public class DecMplsTtlAction implements Action {
+    private final int dec;
+
+    public DecMplsTtlAction(int d) {
+        this.dec = d;
+    }
+
+    public int getDec() {
+        return dec;
+    }
+
+}
diff --git a/src/main/java/net/onrc/onos/core/matchaction/action/DecNwTtlAction.java b/src/main/java/net/onrc/onos/core/matchaction/action/DecNwTtlAction.java
new file mode 100644
index 0000000..5770ea2
--- /dev/null
+++ b/src/main/java/net/onrc/onos/core/matchaction/action/DecNwTtlAction.java
@@ -0,0 +1,13 @@
+package net.onrc.onos.core.matchaction.action;
+
+public class DecNwTtlAction implements Action {
+    private final int dec;
+
+    public DecNwTtlAction(int d) {
+        this.dec = d;
+    }
+
+    public int getDec() {
+        return this.dec;
+    }
+}
diff --git a/src/main/java/net/onrc/onos/core/matchaction/action/GroupAction.java b/src/main/java/net/onrc/onos/core/matchaction/action/GroupAction.java
new file mode 100644
index 0000000..ba0c866
--- /dev/null
+++ b/src/main/java/net/onrc/onos/core/matchaction/action/GroupAction.java
@@ -0,0 +1,22 @@
+package net.onrc.onos.core.matchaction.action;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import net.onrc.onos.core.util.Dpid;
+
+public class GroupAction implements Action {
+    List<Dpid> fwdSws;
+
+    public GroupAction() {
+        fwdSws = new ArrayList<Dpid>();
+    }
+
+    public void AddSwitch(Dpid d) {
+        fwdSws.add(d);
+    }
+
+    public List<Dpid> getDpids() {
+        return fwdSws;
+    }
+}
diff --git a/src/main/java/net/onrc/onos/core/matchaction/action/PopMplsAction.java b/src/main/java/net/onrc/onos/core/matchaction/action/PopMplsAction.java
new file mode 100644
index 0000000..8e59988
--- /dev/null
+++ b/src/main/java/net/onrc/onos/core/matchaction/action/PopMplsAction.java
@@ -0,0 +1,8 @@
+package net.onrc.onos.core.matchaction.action;
+
+public class PopMplsAction implements Action {
+
+    public PopMplsAction() {
+
+    }
+}
diff --git a/src/main/java/net/onrc/onos/core/matchaction/action/PushMplsAction.java b/src/main/java/net/onrc/onos/core/matchaction/action/PushMplsAction.java
new file mode 100644
index 0000000..6157a18
--- /dev/null
+++ b/src/main/java/net/onrc/onos/core/matchaction/action/PushMplsAction.java
@@ -0,0 +1,9 @@
+package net.onrc.onos.core.matchaction.action;
+
+public class PushMplsAction implements Action {
+
+    public PushMplsAction() {
+
+    }
+
+}
diff --git a/src/main/java/net/onrc/onos/core/matchaction/action/SetMplsIdAction.java b/src/main/java/net/onrc/onos/core/matchaction/action/SetMplsIdAction.java
new file mode 100644
index 0000000..14a39c8
--- /dev/null
+++ b/src/main/java/net/onrc/onos/core/matchaction/action/SetMplsIdAction.java
@@ -0,0 +1,13 @@
+package net.onrc.onos.core.matchaction.action;
+
+public class SetMplsIdAction implements Action {
+    private final int mplsId;
+
+    public SetMplsIdAction(int id) {
+        this.mplsId = id;
+    }
+
+    public int getMplsId() {
+        return this.mplsId;
+    }
+}
diff --git a/src/main/java/net/onrc/onos/core/matchaction/match/IpPacketMatch.java b/src/main/java/net/onrc/onos/core/matchaction/match/IpPacketMatch.java
new file mode 100644
index 0000000..58d7546
--- /dev/null
+++ b/src/main/java/net/onrc/onos/core/matchaction/match/IpPacketMatch.java
@@ -0,0 +1,17 @@
+package net.onrc.onos.core.matchaction.match;
+
+import net.onrc.onos.core.util.IPv4Net;
+
+public class IpPacketMatch implements Match {
+
+    IPv4Net dstIp;
+
+    public IpPacketMatch(String ipAddressSlash) {
+        this.dstIp = new IPv4Net(ipAddressSlash);
+    }
+
+    public IPv4Net getDestination() {
+        return dstIp;
+    }
+
+}
diff --git a/src/main/java/net/onrc/onos/core/matchaction/match/MplsPacketMatch.java b/src/main/java/net/onrc/onos/core/matchaction/match/MplsPacketMatch.java
new file mode 100644
index 0000000..cf4e8d4
--- /dev/null
+++ b/src/main/java/net/onrc/onos/core/matchaction/match/MplsPacketMatch.java
@@ -0,0 +1,15 @@
+package net.onrc.onos.core.matchaction.match;
+
+public class MplsPacketMatch implements Match {
+
+    private final int mplsLabel;
+
+    public MplsPacketMatch(int label) {
+        this.mplsLabel = label;
+    }
+
+    public int getMplsLabel() {
+        return mplsLabel;
+    }
+
+}