ietf-access-control-list

This YANG module defines a component that describing the configuration of Access Control Lists (ACLs). Redistribution and use in...

  • Version: 2015-03-17

    ietf-access-control-list@2015-03-17


    
      module ietf-access-control-list {
    
        yang-version 1;
    
        namespace
          "urn:ietf:params:xml:ns:yang:ietf-access-control-list";
    
        prefix acl;
    
        import ietf-yang-types {
          prefix yang;
        }
        import ietf-packet-fields {
          prefix packet-fields;
        }
    
        organization
          "IETF NETMOD (NETCONF Data Modeling Language)
    Working Group";
    
        contact
          "WG Web: http://tools.ietf.org/wg/netmod/
    WG List: netmod@ietf.org
    WG Chair: Juergen Schoenwaelder
    j.schoenwaelder@jacobs-university.de
    WG Chair: Tom Nadeau
    tnadeau@lucidvision.com
    Editor: Dean Bogdanovic
    deanb@juniper.net
    Editor: Kiran Agrahara Sreenivasa
    kkoushik@brocade.com
    Editor: Lisa Huang
    lyihuang@juniper.net
    Editor: Dana Blair
    dblair@cisco.com";
    
        description
          "This YANG module defines a component that describing the
    configuration of Access Control Lists (ACLs).
    Redistribution and use in source and binary forms, with or
    without modification, is permitted pursuant to, and subject
    to the license terms contained in, the Simplified BSD
    License set forth in Section 4.c of the IETF Trust's Legal
    Provisions Relating to IETF Documents
    (http://trustee.ietf.org/license-info).
    This version of this YANG module is part of RFC XXXX; see
    the RFC itself for full legal notices.";
    
        revision "2015-03-17" {
          description
            "Base model for Network Access Control List (ACL).";
          reference
            "RFC XXXX: Network Access Control List (ACL)
            YANG Data  Model";
    
        }
    
    
        identity acl-base {
          description
            "Base Access Control List type for all Access Control List type
    identifiers.";
        }
    
        identity ip-acl {
          base acl:acl-base;
          description
            "IP Access Control List is a common name for lists that contain
    layer 3 and/or layer 4 match conditions.";
        }
    
        identity eth-acl {
          base acl:acl-base;
          description
            "Ethernet Access Control List is name for layer 2 Ethernet
    technology Access Control List types, like 10/100/1000baseT or
    WiFi Access Control List";
        }
    
        typedef acl-type {
          type identityref {
            base acl-base;
          }
          description
            "This type is used to refer to an Access Control List
    (ACL) type";
        }
    
        typedef access-control-list-ref {
          type leafref {
            path "/access-lists/acl/acl-name";
          }
          description
            "This type is used by data models that need to reference an
    Access Control List";
        }
    
        container access-lists {
          description
            "This is a top level container for Access Control Lists.
    It can have one or more Access Control Lists.";
          list acl {
            key "acl-name";
            description
              "An Access Control List(ACL) is an ordered list of
    Access List Entries (ACE). Each Access Control Entry has a
    list of match criteria and a list of actions.
    Since there are several kinds of Access Control Lists
    implemented with different attributes for
    different vendors, this
    model accommodates customizing Access Control Lists for
    each kind and for each vendor.";
            container acl-oper-data {
              config false;
              description
                "Overall Access Control List operational data";
            }  // container acl-oper-data
    
            container access-list-entries {
              description
                "The access-list-entries container contains
    a list of access-list-entries(ACE).";
              list ace {
                key "rule-name";
                ordered-by user;
                description
                  "List of access list entries(ACE)";
                container matches {
                  description
                    "Definitions for match criteria for this Access List
    Entry.";
                  choice ace-type {
                    description
                      "Type of access list entry.";
                    case ace-ip {
                      description
                        "IP Access List Entry.";
                      choice ace-ip-version {
                        description
                          "IP version used in this Acess List Entry.";
                        case ace-ipv4 {
                          uses packet-fields:acl-ipv4-header-fields;
                        }  // case ace-ipv4
    
                        case ace-ipv6 {
                          uses packet-fields:acl-ipv6-header-fields;
                        }  // case ace-ipv6
                      }  // choice ace-ip-version
    
                      uses packet-fields:acl-ip-header-fields;
                    }  // case ace-ip
    
                    case ace-eth {
                      description
                        "Ethernet Access List entry.";
                      uses packet-fields:acl-eth-header-fields;
                    }  // case ace-eth
                  }  // choice ace-type
    
                  uses packet-fields:metadata;
                }  // container matches
    
                container actions {
                  description
                    "Definitions of action criteria for this Access List
    Entry.";
                  choice packet-handling {
                    default "deny";
                    description
                      "Packet handling action.";
                    leaf deny {
                      type empty;
                      description "Deny action.";
                    }
                    leaf permit {
                      type empty;
                      description
                        "Permit action.";
                    }
                  }  // choice packet-handling
                }  // container actions
    
                container ace-oper-data {
                  config false;
                  description
                    "Operational data for this Access List Entry.";
                  leaf match-counter {
                    type yang:counter64;
                    description
                      "Number of matches for this Access List Entry";
                  }
                }  // container ace-oper-data
    
                leaf rule-name {
                  type string;
                  description
                    "A unique name identifying this Access List
    Entry(ACE).";
                }
              }  // list ace
            }  // container access-list-entries
    
            leaf acl-name {
              type string;
              description
                "The name of access-list. A device MAY restrict the length
    and value of this name, possibly space and special
    characters are not allowed.";
            }
    
            leaf acl-type {
              type acl-type;
              description
                "It is recommended to have an Access Control List with
    uniform access list entries, all of the same type. When
    this type is not explicitly specified, if vendor
    implementation permits, the access control entries
    in the list can be mixed,
    by containing L2, L3 and L4 entries";
            }
          }  // list acl
        }  // container access-lists
      }  // module ietf-access-control-list
    

© 2023 YumaWorks, Inc. All rights reserved.