Adding learn action - Bug 6445
[openflowplugin.git] / extension / openflowjava-extension-nicira / src / main / yang / nicira-action.yang
index c14774827b4265f359993ad0a37e1db272fb2300..387f04271f3f070bcf40e4ecb37949283f74eefc 100644 (file)
@@ -30,15 +30,18 @@ module nicira-action {
     identity nxm-nx-multipath {
         base ofaction:experimenter-action-sub-type;
     }
-    identity nxm-nx-set-nsp {
+    identity nxm-nx-push-nsh {
         base ofaction:experimenter-action-sub-type;
     }
-    identity nxm-nx-set-nsi {
+    identity nxm-nx-pop-nsh {
         base ofaction:experimenter-action-sub-type;
     }
     identity nxm-nx-conntrack {
         base ofaction:experimenter-action-sub-type;
     }
+    identity nxm-nx-learn {
+        base ofaction:experimenter-action-sub-type;
+    }
 
     grouping ofj-nx-action-reg-load-grouping {
         container nx-action-reg-load {
@@ -173,58 +176,21 @@ module nicira-action {
         }
     }
 
-    grouping ofj-nx-action-set-nsp-grouping {
-        container nx-action-set-nsp {
-            leaf nsp {
-                type uint32;
-            }
+    grouping ofj-nx-action-push-nsh-grouping {
+        container nx-action-push-nsh {
             leaf experimenter-id {
                 type oft:experimenter-id;
             }
         }
     }
-
-    grouping ofj-nx-action-set-nsi-grouping {
-        container nx-action-set-nsi {
-            leaf nsi {
-                type uint8;
-            }
+    grouping ofj-nx-action-pop-nsh-grouping {
+        container nx-action-pop-nsh {
             leaf experimenter-id {
                 type oft:experimenter-id;
             }
         }
     }
 
-    grouping ofj-nx-action-set-nshc-grouping {
-        leaf nshc {
-            type uint32;
-        }
-        leaf experimenter-id {
-            type oft:experimenter-id;
-        }
-    }
-
-    grouping ofj-nx-action-set-nshc-1-grouping {
-        container nx-action-set-nshc-1 {
-            uses ofj-nx-action-set-nshc-grouping;
-        }
-    }
-    grouping ofj-nx-action-set-nshc-2-grouping {
-        container nx-action-set-nshc-2 {
-            uses ofj-nx-action-set-nshc-grouping;
-        }
-    }
-    grouping ofj-nx-action-set-nshc-3-grouping {
-        container nx-action-set-nshc-3 {
-            uses ofj-nx-action-set-nshc-grouping;
-        }
-    }
-    grouping ofj-nx-action-set-nshc-4-grouping {
-        container nx-action-set-nshc-4 {
-            uses ofj-nx-action-set-nshc-grouping;
-        }
-    }
-
     grouping ofj-nx-action-conntrack-grouping {
         container nx-action-conntrack {
             leaf flags {
@@ -245,6 +211,168 @@ module nicira-action {
         }
     }
 
+    grouping flow-mod-spec {
+        description
+           "flow mod spec indicates the actions that should be performed to create a new flow which was learned from learn action.";
+        choice flow-mod-spec{
+            case flow-mod-add-match-from-field-case{
+                container flow-mod-add-match-from-field{
+                        leaf flow-mod-num-bits{
+                        type uint16;
+                    }
+
+                    leaf src-field{
+                        type uint32;
+                    }
+
+                    leaf src-ofs{
+                        type uint16;
+                    }
+
+                    leaf dst-field{
+                        type uint32;
+                    }
+
+                    leaf dst-ofs{
+                        type uint16;
+                    }
+                }
+            }
+            case flow-mod-add-match-from-field-case{
+                container flow-mod-add-match-from-field{
+                        leaf flow-mod-num-bits{
+                        type uint16;
+                    }
+
+                    leaf src-field{
+                        type uint32;
+                    }
+
+                    leaf src-ofs{
+                        type uint16;
+                    }
+
+                    leaf dst-field{
+                        type uint32;
+                    }
+
+                    leaf dst-ofs{
+                        type uint16;
+                    }
+                }
+            }
+            case flow-mod-add-match-from-value-case{
+                container flow-mod-add-match-from-value{
+                        leaf flow-mod-num-bits{
+                        type uint16;
+                    }
+
+                    leaf value{
+                        type uint16;
+                    }
+
+                    leaf src-field{
+                        type uint32;
+                    }
+
+                    leaf src-ofs{
+                        type uint16;
+                    }
+                }
+            }
+            case flow-mod-copy-field-into-field-case{
+                container flow-mod-copy-field-into-field{
+                        leaf flow-mod-num-bits{
+                        type uint16;
+                    }
+
+                    leaf src-field{
+                        type uint32;
+                    }
+
+                    leaf src-ofs{
+                        type uint16;
+                    }
+
+                    leaf dst-field{
+                        type uint32;
+                    }
+
+                    leaf dst-ofs{
+                        type uint16;
+                    }
+                }
+            }
+            case flow-mod-copy-value-into-field-case{
+                container flow-mod-copy-value-into-field{
+                        leaf flow-mod-num-bits{
+                        type uint16;
+                    }
+
+                    leaf value{
+                        type uint16;
+                    }
+
+                    leaf dst-field{
+                        type uint32;
+                    }
+
+                    leaf dst-ofs{
+                        type uint16;
+                    }
+                }
+            }
+            case flow-mod-output-to-port-case{
+                container flow-mod-output-to-port{
+                        leaf flow-mod-num-bits{
+                        type uint16;
+                    }
+
+                    leaf src-field{
+                        type uint32;
+                    }
+
+                    leaf src-ofs{
+                        type uint16;
+                    }
+                }
+            }
+        }
+    }
+
+    grouping ofj-nx-action-learn-grouping {
+        container nx-action-learn {
+            leaf idle-timeout {
+                type uint16;
+            }
+            leaf hard-timeout {
+                type uint16;
+            }
+            leaf priority {
+                type uint16;
+            }
+            leaf cookie {
+                type uint64;
+            }
+            leaf flags {
+                type uint16;
+            }
+            leaf table-id {
+                type uint8;
+            }
+            leaf fin-idle-timeout {
+                type uint16;
+            }
+            leaf fin-hard-timeout {
+                type uint16;
+            }
+
+            list flow-mods{
+                uses flow-mod-spec;
+            }
+        }
+    }
+
     augment "/ofaction:action-container/ofaction:action-choice" {
         ext:augment-identifier "ofj-aug-nx-action";
         case action-reg-load {
@@ -262,26 +390,17 @@ module nicira-action {
         case action-multipath {
             uses ofj-nx-action-multipath-grouping;
         }
-        case action-set-nsp {
-            uses ofj-nx-action-set-nsp-grouping;
+        case action-push-nsh {
+            uses ofj-nx-action-push-nsh-grouping;
         }
-        case action-set-nsi {
-            uses ofj-nx-action-set-nsi-grouping;
-        }
-        case action-set-nshc-1 {
-            uses ofj-nx-action-set-nshc-1-grouping;
-        }
-        case action-set-nshc-2 {
-            uses ofj-nx-action-set-nshc-2-grouping;
-        }
-        case action-set-nshc-3 {
-            uses ofj-nx-action-set-nshc-3-grouping;
-        }
-        case action-set-nshc-4 {
-            uses ofj-nx-action-set-nshc-4-grouping;
+        case action-pop-nsh {
+            uses ofj-nx-action-pop-nsh-grouping;
         }
         case action-conntrack {
             uses ofj-nx-action-conntrack-grouping;
         }
+        case action-learn {
+            uses ofj-nx-action-learn-grouping;
+        }
     }
 }