Introducing Openflow NX Extension infrastructure and NX_RESUBMIT action in ovsdb...
[ovsdb.git] / of-extension / nx-sal / src / main / yang / ovs-nx-sal-action.yang
diff --git a/of-extension/nx-sal/src/main/yang/ovs-nx-sal-action.yang b/of-extension/nx-sal/src/main/yang/ovs-nx-sal-action.yang
new file mode 100644 (file)
index 0000000..6c9998d
--- /dev/null
@@ -0,0 +1,142 @@
+module ovs-nx-sal-action {
+    yang-version 1;
+
+    namespace "urn:opendaylight:ovs:nx:sal:action";
+    prefix "ovs-nx-sal-action";
+
+    import yang-ext {prefix ext; revision-date "2013-07-09";}
+    import flow-node-inventory {prefix fni; revision-date 2013-08-19; }
+    import opendaylight-inventory {prefix inv;revision-date "2013-08-19";}
+    import sal-flow {prefix sal-flow;revision-date "2013-08-19";}
+    import sal-group {prefix sal-group;revision-date "2013-09-18";}
+    import packet-processing {prefix sal-packet;revision-date "2013-07-09";}
+    import opendaylight-flow-statistics {prefix odl-flow-stats;revision-date "2013-08-19";}
+    import opendaylight-group-statistics {prefix odl-group-stats;revision-date "2013-11-11";}
+    import nicira-match {prefix nicira-match;revision-date "2014-04-21";}
+    import openflowplugin-extension-general {prefix ext-gen;revision-date "2014-07-14";}
+    import openflow-action {prefix ofaction;revision-date "2013-07-31";}
+
+    description
+        "Nicira openflow action extensions.";
+
+    revision "2014-07-14" {
+        description "Initial revision";
+    }
+    grouping nx-action-resubmit-grouping {
+        container nx-resubmit {
+            description "Re-searches OpenFlow flow table (or the table whose number is specified by table) 
+            with the in-port field replaced  by port (if port is specified) and executes the actions found";
+            leaf in-port {
+                type uint16;
+                default 0xfff8; // OFPP_INPORT
+            }
+            leaf table {
+                type uint8 {
+                    range "0 .. 255";
+                }
+                default 255; // Current Table
+            }
+        }
+    }
+
+    // ACTION augmentations
+
+    augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
+        case nx-action-resubmit-rpc-add-flow-write-actions-case {
+            uses nx-action-resubmit-grouping;
+        }
+    }
+
+    augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
+        case nx-action-resubmit-rpc-add-flow-apply-actions-case {
+            uses nx-action-resubmit-grouping;
+        }
+    }
+    augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
+        case "nx-action-resubmit-rpc-remove-flow-write-actions-case" {
+            uses nx-action-resubmit-grouping;
+        }
+    }
+    augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
+        case "nx-action-resubmit-rpc-remove-flow-apply-actions-case" {
+            uses nx-action-resubmit-grouping;
+        }
+    }
+    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
+        case "nx-action-resubmit-rpc-update-flow-original-write-actions-case" {
+            uses nx-action-resubmit-grouping;
+        }
+    }
+
+    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
+        case "nx-action-resubmit-rpc-update-flow-original-apply-actions-case" {
+            uses nx-action-resubmit-grouping;
+        }
+    }
+
+    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
+        case "nx-action-resubmit-rpc-update-flow-updated-write-actions-case" {
+            uses nx-action-resubmit-grouping;
+        }
+    }
+    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
+        case "nx-action-resubmit-rpc-update-flow-updated-apply-actions-case" {
+            uses nx-action-resubmit-grouping;
+        }
+    }
+    augment "/sal-group:add-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
+        case "nx-action-resubmit-rpc-add-group-case" {
+            uses nx-action-resubmit-grouping;
+        }
+    }
+    augment "/sal-group:remove-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
+        case "nx-action-resubmit-rpc-remove-group-case" {
+            uses nx-action-resubmit-grouping;
+        }
+    }
+    augment "/sal-group:update-group/sal-group:input/sal-group:original-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
+        case "nx-action-resubmit-rpc-update-group-original-case" {
+            uses nx-action-resubmit-grouping;
+        }
+    }
+    augment "/sal-group:update-group/sal-group:input/sal-group:updated-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
+        case "nx-action-resubmit-rpc-update-group-updated-case" {
+            uses nx-action-resubmit-grouping;
+        }
+    }
+    augment "/sal-packet:transmit-packet/sal-packet:input/sal-packet:action/sal-packet:action" {
+        case "nx-action-resubmit-rpc-transmit-packet-case" {
+            uses nx-action-resubmit-grouping;
+        }
+    }
+    augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:write-actions-case/fni:write-actions/fni:action/fni:action" {
+        case "nx-action-resubmit-nodes-node-table-flow-write-actions-case" {
+            uses nx-action-resubmit-grouping;
+        }
+    }
+    augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:apply-actions-case/fni:apply-actions/fni:action/fni:action" {
+        case "nx-action-resubmit-nodes-node-table-flow-apply-actions-case" {
+            uses nx-action-resubmit-grouping;
+        }
+    }
+    augment "/inv:nodes/inv:node/fni:group/fni:buckets/fni:bucket/fni:action/fni:action" {
+        case "nx-action-resubmit-nodes-node-group-buckets-bucket-actions-case" {
+            uses nx-action-resubmit-grouping;
+        }
+    }
+    augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:write-actions-case/odl-flow-stats:write-actions/odl-flow-stats:action/odl-flow-stats:action" {
+        case "nx-action-resubmit-notif-flows-statistics-update-write-actions-case" {
+            uses nx-action-resubmit-grouping;
+        }
+    }
+    augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:apply-actions-case/odl-flow-stats:apply-actions/odl-flow-stats:action/odl-flow-stats:action" {
+        case "nx-action-resubmit-notif-flows-statistics-update-apply-actions-case" {
+            uses nx-action-resubmit-grouping;
+        }
+    }
+    augment "/odl-group-stats:group-desc-stats-updated/odl-group-stats:group-desc-stats/odl-group-stats:buckets/odl-group-stats:bucket/odl-group-stats:action/odl-group-stats:action" {
+        case "nx-action-resubmit-notif-group-desc-stats-updated-case" {
+            uses nx-action-resubmit-grouping;
+        }
+    }
+}