import opendaylight-match-types {prefix match; revision-date "2013-10-26";}
import opendaylight-action-types {prefix action;}
import opendaylight-meter-types {prefix meter; revision-date "2013-09-18";}
+ import openflow-protocol { prefix ofproto; revision-date "2013-07-31"; }
+ import openflow-types { prefix oft; revision-date "2013-07-31"; }
+ import opendaylight-multipart-types { prefix multipart; revision-date "2017-01-12"; }
revision "2013-10-26" {
description "Initial revision of flow service";
}
-
+
typedef flow-ref {
type instance-identifier;
}
-
+
typedef flow-cookie {
description "openflow specific type - flow cookie / flow cookie mask";
type uint64;
}
-
+
typedef output-port-values {
type enumeration {
enum MAX {
}
}
}
-
+
case write-metadata-case {
container write-metadata {
leaf metadata {
type uint64;
}
-
+
leaf metadata-mask {
type uint64;
}
}
}
-
+
case write-actions-case {
container write-actions {
uses action:action-list;
}
}
-
+
case apply-actions-case {
container apply-actions {
uses action:action-list;
}
}
-
+
case clear-actions-case {
container clear-actions {
uses action:action-list;
}
}
-
+
case meter-case {
container meter {
leaf meter-id {
type meter:meter-id;
- }
+ }
}
}
}
}
-
+
typedef flow-mod-flags {
type bits {
bit CHECK_OVERLAP;
bit SEND_FLOW_REM;
}
}
+ typedef removed-flow-reason {
+ type enumeration {
+ enum OFPRR_IDLE_TIMEOUT{
+ value 0;
+ description "Flow idle time exceeded idle_timeout.";
+ }
+ enum OFPRR_HARD_TIMEOUT {
+ value 1;
+ description "Time exceeded hard_timeout.";
+ }
+ enum OFPRR_DELETE {
+ value 2;
+ description "Evicted by a DELETE flow mod.";
+ }
+ enum OFPRR_GROUP_DELETE {
+ value 3;
+ description "Group was removed.";
+ }
+
+ }
+ }
- typedef removed_reason_flags {
- type bits {
- bit IDLE_TIMEOUT;
- bit HARD_TIMEOUT;
- bit DELETE;
- bit GROUP_DELETE;
- }
- }
-
grouping generic_flow_attributes {
leaf priority {
type uint16;
}
-
+
leaf idle-timeout {
type uint16;
}
-
+
leaf hard-timeout {
type uint16;
}
-
+
leaf cookie {
type flow-cookie;
}
-
+
leaf table_id {
type uint8;
}
}
-
+
grouping flow {
container match {
uses match:match;
}
-
+
container instructions {
uses instruction-list;
- }
-
+ }
+
uses generic_flow_attributes;
-
+
leaf container-name {
- type string;
+ type string;
}
-
+
leaf cookie_mask {
type flow-cookie;
}
-
+
leaf buffer_id {
type uint32;
}
-
+
leaf out_port {
type uint64;
}
-
+
leaf out_group {
type uint32;
}
-
+
leaf flags {
type flow-mod-flags;
}
-
+
leaf flow-name {
type string;
}
-
+
leaf installHw {
type boolean;
}
grouping flow-table-statistics {
leaf active {
type yang:counter64;
- }
+ }
leaf lookup {
type yang:counter64;
}
leaf matched {
- type yang:counter64;
+ type yang:counter64;
}
}
-
+
grouping flow-mod-removed {
uses generic_flow_attributes;
-
+
leaf removed_reason {
- type removed_reason_flags;
+ type removed-flow-reason;
}
leaf duration_nsec {
type uint32;
}
-
+
leaf duration_sec {
type uint32;
}
leaf byte_count {
type uint64;
}
-
+
container match {
uses match:match;
}
}
+
+ container flow-message {
+ uses flow;
+ uses ofproto:ofHeader;
+
+ leaf command {
+ type oft:flow-mod-command;
+ }
+ }
+
+ augment "/multipart:multipart-request/multipart:multipart-request-body" {
+ case multipart-request-flow-stats {
+ uses flow;
+ }
+ case multipart-request-flow-aggregate-stats {
+ uses flow;
+ }
+ }
}