[ONOS-5990] L3VPN device model YANG files
Change-Id: Ia1640c7745eb1f977e0fddc85c7b85704fc46a13
diff --git a/apps/l3vpn/yangmodel/src/main/yang/ietf-network-instance@2016-06-23.yang b/apps/l3vpn/yangmodel/src/main/yang/ietf-network-instance@2016-06-23.yang
new file mode 100644
index 0000000..57eebdc
--- /dev/null
+++ b/apps/l3vpn/yangmodel/src/main/yang/ietf-network-instance@2016-06-23.yang
@@ -0,0 +1,241 @@
+module ietf-network-instance {
+
+ yang-version "1";
+
+ // namespace
+ namespace "urn:ietf:params:xml:ns:yang:ietf-network-instance";
+
+ prefix "ni";
+
+ // import some basic types
+ import ietf-interfaces {
+ prefix if;
+ }
+
+ import ietf-ip {
+ prefix ip;
+ }
+
+ // meta
+ organization "IETF Routing Area Working Group (rtgwg)";
+
+ contact
+ "Routing Area Working Group - <rtgwg@ietf.org>";
+
+
+ description
+ "This module is used to support multiple network instances
+ within a single physical or virtual device. Network
+ instances are commonly know as VRFs (virtual routing
+ and forwarding) and VSIs (virtual switching instances).";
+
+ revision "2016-06-23" {
+ description
+ "Initial revision.";
+ reference "RFC TBD";
+ }
+
+ // extension statements
+
+ feature bind-network-instance-name {
+ description
+ "Network Instance to which an interface instance is bound";
+ }
+
+ // identity statements
+
+ identity network-instance-type {
+ description
+ "Base identity from which identities describing
+ network instance types are derived.";
+ }
+
+ identity ipv4-interface-protocol-type {
+ description
+ "Base identity for derivation of IPv4 interface
+ protocols";
+ }
+
+ identity ipv6-interface-protocol-type {
+ description
+ "Base identity for derivation of IPv6 interface
+ protocols";
+ }
+
+ // typedef statements
+
+ // grouping statements
+
+ grouping interface-ip-common {
+ description
+ "interface-specific configuration for IP interfaces, IPv4 and
+ IPv6";
+
+ }
+
+ grouping ipv4-interface-protocols {
+ container ipv4-interface-protocols {
+ list ipv4-interface-protocol {
+ key "type";
+ leaf type {
+ type identityref {
+ base ipv4-interface-protocol-type;
+ }
+ mandatory true;
+ description
+ "ARP, ICMP, VRRP, DHCP Client, etc.";
+ }
+ description
+ "List of IPv4 protocols configured
+ on an interface";
+ }
+ description
+ "Container for list of IPv4 protocols configured
+ on an interface";
+ }
+ description
+ "Grouping for IPv4 protocols configured on an interface";
+ }
+
+ grouping ipv6-interface-protocols {
+ description
+ "Grouping for IPv6 protocols configured on
+ an interface.";
+ container ipv6-interface-protocols {
+ description
+ "Container for list of IPv6 protocols configured
+ on an interface.";
+ list ipv6-interface-protocol {
+ key "type";
+ description
+ "List of IPv6 protocols configured
+ on an interface";
+ leaf type {
+ type identityref {
+ base ipv6-interface-protocol-type;
+ }
+ mandatory true;
+ description
+ "ND, ICMPv6, VRRP, DHCPv6 Client, etc.";
+ }
+ }
+ }
+ }
+
+ grouping network-instance-policy {
+ description
+ "Network instance policies such as route
+ distinguisher, route targets, VPLS ID and neighbor,
+ Ethernet ID, etc. ";
+ reference
+ "RFC 4364 - BGP/MPLS Virtual Private Networks (VPNs)
+ RFC 6074 - Provisioning, Auto-Discovery, and Signaling
+ in Layer 2 Virtual Private Networks (L2VPNs)
+ RFC 7432 - BGP MPLS-Based Ethernet VPN";
+ container network-instance-policy {
+ description "Network Instance Policy -- details TBD";
+ }
+ }
+
+ // top level device definition statements
+ container devices {
+ list device {
+ key deviceid;
+ leaf deviceid {
+ type string;
+ }
+ container network-instances {
+ description "Network instances each of which have
+ and protocol instantiations. For layer 3,
+ this consistent with the routing-instance
+ definition in ietf-routing";
+ reference "draft-ietf-netmod-routing-cfg";
+ list network-instance {
+ key name;
+ description "List of network-instances";
+ leaf name {
+ type string;
+ description "device scoped
+ identifier for the network
+ instance";
+ }
+ leaf type {
+ type identityref {
+ base network-instance-type;
+ }
+ description
+ "The network instance type -- details TBD
+ Likely types include core, L3-VRF, VPLS,
+ L2-cross-connect, L2-VSI, etc.";
+ }
+ leaf enabled {
+ type boolean;
+ default "true";
+ description
+ "Flag indicating whether or not the network
+ instance is enabled.";
+ }
+ leaf description {
+ type string;
+ description
+ "Description of the network instance
+ and its intended purpose";
+ }
+ uses network-instance-policy;
+ // leaf root {
+ // type schema-mount;
+ // description "Root for models supported per
+ // network instance";
+ // }
+ }
+ }
+ }
+ }
+
+ // augment statements
+ augment "/if:devices/if:device/if:interfaces/if:interface" {
+ description
+ "Add a node for the identification of the logical network
+ instance (which is within the interface's identified logical
+ network element) associated with the IP information
+ configured on an interface";
+
+ leaf bind-network-instance-name {
+ type string;
+ description
+ "Network Instance to which an interface is bound";
+ }
+ }
+
+ augment "/if:devices/if:device/if:interfaces/if:interface/ip:ipv4" {
+ description
+ "Add a node for the identification of the logical
+ network instance (which is within the interface's
+ identified physical or virtual device) associated with
+ the IP information configured on an interface";
+
+ leaf bind-network-instance-name {
+ type string;
+ description
+ "Network Instance to which IPv4 interface is bound";
+
+ }
+ }
+
+ augment "/if:devices/if:device/if:interfaces/if:interface/ip:ipv6" {
+ description
+ "Add a node for the identification of the logical
+ network instance (which is within the interface's
+ identified physical or virtual device) associated with
+ the IP information configured on an interface";
+
+ leaf bind-network-instance-name {
+ type string;
+ description
+ "Network Instance to which IPv6 interface is bound";
+
+ }
+ }
+ // rpc statements
+ // notification statements
+ }
\ No newline at end of file