AETHER-2874 Bootstrap Aether-2.x models

Change-Id: Ia987596109584df696aaa57703f9148075569422
diff --git a/config-models/aether-2.0.x/files/yang/onf-ip-domain.yang b/config-models/aether-2.0.x/files/yang/onf-ip-domain.yang
new file mode 100755
index 0000000..e896cc5
--- /dev/null
+++ b/config-models/aether-2.0.x/files/yang/onf-ip-domain.yang
@@ -0,0 +1,104 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module onf-ip-domain {
+  namespace "http://opennetworking.org/aether/ip-domain";
+  prefix ipd;
+
+  import ietf-inet-types { prefix inet; }
+  import ietf-yang-types{ prefix yg; }
+  import onf-aether-types { prefix at; }
+  import onf-enterprise{ prefix ent; }
+
+  organization "Open Networking Foundation.";
+  contact "Scott Baker";
+  description
+    "An Aether IP-Domain. This is a list of available subnets
+     that may be assigned to UEs, as well as DNS servers and other
+     metadata";
+
+  revision "2021-06-02" {
+    description "An Aether IP and Domain Specification";
+    reference "RFC 6087";
+  }
+
+  typedef ip-domain-id {
+        type yg:yang-identifier {
+            length 1..32;
+        }
+    description "The typedef for ip-domain-id";
+  }
+
+  container ip-domain {
+    description "The top level container";
+
+    list ip-domain {
+      key "id";
+      description
+        "List of ip domains";
+
+      leaf id {
+        type ip-domain-id;
+        description "ID for this ip domain.";
+      }
+
+      leaf display-name {
+        type string {
+            length 1..80;
+        }
+        description "display name to use in GUI or CLI";
+      }
+
+      leaf dnn {
+        type at:dnn;
+        mandatory true;
+        description "DNN/APN";
+      }
+
+      leaf dns-primary {
+        type inet:ip-address;
+        description "primary dns server name";
+      }
+
+      leaf dns-secondary {
+        type inet:ip-address;
+        description "secondary dns server name";
+      }
+
+      // Note: Cannot use a subnet as a list key. Dropped support from a
+      // list of subnets to a single subnet. Revisit in the future.
+      leaf subnet {
+        type inet:ipv4-prefix;
+        mandatory true;
+        description "subnet to allocate ip addresses from";
+      }
+
+      leaf admin-status {
+        type at:admin-status;
+        description "administrative status";
+      }
+
+      leaf mtu {
+        type at:mtu;
+        description "maximum transmission unit";
+      }
+
+      leaf description {
+        type at:description;
+        description "description of this ip domain";
+      }
+
+      // Ip-Domain is always owned by an Enterprise, because it contains
+      // IP addresses relative to that Enterprise.
+      leaf enterprise {
+        type leafref {
+          path "/ent:enterprise/ent:enterprise/ent:id";
+        }
+        mandatory true;
+        description
+          "Link to enterprise that owns this IP-Domain";
+      }
+    }
+  }
+}