--- /dev/null
+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;
+ // checkAS
+ // revision-date 2018-09-04;
+ }
+
+ import o-ran-wg4-features {
+ prefix or-feat;
+ }
+
+ 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 "2020-12-10" {
+ description
+ "version 5.0.0
+
+ 1) added new leafs for reporting discovered event-collectors
+ used";
+
+ reference "ORAN-WG4.O1.0-v05.00";
+//update reference
+ }
+
+ revision "2019-07-03" {
+ description
+ "version 1.1.0
+
+ 1) backward compatible changes to fix pen number which always
+ should have been 32 bits
+ 2) backward compatible changes to introduce reporting of 3GPP
+ discovered MV-PnP information, including CA/RA Servers and SeGW
+ 3) 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";
+ }
+
+ typedef event-collector-id {
+ type union {
+ type inet:ip-address;
+ type inet:uri;
+ }
+ description "An event collector 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 event-collectors {
+ description
+ "The event-collectors discovered using DHCP, discovered using the O-RAN
+ defined syntax for encoding IP adresses or FQDNs in vendor specific
+ option 43/17";
+ leaf-list event-collectors{
+ if-feature "or-feat:NON-PERSISTENT-MPLANE";
+ max-elements 1;
+ type event-collector-id;
+ description
+ "An event-collector discovered using DHCP that can be used by the O-RU to
+ send pnfRegistration notification messages.
+
+ The O-RU behaviour when discovering more than one event-collector is not defined.";
+ }
+ leaf event-collector-format{
+ if-feature "or-feat:NON-PERSISTENT-MPLANE";
+ type enumeration {
+ enum ONAP;
+ }
+ description "the event-collector notification format";
+ }
+ }
+
+ 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;
+ uses event-collectors;
+ }
+
+ 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;
+ uses event-collectors;
+ }
+
+ 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 {
+ status deprecated;
+ type uint16;
+ default 53148;
+ description "the private enteprise number allocated to O-RAN Alliance";
+ }
+ leaf private-enterprise-num {
+ type uint32;
+ default 53148;
+ description "the private enterprise 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;
+ }
+}