module ietf-logical-network-element { yang-version 1.1; // namespace namespace "urn:ietf:params:xml:ns:yang:ietf-logical-network-element"; prefix lne; // import some basic types import ietf-interfaces { prefix if; reference "RFC 7223: A YANG Data Model for Interface Management"; } import ietf-yang-schema-mount { prefix yangmnt; reference "draft-ietf-netmod-schema-mount: YANG Schema Mount"; // RFC Ed.: Please replace this draft name with the corresponding // RFC number } organization "IETF Routing Area (rtgwg) Working Group"; contact "WG Web: WG List: Author: Lou Berger Author: Christan Hopps Author: Acee Lindem Author: Dean Bogdanovic "; description "This module is used to support multiple logical network elements on a single physical or virtual system. Copyright (c) 2017 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). This version of this YANG module is part of RFC XXXX; see the RFC itself for full legal notices."; // RFC Ed.: replace XXXX with actual RFC number and remove // this note // RFC Ed.: please update TBD revision 2017-12-04 { description "Initial revision."; reference "RFC TBD"; } // top level device definition statements container logical-network-elements { description "Allows a network device to support multiple logical network element (device) instances."; list logical-network-element { key "name"; description "List of logical network elements."; leaf name { type string; description "Device-wide unique identifier for the logical network element."; } leaf managed { type boolean; default "true"; description "True if the host can access LNE information using the root mount point. This value my not be modifiable in all implementations."; } leaf description { type string; description "Description of the logical network element."; } container "root" { description "Container for mount point."; yangmnt:mount-point "root" { description "Root for models supported per logical network element. This mount point may or may not be inline based on the server implementation. It SHALL always contain a YANG library and interfaces instance. When the associated 'managed' leaf is 'false' any operation that attempts to access information below the root SHALL fail with an error-tag of 'access-denied' and an error-app-tag of 'lne-not-managed'."; } } } } // augment statements augment "/if:interfaces/if:interface" { description "Add a node for the identification of the logical network element associated with an interface. Applies to interfaces that can be assigned on a per logical network element basis. Note that a standard error will be returned if the identified leafref isn't present. If an interfaces cannot be assigned for any other reason, the operation SHALL fail with an error-tag of 'operation-failed' and an error-app-tag of 'lne-assignment-failed'. A meaningful error-info that indicates the source of the assignment failure SHOULD also be provided."; leaf bind-lne-name { type leafref { path "/logical-network-elements/logical-network-element/name"; } description "Logical network element ID to which interface is bound."; } } // notification statements notification bind-lne-name-failed { description "Indicates an error in the association of an interface to an LNE. Only generated after success is initially returned when bind-lne-name is set."; leaf name { type leafref { path "/if:interfaces/if:interface/if:name"; } mandatory true; description "Contains the interface name associated with the failure."; } leaf bind-lne-name { type leafref { path "/if:interfaces/if:interface/lne:bind-lne-name"; } mandatory true; description "Contains the bind-lne-name associated with the failure."; } leaf error-info { type string; description "Optionally, indicates the source of the assignment failure."; } } }