ciena-mef-mac-management

This YANG module defines Ciena's configuration of the L2 Forwarding Databases (FDB), MAC-Tables, MAC Address Management

  • Version: 2017-10-23

    ciena-mef-mac-management@2017-10-23


    
      module ciena-mef-mac-management {
    
        yang-version 1;
    
        namespace
          "urn:ciena:params:xml:ns:yang:ciena-pn:ciena-mef-mac-management";
    
        prefix mef-mac-management;
    
        import ciena-mef-logical-port {
          prefix mef-logical-port;
        }
        import ciena-mef-fp {
          prefix mef-fp;
        }
        import ciena-mef-fd {
          prefix mef-fd;
        }
        import ietf-yang-types {
          prefix yt;
        }
        import ciena-types {
          prefix ciena;
        }
    
        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 Ciena's configuration of
           the L2 Forwarding Databases (FDB), MAC-Tables, MAC Address Management";
    
        revision "2017-10-23" {
          description
            "Added missed references and descriptions";
          reference
            "RFC 6020: YANG - A Data Modeling Language for
            the Network Configuration Protocol (NETCONF).
            No specific reference; standard not available.";
    
        }
    
        revision "2017-07-28" {
          description "Initial version";
          reference
            "RFC 6020: YANG - A Data Modeling Language for
            the Network Configuration Protocol (NETCONF).
            No specific reference; standard not available.";
    
        }
    
    
        typedef fd-ref {
          type leafref {
            path "/mef-fd:fds/mef-fd:fd/mef-fd:name";
          }
          description
            "This type is used by the data models that need to reference
             configured fd";
        }
    
        typedef fdb-ref {
          type leafref {
            path "/mef-mac-management:fdbs/mef-mac-management:fdb/mef-mac-management:name";
          }
          description
            "This type is used by the data models that need to reference
             configured fdb";
        }
    
        identity mac-refresh-algorithm {
          description
            "Algorithm to refresh dynamic-mac entries.";
        }
    
        identity sa-hit-refresh {
          base mac-refresh-algorithm;
          description
            "With this algorithm, dynamic-mac entries are refreshed based on a MAC-SA match.";
        }
    
        identity sa-da-hit-refresh {
          base mac-refresh-algorithm;
          description
            "With this algorithm, dynamic-mac entries are refreshed based on a MAC-DA or MAC-SA match.";
        }
    
        container mac-management {
          description "MAC aging configuration.";
          leaf mac-aging {
            type ciena:admin-state;
            default 'enabled';
            description
              "Configuration Control of MAC-Aging.";
          }
    
          leaf mac-aging-timeout {
            type uint32;
            units "seconds";
            default '300';
            description
              "The number of seconds of inactivity to determine when a given dynamic mac-entry in an
                 FDB ages out and is removed from the FDB.";
          }
    
          leaf dynamic-mac-refresh-algorithm {
            type identityref {
              base mac-refresh-algorithm;
            }
            description
              "Algorithm selection to refresh dynamic-mac entries.";
          }
    
          choice mac-maximum-table-size {
            description
              "Maximum size of the MAC table.";
            leaf size {
              type uint32;
              description
                "The maximum number of mac-entries allowed.";
            }
            leaf maximum {
              type empty;
              description
                "The maximum number of mac-entries is determined by underlying forwarding-plane.";
            }
          }  // choice mac-maximum-table-size
        }  // container mac-management
    
        container fdbs {
          description
            "Forwarding databases configuration parameters.";
          list fdb {
            key "name";
            description
              "The list of configured l2 forwarding databases.";
            leaf name {
              type string;
              description
                "An administratively assigned string, which may be used to identify the l2 forwarding database.
                    Typically this may be the name of the forwarding-domain when there is an FDB per forwarding-domain (IVL case).";
            }
    
            leaf description {
              type string;
              description
                "This is string used to describe the l2 Forwarding Database.";
            }
    
            leaf mac-learning {
              type ciena:admin-state;
              description
                "Configuration Control of MAC-Learning-Enable per-FDB. Separately there may be configuration
                    control of MAC-Learning-Enable at a more granular level (e.g. per FD, per-Flow-Point etc).";
            }
          }  // list fdb
        }  // container fdbs
    
        container static-macs {
          description
            "Static MACs configuration parameters.";
          list mac-entry {
            key "mac-address fdb";
            description
              "The list of configured static mac entries. The destination-interface indirectly determines the
                 fdb that the static mac-entry belongs to.";
            leaf mac-address {
              type yt:mac-address;
              description
                "The mac-address for this static-mac entry.";
            }
    
            leaf mac-address-mask {
              type yt:mac-address;
              description
                "An optional mac-address mask for this static-mac entry.";
            }
    
            leaf fdb {
              type fdb-ref;
              description
                "Reference to fdb name, based on the static-mac to be added.";
            }
    
            choice destination-interface {
              description
                "Selection of destination interface as flow point or logical port.";
              leaf flow-point {
                type mef-fp:fp-ref;
                description
                  "Reference to a flow point.";
              }
              leaf logical-port {
                type mef-logical-port:logical-port-ref;
                description
                  "Reference to a logical port.";
              }
            }  // choice destination-interface
    
            leaf filter-action {
              type enumeration {
                enum "allow" {
                  value 0;
                  description
                    "Allow frames that matches to this instance.";
                }
                enum "drop" {
                  value 1;
                  description
                    "Drop frames that matches to this instance.";
                }
              }
              description
                "Take action on frames which matches to this instance.";
            }
          }  // list mac-entry
        }  // container static-macs
    
        container mac-access-controls {
          description
            "This is a container which holds configuration data for mac access control.";
          list mac-access-control {
            key "logical-port";
            description
              "The list of mac-access-controls configured.";
            leaf logical-port {
              type mef-logical-port:logical-port-ref;
              description
                "The list of mac-access-controls configured.";
            }
    
            choice mac-learn-limit {
              description
                "MAC learn limit on / off selection.";
              case on {
                leaf maximum-dynamic-macs {
                  type uint64;
                  description
                    "The count of dynamic mac entries beyond which mac-learning will not be allowed to occur for this scope";
                }
    
                leaf forward-unlearned {
                  type boolean;
                  description
                    "Setting true, forward frames containing unlearned SMAC addresses when 
                          MAC learn limit has been reached on a logical port.
                          Setting false, drop frames containing unlearned SMAC addresses when 
                          MAC learn limit has been reached on a logical port.";
                }
              }  // case on
              leaf mac-learn-limit-off {
                type empty;
                description
                  "MAC learn limit set to off.";
              }
            }  // choice mac-learn-limit
          }  // list mac-access-control
        }  // container mac-access-controls
    
        container fdbs-state {
          config false;
          description
            "FDB operational data for all L2 Forwarding-Databases (MAC-Tables).";
          list fdb {
            key "name";
            description
              "The operational data for this L2 Forwarding Database.";
            leaf name {
              type string;
              description
                "A string that identifies the L2 Forwarding Database.";
            }
    
            leaf mac-learn-count {
              type uint64;
              description
                "Current count of mac entries in the fdb";
            }
    
            leaf mac-max-learn-count {
              type uint64;
              description
                "Maximum count of mac entries allowed in the fdb";
            }
    
            list mac-entry {
              key "mac-address";
              description
                "The list of mac entries in the fdb.";
              leaf mac-address {
                type yt:mac-address;
                description
                  "The mac-address for this mac entry.";
              }
    
              leaf mac-address-mask {
                type yt:mac-address;
                description
                  "An optional mac-address mask for this mac entry.";
              }
    
              choice destination-interface {
                description
                  "Destination interface selection.";
                leaf flow-point {
                  type mef-fp:fp-ref;
                  description
                    "Reference to a flow point..";
                }
                leaf logical-port {
                  type mef-logical-port:logical-port-ref;
                  description
                    "Reference to a logical port.";
                }
              }  // choice destination-interface
    
              leaf mac-learn-type {
                type enumeration {
                  enum "dynamic" {
                    value 0;
                    description
                      "Dynamic learned MAC.";
                  }
                  enum "static" {
                    value 1;
                    description
                      "Static learned MAC.";
                  }
                }
                description
                  "Dynamic learned MAC or static MAC.";
              }
            }  // list mac-entry
          }  // list fdb
        }  // container fdbs-state
    
        container mac-access-controls-state {
          config false;
          description
            "This is a container which holds mac access control operational state data.";
          list mac-access-control {
            key "logical-port";
            description
              "The list of mac-access-controls configured.";
            leaf logical-port {
              type mef-logical-port:logical-port-ref;
              description
                "Reference to a logical port.";
            }
    
            leaf mac-dynamic-access-count {
              type uint64;
              description
                "The current count of dynamic mac entries for this scope";
            }
    
            leaf high-water-mark {
              type uint64;
              description
                "High water mark of dynamically learned MAC entries";
            }
    
            leaf is-threshold-reached {
              type boolean;
              description
                "Mac learn limit threshold reached or not, true means yes and false means no";
            }
          }  // list mac-access-control
        }  // container mac-access-controls-state
    
        rpc dynamic-mac-flush {
          description
            "Flush dynamic MAC-entries from FDB(s) at a given scope.";
          input {
            choice flush-scope {
              description
                "Flush mac address learned on FD or FP or logical port or all.";
              leaf forwarding-domain {
                type fd-ref;
                description
                  "Flush all dynamic mac-entries learned against the specified forwarding-domain.";
              }
              leaf flow-point {
                type mef-fp:fp-ref;
                description
                  "Flush all dynamic mac-entries learned against the specified flow-point.";
              }
              leaf logical-port {
                type mef-logical-port:logical-port-ref;
                description
                  "Flush all dynamic mac-entries learned against the specified logical-port.";
              }
              leaf all {
                type empty;
                description
                  "Flush all dynamic mac-entries learned on the device as a whole.";
              }
            }  // choice flush-scope
          }
    
          output {
            leaf status {
              type string;
              description
                "Status of MAC flush operation.";
            }
          }
        }  // rpc dynamic-mac-flush
    
        rpc service-access-control-state-clear {
          description
            "Clear the service access control state data.";
          input {
            leaf logical-port {
              type mef-logical-port:logical-port-ref;
              description
                "The logical port name to clear the state data.";
            }
          }
    
          output {
            leaf status {
              type string;
              description
                "Status of the clear state operation.";
            }
          }
        }  // rpc service-access-control-state-clear
      }  // module ciena-mef-mac-management
    

© 2023 YumaWorks, Inc. All rights reserved.