module bbf-l2-access-attributes {
  yang-version 1.1;
  namespace "urn:bbf:yang:bbf-l2-access-attributes";
  prefix bbf-l2access-attr;

  import bbf-dot1q-types {
    prefix bbf-dot1qt;
  }
  import ietf-network {
    prefix nw;
  }
  import ietf-network-topology {
    prefix nt;
  }

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

     Editor:      TBD

     PS Leader:   TBD

     WA Director: TBD";
  description
    "This module contains a collection of YANG definitions for
     simplifying the Access Device Model as exposed over NBI of BAA.

     Copyright (c) 2022, 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-383a4; see
     the TR itself for full legal notices.";

  revision 2021-09-30 {
    description
      "Initial revision.";
    reference
      "RFC 8944: A YANG Data Model for Layer 2 Network Topologies";
  }

  grouping access-tag {
    leaf tag-type {
      type union {
        type bbf-dot1qt:dot1q-tag-type;
        type uint16;
        type enumeration {
          enum any {
            description
              "Matches any tag type.";
          }
        }
      }
      default "any";
      description
        "VLAN tag type.";
    }
    leaf vlan-id {
      type union {
        type bbf-dot1qt:vlan-id-range;
        type enumeration {
          enum any {
            description
              "Matches any VLAN-ID in the range 1 to 4094, or
               matches priority tagged frames.";
          }
          enum priority-tagged {
            description
              "Priority-tagged frames are frames with a VLAN tag
               present and that match VLAN-ID 0.";
          }
          enum vlan-id-is-a-parameter {
            description
              "The VLAN ID is not
               specified inside this profile but has to be
               specified at the place where this profile
               is referenced.";
          }
        }
      }
      mandatory true;
      description
        "Allowed VLAN-IDs.";
    }
    leaf pbit {
      type union {
        type bbf-dot1qt:pbit-list;
        type enumeration {
          enum any {
            description
              "Matches any pbit value in the range of 0 to 7.";
          }
        }
      }
      description
        "Allowed PBIT values.";
    }
  }

  grouping access-vlan-tag-match {
    description
      "Flexible match on the VLAN tags of Ethernet frames.";
    choice vlan-tag-match-type {
      description
        "Provides a choice of how the frames may be matched.";
      case untagged {
        leaf untagged {
          type empty;
          description
            "Untagged match. Matches all untagged traffic.";
        }
      }
      case vlan-tagged {
        container outer-tag {
          description
            "Classifies traffic using the outermost VLAN tag on the
             frame.";
          uses access-tag;
        }
        container second-tag {
          description
            "Classifies traffic using the second outermost VLAN tag
             on the frame.";
          uses access-tag;
        }
      }
    }
  }

  grouping access-vlan-tag-rewrite {
    description
      "Flexible match on the VLAN tags of Ethernet frames.";
    leaf pop-tags {
      type uint8 {
        range "0..2";
      }
      description
        "The number of tags to pop.";
    }
    container push-outer-tag {
      description
        "The outermost VLAN tag to push onto the frame.";
      uses access-tag;
    }
    container push-second-tag {
      description
        "The second outermost VLAN tag to push onto the frame.";
      uses access-tag;
    }
  }

  grouping vlan-match-and-rewrite {
    description
      "Configuration of frame vlan tag processing, include frame classification and vlan tag rewrite";
    container match-criteria {
      description
        "This container collects match criteria for various frame fields.";
      uses access-vlan-tag-match;
    }
    container ingress-rewrite {
      description
        "Ingress rewrite refers to the supported tag manipulations
         before the frame is offered to a higher layer interface or
         to a forwarder or to a destination termination-point.";
      uses access-vlan-tag-rewrite;
    }
  }

  grouping l2-access-attributes {
    description
      "Flexible match on the VLAN tags of Ethernet frames.";
    container vlan-translation {
      leaf translation-profile {
        type leafref {
          path
            "/bbf-l2access-attr:vlan-translation-profiles/bbf-l2access-attr:"
          + "vlan-translation-profile/bbf-l2access-attr:name";
        }
        description
          "A reference to a vlan translation profile that contains
           frame vlan classification and vlan tag rewrite.";
      }
      leaf outer-vlan-id {
        when
          '/bbf-l2access-attr:vlan-translation-profiles/'
        + 'bbf-l2access-attr:vlan-translation-profile[bbf-l2access-attr:'
        + 'name = current()/../../vlan-translation-profile]/'
        + 'match-criteria/outer-tag/vlan-id = '
        + '"vlan-id-is-a-parameter" ' {
          description
            "Match criteria for the outer VLAN tag of a frame that
             overrules the match criteria provided through the
             referenced vlan translaton profile.";
        }
        type bbf-dot1qt:vlan-id;
      }
      leaf second-vlan-id {
        when
          '/bbf-l2access-attr:vlan-translation-profiles/'
        + 'bbf-l2access-attr:vlan-translation-profile[bbf-l2access-attr:'
        + 'name = current()/../../vlan-translation-profile]/'
        + 'match-criteria/second-tag/vlan-id = '
        + '"vlan-id-is-a-parameter" ' {
          description
            "Match criteria for the second VLAN tag of a frame that
             overrules the match criteria provided through the
             referenced vlan translaton profile.";
        }
        type bbf-dot1qt:vlan-id;
      }
      leaf push-outer-vlan-id {
        when
          '/bbf-l2access-attr:vlan-translation-profiles/'
        + 'bbf-l2access-attr:vlan-translation-profile[bbf-l2access-attr:'
        + 'name = current()/../../vlan-translation-profile]/'
        + 'ingress-rewrite/push-outer-tag/vlan-id = '
        + '"vlan-id-is-a-parameter" ' {
          description
            "Indicates the VLAN ID of the pushed outer VLAN tag,
             which overwrites the outer VLAN tag rewritten
             by the referenced VLAN translation profile.";
        }
        type bbf-dot1qt:vlan-id;
      }
      leaf push-second-vlan-id {
        when
          '/bbf-l2access-attr:vlan-translation-profiles/'
        + 'bbf-l2access-attr:vlan-translation-profile[bbf-l2access-attr:'
        + 'name = current()/../../vlan-translation-profile]/'
        + 'ingress-rewrite/push-second-tag/vlan-id = '
        + '"vlan-id-is-a-parameter" ' {
          description
            "Indicates the VLAN ID of the pushed seconed VLAN tag,
             which overwrites the seconed VLAN tag rewritten
             by the referenced VLAN translation profile.";
        }
        type bbf-dot1qt:vlan-id;
      }
    }
  }

  container vlan-translation-profiles {
    description
      "Configuration of VLAN translation profiles.";
    list vlan-translation-profile {
      key "name";
      description
        "A translation profile defines the vlan match criteria and
             vlan tag rewrite.";
      leaf name {
        type string;
        description
          "vlan translaton profile name.";
      }
      uses vlan-match-and-rewrite;
    }
  }
  container vlan-forwarding-profiles {
    description
      "Configuration of VLAN forwarding profiles.";
    list vlan-forwarding-profile {
      key "name";
      description
        "A forwarding profile defines the network-side
         forwarding of traffic in a forwarding VLAN.";
      leaf name {
        type string;
        description
          "vlan forwrding profile name.";
      }
      container forwarding-ports {
        description
          "Network-side forwarding ports in the forwarding profile.";
        list port {
          key "name";
          leaf name {
            type string;
            description
              "forwarding port name.";
          }
          leaf node-ref {
            type leafref {
              path "/nw:networks/nw:network/nw:node/nw:node-id";
              require-instance false;
            }
            description
              "This leaf references a network side node.";
          }
          leaf tp-ref {
            type leafref {
              path "/nw:networks/nw:network/"
                 + "nw:node/nt:termination-point/nt:tp-id";
              require-instance false;
            }
            description
              "This leaf references a network side termination point types.";
          }
        }
      }
    }
  }
}