--- /dev/null
+.. _dev-guide:
+
+User Network Interface Manager Plug-in (Unimgr) Developer Guide
+===============================================================
+
+Overview
+--------
+
+The User Network Interface (UNI) Manager project within OpenDaylight provides
+data models and APIs that enable software applications and service
+orchestrators to configure and provision connectivity services; in particular,
+Carrier Ethernet services as defined by MEF Forum, in physical and virtual
+network elements.
+
+Unimgr Architecture
+-------------------
+
+Unimgr provides support for both service orchestration, via the Legato API, and
+network resource provisioning, via the Presto API. These APIs, and the
+interfaces they provide, are defined by YANG models developed within MEF in
+collaboration with ONF and IETF. An application/user can interact with Unimgr
+at either layer. Presto and Legato APIs are for LSO Architecture reference points
+defined in `MEF 55 specification <https://www.mef.net/Assets/Technical_Specifications/PDF/MEF_55.pdf>`_.
+
+Presto layer
+````````````
+.. figure:: ./images/architecture.png
+ :scale: 65
+ :alt: Presto layer Architecture
+
+In current version of Unimgr the recent version of Presto NRP is supported.
+This model is based on Transport API (TAPI) from ONF. This API allows for
+management of connectivity services and exposes abstract topology of the
+managed infrastracture. By its nature Presto NRP write and update operations
+are defined as set of RPC calls. All the reads operation can be either specific
+RPCs or via RESTCONF data tree.
+
+Presto layer architecture is depicted in figure above. There are two
+distinctive parts of Presto NRP business logic Activation Service and
+Activation Driver. Activation Service part of the framework is to encapsulate
+the common logic whereas Activation Driver is a way to encapsulate business
+logic to transform Presto Request into a given underlying technology. This way
+we are able to handle multi-vendor infrastructures and address various use
+cases as vendors specific code is encapsulated in drivers.
+
+Activation Service
+..................
+
+Activation service is responsible for handling the connectivity request. In
+case of service activation following steps are performed:
+
+1. Validation of a request (e.g. if all endpoints exists)
+
+2. Decomposition of a request into number of drivers sub-requests
+
+3. Activation of the request for selected drivers
+
+4. Update of the data model and creating ``ConnectivityService`` and ``Connection`` objects for the request
+
+Step 1. Implements only minimal functionality.
+
+Step 2. Allows for multi-vendor configuration as decomposition mechanisms
+defines all drivers required to satisfy given connectivity request. Currently
+only p2p connectivity services are supported in the decomposition mechanism.
+
+Both validation and decomposition mechanisms are plug-able thus users can
+support more sophisticated scenarios.
+
+
+Activation Driver
+.................
+
+.. figure:: ./images/drivers.png
+ :scale: 90
+ :alt: Presto NRP topology and drivers
+
+Activation Driver has two main responsibilities:
+
+* to handle connectvitiy service requests
+
+* to contribute to Presto Topology with abstract nodes driver can handle
+
+In figure above example topology and drivers are shown. As you can see it is up
+to driver how to model infrastructure it manages. Thus, driver A has decided to
+model all devices as single virtual node, whereas driver C is exposing every
+single device as a node.
+
+The connectivity service is defined between ``ServiceInterfacePoint`` (SIP)
+which are mapped to ``NodeEdgePoint`` (NEP). A SIP can have UNI, ENNI or INNI
+role. Assigning a SIP to NEP can be done automatically by driver of with the
+use of Unimgr extension API. It is assumed that driver can connect eny number
+of SIPs related to NEPs for every ``Node`` it exposes.
+
+There is a contract for a given Karaf bundle to be recognized as a driver. The
+following must be fulfiled:
+
+* A driver have to expose an OSGI service that implements
+ ``org.opendaylight.unimgr.mef.nrp.api.ActivationDriverBuilder``
+
+* Implement a component that is responsible for writing to topology (in general
+ the requirement is to add at least a single node to topology with id
+ ``org.opendaylight.unimgr.mef.nrp.api.TapiConstants#PRESTO_SYSTEM_TOPO``
+
+There are three drivers maintained as part of Unimgr project:
+
+:template-driver: Which is intended as a template for real drivers development.
+ It is not connected to infrastructure.
+:ovs-driver: Which is a driver for OpenFlow infrasturcture.
+:cisco-xr-driver: A netconf driver for Cisco XR devices for MPLS inter-connectivity
+
+Key APIs and Interfaces
+-----------------------
+
+Legato YANG models:
+https://git.opendaylight.org/gerrit/gitweb?p=unimgr.git;a=tree;f=legato-api/src/main/yang;hb=refs/heads/stable/nitrogen
+
+Presto YANG models:
+https://git.opendaylight.org/gerrit/gitweb?p=unimgr.git;a=tree;f=presto-api/src/main/yang;hb=refs/heads/stable/nitrogen
+
+Legato API Tree
+---------------
+
+module: mef-services
+
+::
+
+ +--rw mef-services
+ +--rw mef-service* [svc-id]
+ +--rw evc
+ | +--rw unis
+ | | +--rw uni* [uni-id]
+ | | +--rw evc-uni-ce-vlans
+ | | | +--rw evc-uni-ce-vlan* [vid]
+ | | | +--rw vid -> /mef-interfaces:mef-interfaces/unis/uni[mef-interfaces:uni-id = current()/../../../uni-id]/ce-vlans/ce-vlan/vid
+ | | +--rw ingress-bwp-flows-per-cos!
+ | | | +--rw coupling-enabled? boolean
+ | | | +--rw bwp-flow-per-cos* [cos-name]
+ | | | +--rw cos-name -> /mef-global:mef-global/profiles/cos-names/cos-name/name
+ | | | +--rw bw-profile -> /mef-interfaces:mef-interfaces/unis/uni[mef-interfaces:uni-id = current()/../../../uni-id]/ingress-envelopes/envelope/env-id
+ | | +--rw egress-bwp-flows-per-eec!
+ | | | +--rw coupling-enabled? boolean
+ | | | +--rw bwp-flow-per-eec* [eec-name]
+ | | | +--rw eec-name -> /mef-global:mef-global/profiles/eec-names/eec-name/name
+ | | | +--rw bw-profile -> /mef-interfaces:mef-interfaces/unis/uni[mef-interfaces:uni-id = current()/../../../uni-id]/egress-envelopes/envelope/env-id
+ | | +--rw status
+ | | | +--ro oper-state-enabled? boolean
+ | | | +--ro available-status? mef-types:svc-endpoint-availability-type
+ | | +--rw uni-id -> /mef-interfaces:mef-interfaces/unis/uni/uni-id
+ | | +--rw role mef-types:evc-uni-role-type
+ | | +--rw admin-state-enabled? boolean
+ | | +--rw color-id? mef-types:cos-color-identifier-type
+ | | +--rw data-svc-frm-cos? -> /mef-global:mef-global/profiles/cos/cos-profile/id
+ | | +--rw l2cp-svc-frm-cos? -> /mef-global:mef-global/profiles/l2cp-cos/l2cp-profile/id
+ | | +--rw soam-svc-frm-cos? -> /mef-global:mef-global/profiles/cos/cos-profile/id
+ | | +--rw data-svc-frm-eec? -> /mef-global:mef-global/profiles/eec/eec-profile/id
+ | | +--rw l2cp-svc-frm-eec? -> /mef-global:mef-global/profiles/l2cp-eec/l2cp-profile/id
+ | | +--rw soam-svc-frm-eec? -> /mef-global:mef-global/profiles/eec/eec-profile/id
+ | | +--rw ingress-bw-profile-per-evc? -> /mef-interfaces:mef-interfaces/unis/uni[mef-interfaces:uni-id = current()/../uni-id]/ingress-envelopes/envelope/env-id
+ | | +--rw egress-bw-profile-per-evc? -> /mef-interfaces:mef-interfaces/unis/uni[mef-interfaces:uni-id = current()/../uni-id]/egress-envelopes/envelope/env-id
+ | | +--rw src-mac-addr-limit-enabled? boolean
+ | | +--rw src-mac-addr-limit? uint32
+ | | +--rw src-mac-addr-limit-interval? yang:timeticks
+ | | +--rw test-meg-enabled? boolean
+ | | +--rw test-meg? mef-types:identifier45
+ | | +--rw subscriber-meg-mip-enabled? boolean
+ | | +--rw subscriber-meg-mip? mef-types:identifier45
+ | +--rw status
+ | | +--ro oper-state-enabled? boolean
+ | | +--ro available-status? mef-types:virt-cx-availability-type
+ | +--rw sls-inclusions-by-cos
+ | | +--rw sls-inclusion-by-cos* [cos-name]
+ | | +--rw cos-name -> /mef-global:mef-global/profiles/cos-names/cos-name/name
+ | +--rw sls-uni-inclusions!
+ | | +--rw sls-uni-inclusion-set* [pm-type pm-id uni-id1 uni-id2]
+ | | +--rw pm-type -> /mef-global:mef-global/slss/sls[mef-global:sls-id = current()/../../../evc-performance-sls]/perf-objs/perf-obj/pm-type
+ | | +--rw pm-id -> /mef-global:mef-global/slss/sls[mef-global:sls-id = current()/../../../evc-performance-sls]/perf-objs/perf-obj[mef-global:pm-type = current()/../pm-type]/pm-id
+ | | +--rw uni-id1 -> ../../../unis/uni/uni-id
+ | | +--rw uni-id2 -> ../../../unis/uni/uni-id
+ | +--rw sls-uni-exclusions!
+ | | +--rw sls-uni-exclusion-set* [pm-type pm-id uni-id1 uni-id2]
+ | | +--rw pm-type -> /mef-global:mef-global/slss/sls[mef-global:sls-id = current()/../../../evc-performance-sls]/perf-objs/perf-obj/pm-type
+ | | +--rw pm-id -> /mef-global:mef-global/slss/sls[mef-global:sls-id = current()/../../../evc-performance-sls]/perf-objs/perf-obj[mef-global:pm-type = current()/../pm-type]/pm-id
+ | | +--rw uni-id1 -> ../../../unis/uni/uni-id
+ | | +--rw uni-id2 -> ../../../unis/uni/uni-id
+ | +--rw evc-id mef-types:evc-id-type
+ | +--ro evc-status? mef-types:evc-status-type
+ | +--rw evc-type mef-types:evc-type
+ | +--rw admin-state-enabled? boolean
+ | +--rw elastic-enabled? boolean
+ | +--rw elastic-service? mef-types:identifier45
+ | +--rw max-uni-count? uint32
+ | +--rw preserve-ce-vlan-id? boolean
+ | +--rw cos-preserve-ce-vlan-id? boolean
+ | +--rw evc-performance-sls? -> /mef-global:mef-global/slss/sls/sls-id
+ | +--rw unicast-svc-frm-delivery? mef-types:data-svc-frame-delivery-type
+ | +--rw multicast-svc-frm-delivery? mef-types:data-svc-frame-delivery-type
+ | +--rw broadcast-svc-frm-delivery? mef-types:data-svc-frame-delivery-type
+ | +--rw evc-meg-id? mef-types:identifier45
+ | +--rw max-svc-frame-size? mef-types:max-svc-frame-size-type
+ +--rw svc-id mef-types:retail-svc-id-type
+ +--rw sp-id? -> /mef-global:mef-global/svc-providers/svc-provider/sp-id
+ +--rw svc-type? mef-types:mef-service-type
+ +--rw user-label? mef-types:identifier45
+ +--rw svc-entity? mef-types:service-entity-type
+
+module: mef-global
+
+::
+
+ +--rw mef-global
+ +--rw svc-providers!
+ | +--rw svc-provider* [sp-id]
+ | +--rw sp-id mef-types:svc-provider-type
+ +--rw cens!
+ | +--rw cen* [cen-id]
+ | +--rw cen-id mef-types:cen-type
+ | +--rw sp-id? -> /mef-global/svc-providers/svc-provider/sp-id
+ +--rw slss!
+ | +--rw sls* [sls-id]
+ | +--rw perf-objs
+ | | +--rw pm-time-interval uint64
+ | | +--rw pm-time-interval-increment uint64
+ | | +--rw unavail-flr-threshold-pp mef-types:simple-percent
+ | | +--rw consecutive-small-time-intervals uint64
+ | | +--rw perf-obj* [pm-type pm-id]
+ | | +--rw pm-type mef-types:performance-metric-type
+ | | +--rw pm-id mef-types:identifier45
+ | | +--rw cos-name -> /mef-global/profiles/cos-names/cos-name/name
+ | | +--rw fd-pp mef-types:simple-percent
+ | | +--rw fd-range-pp mef-types:simple-percent
+ | | +--rw fd-perf-obj uint64
+ | | +--rw fd-range-perf-obj uint64
+ | | +--rw fd-mean-perf-obj uint64
+ | | +--rw ifdv-pp mef-types:simple-percent
+ | | +--rw ifdv-pair-interval mef-types:simple-percent
+ | | +--rw ifdv-perf-obj uint64
+ | | +--rw flr-perf-obj uint64
+ | | +--rw avail-pp mef-types:simple-percent
+ | | +--rw hli-perf-obj uint64
+ | | +--rw chli-consecutive-small-time-intervals uint64
+ | | +--rw chli-perf-obj uint64
+ | | +--rw min-uni-pairs-avail uint64
+ | | +--rw gp-avail-pp mef-types:simple-percent
+ | +--rw sls-id mef-types:cen-type
+ | +--rw sp-id? -> /mef-global/svc-providers/svc-provider/sp-id
+ +--rw subscribers!
+ | +--rw subscriber* [sub-id]
+ | +--rw sub-id mef-types:subscriber-type
+ | +--rw sp-id? -> /mef-global/svc-providers/svc-provider/sp-id
+ | +--rw cen-id? -> /mef-global/cens/cen/cen-id
+ +--rw profiles!
+ +--rw cos-names
+ | +--rw cos-name* [name]
+ | +--rw name mef-types:identifier45
+ +--rw eec-names
+ | +--rw eec-name* [name]
+ | +--rw name mef-types:identifier45
+ +--rw ingress-bwp-flows
+ | +--rw bwp-flow* [bw-profile]
+ | +--rw bw-profile mef-types:identifier45
+ | +--rw user-label? mef-types:identifier45
+ | +--rw cir? mef-types:bwp-cir-type
+ | +--rw cir-max? mef-types:bwp-cir-type
+ | +--rw cbs? mef-types:bwp-cbs-type
+ | +--rw eir? mef-types:bwp-eir-type
+ | +--rw eir-max? mef-types:bwp-eir-type
+ | +--rw ebs? mef-types:bwp-ebs-type
+ | +--rw coupling-enabled? boolean
+ | +--rw color-mode? mef-types:bwp-color-mode-type
+ | +--rw coupling-flag? mef-types:bwp-coupling-flag-type
+ +--rw egress-bwp-flows
+ | +--rw bwp-flow* [bw-profile]
+ | +--rw bw-profile mef-types:identifier45
+ | +--rw user-label? mef-types:identifier45
+ | +--rw cir? mef-types:bwp-cir-type
+ | +--rw cir-max? mef-types:bwp-cir-type
+ | +--rw cbs? mef-types:bwp-cbs-type
+ | +--rw eir? mef-types:bwp-eir-type
+ | +--rw eir-max? mef-types:bwp-eir-type
+ | +--rw ebs? mef-types:bwp-ebs-type
+ | +--rw coupling-enabled? boolean
+ | +--rw color-mode? mef-types:bwp-color-mode-type
+ | +--rw coupling-flag? mef-types:bwp-coupling-flag-type
+ +--rw l2cp-cos
+ | +--rw l2cp-profile* [id]
+ | +--rw l2cps
+ | | +--rw l2cp* [dest-mac-addr peering-proto-name]
+ | | +--rw dest-mac-addr yang:mac-address
+ | | +--rw peering-proto-name mef-types:identifier45
+ | | +--rw protocol? mef-types:l2cp-peering-protocol-type
+ | | +--rw protocol-id? yang:hex-string
+ | | +--rw cos-name? -> /mef-global/profiles/cos-names/cos-name/name
+ | | +--rw handling? mef-types:l2cp-handling-type
+ | | +--rw subtype* yang:hex-string
+ | +--rw id mef-types:identifier45
+ | +--rw user-label? mef-types:identifier45
+ +--rw l2cp-eec
+ | +--rw l2cp-profile* [id]
+ | +--rw l2cps
+ | | +--rw l2cp* [dest-mac-addr peering-proto-name]
+ | | +--rw dest-mac-addr yang:mac-address
+ | | +--rw peering-proto-name mef-types:identifier45
+ | | +--rw protocol? mef-types:l2cp-peering-protocol-type
+ | | +--rw protocol-id? yang:hex-string
+ | | +--rw eec-name? -> /mef-global/profiles/eec-names/eec-name/name
+ | | +--rw handling? mef-types:l2cp-handling-type
+ | | +--rw subtype* yang:hex-string
+ | +--rw id mef-types:identifier45
+ | +--rw user-label? mef-types:identifier45
+ +--rw l2cp-peering
+ | +--rw l2cp-profile* [id]
+ | +--rw l2cps
+ | | +--rw l2cp* [dest-mac-addr peering-proto-name]
+ | | +--rw dest-mac-addr yang:mac-address
+ | | +--rw peering-proto-name mef-types:identifier45
+ | | +--rw protocol? mef-types:l2cp-peering-protocol-type
+ | | +--rw protocol-id? yang:hex-string
+ | | +--rw subtype* yang:hex-string
+ | +--rw id mef-types:identifier45
+ | +--rw user-label? mef-types:identifier45
+ +--rw elmi
+ | +--rw elmi-profile* [id]
+ | +--rw id mef-types:identifier45
+ | +--rw user-label? mef-types:identifier45
+ | +--rw polling-counter? mef-types:elmi-polling-counter-type
+ | +--rw status-error-threshold? mef-types:elmi-status-error-threshold-type
+ | +--rw polling-timer? mef-types:elmi-polling-timer-type
+ | +--rw polling-verification-timer? mef-types:elmi-polling-verification-timer-type
+ +--rw eec
+ | +--rw eec-profile* [id]
+ | +--rw id mef-types:identifier45
+ | +--rw (eec-id)?
+ | +--:(pcp)
+ | | +--rw eec-pcp!
+ | | +--rw default-pcp-eec-name? -> /mef-global/profiles/eec-names/eec-name/name
+ | | +--rw default-pcp-color? mef-types:cos-color-type
+ | | +--rw pcp* [pcp-value]
+ | | +--rw pcp-value mef-types:ieee8021p-priority-type
+ | | +--rw discard-value? boolean
+ | | +--rw eec-name? -> /mef-global/profiles/eec-names/eec-name/name
+ | | +--rw color? mef-types:cos-color-type
+ | +--:(dscp)
+ | +--rw eec-dscp!
+ | +--rw default-ipv4-eec-name? -> /mef-global/profiles/eec-names/eec-name/name
+ | +--rw default-ipv4-color? mef-types:cos-color-type
+ | +--rw default-ipv6-eec-name? -> /mef-global/profiles/eec-names/eec-name/name
+ | +--rw default-ipv6-color? mef-types:cos-color-type
+ | +--rw ipv4-dscp* [dscp-value]
+ | | +--rw dscp-value inet:dscp
+ | | +--rw discard-value? boolean
+ | | +--rw eec-name? -> /mef-global/profiles/eec-names/eec-name/name
+ | | +--rw color? mef-types:cos-color-type
+ | +--rw ipv6-dscp* [dscp-value]
+ | +--rw dscp-value inet:dscp
+ | +--rw discard-value? boolean
+ | +--rw eec-name? -> /mef-global/profiles/eec-names/eec-name/name
+ | +--rw color? mef-types:cos-color-type
+ +--rw cos
+ +--rw cos-profile* [id]
+ +--rw id mef-types:identifier45
+ +--rw (cos-id)?
+ +--:(evc)
+ | +--rw cos-evc!
+ | +--rw default-evc-cos-name? -> /mef-global/profiles/cos-names/cos-name/name
+ | +--rw default-evc-color? mef-types:cos-color-type
+ +--:(pcp)
+ | +--rw cos-pcp!
+ | +--rw default-pcp-cos-name? -> /mef-global/profiles/cos-names/cos-name/name
+ | +--rw default-pcp-color? mef-types:cos-color-type
+ | +--rw pcp* [pcp-value]
+ | +--rw pcp-value mef-types:ieee8021p-priority-type
+ | +--rw discard-value? boolean
+ | +--rw cos-name? -> /mef-global/profiles/cos-names/cos-name/name
+ | +--rw color? mef-types:cos-color-type
+ +--:(dscp)
+ +--rw cos-dscp!
+ +--rw default-ipv4-cos-name? -> /mef-global/profiles/cos-names/cos-name/name
+ +--rw default-ipv4-color? mef-types:cos-color-type
+ +--rw default-ipv6-cos-name? -> /mef-global/profiles/cos-names/cos-name/name
+ +--rw default-ipv6-color? mef-types:cos-color-type
+ +--rw ipv4-dscp* [dscp-value]
+ | +--rw dscp-value inet:dscp
+ | +--rw discard-value? boolean
+ | +--rw cos-name? -> /mef-global/profiles/cos-names/cos-name/name
+ | +--rw color? mef-types:cos-color-type
+ +--rw ipv6-dscp* [dscp-value]
+ +--rw dscp-value inet:dscp
+ +--rw discard-value? boolean
+ +--rw cos-name? -> /mef-global/profiles/cos-names/cos-name/name
+ +--rw color? mef-types:cos-color-type
+
+Presto API Tree
+---------------
+
+module: onf-core-network-module
+
+::
+
+ +--rw forwarding-constructs
+ +--rw forwarding-construct* [uuid]
+ +--rw uuid string
+ +--rw layerProtocolName? onf-cnt:LayerProtocolName
+ +--rw lowerLevelFc* -> /forwarding-constructs/forwarding-construct/uuid
+ +--rw fcRoute* [uuid]
+ | +--rw uuid string
+ | +--rw fc* -> /forwarding-constructs/forwarding-construct/uuid
+ +--rw fcPort* [topology node tp]
+ | +--rw topology nt:topology-ref
+ | +--rw node nt:node-ref
+ | +--rw tp nt:tp-ref
+ | +--rw role? onf-cnt:PortRole
+ | +--rw fcPortDirection? onf-cnt:PortDirection
+ +--rw fcSpec
+ | +--rw uuid? string
+ | +--rw fcPortSpec* [uuid]
+ | | +--rw uuid string
+ | | +--rw ingressFcPortSet* [topology node tp]
+ | | | +--rw topology nt:topology-ref
+ | | | +--rw node nt:node-ref
+ | | | +--rw tp nt:tp-ref
+ | | +--rw egressFcPortSet* [topology node tp]
+ | | | +--rw topology nt:topology-ref
+ | | | +--rw node nt:node-ref
+ | | | +--rw tp nt:tp-ref
+ | | +--rw role? string
+ | +--rw nrp:nrp-ce-fcspec-attrs
+ | +--rw nrp:connectionType? nrp-types:NRP_ConnectionType
+ | +--rw nrp:unicastFrameDelivery? nrp-types:NRP_ServiceFrameDelivery
+ | +--rw nrp:multicastFrameDelivery? nrp-types:NRP_ServiceFrameDelivery
+ | +--rw nrp:broadcastFrameDelivery? nrp-types:NRP_ServiceFrameDelivery
+ | +--rw nrp:vcMaxServiceFrame? nrp-types:NRP_PositiveInteger
+ | +--rw nrp:vcId? nrp-types:NRP_PositiveInteger
+ +--rw forwardingDirection? onf-cnt:ForwardingDirection
+
+augment /nt:network-topology/nt:topology/nt:node/nt:termination-point:
+
+::
+
+ +--rw ltp-attrs
+ +--rw lpList* [uuid]
+ | +--rw uuid string
+ | +--rw layerProtocolName? onf-cnt:LayerProtocolName
+ | +--rw lpSpec
+ | | +--rw adapterSpec
+ | | | +--rw nrp:nrp-conn-adapt-spec-attrs
+ | | | | +--rw nrp:sourceMacAddressLimit
+ | | | | | +--rw nrp:enabled? boolean
+ | | | | | +--rw nrp:limit? NRP_NaturalNumber
+ | | | | | +--rw nrp:timeInterval? NRP_NaturalNumber
+ | | | | +--rw nrp:CeExternalInterface
+ | | | | | +--rw nrp:physicalLayer? nrp-types:NRP_PhysicalLayer
+ | | | | | +--rw nrp:syncMode* [linkId]
+ | | | | | | +--rw nrp:linkId string
+ | | | | | | +--rw nrp:syncModeEnabled? boolean
+ | | | | | +--rw nrp:numberOfLinks? nrp-types:NRP_NaturalNumber
+ | | | | | +--rw nrp:resiliency? nrp-types:NRP_InterfaceResiliency
+ | | | | | +--rw nrp:portConvsIdToAggLinkMap
+ | | | | | | +--rw nrp:conversationId? NRP_NaturalNumber
+ | | | | | | +--rw nrp:linkId? NRP_NaturalNumber
+ | | | | | +--rw nrp:maxFrameSize? nrp-types:NRP_NaturalNumber
+ | | | | | +--rw nrp:linkOamEnabled? boolean
+ | | | | | +--rw nrp:tokenShareEnabled? boolean
+ | | | | | +--rw nrp:serviceProviderUniId? string
+ | | | | +--rw nrp:coloridentifier
+ | | | | | +--rw (identifier)?
+ | | | | | +--:(sap-color-id)
+ | | | | | | +--rw nrp:serviceAccessPointColorId
+ | | | | | | +--rw nrp:color? nrp-types:NRP_FrameColor
+ | | | | | +--:(pcp-color-id)
+ | | | | | | +--rw nrp:pcpColorId
+ | | | | | | +--rw nrp:vlanTag? nrp-types:NRP_VlanTag
+ | | | | | | +--rw nrp:pcpValue* nrp-types:NRP_NaturalNumber
+ | | | | | | +--rw nrp:color? nrp-types:NRP_FrameColor
+ | | | | | +--:(dei-color-id)
+ | | | | | | +--rw nrp:deiColorId
+ | | | | | | +--rw nrp:vlanTag? nrp-types:NRP_VlanTag
+ | | | | | | +--rw nrp:deiValue* nrp-types:NRP_NaturalNumber
+ | | | | | | +--rw nrp:color? nrp-types:NRP_FrameColor
+ | | | | | +--:(desp-color-id)
+ | | | | | +--rw nrp:despColorId
+ | | | | | +--rw nrp:ipVersion? nrp-types:NRP_IpVersion
+ | | | | | +--rw nrp:dscpValue* nrp-types:NRP_NaturalNumber
+ | | | | | +--rw nrp:color? nrp-types:NRP_FrameColor
+ | | | | +--rw nrp:ingressBwpFlow
+ | | | | | +--rw nrp:bwpFlowIndex? nrp-types:NRP_PositiveInteger
+ | | | | | +--rw nrp:cir? nrp-types:NRP_NaturalNumber
+ | | | | | +--rw nrp:cirMax? nrp-types:NRP_NaturalNumber
+ | | | | | +--rw nrp:cbs? nrp-types:NRP_NaturalNumber
+ | | | | | +--rw nrp:eir? nrp-types:NRP_NaturalNumber
+ | | | | | +--rw nrp:eirMax? nrp-types:NRP_NaturalNumber
+ | | | | | +--rw nrp:ebs? nrp-types:NRP_NaturalNumber
+ | | | | | +--rw nrp:couplingFlag? nrp-types:NRP_NaturalNumber
+ | | | | | +--rw nrp:colorMode? nrp-types:NRP_ColorMode
+ | | | | | +--rw nrp:rank? nrp-types:NRP_PositiveInteger
+ | | | | | +--rw nrp:tokenRequestOffset? nrp-types:NRP_NaturalNumber
+ | | | | +--rw nrp:egressBwpFlow
+ | | | | | +--rw nrp:bwpFlowIndex? nrp-types:NRP_PositiveInteger
+ | | | | | +--rw nrp:cir? nrp-types:NRP_NaturalNumber
+ | | | | | +--rw nrp:cirMax? nrp-types:NRP_NaturalNumber
+ | | | | | +--rw nrp:cbs? nrp-types:NRP_NaturalNumber
+ | | | | | +--rw nrp:eir? nrp-types:NRP_NaturalNumber
+ | | | | | +--rw nrp:eirMax? nrp-types:NRP_NaturalNumber
+ | | | | | +--rw nrp:ebs? nrp-types:NRP_NaturalNumber
+ | | | | | +--rw nrp:couplingFlag? nrp-types:NRP_NaturalNumber
+ | | | | | +--rw nrp:colorMode? nrp-types:NRP_ColorMode
+ | | | | | +--rw nrp:rank? nrp-types:NRP_PositiveInteger
+ | | | | | +--rw nrp:tokenRequestOffset? nrp-types:NRP_NaturalNumber
+ | | | | +--rw nrp:l2cpAddressSet? nrp-types:NRP_L2cpAddressSet
+ | | | | +--rw nrp:l2cpPeering* [linkId]
+ | | | | +--rw nrp:destinationMacAddress? string
+ | | | | +--rw nrp:protocolType? NRP_ProtocolFrameType
+ | | | | +--rw nrp:linkId string
+ | | | | +--rw nrp:protocolId? string
+ | | | +--rw nrp:nrp-ivc-endpoint-conn-adapt-spec-attrs
+ | | | | +--rw nrp:ivcEndPointId? string
+ | | | | +--rw nrp:testMegEnabled? boolean
+ | | | | +--rw nrp:ivcEndPointRole? nrp-types:NRP_EndPointRole
+ | | | | +--rw nrp:ivcEndPointMap* [vlanId]
+ | | | | | +--rw nrp:vlanId nrp-types:NRP_PositiveInteger
+ | | | | | +--rw (endpoint-map-form)?
+ | | | | | +--:(map-form-e)
+ | | | | | | +--rw nrp:enni-svid* [vid]
+ | | | | | | +--rw nrp:vid nrp-types:NRP_PositiveInteger
+ | | | | | +--:(map-form-t)
+ | | | | | | +--rw nrp:root-svid? nrp-types:NRP_PositiveInteger
+ | | | | | | +--rw nrp:leaf-svid? nrp-types:NRP_PositiveInteger
+ | | | | | +--:(map-form-v)
+ | | | | | | +--rw nrp:vuni-vid? nrp-types:NRP_PositiveInteger
+ | | | | | | +--rw nrp:enni-cevid* [vid]
+ | | | | | | +--rw nrp:vid nrp-types:NRP_PositiveInteger
+ | | | | | +--:(map-form-u)
+ | | | | | +--rw nrp:cvid* [vid]
+ | | | | | +--rw nrp:vid nrp-types:NRP_PositiveInteger
+ | | | | +--rw nrp:subscriberMegMipEnabled? boolean
+ | | | +--rw nrp:nrp-evc-endpoint-conn-adapt-spec-attrs
+ | | | +--rw nrp:sourceMacAddressLimit
+ | | | | +--rw nrp:enabled? boolean
+ | | | | +--rw nrp:limit? NRP_NaturalNumber
+ | | | | +--rw nrp:timeInterval? NRP_NaturalNumber
+ | | | +--rw nrp:CeExternalInterface
+ | | | | +--rw nrp:physicalLayer? nrp-types:NRP_PhysicalLayer
+ | | | | +--rw nrp:syncMode* [linkId]
+ | | | | | +--rw nrp:linkId string
+ | | | | | +--rw nrp:syncModeEnabled? boolean
+ | | | | +--rw nrp:numberOfLinks? nrp-types:NRP_NaturalNumber
+ | | | | +--rw nrp:resiliency? nrp-types:NRP_InterfaceResiliency
+ | | | | +--rw nrp:portConvsIdToAggLinkMap
+ | | | | | +--rw nrp:conversationId? NRP_NaturalNumber
+ | | | | | +--rw nrp:linkId? NRP_NaturalNumber
+ | | | | +--rw nrp:maxFrameSize? nrp-types:NRP_NaturalNumber
+ | | | | +--rw nrp:linkOamEnabled? boolean
+ | | | | +--rw nrp:tokenShareEnabled? boolean
+ | | | | +--rw nrp:serviceProviderUniId? string
+ | | | +--rw nrp:coloridentifier
+ | | | | +--rw (identifier)?
+ | | | | +--:(sap-color-id)
+ | | | | | +--rw nrp:serviceAccessPointColorId
+ | | | | | +--rw nrp:color? nrp-types:NRP_FrameColor
+ | | | | +--:(pcp-color-id)
+ | | | | | +--rw nrp:pcpColorId
+ | | | | | +--rw nrp:vlanTag? nrp-types:NRP_VlanTag
+ | | | | | +--rw nrp:pcpValue* nrp-types:NRP_NaturalNumber
+ | | | | | +--rw nrp:color? nrp-types:NRP_FrameColor
+ | | | | +--:(dei-color-id)
+ | | | | | +--rw nrp:deiColorId
+ | | | | | +--rw nrp:vlanTag? nrp-types:NRP_VlanTag
+ | | | | | +--rw nrp:deiValue* nrp-types:NRP_NaturalNumber
+ | | | | | +--rw nrp:color? nrp-types:NRP_FrameColor
+ | | | | +--:(desp-color-id)
+ | | | | +--rw nrp:despColorId
+ | | | | +--rw nrp:ipVersion? nrp-types:NRP_IpVersion
+ | | | | +--rw nrp:dscpValue* nrp-types:NRP_NaturalNumber
+ | | | | +--rw nrp:color? nrp-types:NRP_FrameColor
+ | | | +--rw nrp:ingressBwpFlow
+ | | | | +--rw nrp:bwpFlowIndex? nrp-types:NRP_PositiveInteger
+ | | | | +--rw nrp:cir? nrp-types:NRP_NaturalNumber
+ | | | | +--rw nrp:cirMax? nrp-types:NRP_NaturalNumber
+ | | | | +--rw nrp:cbs? nrp-types:NRP_NaturalNumber
+ | | | | +--rw nrp:eir? nrp-types:NRP_NaturalNumber
+ | | | | +--rw nrp:eirMax? nrp-types:NRP_NaturalNumber
+ | | | | +--rw nrp:ebs? nrp-types:NRP_NaturalNumber
+ | | | | +--rw nrp:couplingFlag? nrp-types:NRP_NaturalNumber
+ | | | | +--rw nrp:colorMode? nrp-types:NRP_ColorMode
+ | | | | +--rw nrp:rank? nrp-types:NRP_PositiveInteger
+ | | | | +--rw nrp:tokenRequestOffset? nrp-types:NRP_NaturalNumber
+ | | | +--rw nrp:egressBwpFlow
+ | | | | +--rw nrp:bwpFlowIndex? nrp-types:NRP_PositiveInteger
+ | | | | +--rw nrp:cir? nrp-types:NRP_NaturalNumber
+ | | | | +--rw nrp:cirMax? nrp-types:NRP_NaturalNumber
+ | | | | +--rw nrp:cbs? nrp-types:NRP_NaturalNumber
+ | | | | +--rw nrp:eir? nrp-types:NRP_NaturalNumber
+ | | | | +--rw nrp:eirMax? nrp-types:NRP_NaturalNumber
+ | | | | +--rw nrp:ebs? nrp-types:NRP_NaturalNumber
+ | | | | +--rw nrp:couplingFlag? nrp-types:NRP_NaturalNumber
+ | | | | +--rw nrp:colorMode? nrp-types:NRP_ColorMode
+ | | | | +--rw nrp:rank? nrp-types:NRP_PositiveInteger
+ | | | | +--rw nrp:tokenRequestOffset? nrp-types:NRP_NaturalNumber
+ | | | +--rw nrp:l2cpAddressSet? nrp-types:NRP_L2cpAddressSet
+ | | | +--rw nrp:l2cpPeering* [linkId]
+ | | | | +--rw nrp:destinationMacAddress? string
+ | | | | +--rw nrp:protocolType? NRP_ProtocolFrameType
+ | | | | +--rw nrp:linkId string
+ | | | | +--rw nrp:protocolId? string
+ | | | +--rw nrp:evcEndPointId? nrp-types:NRP_PositiveInteger
+ | | | +--rw nrp:testMegEnabled? boolean
+ | | | +--rw nrp:evcEndPointRole? nrp-types:NRP_EvcEndPointRole
+ | | | +--rw nrp:evcEndPointMap* [vid]
+ | | | | +--rw nrp:vid nrp-types:NRP_PositiveInteger
+ | | | +--rw nrp:subscriberMegMipEbabled? boolean
+ | | +--rw terminationSpec
+ | | | +--rw nrp:nrp-termination-spec-attrs
+ | | | | +--rw nrp:physicalLayer? nrp-types:NRP_PhysicalLayer
+ | | | | +--rw nrp:syncMode* [linkId]
+ | | | | | +--rw nrp:linkId string
+ | | | | | +--rw nrp:syncModeEnabled? boolean
+ | | | | +--rw nrp:numberOfLinks? nrp-types:NRP_NaturalNumber
+ | | | | +--rw nrp:resiliency? nrp-types:NRP_InterfaceResiliency
+ | | | | +--rw nrp:portConvsIdToAggLinkMap
+ | | | | | +--rw nrp:conversationId? NRP_NaturalNumber
+ | | | | | +--rw nrp:linkId? NRP_NaturalNumber
+ | | | | +--rw nrp:maxFrameSize? nrp-types:NRP_NaturalNumber
+ | | | | +--rw nrp:linkOamEnabled? boolean
+ | | | | +--rw nrp:tokenShareEnabled? boolean
+ | | | | +--rw nrp:serviceProviderUniId? string
+ | | | +--rw nrp:nrp-uni-termination-attrs
+ | | | +--rw nrp:defaultCeVlanId? nrp-types:NRP_PositiveInteger
+ | | | +--rw nrp:uniMegEnabled? boolean
+ | | | +--rw nrp:elmiEnabled? boolean
+ | | | +--rw nrp:serviceprovideruniprofile? string
+ | | | +--rw nrp:operatoruniprofile? string
+ | | | +--rw nrp:ingressBwpUni
+ | | | | +--rw nrp:bwpFlowIndex? nrp-types:NRP_PositiveInteger
+ | | | | +--rw nrp:cir? nrp-types:NRP_NaturalNumber
+ | | | | +--rw nrp:cirMax? nrp-types:NRP_NaturalNumber
+ | | | | +--rw nrp:cbs? nrp-types:NRP_NaturalNumber
+ | | | | +--rw nrp:eir? nrp-types:NRP_NaturalNumber
+ | | | | +--rw nrp:eirMax? nrp-types:NRP_NaturalNumber
+ | | | | +--rw nrp:ebs? nrp-types:NRP_NaturalNumber
+ | | | | +--rw nrp:couplingFlag? nrp-types:NRP_NaturalNumber
+ | | | | +--rw nrp:colorMode? nrp-types:NRP_ColorMode
+ | | | | +--rw nrp:rank? nrp-types:NRP_PositiveInteger
+ | | | | +--rw nrp:tokenRequestOffset? nrp-types:NRP_NaturalNumber
+ | | | +--rw nrp:egressBwpUni
+ | | | +--rw nrp:bwpFlowIndex? nrp-types:NRP_PositiveInteger
+ | | | +--rw nrp:cir? nrp-types:NRP_NaturalNumber
+ | | | +--rw nrp:cirMax? nrp-types:NRP_NaturalNumber
+ | | | +--rw nrp:cbs? nrp-types:NRP_NaturalNumber
+ | | | +--rw nrp:eir? nrp-types:NRP_NaturalNumber
+ | | | +--rw nrp:eirMax? nrp-types:NRP_NaturalNumber
+ | | | +--rw nrp:ebs? nrp-types:NRP_NaturalNumber
+ | | | +--rw nrp:couplingFlag? nrp-types:NRP_NaturalNumber
+ | | | +--rw nrp:colorMode? nrp-types:NRP_ColorMode
+ | | | +--rw nrp:rank? nrp-types:NRP_PositiveInteger
+ | | | +--rw nrp:tokenRequestOffset? nrp-types:NRP_NaturalNumber
+ | | +--rw adapterPropertySpecList* [uuid]
+ | | | +--rw uuid string
+ | | +--rw providerViewSpec
+ | | +--rw serverSpecList* [uuid]
+ | | +--rw uuid string
+ | +--rw configuredClientCapacity? string
+ | +--rw lpDirection? onf-cnt:TerminationDirection
+ | +--rw terminationState? string
+ +--rw ltpSpec
+ +--rw ltpDirection? onf-cnt:TerminationDirection