submodule bbf-xpon-base {
  yang-version 1.1;
  belongs-to bbf-xpon {
    prefix bbf-xpon;
  }

  import ietf-interfaces {
    prefix if;
  }
  import ietf-inet-types {
    prefix inet;
  }
  import bbf-xpon-types {
    prefix bbf-xpon-types;
  }
  import bbf-xpon-if-type {
    prefix bbf-xponift;
  }
  import bbf-yang-types {
    prefix bbf-yang;
  }

  organization
    "Broadband Forum <https://www.broadband-forum.org>
     Fiber Access Networks Work Area";
  contact
    "Comments or questions about this Broadband Forum YANG module
     should be directed to <mailto:help@broadband-forum.org>.

     Editor:      Joey Boyd, ADTRAN

     Editor:      Samuel Chen, Broadcom

     Editor:      Robert Peschi, Nokia

     WA Director: Marta Seda, Calix

     WA Director: Lin Wei, Huawei";
  description
    "This submodule contains a collection of YANG definitions and
     augmentations to ietf-interfaces for managing the xPON
     infrastructure.

     Copyright (c) 2018, Broadband Forum

     Redistribution and use in source and binary forms, with or
     without modification, are permitted provided that the following
     conditions are met:

     1. Redistributions of source code must retain the above copyright
        notice, this list of conditions and the following disclaimer.

     2. Redistributions in binary form must reproduce the above
        copyright notice, this list of conditions and the following
        disclaimer in the documentation and/or other materials
        provided with the distribution.

     3. Neither the name of the copyright holder nor the names of its
        contributors may be used to endorse or promote products
        derived from this software without specific prior written
        permission.

     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
     CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES,
     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
     CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
     STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
     ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

     The above license is used as a license under copyright only.
     Please reference the Forum IPR Policy for patent licensing terms
     <https://www.broadband-forum.org/ipr-policy>.

     Any moral rights which are necessary to exercise under the above
     license grant are also deemed granted under this license.

     This version of this YANG module is part of TR-385; see
     the TR itself for full legal notices.";

  revision 2019-02-25 {
    description
      "Initial revision.
       * Approval Date:    2019-02-25.
       * Publication Date: 2019-02-25.";
    reference
      "TR-385: ITU-T PON YANG Modules
               <https://www.broadband-forum.org/technical/download/
                        TR-385.pdf>";
  }

  feature ictp-support {
    description
      "Indicates that the OLT supports ICTP.";
  }

  feature configurable-ictp-proxy-tcp-port {
    if-feature "ictp-support";
    description
      "Indicates support for the configuration of the TCP port
       used by an ICTP proxy.";
  }

  container xpon {
    description
      "Configuration associated with managing xPON in a system.";
    container ictp {
      if-feature "ictp-support";
      description
        "Configuration data for the support of
         Inter-Channel-Termination Protocol (ICTP).";
      reference
        "BBF TR-352";
      leaf activated {
        type boolean;
        default "false";
        description
          "This is to enable or disable support of ICTP.
           When true, the OLT attempts to establish TCP
           connections with all relevant peer ICTP proxies
           and is ready to exchange ICTP messages with other
           channel terminations through those ICTP proxies.
           When false, the OLT does not process nor generate
           any ICTP messages and will not establish nor maintain
           any TCP connection to any ICTP proxy.";
      }
      container all-ictp-proxies-all-channel-groups {
        description
          "This container contains all configuration data related to
           TR-352 ICTP transport infrastructure for all ICTP proxies,
           whether they are in charge of 'inside-olt' channel
           terminations or 'outside-olt' channel terminations, for all
           channel groups.";
        list proxy {
          key "name";
          description
            "The list of all ICTP proxies, whether they are in charge
             of 'inside-olt' channel terminations or 'outside-olt'
             channel terminations, for all channel groups configured
             in the OLT.";
          leaf name {
            type bbf-yang:string-ascii64;
            description
              "Name of the ICTP Proxy.";
          }
          leaf host {
            type inet:host;
            mandatory true;
            description
              "This is the IP address or the DNS domain name of the
               ICTP proxy. TCP connections originating from this ICTP
               proxy will use this IP address (or the one resolved
               from the DNS domain name) as source IP address. Other
               ICTP proxies will reach this Proxy using this IP
               address (or the one resolved from the DNS domain name)
               as destination address.";
          }
          leaf tcp-port {
            if-feature "configurable-ictp-proxy-tcp-port";
            type inet:port-number;
            default "7202";
            description
              "The TCP port used by the ICTP proxy.";
          }
          container all-channel-terminations-proxied-by-this-proxy {
            description
              "In the context of a given ICTP proxy, this container
               contains the list of all channel terminations 'inside'
               and 'outside' the OLT, for all channel groups, for
               which this ICTP proxy is playing proxy role.";
            list channel-termination {
              key "channel-termination-ref";
              description
                "The list of all channel terminations inside and
                 outside the OLT, for all channel groups, for which
                 this ICTP proxy is playing proxy role.";
              leaf channel-termination-ref {
                type if:interface-ref;
                must "derived-from-or-self(/if:interfaces"
                   + "/if:interface[if:name=current()]/if:type,"
                   + "'bbf-xponift:channel-termination')" {
                  error-message
                    "Must reference a channel termination.";
                }
                description
                  "Reference to a channel termination for which this
                   ICTP proxy is responsible.";
              }
              leaf channel-termination-ictp-activated {
                type boolean;
                default "false";
                description
                  "When true, the ICTP proxy is willing to exchange
                   ICTP messages on behalf of this
                   channel termination. When false, the ICTP
                   proxy ignores this channel termination.";
              }
            }
          }
        }
      }
    }
  }
  container xpon-state {
    config false;
    description
      "State data associated with managing xPON in a system.";
    container ictp {
      if-feature "ictp-support";
      description
        "State data for the support of
         Inter-Channel-Termination Protocol (ICTP).";
      reference
        "BBF TR-352";
      container all-ictp-proxies-all-channel-groups {
        description
          "State data related to all ICTP proxies across all channel
           groups.";
        list proxy {
          key "name";
          description
            "The list of all ICTP proxies for all channel-groups.";
          leaf name {
            type bbf-yang:string-ascii64;
            description
              "Name of the ICTP Proxy.";
          }
          leaf proxy-ip-address {
            type bbf-xpon-types:ip-address-or-unresolved;
            description
              "This is the IP address (v4 or v6) of this ICTP proxy
               as derived from its configured host and as used in the
               TCP connection when established. It is 'unresolved' if
               for some reason the system is unable to deduce the IP
               address from the host name of the ICTP proxy.";
          }
          container known-peered-proxies {
            description
              "In the context of an ICTP proxy, this container
               contains state data about peering relations involving
               this ICTP proxy. An OLT must know at least all peering
               relations involving the ICTP proxies in charge of one
               or several channel terminations 'inside' the OLT.
               An OLT may or may not know peering relations between
               ICTP proxies exclusively involving channel terminations
               'outside' the OLT.";
            list proxy {
              key "name";
              description
                "In the context of an ICTP proxy, the list of all
                 ICTP proxies which the OLT knows to be peered with
                 this ICTP proxy.";
              leaf name {
                type bbf-yang:string-ascii64;
                description
                  "Name of this ICTP peer proxy.";
              }
              leaf ip-address {
                type bbf-xpon-types:ip-address-or-unresolved;
                description
                  "This is the IP address (v4 or v6) of the peer
                   ICTP proxy as derived from its configured
                   host and as used in the TCP connection when
                   established. It is 'unresolved' if for some
                   reason the system is unable to deduce the IP
                   address from the host name of the ICTP proxy.";
              }
              leaf tcp-connection-state {
                type identityref {
                  base bbf-xpon-types:tcp-connection-state-base;
                }
                description
                  "This leaf reflects the state of the TCP connection
                   with this peer ICTP Proxy. When 'established' the
                   TCP connection is operational and able to transport
                   ICTP messages. When 'not-established', the TCP
                   connection is unable to exchange any ICTP message.
                   When the TCP connection state is 'unknown' the OLT
                   does not know whether the involved ICTP proxies can
                   exchange ICTP messages or not; typically, this is
                   because the OLT is not involved at all with either
                   of the two related ICTP proxies.";
              }
              leaf source-tcp-port {
                type inet:port-number;
                description
                  "This is the source port number of the TCP
                   connection with the peer ICTP proxy, when
                   established.";
              }
              leaf destination-tcp-port {
                type inet:port-number;
                description
                  "This is the destination port number of the TCP
                   connection with the peer ICTP proxy, when
                   established.";
              }
            }
          }
        }
      }
    }
  }

  augment '/if:interfaces/if:interface' {
    when "if:type = 'bbf-xponift:channel-group'";
    description
      "Augment interface configuration with xPON channel group
       configuration.";
    container channel-group {
      description
        "Channel group configuration data for all xPON variants
         (NG-PON2, XGS-PON, XG-PON and G-PON).";
    }
  }

  augment '/if:interfaces/if:interface' {
    when "derived-from-or-self"
       + "(if:type, 'bbf-xponift:channel-partition')";
    description
      "Augment interface configuration with xPON channel partition
       configuration.";
    container channel-partition {
      description
        "Channel partition configuration data for all xPON variants
         (NG-PON2, XGS-PON, XG-PON and G-PON).";
    }
  }

  augment '/if:interfaces/if:interface' {
    when "derived-from-or-self"
       + "(if:type, 'bbf-xponift:channel-pair')";
    description
      "Augment interface configuration with xPON channel pair
       configuration.";
    container channel-pair {
      description
        "Channel pair configuration data for all xPON variants
         (NG-PON2, XGS-PON, XG-PON and G-PON).";
    }
  }

  augment '/if:interfaces/if:interface' {
    when "derived-from-or-self"
       + "(if:type, 'bbf-xponift:channel-termination')";
    description
      "Augment interface configuration with xPON channel termination
       configuration.";
    container channel-termination {
      description
        "channel termination configuration data for all xPON variants
         (NG-PON2, XGS-PON, XG-PON and G-PON).";
    }
  }

  augment '/if:interfaces-state/if:interface' {
    when "derived-from-or-self"
       + "(if:type, 'bbf-xponift:channel-group')";
    description
      "Augment interface state data with xPON channel group
       state data.";
    container channel-group {
      description
        "Channel group state data for all xPON variants
         (NG-PON2, XGS-PON, XG-PON and G-PON).";
    }
  }

  augment '/if:interfaces-state/if:interface' {
    when "derived-from-or-self"
       + "(if:type, 'bbf-xponift:channel-pair')";
    description
      "Augment interface state data with xPON channel pair
       state data.";
    container channel-pair {
      description
        "Channel pair state data for all xPON variants
         (NG-PON2, XGS-PON, XG-PON and G-PON).";
    }
  }

  augment '/if:interfaces-state/if:interface' {
    when "derived-from-or-self"
       + "(if:type, 'bbf-xponift:channel-termination')";
    description
      "Augment interface state data with xPON channel termination
       state data.";
    container channel-termination {
      description
        "Channel termination state data for all xPON variants
         (NG-PON2, XGS-PON, XG-PON and G-PON).";
    }
  }
}
