Add NETCONF notification for ONU activation and Kafka client to receive events, update dependencies

Change-Id: I5f768fa8077ef7c64e00a534744ca47492344935
diff --git a/build/config/nacm.xml b/build/config/nacm.xml
new file mode 100644
index 0000000..f9dad2e
--- /dev/null
+++ b/build/config/nacm.xml
@@ -0,0 +1,26 @@
+<!-- ietf-netconf-acm.xml -->
+<nacm xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-acm">
+  <enable-nacm>true</enable-nacm>
+  <groups>
+    <group>
+      <name>voltha</name>
+      <user-name>voltha</user-name>
+    </group>
+  </groups>
+  <rule-list>
+    <name>devices</name>
+    <group>voltha</group>
+    <rule>
+      <name>allow-devices</name>
+      <module-name>bbf-device-aggregation</module-name>
+      <access-operations>*</access-operations>
+      <action>permit</action>
+    </rule>
+    <rule>
+      <name>allow-hardware</name>
+      <module-name>ietf-hardware</module-name>
+      <access-operations>*</access-operations>
+      <action>permit</action>
+    </rule>
+  </rule-list>
+</nacm>
\ No newline at end of file
diff --git a/build/package/Dockerfile.bbf-adapter b/build/package/Dockerfile.bbf-adapter
index bbd3f1e..2517145 100644
--- a/build/package/Dockerfile.bbf-adapter
+++ b/build/package/Dockerfile.bbf-adapter
@@ -20,7 +20,7 @@
 FROM voltha/bbf-adapter-builder:local AS dev
 
 #Build runtime dependencies
-RUN apk add --no-cache libssh-dev=0.9.5-r0 openssl-dev=1.1.1n-r0 openssl=1.1.1n-r0 bash=5.1.16-r0
+RUN apk add --no-cache libssh-dev=0.9.5-r0 openssl-dev=1.1.1q-r0 openssl=1.1.1q-r0 bash=5.1.16-r0
 
 ARG LIBNETCONF2_VERSION
 ARG NETOPEER2_VERSION
@@ -82,29 +82,18 @@
 
 SHELL ["/bin/ash", "-o", "pipefail", "-c"]
 
-RUN apk add --no-cache pcre2=10.36-r0 libssh=0.9.5-r0 openssl=1.1.1n-r0
+RUN apk add --no-cache pcre2=10.36-r1 libssh=0.9.5-r0 openssl=1.1.1q-r0
 
 # Dependencies install their library files in lib64, add it to the path
 RUN echo "/lib:/usr/local/lib:/usr/lib:/usr/local/lib64" > /etc/ld-musl-x86_64.path
 
 # Copy dependencies files
 COPY --from=dev /usr/local/bin /usr/local/bin
+COPY --from=dev /usr/local/sbin /usr/local/sbin
 COPY --from=dev /usr/local/lib64 /usr/local/lib64
 COPY --from=dev /usr/local/share /usr/local/share
 COPY --from=dev /etc/sysrepo /etc/sysrepo
 
-# Copy yang files and install them to sysrepo
-COPY ./build/yang-files /yang
-RUN for f in /yang/*.yang; do sysrepoctl -i "$f" -s /yang -p 664 -v3; done
-
-# Enable admin and oper state in ietf-hardware
-RUN sysrepoctl -e hardware-state -c ietf-hardware
-
-COPY ./build/yang-files/schema-mount.xml /
-
-# Add sysrepo's yang library data to the data provided to the schema-mount libyang extension
-RUN sysrepocfg -X -x/ietf-yang-library:* -d operational >> /schema-mount.xml
-
 # Add user for connecting to netopeer2-server through ssh
 ARG NETCONF_USER=voltha
 ARG NETCONF_PASSWORD=onf
@@ -113,6 +102,25 @@
 RUN adduser $NETCONF_USER --uid 1001 -G netconf --disabled-password
 RUN echo $NETCONF_USER:$NETCONF_PASSWORD | chpasswd
 
+# Copy yang files and install them to sysrepo
+COPY ./build/yang-files /yang
+RUN for f in /yang/*.yang; do sysrepoctl -i "$f" -s /yang -o $NETCONF_USER -g netconf -p 664 -v3; done
+RUN for f in /yang/*/*.yang; do sysrepoctl -i "$f" -s /yang -o $NETCONF_USER -g netconf -p 664 -v3; done
+
+COPY ./build/config /config
+# Disable nacm to test edit-config easily
+RUN sysrepocfg --import=/config/nacm.xml -d startup -m ietf-netconf-acm
+RUN sysrepocfg --import=/config/nacm.xml -d running -m ietf-netconf-acm
+RUN sysrepocfg --import=/config/nacm.xml -d candidate -m ietf-netconf-acm
+
+# Enable admin and oper state in ietf-hardware
+RUN sysrepoctl -e hardware-state -c ietf-hardware -v3
+
+COPY ./build/yang-files/schema-mount.xml /
+
+# Add sysrepo's yang library data to the data provided to the schema-mount libyang extension
+RUN sysrepocfg -X -x/ietf-yang-library:* -d operational >> /schema-mount.xml
+
 # Set the working directory
 WORKDIR /
 
diff --git a/build/tools/Dockerfile.builder b/build/tools/Dockerfile.builder
index a3c27c3..d401866 100644
--- a/build/tools/Dockerfile.builder
+++ b/build/tools/Dockerfile.builder
@@ -19,7 +19,7 @@
 # Build golangci-lint
 FROM --platform=linux/amd64 golang:1.16.3-alpine3.13 AS lint-builder
 
-RUN apk add --no-cache build-base=0.5-r2
+RUN apk add --no-cache build-base=0.5-r3
 
 #Install golangci-lint
 RUN go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.44.2
@@ -31,7 +31,7 @@
 
 RUN mkdir -m 777 /.cache /go/pkg
 
-RUN apk add --no-cache build-base=0.5-r2 pcre2-dev=10.36-r0 git=2.30.3-r0 cmake=3.18.4-r1
+RUN apk add --no-cache build-base=0.5-r3 pcre2-dev=10.36-r1 git=2.30.5-r0 cmake=3.18.4-r1
 
 # Dependencies install their library files in lib64, add it to the path
 RUN echo "/lib:/usr/local/lib:/usr/lib:/usr/local/lib64" > /etc/ld-musl-x86_64.path
diff --git a/build/yang-files/iana-if-type@2021-06-21.yang b/build/yang-files/iana-if-type@2021-06-21.yang
new file mode 100644
index 0000000..e36ee38
--- /dev/null
+++ b/build/yang-files/iana-if-type@2021-06-21.yang
@@ -0,0 +1,1832 @@
+module iana-if-type {
+  namespace "urn:ietf:params:xml:ns:yang:iana-if-type";
+  prefix ianaift;
+
+  import ietf-interfaces {
+    prefix if;
+  }
+
+  organization "IANA";
+  contact
+    "        Internet Assigned Numbers Authority
+
+     Postal: ICANN
+             12025 Waterfront Drive, Suite 300
+             Los Angeles, CA 90094-2536
+             United States
+
+     Tel:    +1 310 301 5800
+     <mailto:iana@iana.org>";
+  description
+    "This YANG module defines YANG identities for IANA-registered
+     interface types.
+
+     This YANG module is maintained by IANA and reflects the
+     'ifType definitions' registry.
+
+     The latest revision of this YANG module can be obtained from
+     the IANA web site.
+
+     Requests for new values should be made to IANA via
+     email (iana@iana.org).
+
+     Copyright (c) 2014 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
+     (http://trustee.ietf.org/license-info).
+
+     The initial version of this YANG module is part of RFC 7224;
+     see the RFC itself for full legal notices.";
+  reference
+    "IANA 'ifType definitions' registry.
+     <http://www.iana.org/assignments/smi-numbers>";
+
+  revision 2021-06-21 {
+    description
+      "Corrected reference for ifType 303.";
+  }
+  revision 2021-05-17 {
+    description
+      "Registered ifType 303.";
+  }
+  revision 2021-04-22 {
+    description
+      "Registered ifType 302.";
+  }
+  revision 2021-04-01 {
+    description
+      "Updated reference for 301.";
+  }
+  revision 2021-02-18 {
+    description
+      "Registered ifType 301.";
+  }
+
+  revision 2020-08-27 {
+    description
+      "Added missing references.";
+  }
+
+  revision 2020-07-13 {
+    description
+      "Added identity cpri.";
+  }
+
+  revision 2020-07-10 {
+    description
+      "Registered ifType 300.";
+  }
+
+  revision 2020-01-10 {
+    description
+      "Registered ifType 299.";
+  }
+
+  revision 2019-10-16 {
+    description
+      "Registered ifType 298.";
+  }
+  revision 2019-07-16 {
+    description
+      "Registered ifType 297.";
+  }
+  revision 2019-06-21 {
+    description
+      "Updated reference associated with ifTypes 295-296.";
+  }
+  
+  revision 2019-02-08 {
+    description
+      "Corrected formatting issue.";
+  }
+
+  revision 2019-01-31 {
+    description
+      "Registered ifTypes 295-296.";
+  }
+
+  revision 2018-07-03 {
+    description
+      "Corrected revision date.";
+  }
+
+  revision 2018-06-29 {
+    description
+      "Corrected formatting issue.";
+  }
+
+  revision 2018-06-28 {
+    description
+      "Registered ifType 294.";
+  }
+
+  revision 2018-06-28 {
+    description
+      "Registered ifType 293.";
+  }
+
+  revision 2018-06-22 {
+    description
+      "Registered ifType 292.";
+  }
+
+  revision 2018-06-21 {
+    description
+      "Registered ifType 291.";
+  }
+
+  revision 2017-03-30 {
+    description
+      "Registered ifType 290.";
+  }
+
+  revision 2017-01-19 {
+    description
+      "Registered ifType 289.";
+  }
+
+  revision 2016-11-23 {
+    description
+      "Registered ifTypes 283-288.";
+  }
+
+  revision 2016-06-09 {
+    description
+      "Registered ifType 282.";
+  }
+  revision 2016-05-03 {
+    description
+      "Registered ifType 281.";
+  }
+  revision 2015-06-12 {
+    description
+      "Corrected formatting issue.";
+  }  
+  revision 2014-09-24 {
+    description
+      "Registered ifType 280.";
+  }
+  revision 2014-09-19 {
+    description
+      "Registered ifType 279.";
+  }
+  revision 2014-07-03 {
+    description
+      "Registered ifTypes 277-278.";
+  }
+  revision 2014-05-19 {
+    description
+      "Updated the contact address.";
+  }
+  revision 2014-05-08 {
+    description
+      "Initial revision.";
+    reference
+      "RFC 7224: IANA Interface Type YANG Module";
+  }
+
+  identity iana-interface-type {
+    base if:interface-type;
+    description
+      "This identity is used as a base for all interface types
+       defined in the 'ifType definitions' registry.";
+  }
+
+  identity other {
+    base iana-interface-type;
+  }
+  identity regular1822 {
+    base iana-interface-type;
+  }
+  identity hdh1822 {
+    base iana-interface-type;
+  }
+  identity ddnX25 {
+    base iana-interface-type;
+  }
+  identity rfc877x25 {
+    base iana-interface-type;
+    reference
+      "RFC 1382 - SNMP MIB Extension for the X.25 Packet Layer";
+  }
+  identity ethernetCsmacd {
+    base iana-interface-type;
+    description
+      "For all Ethernet-like interfaces, regardless of speed,
+       as per RFC 3635.";
+    reference
+      "RFC 3635 - Definitions of Managed Objects for the
+                  Ethernet-like Interface Types";
+  }
+  identity iso88023Csmacd {
+    base iana-interface-type;
+    status deprecated;
+    description
+      "Deprecated via RFC 3635.
+       Use ethernetCsmacd(6) instead.";
+    reference
+      "RFC 3635 - Definitions of Managed Objects for the
+                  Ethernet-like Interface Types";
+  }
+  identity iso88024TokenBus {
+    base iana-interface-type;
+  }
+  identity iso88025TokenRing {
+    base iana-interface-type;
+  }
+  identity iso88026Man {
+    base iana-interface-type;
+  }
+  identity starLan {
+    base iana-interface-type;
+    status deprecated;
+    description
+      "Deprecated via RFC 3635.
+       Use ethernetCsmacd(6) instead.";
+    reference
+      "RFC 3635 - Definitions of Managed Objects for the
+                  Ethernet-like Interface Types";
+  }
+  identity proteon10Mbit {
+    base iana-interface-type;
+  }
+  identity proteon80Mbit {
+    base iana-interface-type;
+  }
+  identity hyperchannel {
+    base iana-interface-type;
+  }
+  identity fddi {
+    base iana-interface-type;
+    reference
+      "RFC 1512 - FDDI Management Information Base";
+  }
+  identity lapb {
+    base iana-interface-type;
+    reference
+      "RFC 1381 - SNMP MIB Extension for X.25 LAPB";
+  }
+  identity sdlc {
+    base iana-interface-type;
+  }
+  identity ds1 {
+    base iana-interface-type;
+    description
+      "DS1-MIB.";
+    reference
+      "RFC 4805 - Definitions of Managed Objects for the
+                  DS1, J1, E1, DS2, and E2 Interface Types";
+  }
+  identity e1 {
+    base iana-interface-type;
+    status obsolete;
+    description
+      "Obsolete; see DS1-MIB.";
+    reference
+      "RFC 4805 - Definitions of Managed Objects for the
+                  DS1, J1, E1, DS2, and E2 Interface Types";
+  }
+  identity basicISDN {
+    base iana-interface-type;
+    description
+      "No longer used.  See also RFC 2127.";
+  }
+  identity primaryISDN {
+    base iana-interface-type;
+    description
+      "No longer used.  See also RFC 2127.";
+  }
+  identity propPointToPointSerial {
+    base iana-interface-type;
+    description
+      "Proprietary serial.";
+  }
+  identity ppp {
+    base iana-interface-type;
+  }
+  identity softwareLoopback {
+    base iana-interface-type;
+  }
+  identity eon {
+    base iana-interface-type;
+    description
+      "CLNP over IP.";
+  }
+  identity ethernet3Mbit {
+    base iana-interface-type;
+  }
+  identity nsip {
+    base iana-interface-type;
+    description
+      "XNS over IP.";
+  }
+  identity slip {
+    base iana-interface-type;
+    description
+      "Generic SLIP.";
+  }
+  identity ultra {
+    base iana-interface-type;
+    description
+      "Ultra Technologies.";
+  }
+  identity ds3 {
+    base iana-interface-type;
+    description
+      "DS3-MIB.";
+    reference
+      "RFC 3896 - Definitions of Managed Objects for the
+                  DS3/E3 Interface Type";
+  }
+  identity sip {
+    base iana-interface-type;
+    description
+      "SMDS, coffee.";
+    reference
+      "RFC 1694 - Definitions of Managed Objects for SMDS
+                  Interfaces using SMIv2";
+  }
+  identity frameRelay {
+    base iana-interface-type;
+    description
+      "DTE only.";
+    reference
+      "RFC 2115 - Management Information Base for Frame Relay
+                  DTEs Using SMIv2";
+  }
+  identity rs232 {
+    base iana-interface-type;
+    reference
+      "RFC 1659 - Definitions of Managed Objects for RS-232-like
+                  Hardware Devices using SMIv2";
+  }
+  identity para {
+    base iana-interface-type;
+    description
+      "Parallel-port.";
+    reference
+      "RFC 1660 - Definitions of Managed Objects for
+                  Parallel-printer-like Hardware Devices using
+                  SMIv2";
+  }
+  identity arcnet {
+    base iana-interface-type;
+    description
+      "ARCnet.";
+  }
+  identity arcnetPlus {
+    base iana-interface-type;
+    description
+      "ARCnet Plus.";
+  }
+  identity atm {
+    base iana-interface-type;
+    description
+      "ATM cells.";
+  }
+  identity miox25 {
+    base iana-interface-type;
+    reference
+      "RFC 1461 - SNMP MIB extension for Multiprotocol
+                  Interconnect over X.25";
+  }
+  identity sonet {
+    base iana-interface-type;
+    description
+      "SONET or SDH.";
+  }
+  identity x25ple {
+    base iana-interface-type;
+    reference
+      "RFC 2127 - ISDN Management Information Base using SMIv2";
+  }
+  identity iso88022llc {
+    base iana-interface-type;
+  }
+  identity localTalk {
+    base iana-interface-type;
+  }
+  identity smdsDxi {
+    base iana-interface-type;
+  }
+  identity frameRelayService {
+    base iana-interface-type;
+    description
+      "FRNETSERV-MIB.";
+    reference
+      "RFC 2954 - Definitions of Managed Objects for Frame
+                  Relay Service";
+  }
+  identity v35 {
+    base iana-interface-type;
+  }
+  identity hssi {
+    base iana-interface-type;
+  }
+  identity hippi {
+    base iana-interface-type;
+  }
+  identity modem {
+    base iana-interface-type;
+    description
+      "Generic modem.";
+  }
+  identity aal5 {
+    base iana-interface-type;
+    description
+      "AAL5 over ATM.";
+  }
+  identity sonetPath {
+    base iana-interface-type;
+  }
+  identity sonetVT {
+    base iana-interface-type;
+  }
+  identity smdsIcip {
+    base iana-interface-type;
+    description
+      "SMDS InterCarrier Interface.";
+  }
+  identity propVirtual {
+    base iana-interface-type;
+    description
+      "Proprietary virtual/internal.";
+    reference
+      "RFC 2863 - The Interfaces Group MIB";
+  }
+  identity propMultiplexor {
+    base iana-interface-type;
+    description
+      "Proprietary multiplexing.";
+    reference
+      "RFC 2863 - The Interfaces Group MIB";
+  }
+  identity ieee80212 {
+    base iana-interface-type;
+    description
+      "100BaseVG.";
+  }
+  identity fibreChannel {
+    base iana-interface-type;
+    description
+      "Fibre Channel.";
+  }
+  identity hippiInterface {
+    base iana-interface-type;
+    description
+      "HIPPI interfaces.";
+  }
+  identity frameRelayInterconnect {
+    base iana-interface-type;
+    status obsolete;
+    description
+      "Obsolete; use either
+       frameRelay(32) or frameRelayService(44).";
+  }
+  identity aflane8023 {
+    base iana-interface-type;
+    description
+      "ATM Emulated LAN for 802.3.";
+  }
+  identity aflane8025 {
+    base iana-interface-type;
+    description
+      "ATM Emulated LAN for 802.5.";
+  }
+  identity cctEmul {
+    base iana-interface-type;
+    description
+      "ATM Emulated circuit.";
+  }
+  identity fastEther {
+    base iana-interface-type;
+    status deprecated;
+    description
+      "Obsoleted via RFC 3635.
+       ethernetCsmacd(6) should be used instead.";
+    reference
+      "RFC 3635 - Definitions of Managed Objects for the
+                  Ethernet-like Interface Types";
+  }
+  identity isdn {
+    base iana-interface-type;
+    description
+      "ISDN and X.25.";
+    reference
+      "RFC 1356 - Multiprotocol Interconnect on X.25 and ISDN
+                  in the Packet Mode";
+  }
+  identity v11 {
+    base iana-interface-type;
+    description
+      "CCITT V.11/X.21.";
+  }
+  identity v36 {
+    base iana-interface-type;
+    description
+      "CCITT V.36.";
+  }
+  identity g703at64k {
+    base iana-interface-type;
+    description
+      "CCITT G703 at 64Kbps.";
+  }
+  identity g703at2mb {
+    base iana-interface-type;
+    status obsolete;
+    description
+      "Obsolete; see DS1-MIB.";
+  }
+  identity qllc {
+    base iana-interface-type;
+    description
+      "SNA QLLC.";
+  }
+  identity fastEtherFX {
+    base iana-interface-type;
+    status deprecated;
+    description
+      "Obsoleted via RFC 3635.
+       ethernetCsmacd(6) should be used instead.";
+    reference
+      "RFC 3635 - Definitions of Managed Objects for the
+                  Ethernet-like Interface Types";
+  }
+  identity channel {
+    base iana-interface-type;
+    description
+      "Channel.";
+  }
+  identity ieee80211 {
+    base iana-interface-type;
+    description
+      "Radio spread spectrum.";
+  }
+  identity ibm370parChan {
+    base iana-interface-type;
+    description
+      "IBM System 360/370 OEMI Channel.";
+  }
+  identity escon {
+    base iana-interface-type;
+    description
+      "IBM Enterprise Systems Connection.";
+  }
+  identity dlsw {
+    base iana-interface-type;
+    description
+      "Data Link Switching.";
+  }
+  identity isdns {
+    base iana-interface-type;
+    description
+      "ISDN S/T interface.";
+  }
+  identity isdnu {
+    base iana-interface-type;
+    description
+      "ISDN U interface.";
+  }
+  identity lapd {
+    base iana-interface-type;
+    description
+      "Link Access Protocol D.";
+  }
+  identity ipSwitch {
+    base iana-interface-type;
+    description
+      "IP Switching Objects.";
+  }
+  identity rsrb {
+    base iana-interface-type;
+    description
+      "Remote Source Route Bridging.";
+  }
+  identity atmLogical {
+    base iana-interface-type;
+    description
+      "ATM Logical Port.";
+    reference
+      "RFC 3606 - Definitions of Supplemental Managed Objects
+                  for ATM Interface";
+  }
+  identity ds0 {
+    base iana-interface-type;
+    description
+      "Digital Signal Level 0.";
+    reference
+      "RFC 2494 - Definitions of Managed Objects for the DS0
+                  and DS0 Bundle Interface Type";
+  }
+  identity ds0Bundle {
+    base iana-interface-type;
+    description
+      "Group of ds0s on the same ds1.";
+    reference
+      "RFC 2494 - Definitions of Managed Objects for the DS0
+                  and DS0 Bundle Interface Type";
+  }
+  identity bsc {
+    base iana-interface-type;
+    description
+      "Bisynchronous Protocol.";
+  }
+  identity async {
+    base iana-interface-type;
+    description
+      "Asynchronous Protocol.";
+  }
+  identity cnr {
+    base iana-interface-type;
+    description
+      "Combat Net Radio.";
+  }
+  identity iso88025Dtr {
+    base iana-interface-type;
+    description
+      "ISO 802.5r DTR.";
+  }
+  identity eplrs {
+    base iana-interface-type;
+    description
+      "Ext Pos Loc Report Sys.";
+  }
+  identity arap {
+    base iana-interface-type;
+    description
+      "Appletalk Remote Access Protocol.";
+  }
+  identity propCnls {
+    base iana-interface-type;
+    description
+      "Proprietary Connectionless Protocol.";
+  }
+  identity hostPad {
+    base iana-interface-type;
+    description
+      "CCITT-ITU X.29 PAD Protocol.";
+  }
+  identity termPad {
+    base iana-interface-type;
+    description
+      "CCITT-ITU X.3 PAD Facility.";
+  }
+  identity frameRelayMPI {
+    base iana-interface-type;
+    description
+      "Multiproto Interconnect over FR.";
+  }
+  identity x213 {
+    base iana-interface-type;
+    description
+      "CCITT-ITU X213.";
+  }
+  identity adsl {
+    base iana-interface-type;
+    description
+      "Asymmetric Digital Subscriber Loop.";
+  }
+  identity radsl {
+    base iana-interface-type;
+    description
+      "Rate-Adapt. Digital Subscriber Loop.";
+  }
+  identity sdsl {
+    base iana-interface-type;
+    description
+      "Symmetric Digital Subscriber Loop.";
+  }
+  identity vdsl {
+    base iana-interface-type;
+    description
+      "Very H-Speed Digital Subscrib. Loop.";
+  }
+  identity iso88025CRFPInt {
+    base iana-interface-type;
+    description
+      "ISO 802.5 CRFP.";
+  }
+  identity myrinet {
+    base iana-interface-type;
+    description
+      "Myricom Myrinet.";
+  }
+  identity voiceEM {
+    base iana-interface-type;
+    description
+      "Voice recEive and transMit.";
+  }
+  identity voiceFXO {
+    base iana-interface-type;
+    description
+      "Voice Foreign Exchange Office.";
+  }
+  identity voiceFXS {
+    base iana-interface-type;
+    description
+      "Voice Foreign Exchange Station.";
+  }
+  identity voiceEncap {
+    base iana-interface-type;
+    description
+      "Voice encapsulation.";
+  }
+  identity voiceOverIp {
+    base iana-interface-type;
+    description
+      "Voice over IP encapsulation.";
+  }
+  identity atmDxi {
+    base iana-interface-type;
+    description
+      "ATM DXI.";
+  }
+  identity atmFuni {
+    base iana-interface-type;
+    description
+      "ATM FUNI.";
+  }
+  identity atmIma {
+    base iana-interface-type;
+    description
+      "ATM IMA.";
+  }
+  identity pppMultilinkBundle {
+    base iana-interface-type;
+    description
+      "PPP Multilink Bundle.";
+  }
+  identity ipOverCdlc {
+    base iana-interface-type;
+    description
+      "IBM ipOverCdlc.";
+  }
+  identity ipOverClaw {
+    base iana-interface-type;
+    description
+      "IBM Common Link Access to Workstn.";
+  }
+  identity stackToStack {
+    base iana-interface-type;
+    description
+      "IBM stackToStack.";
+  }
+  identity virtualIpAddress {
+    base iana-interface-type;
+    description
+      "IBM VIPA.";
+  }
+  identity mpc {
+    base iana-interface-type;
+    description
+      "IBM multi-protocol channel support.";
+  }
+  identity ipOverAtm {
+    base iana-interface-type;
+    description
+      "IBM ipOverAtm.";
+    reference
+      "RFC 2320 - Definitions of Managed Objects for Classical IP
+                  and ARP Over ATM Using SMIv2 (IPOA-MIB)";
+  }
+  identity iso88025Fiber {
+    base iana-interface-type;
+    description
+      "ISO 802.5j Fiber Token Ring.";
+  }
+  identity tdlc {
+    base iana-interface-type;
+    description
+      "IBM twinaxial data link control.";
+  }
+  identity gigabitEthernet {
+    base iana-interface-type;
+    status deprecated;
+    description
+      "Obsoleted via RFC 3635.
+       ethernetCsmacd(6) should be used instead.";
+    reference
+      "RFC 3635 - Definitions of Managed Objects for the
+                  Ethernet-like Interface Types";
+  }
+  identity hdlc {
+    base iana-interface-type;
+    description
+      "HDLC.";
+  }
+  identity lapf {
+    base iana-interface-type;
+    description
+      "LAP F.";
+  }
+  identity v37 {
+    base iana-interface-type;
+    description
+      "V.37.";
+  }
+  identity x25mlp {
+    base iana-interface-type;
+    description
+      "Multi-Link Protocol.";
+  }
+  identity x25huntGroup {
+    base iana-interface-type;
+    description
+      "X25 Hunt Group.";
+  }
+  identity transpHdlc {
+    base iana-interface-type;
+    description
+      "Transp HDLC.";
+  }
+  identity interleave {
+    base iana-interface-type;
+    description
+      "Interleave channel.";
+  }
+  identity fast {
+    base iana-interface-type;
+    description
+      "Fast channel.";
+  }
+  identity ip {
+    base iana-interface-type;
+    description
+      "IP (for APPN HPR in IP networks).";
+  }
+  identity docsCableMaclayer {
+    base iana-interface-type;
+    description
+      "CATV Mac Layer.";
+  }
+  identity docsCableDownstream {
+    base iana-interface-type;
+    description
+      "CATV Downstream interface.";
+  }
+  identity docsCableUpstream {
+    base iana-interface-type;
+    description
+      "CATV Upstream interface.";
+  }
+  identity a12MppSwitch {
+    base iana-interface-type;
+    description
+      "Avalon Parallel Processor.";
+  }
+  identity tunnel {
+    base iana-interface-type;
+    description
+      "Encapsulation interface.";
+  }
+  identity coffee {
+    base iana-interface-type;
+    description
+      "Coffee pot.";
+    reference
+      "RFC 2325 - Coffee MIB";
+  }
+  identity ces {
+    base iana-interface-type;
+    description
+      "Circuit Emulation Service.";
+  }
+  identity atmSubInterface {
+    base iana-interface-type;
+    description
+      "ATM Sub Interface.";
+  }
+  identity l2vlan {
+    base iana-interface-type;
+    description
+      "Layer 2 Virtual LAN using 802.1Q.";
+  }
+  identity l3ipvlan {
+    base iana-interface-type;
+    description
+      "Layer 3 Virtual LAN using IP.";
+  }
+  identity l3ipxvlan {
+    base iana-interface-type;
+    description
+      "Layer 3 Virtual LAN using IPX.";
+  }
+  identity digitalPowerline {
+    base iana-interface-type;
+    description
+      "IP over Power Lines.";
+  }
+  identity mediaMailOverIp {
+    base iana-interface-type;
+    description
+      "Multimedia Mail over IP.";
+  }
+  identity dtm {
+    base iana-interface-type;
+    description
+      "Dynamic synchronous Transfer Mode.";
+  }
+  identity dcn {
+    base iana-interface-type;
+    description
+      "Data Communications Network.";
+  }
+  identity ipForward {
+    base iana-interface-type;
+    description
+      "IP Forwarding Interface.";
+  }
+  identity msdsl {
+    base iana-interface-type;
+    description
+      "Multi-rate Symmetric DSL.";
+  }
+  identity ieee1394 {
+    base iana-interface-type;
+
+    description
+      "IEEE1394 High Performance Serial Bus.";
+  }
+  identity if-gsn {
+    base iana-interface-type;
+    description
+      "HIPPI-6400.";
+  }
+  identity dvbRccMacLayer {
+    base iana-interface-type;
+    description
+      "DVB-RCC MAC Layer.";
+  }
+  identity dvbRccDownstream {
+    base iana-interface-type;
+    description
+      "DVB-RCC Downstream Channel.";
+  }
+  identity dvbRccUpstream {
+    base iana-interface-type;
+    description
+      "DVB-RCC Upstream Channel.";
+  }
+  identity atmVirtual {
+    base iana-interface-type;
+    description
+      "ATM Virtual Interface.";
+  }
+  identity mplsTunnel {
+    base iana-interface-type;
+    description
+      "MPLS Tunnel Virtual Interface.";
+  }
+  identity srp {
+    base iana-interface-type;
+    description
+      "Spatial Reuse Protocol.";
+  }
+  identity voiceOverAtm {
+    base iana-interface-type;
+    description
+      "Voice over ATM.";
+  }
+  identity voiceOverFrameRelay {
+    base iana-interface-type;
+    description
+      "Voice Over Frame Relay.";
+  }
+  identity idsl {
+    base iana-interface-type;
+    description
+      "Digital Subscriber Loop over ISDN.";
+  }
+  identity compositeLink {
+    base iana-interface-type;
+    description
+      "Avici Composite Link Interface.";
+  }
+  identity ss7SigLink {
+    base iana-interface-type;
+    description
+      "SS7 Signaling Link.";
+  }
+  identity propWirelessP2P {
+    base iana-interface-type;
+    description
+      "Prop. P2P wireless interface.";
+  }
+  identity frForward {
+    base iana-interface-type;
+    description
+      "Frame Forward Interface.";
+  }
+  identity rfc1483 {
+    base iana-interface-type;
+    description
+      "Multiprotocol over ATM AAL5.";
+    reference
+      "RFC 1483 - Multiprotocol Encapsulation over ATM
+                  Adaptation Layer 5";
+  }
+  identity usb {
+    base iana-interface-type;
+    description
+      "USB Interface.";
+  }
+  identity ieee8023adLag {
+    base iana-interface-type;
+    description
+      "IEEE 802.3ad Link Aggregate.";
+  }
+  identity bgppolicyaccounting {
+    base iana-interface-type;
+    description
+      "BGP Policy Accounting.";
+  }
+  identity frf16MfrBundle {
+    base iana-interface-type;
+    description
+      "FRF.16 Multilink Frame Relay.";
+  }
+  identity h323Gatekeeper {
+    base iana-interface-type;
+    description
+      "H323 Gatekeeper.";
+  }
+  identity h323Proxy {
+    base iana-interface-type;
+    description
+      "H323 Voice and Video Proxy.";
+  }
+  identity mpls {
+    base iana-interface-type;
+    description
+      "MPLS.";
+  }
+  identity mfSigLink {
+    base iana-interface-type;
+    description
+      "Multi-frequency signaling link.";
+  }
+  identity hdsl2 {
+    base iana-interface-type;
+    description
+      "High Bit-Rate DSL - 2nd generation.";
+  }
+  identity shdsl {
+    base iana-interface-type;
+    description
+      "Multirate HDSL2.";
+  }
+  identity ds1FDL {
+    base iana-interface-type;
+    description
+      "Facility Data Link (4Kbps) on a DS1.";
+  }
+  identity pos {
+    base iana-interface-type;
+    description
+      "Packet over SONET/SDH Interface.";
+  }
+  identity dvbAsiIn {
+    base iana-interface-type;
+    description
+      "DVB-ASI Input.";
+  }
+  identity dvbAsiOut {
+    base iana-interface-type;
+    description
+      "DVB-ASI Output.";
+  }
+  identity plc {
+    base iana-interface-type;
+    description
+      "Power Line Communications.";
+  }
+  identity nfas {
+    base iana-interface-type;
+    description
+      "Non-Facility Associated Signaling.";
+  }
+  identity tr008 {
+    base iana-interface-type;
+    description
+      "TR008.";
+  }
+  identity gr303RDT {
+    base iana-interface-type;
+    description
+      "Remote Digital Terminal.";
+  }
+  identity gr303IDT {
+    base iana-interface-type;
+    description
+      "Integrated Digital Terminal.";
+  }
+  identity isup {
+    base iana-interface-type;
+    description
+      "ISUP.";
+  }
+  identity propDocsWirelessMaclayer {
+    base iana-interface-type;
+    description
+      "Cisco proprietary Maclayer.";
+  }
+  identity propDocsWirelessDownstream {
+    base iana-interface-type;
+    description
+      "Cisco proprietary Downstream.";
+  }
+  identity propDocsWirelessUpstream {
+    base iana-interface-type;
+    description
+      "Cisco proprietary Upstream.";
+  }
+  identity hiperlan2 {
+    base iana-interface-type;
+    description
+      "HIPERLAN Type 2 Radio Interface.";
+  }
+  identity propBWAp2Mp {
+    base iana-interface-type;
+    description
+      "PropBroadbandWirelessAccesspt2Multipt (use of this value
+       for IEEE 802.16 WMAN interfaces as per IEEE Std 802.16f
+       is deprecated, and ieee80216WMAN(237) should be used
+       instead).";
+  }
+  identity sonetOverheadChannel {
+    base iana-interface-type;
+    description
+      "SONET Overhead Channel.";
+  }
+  identity digitalWrapperOverheadChannel {
+    base iana-interface-type;
+    description
+      "Digital Wrapper.";
+  }
+  identity aal2 {
+    base iana-interface-type;
+    description
+      "ATM adaptation layer 2.";
+  }
+  identity radioMAC {
+    base iana-interface-type;
+    description
+      "MAC layer over radio links.";
+  }
+  identity atmRadio {
+    base iana-interface-type;
+    description
+      "ATM over radio links.";
+  }
+  identity imt {
+    base iana-interface-type;
+    description
+      "Inter-Machine Trunks.";
+  }
+  identity mvl {
+    base iana-interface-type;
+    description
+      "Multiple Virtual Lines DSL.";
+  }
+  identity reachDSL {
+    base iana-interface-type;
+    description
+      "Long Reach DSL.";
+  }
+  identity frDlciEndPt {
+    base iana-interface-type;
+    description
+      "Frame Relay DLCI End Point.";
+  }
+  identity atmVciEndPt {
+    base iana-interface-type;
+    description
+      "ATM VCI End Point.";
+  }
+  identity opticalChannel {
+    base iana-interface-type;
+    description
+      "Optical Channel.";
+  }
+  identity opticalTransport {
+    base iana-interface-type;
+    description
+      "Optical Transport.";
+  }
+  identity propAtm {
+    base iana-interface-type;
+    description
+      "Proprietary ATM.";
+  }
+  identity voiceOverCable {
+    base iana-interface-type;
+    description
+      "Voice Over Cable Interface.";
+  }
+  identity infiniband {
+    base iana-interface-type;
+    description
+      "Infiniband.";
+  }
+  identity teLink {
+    base iana-interface-type;
+    description
+      "TE Link.";
+  }
+  identity q2931 {
+    base iana-interface-type;
+    description
+      "Q.2931.";
+  }
+  identity virtualTg {
+    base iana-interface-type;
+    description
+      "Virtual Trunk Group.";
+  }
+  identity sipTg {
+    base iana-interface-type;
+    description
+      "SIP Trunk Group.";
+  }
+  identity sipSig {
+    base iana-interface-type;
+    description
+      "SIP Signaling.";
+  }
+  identity docsCableUpstreamChannel {
+    base iana-interface-type;
+    description
+      "CATV Upstream Channel.";
+  }
+  identity econet {
+    base iana-interface-type;
+    description
+      "Acorn Econet.";
+  }
+  identity pon155 {
+    base iana-interface-type;
+    description
+      "FSAN 155Mb Symetrical PON interface.";
+  }
+  identity pon622 {
+    base iana-interface-type;
+    description
+      "FSAN 622Mb Symetrical PON interface.";
+  }
+  identity bridge {
+    base iana-interface-type;
+    description
+      "Transparent bridge interface.";
+  }
+  identity linegroup {
+    base iana-interface-type;
+    description
+      "Interface common to multiple lines.";
+  }
+  identity voiceEMFGD {
+    base iana-interface-type;
+    description
+      "Voice E&M Feature Group D.";
+  }
+  identity voiceFGDEANA {
+    base iana-interface-type;
+    description
+      "Voice FGD Exchange Access North American.";
+  }
+  identity voiceDID {
+    base iana-interface-type;
+    description
+      "Voice Direct Inward Dialing.";
+  }
+  identity mpegTransport {
+    base iana-interface-type;
+    description
+      "MPEG transport interface.";
+  }
+  identity sixToFour {
+    base iana-interface-type;
+    status deprecated;
+    description
+      "6to4 interface (DEPRECATED).";
+    reference
+      "RFC 4087 - IP Tunnel MIB";
+  }
+  identity gtp {
+    base iana-interface-type;
+    description
+      "GTP (GPRS Tunneling Protocol).";
+  }
+  identity pdnEtherLoop1 {
+    base iana-interface-type;
+    description
+      "Paradyne EtherLoop 1.";
+  }
+  identity pdnEtherLoop2 {
+    base iana-interface-type;
+    description
+      "Paradyne EtherLoop 2.";
+  }
+  identity opticalChannelGroup {
+    base iana-interface-type;
+    description
+      "Optical Channel Group.";
+  }
+  identity homepna {
+    base iana-interface-type;
+    description
+      "HomePNA ITU-T G.989.";
+  }
+  identity gfp {
+    base iana-interface-type;
+    description
+      "Generic Framing Procedure (GFP).";
+  }
+  identity ciscoISLvlan {
+    base iana-interface-type;
+    description
+      "Layer 2 Virtual LAN using Cisco ISL.";
+  }
+  identity actelisMetaLOOP {
+    base iana-interface-type;
+    description
+      "Acteleis proprietary MetaLOOP High Speed Link.";
+  }
+  identity fcipLink {
+    base iana-interface-type;
+    description
+      "FCIP Link.";
+  }
+  identity rpr {
+    base iana-interface-type;
+    description
+      "Resilient Packet Ring Interface Type.";
+  }
+  identity qam {
+    base iana-interface-type;
+    description
+      "RF Qam Interface.";
+  }
+  identity lmp {
+    base iana-interface-type;
+    description
+      "Link Management Protocol.";
+    reference
+      "RFC 4327 - Link Management Protocol (LMP) Management
+                  Information Base (MIB)";
+  }
+  identity cblVectaStar {
+    base iana-interface-type;
+    description
+      "Cambridge Broadband Networks Limited VectaStar.";
+  }
+  identity docsCableMCmtsDownstream {
+    base iana-interface-type;
+    description
+      "CATV Modular CMTS Downstream Interface.";
+  }
+  identity adsl2 {
+    base iana-interface-type;
+    status deprecated;
+    description
+      "Asymmetric Digital Subscriber Loop Version 2
+       (DEPRECATED/OBSOLETED - please use adsl2plus(238)
+       instead).";
+    reference
+      "RFC 4706 - Definitions of Managed Objects for Asymmetric
+                  Digital Subscriber Line 2 (ADSL2)";
+  }
+  identity macSecControlledIF {
+    base iana-interface-type;
+    description
+      "MACSecControlled.";
+  }
+  identity macSecUncontrolledIF {
+    base iana-interface-type;
+    description
+      "MACSecUncontrolled.";
+  }
+  identity aviciOpticalEther {
+    base iana-interface-type;
+    description
+      "Avici Optical Ethernet Aggregate.";
+  }
+  identity atmbond {
+    base iana-interface-type;
+    description
+      "atmbond.";
+  }
+  identity voiceFGDOS {
+    base iana-interface-type;
+    description
+      "Voice FGD Operator Services.";
+  }
+  identity mocaVersion1 {
+    base iana-interface-type;
+    description
+      "MultiMedia over Coax Alliance (MoCA) Interface
+       as documented in information provided privately to IANA.";
+  }
+  identity ieee80216WMAN {
+    base iana-interface-type;
+    description
+      "IEEE 802.16 WMAN interface.";
+  }
+  identity adsl2plus {
+    base iana-interface-type;
+    description
+      "Asymmetric Digital Subscriber Loop Version 2 -
+       Version 2 Plus and all variants.";
+  }
+  identity dvbRcsMacLayer {
+    base iana-interface-type;
+    description
+      "DVB-RCS MAC Layer.";
+    reference
+      "RFC 5728 - The SatLabs Group DVB-RCS MIB";
+  }
+  identity dvbTdm {
+    base iana-interface-type;
+    description
+      "DVB Satellite TDM.";
+    reference
+      "RFC 5728 - The SatLabs Group DVB-RCS MIB";
+  }
+  identity dvbRcsTdma {
+    base iana-interface-type;
+    description
+      "DVB-RCS TDMA.";
+    reference
+      "RFC 5728 - The SatLabs Group DVB-RCS MIB";
+  }
+  identity x86Laps {
+    base iana-interface-type;
+    description
+      "LAPS based on ITU-T X.86/Y.1323.";
+  }
+  identity wwanPP {
+    base iana-interface-type;
+    description
+      "3GPP WWAN.";
+  }
+  identity wwanPP2 {
+    base iana-interface-type;
+    description
+      "3GPP2 WWAN.";
+  }
+  identity voiceEBS {
+    base iana-interface-type;
+    description
+      "Voice P-phone EBS physical interface.";
+  }
+  identity ifPwType {
+    base iana-interface-type;
+    description
+      "Pseudowire interface type.";
+    reference
+      "RFC 5601 - Pseudowire (PW) Management Information Base (MIB)";
+  }
+  identity ilan {
+    base iana-interface-type;
+    description
+      "Internal LAN on a bridge per IEEE 802.1ap.";
+  }
+  identity pip {
+    base iana-interface-type;
+    description
+      "Provider Instance Port on a bridge per IEEE 802.1ah PBB.";
+  }
+  identity aluELP {
+    base iana-interface-type;
+    description
+      "Alcatel-Lucent Ethernet Link Protection.";
+  }
+  identity gpon {
+    base iana-interface-type;
+    description
+      "Gigabit-capable passive optical networks (G-PON) as per
+       ITU-T G.948.";
+  }
+  identity vdsl2 {
+    base iana-interface-type;
+    description
+      "Very high speed digital subscriber line Version 2
+       (as per ITU-T Recommendation G.993.2).";
+    reference
+      "RFC 5650 - Definitions of Managed Objects for Very High
+                  Speed Digital Subscriber Line 2 (VDSL2)";
+  }
+  identity capwapDot11Profile {
+    base iana-interface-type;
+    description
+      "WLAN Profile Interface.";
+    reference
+      "RFC 5834 - Control and Provisioning of Wireless Access
+                  Points (CAPWAP) Protocol Binding MIB for
+                  IEEE 802.11";
+  }
+  identity capwapDot11Bss {
+    base iana-interface-type;
+    description
+      "WLAN BSS Interface.";
+    reference
+      "RFC 5834 - Control and Provisioning of Wireless Access
+                  Points (CAPWAP) Protocol Binding MIB for
+                  IEEE 802.11";
+  }
+  identity capwapWtpVirtualRadio {
+    base iana-interface-type;
+    description
+      "WTP Virtual Radio Interface.";
+    reference
+      "RFC 5833 - Control and Provisioning of Wireless Access
+                  Points (CAPWAP) Protocol Base MIB";
+  }
+  identity bits {
+    base iana-interface-type;
+    description
+      "bitsport.";
+  }
+  identity docsCableUpstreamRfPort {
+    base iana-interface-type;
+    description
+      "DOCSIS CATV Upstream RF Port.";
+  }
+  identity cableDownstreamRfPort {
+    base iana-interface-type;
+    description
+      "CATV downstream RF Port.";
+  }
+  identity vmwareVirtualNic {
+    base iana-interface-type;
+    description
+      "VMware Virtual Network Interface.";
+  }
+  identity ieee802154 {
+    base iana-interface-type;
+    description
+      "IEEE 802.15.4 WPAN interface.";
+    reference
+      "IEEE 802.15.4-2006";
+  }
+  identity otnOdu {
+    base iana-interface-type;
+    description
+      "OTN Optical Data Unit.";
+  }
+  identity otnOtu {
+    base iana-interface-type;
+    description
+      "OTN Optical channel Transport Unit.";
+  }
+  identity ifVfiType {
+    base iana-interface-type;
+    description
+      "VPLS Forwarding Instance Interface Type.";
+  }
+  identity g9981 {
+    base iana-interface-type;
+    description
+      "G.998.1 bonded interface.";
+  }
+  identity g9982 {
+    base iana-interface-type;
+    description
+      "G.998.2 bonded interface.";
+  }
+  identity g9983 {
+    base iana-interface-type;
+    description
+      "G.998.3 bonded interface.";
+  }
+
+  identity aluEpon {
+    base iana-interface-type;
+    description
+      "Ethernet Passive Optical Networks (E-PON).";
+  }
+  identity aluEponOnu {
+    base iana-interface-type;
+    description
+      "EPON Optical Network Unit.";
+  }
+  identity aluEponPhysicalUni {
+    base iana-interface-type;
+    description
+      "EPON physical User to Network interface.";
+  }
+  identity aluEponLogicalLink {
+    base iana-interface-type;
+    description
+      "The emulation of a point-to-point link over the EPON
+       layer.";
+  }
+  identity aluGponOnu {
+    base iana-interface-type;
+    description
+      "GPON Optical Network Unit.";
+    reference
+      "ITU-T G.984.2";
+  }
+  identity aluGponPhysicalUni {
+    base iana-interface-type;
+    description
+      "GPON physical User to Network interface.";
+    reference
+      "ITU-T G.984.2";
+  }
+  identity vmwareNicTeam {
+    base iana-interface-type;
+    description
+      "VMware NIC Team.";
+  }
+  identity docsOfdmDownstream {
+    base iana-interface-type;
+    description
+      "CATV Downstream OFDM interface.";
+    reference
+      "Cable Modem Operations Support System Interface 
+       Specification";
+  }
+  identity docsOfdmaUpstream {
+    base iana-interface-type;
+    description
+      "CATV Upstream OFDMA interface.";
+    reference
+      "Cable Modem Operations Support System Interface 
+       Specification";
+  }
+  identity gfast {
+    base iana-interface-type;
+    description
+      "G.fast port.";
+    reference
+      "ITU-T G.9701";
+  }
+  identity sdci {
+    base iana-interface-type;
+    description
+      "SDCI (IO-Link).";
+    reference
+      "IEC 61131-9 Edition 1.0 2013-09";
+  }
+  identity xboxWireless {
+    base iana-interface-type;
+    description
+      "Xbox wireless.";
+  }
+  identity fastdsl {
+    base iana-interface-type;
+    description
+      "FastDSL.";
+    reference
+      "BBF TR-355";
+  }
+  identity docsCableScte55d1FwdOob {
+    base iana-interface-type;
+    description
+      "Cable SCTE 55-1 OOB Forward Channel.";
+    reference
+      "ANSI/SCTE 55-1 2009";
+  }
+  identity docsCableScte55d1RetOob {
+    base iana-interface-type;
+    description
+      "Cable SCTE 55-1 OOB Return Channel.";
+    reference
+      "ANSI/SCTE 55-1 2009";
+  }
+  identity docsCableScte55d2DsOob {
+    base iana-interface-type;
+    description
+      "Cable SCTE 55-2 OOB Downstream Channel.";
+    reference
+      "ANSI/SCTE 55-2 2008";
+  }
+  identity docsCableScte55d2UsOob {
+    base iana-interface-type;
+    description
+      "Cable SCTE 55-2 OOB Upstream Channel.";
+    reference
+      "ANSI/SCTE 55-2 2008";
+  }
+  identity docsCableNdf {
+    base iana-interface-type;
+    description
+      "Cable Narrowband Digital Forward.";
+  }
+  identity docsCableNdr {
+    base iana-interface-type;
+    description
+      "Cable Narrowband Digital Return.";
+  }
+  identity ptm {
+    base iana-interface-type;
+    description
+      "Packet Transfer Mode.";
+    reference
+      "IEEE G.993.1, Annex H; IEEE G.993.2; IEEE G.9701";
+  }
+  identity ghn {
+    base iana-interface-type;
+    description
+      "G.hn port.";
+    reference
+      "IEEE G.9961";
+  }
+  identity otnOtsi {
+    base iana-interface-type;
+    description
+      "Optical Tributary Signal.";
+    reference
+      "ITU-T G.959.1";
+  }
+  identity otnOtuc {
+    base iana-interface-type;
+    description
+      "OTN OTUCn.";
+    reference
+      "ITU-T G.709/Y.1331";
+  }
+  identity otnOduc {
+    base iana-interface-type;
+    description
+      "OTN ODUC.";
+    reference
+      "ITU-T G.709";
+  }
+  identity otnOtsig {
+    base iana-interface-type;
+    description
+      "OTN OTUC Signal.";
+    reference
+      "ITU-T G.709";
+  }
+  identity microwaveCarrierTermination {
+    base iana-interface-type;
+    description
+      "air interface of a single microwave carrier.";
+    reference
+      "RFC 8561 - A YANG Data Model for Microwave Radio Link";
+  }
+  identity microwaveRadioLinkTerminal {
+    base iana-interface-type;
+    description
+      "radio link interface for one or several aggregated microwave carriers.";
+    reference
+      "RFC 8561 - A YANG Data Model for Microwave Radio Link";
+  }
+  identity ieee8021axDrni {
+    base iana-interface-type;
+    description
+      "IEEE 802.1AX Distributed Resilient Network Interface.";
+    reference
+      "IEEE 802.1AX-Rev-d2-0";
+  }
+  identity ax25 {
+    base iana-interface-type;
+    description
+      "AX.25 network interfaces.";
+    reference
+      "AX.25 Link Access Protocol for Amateur Packet Radio version 2.2";
+  }
+  identity ieee19061nanocom {
+    base iana-interface-type;
+    description
+      "Nanoscale and Molecular Communication.";
+    reference
+      "IEEE 1906.1-2015";
+  }
+  identity cpri {
+    base iana-interface-type;
+    description
+      "Common Public Radio Interface.";
+    reference
+      "CPRI v7.0";
+  }
+  identity omni {
+    base iana-interface-type;
+    description
+      "Overlay Multilink Network Interface (OMNI).";
+    reference
+      "draft-templin-6man-omni-00";
+  }
+  identity roe {
+    base iana-interface-type;
+    description
+      "Radio over Ethernet Interface.";
+    reference
+      "1914.3-2018 - IEEE Standard for Radio over Ethernet Encapsulations and Mappings";
+  }
+  identity p2pOverLan {
+    base iana-interface-type;
+    description
+      "Point to Point over LAN interface.";
+    reference
+      "RFC 5309 - Point-to-Point Operation over LAN in Link State Routing Protocols";
+  }
+}
diff --git a/build/yang-files/notification/bbf-if-type.yang b/build/yang-files/notification/bbf-if-type.yang
new file mode 100644
index 0000000..148b219
--- /dev/null
+++ b/build/yang-files/notification/bbf-if-type.yang
@@ -0,0 +1,169 @@
+module bbf-if-type {
+  yang-version 1.1;
+  namespace "urn:bbf:yang:bbf-if-type";
+  prefix bbfift;
+
+  import iana-if-type {
+    prefix ianaift;
+  }
+  import ietf-interfaces {
+    prefix if;
+  }
+
+  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:      Nick Hancock, ADTRAN
+
+     Editor:      Ludwig Pauwels, Nokia
+
+     PS Leader:   Joey Boyd, ADTRAN
+
+     PS Leader:   Sowrirajan Padmanabhan, Nokia
+
+     WA Director: Joey Boyd, ADTRAN
+
+     WA Director: Sven Ooghe, Nokia";
+  description
+    "This module contains a collection of YANG definitions for
+     supporting the Broadband Forum requirements on reusable data
+     types as applicable to access network equipment. As such, this
+     module is specific to access network equipment (e.g.,
+     BBF-specified Access Nodes and FTTdp DPUs).
+
+     Specifically, this module defines interface types that are needed
+     for BBF applications but are not defined in iana-if-type.
+
+     Copyright (c) 2017-2020, 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-383a3; see
+     the TR itself for full legal notices.";
+
+  revision 2020-10-13 {
+    description
+      "Amendment 3.
+       * Approval Date:    2020-10-13.
+       * Publication Date: 2020-10-13.";
+    reference
+      "TR-383a3: Common YANG Modules
+                 <https://www.broadband-forum.org/technical/download/
+                          TR-383_Amendment-3.pdf>";
+  }
+  revision 2018-12-03 {
+    description
+      "Amendment 2.
+       * Approval Date:    2018-12-03.
+       * Publication Date: 2018-12-03.";
+    reference
+      "TR-383a2: Common YANG Modules
+               <https://www.broadband-forum.org/technical/download/
+                        TR-383_Amendment-2.pdf>";
+  }
+  revision 2018-07-13 {
+    description
+      "Amendment 1.
+       * Approval Date:    2018-06-04.
+       * Publication Date: see revision date above.";
+    reference
+      "TR-383: Common YANG Modules
+               <https://www.broadband-forum.org/technical/download/
+                        TR-383_Amendment-1.pdf>";
+  }
+  revision 2017-05-08 {
+    description
+      "Initial revision.
+       * Approval Date:    see revision date above.
+       * Publication Date: 2017-06-02.";
+    reference
+      "TR-383: Common YANG Modules
+               <https://www.broadband-forum.org/technical/download/
+                        TR-383.pdf>";
+  }
+
+  identity bbf-interface-type {
+    base if:interface-type;
+    description
+      "This identity is used as a base for all interface types
+       defined by the BBF that are not in the 'ifType definitions'
+       registry maintained by IANA.";
+  }
+
+  identity sub-interface {
+    base bbf-interface-type;
+    description
+      "Base type for generic sub-interfaces. ";
+  }
+
+  identity vlan-sub-interface {
+    base ianaift:l2vlan;
+    base sub-interface;
+    description
+      "A sub-interface which carries traffic that is parsed for VLAN
+       tags. I.e. either the frames carries VLAN tags, or the first
+       Ethertype differs from one of the VLAN TPIDs defined by IEEE
+       and then the frame is considered as untagged. ";
+  }
+
+  identity l2-termination {
+    base bbf-interface-type;
+    description
+      "An interface which terminates layer 2 traffic without the
+       need to be associated with any Ethernet-like interface.";
+  }
+
+  identity ethernet-like {
+    base bbf-interface-type;
+    description
+      "An abstract identity defining a class of interfaces which
+       represents a logical interface transporting Ethernet frames,
+       i.e. frames with a destination and source MAC address, an
+       Ethernet type or length field, and a payload. This
+       'interface type' is intended only to be used to define
+       constraints against a class of interfaces each of which have
+       their 'type' derived from this identity (as well as potentially
+       others). At no time should this identity be used as the 'type'
+       for an interface.";
+  }
+}
diff --git a/build/yang-files/notification/bbf-xpon-if-type.yang b/build/yang-files/notification/bbf-xpon-if-type.yang
new file mode 100644
index 0000000..2b8d0c9
--- /dev/null
+++ b/build/yang-files/notification/bbf-xpon-if-type.yang
@@ -0,0 +1,196 @@
+module bbf-xpon-if-type {
+  yang-version 1.1;
+  namespace "urn:bbf:yang:bbf-xpon-if-type";
+  prefix bbf-xponift;
+
+  import bbf-if-type {
+    prefix bbfift;
+  }
+
+  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 module contains a collection of YANG definitions which
+     defines xPON interface types that are needed for BBF applications
+     but are not defined in iana-if-type.
+
+     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>";
+  }
+
+  identity bbf-xpon-interface-type {
+    base bbfift:bbf-interface-type;
+    description
+      "This identity is used as a base for all xPON interface types
+       defined by the BBF that are not in the 'ifType definitions'
+       registry maintained by IANA.";
+  }
+
+  identity channel-group {
+    base bbf-xpon-interface-type;
+    description
+      "A set of channel-pairs carried over a common fiber.";
+  }
+
+  identity channel-partition {
+    base bbf-xpon-interface-type;
+    description
+      "Any of the operator-specified non-overlapping subsets of TWDM
+       or PtP WDM channels in an NG-PON2 system.";
+  }
+
+  identity channel-pair {
+    base bbf-xpon-interface-type;
+    description
+      "A set of one downstream wavelength channel and one upstream
+       wavelength channel that provides connectivity between an OLT
+       and one or more ONUs.";
+  }
+
+  identity channel-termination {
+    base bbf-xpon-interface-type;
+    description
+      "A logical function that resides at the OLT network element and
+       terminates a single PtP WDM channel in a PtP WDM system or a
+       single TWDM channel in a TWDM system.";
+  }
+
+  identity ani {
+    base bbf-xpon-interface-type;
+    description
+      "The Access Network Interface located on the ONU.";
+  }
+
+  identity v-ani {
+    base bbf-xpon-interface-type;
+    description
+      "A virtual representation of the 'ani' on the OLT.";
+  }
+
+  identity onu-v-enet {
+    base bbf-xpon-interface-type;
+    base bbfift:ethernet-like;
+    description
+      "Base type for onu-v-enet interfaces. The ONU-vENET
+       interfaces are virtual interfaces which carry ethernet
+       frames, which belong to the ONU and which are facing
+       the xPON side of the ONU i.e. facing the OLT.
+
+       ONU-vENET are virtual interfaces in the sense that they
+       do not directly refer to a physical port of an ONU.
+       Instead, ONU-vENET interfaces have the ANI interface of
+       the ONU as underlying interface. ONU-vENET are NOT
+       facing the user side of the ONU.
+
+       An ONU-vENET can be used as the xPON side Ehernet
+       aggregation interface of an ONU which performs Ethernet
+       traffic aggregation from several user-facing interfaces.";
+  }
+
+  identity olt-v-enet {
+    base bbf-xpon-interface-type;
+    base bbfift:ethernet-like;
+    description
+      "Base type for olt-v-enet interfaces. The OLT-vENET
+       interfaces are virtual interfaces which carry ethernet
+       frames, which belong to the OLT and which are facing
+       the xPON side of the OLT i.e. facing the ONU.
+
+       OLT-vENET are virtual interfaces in the sense that they
+       do not directly refer to a physical port of an OLT.
+       Instead, OLT-vENET interfaces have the v-ANI interface
+       corresponding to a specific ONU as underlying interface.
+       In the general case, an OLT-vENET 1-1 corresponds to a
+       counter-part ONU-vENET interface on the ONU.
+
+       In the specific case of a TR-156 deployment scheme,
+       there is typically no need for the ONU to instanciate
+       ONU-vENET interfaces for subscriber traffic: in that
+       case OLT-vENET interfaces can directly 1-1 correspond
+       to individual user facing interface of the ONU, being
+       physical (per TR-156) or virtual (per TR-167).";
+  }
+
+  identity onu-v-vrefpoint {
+    base bbf-xpon-interface-type;
+    base bbfift:ethernet-like;
+    description
+      "Base type for ONU-vUNI interfaces. The ONU-vUNI
+       interface is a virtual interface which carry ethernet
+       frames, which belong to the ONU and which is facing
+       the user.
+
+       It is intended for use as ONU 'Virtual V reference point'
+       defined in TR-167 (ref TR-167, Section 4 and 4.1).
+       ONU-vUNI are virtual interfaces in the sense that they
+       do not refer to a physical port of an ONU.
+
+       ONU-vUNI are virtual equivalents of the physical
+       interfaces at the ONU U reference point defined in
+       TR-156 (ref. TR-156, Section 4).";
+  }
+}
diff --git a/build/yang-files/notification/bbf-xpon-onu-states.yang b/build/yang-files/notification/bbf-xpon-onu-states.yang
new file mode 100644
index 0000000..df93fc2
--- /dev/null
+++ b/build/yang-files/notification/bbf-xpon-onu-states.yang
@@ -0,0 +1,258 @@
+module bbf-xpon-onu-states {

+  yang-version 1.1;

+  namespace "urn:bbf:yang:bbf-xpon-onu-states";

+  prefix bbf-xpon-onu-states;

+

+  import ietf-interfaces {

+    prefix if;

+  }

+  import ietf-yang-types {

+    prefix yang;

+  }

+  import bbf-xpon-types {

+    prefix bbf-xpon-types;

+  }

+  import bbf-xpon-onu-types {

+    prefix bbf-xpon-onu-types;

+  }

+  import bbf-xpon {

+    prefix bbf-xpon;

+  }

+

+  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 module contains a collection of YANG definitions about 

+     ONUs for which a virtual ANI may be or may be not configured.

+

+     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>";

+  }

+

+  

+  grouping onu-state-data {

+    description 

+      "Information about an ONU.";

+    leaf onu-state {

+      type identityref {

+        base bbf-xpon-onu-types:onu-state-base;

+      }

+      mandatory true;

+      description

+        "This leaf presents the state of the ONU. The most 

+         specific applicable identity should be provided as 

+         value.";

+    }

+    leaf onu-id {

+      type bbf-xpon-types:onu-id;

+      description

+        "This is the ITU-T TC layer ONU-ID identifier which the 

+         ONU is currently using on the channel group.";

+      reference

+        "ITU-T G.984.3 clause 5.5.2

+         ITU-T G.987.3 clause 6.4.2

+         ITU-T G.9807.1 clause C.6.1.5.6

+         ITU-T G.989.3 clause 6.1.5.6";

+    }

+    leaf detected-registration-id {

+      type string {

+        length "0..36";

+      }

+      description

+        "The registration ID value which the OLT has received from 

+         the ONU. This YANG leaf is not present if the ONU has not 

+         provided any registration ID to the OLT. Registration ID

+         may be useful in identifying a particular ONU installed

+         at a particular location. For ITU-T G.984.3, the leaf

+         can only be up to 10 octets long (refer to 'password'),

+         for ITU-T G.987.3, ITU-T G.9807.3 and ITU-T G.989.3

+         the leaf can be up to 36 bytes long.";

+      reference

+        "ITU-T G.984.3 clause 9.2.4.2

+         ITU-T G.987.3 clause 11.3.4.2

+         ITU-T G.9807.3 clause C.11.3.4.2

+         ITU-T G.989.3 clause 11.3.4.2";

+    }

+    leaf v-ani-ref {

+      type if:interface-ref;

+      description

+        "The virtual ANI corresponding to this ONU when configured 

+         on this OLT. This YANG leaf is not present if no virtual 

+         ANI is corresponding to the ONU in the OLT.";

+    }

+  }

+

+  grouping onus-present-on-local-channel-termination {

+    description

+      "State data of all ONUs present on a given channel termination

+       local to this OLT.";

+    container onus-present-on-local-channel-termination {

+      description

+        "State data of all ONUs present on a given channel 

+         termination local to this OLT (Refer to 'inside-olt').

+         Even the ONUs for which no corresponding virtual ANI is 

+         configured in the OLT are accounted.

+         An ONU is considered present on a channel termination 

+         when it is using the optical signal of this channel 

+         termination i.e. as early as the channel termination

+         receives from the ONU a PLOAM Serial_Number_ONU message 

+         or as early as it receives a PLOAM Tuning_Resp(Complete_u) 

+         message and as long as the channel termination is not in 

+         LOBi state for this ONU (i.e in practice the ONU keeps 

+         responding to downstream OLT bandwidth map messages).";

+      list onu {

+        key "detected-serial-number";

+        description

+          "The list of all ONUs present on the channel termination.";

+        leaf detected-serial-number {

+          type bbf-xpon-types:onu-serial-number;

+          mandatory true;

+          description

+            "The serial number of the ONU.";

+          reference

+            "ITU-T G.984.3, clause 9.2.4.1

+             ITU-T G.987.3, clause 11.3.3.2

+             ITU-T G.9807.1, clauses C11.2.6.1, C11.2.6.2 and C11.3.4.1

+             ITU-T G.989.3, clauses 11.2.6.1, 11.2.6.2 and 11.3.4.1.";  

+        }

+        uses onu-state-data;

+        leaf onu-detected-datetime {

+          type yang:date-and-time;

+          mandatory true;

+          description

+            "The OLT system date and time when the ONU was detected

+             present on the channel termination.";

+        }

+        leaf onu-state-last-change {

+          type yang:date-and-time;

+          mandatory true;

+          description

+            "The OLT system date and time when the 'onu-state' 

+             YANG leaf got its current value.";

+        }

+      }  

+    }

+  }

+

+  augment '/if:interfaces-state/if:interface'

+        + '/bbf-xpon:channel-termination' {

+    when "derived-from-or-self"

+       + "(/if:interfaces/if:interface[if:name=current()]"

+       + "/bbf-xpon:channel-termination/bbf-xpon:location, "

+       + "'bbf-xpon-types:inside-olt')";

+    description

+      "State data of all ONUs present on a given channel 

+       termination local to this OLT (Refer to 'inside-olt').

+       Even the ONUs for which no corresponding virtual ANI is 

+       configured in the OLT are accounted.

+       An ONU is considered present on a channel termination 

+       when it is using the optical signal of this channel 

+       termination i.e. as early as the channel termination

+       receives from the ONU a PLOAM Serial_Number_ONU message 

+       or as early as it receives a PLOAM Tuning_Resp(Complete_u) 

+       message and as long as the channel termination is not in 

+       LOBi state for this ONU (i.e in practice the ONU keeps 

+       responding to downstream OLT bandwidth map messages).";

+     uses onus-present-on-local-channel-termination;

+  }

+

+  notification onu-state-change {

+    description

+      "A notification traceable to a channel termination which 

+       signifies that an ONU has transitioned into the indicated 

+       state. This notification considers not only ONUs for which a 

+       corresponding virtual ANI is configured in the OLT but also  

+       ONUs for which no corresponding virtual ANI is configured 

+       in the OLT.";

+    leaf detected-serial-number {

+      type bbf-xpon-types:onu-serial-number;

+      mandatory true;

+      description

+        "The serial number of the ONU entering the new state.";

+      reference

+        "ITU-T G.984.3, clause 9.2.4.1

+         ITU-T G.987.3, clause 11.3.3.2

+         ITU-T G.9807.1, clauses C11.2.6.1, C11.2.6.2 and C11.3.4.1

+         ITU-T G.989.3, clauses 11.2.6.1, 11.2.6.2 and 11.3.4.1.";  

+    }

+    leaf channel-termination-ref {

+      type if:interface-ref;

+      mandatory true;

+      description

+        "The channel termination reporting from its point of view the 

+         new state of the ONU.";

+    }

+    leaf onu-state-last-change {

+      type yang:date-and-time;

+      mandatory true;

+      description

+        "The OLT system date and time when the ONU has transitioned 

+         into the indicated state.";

+    }

+    uses onu-state-data;

+  }

+}
\ No newline at end of file
diff --git a/build/yang-files/notification/bbf-xpon-onu-types.yang b/build/yang-files/notification/bbf-xpon-onu-types.yang
new file mode 100644
index 0000000..00a042a
--- /dev/null
+++ b/build/yang-files/notification/bbf-xpon-onu-types.yang
@@ -0,0 +1,202 @@
+module bbf-xpon-onu-types {

+  yang-version 1.1;

+  namespace "urn:bbf:yang:bbf-xpon-more-types";

+  prefix bbf-xpon-onu-types;

+

+  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 module contains a collection of YANG definitions which

+     defines common types used in the xPON YANG models.

+

+     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>";

+  }

+

+  identity onu-state-base {

+    description

+      "This identity is used to qualify the state of an ONU."; 

+  }

+

+  identity onu-present {

+    base onu-state-base;

+    description

+      "This identity is used to denote that an ONU is currently 

+       using the optical signal of one of the channel terminations 

+       local to this OLT (Refer to 'inside-olt'). An OLT considers 

+       that an ONU is using the optical signal of one of its

+       local channel terminations as early as it receives from

+       the ONU a PLOAM Serial_Number_ONU message or as early as 

+       it receives a PLOAM Tuning_Resp(Complete_u) message and as 

+       long as the channel termination is not in LOBi state for 

+       this ONU (i.e in practice the ONU keeps responding to 

+       downstream OLT bandwidth map messages).";

+  }  

+

+  identity onu-present-and-on-intended-channel-termination {

+    base onu-present;

+    description

+      "This identity is used to denote that an ONU is currently 

+       using the optical signal of a channel termination which 

+       is local to this OLT (Refer to 'inside-olt') and which 

+       is intended for the ONU. 

+       In case of G-PON, XG-PON and XGS-PON, this means that the 

+       ONU is using a channel-termination belonging to the 

+       channel partition where the virtual ANI is configured. 

+       In case of NG-PON2 this means that the ONU is using 

+       the desired channel-termination which is based on the 

+       configured preferred and/or protection channel pair

+       or resulted from executing an 'in-service-onu-tune-request' 

+       YANG action.";

+  }

+

+  identity onu-present-and-in-discovery {     

+    base onu-present;

+    description

+      "This identity is used to denote that an NG-PON2 ONU, has 

+       just been detected present on a channel termination which 

+       is local to this OLT (Refer to 'inside-olt') but from which

+       the ONU potentially still needs to tune away while the OLT 

+       is assessing the intended channel termination of the ONU.";

+  }

+

+  identity onu-present-and-discovery-tune-fail { 

+    base onu-present;

+    description

+      "This identity is used to denote that an NG-PON2 ONU has just 

+       been detected present on a channel termination which is local 

+       to this OLT (Refer to 'inside-olt') but is not its intended 

+       one and from which the ONU could not be tuned away towards 

+       an identified intended channel termination.";

+  }

+

+  identity onu-present-and-unexpected {

+    base onu-present;

+    description

+      "This identity is used to denote that a G-PON, XG-PON or 

+       XGS-PON ONU is present on a channel termination which is 

+       local to this OLT (Refer to 'inside-olt') but for which 

+       the OLT has no configured virtual ANI. This identity is 

+       also used to denote that an NG-PON2 ONU has just been 

+       detected present on a channel termination which is local 

+       to this OLT (Refer to 'inside-olt') but is not its intended 

+       one and for which no intended channel termination could be 

+       identified (for instance because the NGPON2 ONU is not 

+       configured on any OLT on the channel group).";

+  }

+

+  identity onu-present-and-emergency-stopped {

+    base onu-present;

+    description

+      "This identity is used to denote that a G-PON, XG-PON, 

+       XGS-PON or NG-PON2 ONU is present on a channel termination

+       which is local to this OLT (Refer to 'inside-olt') and to 

+       which the OLT has sent a 'Disable_Serial_Number' DS PLOAM

+       message, bringing the ONU in ITU-T 'Emergency Stop state'.";

+    reference

+      "ITU-T G.984.3 Section 9.2.1

+       ITU-T G.987.3 Table 11.2

+       ITU-T G.9807.3 Table C.11.2

+       ITU-T G.989.3 Table 11.2";

+  }

+

+  identity onu-not-present {

+    base onu-state-base;

+    description

+      "This identity is used to denote that the ONU is not present 

+       on the OLT, i.e. that the ONU is not using the optical 

+       signal of any channel termination local to this OLT; this 

+       could mean that the ONU is using the optical signal of a

+       channel termination belonging to another OLT, or that the 

+       ONU is not connected at all to the channel group.";

+  }  

+

+  identity onu-not-present-with-v-ani {

+    base onu-not-present;

+    description

+      "This identity is used to denote that an ONU, for which a 

+       virtual ANI is configured on the OLT, is not using the 

+       optical signal of any channel termination local to this 

+       OLT; this could mean that the ONU is using the optical 

+       signal of a channel termination belonging to another OLT, 

+       or that the ONU is not connected at all to the channel 

+       group.";  

+  }

+

+  identity onu-not-present-without-v-ani {

+    base onu-not-present;

+    description

+      "This identity is used to denote that an ONU, for which

+       no virtual ANI is configured on the OLT, is not using 

+       any longer the optical signal of any channel termination 

+       local to this OLT. This could mean that the ONU is 

+       disconnected from the channel group; in case of NG-PON2

+       it could also mean that the ONU is tuned away to a 

+       channel termination belonging to another OLT.";

+  } 

+}

+

diff --git a/build/yang-files/notification/bbf-xpon-types.yang b/build/yang-files/notification/bbf-xpon-types.yang
new file mode 100644
index 0000000..40126f9
--- /dev/null
+++ b/build/yang-files/notification/bbf-xpon-types.yang
@@ -0,0 +1,430 @@
+module bbf-xpon-types {

+  yang-version 1.1;

+  namespace "urn:bbf:yang:bbf-xpon-types";

+  prefix bbf-xpon-types;

+

+  import ietf-inet-types {

+    prefix inet;

+  }

+

+  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 module contains a collection of YANG definitions which

+     defines common types used in the xPON YANG models.

+

+     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>";

+  }

+

+  identity type-b-state-base {

+    description

+      "This identity is used as the base for possible

+       channel-terminations states for type B protection.";

+  }

+

+  identity active {

+    base type-b-state-base;

+    description

+      "This identity is used to denote active state in type B

+       protection.";

+  }

+

+  identity standby {

+    base type-b-state-base;

+    description

+      "This identity is used to denote standby state in type B

+       protection.";

+  }

+

+  identity not-part-of-type-b {

+    base type-b-state-base;

+    description

+      "This identity is used to denote that the object is not part

+       of a type B protection scheme. This is for instance the

+       case when a channel-termination does not (yet) refer

+       to a channel-pair.";

+  }

+

+  identity location-base {

+    description

+      "This identity is used as the possible locations of an

+       object.";

+  }

+

+  identity inside-olt {

+    base location-base;

+    description

+      "This identity is used to denote a location physically inside

+       the OLT chassis.";

+  }

+

+  identity outside-olt {

+    base location-base;

+    description

+      "This identity is used to denote a location physically outside

+       the OLT chassis.";

+  }

+

+  identity channel-pair-type-base {

+    description

+      "This identity is used to qualify the possible types of a

+       channel-pair.";

+  }

+

+  identity ngpon2-twdm {

+    base channel-pair-type-base;

+    description

+      "This identity is used to denote a TWDM NG-PON2 channel-pair,

+       per ITU-T G.989.3.";

+  }

+

+  identity ngpon2-ptp {

+    base channel-pair-type-base;

+    description

+      "This identity is used to denote a PtP NG-PON2 channel-pair, per

+       ITU-T G.989.3.";

+  }

+

+  identity xgs {

+    base channel-pair-type-base;

+    description

+      "This identity is used to denote an XGS-PON channel-pair,

+       per ITU-T G.9807.1.";

+  }

+

+  identity xgpon {

+    base channel-pair-type-base;

+    description

+      "This identity is used to denote an XG-PON channel-pair,

+       per ITU-T G.987.3.";

+  }

+

+  identity gpon {

+    base channel-pair-type-base;

+    description

+      "This identity is used to denote an G-PON channel-pair,

+       per ITU-T G.984.3.";

+  }

+

+  identity channel-pair-line-rate-profile-base {

+    description

+      "This identity is used to define the possible combinations

+       of downstream and upstream line-rates for an NG-PON2

+       channel-pair.";

+  }

+

+  identity unplanned-cp-line-rate {

+    base channel-pair-line-rate-profile-base;

+    description

+      "This identity is used to denote an NG-PON2 channel-pair with

+       yet undefined downstream and upstream line rates.";

+  }

+

+  identity down-10-up-10 {

+    base channel-pair-line-rate-profile-base;

+    description

+      "This identity is used to denote an NG-PON2 channel-pair with

+       downstream 10Gbps and upstream 10Gbps line rates.";

+  }

+

+  identity down-10-up-2.5 {

+    base channel-pair-line-rate-profile-base;

+    description

+      "This identity is used to denote an NG-PON2 channel-pair with

+       downstream 10Gbps and upstream 2.5Gbps line rates.";

+  }

+

+  identity down-2.5-up-2.5 {

+    base channel-pair-line-rate-profile-base;

+    description

+      "This identity is used to denote an NG-PON2 channel-pair with

+       downstream 2.5Gbps and upstream 2.5Gbps line rates.";

+  }

+

+  identity tcp-connection-state-base {

+    description

+      "This identity is used to denote the possible states of

+       a TCP connection.";

+  }

+

+  identity established {

+    base tcp-connection-state-base;

+    description

+      "This identity is used to reflect that the TCP connection is

+       established.";

+  }

+

+  identity not-established {

+    base tcp-connection-state-base;

+    description

+      "This identity is used to reflect that the TCP connection is

+       not established.";

+  }

+

+  identity unknown {

+    base tcp-connection-state-base;

+    description

+      "This identity is used to reflect that the TCP connection state

+       is not known.";

+  }

+

+  identity action-request-status {

+    description

+      "This identity is used to denote the status following the

+       reception of a YANG action.";

+  }

+

+  identity request-being-processed {

+    base action-request-status;

+    description

+      "This identity is used to denote that the OLT has received

+       the action request and is handling it.";

+  }

+

+  identity request-rejected {

+    base action-request-status;

+    description

+      "This identity is used to denote that the OLT has rejected

+       the action request and will not perform anything further

+       about it.";

+  }

+

+  typedef string-hex14 {

+    type string {

+      pattern '[a-fA-F0-9]{14}';

+    }

+    description

+      "A string representing 7 hexadecimal octets expressed in

+       ASCII.";

+  }

+

+  typedef pon-id-display-type {

+    type union {

+      type uint32;

+      type string-hex14;

+    }

+    description

+      "A type meant for the different formats of the PON-ID for the

+       various channel-pair types. The 'unint' is meant for NG-PON2,

+       XGS-PON and XG-PON and the 'string7only' is meant for G-PON.";

+  }

+

+  typedef composite-channel-id-type {

+    type union {

+      type uint8 {

+        range "0..7";

+      }

+      type enumeration {

+        enum "xgs" {

+          description

+            "To be used in case of XGS-PON, rather than 0.";

+        }

+      }

+    }

+    description

+      "A composite type strictly meant for leaves reflecting the

+       already allocated downstream or upstream channel-id on a

+       channel-group.

+       Such leaves are used to prevent conflicts when allocating

+       a channel-pair to a channel-group. For NG-PON2, the applicable

+       values are in [0..7], for XGS-PON a dedicated value 'xgs'

+       is used rather than '0' to prevent ambiguity between this and

+       the valid value '0' for NG-PON2.";

+  }

+

+  typedef composite-downstream-wavelength-type {

+    type union {

+      type uint32 {

+        range "0 | 156000..161000";

+      }

+      type enumeration {

+        enum "xgs" {

+          description

+            "To be used in case of XGS-PON.";

+        }

+        enum "xgpon" {

+          description

+            "To be used in case of XG-PON.";

+        }

+        enum "gpon" {

+          description

+            "To be used in case of G-PON.";

+        }

+      }

+    }

+    description

+      "A composite type strictly meant for leaves reflecting the

+       already allocated downstream or upstream channel-id on a

+       channel-group.

+       Such leaves are used to prevent conflicts when allocating a

+       channel-pair to a channel-group. For NG-PON2, the applicable

+       values are in [0..8], for XGS-PON a dedicated value 'xgs'

+       is applicable rather than value '0': this is not to a priori

+       forbid in yang model the coexistence of XGS-PON with NG-PON2

+       using channel-id=0.";

+  }

+

+  typedef auth-method-type {

+    type enumeration {

+      enum "serial-number" {

+        description

+          "Authentication based on ONU serial number.";

+        reference

+          "ITU-T G.984.3 clause VI.1";

+      }

+      enum "loid" {

+        description

+          "Authentication based on the Logical ONU ID (LOID).";

+        reference

+          "ITU-T G.988 clause 9.1.1";

+      }

+      enum "registration-id" {

+        description

+          "Authentication based on ONU registration ID.";

+        reference

+          "ITU-T G.984.3 clause VI.2";

+      }

+      enum "omci" {

+        description

+          "Authentication by use of the enhanced security control

+           managed entity (ME) over OMCI.";

+        reference

+          "ITU-T G.987.3 Annex C";

+      }

+      enum "dot1x" {

+        description

+          "Authentication according to IEEE 802.1x.";

+        reference

+          "ITU-T G.987.3 Annex D";

+      }

+    }

+    description

+      "Method for authenticating an ONU.";

+  }

+

+  typedef raman-mitigation-type {

+    type enumeration {

+      enum "raman-none" {

+        description

+          "No Raman mitigation is performed.";

+      }

+      enum "raman-8b10b" {

+        description

+          "For Raman mitigation, the 8B10B sublayer is introduced

+           between the downstream NG-PON2 physical interface (PHY)

+           adaptation interface and the optical interface.";

+        reference

+          "ITU-T G.989.2 clause IX.1";

+      }

+      enum "raman-miller" {

+        description

+          "For Raman mitigation, Miller code is used.";

+        reference

+          "ITU-T G.989.2 clause IX.2";

+      }

+    }

+    description

+      "NG-PON2 Raman mitigation coding schemes when using RF video

+       overlay.";

+    reference

+      "ITU-T G.989.2 Appendix IX";

+  }

+

+  typedef ip-address-or-unresolved {

+    type union {

+      type inet:ip-address;

+      type enumeration {

+        enum "unresolved" {

+          description

+            "To be used when the URL cannot be resolved into an

+             IP address.";

+        }

+      }

+    }

+    description

+      "A type meant for a leaf which is either an IP address or

+       reflects that no IP address is available.";

+  }

+

+  typedef onu-id {

+    type uint32 {

+      range "0..1020";

+    }

+    description

+      "A type meant for ONU-IDs.";

+  }

+

+  typedef onu-serial-number {

+    type string {

+      pattern '[a-zA-Z]{4}[0-9a-fA-F]{8}';

+    }

+    description

+      "A type meant for the serial number of an ONU.";

+  }

+

+}

diff --git a/build/yang-files/notification/bbf-xpon.yang b/build/yang-files/notification/bbf-xpon.yang
new file mode 100644
index 0000000..17f54a6
--- /dev/null
+++ b/build/yang-files/notification/bbf-xpon.yang
@@ -0,0 +1,90 @@
+module bbf-xpon {
+  yang-version 1.1;
+  namespace "urn:bbf:yang:bbf-xpon";
+  prefix bbf-xpon;
+
+  include bbf-xpon-base;
+  include bbf-xpon-wavelength-profile-body;
+  include bbf-xpon-multicast-gemport-body;
+  include bbf-xpon-channel-group-body;
+  include bbf-xpon-channel-partition-body;
+  include bbf-xpon-channel-pair-body;
+  include bbf-xpon-channel-termination-body;
+  include bbf-xpon-multicast-distribution-set-body;
+
+  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 module contains a collection of YANG definitions for
+     managing various types of xPON interfaces, e.g. NG-PON2,
+     G-PON, XGS-PON and XG-PON.
+
+
+     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>";
+  }
+}
diff --git a/build/yang-files/notification/submodules/bbf-xpon-base.yang b/build/yang-files/notification/submodules/bbf-xpon-base.yang
new file mode 100644
index 0000000..f330bbe
--- /dev/null
+++ b/build/yang-files/notification/submodules/bbf-xpon-base.yang
@@ -0,0 +1,400 @@
+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).";
+    }
+  }
+}
diff --git a/build/yang-files/notification/submodules/bbf-xpon-channel-group-body.yang b/build/yang-files/notification/submodules/bbf-xpon-channel-group-body.yang
new file mode 100644
index 0000000..2096f52
--- /dev/null
+++ b/build/yang-files/notification/submodules/bbf-xpon-channel-group-body.yang
@@ -0,0 +1,468 @@
+submodule bbf-xpon-channel-group-body {
+  yang-version 1.1;
+  belongs-to bbf-xpon {
+    prefix bbf-xpon;
+  }
+
+  import bbf-xpon-types {
+    prefix bbf-xpon-types;
+  }
+  import bbf-yang-types {
+    prefix bbf-yang;
+  }
+  import ietf-interfaces {
+    prefix if;
+  }
+  import bbf-xpon-if-type {
+    prefix bbfxponift;
+  }
+  
+  include bbf-xpon-base;
+  include bbf-xpon-channel-partition-body;
+
+  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 for
+     managing channel groups.
+
+     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>";
+  }
+
+  typedef alloc-id-values {
+    type string {
+      pattern '((25[6-9]|2[6-9][0-9]|[3-9][0-9][0-9]|[1-9][0-9][0-'
+            + '9][0-9]|1[0-6][0-3][0-8][0-3])([,-](25[6-9]|2[6-9]['
+            + '0-9]|[3-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|1[0-6][0-'
+            + '3][0-8][0-3]))*)?';
+    }
+    description
+      "A list of non-overlapping Alloc-ID values in
+       ascending order, between 1024 to 16383 for G.9807.1
+       XGS-PON/G.989.3 NGPON2 compliant OLTs and
+       256 to 4095 for G.984.3 GPON-compliant OLTs.
+
+       The format of this string can be any of the following:
+
+         single value
+           Example: '1024'
+         comma separated list of values
+           Example: '1024,1030,16000'
+         range of values
+           Example: '1024-1300'
+         comma separated list of ranges
+           Example: '1025-1300,1301-1400,1500-1600'
+         comma separated list of values and ranges
+           Example: '1024-1300,1301,1303-1310'.";
+  }
+
+  typedef gemport-values {
+    type string {
+      pattern '((25[4-9]|2[6-9][0-9]|[3-9][0-9][0-9]|[1-9][0-9][0-'
+            + '9][0-9]|[1-6][0-5][0-5][0-3][0-4])([,-](25[4-9]|2[6-'
+            + '9][0-9]|[3-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-6]['
+            + '0-5][0-5][0-3][0-4]))*)?';
+    }
+    description
+      "A list of non-overlapping xGEM/GEM port-ID values in
+       ascending order, between 1021 to 65534  for G.9807.1
+       XGS-PON/G.989.3 NGPON2 compliant OLTs and
+       254 to 4095 for G.984.3 GPON-compliant OLTs.
+
+       The format of this string can be any of the following:
+
+         single value
+           Example: '1024'
+         comma separated list of values
+           Example: '1024,1030,16000'
+         range of values
+           Example: '1024-1300'
+         comma separated list of ranges
+           Example: '1025-1300,1301-1400,1500-1600'
+         comma separated list of values and ranges
+           Example: '1024-1300,1301,1303-1310'.";
+  }
+
+  typedef onu-id-values {
+    type string {
+      pattern '(([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|10[0-2]0)([,-](['
+            + '0-9]|[1-9][0-9]|[1-9][0-9][0-9]|10[0-2]0))*)?';
+    }
+    description
+      "A list of non-overlapping ONU-ID values in
+       ascending order, between 0 to 1020 for G.9807.1
+       XGS-PON/G.989.3 NGPON2 compliant OLTs and
+       0 to 253 for G.984.3 GPON-compliant OLTs.
+
+       The format of this string can be any of the following:
+
+         single value
+           Example: '1020'
+         comma separated list of values
+           Example: '1,30,600'
+         range of values
+           Example: '30-60'
+         comma separated list of ranges
+           Example: '30-60,80-90'
+         comma separated list of values and ranges
+           Example: '1,30-60,70,90-100'.";
+  }
+
+  feature pon-pools {
+    description
+      "Assignable PON resource (Alloc-ID, xGEM port, ONU-id)
+       into PON pool feature.";
+  }
+
+  grouping channel-group-config-data {
+    description
+      "All config data for a channel group.";
+    leaf polling-period {
+      type uint32 {
+        range "1..864000";
+      }
+      units "0.1 second";
+      default "100";
+      description
+        "The period between two consecutive times the
+         autodetection procedure on each pair in the
+         group is executed.
+         Used in NG-PON2 for quiet window control.
+         Value represents tenths of seconds.
+         (e.g. 1 = 0.1 second, 864000 = 24 hours).";
+    }
+    leaf raman-mitigation {
+      type bbf-xpon-types:raman-mitigation-type;
+      default "raman-none";
+      description
+        "NG-PON2 Raman mitigation coding schemes when using RF video
+         overlay.";
+      reference
+        "ITU-T G.989.2 Appendix IX";
+    }
+    leaf system-id {
+      type string {
+        pattern '[0-9a-fA-F]{5}';
+      }
+      description
+        "A 20-bit number that identifies a specific NG-PON2 system
+         (typically a channel group) among multiple NG-PON2 systems
+         under a common administation.
+         It is defined as NGSYS ID in G.989.3 clause 6.1.5.2 and may
+         be coded to support administration such as name, geographical
+         location, servie profile (see also G.989.3 table VIII.2).";
+      reference
+        "ITU-T G.989.3 clause 6.1.5.2;
+         ITU-T G.989.3 table VIII.2";
+    }
+    container pon-pools {
+      if-feature "pon-pools";
+      description
+        "This container describes per channel termination
+         PON resources allocation. A channel termination can only
+         be a member of a single channel group.  Within
+         a channel group, PON resources should not
+         overlap and only be assigned to a single
+         channel termination.";
+      list pon-pool {
+        key "name";
+        min-elements 1;
+        max-elements 8;
+        description
+          "This container describes the allocated PON pool of
+           Alloc-IDs, GEM port-IDs and ONU-IDs.";
+        leaf name {
+          type bbf-yang:string-ascii64;
+          description
+            "Name of the PON pool.";
+        }
+        leaf channel-termination-ref {
+          type if:interface-ref;
+          must "derived-from-or-self(/if:interfaces/"
+             + "if:interface[if:name = current()]/if:type,"
+             + "'bbfxponift:channel-termination')" {
+            error-message
+              "Referenced interface must be of type
+               'channel-termination'.";
+          }
+          description
+            "Reference to a channel termination to which PON resource
+             pools will be assigned.";
+        }
+        leaf alloc-id-values {
+          type alloc-id-values;
+          description
+            "The list of assignable alloc-IDs between 1024 to
+             16383 for G.9807.1 XGS-PON/G.989.3 NGPON2 compliant
+             OLTs and 256 to 4095 for G.984.3 GPON-compliant OLTs..
+             A single value or range of values can be specified.
+
+             The format of this string can be any of the following:
+              single value
+                Example: '1024'
+              comma separated list of values
+                Example: '1024,1030,16000'
+              range of values
+                Example: '1024-1300'
+              comma separated list of ranges
+                Example: '1025-1300,1301-1400,1500-1600'
+              comma separated list of values and ranges
+                Example: '1024-1300,1301,1303-1310'.";
+        }
+        leaf gemport-values {
+          type gemport-values;
+          description
+            "The list of assignable GEM port/xGEM port-ID between
+             1021 to 65534 for G.9807.1 XGS-PON/G.989.3 NGPON2
+             compliant OLTs and 254 to 4095 for G.984.3
+             GPON-compliant OLTs.
+
+             A single value or range of values can be specified.
+
+               single value
+                 Example: '1024'
+               comma separated list of values
+                 Example: '1024,1030,16000'
+               range of values
+                 Example: '1024-1300'
+               comma separated list of ranges
+                 Example: '1025-1300,1301-1400,1500-1600'
+               comma separated list of values and ranges
+                 Example: '1024-1300,1301,1303-1310'.";
+        }
+        leaf onu-id-values {
+          type onu-id-values;
+          description
+            "The list of assignable ONU-ID values between
+             0 to 1020 for G.9807.1 XGS-PON/G.989.3 NGPON2
+             compliant OLTs and 0 to 253 for G.984.3
+             GPON-compliant OLTs.
+
+             The format of this string can be any of the following:
+              single value
+               Example: '1020'
+             comma separated list of values
+               Example: '1,30,600'
+             range of values
+               Example: '30-60'
+             comma separated list of ranges
+               Example: '30-60,80-90'
+             comma separated list of values and ranges
+               Example: '1,30-60,70,90-100'.";
+        }
+      }
+    }
+  }
+
+  grouping channel-group-state-data {
+    description
+      "All state data for a channel group.";
+    container allocated-upstream-channel-ids {
+      description
+        "The list maintained by the system of all the upstream
+         channel-id's which are already allocated to the
+         channel group. For NG-PON2, the applicable values are
+         in [0..7], for XGS-PON a dedicated value 'xgs' is
+         applicable rather than value '0': this is not to a
+         priori forbid in yang model the coexistence of XGS-PON
+         with NG-PON2 using channel-id=0. This list is a helper
+         to avoid upstream channel-id conflicts when allocating
+         channel pairs to a channel group.";
+      leaf-list channel-id {
+        type bbf-xpon-types:composite-channel-id-type;
+        description
+          "An upstream channel-id in use on the channel group.
+           For NG-PON2, value must be in [0..7].
+           For XGS-PON, value must be 'xgs'.";
+      }
+    }
+    container allocated-downstream-channel-ids {
+      description
+        "The list maintained by the system of all the downstream
+         channel-id's which are already allocated to the
+         channel group. For NG-PON2, the applicable values are
+         in [0..7], for XGS-PON a dedicated value 'xgs' is
+         applicable rather than value '0': this is not to a
+         priori forbid in yang model the coexistence of XGS-PON
+         with NG-PON2 using channel-id=0. This list is a helper
+         to avoid downstream channel-id conflicts when allocating
+         channel pairs to a channel group.";
+      leaf-list downstream-channel-id {
+        type bbf-xpon-types:composite-channel-id-type;
+        description
+          "A downstreamchannel-id in use on the channel group.
+           For NG-PON2, value must be in [0..7].
+           For XGS-PON, value must be 'xgs'.";
+      }
+    }
+    container allocated-downstream-wavelengths {
+      description
+        "The list maintained by the system of all the downstream
+         wavelengths already allocated to the channel group
+         including all of the NG-PON2, XGS-PON, XG-PON and G-PON
+         cases.
+         This list is a helper to avoid wavelength conflicts
+         when allocating channel pairs to a channel group.";
+      leaf-list wavelength {
+        type bbf-xpon-types:composite-downstream-wavelength-type;
+        description
+          "A downstream wavelength already allocated to the
+           channel group. For NG-PON2 it must be a value in
+           [156000..161000] expressed in hundredths of nm to fit
+           ITU-T precision requirements. For the XGS-PON, XG-PON
+           and G-PON cases, it must have resp. the value 'xgs',
+           'xgpon' or 'gpon'.";
+      }
+    }
+    container pon-pools {
+      if-feature "pon-pools";
+      description
+        "This container describes the list of available and consumed
+         and unusable PON resources that a channel termination in a
+         channel group may have.";
+      list pon-pool {
+        key "name";
+        min-elements 1;
+        max-elements 8;
+        description
+          "This container describes the current characteristics of the
+           PON pool of Alloc-IDs, GEM port-IDs and ONU-IDs.";
+        leaf name {
+          type bbf-yang:string-ascii64;
+          description
+            "Name of the PON pool.";
+        }
+        leaf channel-termination-ref {
+          type if:interface-state-ref;
+          must "derived-from-or-self(/if:interfaces-state"
+             + "/if:interface[if:name = current()]/if:type,"
+             + "'bbfxponift:channel-termination')";
+          description
+            "Reference the configured channel termination
+             that is being reported against.";
+        }
+        container consumed-resources {
+          description
+            "The consumed PON resources.";
+          leaf alloc-id-values {
+            type alloc-id-values;
+            description
+              "The list of consumed Alloc-IDs.
+               For example: '1024-1300,1301,1303-1310'.";
+          }
+          leaf gemport-values {
+            type gemport-values;
+            description
+              "The list of consumed GEM port-IDs/xGEM port-IDs.
+               For example: '1024-1300,1301,1303-1310'.";
+          }
+          leaf onu-ids {
+            type onu-id-values;
+            description
+              "The list of consumed ONU-IDs.
+               For example: '1,30-60,70,90-100'.";
+          }
+        }
+        container available-resources {
+          description
+            "The available/unused PON resources.";
+          leaf alloc-id-values {
+            type alloc-id-values;
+            description
+              "The list of available Alloc-IDs.
+               For example: '1024-1300,1301,1303-1310'.";
+          }
+          leaf gemport-values {
+            type gemport-values;
+            description
+              "The list of available GEM port-IDs/xGEM port-IDs.
+               For example: '1024-1300,1301,1303-1310'.";
+          }
+          leaf onu-ids {
+            type onu-id-values;
+            description
+              "The list of available ONU-IDs.
+               For example: '1,30-60,70,90-100'.";
+          }
+        }
+      }
+    }
+  }
+
+  augment '/if:interfaces/if:interface/bbf-xpon:channel-group' {
+    description
+      "Configuration of an xPON channel group.";
+    uses channel-group-config-data;
+  }
+
+  augment '/if:interfaces-state/if:interface/bbf-xpon:channel-group' {
+    description
+      "State data of an xPON channel group.";
+    uses channel-group-state-data;
+  }
+}
diff --git a/build/yang-files/notification/submodules/bbf-xpon-channel-pair-body.yang b/build/yang-files/notification/submodules/bbf-xpon-channel-pair-body.yang
new file mode 100644
index 0000000..0c5b6f6
--- /dev/null
+++ b/build/yang-files/notification/submodules/bbf-xpon-channel-pair-body.yang
@@ -0,0 +1,238 @@
+submodule bbf-xpon-channel-pair-body {
+  yang-version 1.1;
+  belongs-to bbf-xpon {
+    prefix bbf-xpon;
+  }
+
+  import bbf-xpon-types {
+    prefix bbf-xpon-types;
+  }
+  import ietf-interfaces {
+    prefix if;
+  }
+  import bbf-xpon-if-type {
+    prefix bbf-xponift;
+  }
+  include bbf-xpon-base;
+  include bbf-xpon-wavelength-profile-body;
+
+  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 for
+     managing channel pairs.
+
+     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>";
+  }
+
+  grouping channel-pair-config-data {
+    description
+      "All configuration data for a channel pair.";
+    leaf channel-group-ref {
+      type if:interface-ref;
+      must "derived-from-or-self(/if:interfaces"
+         + "/if:interface[if:name=current()]/if:type,"
+         + "'bbf-xponift:channel-group')" {
+        error-message
+          "Must reference a channel group.";
+      }
+      description
+        "Reference to channel group. Note that it is not allowed
+         to have several channel-pairs with identical downsream
+         channel-ID or upstream channel-ID or transmit wavelength
+         simultaneously active on the same chnanel-group.
+         In particular there may be only a maximum of one XGS-PON,
+         one XG-PON and one G-PON active on the same channel group.
+         The YANG model does not enforce these constraints which are
+         assumed to be enforced or verified by the OLT network
+         element software.";
+    }
+    leaf channel-partition-ref {
+      type if:interface-ref;
+      must "derived-from-or-self(/if:interfaces"
+         + "/if:interface[if:name=current()]/if:type,"
+         + "'bbf-xponift:channel-partition') and "
+         + "/if:interfaces/if:interface[if:name=current()]"
+         + "/channel-partition/channel-group-ref="
+         + "../channel-group-ref" {
+        error-message
+          "Must reference a channel partition associated with the same
+           channel group this pair is associated with.";
+      }
+      description
+        "Reference to channel partition.";
+    }
+    leaf wavelength-prof-ref {
+      when "derived-from-or-self(../channel-pair-type,"
+         + "'bbf-xpon-types:ngpon2-twdm') or derived-from-or-self"
+         + "(../channel-pair-type, 'bbf-xpon-types:ngpon2-ptp') or "
+         + "derived-from-or-self(../channel-pair-type,"
+         + "'bbf-xpon-types:xgs')";
+      type wavelength-prof-ref;
+      description
+        "An NG-PON2 channel pair needs to point to an existing
+         wavelength profile. Similar for XGS-PON (ref: ITU-T G.9807.1
+         A.8.2: Basic Wavelength and Optional Wavelength sets). The
+         wavelength for XG-PON and G-PON is fixed per ITU-T standards
+         and needs not be configured via a wavelength profile.";
+    }
+    leaf channel-pair-type {
+      type identityref {
+        base bbf-xpon-types:channel-pair-type-base;
+      }
+      mandatory true;
+      description
+        "Represents the type of channel pair
+         (e.g. TWDM NG-PON2, PtP NG-PON2, XGS-PON, XG-PON,
+         G-PON).";
+    }
+    leaf channel-pair-line-rate {
+      when "derived-from-or-self(../channel-pair-type,"
+         + "'bbf-xpon-types:ngpon2-twdm') or derived-from-or-self"
+         + "(../channel-pair-type, 'bbf-xpon-types:ngpon2-ptp')";
+      type identityref {
+        base bbf-xpon-types:channel-pair-line-rate-profile-base;
+      }
+      default "bbf-xpon-types:unplanned-cp-line-rate";
+      description
+        "Represents the planned downstream/upstream channel pair
+         speed for NG-PON2. The line rates for
+             XGS-PON (downstream 10Gbps/upstream 10Gbps),
+             XG-PON(downstream 10Gbps/upstream 2.5Gbps) and
+             G-PON (downstream 2.5Gbps/upstream 1.2Gbps)
+         are fixed per ITU-T standards and need not be configured.";
+    }
+    leaf gpon-pon-id-interval {
+      when "derived-from-or-self"
+         + "(../channel-pair-type, 'bbf-xpon-types:gpon')";
+      type uint16 {
+        range "0..60";
+      }
+      units "seconds";
+      default "0";
+      description
+        "This attribute is used to specify the frequency of
+         transmission of the periodic downstream PON-ID PLOAM
+         message for this G-PON. See ITU-T G.984.3 C1. The default
+         value '0' allows not to generate this PLOAM message,
+         fulfilling ITU-T G.984.3 C2 requirement.
+         This is only applicable to G-PON.";
+      reference
+        "ITU-T G.984.3 C1
+         ITU-T G.984.3 C2";
+    }
+  }
+
+  grouping channel-pair-state-data {
+    description
+      "All state data for a channel pair.";
+    leaf actual-downstream-wavelength {
+      type uint32 {
+        range "0 | 148000..162000";
+      }
+      units "0.01nm";
+      default "0";
+      description
+        "Represents the Actual Downstream wavelength for the
+         channel pair for any of the NG-PON2, XGS-PON, XG-PON or
+         G-PON case. It is expressed in hundredths of nm to fit
+         ITU-T precision requirements.";
+    }
+    leaf primary-ct-assigned {
+      type boolean;
+      default "false";
+      description
+        "When true this means that a channel termination with
+         Primary type B role has been assigned to this channel pair.";
+      reference
+        "ITU-T G.989.3 clause 18.2";
+    }
+    leaf secondary-ct-assigned {
+      type boolean;
+      default "false";
+      description
+        "When true this means that a channel termination with
+         Secondary type B role has been assigned to this
+         channel pair.";
+      reference
+        "ITU-T G.989.3 clause 18.2";
+    }
+  }
+
+  augment '/if:interfaces/if:interface/bbf-xpon:channel-pair' {
+    description
+      "Configuration of an xPON channel pair.";
+    uses channel-pair-config-data;
+  }
+
+  augment '/if:interfaces-state/if:interface/bbf-xpon:channel-pair' {
+    description
+      "State data of an xPON channel pair.";
+    uses channel-pair-state-data;
+  }
+}
diff --git a/build/yang-files/notification/submodules/bbf-xpon-channel-partition-body.yang b/build/yang-files/notification/submodules/bbf-xpon-channel-partition-body.yang
new file mode 100644
index 0000000..422c8db
--- /dev/null
+++ b/build/yang-files/notification/submodules/bbf-xpon-channel-partition-body.yang
@@ -0,0 +1,182 @@
+submodule bbf-xpon-channel-partition-body {
+  yang-version 1.1;
+  belongs-to bbf-xpon {
+    prefix bbf-xpon;
+  }
+
+  import ietf-interfaces {
+    prefix if;
+  }
+  import bbf-xpon-if-type {
+    prefix bbf-xponift;
+  }
+  import bbf-xpon-types {
+    prefix bbf-xpon-types;
+  }
+  include bbf-xpon-base;
+
+  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 for
+     managing channel partitions.
+
+     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>";
+  }
+
+  grouping channel-partition-config-data {
+    description
+      "All config data for a channel partition";
+    leaf channel-group-ref {
+      type if:interface-ref;
+      must "derived-from-or-self(/if:interfaces"
+         + "/if:interface[if:name=current()]/if:type,"
+         + "'bbf-xponift:channel-group')" {
+        error-message
+          "Must reference a channel group.";
+      }
+      mandatory true;
+      description
+        "Reference to a channel group.";
+    }
+    leaf channel-partition-index {
+      type uint8 {
+        range "0..15";
+      }
+      description
+        "This attribute identifies the partition inside the
+         channel group.";
+      reference
+        "ITU-T G.989.3 clause 6.1.5.9 and clause 11.3.3.14.";
+    }
+    leaf downstream-fec {
+      type boolean;
+      default "true";
+      description
+        "Enable/Disable downstream FEC.
+         Note that downstream FEC is always enabled for XG-PON and
+         XGS-PON and thus a value of 'false' is ignored.";
+      reference
+        "ITU-T G.984.3 clause 13.1.2.1
+         ITU-T G.987.3 clause 10.1
+         ITU-T G.9807.1 clause C.10.1.1.1.3
+         ITU-T G.989.3 clause 10.1.1.1.3";
+    }
+    leaf closest-onu-distance {
+      type uint16 {
+        range "0..40";
+      }
+      units "km";
+      default "0";
+      description
+        "Establishes the distance of the closest ONU.
+         Used to determine how to equalize delay
+         between the ONUs.";
+    }
+    leaf maximum-differential-xpon-distance {
+      type uint16 {
+        range "20 | 40";
+      }
+      units "km";
+      default "20";
+      description
+        "This attribute provides the ability to set the maximum
+         differential logical reach for a channel partition.";
+      reference
+        "ITU-T G.989.1 clause 8.2
+         ITU-T G.989.3 clause 13.1.";
+    }
+    leaf authentication-method {
+      type bbf-xpon-types:auth-method-type;
+      default "serial-number";
+      description
+        "ONU Authentication mode option for this
+         channel partition.";
+      reference
+        "ITU-T G.984.3, section VI.1.";
+    }
+    leaf multicast-aes-indicator {
+      type boolean;
+      default "false";
+      description
+        "Used to designate whether AES should be
+         enabled/disabled for multicast GEM ports.";
+      reference
+        "ITU-T G.984.3, section 12.2. and 9.2.3.8
+         ITU-T G.987.3, section 15.5.1 and 15.5.4
+         ITU-T G.9807.1, section C.15.5.1 and C.15.5.4
+         ITU-T G.989.3, section 15.5.1 and 5.5.4.";
+    }
+  }
+
+  augment '/if:interfaces/if:interface/bbf-xpon:channel-partition' {
+    description
+      "Configuration of an xPON channel partition.";
+    uses channel-partition-config-data;
+  }
+}
diff --git a/build/yang-files/notification/submodules/bbf-xpon-channel-termination-body.yang b/build/yang-files/notification/submodules/bbf-xpon-channel-termination-body.yang
new file mode 100644
index 0000000..513cee8
--- /dev/null
+++ b/build/yang-files/notification/submodules/bbf-xpon-channel-termination-body.yang
@@ -0,0 +1,285 @@
+submodule bbf-xpon-channel-termination-body {
+  yang-version 1.1;
+  belongs-to bbf-xpon {
+    prefix bbf-xpon;
+  }
+
+  import ietf-interfaces {
+    prefix if;
+  }
+  import bbf-xpon-types {
+    prefix bbf-xpon-types;
+  }
+  import bbf-xpon-if-type {
+    prefix bbf-xponift;
+  }
+  include bbf-xpon-base;
+
+  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 for
+     managing channel terminations.
+
+     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>";
+  }
+
+  grouping channel-termination-config-data {
+    description
+      "All configuration data for a channel termination.";
+    leaf channel-pair-ref {
+      type if:interface-ref;
+      must "derived-from-or-self(/if:interfaces"
+         + "/if:interface[if:name=current()]/if:type,"
+         + "'bbf-xponift:channel-pair') and "
+         + "/if:interfaces/if:interface[if:name=current()]/"
+         + "bbf-xpon:channel-pair/bbf-xpon:channel-pair-type = "
+         + "../bbf-xpon:channel-termination-type" {
+        error-message
+          "Must reference a channel pair with the same xPON type as 
+           the channel termination.";
+      }
+      description
+        "Reference to a channel pair.";
+    }
+    leaf channel-termination-type {
+      type identityref {
+        base bbf-xpon-types:channel-pair-type-base;
+      }
+      mandatory true;
+      description
+        "Represents the type of channel termination (e.g.
+         TWDM NG-PON2, PtP NG-PON2, XGS-PON, XG-PON, G-PON).";
+    }
+    leaf meant-for-type-b-primary-role {
+      type boolean;
+      description
+        "When true, the channel termination is meant to play type B
+         protection Primary role when it refers to a channel pair.
+         When false, the channel termination is meant to play
+         type B protection Secondary role when it refers to a
+         channel pair.";
+      reference
+        "ITU-T G.898.3 Amendment 1 (11/2016), section 18.1.";
+    }
+    leaf ngpon2-twdm-admin-label {
+      when "derived-from-or-self"
+         + "(../bbf-xpon:channel-termination-type,"
+         + "'bbf-xpon-types:ngpon2-twdm')";
+      type uint32 {
+        range "0..268435455" {
+          description
+            "0 to 2^28-1.";
+        }
+      }
+      description
+        "For TWDM NG-PON2, the admin-label is configurable and is
+         28 bits long. It is the configurable part of the PON-ID
+         which is available as state data.";
+      reference
+        "ITU-T G.989.3 section 6.1.5.3";
+    }
+    leaf ngpon2-ptp-admin-label {
+      when "derived-from-or-self"
+         + "(../bbf-xpon:channel-termination-type,"
+         + "'bbf-xpon-types:ngpon2-ptp')";
+      type uint32 {
+        range "0..4194303" {
+          description
+            "0 to 2^22-1.";
+        }
+      }
+      description
+        "For PtP NG-PON2, the admin-label is configurable and is
+         22 bits long. It is the configurable part of the PON-ID
+         which is available as state data.";
+      reference
+        "ITU-T G.989.3 section 6.1.5.3";
+    }
+    leaf xgs-pon-id {
+      when "derived-from-or-self"
+         + "(../bbf-xpon:channel-termination-type,"
+         + "'bbf-xpon-types:xgs')";
+      type uint32;
+      description
+        "For XGS-PON, the PON-ID is entirely configurable and is
+         32 bits long. The PON-ID is also available as state
+         data.";
+      reference
+        "ITU-T G.9807.1 section C.10.1.1.1.3";
+    }
+    leaf xgpon-pon-id {
+      when "derived-from-or-self"
+         + "(../bbf-xpon:channel-termination-type,"
+         + "'bbf-xpon-types:xgpon')";
+      type uint32;
+      description
+        "For XG-PON, the PON-ID is entirely configurable and is
+         32 bits long. The PON-ID is also available as state
+         data.";
+      reference
+        "ITU-T G.987.3 section E.2";
+    }
+    leaf gpon-pon-id {
+      when "derived-from-or-self"
+         + "(../bbf-xpon:channel-termination-type,"
+         + "'bbf-xpon-types:gpon')";
+      type bbf-xpon-types:string-hex14;
+      description
+        "For G-PON, the PON-ID is entirely configurable with
+         any binary value over 7 bytes. The PON-ID is also
+         available as state data.";
+      reference
+        "ITU-T G.984.3 section C.2.2";
+    }
+    leaf pon-tag {
+      when "not(derived-from-or-self"
+         + "(../bbf-xpon:channel-termination-type,"
+         + "'bbf-xpon-types:gpon'))";
+      type string {
+        pattern '[0-9a-fA-F]{16}';
+      }
+      description
+        "8 bytes. Each octet is represented by two hex values.
+         Used to specify channel-pair-TAG attribute in NG-PON2,
+         XGS-PON and XG-PON downstream PLOAM messages.
+         The PON-TAG is not relevant for G-PON.";
+    }
+    leaf ber-calc-period {
+      type uint32 {
+        range "1..864000";
+      }
+      units "0.1s";
+      default "10";
+      description
+        "Measurement period used to determine if an SDi alarm
+         has occurred for an ONU.";
+      reference
+        "ITU-T G.984.3 section 11.1.3";
+    }
+    leaf location {
+      type identityref {
+        base bbf-xpon-types:location-base;
+      }
+      description
+        "Indicates whether the CT is physically inside the OLT i.e.
+         can be related to a port in the OLT hardware model or
+         physically part of another OLT.";
+    }
+  }
+
+  grouping channel-termination-oper-data {
+    description
+      "All oper data for a channel termination";
+    leaf pon-id-display {
+      type bbf-xpon-types:pon-id-display-type;
+      description
+        "The PON-ID of the channel termination.
+         Per ITU-T G.989.3, ITU-T G.9807.1, ITU-T G.987.3 and
+         ITU-T G.984.3, depending of the xPON type some part
+         of this object is configured by the operator and the
+         other part is genuine operational data determined by
+         the system.";
+    }
+    leaf type-b-state {
+      type identityref {
+        base bbf-xpon-types:type-b-state-base;
+      }
+      description
+        "The type B protection state of the CT; it will typically
+         be active/standby. When the channel termination is not yet
+         referring to a channel pair, it is not part of any type B
+         protection scheme (and not usable either, btw); in that
+         case its type-b-state has the value 'not-part-of-type-b.";
+      reference
+        "ITU-T G.989.3 Amendment 1 clause 18.2";
+    }
+    leaf location {
+      type identityref {
+        base bbf-xpon-types:location-base;
+      }
+      description
+        "Indicates whether the CT is physically inside the OLT i.e.
+         can be related to a port in the OLT hardware model or
+         physically part of another OLT.";
+    }
+  }
+
+  augment '/if:interfaces/if:interface/bbf-xpon:channel-termination' {
+    description
+      "Configuration of an xPON channel termination.";
+    uses channel-termination-config-data;
+  }
+
+  augment '/if:interfaces-state/if:interface/bbf-xpon:channel-'
+        + 'termination' {
+    description
+      "State data of an xPON channel termination.";
+    uses channel-termination-oper-data;
+  }
+}
diff --git a/build/yang-files/notification/submodules/bbf-xpon-multicast-distribution-set-body.yang b/build/yang-files/notification/submodules/bbf-xpon-multicast-distribution-set-body.yang
new file mode 100644
index 0000000..a2c1326
--- /dev/null
+++ b/build/yang-files/notification/submodules/bbf-xpon-multicast-distribution-set-body.yang
@@ -0,0 +1,148 @@
+submodule bbf-xpon-multicast-distribution-set-body {
+  yang-version 1.1;
+  belongs-to bbf-xpon {
+    prefix bbf-xpon;
+  }
+
+  import bbf-yang-types {
+    prefix bbf-yang;
+  }
+  include bbf-xpon-base;
+  include bbf-xpon-multicast-gemport-body;
+
+  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 for
+     managing multicast distribution sets.
+
+     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>";
+  }
+
+  augment '/bbf-xpon:xpon' {
+    description
+      "Augment system level xPON configuration with multicase
+       distribution set configuration.";
+    container multicast-distribution-set {
+      description
+        "Configuration data for a multicast distribution set.";
+      uses multicast-distribution-set-data;
+    }
+  }
+
+  grouping multicast-distribution-set-data {
+    description
+      "All configuration data for a multicast distribution set.";
+    list multicast-set {
+      key "name";
+      leaf name {
+        type bbf-yang:string-ascii64;
+        description
+          "Name of the multicast distribution set.";
+      }
+      leaf multicast-gemport-ref {
+        type multicast-gemport-ref;
+        description
+          "Points to a multicast GEM port.";
+      }
+      choice multicast-vlans {
+        description
+          "Multicast VLAN list or all. All means all multicast
+           vlans are carried on the same GEM port.";
+        case vlan-list {
+          description
+            "Multicast VLAN list.";
+          list vlan-list {
+            key "multicast-vlan-id";
+            leaf multicast-vlan-id {
+              type uint16 {
+                range "0..4095";
+              }
+              description
+                "Multicast VLAN-ID.";
+            }
+            description
+              "List of vlans.";
+          }
+        }
+        case all-multicast-vlans {
+          description
+            "All multicast VLANs are carried on the same
+             GEM port.";
+          leaf all-multicast-vlans {
+            type empty;
+            description
+              "All multicast VLANs.";
+          }
+        }
+      }
+      description
+        "List of multicast sets.";
+    }
+  }
+}
diff --git a/build/yang-files/notification/submodules/bbf-xpon-multicast-gemport-body.yang b/build/yang-files/notification/submodules/bbf-xpon-multicast-gemport-body.yang
new file mode 100644
index 0000000..e5ce9e6
--- /dev/null
+++ b/build/yang-files/notification/submodules/bbf-xpon-multicast-gemport-body.yang
@@ -0,0 +1,158 @@
+submodule bbf-xpon-multicast-gemport-body {
+  yang-version 1.1;
+  belongs-to bbf-xpon {
+    prefix bbf-xpon;
+  }
+
+  import ietf-interfaces {
+    prefix if;
+  }
+  import bbf-xpon-if-type {
+    prefix bbf-xponift;
+  }
+  import bbf-yang-types {
+    prefix bbf-yang;
+  }
+  include bbf-xpon-base;
+
+  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 for
+     managing multicast GEM ports.
+
+     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>";
+  }
+
+  typedef multicast-gemport-ref {
+    type leafref {
+      path '/bbf-xpon:xpon/bbf-xpon:multicast-gemports/bbf-xpon:'
+         + 'multicast-gemport/bbf-xpon:name';
+    }
+    description
+      "Points to multicast GEM port.";
+  }
+
+  augment '/bbf-xpon:xpon' {
+    description
+      "Augment system level xPON configuration with multicase GEM
+       port configuration.";
+    container multicast-gemports {
+      description
+        "Multicast GEM ports configuration data.";
+      uses multicast-gemports-config-data;
+    }
+  }
+
+  grouping multicast-gemports-config-data {
+    description
+      "The config data of multicast GEM ports. Multicast GEM ports
+       can be used for multicast or broadcast.";
+    list multicast-gemport {
+      key "name";
+      leaf name {
+        type bbf-yang:string-ascii64;
+        description
+          "The name of the multicast GEM port.";
+      }
+      leaf gemport-id {
+        type uint32;
+        description
+          "The ID of the multicast GEM port.";
+      }
+      leaf interface {
+        type if:interface-ref;
+        must
+          "/if:interfaces/if:interface[if:name=current()]
+           /if:type='bbf-xponift:channel-pair'" {
+          error-message
+            "Must reference a channel pair.";
+        }
+        description
+          "Each channel pair has in general one or several multicast
+           GEM ports.";
+      }
+      leaf traffic-class {
+        type uint8 {
+          range "0..7";
+        }
+        description
+          "Traffic class value.";
+      }
+      leaf is-broadcast {
+        type boolean;
+        default "false";
+        description
+          "If true, this multicast GEM port is used for broadcast
+           traffic.";
+      }
+      description
+        "List of multicast GEM ports.";
+    }
+  }
+}
diff --git a/build/yang-files/notification/submodules/bbf-xpon-wavelength-profile-body.yang b/build/yang-files/notification/submodules/bbf-xpon-wavelength-profile-body.yang
new file mode 100644
index 0000000..14e6b69
--- /dev/null
+++ b/build/yang-files/notification/submodules/bbf-xpon-wavelength-profile-body.yang
@@ -0,0 +1,151 @@
+submodule bbf-xpon-wavelength-profile-body {
+  yang-version 1.1;
+  belongs-to bbf-xpon {
+    prefix bbf-xpon;
+  }
+
+  import bbf-yang-types {
+    prefix bbf-yang;
+  }
+  include bbf-xpon-base;
+
+  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 for
+     managing wavelength profiles.
+
+     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>";
+  }
+
+  typedef wavelength-prof-ref {
+    type leafref {
+      path '/bbf-xpon:xpon/bbf-xpon:wavelength-profiles/bbf-xpon:'
+         + 'wavelength-profile/bbf-xpon:name';
+    }
+    description
+      "A reference to a wavelength profile.";
+  }
+
+  augment '/bbf-xpon:xpon' {
+    description
+      "Augment system level xPON configuration with wavelength
+       profile configuration.";
+    container wavelength-profiles {
+      description
+        "Wavelength profile configuration.";
+      uses wavelength-profile-data;
+    }
+  }
+
+  grouping wavelength-profile-data {
+    description
+      "All config data for wavelength profile.";
+    list wavelength-profile {
+      key "name";
+      description
+        "The list of wavelength profiles.";
+      leaf name {
+        type bbf-yang:string-ascii64;
+        description
+          "Wavelength profile name.";
+      }
+      leaf upstream-channel-id {
+        type uint8 {
+          range "0..15";
+        }
+        default "0";
+        description
+          "Upstream channel ID.";
+        reference
+          "ITU-T G.989.3 clause 6.1.5.5.";
+      }
+      leaf downstream-channel-id {
+        type uint8 {
+          range "0..15";
+        }
+        default "0";
+        description
+          "Downstream channel ID.";
+        reference
+          "ITU-T G.989.3 clause 6.1.5.4.";
+      }
+      leaf downstream-wavelength {
+        type uint32 {
+          range "0 | 156000..161000";
+        }
+        units "0.01nm";
+        default "0";
+        description
+          "Downstream wavelength.";
+        reference
+          "ITU-T G.989.2";
+      }
+    }
+  }
+}
diff --git a/build/yang-files/schema-mount.xml b/build/yang-files/schema-mount.xml
index 6460aa5..925baa5 100644
--- a/build/yang-files/schema-mount.xml
+++ b/build/yang-files/schema-mount.xml
@@ -15,6 +15,10 @@
   -->
 
 <schema-mounts xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount">
+  <namespace>
+    <prefix>bbf-device-aggregation</prefix>
+    <uri>urn:bbf:yang:bbf-device-aggregation</uri>
+  </namespace>
   <mount-point>
     <module>bbf-device-aggregation</module>
     <label>device-yang-library</label>