Fix Direct statistics RPC - actions part
[openflowplugin.git] / extension / openflowplugin-extension-nicira / src / main / yang / openflowplugin-extension-nicira-action.yang
index 475ffaa6d0488c0ef69cc74a3f1d4634bbe020c3..4853a724d25d40780c46b06ff7223c4a0476f82c 100644 (file)
@@ -3,7 +3,7 @@ module openflowplugin-extension-nicira-action {
 
     namespace "urn:opendaylight:openflowplugin:extension:nicira:action";
     prefix "openflowplugin-nicira-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";}
@@ -16,14 +16,15 @@ 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";}
 
-    description 
+    description
         "Nicira openflow action extensions.";
 
     revision "2014-07-14" {
         description "Initial revision";
     }
-    
+
     identity nx-action-reg-load-key {
         base ext-gen:extension-key;
     }
@@ -53,6 +54,11 @@ module openflowplugin-extension-nicira-action {
             type empty;
         }
     }
+    grouping oxm-of-mpls-label-grouping {
+        leaf of-mpls-label {
+            type empty;
+        }
+    }
     grouping nxm-of-arp-op-grouping {
         leaf of-arp-op {
             type empty;
@@ -68,6 +74,11 @@ module openflowplugin-extension-nicira-action {
             type empty;
         }
     }
+    grouping nxm-of-in-port-grouping {
+        leaf of-in-port {
+            type empty;
+        }
+    }
     grouping nxm-nx-tun-ipv4-dst-grouping {
         leaf nx-tun-ipv4-dst {
             type empty;
@@ -123,6 +134,46 @@ module openflowplugin-extension-nicira-action {
             type empty;
         }
     }
+    grouping nxm-of-ip-src-grouping {
+        leaf of-ip-src {
+            type empty;
+        }
+    }
+    grouping nxm-of-ip-dst-grouping {
+        leaf of-ip-dst {
+            type empty;
+        }
+    }
+    grouping nxm-of-icmp-type-grouping {
+        leaf of-icmp-type {
+            type empty;
+        }
+    }
+    grouping nxm-nx-encap-eth-src-grouping {
+        leaf nx-encap-eth-src {
+            type empty;
+        }
+    }
+    grouping nxm-nx-encap-eth-dst-grouping {
+        leaf nx-encap-eth-dst {
+            type empty;
+        }
+    }
+    grouping nxm-nx-nsh-mdtype-grouping {
+        leaf nx-nsh-mdtype {
+            type empty;
+        }
+    }
+    grouping nxm-nx-nsh-np-grouping {
+        leaf nx-nsh-np {
+            type empty;
+        }
+    }
+    grouping nxm-nx-tun-gpe-np-grouping {
+        leaf nx-tun-gpe-np {
+            type empty;
+        }
+    }
 
     grouping dst-choice-grouping {
         choice dst-choice {
@@ -132,6 +183,9 @@ 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-nx-arp-sha-case {
                 uses nxm-nx-arp-sha-grouping;
             }
@@ -147,6 +201,9 @@ module openflowplugin-extension-nicira-action {
             case dst-of-arp-tpa-case {
                 uses nxm-of-arp-tpa-grouping;
             }
+            case dst-nx-of-in-port-case {
+                uses nxm-of-in-port-grouping;
+            }
             case dst-nx-tun-ipv4-dst-case {
                 uses nxm-nx-tun-ipv4-dst-grouping;
             }
@@ -177,9 +234,33 @@ module openflowplugin-extension-nicira-action {
             case dst-nx-nshc-4-case {
                 uses nxm-nx-nshc-4-grouping;
             }
+            case dst-of-ip-src-case {
+                uses nxm-of-ip-src-grouping;
+            }
+            case dst-of-ip-dst-case {
+                uses nxm-of-ip-dst-grouping;
+            }
+            case dst-of-icmp-type-case {
+                uses nxm-of-icmp-type-grouping;
+            }
+            case dst-nx-encap-eth-src-case {
+                uses nxm-nx-encap-eth-src-grouping;
+            }
+            case dst-nx-encap-eth-dst-case {
+                uses nxm-nx-encap-eth-dst-grouping;
+            }
+            case dst-nx-nsh-mdtype-case {
+                uses nxm-nx-nsh-mdtype-grouping;
+            }
+            case dst-nx-nsh-np-case {
+                uses nxm-nx-nsh-np-grouping;
+            }
+            case dst-nx-tun-gpe-np-case {
+                uses nxm-nx-tun-gpe-np-grouping;
+            }
         }
     }
-    
+
     grouping src-choice-grouping {
         choice src-choice {
             case src-nx-reg-case {
@@ -188,6 +269,9 @@ 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-arp-sha-case {
                 uses nxm-nx-arp-sha-grouping;
             }
@@ -203,6 +287,9 @@ module openflowplugin-extension-nicira-action {
             case src-of-arp-tpa-case {
                 uses nxm-of-arp-tpa-grouping;
             }
+            case src-nx-of-in-port-case {
+                uses nxm-of-in-port-grouping;
+            }
             case src-nx-tun-ipv4-dst-case {
                 uses nxm-nx-tun-ipv4-dst-grouping;
             }
@@ -236,9 +323,30 @@ module openflowplugin-extension-nicira-action {
             case src-nx-nshc-4-case {
                 uses nxm-nx-nshc-4-grouping;
             }
+            case src-of-ip-src-case {
+                uses nxm-of-ip-src-grouping;
+            }
+            case src-of-ip-dst-case {
+                uses nxm-of-ip-dst-grouping;
+            }
+            case src-nx-encap-eth-src-case {
+                uses nxm-nx-encap-eth-src-grouping;
+            }
+            case src-nx-encap-eth-dst-case {
+                uses nxm-nx-encap-eth-dst-grouping;
+            }
+            case src-nx-nsh-mdtype-case {
+                uses nxm-nx-nsh-mdtype-grouping;
+            }
+            case src-nx-nsh-np-case {
+                uses nxm-nx-nsh-np-grouping;
+            }
+            case src-nx-tun-gpe-np-case {
+                uses nxm-nx-tun-gpe-np-grouping;
+            }
         }
     }
-    
+
     grouping range-grouping {
         leaf start {
             description "Include value.";
@@ -249,7 +357,7 @@ module openflowplugin-extension-nicira-action {
             type uint16;
         }
     }
-    
+
     grouping nx-action-reg-load-grouping {
         container nx-reg-load {
             container dst {
@@ -262,7 +370,7 @@ module openflowplugin-extension-nicira-action {
             }
         }
     }
-    
+
     grouping nx-action-reg-move-grouping {
         container nx-reg-move {
             container src {
@@ -280,7 +388,7 @@ module openflowplugin-extension-nicira-action {
     grouping nx-action-output-reg-grouping {
         container nx-output-reg {
             container src {
-                description "Choose the register with the OpenFlow output port, using the number of 
+                description "Choose the register with the OpenFlow output port, using the number of
 bits specified from the register.";
                 uses src-choice-grouping;
                 leaf ofs_nbits {
@@ -311,6 +419,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 {
@@ -337,59 +456,176 @@ bits specified from the register.";
         }
     }
 
-    grouping nx-action-set-nsp-grouping {
-        container nx-set-nsp {
-            description "Sets NSP header";
-            description "Sets NSH Service Path ID (NSP) header";
-            leaf nsp {
-                type uint32;
-            }
+    grouping nx-action-push-nsh-grouping {
+        container nx-push-nsh {
+            presence "no content action";
+            description "Push NSH header";
+        }
+    }
+    grouping nx-action-pop-nsh-grouping {
+        container nx-pop-nsh {
+            presence "no content action";
+            description "Pop NSH header";
         }
     }
 
-    grouping nx-action-set-nsi-grouping {
-        container nx-set-nsi {
-            description "Sets NSH Service Index (NSI) header";
-            leaf nsi {
+    grouping nx-action-conntrack-grouping {
+        container nx-conntrack {
+            leaf flags {
+                type uint16;
+            }
+            leaf zone-src {
+                type uint32;
+            }
+            leaf conntrack-zone {
+                type uint16;
+            }
+            leaf recirc-table {
                 type uint8;
             }
         }
     }
-    
-    grouping nx-action-set-nshc-grouping {
-        leaf nshc {
-            type uint32;
-        }
-    }
-    
-    grouping nx-action-set-nshc-1-grouping {
-        container nx-set-nshc-1 {
-            description "Sets NSC1 header";
-            uses nx-action-set-nshc-grouping;
-        }
-    }
 
-    grouping nx-action-set-nshc-2-grouping {
-        container nx-set-nshc-2 {
-            description "Sets NSC2 header";
-            uses nx-action-set-nshc-grouping;
-        }
-    }
+    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-value-case{
+                container flow-mod-add-match-from-value{
+                        leaf flow-mod-num-bits{
+                        type uint16;
+                    }
 
-    grouping nx-action-set-nshc-3-grouping {
-        container nx-set-nshc-3 {
-            description "Sets NSC3 header";
-            uses nx-action-set-nshc-grouping;
+                    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 nx-action-set-nshc-4-grouping {
-        container nx-set-nshc-4 {
-            description "Sets NSC4 header";
-            uses nx-action-set-nshc-grouping;
+    grouping nx-action-learn-grouping {
+        container nx-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;
+            }
         }
     }
 
+
     // ACTION augmentations
     // RPCS
     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" {
@@ -413,38 +649,33 @@ bits specified from the register.";
         }
     }
     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;
+        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-set-nsp-rpc-add-flow-write-actions-case {
-            uses nx-action-set-nsp-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-set-nshc-1-rpc-add-flow-write-actions-case {
-            uses nx-action-set-nshc-1-grouping;
+        case nx-action-multipath-rpc-add-flow-write-actions-case {
+            uses nx-action-multipath-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-set-nshc-2-rpc-add-flow-write-actions-case {
-            uses nx-action-set-nshc-2-grouping;
+        case nx-action-push-nsh-rpc-add-flow-write-actions-case {
+            uses nx-action-push-nsh-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-set-nshc-3-rpc-add-flow-write-actions-case {
-            uses nx-action-set-nshc-3-grouping;
+        case nx-action-pop-nsh-rpc-add-flow-write-actions-case {
+            uses nx-action-pop-nsh-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-set-nshc-4-rpc-add-flow-write-actions-case {
-            uses nx-action-set-nshc-4-grouping;
+        case nx-action-conntrack-rpc-add-flow-write-actions-case {
+            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-set-nsi-rpc-add-flow-write-actions-case {
-            uses nx-action-set-nsi-grouping;
+        case nx-action-learn-rpc-add-flow-write-actions-case {
+            uses nx-action-learn-grouping;
         }
     }
 
@@ -469,43 +700,37 @@ bits specified from the register.";
         }
     }
     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;
-        }
-    }
-    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-set-nsp-rpc-add-flow-apply-actions-case {
-            uses nx-action-set-nsp-grouping;
+        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-set-nshc-1-rpc-add-flow-apply-actions-case {
-            uses nx-action-set-nshc-1-grouping;
+        case nx-action-multipath-rpc-add-flow-apply-actions-case {
+            uses nx-action-multipath-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-set-nshc-2-rpc-add-flow-apply-actions-case {
-            uses nx-action-set-nshc-2-grouping;
+        case nx-action-push-nsh-rpc-add-flow-apply-actions-case {
+            uses nx-action-push-nsh-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-set-nshc-3-rpc-add-flow-apply-actions-case {
-            uses nx-action-set-nshc-3-grouping;
+        case nx-action-pop-nsh-rpc-add-flow-apply-actions-case {
+            uses nx-action-pop-nsh-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-set-nshc-4-rpc-add-flow-apply-actions-case {
-            uses nx-action-set-nshc-4-grouping;
+        case nx-action-conntrack-rpc-add-flow-apply-actions-case {
+            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-set-nsi-rpc-add-flow-apply-actions-case {
-            uses nx-action-set-nsi-grouping;
+        case nx-action-learn-rpc-add-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:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
         case "nx-action-reg-load-rpc-remove-flow-write-actions-case" {
             uses nx-action-reg-load-grouping;
@@ -527,38 +752,33 @@ bits specified from the register.";
         }
     }
     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;
-        }
-    }
-    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-set-nsp-rpc-remove-flow-write-actions-case {
-            uses nx-action-set-nsp-grouping;
+        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-set-nshc-1-rpc-remove-flow-write-actions-case {
-            uses nx-action-set-nshc-1-grouping;
+        case nx-action-multipath-rpc-remove-flow-write-actions-case {
+            uses nx-action-multipath-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-set-nshc-2-rpc-remove-flow-write-actions-case {
-            uses nx-action-set-nshc-2-grouping;
+        case nx-action-push-nsh-rpc-remove-flow-write-actions-case {
+            uses nx-action-push-nsh-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-set-nshc-3-rpc-remove-flow-write-actions-case {
-            uses nx-action-set-nshc-3-grouping;
+        case nx-action-pop-nsh-rpc-remove-flow-write-actions-case {
+            uses nx-action-pop-nsh-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-set-nshc-4-rpc-remove-flow-write-actions-case {
-            uses nx-action-set-nshc-4-grouping;
+        case nx-action-conntrack-rpc-remove-flow-write-actions-case {
+            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-set-nsi-rpc-remove-flow-write-actions-case {
-            uses nx-action-set-nsi-grouping;
+        case nx-action-learn-rpc-remove-flow-write-actions-case {
+            uses nx-action-learn-grouping;
         }
     }
 
@@ -583,41 +803,36 @@ bits specified from the register.";
         }
     }
     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;
+        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-set-nsp-rpc-remove-flow-apply-actions-case {
-            uses nx-action-set-nsp-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-set-nshc-1-rpc-remove-flow-apply-actions-case {
-            uses nx-action-set-nshc-1-grouping;
+        case nx-action-multipath-rpc-remove-flow-apply-actions-case {
+            uses nx-action-multipath-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-set-nshc-2-rpc-remove-flow-apply-actions-case {
-            uses nx-action-set-nshc-2-grouping;
+        case nx-action-push-nsh-rpc-remove-flow-apply-actions-case {
+            uses nx-action-push-nsh-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-set-nshc-3-rpc-remove-flow-apply-actions-case {
-            uses nx-action-set-nshc-3-grouping;
+        case nx-action-pop-nsh-rpc-remove-flow-apply-actions-case {
+            uses nx-action-pop-nsh-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-set-nshc-4-rpc-remove-flow-apply-actions-case {
-            uses nx-action-set-nshc-4-grouping;
+        case nx-action-conntrack-rpc-remove-flow-apply-actions-case {
+            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-set-nsi-rpc-remove-flow-apply-actions-case {
-            uses nx-action-set-nsi-grouping;
+        case nx-action-learn-rpc-remove-flow-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: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" {
             uses nx-action-reg-load-grouping;
@@ -639,38 +854,33 @@ bits specified from the register.";
         }
     }
     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;
+        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-set-nsp-rpc-update-flow-original-write-actions-case" {
-            uses nx-action-set-nsp-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-set-nshc-1-rpc-update-flow-original-write-actions-case" {
-            uses nx-action-set-nshc-1-grouping;
+        case "nx-action-multipath-rpc-update-flow-original-write-actions-case" {
+            uses nx-action-multipath-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-set-nshc-2-rpc-update-flow-original-write-actions-case" {
-            uses nx-action-set-nshc-2-grouping;
+        case "nx-action-push-nsh-rpc-update-flow-original-write-actions-case" {
+            uses nx-action-push-nsh-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-set-nshc-3-rpc-update-flow-original-write-actions-case" {
-            uses nx-action-set-nshc-3-grouping;
+        case "nx-action-pop-nsh-rpc-update-flow-original-write-actions-case" {
+            uses nx-action-pop-nsh-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-set-nshc-4-rpc-update-flow-original-write-actions-case" {
-            uses nx-action-set-nshc-4-grouping;
+        case "nx-action-conntrack-rpc-update-flow-original-write-actions-case" {
+            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-set-nsi-rpc-update-flow-original-write-actions-case" {
-            uses nx-action-set-nsi-grouping;
+        case "nx-action-learn-rpc-update-flow-original-write-actions-case" {
+            uses nx-action-learn-grouping;
         }
     }
 
@@ -695,38 +905,33 @@ bits specified from the register.";
         }
     }
     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;
+        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-set-nsp-rpc-update-flow-original-apply-actions-case" {
-            uses nx-action-set-nsp-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-set-nshc-1-rpc-update-flow-original-apply-actions-case" {
-            uses nx-action-set-nshc-1-grouping;
+        case "nx-action-multipath-rpc-update-flow-original-apply-actions-case" {
+            uses nx-action-multipath-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-set-nshc-2-rpc-update-flow-original-apply-actions-case" {
-            uses nx-action-set-nshc-2-grouping;
+        case "nx-action-push-nsh-rpc-update-flow-original-apply-actions-case" {
+            uses nx-action-push-nsh-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-set-nshc-3-rpc-update-flow-original-apply-actions-case" {
-            uses nx-action-set-nshc-3-grouping;
+        case "nx-action-pop-nsh-rpc-update-flow-original-apply-actions-case" {
+            uses nx-action-pop-nsh-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-set-nshc-4-rpc-update-flow-original-apply-actions-case" {
-            uses nx-action-set-nshc-4-grouping;
+        case "nx-action-conntrack-rpc-update-flow-original-apply-actions-case" {
+            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-set-nsi-rpc-update-flow-original-apply-actions-case" {
-            uses nx-action-set-nsi-grouping;
+        case "nx-action-learn-rpc-update-flow-original-apply-actions-case" {
+            uses nx-action-learn-grouping;
         }
     }
 
@@ -751,38 +956,33 @@ bits specified from the register.";
         }
     }
     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;
+        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-set-nsp-rpc-update-flow-updated-write-actions-case" {
-            uses nx-action-set-nsp-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-set-nshc-1-rpc-update-flow-updated-write-actions-case" {
-            uses nx-action-set-nshc-1-grouping;
+        case "nx-action-multipath-rpc-update-flow-updated-write-actions-case" {
+            uses nx-action-multipath-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-set-nshc-2-rpc-update-flow-updated-write-actions-case" {
-            uses nx-action-set-nshc-2-grouping;
+        case "nx-action-push-nsh-rpc-update-flow-updated-write-actions-case" {
+            uses nx-action-push-nsh-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-set-nshc-3-rpc-update-flow-updated-write-actions-case" {
-            uses nx-action-set-nshc-3-grouping;
+        case "nx-action-pop-nsh-rpc-update-flow-updated-write-actions-case" {
+            uses nx-action-pop-nsh-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-set-nshc-4-rpc-update-flow-updated-write-actions-case" {
-            uses nx-action-set-nshc-4-grouping;
+        case "nx-action-conntrack-rpc-update-flow-updated-write-actions-case" {
+            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-set-nsi-rpc-update-flow-updated-write-actions-case" {
-            uses nx-action-set-nsi-grouping;
+        case "nx-action-learn-rpc-update-flow-updated-write-actions-case" {
+            uses nx-action-learn-grouping;
         }
     }
 
@@ -807,41 +1007,36 @@ bits specified from the register.";
         }
     }
     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;
-        }
-    }
-    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-set-nsp-rpc-update-flow-updated-apply-actions-case" {
-            uses nx-action-set-nsp-grouping;
+        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-set-nshc-1-rpc-update-flow-updated-apply-actions-case" {
-            uses nx-action-set-nshc-1-grouping;
+        case "nx-action-multipath-rpc-update-flow-updated-apply-actions-case" {
+            uses nx-action-multipath-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-set-nshc-2-rpc-update-flow-updated-apply-actions-case" {
-            uses nx-action-set-nshc-2-grouping;
+        case "nx-action-push-nsh-rpc-update-flow-updated-apply-actions-case" {
+            uses nx-action-push-nsh-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-set-nshc-3-rpc-update-flow-updated-apply-actions-case" {
-            uses nx-action-set-nshc-3-grouping;
+        case "nx-action-pop-nsh-rpc-update-flow-updated-apply-actions-case" {
+            uses nx-action-pop-nsh-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-set-nshc-4-rpc-update-flow-updated-apply-actions-case" {
-            uses nx-action-set-nshc-4-grouping;
+        case "nx-action-conntrack-rpc-update-flow-updated-apply-actions-case" {
+            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-set-nsi-rpc-update-flow-updated-apply-actions-case" {
-            uses nx-action-set-nsi-grouping;
+        case "nx-action-learn-rpc-update-flow-updated-apply-actions-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-reg-load-rpc-add-group-case" {
             uses nx-action-reg-load-grouping;
@@ -863,41 +1058,36 @@ bits specified from the register.";
         }
     }
     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;
+        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-set-nsp-rpc-add-group-case" {
-            uses nx-action-set-nsp-grouping;
-        }
-    }
-    augment "/sal-group:add-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
-        case "nx-action-set-nshc-1-rpc-add-group-case" {
-            uses nx-action-set-nshc-1-grouping;
+        case "nx-action-multipath-rpc-add-group-case" {
+            uses nx-action-multipath-grouping;
         }
     }
     augment "/sal-group:add-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
-        case "nx-action-set-nshc-2-rpc-add-group-case" {
-            uses nx-action-set-nshc-2-grouping;
+        case "nx-action-push-nsh-rpc-add-group-case" {
+            uses nx-action-push-nsh-grouping;
         }
     }
     augment "/sal-group:add-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
-        case "nx-action-set-nshc-3-rpc-add-group-case" {
-            uses nx-action-set-nshc-3-grouping;
+        case "nx-action-pop-nsh-rpc-add-group-case" {
+            uses nx-action-pop-nsh-grouping;
         }
     }
     augment "/sal-group:add-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
-        case "nx-action-set-nshc-4-rpc-add-group-case" {
-            uses nx-action-set-nshc-4-grouping;
+        case "nx-action-conntrack-rpc-add-group-case" {
+            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-set-nsi-rpc-add-group-case" {
-            uses nx-action-set-nsi-grouping;
+        case "nx-action-learn-rpc-add-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-reg-load-rpc-remove-group-case" {
             uses nx-action-reg-load-grouping;
@@ -919,41 +1109,36 @@ bits specified from the register.";
         }
     }
     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;
-        }
-    }
-    augment "/sal-group:remove-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
-        case "nx-action-set-nsp-rpc-remove-group-case" {
-            uses nx-action-set-nsp-grouping;
+        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-set-nshc-1-rpc-remove-group-case" {
-            uses nx-action-set-nshc-1-grouping;
+        case "nx-action-multipath-rpc-remove-group-case" {
+            uses nx-action-multipath-grouping;
         }
     }
     augment "/sal-group:remove-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
-        case "nx-action-set-nshc-2-rpc-remove-group-case" {
-            uses nx-action-set-nshc-2-grouping;
+        case "nx-action-push-nsh-rpc-remove-group-case" {
+            uses nx-action-push-nsh-grouping;
         }
     }
     augment "/sal-group:remove-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
-        case "nx-action-set-nshc-3-rpc-remove-group-case" {
-            uses nx-action-set-nshc-3-grouping;
+        case "nx-action-pop-nsh-rpc-remove-group-case" {
+            uses nx-action-pop-nsh-grouping;
         }
     }
     augment "/sal-group:remove-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
-        case "nx-action-set-nshc-4-rpc-remove-group-case" {
-            uses nx-action-set-nshc-4-grouping;
+        case "nx-action-conntrack-rpc-remove-group-case" {
+            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-set-nsi-rpc-remove-group-case" {
-            uses nx-action-set-nsi-grouping;
+        case "nx-action-learn-rpc-remove-group-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-reg-load-rpc-update-group-original-case" {
             uses nx-action-reg-load-grouping;
@@ -975,38 +1160,33 @@ bits specified from the register.";
         }
     }
     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;
-        }
-    }
-    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-set-nsp-rpc-update-group-original-case" {
-            uses nx-action-set-nsp-grouping;
+        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-set-nshc-1-rpc-update-group-original-case" {
-            uses nx-action-set-nshc-1-grouping;
+        case "nx-action-multipath-rpc-update-group-original-case" {
+            uses nx-action-multipath-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-set-nshc-2-rpc-update-group-original-case" {
-            uses nx-action-set-nshc-2-grouping;
+        case "nx-action-push-nsh-rpc-update-group-original-case" {
+            uses nx-action-push-nsh-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-set-nshc-3-rpc-update-group-original-case" {
-            uses nx-action-set-nshc-3-grouping;
+        case "nx-action-pop-nsh-rpc-update-group-original-case" {
+            uses nx-action-pop-nsh-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-set-nshc-4-rpc-update-group-original-case" {
-            uses nx-action-set-nshc-4-grouping;
+        case "nx-action-conntrack-rpc-update-group-original-case" {
+            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-set-nsi-rpc-update-group-original-case" {
-            uses nx-action-set-nsi-grouping;
+        case "nx-action-learn-rpc-update-group-original-case" {
+            uses nx-action-learn-grouping;
         }
     }
 
@@ -1031,41 +1211,36 @@ bits specified from the register.";
         }
     }
     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;
+        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-set-nsp-rpc-update-group-updated-case" {
-            uses nx-action-set-nsp-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-set-nshc-1-rpc-update-group-updated-case" {
-            uses nx-action-set-nshc-1-grouping;
+        case "nx-action-multipath-rpc-update-group-updated-case" {
+            uses nx-action-multipath-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-set-nshc-2-rpc-update-group-updated-case" {
-            uses nx-action-set-nshc-2-grouping;
+        case "nx-action-push-nsh-rpc-update-group-updated-case" {
+            uses nx-action-push-nsh-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-set-nshc-3-rpc-update-group-updated-case" {
-            uses nx-action-set-nshc-3-grouping;
+        case "nx-action-pop-nsh-rpc-update-group-updated-case" {
+            uses nx-action-pop-nsh-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-set-nshc-4-rpc-update-group-updated-case" {
-            uses nx-action-set-nshc-4-grouping;
+        case "nx-action-conntrack-rpc-update-group-updated-case" {
+            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-set-nsi-rpc-update-group-updated-case" {
-            uses nx-action-set-nsi-grouping;
+        case "nx-action-learn-rpc-update-group-updated-case" {
+            uses nx-action-learn-grouping;
         }
     }
-    
+
     augment "/sal-packet:transmit-packet/sal-packet:input/sal-packet:action/sal-packet:action" {
         case "nx-action-reg-load-rpc-transmit-packet-case" {
             uses nx-action-reg-load-grouping;
@@ -1087,41 +1262,36 @@ bits specified from the register.";
         }
     }
     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;
+        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-set-nsp-rpc-transmit-packet-case" {
-            uses nx-action-set-nsp-grouping;
-        }
-    }
-    augment "/sal-packet:transmit-packet/sal-packet:input/sal-packet:action/sal-packet:action" {
-        case "nx-action-set-nshc-1-rpc-transmit-packet-case" {
-            uses nx-action-set-nshc-1-grouping;
+        case "nx-action-multipath-rpc-transmit-packet-case" {
+            uses nx-action-multipath-grouping;
         }
     }
     augment "/sal-packet:transmit-packet/sal-packet:input/sal-packet:action/sal-packet:action" {
-        case "nx-action-set-nshc-2-rpc-transmit-packet-case" {
-            uses nx-action-set-nshc-2-grouping;
+        case "nx-action-push-nsh-rpc-transmit-packet-case" {
+            uses nx-action-push-nsh-grouping;
         }
     }
     augment "/sal-packet:transmit-packet/sal-packet:input/sal-packet:action/sal-packet:action" {
-        case "nx-action-set-nshc-3-rpc-transmit-packet-case" {
-            uses nx-action-set-nshc-3-grouping;
+        case "nx-action-pop-nsh-rpc-transmit-packet-case" {
+            uses nx-action-pop-nsh-grouping;
         }
     }
     augment "/sal-packet:transmit-packet/sal-packet:input/sal-packet:action/sal-packet:action" {
-        case "nx-action-set-nshc-4-rpc-transmit-packet-case" {
-            uses nx-action-set-nshc-4-grouping;
+        case "nx-action-conntrack-rpc-transmit-packet-case" {
+            uses nx-action-conntrack-grouping;
         }
     }
     augment "/sal-packet:transmit-packet/sal-packet:input/sal-packet:action/sal-packet:action" {
-        case "nx-action-set-nsi-rpc-transmit-packet-case" {
-            uses nx-action-set-nsi-grouping;
+        case "nx-action-learn-rpc-transmit-packet-case" {
+            uses nx-action-learn-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" {
         case "nx-action-reg-load-nodes-node-table-flow-write-actions-case" {
@@ -1144,38 +1314,33 @@ bits specified from the register.";
         }
     }
     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;
-        }
-    }
-    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-set-nsp-nodes-node-table-flow-write-actions-case" {
-            uses nx-action-set-nsp-grouping;
+        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-set-nshc-1-nodes-node-table-flow-write-actions-case" {
-            uses nx-action-set-nshc-1-grouping;
+        case "nx-action-multipath-nodes-node-table-flow-write-actions-case" {
+            uses nx-action-multipath-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-set-nshc-2-nodes-node-table-flow-write-actions-case" {
-            uses nx-action-set-nshc-2-grouping;
+        case "nx-action-push-nsh-nodes-node-table-flow-write-actions-case" {
+            uses nx-action-push-nsh-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-set-nshc-3-nodes-node-table-flow-write-actions-case" {
-            uses nx-action-set-nshc-3-grouping;
+        case "nx-action-pop-nsh-nodes-node-table-flow-write-actions-case" {
+            uses nx-action-pop-nsh-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-set-nshc-4-nodes-node-table-flow-write-actions-case" {
-            uses nx-action-set-nshc-4-grouping;
+        case "nx-action-conntrack-nodes-node-table-flow-write-actions-case" {
+            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-set-nsi-nodes-node-table-flow-write-actions-case" {
-            uses nx-action-set-nsi-grouping;
+        case "nx-action-learn-nodes-node-table-flow-write-actions-case" {
+            uses nx-action-learn-grouping;
         }
     }
 
@@ -1200,41 +1365,36 @@ bits specified from the register.";
         }
     }
     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;
+        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-set-nsp-nodes-node-table-flow-apply-actions-case" {
-            uses nx-action-set-nsp-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-set-nshc-1-nodes-node-table-flow-apply-actions-case" {
-            uses nx-action-set-nshc-1-grouping;
+        case "nx-action-multipath-nodes-node-table-flow-apply-actions-case" {
+            uses nx-action-multipath-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-set-nshc-2-nodes-node-table-flow-apply-actions-case" {
-            uses nx-action-set-nshc-2-grouping;
+        case "nx-action-push-nsh-nodes-node-table-flow-apply-actions-case" {
+            uses nx-action-push-nsh-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-set-nshc-3-nodes-node-table-flow-apply-actions-case" {
-            uses nx-action-set-nshc-3-grouping;
+        case "nx-action-pop-nsh-nodes-node-table-flow-apply-actions-case" {
+            uses nx-action-pop-nsh-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-set-nshc-4-nodes-node-table-flow-apply-actions-case" {
-            uses nx-action-set-nshc-4-grouping;
+        case "nx-action-conntrack-nodes-node-table-flow-apply-actions-case" {
+            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-set-nsi-nodes-node-table-flow-apply-actions-case" {
-            uses nx-action-set-nsi-grouping;
+        case "nx-action-learn-nodes-node-table-flow-apply-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-reg-load-nodes-node-group-buckets-bucket-actions-case" {
             uses nx-action-reg-load-grouping;
@@ -1256,41 +1416,36 @@ bits specified from the register.";
         }
     }
     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;
+        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-set-nsp-nodes-node-group-buckets-bucket-actions-case" {
-            uses nx-action-set-nsp-grouping;
-        }
-    }
-    augment "/inv:nodes/inv:node/fni:group/fni:buckets/fni:bucket/fni:action/fni:action" {
-        case "nx-action-set-nshc-1-nodes-node-group-buckets-bucket-actions-case" {
-            uses nx-action-set-nshc-1-grouping;
+        case "nx-action-multipath-nodes-node-group-buckets-bucket-actions-case" {
+            uses nx-action-multipath-grouping;
         }
     }
     augment "/inv:nodes/inv:node/fni:group/fni:buckets/fni:bucket/fni:action/fni:action" {
-        case "nx-action-set-nshc-2-nodes-node-group-buckets-bucket-actions-case" {
-            uses nx-action-set-nshc-2-grouping;
+        case "nx-action-push-nsh-nodes-node-group-buckets-bucket-actions-case" {
+            uses nx-action-push-nsh-grouping;
         }
     }
     augment "/inv:nodes/inv:node/fni:group/fni:buckets/fni:bucket/fni:action/fni:action" {
-        case "nx-action-set-nshc-3-nodes-node-group-buckets-bucket-actions-case" {
-            uses nx-action-set-nshc-3-grouping;
+        case "nx-action-pop-nsh-nodes-node-group-buckets-bucket-actions-case" {
+            uses nx-action-pop-nsh-grouping;
         }
     }
     augment "/inv:nodes/inv:node/fni:group/fni:buckets/fni:bucket/fni:action/fni:action" {
-        case "nx-action-set-nshc-4-nodes-node-group-buckets-bucket-actions-case" {
-            uses nx-action-set-nshc-4-grouping;
+        case "nx-action-conntrack-nodes-node-group-buckets-bucket-actions-case" {
+            uses nx-action-conntrack-grouping;
         }
     }
     augment "/inv:nodes/inv:node/fni:group/fni:buckets/fni:bucket/fni:action/fni:action" {
-        case "nx-action-set-nsi-nodes-node-group-buckets-bucket-actions-case" {
-            uses nx-action-set-nsi-grouping;
+        case "nx-action-learn-nodes-node-group-buckets-bucket-actions-case" {
+            uses nx-action-learn-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" {
         case "nx-action-reg-load-notif-flows-statistics-update-write-actions-case" {
@@ -1313,38 +1468,33 @@ bits specified from the register.";
         }
     }
     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;
-        }
-    }
-    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-set-nsp-notif-flows-statistics-update-write-actions-case" {
-            uses nx-action-set-nsp-grouping;
+        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-set-nshc-1-notif-flows-statistics-update-write-actions-case" {
-            uses nx-action-set-nshc-1-grouping;
+        case "nx-action-multipath-notif-flows-statistics-update-write-actions-case" {
+            uses nx-action-multipath-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-set-nshc-2-notif-flows-statistics-update-write-actions-case" {
-            uses nx-action-set-nshc-2-grouping;
+        case "nx-action-push-nsh-notif-flows-statistics-update-write-actions-case" {
+            uses nx-action-push-nsh-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-set-nshc-3-notif-flows-statistics-update-write-actions-case" {
-            uses nx-action-set-nshc-3-grouping;
+        case "nx-action-pop-nsh-notif-flows-statistics-update-write-actions-case" {
+            uses nx-action-pop-nsh-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-set-nshc-4-notif-flows-statistics-update-write-actions-case" {
-            uses nx-action-set-nshc-4-grouping;
+        case "nx-action-conntrack-notif-flows-statistics-update-write-actions-case" {
+            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-set-nsi-notif-flows-statistics-update-write-actions-case" {
-            uses nx-action-set-nsi-grouping;
+        case "nx-action-learn-notif-flows-statistics-update-write-actions-case" {
+            uses nx-action-learn-grouping;
         }
     }
 
@@ -1369,41 +1519,36 @@ bits specified from the register.";
         }
     }
     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;
+        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-set-nsp-notif-flows-statistics-update-apply-actions-case" {
-            uses nx-action-set-nsp-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-set-nshc-1-notif-flows-statistics-update-apply-actions-case" {
-            uses nx-action-set-nshc-1-grouping;
+        case "nx-action-multipath-notif-flows-statistics-update-apply-actions-case" {
+            uses nx-action-multipath-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-set-nshc-2-notif-flows-statistics-update-apply-actions-case" {
-            uses nx-action-set-nshc-2-grouping;
+        case "nx-action-push-nsh-notif-flows-statistics-update-apply-actions-case" {
+            uses nx-action-push-nsh-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-set-nshc-3-notif-flows-statistics-update-apply-actions-case" {
-            uses nx-action-set-nshc-3-grouping;
+        case "nx-action-pop-nsh-notif-flows-statistics-update-apply-actions-case" {
+            uses nx-action-pop-nsh-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-set-nshc-4-notif-flows-statistics-update-apply-actions-case" {
-            uses nx-action-set-nshc-4-grouping;
+        case "nx-action-conntrack-notif-flows-statistics-update-apply-actions-case" {
+            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-set-nsi-notif-flows-statistics-update-apply-actions-case" {
-            uses nx-action-set-nsi-grouping;
+        case "nx-action-learn-notif-flows-statistics-update-apply-actions-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-reg-load-notif-group-desc-stats-updated-case" {
             uses nx-action-reg-load-grouping;
@@ -1424,39 +1569,99 @@ 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;
         }
     }
     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-set-nsp-notif-group-desc-stats-updated-case" {
-            uses nx-action-set-nsp-grouping;
+        case "nx-action-push-nsh-notif-group-desc-stats-updated-case" {
+            uses nx-action-push-nsh-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-set-nshc-1-notif-group-desc-stats-updated-case" {
-            uses nx-action-set-nshc-1-grouping;
+        case "nx-action-pop-nsh-notif-group-desc-stats-updated-case" {
+            uses nx-action-pop-nsh-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-set-nshc-2-notif-group-desc-stats-updated-case" {
-            uses nx-action-set-nshc-2-grouping;
+        case "nx-action-conntrack-notif-group-desc-stats-updated-case" {
+            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-set-nshc-3-notif-group-desc-stats-updated-case" {
-            uses nx-action-set-nshc-3-grouping;
+        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-set-nshc-4-notif-group-desc-stats-updated-case" {
-            uses nx-action-set-nshc-4-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-learn-notif-direct-statistics-update-apply-actions-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-set-nsi-notif-group-desc-stats-updated-case" {
-            uses nx-action-set-nsi-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-learn-notif-direct-statistics-update-write-actions-case" {
+            uses nx-action-learn-grouping;
         }
     }
 }