Cisco-IOS-XR-um-ethernet-oam-cfg

This module contains a collection of YANG definitions for Cisco IOS-XR ethernet-oam package configuration. This YANG module aug...

  • Version: 2021-02-19

    Cisco-IOS-XR-um-ethernet-oam-cfg@2021-02-19


    
      module Cisco-IOS-XR-um-ethernet-oam-cfg {
    
        yang-version 1;
    
        namespace
          "http://cisco.com/ns/yang/Cisco-IOS-XR-um-ethernet-oam-cfg";
    
        prefix um-ethernet-oam-cfg;
    
        import Cisco-IOS-XR-types {
          prefix xr;
        }
        import Cisco-IOS-XR-um-snmp-server-cfg {
          prefix a1;
        }
        import Cisco-IOS-XR-um-interface-cfg {
          prefix a2;
        }
        import cisco-semver {
          prefix semver;
        }
    
        organization "Cisco Systems, Inc.";
    
        contact
          "Cisco Systems, Inc.
         Customer Service
         
         Postal: 170 West Tasman Drive
         San Jose, CA 95134
         
         Tel: +1 800 553-NETS
         
         E-mail: cs-yang@cisco.com";
    
        description
          "This module contains a collection of YANG definitions
         for Cisco IOS-XR ethernet-oam package configuration.
         
         This YANG module augments the
         modules with configuration data.
         
         Copyright (c) 2021 by Cisco Systems, Inc.
         All rights reserved.";
    
        revision "2021-02-19" {
          description "Initial release";
        }
    
        semver:module-version "1.0.0";
    
        grouping IF-ETHER-BODY {
          container ethernet {
            description
              "Ethernet per-interface configuration commands";
            container oam {
              presence
                "Indicates a oam node is configured.";
              description "OAM configuration";
              container link-monitor {
                description
                  "Enter link-monitor submode";
                container symbol-period {
                  description
                    "Symbol-period event configuration";
                  container window {
                    description
                      "window size for symbol-period event configuration";
                    leaf milliseconds {
                      type uint32 {
                        range "1000..60000";
                      }
                      must
                        "not(../symbols/window-size)";
                      description
                        "Use milliseconds as the units for the symbol-period window";
                    }
    
                    container symbols {
                      description
                        "Use symbols as the units for the symbol-period window";
                      leaf window-size {
                        type uint32 {
                          range "1..4294967295";
                        }
                        must
                          "not(../../milliseconds)";
                        description
                          "Size of the symbol-period window in symbols";
                      }
    
                      container thousand {
                        must
                          "../window-size and not(../million or ../billion)";
                        presence
                          "Indicates a thousand node is configured.";
                        description
                          "Use thousands of the specified units";
                      }  // container thousand
    
                      container million {
                        must
                          "../window-size and not(../thousand or ../billion)";
                        presence
                          "Indicates a million node is configured.";
                        description
                          "Use millions of the specified units";
                      }  // container million
    
                      container billion {
                        must
                          "../window-size and not(../thousand or ../million)";
                        presence
                          "Indicates a billion node is configured.";
                        description
                          "Use billions of the specified units";
                      }  // container billion
                    }  // container symbols
                  }  // container window
    
                  container threshold {
                    description
                      "threshold configuration for symbol-period events";
                    container symbols {
                      description
                        "Use symbols as the units for the symbol-period threshold";
                      leaf low {
                        type uint32 {
                          range "1..4294967295";
                        }
                        description
                          "low threshold for symbol-period events";
                      }
    
                      leaf high {
                        type uint32 {
                          range "1..4294967295";
                        }
                        description
                          "high threshold for symbol-period events";
                      }
    
                      container thousand {
                        must
                          "(../low or ../high) and not(../million or ../billion)";
                        presence
                          "Indicates a thousand node is configured.";
                        description
                          "Use thousands of the specified units";
                      }  // container thousand
    
                      container million {
                        must
                          "(../low or ../high) and not(../thousand or ../billion)";
                        presence
                          "Indicates a million node is configured.";
                        description
                          "Use millions of the specified units";
                      }  // container million
    
                      container billion {
                        must
                          "(../low or ../high) and not(../thousand or ../million)";
                        presence
                          "Indicates a billion node is configured.";
                        description
                          "Use billions of the specified units";
                      }  // container billion
                    }  // container symbols
    
                    container ppm {
                      description
                        "Use parts-per-million as the units for the symbol-period threshold";
                      leaf low {
                        type uint32 {
                          range "1..1000000";
                        }
                        description
                          "low threshold for symbol-period events";
                      }
    
                      leaf high {
                        type uint32 {
                          range "1..1000000";
                        }
                        description
                          "high threshold for symbol-period events";
                      }
                    }  // container ppm
                  }  // container threshold
                }  // container symbol-period
    
                container frame {
                  description
                    "Frame event configuration";
                  container window {
                    description
                      "window size for frame event configuration";
                    leaf milliseconds {
                      type uint32 {
                        range "1000..60000";
                      }
                      description
                        "Use milliseconds as the units for the frame window";
                    }
                  }  // container window
    
                  container threshold {
                    description
                      "threshold configuration for frame events";
                    leaf low {
                      type uint32 {
                        range "1..4294967295";
                      }
                      description
                        "low threshold for frame events";
                    }
    
                    leaf high {
                      type uint32 {
                        range "1..4294967295";
                      }
                      description
                        "high threshold for frame events";
                    }
    
                    container thousand {
                      must
                        "(../low or ../high) and not(../million or ../billion)";
                      presence
                        "Indicates a thousand node is configured.";
                      description
                        "Use thousands of the specified units";
                    }  // container thousand
    
                    container million {
                      must
                        "(../low or ../high) and not(../thousand or ../billion)";
                      presence
                        "Indicates a million node is configured.";
                      description
                        "Use millions of the specified units";
                    }  // container million
    
                    container billion {
                      must
                        "(../low or ../high) and not(../thousand or ../million)";
                      presence
                        "Indicates a billion node is configured.";
                      description
                        "Use billions of the specified units";
                    }  // container billion
                  }  // container threshold
                }  // container frame
    
                container frame-period {
                  description
                    "frame-period event configuration";
                  container window {
                    description
                      "window size for frame-period event configuration";
                    leaf milliseconds {
                      type uint32 {
                        range "100..60000";
                      }
                      must
                        "not(../frames/window-size)";
                      description
                        "Use milliseconds as the units for the frame-period window";
                    }
    
                    container frames {
                      description
                        "Use frames as the units for the frame-period window";
                      leaf window-size {
                        type uint32 {
                          range "1..4294967295";
                        }
                        must
                          "not(../../milliseconds)";
                        description
                          "Size of the frame-period window in symbols";
                      }
    
                      container thousand {
                        must
                          "../window-size and not(../million or ../billion)";
                        presence
                          "Indicates a thousand node is configured.";
                        description
                          "Use thousands of the specified units";
                      }  // container thousand
    
                      container million {
                        must
                          "../window-size and not(../thousand or ../billion)";
                        presence
                          "Indicates a million node is configured.";
                        description
                          "Use millions of the specified units";
                      }  // container million
    
                      container billion {
                        must
                          "../window-size and not(../thousand or ../million)";
                        presence
                          "Indicates a billion node is configured.";
                        description
                          "Use billions of the specified units";
                      }  // container billion
                    }  // container frames
                  }  // container window
    
                  container threshold {
                    description
                      "threshold for frame-period events";
                    container frames {
                      description
                        "Use frames as the units for the frame-period threshold";
                      leaf low {
                        type uint32 {
                          range "1..4294967295";
                        }
                        description
                          "low threshold for frame-period events";
                      }
    
                      leaf high {
                        type uint32 {
                          range "1..4294967295";
                        }
                        description
                          "high threshold for frame-period events";
                      }
    
                      container thousand {
                        must
                          "(../low or ../high) and not(../million or ../billion)";
                        presence
                          "Indicates a thousand node is configured.";
                        description
                          "Use thousands of the specified units";
                      }  // container thousand
    
                      container million {
                        must
                          "(../low or ../high) and not(../thousand or ../billion)";
                        presence
                          "Indicates a million node is configured.";
                        description
                          "Use millions of the specified units";
                      }  // container million
    
                      container billion {
                        must
                          "(../low or ../high) and not(../thousand or ../million)";
                        presence
                          "Indicates a billion node is configured.";
                        description
                          "Use billions of the specified units";
                      }  // container billion
                    }  // container frames
    
                    container ppm {
                      description
                        "Use parts-per-million as the units for the frame-period threshold";
                      leaf low {
                        type uint32 {
                          range "1..1000000";
                        }
                        description
                          "low threshold for frame events";
                      }
    
                      leaf high {
                        type uint32 {
                          range "1..1000000";
                        }
                        description
                          "high threshold for frame events";
                      }
                    }  // container ppm
                  }  // container threshold
                }  // container frame-period
    
                container frame-seconds {
                  description
                    "frame-seconds event configuration";
                  container window {
                    description
                      "window size for frame-seconds event configuration";
                    leaf milliseconds {
                      type uint32 {
                        range "10000..900000";
                      }
                      description
                        "Use milliseconds as the units for the frame-seconds window";
                    }
                  }  // container window
    
                  container threshold {
                    description "threshold";
                    leaf low {
                      type uint32 {
                        range "1..900";
                      }
                      description
                        "low threshold for frame-seconds events";
                    }
    
                    leaf high {
                      type uint32 {
                        range "1..900";
                      }
                      description
                        "high threshold for frame-seconds events";
                    }
                  }  // container threshold
                }  // container frame-seconds
    
                container monitoring {
                  presence
                    "Indicates a monitoring node is configured.";
                  description
                    "Monitoring support";
                  container disable {
                    presence
                      "Indicates a disable node is configured.";
                    description
                      "Disable monitoring";
                  }  // container disable
                }  // container monitoring
              }  // container link-monitor
    
              container mode {
                description "OAM mode";
                container passive {
                  must "not(../active)";
                  presence
                    "Indicates a passive node is configured.";
                  description "Passive mode";
                }  // container passive
    
                container active {
                  must "not(../passive)";
                  presence
                    "Indicates a active node is configured.";
                  description "Active mode";
                }  // container active
              }  // container mode
    
              leaf hello-interval {
                type enumeration {
                  enum "100ms" {
                    value 1;
                    description
                      "100 millisecond hello interval";
                  }
                  enum "1s" {
                    value 0;
                    description
                      "1 second hello interval";
                  }
                }
                description
                  "Hello interval time";
              }
    
              container remote-loopback {
                presence
                  "Indicates a remote-loopback node is configured.";
                description
                  "Remote-loopback support";
              }  // container remote-loopback
    
              container mib-retrieval {
                presence
                  "Indicates a mib-retrieval node is configured.";
                description
                  "MIB retrieval support";
              }  // container mib-retrieval
    
              container uni-directional {
                description
                  "Uni-directional link-fault detection support";
                container link-fault {
                  description
                    "Uni-directional link-fault detection support";
                  container detection {
                    presence
                      "Indicates a detection node is configured.";
                    description
                      "Uni-directional link-fault detection support";
                  }  // container detection
                }  // container link-fault
              }  // container uni-directional
    
              container connection {
                description
                  "OAM connection configuration";
                leaf timeout {
                  type uint32 {
                    range "2..30";
                  }
                  description
                    "OAM connection session timeout period";
                }
              }  // container connection
    
              container profiles {
                description
                  "Set the profile to use on the interface";
                leaf interface-profile-name {
                  type xr:Cisco-ios-xr-string {
                    length "1..32";
                    pattern
                      "[-a-zA-Z0-9_]*[-a-zA-Z0-9_]";
                  }
                  description
                    "Enter a profile name using only letters, numbers, '_' & '-'";
                }
              }  // container profiles
    
              container require-remote {
                description
                  "Enter require-remote submode";
                container mib-retrieval {
                  presence
                    "Indicates a mib-retrieval node is configured.";
                  description
                    "Requirement of MIB retrieval support";
                }  // container mib-retrieval
    
                container remote-loopback {
                  presence
                    "Indicates a remote-loopback node is configured.";
                  description
                    "Requirement of Remote loopback support";
                }  // container remote-loopback
    
                container link-monitoring {
                  presence
                    "Indicates a link-monitoring node is configured.";
                  description
                    "Requirement of Link monitoring support";
                }  // container link-monitoring
    
                container mode {
                  description
                    "Requirement of a specific OAM mode";
                  container passive {
                    must
                      "not(../active or ../disabled)";
                    presence
                      "Indicates a passive node is configured.";
                    description
                      "Require passive mode";
                  }  // container passive
    
                  container active {
                    must
                      "not(../passive or ../disabled)";
                    presence
                      "Indicates a active node is configured.";
                    description
                      "Require active mode";
                  }  // container active
    
                  container disabled {
                    must
                      "not(../passive or ../active)";
                    presence
                      "Indicates a disabled node is configured.";
                    description
                      "Disable the requirement of a specific mode";
                  }  // container disabled
                }  // container mode
              }  // container require-remote
    
              container action {
                description
                  "Enter action submode";
                container critical-event {
                  description
                    "Action to perform when a critical event occurs";
                  container error-disable-interface {
                    must
                      "not(../log or ../disable)";
                    presence
                      "Indicates a error-disable-interface node is configured.";
                    description
                      "Error-disable the interface";
                  }  // container error-disable-interface
    
                  container log {
                    must
                      "not(../error-disable-interface or ../disable)";
                    presence
                      "Indicates a log node is configured.";
                    description "Log the event";
                  }  // container log
    
                  container disable {
                    must
                      "not(../error-disable-interface or ../log)";
                    presence
                      "Indicates a disable node is configured.";
                    description
                      "Perform no action";
                  }  // container disable
                }  // container critical-event
    
                container dying-gasp {
                  description
                    "Action to perform when a dying gasp occurs";
                  container error-disable-interface {
                    must
                      "not(../log or ../disable)";
                    presence
                      "Indicates a error-disable-interface node is configured.";
                    description
                      "Error-disable the interface";
                  }  // container error-disable-interface
    
                  container log {
                    must
                      "not(../error-disable-interface or ../disable)";
                    presence
                      "Indicates a log node is configured.";
                    description "Log the event";
                  }  // container log
    
                  container disable {
                    must
                      "not(../error-disable-interface or ../log)";
                    presence
                      "Indicates a disable node is configured.";
                    description
                      "Perform no action";
                  }  // container disable
                }  // container dying-gasp
    
                container uni-directional {
                  description
                    "Action to perform when a uni-directional link-fault message is received";
                  container link-fault {
                    description
                      "Action to perform when a uni-directional link-fault message is received";
                    container error-disable-interface {
                      must
                        "not(../efd or ../log
                       or ../disable)";
                      presence
                        "Indicates a error-disable-interface node is configured.";
                      description
                        "Error-disable the interface";
                    }  // container error-disable-interface
    
                    container efd {
                      must
                        "not(../error-disable-interface or ../log
                       or ../disable)";
                      presence
                        "Indicates a efd node is configured.";
                      description
                        "Bring down the interface using EFD";
                    }  // container efd
    
                    container log {
                      must
                        "not(../error-disable-interface or ../efd
                       or ../disable)";
                      presence
                        "Indicates a log node is configured.";
                      description
                        "Log the event";
                    }  // container log
    
                    container disable {
                      must
                        "not(../error-disable-interface or ../efd
                       or ../log)";
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Perform no action";
                    }  // container disable
                  }  // container link-fault
                }  // container uni-directional
    
                container capabilities-conflict {
                  description
                    "Action to perform when a capabilities conflict occurs";
                  container error-disable-interface {
                    must
                      "not(../efd or ../log
                     or ../disable)";
                    presence
                      "Indicates a error-disable-interface node is configured.";
                    description
                      "Error-disable the interface";
                  }  // container error-disable-interface
    
                  container efd {
                    must
                      "not(../error-disable-interface or ../log
                     or ../disable)";
                    presence
                      "Indicates a efd node is configured.";
                    description
                      "Enable EFD to bring down the interface";
                  }  // container efd
    
                  container log {
                    must
                      "not(../error-disable-interface or ../efd
                     or ../disable)";
                    presence
                      "Indicates a log node is configured.";
                    description "Log the event";
                  }  // container log
    
                  container disable {
                    must
                      "not(../error-disable-interface or ../efd
                     or ../log)";
                    presence
                      "Indicates a disable node is configured.";
                    description
                      "Perform no action";
                  }  // container disable
                }  // container capabilities-conflict
    
                container wiring-conflict {
                  description
                    "Action to perform when a wiring conflict occurs";
                  container efd {
                    must
                      "not(../error-disable-interface or ../log
                     or ../disable)";
                    presence
                      "Indicates a efd node is configured.";
                    description
                      "Enable EFD to bring down the interface";
                  }  // container efd
    
                  container error-disable-interface {
                    must
                      "not(../efd or ../log
                     or ../disable)";
                    presence
                      "Indicates a error-disable-interface node is configured.";
                    description
                      "Error-disable the interface";
                  }  // container error-disable-interface
    
                  container log {
                    must
                      "not(../efd or ../error-disable-interface
                     or ../disable)";
                    presence
                      "Indicates a log node is configured.";
                    description "Log the event";
                  }  // container log
    
                  container disable {
                    must
                      "not(../efd or ../error-disable-interface
                     or ../log)";
                    presence
                      "Indicates a disable node is configured.";
                    description
                      "Perform no action";
                  }  // container disable
                }  // container wiring-conflict
    
                container discovery-timeout {
                  description
                    "Action to perform when discovery timeout occurs";
                  container error-disable-interface {
                    must
                      "not(../efd or ../log
                     or ../disable)";
                    presence
                      "Indicates a error-disable-interface node is configured.";
                    description
                      "Error-disable the interface";
                  }  // container error-disable-interface
    
                  container efd {
                    must
                      "not(../error-disable-interface or ../log
                     or ../disable)";
                    presence
                      "Indicates a efd node is configured.";
                    description
                      "Enable EFD to bring down the interface";
                  }  // container efd
    
                  container log {
                    must
                      "not(../error-disable-interface or ../efd
                     or ../disable)";
                    presence
                      "Indicates a log node is configured.";
                    description "Log the event";
                  }  // container log
    
                  container disable {
                    must
                      "not(../error-disable-interface or ../efd
                     or ../log)";
                    presence
                      "Indicates a disable node is configured.";
                    description
                      "Perform no action";
                  }  // container disable
                }  // container discovery-timeout
    
                container high-threshold {
                  description
                    "Action to perform when a high-threshold is crossed";
                  container error-disable-interface {
                    must
                      "not(../log or ../disable)";
                    presence
                      "Indicates a error-disable-interface node is configured.";
                    description
                      "disable the interface";
                  }  // container error-disable-interface
    
                  container log {
                    must
                      "not(../error-disable-interface or ../disable)";
                    presence
                      "Indicates a log node is configured.";
                    description "Log the event";
                  }  // container log
    
                  container disable {
                    must
                      "not(../error-disable-interface or ../log)";
                    presence
                      "Indicates a disable node is configured.";
                    description
                      "Perform no action";
                  }  // container disable
                }  // container high-threshold
    
                container remote-loopback {
                  description
                    "Action to perform when a remote loopback event occurs";
                  container log {
                    must "not(../disable)";
                    presence
                      "Indicates a log node is configured.";
                    description "Log the event";
                  }  // container log
    
                  container disable {
                    must "not(../log)";
                    presence
                      "Indicates a disable node is configured.";
                    description
                      "Perform no action";
                  }  // container disable
                }  // container remote-loopback
    
                container session-up {
                  description
                    "Action to perform when a session comes up";
                  container log {
                    must "not(../disable)";
                    presence
                      "Indicates a log node is configured.";
                    description "Log the event";
                  }  // container log
    
                  container disable {
                    must "not(../log)";
                    presence
                      "Indicates a disable node is configured.";
                    description
                      "Perform no action";
                  }  // container disable
                }  // container session-up
    
                container session-down {
                  description
                    "Action to perform when a session goes down";
                  container error-disable-interface {
                    must
                      "not(../efd or ../log
                     or ../disable)";
                    presence
                      "Indicates a error-disable-interface node is configured.";
                    description
                      "Error-disable the interface";
                  }  // container error-disable-interface
    
                  container efd {
                    must
                      "not(../error-disable-interface or ../log
                     or ../disable)";
                    presence
                      "Indicates a efd node is configured.";
                    description
                      "Enable EFD to bring down the interface";
                  }  // container efd
    
                  container log {
                    must
                      "not(../error-disable-interface or ../efd
                     or ../disable)";
                    presence
                      "Indicates a log node is configured.";
                    description "Log the event";
                  }  // container log
    
                  container disable {
                    must
                      "not(../error-disable-interface or ../efd
                     or ../log)";
                    presence
                      "Indicates a disable node is configured.";
                    description
                      "Perform no action";
                  }  // container disable
                }  // container session-down
              }  // container action
            }  // container oam
          }  // container ethernet
        }  // grouping IF-ETHER-BODY
    
        augment /a1:snmp-server/a1:traps {
          container ethernet {
            description
              "Enable SNMP Ethernet traps";
            container oam {
              description
                "Enable link-oam traps";
              container events {
                presence
                  "Indicates a events node is configured.";
                description
                  "Enable all OAM event traps";
              }  // container events
            }  // container oam
          }  // container ethernet
        }
    
        augment /a2:interfaces/a2:interface {
          uses IF-ETHER-BODY;
        }
    
        augment /a2:interfaces/a2:interface-preconfigure {
          uses IF-ETHER-BODY;
        }
    
        container ethernet {
          description
            "Ethernet configuration commands";
          container oam {
            description
              "Configure information relating to Ethernet Link OAM";
            container profiles {
              description "802.3 OAM profiles";
              list profile {
                key "profile-name";
                description
                  "The name of the profile";
                leaf profile-name {
                  type xr:Cisco-ios-xr-string {
                    length "1..32";
                    pattern
                      "[-a-zA-Z0-9_]*[-a-zA-Z0-9_]";
                  }
                  description
                    "The name of the profile";
                }
    
                container link-monitor {
                  description
                    "Enter link-monitor submode";
                  container symbol-period {
                    description
                      "Symbol-period event configuration";
                    container window {
                      description
                        "window size for symbol-period event configuration";
                      leaf milliseconds {
                        type uint32 {
                          range "1000..60000";
                        }
                        must
                          "not(../symbols/window-size)";
                        description
                          "Use milliseconds as the units for the symbol-period window";
                      }
    
                      container symbols {
                        description
                          "Use symbols as the units for the symbol-period window";
                        leaf window-size {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          must
                            "not(../../milliseconds)";
                          description
                            "Size of the symbol-period window in symbols";
                        }
    
                        container thousand {
                          must
                            "../window-size and not(../million or ../billion)";
                          presence
                            "Indicates a thousand node is configured.";
                          description
                            "Use thousands of the specified units";
                        }  // container thousand
    
                        container million {
                          must
                            "../window-size and not(../thousand or ../billion)";
                          presence
                            "Indicates a million node is configured.";
                          description
                            "Use millions of the specified units";
                        }  // container million
    
                        container billion {
                          must
                            "../window-size and not(../thousand or ../million)";
                          presence
                            "Indicates a billion node is configured.";
                          description
                            "Use billions of the specified units";
                        }  // container billion
                      }  // container symbols
                    }  // container window
    
                    container threshold {
                      description
                        "threshold configuration for symbol-period events";
                      container symbols {
                        description
                          "Use symbols as the units for the symbol-period threshold";
                        leaf low {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          description
                            "low threshold for symbol-period events";
                        }
    
                        leaf high {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          description
                            "high threshold for symbol-period events";
                        }
    
                        container thousand {
                          must
                            "(../low or ../high) and not(../million or ../billion)";
                          presence
                            "Indicates a thousand node is configured.";
                          description
                            "Use thousands of the specified units";
                        }  // container thousand
    
                        container million {
                          must
                            "(../low or ../high) and not(../thousand or ../billion)";
                          presence
                            "Indicates a million node is configured.";
                          description
                            "Use millions of the specified units";
                        }  // container million
    
                        container billion {
                          must
                            "(../low or ../high) and not(../thousand or ../million)";
                          presence
                            "Indicates a billion node is configured.";
                          description
                            "Use billions of the specified units";
                        }  // container billion
                      }  // container symbols
    
                      container ppm {
                        description
                          "Use parts-per-million as the units for the symbol-period threshold";
                        leaf low {
                          type uint32 {
                            range "1..1000000";
                          }
                          description
                            "low threshold for symbol-period events";
                        }
    
                        leaf high {
                          type uint32 {
                            range "1..1000000";
                          }
                          description
                            "high threshold for symbol-period events";
                        }
                      }  // container ppm
                    }  // container threshold
                  }  // container symbol-period
    
                  container frame {
                    description
                      "Frame event configuration";
                    container window {
                      description
                        "window size for frame event configuration";
                      leaf milliseconds {
                        type uint32 {
                          range "1000..60000";
                        }
                        description
                          "Use milliseconds as the units for the frame window";
                      }
                    }  // container window
    
                    container threshold {
                      description
                        "threshold configuration for frame events";
                      leaf low {
                        type uint32 {
                          range "1..4294967295";
                        }
                        description
                          "low threshold for frame events";
                      }
    
                      leaf high {
                        type uint32 {
                          range "1..4294967295";
                        }
                        description
                          "high threshold for frame events";
                      }
    
                      container thousand {
                        must
                          "(../low or ../high) and not(../million or ../billion)";
                        presence
                          "Indicates a thousand node is configured.";
                        description
                          "Use thousands of the specified units";
                      }  // container thousand
    
                      container million {
                        must
                          "(../low or ../high) and not(../thousand or ../billion)";
                        presence
                          "Indicates a million node is configured.";
                        description
                          "Use millions of the specified units";
                      }  // container million
    
                      container billion {
                        must
                          "(../low or ../high) and not(../thousand or ../million)";
                        presence
                          "Indicates a billion node is configured.";
                        description
                          "Use billions of the specified units";
                      }  // container billion
                    }  // container threshold
                  }  // container frame
    
                  container frame-period {
                    description
                      "frame-period event configuration";
                    container window {
                      description
                        "window size for frame-period event configuration";
                      leaf milliseconds {
                        type uint32 {
                          range "100..60000";
                        }
                        must
                          "not(../frames/window-size)";
                        description
                          "Use milliseconds as the units for the frame-period window";
                      }
    
                      container frames {
                        description
                          "Use frames as the units for the frame-period window";
                        leaf window-size {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          must
                            "not(../../milliseconds)";
                          description
                            "Size of the frame-period window in symbols";
                        }
    
                        container thousand {
                          must
                            "../window-size and not(../million or ../billion)";
                          presence
                            "Indicates a thousand node is configured.";
                          description
                            "Use thousands of the specified units";
                        }  // container thousand
    
                        container million {
                          must
                            "../window-size and not(../thousand or ../billion)";
                          presence
                            "Indicates a million node is configured.";
                          description
                            "Use millions of the specified units";
                        }  // container million
    
                        container billion {
                          must
                            "../window-size and not(../thousand or ../million)";
                          presence
                            "Indicates a billion node is configured.";
                          description
                            "Use billions of the specified units";
                        }  // container billion
                      }  // container frames
                    }  // container window
    
                    container threshold {
                      description
                        "threshold for frame-period events";
                      container frames {
                        description
                          "Use frames as the units for the frame-period threshold";
                        leaf low {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          description
                            "low threshold for frame-period events";
                        }
    
                        leaf high {
                          type uint32 {
                            range
                              "1..4294967295";
                          }
                          description
                            "high threshold for frame-period events";
                        }
    
                        container thousand {
                          must
                            "(../low or ../high) and not(../million or ../billion)";
                          presence
                            "Indicates a thousand node is configured.";
                          description
                            "Use thousands of the specified units";
                        }  // container thousand
    
                        container million {
                          must
                            "(../low or ../high) and not(../thousand or ../billion)";
                          presence
                            "Indicates a million node is configured.";
                          description
                            "Use millions of the specified units";
                        }  // container million
    
                        container billion {
                          must
                            "(../low or ../high) and not(../thousand or ../million)";
                          presence
                            "Indicates a billion node is configured.";
                          description
                            "Use billions of the specified units";
                        }  // container billion
                      }  // container frames
    
                      container ppm {
                        description
                          "Use parts-per-million as the units for the frame-period threshold";
                        leaf low {
                          type uint32 {
                            range "1..1000000";
                          }
                          description
                            "low threshold for frame events";
                        }
    
                        leaf high {
                          type uint32 {
                            range "1..1000000";
                          }
                          description
                            "high threshold for frame events";
                        }
                      }  // container ppm
                    }  // container threshold
                  }  // container frame-period
    
                  container frame-seconds {
                    description
                      "frame-seconds event configuration";
                    container window {
                      description
                        "window size for frame-seconds event configuration";
                      leaf milliseconds {
                        type uint32 {
                          range "10000..900000";
                        }
                        description
                          "Use milliseconds as the units for the frame-seconds window";
                      }
                    }  // container window
    
                    container threshold {
                      description "threshold";
                      leaf low {
                        type uint32 {
                          range "1..900";
                        }
                        description
                          "low threshold for frame-seconds events";
                      }
    
                      leaf high {
                        type uint32 {
                          range "1..900";
                        }
                        description
                          "high threshold for frame-seconds events";
                      }
                    }  // container threshold
                  }  // container frame-seconds
    
                  container monitoring {
                    presence
                      "Indicates a monitoring node is configured.";
                    description
                      "Monitoring support";
                    container disable {
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Disable monitoring";
                    }  // container disable
                  }  // container monitoring
                }  // container link-monitor
    
                container mode {
                  description "OAM mode";
                  container passive {
                    must "not(../active)";
                    presence
                      "Indicates a passive node is configured.";
                    description "Passive mode";
                  }  // container passive
    
                  container active {
                    must "not(../passive)";
                    presence
                      "Indicates a active node is configured.";
                    description "Active mode";
                  }  // container active
                }  // container mode
    
                leaf hello-interval {
                  type enumeration {
                    enum "100ms" {
                      value 1;
                      description
                        "100 millisecond hello interval";
                    }
                    enum "1s" {
                      value 0;
                      description
                        "1 second hello interval";
                    }
                  }
                  description
                    "Hello interval time";
                }
    
                container remote-loopback {
                  presence
                    "Indicates a remote-loopback node is configured.";
                  description
                    "Remote-loopback support";
                  container disable {
                    presence
                      "Indicates a detection node is configured.";
                    description
                      "Disable remote loopback support";
                  }  // container disable
                }  // container remote-loopback
    
                container mib-retrieval {
                  presence
                    "Indicates a mib-retrieval node is configured.";
                  description
                    "MIB retrieval support";
                  container disable {
                    presence
                      "Indicates a detection node is configured.";
                    description
                      "Disable MIB retrieval support";
                  }  // container disable
                }  // container mib-retrieval
    
                container uni-directional {
                  description
                    "Uni-directional link-fault detection support";
                  container link-fault {
                    description
                      "Uni-directional link-fault detection support";
                    container detection {
                      presence
                        "Indicates a detection node is configured.";
                      description
                        "Uni-directional link-fault detection support";
                      container disable {
                        presence
                          "Indicates a detection node is configured.";
                        description
                          "Disable uni-directional link-fault detection support";
                      }  // container disable
                    }  // container detection
                  }  // container link-fault
                }  // container uni-directional
    
                container connection {
                  description
                    "OAM connection configuration";
                  leaf timeout {
                    type uint32 {
                      range "2..30";
                    }
                    description
                      "OAM connection session timeout period";
                  }
                }  // container connection
    
                container require-remote {
                  description
                    "Enter require-remote submode";
                  container mib-retrieval {
                    presence
                      "Indicates a mib-retrieval node is configured.";
                    description
                      "Requirement of MIB retrieval support";
                    container disable {
                      presence
                        "Indicates a detection node is configured.";
                      description
                        "Disable the requirement of MIB retrieval support";
                    }  // container disable
                  }  // container mib-retrieval
    
                  container remote-loopback {
                    presence
                      "Indicates a remote-loopback node is configured.";
                    description
                      "Requirement of Remote loopback support";
                    container disable {
                      presence
                        "Indicates a detection node is configured.";
                      description
                        "Disable the requirement of remote loopback support";
                    }  // container disable
                  }  // container remote-loopback
    
                  container link-monitoring {
                    presence
                      "Indicates a link-monitoring node is configured.";
                    description
                      "Requirement of Link monitoring support";
                    container disable {
                      presence
                        "Indicates a detection node is configured.";
                      description
                        "Disable the requirement of link monitoring support";
                    }  // container disable
                  }  // container link-monitoring
    
                  container mode {
                    description
                      "Requirement of a specific OAM mode";
                    container passive {
                      must
                        "not(../active or ../disabled)";
                      presence
                        "Indicates a passive node is configured.";
                      description
                        "Require passive mode";
                    }  // container passive
    
                    container active {
                      must
                        "not(../passive or ../disabled)";
                      presence
                        "Indicates a active node is configured.";
                      description
                        "Require active mode";
                    }  // container active
    
                    container disabled {
                      must
                        "not(../passive or ../active)";
                      presence
                        "Indicates a disabled node is configured.";
                      description
                        "Disable the requirement of a specific mode";
                    }  // container disabled
                  }  // container mode
                }  // container require-remote
    
                container action {
                  description
                    "Enter action submode";
                  container critical-event {
                    description
                      "Action to perform when a critical event occurs";
                    container error-disable-interface {
                      must
                        "not(../log or ../disable)";
                      presence
                        "Indicates a error-disable-interface node is configured.";
                      description
                        "Error-disable the interface";
                    }  // container error-disable-interface
    
                    container log {
                      must
                        "not(../error-disable-interface or ../disable)";
                      presence
                        "Indicates a log node is configured.";
                      description
                        "Log the event";
                    }  // container log
    
                    container disable {
                      must
                        "not(../error-disable-interface or ../log)";
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Perform no action";
                    }  // container disable
                  }  // container critical-event
    
                  container dying-gasp {
                    description
                      "Action to perform when a dying gasp occurs";
                    container error-disable-interface {
                      must
                        "not(../log or ../disable)";
                      presence
                        "Indicates a error-disable-interface node is configured.";
                      description
                        "Error-disable the interface";
                    }  // container error-disable-interface
    
                    container log {
                      must
                        "not(../error-disable-interface or ../disable)";
                      presence
                        "Indicates a log node is configured.";
                      description
                        "Log the event";
                    }  // container log
    
                    container disable {
                      must
                        "not(../error-disable-interface or ../log)";
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Perform no action";
                    }  // container disable
                  }  // container dying-gasp
    
                  container uni-directional {
                    description
                      "Action to perform when a uni-directional link-fault message is received";
                    container link-fault {
                      description
                        "Action to perform when a uni-directional link-fault message is received";
                      container error-disable-interface {
                        must
                          "not(../efd or ../log
                         or ../disable)";
                        presence
                          "Indicates a error-disable-interface node is configured.";
                        description
                          "Error-disable the interface";
                      }  // container error-disable-interface
    
                      container efd {
                        must
                          "not(../error-disable-interface or ../log
                         or ../disable)";
                        presence
                          "Indicates a efd node is configured.";
                        description
                          "Bring down the interface using EFD";
                      }  // container efd
    
                      container log {
                        must
                          "not(../error-disable-interface or ../efd
                         or ../disable)";
                        presence
                          "Indicates a log node is configured.";
                        description
                          "Log the event";
                      }  // container log
    
                      container disable {
                        must
                          "not(../error-disable-interface or ../efd
                         or ../log)";
                        presence
                          "Indicates a disable node is configured.";
                        description
                          "Perform no action";
                      }  // container disable
                    }  // container link-fault
                  }  // container uni-directional
    
                  container capabilities-conflict {
                    description
                      "Action to perform when a capabilities conflict occurs";
                    container error-disable-interface {
                      must
                        "not(../efd or ../log
                       or ../disable)";
                      presence
                        "Indicates a error-disable-interface node is configured.";
                      description
                        "Error-disable the interface";
                    }  // container error-disable-interface
    
                    container efd {
                      must
                        "not(../error-disable-interface or ../log
                       or ../disable)";
                      presence
                        "Indicates a efd node is configured.";
                      description
                        "Enable EFD to bring down the interface";
                    }  // container efd
    
                    container log {
                      must
                        "not(../error-disable-interface or ../efd
                       or ../disable)";
                      presence
                        "Indicates a log node is configured.";
                      description
                        "Log the event";
                    }  // container log
    
                    container disable {
                      must
                        "not(../error-disable-interface or ../efd
                       or ../log)";
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Perform no action";
                    }  // container disable
                  }  // container capabilities-conflict
    
                  container wiring-conflict {
                    description
                      "Action to perform when a wiring conflict occurs";
                    container efd {
                      must
                        "not(../error-disable-interface or ../log
                       or ../disable)";
                      presence
                        "Indicates a efd node is configured.";
                      description
                        "Enable EFD to bring down the interface";
                    }  // container efd
    
                    container error-disable-interface {
                      must
                        "not(../efd or ../log
                       or ../disable)";
                      presence
                        "Indicates a error-disable-interface node is configured.";
                      description
                        "Error-disable the interface";
                    }  // container error-disable-interface
    
                    container log {
                      must
                        "not(../efd or ../error-disable-interface
                       or ../disable)";
                      presence
                        "Indicates a log node is configured.";
                      description
                        "Log the event";
                    }  // container log
    
                    container disable {
                      must
                        "not(../efd or ../error-disable-interface
                       or ../log)";
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Perform no action";
                    }  // container disable
                  }  // container wiring-conflict
    
                  container discovery-timeout {
                    description
                      "Action to perform when discovery timeout occurs";
                    container error-disable-interface {
                      must
                        "not(../efd or ../log
                       or ../disable)";
                      presence
                        "Indicates a error-disable-interface node is configured.";
                      description
                        "Error-disable the interface";
                    }  // container error-disable-interface
    
                    container efd {
                      must
                        "not(../error-disable-interface or ../log
                       or ../disable)";
                      presence
                        "Indicates a efd node is configured.";
                      description
                        "Enable EFD to bring down the interface";
                    }  // container efd
    
                    container log {
                      must
                        "not(../error-disable-interface or ../efd
                       or ../disable)";
                      presence
                        "Indicates a log node is configured.";
                      description
                        "Log the event";
                    }  // container log
    
                    container disable {
                      must
                        "not(../error-disable-interface or ../efd
                       or ../log)";
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Perform no action";
                    }  // container disable
                  }  // container discovery-timeout
    
                  container high-threshold {
                    description
                      "Action to perform when a high-threshold is crossed";
                    container error-disable-interface {
                      must
                        "not(../log or ../disable)";
                      presence
                        "Indicates a error-disable-interface node is configured.";
                      description
                        "disable the interface";
                    }  // container error-disable-interface
    
                    container log {
                      must
                        "not(../error-disable-interface or ../disable)";
                      presence
                        "Indicates a log node is configured.";
                      description
                        "Log the event";
                    }  // container log
    
                    container disable {
                      must
                        "not(../error-disable-interface or ../log)";
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Perform no action";
                    }  // container disable
                  }  // container high-threshold
    
                  container remote-loopback {
                    description
                      "Action to perform when a remote loopback event occurs";
                    container log {
                      must "not(../disable)";
                      presence
                        "Indicates a log node is configured.";
                      description
                        "Log the event";
                    }  // container log
    
                    container disable {
                      must "not(../log)";
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Perform no action";
                    }  // container disable
                  }  // container remote-loopback
    
                  container session-up {
                    description
                      "Action to perform when a session comes up";
                    container log {
                      must "not(../disable)";
                      presence
                        "Indicates a log node is configured.";
                      description
                        "Log the event";
                    }  // container log
    
                    container disable {
                      must "not(../log)";
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Perform no action";
                    }  // container disable
                  }  // container session-up
    
                  container session-down {
                    description
                      "Action to perform when a session goes down";
                    container error-disable-interface {
                      must
                        "not(../efd or ../log
                       or ../disable)";
                      presence
                        "Indicates a error-disable-interface node is configured.";
                      description
                        "Error-disable the interface";
                    }  // container error-disable-interface
    
                    container efd {
                      must
                        "not(../error-disable-interface or ../log
                       or ../disable)";
                      presence
                        "Indicates a efd node is configured.";
                      description
                        "Enable EFD to bring down the interface";
                    }  // container efd
    
                    container log {
                      must
                        "not(../error-disable-interface or ../efd
                       or ../disable)";
                      presence
                        "Indicates a log node is configured.";
                      description
                        "Log the event";
                    }  // container log
    
                    container disable {
                      must
                        "not(../error-disable-interface or ../efd
                       or ../log)";
                      presence
                        "Indicates a disable node is configured.";
                      description
                        "Perform no action";
                    }  // container disable
                  }  // container session-down
                }  // container action
              }  // list profile
            }  // container profiles
          }  // container oam
        }  // container ethernet
      }  // module Cisco-IOS-XR-um-ethernet-oam-cfg
    

© 2023 YumaWorks, Inc. All rights reserved.