Initial commit of the O1 simulator framework.
[sim/o1-interface.git] / ntsimulator / yang / o-ran-dhcp.yang
diff --git a/ntsimulator/yang/o-ran-dhcp.yang b/ntsimulator/yang/o-ran-dhcp.yang
new file mode 100644 (file)
index 0000000..7a0ca47
--- /dev/null
@@ -0,0 +1,281 @@
+module o-ran-dhcp {
+  yang-version 1.1;
+  namespace "urn:o-ran:dhcp:1.0";
+  prefix "o-ran-dhcp";
+
+  import ietf-interfaces {
+    prefix "if";
+  }
+
+  import ietf-inet-types {
+    prefix "inet";
+  }
+
+  import ietf-dhcpv6-types {
+    prefix dhcpv6-type;
+    revision-date 2018-01-30;
+  }
+
+  organization "O-RAN Alliance";
+
+  contact
+    "www.o-ran.org";
+
+  description
+    "This module defines the YANG definitions for managng the DHCP client.
+
+    Copyright 2019 the O-RAN alliance.
+
+    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.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    this list of conditions and the above disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+    this list of conditions and the above disclaimer in the documentation
+    and/or other materials provided with the distribution.
+    * Neither the Members of the O-RAN Alliance nor the names of its
+    contributors may be used to endorse or promote products derived from
+    this software without specific prior written permission.";
+
+  revision "2019-05-25" {
+    description
+      "version 1.1.0
+
+      1) backward compatible changes to introduce reporting of 3GPP
+      discovered MV-PnP information, including CA/RA Servers and SeGW ";
+
+    reference "ORAN-WG4.M.0-v01.00";
+  }
+
+  revision "2019-03-07" {
+    description
+      "version 1.0.1
+
+      1) backward compatible changes to introduce groupings.";
+
+    reference "ORAN-WG4.M.0-v01.00";
+  }
+
+  revision "2019-02-04" {
+    description
+      "version 1.0.0
+
+      1) imported model from xRAN
+      2) changed namespace and reference from xran to o-ran";
+
+    reference "ORAN-WG4.M.0-v01.00";
+  }
+
+  typedef netconf-client-id {
+    type union {
+      type inet:ip-address;
+      type inet:uri;
+    }
+    description "A NETCONF client identifier";
+  }
+
+  typedef ca-ra-server-id {
+    type union {
+      type inet:ip-address;
+      type inet:uri;
+    }
+    description "A CA/RA Server identifier";
+  }
+
+  typedef segw-id {
+    type union {
+      type inet:ip-address;
+      type inet:uri;
+    }
+    description "A SeGW identifier";
+  }
+
+  grouping ca-ra-servers {
+    description
+      "The CA/RA servers discovered using DHCP, discovered using the 3GPP
+      defined options in 3GPP 32.509 in vendor specific option 43/17";
+    list ca-ra-servers {
+      key servers;
+      description "A list of IP addresses or URIs for CA/RA Servers";
+
+      leaf servers{
+        type ca-ra-server-id;
+        description "the server identifier";
+      }
+      leaf port-number {
+        type inet:port-number;
+        description "an optional (non-default) port";
+      }
+      leaf ca-ra-path {
+        type string;
+        description
+          "ASCII string representing the path to the CMP server directory.
+          A CMP server may be located in an arbitrary path other than root.";
+      }
+      leaf subject-name {
+        type string;
+        description
+          "ASCII string representing the subject name of the CA/RA. ";
+      }
+      leaf protocol {
+        type enumeration {
+          enum HTTP;
+          enum HTTPS;
+        }
+      }
+    }
+  }
+
+  grouping security-gateways {
+    description
+      "The security gateways discovered using DHCP, discovered using the 3GPP
+      defined options in 3GPP 32.509 in vendor specific option 43/17";
+    list segw {
+      key gateways;
+      description "A list of IP addresses or URIs for SeGW";
+
+      leaf gateways{
+        type segw-id;
+        description "the SeGW identifier";
+      }
+    }
+
+  }
+
+  grouping netconf-clients {
+    description
+      "The netconf clients discovered using DHCP, discovered using the IANA
+      defined options or O-RAN defined syntax for encoding IP adresses or FQDNs
+      in vendor specific option 43/17";
+    list netconf-clients{
+      key client;
+      description "A list of IP addresses or URIs for NETCONF clients";
+      leaf client{
+        type netconf-client-id;
+        description "the client identifier";
+      }
+      leaf optional-port {
+        type inet:port-number;
+        description "an optional (non-default) port";
+      }
+    }
+  }
+
+  grouping dhcpv4-option {
+    description "DHCPv4 Configuration options";
+
+    leaf dhcp-server-identifier {
+      type  inet:ip-address;
+      description "DHCP server identifier";
+    }
+    leaf domain-name {
+      type  string;
+      description "Name of the domain";
+    }
+    leaf-list domain-name-servers {
+      type  inet:ip-address;
+      description "A list of DNS servers";
+    }
+    leaf interface-mtu {
+      type  uint32 {
+        range "0..65535";
+      }
+      description "Minimum Transmission Unit (MTU) of the interface";
+    }
+    leaf-list default-gateways{
+      type inet:ip-address;
+      description "the list of default gateways on the O-RUs subnet";
+    }
+    uses netconf-clients;
+    uses ca-ra-servers;
+    uses security-gateways;
+  }
+
+  grouping dhcpv6-option {
+    description "DHCPv6 Configuration options";
+
+    container dhcp-server-identifier{
+      description "dhcpv6 server identifief";
+      uses dhcpv6-type:duid;
+    }
+    leaf domain-name {
+      type  string;
+      description "Name of the domain";
+    }
+    leaf-list domain-name-servers {
+      type  inet:ip-address;
+      description "A list of DNS servers";
+    }
+    uses netconf-clients;
+    uses ca-ra-servers;
+    uses security-gateways;
+  }
+
+  grouping dhcp-group {
+    list interfaces {
+      key "interface";
+      description "Interface configuration";
+
+      leaf interface {
+        type if:interface-ref;
+        description "Name of the interface";
+      }
+
+      container dhcpv4 {
+        description "DHCPv4 information";
+        leaf client-id {
+          type string;
+          description "DHCP client identifier";
+        }
+        uses dhcpv4-option;
+      }
+      container dhcpv6 {
+        description "DHCPv6 information";
+        container dhcp-client-identifier{
+          description "dhcpv6 client identifief";
+          uses dhcpv6-type:duid;
+        }
+        uses dhcpv6-option;
+      }
+    }
+
+    container m-plane-dhcp {
+      description "leafs covering off DHCP aspects of m-plane operations";
+      leaf private-enterprise-number {
+        type uint16;
+        default 53148;
+        description "the private enteprise number allocated to O-RAN Alliance";
+      }
+      leaf vendor-class-data {
+        type string;
+        description
+          "The string used in DHCPv4 option 60 or DHCPv4 option 124 and
+          DHCPv6 option 16";
+      }
+    }
+  }
+
+
+  // Top Level Container
+
+  container dhcp {
+    config false;
+    description
+      "DHCP client configuration";
+
+    uses dhcp-group;
+  }
+}