ciena-mef-access-flow

This YANG module defines Access Flows and Access Profiles.

  • Version: 2017-10-30

    ciena-mef-access-flow@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.