cisco-pw

This YANG module describes the configuration and operational model of Psuedowire on PE router Terms and Acronyms AC : Att...

  • Version: 2019-07-01

    cisco-pw@2019-07-01


    
      module cisco-pw {
    
        yang-version 1;
    
        namespace
          "urn:cisco:params:xml:ns:yang:pw";
    
        prefix l2vpn-pw;
    
        import cisco-semver {
          prefix cisco-semver;
        }
        import ietf-interfaces {
          prefix if;
        }
        import ietf-inet-types {
          prefix inet;
        }
        import ietf-yang-types {
          prefix yang;
        }
    
        organization "Cisco Systems, Inc.";
    
        contact
          "Cisco Systems, Inc.
         Customer Service
    
         Postal: 170 W Tasman Drive
         San Jose, CA 95134
    
         Tel: +1 1800 553-NETS
    
         E-mail: cs-yang@cisco.com";
    
        description
          "This YANG module describes the configuration and operational
         model of Psuedowire on PE router
    
         Terms and Acronyms
            AC    : Attachment Circuit
            BD    : Bridge Domain
            L2VPN : Layer 2 Virtual Private Network
            PE    : Provider Edge
            PW    : Pseudowire
            VFI   : Virtual Forwarding Instance
            VPLS  : Virtual Private LAN Service
            VLAN  : Virtual Local Area Network
        ";
    
        revision "2019-07-01" {
          description
            "Establish semantic version baseline";
        }
    
        revision "2016-12-07" {
          description
            "Removed cisco govern extension";
        }
    
        revision "2014-12-01" {
          description "Initial revision";
          reference
            "TODO";
    
        }
    
        cisco-semver:module-version "1.0.0";
    
        feature pw-interface {
          description
            "This feature represents ability to support pseudowire
           interface.";
        }
    
        feature pw-load-balancing {
          description
            "This feature represents ability to support load-balancing
           on pseudowires.";
        }
    
        feature pw-class-flow-setting {
          description
            "This feature represents ability to configure load-balancing
           flow type on a pwsdowire class/template level.";
        }
    
        feature flow-label-tlv-code17 {
          description
            "This feature represents ability to configure Flow Aware Label
           (FAT) PW to carry code 0x17 as sub-tlv id";
        }
    
        feature flow-label-static-config {
          description
            "This feature represents ability to use statically configured
           flow label on traffic flowing on the PW";
        }
    
        feature pw-preferred-path {
          description
            "This feature represents the ability to use a preferred path
           for pseudowires";
        }
    
        feature preferred-path-peer {
          description
            "This feature represents ability to use peer information
           (ip address or hostname) as preferred path.";
        }
    
        feature pw-vccv {
          description
            "This feature represents ability to configure vccv option on a
           pseudowire";
        }
    
        feature pw-class-switchover-delay {
          description
            "This feature represents the ability to configure pseodowire
           redundancy switchover properties on a pseudowire class";
        }
    
        feature pw-class-source-ip {
          description
            "This feature represents the ability to confifgure source IPv4
           address on a pseudowire class/template";
        }
    
        feature pw-class-tag-rewrite {
          description
            "This feature represents the ability to configure tag-rewrite
           parameters on a pseudowire class";
        }
    
        feature pw-tag-impose-vlan-id {
          description
            "This feature represents the ability to configure a tag for a
           VLAN ID on a pseudowire";
        }
    
        feature pw-ipv6-source {
          description
            "This feature represents the ability to configure a IPv6 local
           address for a IPv6 pseudowire";
        }
    
        feature pw-port-profiles {
          description
            "This feature represents the ability to configure port-profile
           parameters.";
        }
    
        feature pw-class-status {
          description
            "This feature represents the ability to configure status
           related propoties on a pw class.";
        }
    
        feature pw-sequencing {
          description
            "This feature represents the ability to support sequencing on
           pseudowire.";
        }
    
        feature pw-mac-withdraw-config {
          description
            "This feature represents the ability to configure pseudowire
           MAC withdraw feature.";
        }
    
        feature pw-short-config {
          description
            "This feature represents the ability to configure pseudowire
           with short version of parameters: neighbor IP, VC ID and encap
           type.";
        }
    
        feature static-label-direct-config {
          description
            "This feature represents the ability to directly configure a
           static label with neighbor IP and VC ID within a service
           instance.";
        }
    
        feature pw-grouping-config {
          description
            "This feature represents the ability to enable pseudowire
           grouping.";
        }
    
        feature pw-oam-refresh-config {
          description
            "This feature represents the ability to enable pseudowire oam
           refresh.";
        }
    
        feature pw-status-config {
          description
            "This feature represents the ability to enable pseudowire
           status at a global level.";
        }
    
        feature predictive-redundancy-config {
          description
            "This feature represents the ability to enable predicitive
           redundancy.";
        }
    
        feature pw-static-oam-config {
          description
            "This feature represents the ability to support oam classes";
        }
    
        identity pw-encapsulation-type {
          description
            "Base identity for PW encapsulations.";
        }
    
        identity pw-encap-mpls {
          base pw-encapsulation-type;
          description
            "Use MPLS for PW encapsulation";
        }
    
        identity pw-vc-type {
          description
            "Base identity for VC type in PW";
        }
    
        identity pw-vc-type-ether {
          base pw-vc-type;
          description
            "Identity for Ethernet VC type";
        }
    
        identity pw-vc-type-vlan {
          base pw-vc-type;
          description
            "Identity for VLAN VC type";
        }
    
        identity pw-vc-type-vlan-passthrough {
          base pw-vc-type;
          description
            "Identity for VLAN passthrough VC type (XR)";
        }
    
        identity pw-load-balance-type {
          description
            "Base type for load-balancing type";
        }
    
        identity pw-lb-ethernet-type {
          base pw-load-balance-type;
          description
            "Base type for load-balancing with ethernet fields";
        }
    
        identity pw-lb-eth-src-mac {
          base pw-lb-ethernet-type;
          description
            "Load-balancing with ethernet source MAC field";
        }
    
        identity pw-lb-eth-dst-mac {
          base pw-lb-ethernet-type;
          description
            "Load-balancing with ethernet destination MAC field";
        }
    
        identity pw-lb-eth-src-dst-mac {
          base pw-lb-ethernet-type;
          description
            "Load-balancing with ethernet source and destination MAC
           fields";
        }
    
        identity pw-lb-ip-type {
          base pw-load-balance-type;
          description
            "Base type for load-balancing with IP";
        }
    
        identity pw-lb-ip-src-ip {
          base pw-lb-ip-type;
          description
            "Load-balancing with IP source IP field";
        }
    
        identity pw-lb-ip-dst-ip {
          base pw-load-balance-type;
          description
            "Load-balancing with IP destination IP field";
        }
    
        identity pw-lb-ip-src-dst-ip {
          base pw-lb-ip-type;
          description
            "Load-balancing with IP source and destination IP fields";
        }
    
        identity pw-signaling-protocol-type {
          description
            "Base identity for PW signaling protocol";
        }
    
        identity pw-signaling-protocol-none {
          base pw-signaling-protocol-type;
          description "No PW signaling protocol";
        }
    
        identity pw-signaling-protocol-ldp {
          base pw-signaling-protocol-type;
          description
            "Use MPLS LDP for PW signaling protocol";
        }
    
        identity pw-signaling-protocol-bgp {
          base pw-signaling-protocol-type;
          description
            "Use BGP for PW signaling protocol";
        }
    
        identity pw-sequencing-type {
          description
            "Sequencing options for PW";
        }
    
        identity pw-sequencing-receive {
          base pw-sequencing-type;
          description
            "Receive sequencing option for PW";
        }
    
        identity pw-sequencing-transmit {
          base pw-sequencing-type;
          description
            "Transmit sequencing option for PW";
        }
    
        identity pw-sequencing-both {
          base pw-sequencing-type;
          description
            "Receive and Transmit sequencing option for PW";
        }
    
        typedef pw-template-ref {
          type leafref {
            path "/l2vpn-pw:pseudowire-config/pw-templates/l2vpn-pw:pw-template/l2vpn-pw:name";
          }
          description
            "Reference to an instance of pseudowire template.";
        }
    
        typedef pw-oper-vc-peer-addr-ref {
          type leafref {
            path "/l2vpn-pw:pseudowire-state/l2vpn-pw:pseudowires/l2vpn-pw:vc-peer-address";
          }
          description
            "Reference to the peer ip address of a pseudowire in oper
           data tree.";
        }
    
        typedef pw-oper-vc-id-ref {
          type leafref {
            path "/l2vpn-pw:pseudowire-state/l2vpn-pw:pseudowires/l2vpn-pw:vc-id";
          }
          description
            "Reference to the vc id of a pseudowire in oper data tree.";
        }
    
        typedef pw-group-id-type {
          type uint32;
          description
            "An administrative identification mechanism for grouping a
           set of service-specific pseudo-wire services. May only
           have local significance.";
          reference
            "CISCO-IETF-PW-TC-MIB";
    
        }
    
        typedef pw-vc-id-type {
          type uint32;
          description
            "Virtual Circuit Identifier. Used to identify the VC
           (together with some other fields) in the signaling
           session. Zero if the VC is set-up manually.";
          reference
            "CISCO-IETF-PW-TC-MIB";
    
        }
    
        typedef pw-vc-index-type {
          type uint32;
          description
            "Virtual Circuit Index. Locally unique index for indexing
           MIB tables associated with a particular VC.";
        }
    
        typedef pw-oper-state-type {
          type enumeration {
            enum "up" {
              value 1;
              description
                "Pseudowire is established, i.e., it is operational
               and available to carry packets";
            }
            enum "down" {
              value 2;
              description
                "Pseudowire is idle, i.e., it is administratively up
               but network connectivity with the neighbor is not
               established";
            }
            enum "cold-standby" {
              value 3;
              description
                "Pseudowire can take over traffic for another
               pseudowire";
            }
            enum "hot-standby" {
              value 4;
              description
                "Pseudowire is available to immediately take over
               traffic from another pseudowire";
            }
            enum "recovering" {
              value 5;
              description
                "Pseudowire was previously in active state and is
               in the process of being restored to active state";
            }
            enum "no-hardware" {
              value 6;
              description
                "Pseudowire no longer has the required hardware
               resources to be able to offer packet service to
               the system";
            }
            enum "unresolved" {
              value 7;
              description
                "Pseudowire is not completely provisioned";
            }
            enum "provisioned" {
              value 8;
              description
                "Pseudowire has received local configuration";
            }
            enum "remote-standby" {
              value 9;
              description
                "Pseudowire neighbor has sent its pseudowire
               binding information";
            }
            enum "local-ready" {
              value 10;
              description
                "Pseudowire is provisioned, got a local label, and
               its local binding has been sent to the neighbor";
            }
            enum "all-ready" {
              value 11;
              description
                "Pseudowire is locally provisioned, local binding
               has been sent, and remote binding was received
               from the neighbor";
            }
          }
          description
            "Indicates the operational status of the PW VC";
        }
    
        container pseudowire-config {
          description
            "Pseudowire configuration data.";
          container global {
            description
              "Global configurations related to pseudowires.";
            leaf pw-grouping {
              if-feature pw-grouping-config;
              type boolean;
              default "false";
              description
                "Enable pw-grouping.
    
               When pseudowires (PW) are established, each PW is assigned
               a group ID that is common for all PWs created from the
               same physical port. Hence, when the physical port becomes
               non-functional or is deleted, L2VPN sends a single message
               to advertise the status change of all PWs belonging to the
               group. A single L2VPN signal thus avoids a lot of
               processing and loss in reactivity.";
              reference
                "RFC 4447";
    
            }
    
            leaf pw-oam-refresh-transmit {
              if-feature pw-oam-refresh-config;
              type uint32 {
                range "1..4095";
              }
              description
                "Set pseudowire oam transmit refresh time (in seconds)";
            }
    
            leaf pw-status {
              if-feature pw-status-config;
              type boolean;
              description "Enable pw-status";
            }
    
            leaf predictive-redundancy {
              if-feature predictive-redundancy-config;
              type boolean;
              description
                "Enable predictive redundancy";
            }
    
            leaf vc-state-notification-enabled {
              type boolean;
              description
                "If this leaf is set to true, then it enables the emission
               of 'vc-state-notification'; otherwise these notifications
               are not emitted.";
              reference
                "CISCO-IETF-PW-MIB";
    
            }
    
            leaf vc-state-notification-batch-size {
              type uint32;
              description
                "'vc-state-notification' allows batching of pseudowires in
               order to reduce number of notifications generated from the
               device. All pseudowires in a batched notification MUST
               share same state at the same time.
    
               This leaf defines the maximum number of VCs that can be
               batched in vc-state-notification.";
            }
    
            leaf vc-state-notification-rate {
              type uint32;
              description
                "This leaf defines the maximum number of VC state change
               notifications that can be emitted from the device per
               second.";
              reference
                "CISCO-IETF-PW-MIB";
    
            }
          }  // container global
    
          container pw-templates {
            description
              "Contains list of all pw-template definitions.
             Also called PW Class (XR) and Port Profile (NX-OS)";
            list pw-template {
              key "name";
              description
                "Pseudowire template list.";
              leaf name {
                type string;
                description "PW Template name.";
              }
    
              leaf encapsulation {
                type identityref {
                  base pw-encapsulation-type;
                }
                description
                  "Encapsulation used for PW";
              }
    
              leaf control-word {
                when
                  "../encapsulation = 'pw-encap-mpls'" {
                  description
                    "Pseudowire encapsulation must be of mpls type to enable
    control word in MPLS pseudowire header.";
                }
                type boolean;
                description
                  "Use control word in the MPLS PW header.";
              }
    
              leaf signaling-protocol {
                type identityref {
                  base pw-signaling-protocol-type;
                }
                description
                  "Signaling protocol to use.";
              }
    
              container load-balance {
                if-feature pw-load-balancing;
                description
                  "Load balancing mechanism.";
                choice flow {
                  if-feature pw-class-flow-setting;
                  default "ethernet";
                  description
                    "Load-balancing options for a pseudowire.";
                  leaf ethernet {
                    type identityref {
                      base pw-lb-ethernet-type;
                    }
                    default
                      "pw-lb-eth-src-dst-mac";
                    description
                      "Ethernet mac address based load balancing";
                  }
                  leaf ip {
                    type identityref {
                      base pw-lb-ip-type;
                    }
                    description
                      "IP address based load balancing";
                  }
                }  // choice flow
    
                container flow-label {
                  description
                    "Enable Flow Aware Label (FAT) PW - the capability to
    carry flow label on PW";
                  leaf direction {
                    type enumeration {
                      enum "transmit" {
                        value 1;
                        description "TODO";
                      }
                      enum "receive" {
                        value 2;
                        description "TODO";
                      }
                      enum "both" {
                        value 3;
                        description "TODO";
                      }
                    }
                    description
                      "Directions to enable Flow Aware Label PW";
                  }
    
                  leaf tlv-code-17 {
                    if-feature flow-label-tlv-code17;
                    type boolean;
                    description
                      "Carry code 0x17 as Flow Aware Label (FAT) PW signalled
    sub-tlv id";
                  }
    
                  leaf static {
                    if-feature flow-label-static-config;
                    type boolean;
                    default "false";
                    description
                      "Use statically configured flow label on traffic
    flowing on the PW";
                  }
                }  // container flow-label
              }  // container load-balance
    
              container preferred-path {
                if-feature pw-preferred-path;
                description
                  "Preferred path for the PW";
                choice path {
                  description
                    "Choice of tunnel interface or peer";
                  leaf interface {
                    type if:interface-ref;
                    description
                      "Reference to a tunnel interface.";
                  }
    
                  case address {
                    if-feature preferred-path-peer;
                    leaf address {
                      type inet:ip-address;
                      description "TODO";
                    }
                  }  // case address
    
                  case hostname {
                    if-feature preferred-path-peer;
                    leaf hostname {
                      type string;
                      description "TODO";
                    }
                  }  // case hostname
                }  // choice path
    
                leaf disable-fallback {
                  type boolean;
                  description
                    "Disable fall back to alternative route";
                }
              }  // container preferred-path
    
              container sequencing {
                if-feature pw-sequencing;
                description "Sequencing options";
                leaf direction {
                  type identityref {
                    base pw-sequencing-type;
                  }
                  description "TODO";
                }
    
                leaf resync {
                  type int32 {
                    range "5..65535";
                  }
                  description "TODO";
                }
              }  // container sequencing
    
              leaf vc-type {
                type identityref {
                  base pw-vc-type;
                }
                description
                  "Type of VC in the PW.";
              }
    
              leaf switching-tlv {
                type boolean;
                description "Send switching TLV";
              }
    
              container vccv {
                if-feature pw-vccv;
                description "VCCV configuration";
                leaf control-word {
                  type boolean;
                  description
                    "Enable VCCV verification type";
                }
              }  // container vccv
    
              container switchover-delay {
                if-feature pw-class-switchover-delay;
                description
                  "Timer configuration related to pseudowire redundancy
    switchover and restoring to primary";
                leaf switchover-timer {
                  type uint8 {
                    range "0..120";
                  }
                  description
                    "Specifies how long the backup pseudowire should wait before
    taking over";
                }
    
                choice restore-timer-or-never {
                  description
                    "Restore timer configuration options.";
                  leaf timer {
                    type uint8 {
                      range "0..180";
                    }
                    description
                      "Specifies how long the primary pseudowire should wait
    after it becomes active to take over for the backup
    pseudowire";
                  }
                  leaf never {
                    type boolean;
                    default "false";
                    description
                      "The primary pseudowire never takes over for the backup";
                  }
                }  // choice restore-timer-or-never
              }  // container switchover-delay
    
              leaf source-ip {
                if-feature pw-class-source-ip;
                type inet:ipv4-address;
                description
                  "The local source IPv4 address";
              }
    
              leaf tag-rewrite-ingress-vlan {
                if-feature pw-class-tag-rewrite;
                type uint16 {
                  range "1..4094";
                }
                description
                  "Configure ingress tag rewrite vlan.";
              }
    
              leaf mac-withdraw {
                if-feature pw-mac-withdraw-config;
                type boolean;
                default "false";
                description
                  "Send Mac-withdraw message when PW becomes active.";
              }
    
              container status {
                description "TODO";
                leaf decoupled {
                  if-feature pw-class-status;
                  type boolean;
                  default "false";
                  description
                    "Reflect standby status of the attachment circuit as up on
    the pseudowire.";
                }
    
                leaf disable {
                  if-feature pw-class-status;
                  type boolean;
                  default "false";
                  description
                    "Do not send pseudowire status to peer.";
                }
    
                leaf peer-topo-dual-homed {
                  type boolean;
                  description
                    "Our peer(s) are participating in a redundant solution with
    some form of redundancy protocol running between the peer
    routers. Only one of the remote peers will advertise a
    status of UP at a time. The other will advertise standby.
    Change our configuration so we can send a status of UP on
    both active and redundant pseudowires.";
                }
    
                leaf route-watch-disable {
                  if-feature pw-class-status;
                  type boolean;
                  default "false";
                  description
                    "Disable listening for routing events to trigger redundancy
    status changes";
                }
    
                leaf redundancy-master {
                  if-feature pw-class-status;
                  type boolean;
                  default "false";
                  description
                    "Make the PE as master to enables Pseudowire Preferential
    Forwarding feature to display the status of  the active
    and backup pseudowires.";
                }
              }  // container status
    
              container port-profile-spec {
                if-feature pw-port-profiles;
                description
                  "Pseudowire port profile configurations.";
                leaf description {
                  type string;
                  description
                    "Description string for the port profile";
                }
    
                leaf shutdown {
                  type boolean;
                  default "false";
                  description
                    "Shut down this template";
                }
    
                leaf shut-force {
                  type boolean;
                  default "false";
                  description
                    "Force shut down this port profile";
                }
    
                leaf mtu {
                  type uint32;
                  description "MTU of the port";
                }
    
                leaf max-ports {
                  type uint16 {
                    range "1..16384";
                  }
                  description
                    "Maximum number of ports";
                }
    
                leaf enabled {
                  type boolean;
                  default "false";
                  description
                    "Enable this port profile";
                }
              }  // container port-profile-spec
            }  // list pw-template
          }  // container pw-templates
    
          container pw-static-oam-classes {
            if-feature pw-static-oam-config;
            description
              "List of pseudowire static oam classes.";
            list pw-static-oam-class {
              key "name";
              description
                "Pseudowire static oam class configuration";
              leaf name {
                type string;
                description "OAM class name";
              }
    
              leaf ack {
                type boolean;
                description "Enable ack";
              }
    
              leaf keepalive {
                type uint32 {
                  range "1..4095";
                }
                default "600";
                description
                  "Keepalive in seconds";
              }
    
              leaf timeout-refresh-send {
                type uint32 {
                  range "1..4095";
                }
                default "30";
                description
                  "Refresh timeout in seconds";
              }
    
              leaf timeout-refresh-ack {
                type uint32 {
                  range "1..4095";
                }
                default "600";
                description
                  "Ack timeout in seconds";
              }
            }  // list pw-static-oam-class
          }  // container pw-static-oam-classes
        }  // container pseudowire-config
    
        container pseudowire-state {
          config false;
          description
            "Contains the operational state for all the pseudowire
           instances in the switch, no matter what L2VPN service
           created them.";
          list pseudowires {
            key "vc-peer-address vc-id vc-owner-type vc-name vc-index";
            description
              "Each list element contains the state for a pseudowire
             instance. The list can be optionally keyed by any
             combination of vc-id, peer-address, etc.
             Additional filtering of the list by the agent may be
             performed upon request by the client using subtree
             filtering as described in RFC 6020 Section 6.";
            leaf vc-type {
              type identityref {
                base pw-vc-type;
              }
              description
                "Indicates the service to be carried over this VC";
            }
    
            leaf vc-owner-type {
              type enumeration {
                enum "vpws" {
                  value 1;
                  description
                    "Created under VPWS context";
                }
                enum "vpls-vfi" {
                  value 2;
                  description
                    "Created under VFI context";
                }
                enum "vpls-bridge-domain" {
                  value 3;
                  description
                    "Created under bridge domain context";
                }
                enum "interface" {
                  value 4;
                  description
                    "Created by manual pseudowire interface
                   configuration";
                }
              }
              description
                "Indicates the service responsible for establishing
               this VC";
            }
    
            leaf vc-owner-name {
              type string;
              description
                "Name of the L2VPN service instance that created
               the pseudowire VC";
            }
    
            leaf vc-psn-type {
              type enumeration {
                enum "mpls" {
                  value 1;
                  description
                    "MPLS encapsulation";
                }
                enum "l2tp" {
                  value 2;
                  description
                    "L2TP encapsulation";
                }
                enum "ip" {
                  value 3;
                  description "IP core";
                }
                enum "mpls-over-ip" {
                  value 4;
                  description
                    "MPLS encapsulation over IP core";
                }
                enum "gre" {
                  value 5;
                  description
                    "GRE encapsulation";
                }
                enum "other" {
                  value 6;
                  description
                    "Some other encapsulation";
                }
              }
              description
                "Indicates the type of packet-switched network
               that carries this VC";
            }
    
            leaf vc-peer-address {
              type inet:ip-address;
              description
                "This object contains the value of the peer node address
               of the PW/PE protocol entity";
            }
    
            leaf vc-id {
              type pw-vc-id-type;
              description
                "Used to distinguish between pseudowires going to the
               same peer node";
            }
    
            leaf vc-index {
              type pw-vc-index-type;
              description
                "Locally-unique ID within the device for this
               pseudowire";
            }
    
            leaf vc-local-group-id {
              type pw-group-id-type;
              description
                "Used to identify which local pseudowire group this
               pseudowire belongs to";
            }
    
            leaf vc-control-word {
              type boolean;
              description
                "Indicates if the control word is sent with each packet
               by the local node";
            }
    
            leaf vc-local-if-mtu {
              type uint32;
              description
                "If not zero, this represents the locally supported MTU
               size over the interface (or the virtual interface)
               associated with the VC";
            }
    
            leaf vc-remote-group-id {
              type pw-group-id-type;
              description
                "If not zero, indicates the pseudowire group to which
               this pseudowire belongs on the peer node";
            }
    
            leaf vc-remote-control-word {
              type enumeration {
                enum "noControlWord" {
                  value 1;
                  description
                    "Peer sends control word";
                }
                enum "withControlWord" {
                  value 2;
                  description
                    "Peer does not send control word";
                }
                enum "notYetKnown" {
                  value 3;
                  description
                    "Have not received indication yet if peer sends
                   control word";
                }
              }
              description
                "Indicates whether MPLS control words are used by the
               pseudowire PSN service";
            }
    
            leaf vc-remote-if-mtu {
              type uint32;
              description
                "The remote interface MTU as (optionally) received
               from the remote node via the signaling protocol.
               Should be zero if this parameter is not available
               or not used";
            }
    
            leaf vc-outbound-label {
              type uint32;
              description
                "The VC label used in the outbound direction (i.e. toward
               the PSN). Example: for MPLS PSN, it represents the 20 bits
               of VC tag, for L2TP it represent the 32 bits Session ID.
               If the label is not yet known (signaling in procesS), the
               object should return a value of 0xFFFFFFFF.";
            }
    
            leaf vc-inbound-label {
              type uint32;
              description
                "The VC label used in the inbound direction (i.e. packets
               received from the PSN). Example: for MPLS PSN, it
               represents the 20 bits of VC tag, for L2TP it represents
               the 32 bits Session ID. If the label is not yet known
               (signaling in process), the object should return a value
               of 0xFFFFFFFF.";
            }
    
            leaf vc-name {
              type string;
              description
                "The canonical name assigned to the VC. The name may be
               autogenerated by the device; this Yang model does not
               currently support direct configuration of this name.";
            }
    
            leaf vc-oper-status {
              type pw-oper-state-type;
              description
                "Indicates the actual combined operational status of this
               VC. It is 'up' if both vc-inbound-oper-status and
               vc-outbound-oper-status are in 'up' state. For all other
               values, if the VCs in both directions are of the same
               value it reflects that value, otherwise it is set to the
               most severe status out of the two statuses. The order of
               severance from most severe to less severe is: unknown,
               notPresent, down, lowerLayerDown, dormant, testing, up.
               The operator may consult the per direction oper-status
               for fault isolation per direction.";
            }
    
            leaf vc-inbound-oper-status {
              type pw-oper-state-type;
              description
                "Indicates the actual operational status of this VC in
               the  inbound direction";
            }
    
            leaf vc-outbound-oper-status {
              type pw-oper-state-type;
              description
                "Indicates the actual operational status of this VC in
               the outbound direction";
            }
    
            container statistics {
              description
                "A collection of pseudowire-related statistics objects";
              leaf vc-create-time {
                type yang:timestamp;
                description
                  "System time when this VC was created";
              }
    
              leaf vc-up-time {
                type yang:timeticks;
                description
                  "Number of consecutive ticks this VC has been 'up' in
                 both directions together";
              }
    
              leaf discontinuity-time {
                type yang:date-and-time;
                mandatory true;
                description
                  "The time on the most recent occasion at which any of
                 this pseudowire's counters sufferred discontinuity.
                 If no such discontinuities have occurred since the
                 last re-initialization of the local management
                 subsystem, then this node contains the time the
                 local management subsystem re-initialized itself.";
              }
    
              leaf in-octets {
                type yang:counter64;
                description
                  "The total number of octets received on this
                 pseudowire.
    
                 Discontinuities in the value of this counter can
                 occur at re-initialization of the management system
                 and at other times as indicated by the value of
                 'discontinuity-time'.";
              }
    
              leaf in-pkts {
                type yang:counter64;
                description
                  "The total number of packets received on this
                 pseudowire.
    
                 Discontinuities in the value of this counter can
                 occur at re-initialization of the management system
                 and at other times as indicated by the value of
                 'discontinuity-time'.";
              }
    
              leaf in-errors {
                type yang:counter64;
                description
                  "The total number of inbound packets that contained
                 errors.
    
                 Discontinuities in the value of this counter can
                 occur at re-initialization of the management system
                 and at other times as indicated by the value of
                 'discontinuity-time'.";
              }
    
              leaf out-octets {
                type yang:counter64;
                description
                  "The total number of octets sent on this pseudowire.
    
                 Discontinuities in the value of this counter can
                 occur at re-initialization of the management system
                 and at other times as indicated by the value of
                 'discontinuity-time'.";
              }
    
              leaf out-pkts {
                type yang:counter64;
                description
                  "The total number of packets sent on this pseudowire.
    
                 Discontinuities in the value of this counter can
                 occur at re-initialization of the management system
                 and at other times as indicated by the value of
                 'discontinuity-time'.";
              }
    
              leaf out-errors {
                type yang:counter64;
                description
                  "The total number of outbound packets that could not
                 be sent on this pseudowire.
    
                 Discontinuities in the value of this counter can
                 occur at re-initialization of the management system
                 and at other times as indicated by the value of
                 'discontinuity-time'.";
              }
            }  // container statistics
          }  // list pseudowires
        }  // container pseudowire-state
    
        notification vc-up-notification {
          description
            "This notification is generated when the 'vc-oper-status' leaf
           for one or more VC are about to enter the 'up' state from some
           other state.
    
           Multiple VCs that changed 'up' state can be combined into
           single notification. Maximum batch-size of each notification
           is defined by 'vc-state-notification-batch-size' leaf. If
           number of eligible VCs are more than batch-size then
           additional notifications should be generated.";
          reference
            "CISCO-IETF-PW-MIB cpwVcUp notification.";
    
          list vc-list {
            description
              "List of VCs that moved to 'up' state";
            leaf vc-peer-address {
              type pw-oper-vc-peer-addr-ref;
              description
                "Reference to peer ip address of a pseudowire instance.";
            }
    
            leaf vc-id {
              type pw-oper-vc-id-ref;
              description
                "Reference to vc-id of a pseudowire instance.";
            }
          }  // list vc-list
        }  // notification vc-up-notification
    
        notification vc-down-notification {
          description
            "This notification is generated when the 'vc-oper-status' leaf
           for one or more VC are about to enter the 'down' state from
           some other state.
    
           Multiple VCs that changed 'down' state can be combined into
           single notification. Maximum batch-size of each notification
           is defined by 'vc-state-notification-batch-size' leaf. If
           number of eligible VCs are more than batch-size then
           additional notifications should be generated.";
          reference
            "CISCO-IETF-PW-MIB cpwVcDown notification.";
    
          list vc-list {
            description
              "List of VCs that moved to 'down' state";
            leaf vc-peer-address {
              type pw-oper-vc-peer-addr-ref;
              description
                "Reference to peer ip address of a pseudowire instance.";
            }
    
            leaf vc-id {
              type pw-oper-vc-id-ref;
              description
                "Reference to vc-id of a pseudowire instance.";
            }
          }  // list vc-list
        }  // notification vc-down-notification
      }  // module cisco-pw
    

© 2023 YumaWorks, Inc. All rights reserved.