identity nxm-nx-conntrack {
base ofaction:experimenter-action-sub-type;
}
+ identity nxm-nx-learn {
+ base ofaction:experimenter-action-sub-type;
+ }
grouping ofj-nx-action-reg-load-grouping {
container nx-action-reg-load {
}
}
+ grouping flow-mod-spec {
+ description
+ "flow mod spec indicates the actions that should be performed to create a new flow which was learned from learn action.";
+ choice flow-mod-spec{
+ case flow-mod-add-match-from-field-case{
+ container flow-mod-add-match-from-field{
+ leaf flow-mod-num-bits{
+ type uint16;
+ }
+
+ leaf src-field{
+ type uint32;
+ }
+
+ leaf src-ofs{
+ type uint16;
+ }
+
+ leaf dst-field{
+ type uint32;
+ }
+
+ leaf dst-ofs{
+ type uint16;
+ }
+ }
+ }
+ case flow-mod-add-match-from-field-case{
+ container flow-mod-add-match-from-field{
+ leaf flow-mod-num-bits{
+ type uint16;
+ }
+
+ leaf src-field{
+ type uint32;
+ }
+
+ leaf src-ofs{
+ type uint16;
+ }
+
+ leaf dst-field{
+ type uint32;
+ }
+
+ leaf dst-ofs{
+ type uint16;
+ }
+ }
+ }
+ case flow-mod-add-match-from-value-case{
+ container flow-mod-add-match-from-value{
+ leaf flow-mod-num-bits{
+ type uint16;
+ }
+
+ leaf value{
+ type uint16;
+ }
+
+ leaf src-field{
+ type uint32;
+ }
+
+ leaf src-ofs{
+ type uint16;
+ }
+ }
+ }
+ case flow-mod-copy-field-into-field-case{
+ container flow-mod-copy-field-into-field{
+ leaf flow-mod-num-bits{
+ type uint16;
+ }
+
+ leaf src-field{
+ type uint32;
+ }
+
+ leaf src-ofs{
+ type uint16;
+ }
+
+ leaf dst-field{
+ type uint32;
+ }
+
+ leaf dst-ofs{
+ type uint16;
+ }
+ }
+ }
+ case flow-mod-copy-value-into-field-case{
+ container flow-mod-copy-value-into-field{
+ leaf flow-mod-num-bits{
+ type uint16;
+ }
+
+ leaf value{
+ type uint16;
+ }
+
+ leaf dst-field{
+ type uint32;
+ }
+
+ leaf dst-ofs{
+ type uint16;
+ }
+ }
+ }
+ case flow-mod-output-to-port-case{
+ container flow-mod-output-to-port{
+ leaf flow-mod-num-bits{
+ type uint16;
+ }
+
+ leaf src-field{
+ type uint32;
+ }
+
+ leaf src-ofs{
+ type uint16;
+ }
+ }
+ }
+ }
+ }
+
+ grouping ofj-nx-action-learn-grouping {
+ container nx-action-learn {
+ leaf idle-timeout {
+ type uint16;
+ }
+ leaf hard-timeout {
+ type uint16;
+ }
+ leaf priority {
+ type uint16;
+ }
+ leaf cookie {
+ type uint64;
+ }
+ leaf flags {
+ type uint16;
+ }
+ leaf table-id {
+ type uint8;
+ }
+ leaf fin-idle-timeout {
+ type uint16;
+ }
+ leaf fin-hard-timeout {
+ type uint16;
+ }
+
+ list flow-mods{
+ uses flow-mod-spec;
+ }
+ }
+ }
+
augment "/ofaction:action-container/ofaction:action-choice" {
ext:augment-identifier "ofj-aug-nx-action";
case action-reg-load {
case action-conntrack {
uses ofj-nx-action-conntrack-grouping;
}
+ case action-learn {
+ uses ofj-nx-action-learn-grouping;
+ }
}
}