module ietf-l3-unicast-topology-state {
  yang-version 1.1;
  namespace
    "urn:ietf:params:xml:ns:yang:ietf-l3-unicast-topology-state";
  prefix "l3t-s";
  import ietf-network-state {
    prefix "nw-s";
  }
  import ietf-network-topology-state {
    prefix "nt-s";
  }
  import ietf-l3-unicast-topology {
    prefix "l3t";
  }
  organization
    "IETF I2RS (Interface to the Routing System) Working Group";
  contact
    "WG Web:    <https://datatracker.ietf.org/wg/i2rs/>
     WG List:   <mailto:i2rs@ietf.org>
     Editor:    Alexander Clemm
                <mailto:ludwig@clemm.org>
     Editor:    Jan Medved
                <mailto:jmedved@cisco.com>
     Editor:    Robert Varga
                <mailto:robert.varga@pantheon.tech>
     Editor:    Xufeng Liu
                <mailto:xufeng.liu.ietf@gmail.com>
     Editor:    Nitin Bahadur
                <mailto:nitin_bahadur@yahoo.com>
     Editor:    Hariharan Ananthakrishnan
                <mailto:hari@packetdesign.com>";
  description
    "This module defines a model for Layer 3 Unicast topology
     state, representing topology that either is learned or
     results from applying topology that has been configured per
     the 'ietf-l3-unicast-topology' model, mirroring the
     corresponding data nodes in this model.

     This model mirrors 'ietf-l3-unicast-topology' but contains only
     read-only state data.  The model is not needed when the
     underlying implementation infrastructure supports the Network
     Management Datastore Architecture (NMDA).

     Copyright (c) 2018 IETF Trust and the persons identified as
     authors of the code.  All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject
     to the license terms contained in, the Simplified BSD License
     set forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC 8346;
     see the RFC itself for full legal notices.";
  revision "2018-02-26" {
    description
      "Initial revision.";
    reference
      "RFC 8346: A YANG Data Model for Layer 3 Topologies";
  }
  augment "/nw-s:networks/nw-s:network/nw-s:network-types" {
    description
      "Introduce new network type for L3 Unicast topology";
    uses l3t:l3-unicast-topology-type;
  }
  augment "/nw-s:networks/nw-s:network" {
    when "nw-s:network-types/l3t-s:l3-unicast-topology" {
      description
        "Augmentation parameters apply only for networks with
        L3 Unicast topology";
    }
    description
        "L3 Unicast for the network as a whole";
    uses l3t:l3-topology-attributes;
  }
  augment "/nw-s:networks/nw-s:network/nw-s:node" {
    when "../nw-s:network-types/l3t-s:l3-unicast-topology" {
      description
        "Augmentation parameters apply only for networks with
        L3 Unicast topology";
    }
    description
        "L3 Unicast node-level attributes ";
    uses l3t:l3-node-attributes;
  }
  augment "/nw-s:networks/nw-s:network/nt-s:link" {
    when "../nw-s:network-types/l3t-s:l3-unicast-topology" {
      description
        "Augmentation parameters apply only for networks with
        L3 Unicast topology";
    }
    description
      "Augments topology link attributes";
    uses l3t:l3-link-attributes;
  }
  augment "/nw-s:networks/nw-s:network/nw-s:node/"
         +"nt-s:termination-point" {
    when "../../nw-s:network-types/l3t-s:l3-unicast-topology" {
      description
        "Augmentation parameters apply only for networks with
        L3 Unicast topology";
    }
    description "Augments topology termination point configuration";
    uses l3t:l3-termination-point-attributes;
  }
  notification l3-node-event {
    description
      "Notification event for L3 node";
    leaf l3-event-type {
      type l3t:l3-event-type;
      description
        "Event type";
    }
    uses nw-s:node-ref;
    uses l3t:l3-unicast-topology-type;
    uses l3t:l3-node-attributes;
  }
  notification l3-link-event {
    description
      "Notification event for L3 link";
    leaf l3-event-type {
      type l3t:l3-event-type;
      description
        "Event type";
    }
    uses nt-s:link-ref;
    uses l3t:l3-unicast-topology-type;
    uses l3t:l3-link-attributes;
  }
  notification l3-prefix-event {
    description
      "Notification event for L3 prefix";
    leaf l3-event-type {
      type l3t:l3-event-type;
      description
        "Event type";
    }
    uses nw-s:node-ref;
    uses l3t:l3-unicast-topology-type;
    container prefix {
      description
        "Contains L3 prefix attributes";
      uses l3t:l3-prefix-attributes;
    }
  }
  notification termination-point-event {
    description
      "Notification event for L3 termination point";
    leaf l3-event-type {
      type l3t:l3-event-type;
      description
        "Event type";
    }
    uses nt-s:tp-ref;
    uses l3t:l3-unicast-topology-type;
    uses l3t:l3-termination-point-attributes;
  }
}