Add support for encap/decap nicira actions
[openflowplugin.git] / extension / openflowplugin-extension-nicira / src / main / yang / openflowplugin-extension-nicira-action.yang
index 3bb70190461f5cd6c6b10554ee87ef92071afafc..8df9300df40f945f5f01ad5788090f7dd72de59c 100644 (file)
@@ -16,6 +16,9 @@ module openflowplugin-extension-nicira-action {
     import openflowplugin-extension-general {prefix ext-gen;revision-date "2014-07-14";}
     import openflow-action {prefix ofaction;revision-date "2015-02-03";}
     import nicira-action {prefix nicira-action;revision-date "2014-04-21";}
+    import opendaylight-direct-statistics {prefix directstat;revision-date "2016-05-11";}
+    import ietf-inet-types { prefix "inet"; revision-date "2013-07-15"; }
+    import opendaylight-match-types {prefix match; revision-date "2013-10-26";}
 
     description
         "Nicira openflow action extensions.";
@@ -53,6 +56,16 @@ module openflowplugin-extension-nicira-action {
             type empty;
         }
     }
+    grouping oxm-of-mpls-label-grouping {
+        leaf of-mpls-label {
+            type empty;
+        }
+    }
+    grouping oxm-of-metadata-grouping {
+        leaf of-metadata {
+            type empty;
+        }
+    }
     grouping nxm-of-arp-op-grouping {
         leaf of-arp-op {
             type empty;
@@ -138,6 +151,16 @@ module openflowplugin-extension-nicira-action {
             type empty;
         }
     }
+    grouping nxm-nx-ipv6-src-grouping {
+        leaf nx-ipv6-src {
+            type empty;
+        }
+    }
+    grouping nxm-nx-ipv6-dst-grouping {
+        leaf nx-ipv6-dst {
+            type empty;
+        }
+    }
     grouping nxm-of-icmp-type-grouping {
         leaf of-icmp-type {
             type empty;
@@ -177,6 +200,12 @@ module openflowplugin-extension-nicira-action {
             case dst-nx-tun-id-case {
                 uses nxm-nx-tun-id-grouping;
             }
+            case dst-of-mpls-label-case {
+                 uses oxm-of-mpls-label-grouping;
+            }
+            case dst-of-metadata-case {
+                uses oxm-of-metadata-grouping;
+            }
             case dst-nx-arp-sha-case {
                 uses nxm-nx-arp-sha-grouping;
             }
@@ -231,6 +260,12 @@ module openflowplugin-extension-nicira-action {
             case dst-of-ip-dst-case {
                 uses nxm-of-ip-dst-grouping;
             }
+            case dst-nx-ipv6-src-case {
+                uses nxm-nx-ipv6-src-grouping;
+            }
+            case dst-nx-ipv6-dst-case {
+                uses nxm-nx-ipv6-dst-grouping;
+            }
             case dst-of-icmp-type-case {
                 uses nxm-of-icmp-type-grouping;
             }
@@ -260,6 +295,12 @@ module openflowplugin-extension-nicira-action {
             case src-nx-tun-id-case {
                 uses nxm-nx-tun-id-grouping;
             }
+            case src-nx-of-mpls-label-case {
+                uses oxm-of-mpls-label-grouping;
+            }
+            case src-nx-of-metadata-case {
+                uses oxm-of-metadata-grouping;
+            }
             case src-nx-arp-sha-case {
                 uses nxm-nx-arp-sha-grouping;
             }
@@ -317,6 +358,12 @@ module openflowplugin-extension-nicira-action {
             case src-of-ip-dst-case {
                 uses nxm-of-ip-dst-grouping;
             }
+            case src-nx-ipv6-src-case {
+                uses nxm-nx-ipv6-src-grouping;
+            }
+            case src-nx-ipv6-dst-case {
+                uses nxm-nx-ipv6-dst-grouping;
+            }
             case src-nx-encap-eth-src-case {
                 uses nxm-nx-encap-eth-src-grouping;
             }
@@ -407,6 +454,17 @@ bits specified from the register.";
         }
     }
 
+    grouping nx-action-fin-timeout-grouping {
+        container nx-action-fin-timeout {
+            leaf fin-idle-timeout {
+                type uint16;
+            }
+            leaf fin-hard-timeout  {
+                type uint16;
+            }
+        }
+    }
+
     grouping nx-action-multipath-grouping {
         container nx-multipath {
             leaf fields {
@@ -460,6 +518,53 @@ bits specified from the register.";
             leaf recirc-table {
                 type uint8;
             }
+            list ct-actions{
+                uses ofpact-actions;
+            }
+        }
+    }
+
+    grouping nx-action-ct-clear-grouping {
+        container nx-ct-clear {
+            presence "no content action";
+            description "Clear Ct states from the flow";
+        }
+    }
+
+    grouping ofpact-actions {
+        description
+           "Actions to be performed with conntrack.";
+        choice ofpact-actions {
+            case nx-action-nat-case {
+                container nx-action-nat {
+                    leaf flags {
+                        type uint16;
+                    }
+                    leaf range_present {
+                        type uint16;
+                    }
+                    leaf ip-address-min {
+                        type inet:ip-address;
+                    }
+                    leaf ip-address-max {
+                        type inet:ip-address;
+                    }
+                    leaf port-min {
+                        type uint16;
+                    }
+                    leaf port-max {
+                        type uint16;
+                    }
+                }
+            }
+            case nx-action-ct-mark-case {
+                container nx-action-ct-mark {
+                    leaf ct-mark {
+                        type uint32;
+                    }
+                    // TODO: ct_mark mask is not supported yet
+                }
+            }
         }
     }
 
@@ -602,6 +707,26 @@ bits specified from the register.";
         }
     }
 
+    grouping nx-action-encap-grouping {
+        container nx-encap {
+            uses match:packet-type-fields {
+                refine packet-type {
+                    mandatory true;
+                }
+            }
+        }
+    }
+
+    grouping nx-action-decap-grouping {
+        container nx-decap {
+            uses match:packet-type-fields {
+                refine packet-type {
+                    default "0xFFFE"; // USE NEXT PROTO
+                }
+            }
+        }
+    }
+
 
     // ACTION augmentations
     // RPCS
@@ -625,6 +750,11 @@ bits specified from the register.";
             uses nx-action-resubmit-grouping;
         }
     }
+    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-fin-timeout-rpc-add-flow-write-actions-case {
+            uses nx-action-fin-timeout-grouping;
+        }
+    }
     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-multipath-rpc-add-flow-write-actions-case {
             uses nx-action-multipath-grouping;
@@ -645,11 +775,28 @@ bits specified from the register.";
             uses nx-action-conntrack-grouping;
         }
     }
+    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-ct-clear-rpc-add-flow-write-actions-case {
+            uses nx-action-ct-clear-grouping;
+        }
+    }
     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-learn-rpc-add-flow-write-actions-case {
             uses nx-action-learn-grouping;
         }
     }
+    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-encap-rpc-add-flow-write-actions-case {
+            uses nx-action-encap-grouping;
+        }
+    }
+    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-decap-rpc-add-flow-write-actions-case {
+            uses nx-action-decap-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-reg-load-rpc-add-flow-apply-actions-case {
@@ -671,6 +818,11 @@ bits specified from the register.";
             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-fin-timeout-rpc-add-flow-apply-actions-case {
+            uses nx-action-fin-timeout-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-multipath-rpc-add-flow-apply-actions-case {
             uses nx-action-multipath-grouping;
@@ -692,11 +844,26 @@ bits specified from the register.";
             uses nx-action-conntrack-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-ct-clear-rpc-add-flow-apply-actions-case {
+            uses nx-action-ct-clear-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-learn-rpc-add-flow-apply-actions-case {
             uses nx-action-learn-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-encap-rpc-add-flow-apply-actions-case {
+            uses nx-action-encap-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-decap-rpc-add-flow-apply-actions-case {
+          uses nx-action-decap-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-reg-load-rpc-remove-flow-write-actions-case" {
@@ -718,6 +885,11 @@ bits specified from the register.";
             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-fin-timeout-rpc-remove-flow-write-actions-case {
+            uses nx-action-fin-timeout-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-multipath-rpc-remove-flow-write-actions-case {
             uses nx-action-multipath-grouping;
@@ -738,11 +910,26 @@ bits specified from the register.";
             uses nx-action-conntrack-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-ct-clear-rpc-remove-flow-write-actions-case {
+            uses nx-action-ct-clear-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-learn-rpc-remove-flow-write-actions-case {
             uses nx-action-learn-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-encap-rpc-remove-flow-write-actions-case {
+            uses nx-action-encap-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-decap-rpc-remove-flow-write-actions-case {
+            uses nx-action-decap-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-reg-load-rpc-remove-flow-apply-actions-case" {
@@ -764,6 +951,11 @@ bits specified from the register.";
             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-fin-timeout-rpc-remove-flow-apply-actions-case {
+            uses nx-action-fin-timeout-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-multipath-rpc-remove-flow-apply-actions-case {
             uses nx-action-multipath-grouping;
@@ -784,11 +976,26 @@ bits specified from the register.";
             uses nx-action-conntrack-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-ct-clear-rpc-remove-flow-apply-actions-case {
+            uses nx-action-ct-clear-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-learn-rpc-remove-flow-apply-actions-case {
             uses nx-action-learn-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-encap-rpc-remove-flow-apply-actions-case {
+            uses nx-action-encap-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-decap-rpc-remove-flow-apply-actions-case {
+            uses nx-action-decap-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-reg-load-rpc-update-flow-original-write-actions-case" {
@@ -810,6 +1017,11 @@ bits specified from the register.";
             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-fin-timeout-rpc-update-flow-original-write-actions-case" {
+            uses nx-action-fin-timeout-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-multipath-rpc-update-flow-original-write-actions-case" {
             uses nx-action-multipath-grouping;
@@ -830,11 +1042,26 @@ bits specified from the register.";
             uses nx-action-conntrack-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-ct-clear-rpc-update-flow-original-write-actions-case" {
+            uses nx-action-ct-clear-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-learn-rpc-update-flow-original-write-actions-case" {
             uses nx-action-learn-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-encap-rpc-update-flow-original-write-actions-case" {
+            uses nx-action-encap-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-decap-rpc-update-flow-original-write-actions-case" {
+            uses nx-action-decap-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-reg-load-rpc-update-flow-original-apply-actions-case" {
@@ -856,6 +1083,11 @@ bits specified from the register.";
             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-fin-timeout-rpc-update-flow-original-apply-actions-case" {
+            uses nx-action-fin-timeout-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-multipath-rpc-update-flow-original-apply-actions-case" {
             uses nx-action-multipath-grouping;
@@ -876,11 +1108,26 @@ bits specified from the register.";
             uses nx-action-conntrack-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-ct-clear-rpc-update-flow-original-apply-actions-case" {
+            uses nx-action-ct-clear-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-learn-rpc-update-flow-original-apply-actions-case" {
             uses nx-action-learn-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-encap-rpc-update-flow-original-apply-actions-case" {
+            uses nx-action-encap-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-decap-rpc-update-flow-original-apply-actions-case" {
+            uses nx-action-decap-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-reg-load-rpc-update-flow-updated-write-actions-case" {
@@ -902,6 +1149,11 @@ bits specified from the register.";
             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-fin-timeout-rpc-update-flow-updated-write-actions-case" {
+            uses nx-action-fin-timeout-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-multipath-rpc-update-flow-updated-write-actions-case" {
             uses nx-action-multipath-grouping;
@@ -922,11 +1174,26 @@ bits specified from the register.";
             uses nx-action-conntrack-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-ct-clear-rpc-update-flow-updated-write-actions-case" {
+            uses nx-action-ct-clear-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-learn-rpc-update-flow-updated-write-actions-case" {
             uses nx-action-learn-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-encap-rpc-update-flow-updated-write-actions-case" {
+            uses nx-action-encap-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-decap-rpc-update-flow-updated-write-actions-case" {
+            uses nx-action-decap-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-reg-load-rpc-update-flow-updated-apply-actions-case" {
@@ -948,6 +1215,11 @@ bits specified from the register.";
             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-fin-timeout-rpc-update-flow-updated-apply-actions-case" {
+            uses nx-action-fin-timeout-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-multipath-rpc-update-flow-updated-apply-actions-case" {
             uses nx-action-multipath-grouping;
@@ -968,11 +1240,26 @@ bits specified from the register.";
             uses nx-action-conntrack-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-ct-clear-rpc-update-flow-updated-apply-actions-case" {
+            uses nx-action-ct-clear-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-learn-rpc-update-flow-updated-apply-actions-case" {
             uses nx-action-learn-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-encap-rpc-update-flow-updated-apply-actions-case" {
+            uses nx-action-encap-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-decap-rpc-update-flow-updated-apply-actions-case" {
+            uses nx-action-decap-grouping;
+        }
+    }
 
     augment "/sal-group:add-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
         case "nx-action-reg-load-rpc-add-group-case" {
@@ -994,6 +1281,11 @@ bits specified from the register.";
             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-fin-timeout-rpc-add-group-case" {
+            uses nx-action-fin-timeout-grouping;
+        }
+    }
     augment "/sal-group:add-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
         case "nx-action-multipath-rpc-add-group-case" {
             uses nx-action-multipath-grouping;
@@ -1014,11 +1306,26 @@ bits specified from the register.";
             uses nx-action-conntrack-grouping;
         }
     }
+    augment "/sal-group:add-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
+        case "nx-action-ct-clear-rpc-add-group-case" {
+            uses nx-action-ct-clear-grouping;
+        }
+    }
     augment "/sal-group:add-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
         case "nx-action-learn-rpc-add-group-case" {
             uses nx-action-learn-grouping;
         }
     }
+    augment "/sal-group:add-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
+        case "nx-action-encap-rpc-add-group-case" {
+            uses nx-action-encap-grouping;
+        }
+    }
+    augment "/sal-group:add-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
+        case "nx-action-decap-rpc-add-group-case" {
+            uses nx-action-decap-grouping;
+        }
+    }
 
     augment "/sal-group:remove-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
         case "nx-action-reg-load-rpc-remove-group-case" {
@@ -1040,6 +1347,11 @@ bits specified from the register.";
             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-fin-timeout-rpc-remove-group-case" {
+            uses nx-action-fin-timeout-grouping;
+        }
+    }
     augment "/sal-group:remove-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
         case "nx-action-multipath-rpc-remove-group-case" {
             uses nx-action-multipath-grouping;
@@ -1060,11 +1372,26 @@ bits specified from the register.";
             uses nx-action-conntrack-grouping;
         }
     }
+    augment "/sal-group:remove-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
+        case "nx-action-ct-clear-rpc-remove-group-case" {
+            uses nx-action-ct-clear-grouping;
+        }
+    }
     augment "/sal-group:remove-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
         case "nx-action-learn-rpc-remove-group-case" {
             uses nx-action-learn-grouping;
         }
     }
+    augment "/sal-group:remove-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
+        case "nx-action-encap-rpc-remove-group-case" {
+            uses nx-action-encap-grouping;
+        }
+    }
+    augment "/sal-group:remove-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
+        case "nx-action-decap-rpc-remove-group-case" {
+            uses nx-action-decap-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-reg-load-rpc-update-group-original-case" {
@@ -1086,6 +1413,11 @@ bits specified from the register.";
             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-fin-timeout-rpc-update-group-original-case" {
+            uses nx-action-fin-timeout-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-multipath-rpc-update-group-original-case" {
             uses nx-action-multipath-grouping;
@@ -1106,11 +1438,26 @@ bits specified from the register.";
             uses nx-action-conntrack-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-ct-clear-rpc-update-group-original-case" {
+            uses nx-action-ct-clear-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-learn-rpc-update-group-original-case" {
             uses nx-action-learn-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-encap-rpc-update-group-original-case" {
+            uses nx-action-encap-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-decap-rpc-update-group-original-case" {
+            uses nx-action-decap-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-reg-load-rpc-update-group-updated-case" {
@@ -1132,6 +1479,11 @@ bits specified from the register.";
             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-fin-timeout-rpc-update-group-updated-case" {
+            uses nx-action-fin-timeout-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-multipath-rpc-update-group-updated-case" {
             uses nx-action-multipath-grouping;
@@ -1152,11 +1504,26 @@ bits specified from the register.";
             uses nx-action-conntrack-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-ct-clear-rpc-update-group-updated-case" {
+            uses nx-action-ct-clear-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-learn-rpc-update-group-updated-case" {
             uses nx-action-learn-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-encap-rpc-update-group-updated-case" {
+            uses nx-action-encap-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-decap-rpc-update-group-updated-case" {
+            uses nx-action-decap-grouping;
+        }
+    }
 
     augment "/sal-packet:transmit-packet/sal-packet:input/sal-packet:action/sal-packet:action" {
         case "nx-action-reg-load-rpc-transmit-packet-case" {
@@ -1178,6 +1545,11 @@ bits specified from the register.";
             uses nx-action-resubmit-grouping;
         }
     }
+    augment "/sal-packet:transmit-packet/sal-packet:input/sal-packet:action/sal-packet:action" {
+        case "nx-action-fin-timeout-rpc-transmit-packet-case" {
+            uses nx-action-fin-timeout-grouping;
+        }
+    }
     augment "/sal-packet:transmit-packet/sal-packet:input/sal-packet:action/sal-packet:action" {
         case "nx-action-multipath-rpc-transmit-packet-case" {
             uses nx-action-multipath-grouping;
@@ -1198,11 +1570,26 @@ bits specified from the register.";
             uses nx-action-conntrack-grouping;
         }
     }
+    augment "/sal-packet:transmit-packet/sal-packet:input/sal-packet:action/sal-packet:action" {
+        case "nx-action-ct-clear-rpc-transmit-packet-case" {
+            uses nx-action-ct-clear-grouping;
+        }
+    }
     augment "/sal-packet:transmit-packet/sal-packet:input/sal-packet:action/sal-packet:action" {
         case "nx-action-learn-rpc-transmit-packet-case" {
             uses nx-action-learn-grouping;
         }
     }
+    augment "/sal-packet:transmit-packet/sal-packet:input/sal-packet:action/sal-packet:action" {
+        case "nx-action-encap-rpc-transmit-packet-case" {
+            uses nx-action-encap-grouping;
+        }
+    }
+    augment "/sal-packet:transmit-packet/sal-packet:input/sal-packet:action/sal-packet:action" {
+        case "nx-action-decap-rpc-transmit-packet-case" {
+            uses nx-action-decap-grouping;
+        }
+    }
 
     // DATA
     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" {
@@ -1225,6 +1612,11 @@ bits specified from the register.";
             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-fin-timeout-nodes-node-table-flow-write-actions-case" {
+            uses nx-action-fin-timeout-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-multipath-nodes-node-table-flow-write-actions-case" {
             uses nx-action-multipath-grouping;
@@ -1245,11 +1637,26 @@ bits specified from the register.";
             uses nx-action-conntrack-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-ct-clear-nodes-node-table-flow-write-actions-case" {
+            uses nx-action-ct-clear-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-learn-nodes-node-table-flow-write-actions-case" {
             uses nx-action-learn-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-encap-nodes-node-table-flow-write-actions-case" {
+            uses nx-action-encap-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-decap-nodes-node-table-flow-write-actions-case" {
+            uses nx-action-decap-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-reg-load-nodes-node-table-flow-apply-actions-case" {
@@ -1271,6 +1678,11 @@ bits specified from the register.";
             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-fin-timeout-nodes-node-table-flow-apply-actions-case" {
+            uses nx-action-fin-timeout-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-multipath-nodes-node-table-flow-apply-actions-case" {
             uses nx-action-multipath-grouping;
@@ -1291,11 +1703,26 @@ bits specified from the register.";
             uses nx-action-conntrack-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-ct-clear-nodes-node-table-flow-apply-actions-case" {
+            uses nx-action-ct-clear-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-learn-nodes-node-table-flow-apply-actions-case" {
             uses nx-action-learn-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-encap-nodes-node-table-flow-apply-actions-case" {
+            uses nx-action-encap-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-decap-nodes-node-table-flow-apply-actions-case" {
+            uses nx-action-decap-grouping;
+        }
+    }
 
     augment "/inv:nodes/inv:node/fni:group/fni:buckets/fni:bucket/fni:action/fni:action" {
         case "nx-action-reg-load-nodes-node-group-buckets-bucket-actions-case" {
@@ -1317,6 +1744,11 @@ bits specified from the register.";
             uses nx-action-resubmit-grouping;
         }
     }
+    augment "/inv:nodes/inv:node/fni:group/fni:buckets/fni:bucket/fni:action/fni:action" {
+        case "nx-action-fin-timeout-nodes-node-group-buckets-bucket-actions-case" {
+            uses nx-action-fin-timeout-grouping;
+        }
+    }
     augment "/inv:nodes/inv:node/fni:group/fni:buckets/fni:bucket/fni:action/fni:action" {
         case "nx-action-multipath-nodes-node-group-buckets-bucket-actions-case" {
             uses nx-action-multipath-grouping;
@@ -1337,11 +1769,26 @@ bits specified from the register.";
             uses nx-action-conntrack-grouping;
         }
     }
+    augment "/inv:nodes/inv:node/fni:group/fni:buckets/fni:bucket/fni:action/fni:action" {
+        case "nx-action-ct-clear-nodes-node-group-buckets-bucket-actions-case" {
+            uses nx-action-ct-clear-grouping;
+        }
+    }
     augment "/inv:nodes/inv:node/fni:group/fni:buckets/fni:bucket/fni:action/fni:action" {
         case "nx-action-learn-nodes-node-group-buckets-bucket-actions-case" {
             uses nx-action-learn-grouping;
         }
     }
+    augment "/inv:nodes/inv:node/fni:group/fni:buckets/fni:bucket/fni:action/fni:action" {
+        case "nx-action-encap-nodes-node-group-buckets-bucket-actions-case" {
+            uses nx-action-encap-grouping;
+        }
+    }
+    augment "/inv:nodes/inv:node/fni:group/fni:buckets/fni:bucket/fni:action/fni:action" {
+        case "nx-action-decap-nodes-node-group-buckets-bucket-actions-case" {
+            uses nx-action-decap-grouping;
+        }
+    }
 
     // NOTIFICATIONS
     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" {
@@ -1364,6 +1811,11 @@ bits specified from the register.";
             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-fin-timeout-notif-flows-statistics-update-write-actions-case" {
+            uses nx-action-fin-timeout-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-multipath-notif-flows-statistics-update-write-actions-case" {
             uses nx-action-multipath-grouping;
@@ -1384,11 +1836,26 @@ bits specified from the register.";
             uses nx-action-conntrack-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-ct-clear-notif-flows-statistics-update-write-actions-case" {
+            uses nx-action-ct-clear-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-learn-notif-flows-statistics-update-write-actions-case" {
             uses nx-action-learn-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-encap-notif-flows-statistics-update-write-actions-case" {
+            uses nx-action-encap-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-decap-notif-flows-statistics-update-write-actions-case" {
+            uses nx-action-decap-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-reg-load-notif-flows-statistics-update-apply-actions-case" {
@@ -1410,6 +1877,11 @@ bits specified from the register.";
             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-fin-timeout-notif-flows-statistics-update-apply-actions-case" {
+            uses nx-action-fin-timeout-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-multipath-notif-flows-statistics-update-apply-actions-case" {
             uses nx-action-multipath-grouping;
@@ -1430,11 +1902,26 @@ bits specified from the register.";
             uses nx-action-conntrack-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-ct-clear-notif-flows-statistics-update-apply-actions-case" {
+            uses nx-action-ct-clear-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-learn-notif-flows-statistics-update-apply-actions-case" {
             uses nx-action-learn-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-encap-notif-flows-statistics-update-apply-actions-case" {
+            uses nx-action-encap-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-decap-notif-flows-statistics-update-apply-actions-case" {
+            uses nx-action-decap-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-reg-load-notif-group-desc-stats-updated-case" {
@@ -1456,6 +1943,11 @@ bits specified from the register.";
             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-fin-timeout-notif-group-desc-stats-updated-case" {
+            uses nx-action-fin-timeout-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-multipath-notif-group-desc-stats-updated-case" {
             uses nx-action-multipath-grouping;
@@ -1476,9 +1968,107 @@ bits specified from the register.";
             uses nx-action-conntrack-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-ct-clear-notif-group-desc-stats-updated-case" {
+            uses nx-action-ct-clear-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-learn-notif-group-desc-stats-updated-case" {
             uses nx-action-learn-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-encap-notif-group-desc-stats-updated-case" {
+            uses nx-action-encap-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-decap-notif-group-desc-stats-updated-case" {
+            uses nx-action-decap-grouping;
+        }
+    }
+    augment "/directstat:get-flow-statistics/directstat:output/directstat:flow-and-statistics-map-list/directstat:instructions/directstat:instruction/directstat:instruction/directstat:apply-actions-case/directstat:apply-actions/directstat:action/directstat:action" {
+        case "nx-action-reg-load-notif-direct-statistics-update-apply-actions-case" {
+            uses nx-action-reg-load-grouping;
+        }
+        case "nx-action-reg-move-notif-direct-statistics-update-apply-actions-case" {
+            uses nx-action-reg-move-grouping;
+        }
+        case "nx-action-output-reg-notif-direct-statistics-update-apply-actions-case" {
+            uses nx-action-output-reg-grouping;
+        }
+        case "nx-action-resubmit-notif-direct-statistics-update-apply-actions-case" {
+            uses nx-action-resubmit-grouping;
+        }
+        case "nx-action-fin-timeout-notif-direct-statistics-update-apply-actions-case" {
+            uses nx-action-fin-timeout-grouping;
+        }
+        case "nx-action-multipath-notif-direct-statistics-update-apply-actions-case" {
+            uses nx-action-multipath-grouping;
+        }
+        case "nx-action-push-nsh-notif-direct-statistics-update-apply-actions-case" {
+            uses nx-action-push-nsh-grouping;
+        }
+        case "nx-action-pop-nsh-notif-direct-statistics-update-apply-actions-case" {
+            uses nx-action-pop-nsh-grouping;
+        }
+        case "nx-action-conntrack-notif-direct-statistics-update-apply-actions-case" {
+            uses nx-action-conntrack-grouping;
+        }
+        case "nx-action-ct-clear-notif-direct-statistics-update-apply-actions-case" {
+            uses nx-action-ct-clear-grouping;
+        }
+        case "nx-action-learn-notif-direct-statistics-update-apply-actions-case" {
+            uses nx-action-learn-grouping;
+        }
+        case "nx-action-encap-notif-direct-statistics-update-apply-actions-case" {
+            uses nx-action-encap-grouping;
+        }
+        case "nx-action-decap-notif-direct-statistics-update-apply-actions-case" {
+            uses nx-action-decap-grouping;
+        }
+    }
+
+    augment "/directstat:get-flow-statistics/directstat:output/directstat:flow-and-statistics-map-list/directstat:instructions/directstat:instruction/directstat:instruction/directstat:write-actions-case/directstat:write-actions/directstat:action/directstat:action" {
+        case "nx-action-reg-load-notif-direct-statistics-update-write-actions-case" {
+            uses nx-action-reg-load-grouping;
+        }
+        case "nx-action-reg-move-notif-direct-statistics-update-write-actions-case" {
+            uses nx-action-reg-move-grouping;
+        }
+        case "nx-action-output-reg-notif-direct-statistics-update-write-actions-case" {
+            uses nx-action-output-reg-grouping;
+        }
+        case "nx-action-resubmit-notif-direct-statistics-update-write-actions-case" {
+            uses nx-action-resubmit-grouping;
+        }
+        case "nx-action-fin-timeout-notif-direct-statistics-update-write-actions-case" {
+            uses nx-action-fin-timeout-grouping;
+        }
+        case "nx-action-multipath-notif-direct-statistics-update-write-actions-case" {
+            uses nx-action-multipath-grouping;
+        }
+        case "nx-action-push-nsh-notif-direct-statistics-update-write-actions-case" {
+            uses nx-action-push-nsh-grouping;
+        }
+        case "nx-action-pop-nsh-notif-direct-statistics-update-write-actions-case" {
+            uses nx-action-pop-nsh-grouping;
+        }
+        case "nx-action-conntrack-notif-direct-statistics-update-write-actions-case" {
+            uses nx-action-conntrack-grouping;
+        }
+        case "nx-action-ct-clear-notif-direct-statistics-update-write-actions-case" {
+            uses nx-action-ct-clear-grouping;
+        }
+        case "nx-action-learn-notif-direct-statistics-update-write-actions-case" {
+            uses nx-action-learn-grouping;
+        }
+        case "nx-action-encap-notif-direct-statistics-update-write-actions-case" {
+            uses nx-action-encap-grouping;
+        }
+        case "nx-action-decap-notif-direct-statistics-update-write-actions-case" {
+            uses nx-action-decap-grouping;
+        }
+    }
 }