This YANG module defines Access Flows and Access Profiles.
Version: 2017-10-30
module ciena-mef-access-flow { yang-version 1; namespace "urn:ciena:params:xml:ns:yang:ciena-pn::ciena-mef-access-flow"; prefix acl; import ciena-mef-classifier { prefix classifier; } import ciena-mef-logical-port { prefix mef-logical-port; } import ciena-mef-fp { prefix mef-fp; } organization "Ciena Corporation"; contact "Web URL: http://www.ciena.com/ E-mail: yang@ciena.com Postal: 7035 Ridge Road Hanover, Maryland 21076 U.S.A. Phone: +1 800-921-1144 Fax: +1 410-694-5750"; description "This YANG module defines Access Flows and Access Profiles."; revision "2017-10-30" { description "Added description for lists, leafs, enums and containers."; reference "RFC 6020: YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF). No specific reference; standard not available."; } revision "2017-06-20" { description "Initial revision."; reference "RFC 6020: YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF). No specific reference; standard not available."; } typedef access-flow-ref { type leafref { path "/acl:access-flows/acl:access-flow/acl:name"; } description "This type is used by the data models that needs to reference configured Access flows."; } typedef access-profile-ref { type leafref { path "/acl:access-profiles/acl:access-profile/acl:name"; } description "This type is used by the data models that needs to reference configured Access Profile."; } typedef acl-action-ref { type leafref { path "/acl:acl-actions/acl:acl-action/acl:name"; } description "This type is used by the data models that needs to reference configured ACL actions."; } typedef custom-destination-ref { type leafref { path "/acl:acl-custom-destinations/acl:acl-custom-destination/acl:name"; } description "This type is used by the data models that needs to reference custom destinations for ACLs."; } grouping acl-destination { description "This grouping defines the destinations for ACL."; choice destination { description "This specifies the choice of destinations for the acl-action."; case logical-port-list { description "one or more logical-ports which act as destination for the acl-action (e.g. mirror/redirect)"; leaf-list logical-port { type mef-logical-port:logical-port-ref; description "Reference to logical-port."; } } // case logical-port-list case flow-point-list { description "one or more flow-points which act as destination for the acl-action (e.g. mirror/redirect)"; leaf-list flow-point { type mef-fp:fp-ref; description "Reference to flow-point."; } } // case flow-point-list case custom-list { description "one or more custom destinations which act as destination for the acl-action (e.g. mirror/redirect)"; leaf-list custom { type custom-destination-ref; description "Reference to custom-destination object that represents the custom destinations this acl-action is being added to."; } } // case custom-list } // choice destination } // grouping acl-destination container acl-custom-destinations { description "Configuration data for ACL custom destinations."; list acl-custom-destination { key "name"; description "This denotes list of ACL custom destinations."; leaf name { type string; description "A unique string that is either system assigned or assigned by the user but does not change over its life."; } leaf description { type string; description "A more detailed description that an operator can use to describe the custom destination."; } leaf destination { type enumeration { enum "voltha-agent" { value 0; description "Redirect the classified flow to a voltha-agent application."; } } description "Specifies an application name for this acl destination"; } } // list acl-custom-destination } // container acl-custom-destinations container acl-actions { description "Configuration data for ACL actions."; list acl-action { key "name"; description "This denotes the list of ACL actions."; leaf name { type string; description "A unique string that is either system assigned or assigned by the user but does not change over its life."; } leaf description { type string; description "A more detailed description that an operator can use to describe the action."; } leaf action { type enumeration { enum "redirect" { value 0; description "Redirect the classified flow to one or more ports/flow-points etc."; } enum "ingress-mirror" { value 1; description "Ingress-Mirror the classified flow to one or more ports/flow-points etc."; } } description "Specifies an action for this acl action"; } uses acl:acl-destination { when "action = 'redirect' or action = 'ingress-mirror'"; } } // list acl-action } // container acl-actions container access-flows { description "Configuration data for Access-Flows/ACL-Rules."; list access-flow { key "name"; description "This denotes the list of Access-Flows/ACL-Rules."; leaf name { type string; description "A unique string that is either system assigned or assigned by the user but does not change over its life."; } leaf description { type string; description "A more detailed description that an operator can use to describe the flow."; } leaf-list classifier-list { type classifier:classifier-ref; description "A reference to a list of classifier entries."; } leaf classifier-precedence { type uint32; description "A precedence value for the access flow. Lower values take precedence over higher values"; } choice parent-interface { description "This defined the interface that the Access-Flow applies to."; case none { description "When the Access-Flow is an ACL rule in an Access-Profile, use none. In this case, the access-profile is referenced by a parent-interface instead."; leaf none { type empty; description "A reference to an empty classifier."; } } // case none case logical-port { description "This is used when the Access-Flow is an ACL rule that is not part of an Access-Profile. In this case, the parent-interface defines the port that the Access-Flow applies to"; leaf-list parent-port { type mef-logical-port:logical-port-ref; description "A reference to a list of logical-port entries."; } } // case logical-port case flow-point { description "This is used when the Access-Flow is an ACL rule that is not part of an Access-Profile. In this case, the parent-interface defines the flow-point that the Access-Flow applies to"; leaf-list parent-fp { type mef-fp:fp-ref; description "A reference to a list of flow-point entries."; } } // case flow-point } // choice parent-interface leaf filter-action { type enumeration { enum "deny" { value 0; description "Drop traffic for traffic that matches this specific access-flow-rule. This may be augmented with specific actions in the action list for this traffic flow"; } enum "allow" { value 1; description "Do not drop traffic for traffic that matches this specific access-flow-rule. This may be augmented with specific actions in the action list for this traffic flow"; } } description "Specifies the filter-action for this Access-Flow/ACL-Rule"; } leaf-list augment-action { type acl-action-ref; description "A list of Actions that may augment the filter-action of the Access-Flow/ACL-Rule."; } leaf stats-collection { type enumeration { enum "on" { value 0; description "Stats collection on."; } enum "off" { value 1; description "Stats collection off."; } } description "Determines whether stats collection will be turned on or not for an access-flow"; } } // list access-flow } // container access-flows container access-profiles { description "Configuration data for Access Profiles."; list access-profile { key "name"; description "A list of all access-profile configuration entries."; leaf name { type string; description "A unique string that is either system assigned or assigned by the user but does not change over its life."; } leaf description { type string; description "A more detailed description that an operator can use to describe the profile."; } leaf-list access-flow-rule { type access-flow-ref; description "A list of ACL rules, Access-Flows that are part of an access-profile. Each ACL-rule/Access-Flow specifies classifiers, precedence and actions independently"; } leaf default-filter-action { type enumeration { enum "deny" { value 0; description "Drop traffic for all other traffic that does not match a specific access-flow-rule but classifies to this Access-Profile"; } enum "allow" { value 1; description "Do not drop traffic for all other traffic that does not match a specific access-flow-rule but classifies to this Access-Profile"; } } description "Specifies the default filter-action for this Access-Profile"; } leaf stats-collection { type enumeration { enum "on" { value 0; description "Stats collection on."; } enum "off" { value 1; description "Stats collection off."; } } description "Determines whether stats collection will be turned on or not instance of an access-profile"; } } // list access-profile } // container access-profiles container access-flows-state { config false; description "Access Flow operational data for all Access Flows."; list access-flow { key "name"; description "The operational data for this Access-Flow."; leaf name { type string; description "A string that identifies the Access-Flow."; } leaf hitBytes { type uint64; description "byte count of frames that hit the Access-Flow"; } leaf hitFrames { type uint64; description "frame count of frames that hit the Access-Flow"; } } // list access-flow } // container access-flows-state container acl-actions-state { config false; description "ACL action operational data for all ACL Augment Actions."; list access-action { key "name"; description "The operational data for this ACL Augment Action."; leaf name { type string; description "A string that identifies the Access Augment Action."; } leaf number-of-attached-rules { type uint16; description "Number of rules the augment action instance is associated with."; } } // list access-action leaf defined-acl-actions { type uint16; description "Number of defined augment action instances on the device."; } leaf remaining-acl-actions-available { type uint16; description "Number of available augment action instances on the device."; } } // container acl-actions-state } // module ciena-mef-access-flow
© 2023 YumaWorks, Inc. All rights reserved.