diff --git a/experimental/ietf-extracted-YANG-modules/ietf-actn-vn@2017-10-23.yang b/experimental/ietf-extracted-YANG-modules/ietf-actn-vn@2017-10-23.yang deleted file mode 100644 index 39f42f6ac..000000000 --- a/experimental/ietf-extracted-YANG-modules/ietf-actn-vn@2017-10-23.yang +++ /dev/null @@ -1,570 +0,0 @@ -module ietf-actn-vn { - - namespace "urn:ietf:params:xml:ns:yang:ietf-actn-vn"; - - prefix "vn"; - - /* Import TE generic types */ - import ietf-te-types { - prefix "te-types"; - } - - import ietf-te { - prefix "te"; - } - - import ietf-pcep { - prefix "pcep"; - } - - organization - "IETF Traffic Engineering Architecture and Signaling (TEAS) - Working Group"; - - contact - "Editor: Young Lee - : Dhruv Dhody "; - - description - "This module contains a YANG module for the ACTN VN. It - describes a VN operation module that takes place in the - context of the CNC-MDSC Interface (CMI) of the ACTN - architecture where the CNC is the actor of a VN Instantiation - /modification /deletion."; - revision 2017-10-23 { - description - "initial version."; - reference - "TBD"; - } - - /* - * Features - */ - - feature multi-src-dest { - description - "Support for selection of one src or destination - among multiple."; - } - - feature type-2 { - description - "Support for Type 2 VNS based on the abstract VN - Topology."; - } - - identity path-metric-delay { - base te-types:path-metric-type; - description - "delay path metric"; - } - - identity path-metric-delay-variation { - base te-types:path-metric-type; - description - "delay-variation path metric"; - } - - identity path-metric-loss { - base te-types:path-metric-type; - description - "loss path metric"; - } - - identity vn-state-type { - description - "Base identity for VN state"; - } - - identity vn-state-up { - base vn-state-type; - description "VN state up"; - } - - identity vn-state-down { - base vn-state-type; - description "VN state down"; - } - - identity vn-admin-state-type { - description - "Base identity for VN admin states"; - } - - identity vn-admin-state-up { - base vn-admin-state-type; - description "VN administratively state up"; - } - - identity vn-admin-state-down { - base vn-admin-state-type; - description "VN administratively state down"; - } - - identity vn-compute-state-type { - description - "Base identity for compute states"; - } - - identity vn-compute-state-computing { - base vn-compute-state-type; - description - "State path compute in progress"; - } - - identity vn-compute-state-computation-ok { - base vn-compute-state-type; - description - "State path compute successful"; - } - - identity vn-compute-state-computatione-failed { - base vn-compute-state-type; - description - "State path compute failed"; - } - - /* - * Groupings - */ - grouping vn-ap { - description - "VNAP related information"; - leaf vn-ap-id { - type uint32; - description - "unique identifier for the referred - VNAP"; - } - leaf vn { - type leafref { - path "/actn/vn/vn-list/vn-id"; - } - description - "reference to the VN"; - } - } - - grouping access-point{ - description - "AP related information"; - leaf access-point-id { - type uint32; - description - "unique identifier for the referred - access point"; - } - leaf access-point-name { - type string; - description - "ap name"; - } - /*using direct tp-id for now as per ietf-te - should check if reference is better*/ - leaf src-tp-id { - type binary; - description - "TE tunnel source termination point identifier."; - } - leaf dst-tp-id { - type binary; - description - "TE tunnel destination termination point identifier."; - } - leaf max-bandwidth { - type te-types:te-bandwidth; - description - "max bandwidth of the AP"; - } - leaf avl-bandwidth { - type te-types:te-bandwidth; - description - "available bandwidth of the AP"; - } - /*add details and any other properties of AP, - not associated by a VN - CE port, PE port etc. - - */ - - list vn-ap { - key vn-ap-id; - uses vn-ap; - description - "list of VNAP in this AP"; - } - - }//access-point - - grouping vn-member { - description - "vn-member is described by this container"; - leaf vn-member-id { - type uint32; - description - "vn-member identifier"; - } - container src - { - description - "the source of VN Member"; - leaf src { - type leafref { - path "/actn/ap/access-point-list/access-point-id"; - } - description - "reference to source AP"; - } - leaf src-vn-ap-id{ - type leafref { - path "/actn/ap/access-point-list/vn-ap/vn-ap-id"; - } - description - "reference to source VNAP"; - } - leaf multi-src { - if-feature multi-src-dest; - type boolean; - description - "Is source part of multi-source, where - only one of the source is enabled"; - } - } - container dest - { - description - "the destination of VN Member"; - leaf dest { - type leafref { - path "/actn/ap/access-point-list/access-point-id"; - } - description - "reference to destination AP"; - } - leaf dest-vn-ap-id{ - type leafref { - path "/actn/ap/access-point-list/vn-ap/vn-ap-id"; - } - description - "reference to dest VNAP"; - } - leaf multi-dest { - if-feature multi-src-dest; - type boolean; - description - "Is destination part of multi-destination, where - only one of the destination is enabled"; - } - } - container path - { - if-feature type-2; - description - "the path if set by the customer"; - list path-element { - key "path-element-id"; - description - "A list of path elements describing the service path."; - leaf path-element-id { - type uint32; - description "To identify the element in a path."; - } - leaf index { - type uint32; - description "ERO subobject index"; - } - leaf address { - type te-types:te-tp-id; - description - "Numbered link TE termination point address. - Should refer to the abstract TE topology - of this VN"; - } - leaf hop-type { - type te-types:te-hop-type; - description - "strict or loose hop"; - } - } - } - }//vn-member - - grouping policy { - description - "policy related to vn-member-id"; - leaf local-reroute { - type boolean; - description - "Policy to state if reroute - can be done locally"; - } - leaf push-allowed { - type boolean; - description - "Policy to state if changes - can be pushed to the customer"; - } - leaf incremental-update { - type boolean; - description - "Policy to allow only the - changes to be reported"; - } - }//policy - - grouping metrics-op { - description - "metric related information"; - list metric{ - key "metric-type"; - config false; - description - "The list of metrics for VN"; - leaf metric-type { - type identityref { - base te-types:path-metric-type; - } - description - "The VN metric type."; - } - leaf value{ - type uint32; - description - "The limit value"; - } - } - - } - - grouping metrics { - description - "metric related information"; - list metric{ - key "metric-type"; - description - "The list of metrics for VN"; - leaf metric-type { - type identityref { - base te-types:path-metric-type; - } - description - "The VN metric type."; - } - container limit { - description - "Limiting contraints"; - leaf enabled{ - type boolean; - description - "Limit contraint is enabled"; - } - leaf value{ - type uint32; - description - "The limit value"; - } - } - container optimize{ - description - "optimizing constraints"; - leaf enabled{ - type boolean; - description - "Metric to optimize"; - } - leaf value{ - type uint32; - description - "The computed value"; - } - } - } - - } - - grouping service-metric { - description - "service-metric"; - leaf objective-function { - type pcep:objective-function; - description - "operational state of the objective function"; - } - - uses metrics; - - leaf bandwidth { - type te-types:te-bandwidth; - description - "bandwidth requested/required for - vn-member-id"; - } - - leaf protection { - type identityref { - base te-types:lsp-protection-type; - } - description "protection type."; - } - - uses policy; - - }//service-metric - - /* - * Configuration data nodes - */ - container actn { - description - "actn is described by this container"; - container ap { - description - "AP configurations"; - list access-point-list { - key "access-point-id"; - description - "access-point identifier"; - uses access-point{ - description - "access-point information"; - } - } - } - container vn { - description - "VN configurations"; - - list vn-list { - key "vn-id"; - description - "a virtual network is identified by a vn-id"; - leaf vn-id { - type uint32; - description - "a unique vn identifier"; - } - leaf vn-name { - type string; - description "vn name"; - } - leaf vn-topology-id{ - if-feature type-2; - type te-types:te-topology-id; - description - "An optional identifier to the TE Topology - Model where the abstract nodes and links - of the Topology can be found for Type 2 - VNS"; - - } - list vn-member-list{ - key "vn-member-id"; - description - "List of VN-members in a VN"; - uses vn-member; - uses metrics-op; - leaf oper-status { - type identityref { - base vn-state-type; - } - config false; - description - - "VN-member operational state."; - } - leaf tunnel-ref { - type te:tunnel-ref; - config false; - description - "A reference to the TE tunnel - in the TE model"; - } - } - container multi-src-dest{ - if-feature multi-src-dest; - config false; - description - "The selected VN Member when multi-src - and/or mult-destination is enabled."; - leaf selected-vn-member{ - type leafref { - path "/actn/vn/vn-list/vn-member-list/vn-member-id"; - } - description - "The selected VN Member along the set - of source and destination configured - with multi-source and/or multi-destination"; - } - } - - uses service-metric; - - leaf admin-status { - type identityref { - base vn-admin-state-type; - } - default vn-admin-state-up; - description "VN administrative state."; - } - leaf oper-status { - type identityref { - base vn-state-type; - } - config false; - description "VN operational state."; - } - - }//vn-list - }//vn - }//actn - - /* - * Notifications - TBD - */ - /* - * RPC - */ - rpc vn-compute{ - description - "The VN computation without actual - instantiation"; - input { - list vn-member-list{ - key "vn-member-id"; - description - "List of VN-members in a VN"; - uses vn-member; - } - uses service-metric; - } - output { - list vn-member-list{ - key "vn-member-id"; - description - "List of VN-members in a VN"; - uses vn-member; - uses metrics-op; - leaf compute-status { - type identityref { - base vn-compute-state-type; - } - description - "VN-member compute state."; - } - } - container multi-src-dest{ - if-feature multi-src-dest; - description - "The selected VN Member when multi-src - and/or mult-destination is enabled."; - leaf selected-vn-member-id{ - type uint32; - description - "The selected VN Member-id from the - input"; - } - } - } - } -} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-actn-vn@2018-01-30.yang b/experimental/ietf-extracted-YANG-modules/ietf-actn-vn@2018-01-30.yang new file mode 100644 index 000000000..fdc169aab --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-actn-vn@2018-01-30.yang @@ -0,0 +1,511 @@ +module ietf-actn-vn { + namespace "urn:ietf:params:xml:ns:yang:ietf-actn-vn"; + prefix "vn"; + + /* Import network */ + import ietf-network { + prefix "nw"; + } + + /* Import TE generic types */ + import ietf-te-types { + prefix "te-types"; + } + + /* Import Abstract TE Topology */ + import ietf-te-topology { + prefix "tet"; + } + + organization + "IETF Traffic Engineering Architecture and Signaling (TEAS) + Working Group"; + contact + "Editor: Young Lee + : Dhruv Dhody "; + description + "This module contains a YANG module for the ACTN VN. It + describes a VN operation module that takes place in the + context of the CNC-MDSC Interface (CMI) of the ACTN + architecture where the CNC is the actor of a VN Instantiation + /modification /deletion."; + revision 2018-01-30 { + description + "initial version."; + reference + "TBD"; + } + /* + * Features + */ + feature multi-src-dest { + description + "Support for selection of one src or destination + among multiple."; + } + + /*identity path-metric-delay { + base te-types:path-metric-type; + description + "delay path metric"; + } + identity path-metric-delay-variation { + base te-types:path-metric-type; + description + "delay-variation path metric"; + } + identity path-metric-loss { + base te-types:path-metric-type; + description + "loss path metric"; + }*/ + + identity vn-state-type { + description + "Base identity for VN state"; + } + identity vn-state-up { + base vn-state-type; + description "VN state up"; + } + identity vn-state-down { + base vn-state-type; + description "VN state down"; + } + identity vn-admin-state-type { + description + "Base identity for VN admin states"; + } + identity vn-admin-state-up { + base vn-admin-state-type; + description "VN administratively state up"; + } + identity vn-admin-state-down { + base vn-admin-state-type; + description "VN administratively state down"; + } + identity vn-compute-state-type { + description + "Base identity for compute states"; + } + identity vn-compute-state-computing { + base vn-compute-state-type; + description + "State path compute in progress"; + } + identity vn-compute-state-computation-ok { + base vn-compute-state-type; + description + "State path compute successful"; + } + identity vn-compute-state-computatione-failed { + base vn-compute-state-type; + description + "State path compute failed"; + } + /* + * Groupings + */ + grouping vn-ap { + description + "VNAP related information"; + leaf vn-ap-id { + type uint32; + description + "unique identifier for the referred + VNAP"; + } + leaf vn { + type leafref { + path "/actn/vn/vn-list/vn-id"; + } + description + "reference to the VN"; + } + leaf abstract-node { + type leafref { + path "/nw:networks/nw:network/nw:node/" + + "nw:node-id"; + } + description + "a reference to the abstract node in TE + Topology"; + } + leaf ltp { + type te-types:te-tp-id; + description + "Reference LTP in the TE-topology"; + } + } + grouping access-point{ + description + "AP related information"; + leaf access-point-id { + type uint32; + description + "unique identifier for the referred + access point"; + } + leaf access-point-name { + type string; + description + "ap name"; + } + + leaf max-bandwidth { + type te-types:te-bandwidth; + description + "max bandwidth of the AP"; + } + leaf avl-bandwidth { + type te-types:te-bandwidth; + description + "available bandwidth of the AP"; + } + /*add details and any other properties of AP, + not associated by a VN + CE port, PE port etc. + */ + list vn-ap { + key vn-ap-id; + uses vn-ap; + description + "list of VNAP in this AP"; + } + }//access-point + grouping vn-member { + description + "vn-member is described by this container"; + leaf vn-member-id { + type uint32; + description + "vn-member identifier"; + } + container src + { + description + "the source of VN Member"; + leaf src { + type leafref { + path "/actn/ap/access-point-list/access-point-id"; + } + description + "reference to source AP"; + } + leaf src-vn-ap-id{ + type leafref { + path "/actn/ap/access-point-list/vn-ap/vn-ap-id"; + } + description + "reference to source VNAP"; + } + leaf multi-src { + if-feature multi-src-dest; + type boolean; + description + "Is source part of multi-source, where + only one of the source is enabled"; + } + } + container dest + { + description + "the destination of VN Member"; + leaf dest { + type leafref { + path "/actn/ap/access-point-list/access-point-id"; + } + description + "reference to destination AP"; + } + leaf dest-vn-ap-id{ + type leafref { + path "/actn/ap/access-point-list/vn-ap/vn-ap-id"; + } + description + "reference to dest VNAP"; + } + leaf multi-dest { + if-feature multi-src-dest; + type boolean; + description + "Is destination part of multi-destination, where + only one of the destination is enabled"; + } + } + leaf connetivity-matrix-id{ + type leafref { + path "/nw:networks/nw:network/nw:node/tet:te/" + + "tet:te-node-attributes/tet:connectivity- +matrices/tet:connectivity-matrix/tet:id"; + } + description + "reference to connetivity-matrix"; + } + }//vn-member + /* + grouping policy { + description + "policy related to vn-member-id"; + leaf local-reroute { + type boolean; + description + "Policy to state if reroute + can be done locally"; + } + leaf push-allowed { + type boolean; + description + "Policy to state if changes + can be pushed to the customer"; + } + leaf incremental-update { + type boolean; + description + "Policy to allow only the + changes to be reported"; + } + }//policy + */ + /* + grouping metrics-op { + description + "metric related information"; + list metric{ + key "metric-type"; + config false; + description + "The list of metrics for VN"; + leaf metric-type { + type identityref { + base te-types:path-metric-type; + } + description + "The VN metric type."; + } + leaf value{ + type uint32; + description + "The limit value"; + } + } + } + */ + /* + grouping metrics { + description + "metric related information"; + list metric{ + key "metric-type"; + description + "The list of metrics for VN"; + uses te:path-metrics-bounds_config; + container optimize{ + description + "optimizing constraints"; + leaf enabled{ + type boolean; + description + "Metric to optimize"; + } + leaf value{ + type uint32; + description + "The computed value"; + } + } + } + } + */ + /* + grouping service-metric { + description + "service-metric"; + uses te:path-objective-function_config; + uses metrics; + uses te-types:common-constraints_config; + uses te:protection-restoration-params_config; + uses policy; + }//service-metric + */ + /* + * Configuration data nodes + */ + container actn { + description + "actn is described by this container"; + container ap { + description + "AP configurations"; + list access-point-list { + key "access-point-id"; + description + "access-point identifier"; + uses access-point{ + description + "access-point information"; + } + } + } + container vn { + description + "VN configurations"; + list vn-list { + key "vn-id"; + description + "a virtual network is identified by a vn-id"; + leaf vn-id { + type uint32; + description + "a unique vn identifier"; + } + leaf vn-name { + type string; + description "vn name"; + } + leaf vn-topology-id{ + type te-types:te-topology-id; + description + "An optional identifier to the TE Topology + Model where the abstract nodes and links + of the Topology can be found for Type 2 + VNS"; + } + leaf abstract-node { + type leafref { + path "/nw:networks/nw:network/nw:node/" + + "nw:node-id"; + } + description + "a reference to the abstract node in TE + Topology"; + } + list vn-member-list{ + key "vn-member-id"; + description + "List of VN-members in a VN"; + uses vn-member; + /*uses metrics-op;*/ + leaf oper-status { + type identityref { + base vn-state-type; + } + config false; + description + "VN-member operational state."; + } + + } + leaf if-selected{ + if-feature multi-src-dest; + type boolean; + default false; + config false; + description + "Is the vn-member is selected among the + multi-src/dest options"; + } + /* + container multi-src-dest{ + if-feature multi-src-dest; + config false; + description + "The selected VN Member when multi-src + and/or mult-destination is enabled."; + leaf selected-vn-member{ + type leafref { + path "/actn/vn/vn-list/vn-member-list/vn-member- +id"; + } + description + "The selected VN Member along the set + of source and destination configured + with multi-source and/or multi-destination"; + } + } + */ + /*uses service-metric;*/ + leaf admin-status { + type identityref { + base vn-admin-state-type; + } + default vn-admin-state-up; + description "VN administrative state."; + } + leaf oper-status { + type identityref { + base vn-state-type; + } + config false; + description "VN operational state."; + } + }//vn-list + }//vn + }//actn + /* + * Notifications - TBD + */ + /* + * RPC + */ + rpc vn-compute{ + description + "The VN computation without actual + instantiation"; + input { + leaf abstract-node { + type leafref { + path "/nw:networks/nw:network/nw:node/" + + "nw:node-id"; + } + description + "a reference to the abstract node in TE + Topology"; + } + list vn-member-list{ + key "vn-member-id"; + description + "List of VN-members in a VN"; + uses vn-member; + } + /*uses service-metric;*/ + } + output { + list vn-member-list{ + key "vn-member-id"; + description + "List of VN-members in a VN"; + uses vn-member; + leaf if-selected{ + if-feature multi-src-dest; + type boolean; + default false; + description + "Is the vn-member is selected among the + multi-src/dest options"; + } + /*uses metrics-op;*/ + leaf compute-status { + type identityref { + base vn-compute-state-type; + } + description + "VN-member compute state."; + } + } + /* + container multi-src-dest{ + if-feature multi-src-dest; + description + "The selected VN Member when multi-src + and/or mult-destination is enabled."; + leaf selected-vn-member-id{ + type uint32; + description + "The selected VN Member-id from the + input"; + } + }*/ + } + } +} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-connection-oriented-oam@2018-02-07.yang b/experimental/ietf-extracted-YANG-modules/ietf-connection-oriented-oam@2018-02-07.yang index a8684fdb3..5ba8ca8a3 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-connection-oriented-oam@2018-02-07.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-connection-oriented-oam@2018-02-07.yang @@ -33,8 +33,10 @@ module ietf-connection-oriented-oam { revision 2018-02-07 { description - "Initial revision. - 12 version"; - reference "draft-ietf-lime-yang-oam-model"; + "Initial revision."; + reference + "RFC xxxx: Generic YANG Data Model for Connection + Oriented OAM protocols"; } feature connectivity-verification { @@ -75,7 +77,7 @@ module ietf-connection-oriented-oam { identity technology-types { description - "This is the base identy of technology types which are + "This is the base identity of technology types which are TRILL, MPLS-TP, etc"; } @@ -83,6 +85,10 @@ module ietf-connection-oriented-oam { description "Defines different rpc command subtypes, e.g rfc6905 trill OAM, this is optional for most cases"; + reference + "RFC 6905: Requirements for OAM in Transparent + Interconnection of Lots of Links (TRILL)"; + } identity on-demand { @@ -91,6 +97,9 @@ module ietf-connection-oriented-oam { "On demand activation - indicates that the tool is activated manually to detect a specific anomaly. On-demand OAM method requires only transient configuration."; + reference + "RFC 7276: An Overview of Operations, Administration, and + Maintenance (OAM) Tools"; } identity proactive { @@ -101,6 +110,9 @@ module ietf-connection-oriented-oam { are detected when a certain number of expected messages are not received. Proactive OAM method requires persistent configuration."; + reference + "RFC 7276: An Overview of Operations, Administration, and + Maintenance (OAM) Tools"; } identity name-format { @@ -171,6 +183,9 @@ module ietf-connection-oriented-oam { Check and Connectivity Verification (CC-V) messages to include unique identification of the MEG that is being monitored and the MEP that originated the message."; + reference + "RFC 6371: Operations, Administration, and Maintenance + Framework for MPLS-Based Transport Networks"; } identity invalid-oam-defect { @@ -204,6 +219,7 @@ module ietf-connection-oriented-oam { units "milliseconds"; description "Time interval between packets in milliseconds. + Time interval should not be less than 0. 0 means no packets are sent."; } @@ -216,7 +232,7 @@ module ietf-connection-oriented-oam { typedef ma-name-string { type string; description - "Generic administrative name for an + "Generic administrative name for a Maintenance Association (MA)."; } @@ -285,7 +301,6 @@ module ietf-connection-oriented-oam { association End Point."; } } - grouping time-to-live { leaf ttl { type uint8; @@ -326,6 +341,7 @@ module ietf-connection-oriented-oam { grouping mep-address { choice mep-address { + default ip-address; case mac-address { leaf mac-address { type yang:mac-address; @@ -353,6 +369,7 @@ module ietf-connection-oriented-oam { grouping mip-address { choice mip-address { + default ip-address; case mac-address { leaf mac-address { type yang:mac-address; @@ -428,7 +445,6 @@ module ietf-connection-oriented-oam { description "Maintenance Domain (MD) name."; } - grouping ma-identifier { description "Grouping containing leaves sufficient to identify @@ -964,7 +980,7 @@ module ietf-connection-oriented-oam { description "Generates Traceroute or Path Trace and return response. Referencing RFC7276 for common Toolset name, for - MPLS-TP OAM it's Route Tracing, and for TRILL OAM It's + MPLS-TP OAM, it's Route Tracing, and for TRILL OAM, it's Path Tracing tool. Starts with TTL of one and increment by one at each hop. Untill destination reached or TTL reach max value."; diff --git a/experimental/ietf-extracted-YANG-modules/ietf-gnca@2018-02-20.yang b/experimental/ietf-extracted-YANG-modules/ietf-gnca@2018-02-20.yang new file mode 100644 index 000000000..b0b8b62ba --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-gnca@2018-02-20.yang @@ -0,0 +1,722 @@ +module ietf-gnca { + yang-version 1.1; + namespace "urn:ietf:params:xml:ns:yang:ietf-gnca"; + + prefix "gnca"; + + import ietf-yang-types { + prefix "yang"; + } + organization + "IETF Network Configuration (NETCONF) Working Group"; + + contact + "WG Web: + WG List: + + Editor: Igor Bryskin + + + Editor: Xufeng Liu + + + Editor: Alexander Clemm + "; + + description + "Event Condition Action (ECA) model."; + + revision 2018-02-20 { + description "Initial revision"; + reference "RFC XXXX"; + } + + /* + * Typedefs + */ + identity argument-type { + description + "Possible values are: + constant, variable, or datastore state."; + } + + identity comparison-type { + description + "Possible values are: + equal, not-equal, greater, greater-equal, less, less-equal."; + } + + identity logical-operation-type { + description + "Possible values are: + not, or, and."; + } + + identity function-type { + description + "Possible values are: + plus, minus, mult, divide, remain."; + } + + identity content-moving-operation-type { + description + "Possible values are: + copy, iterate, insert."; + } + + identity action-type { + description + "Possible values are: + action, content-move, function-call, rpc, notify."; + } + + identity policy-variable-type { + description + "Possible values are: + boolean, int32, int64, uint32, uint64, string, etc."; + } + + /* + * Groupings + */ + grouping policy-variable-attributes { + description + "Defining the policy variable attributes, including name, type + and value. These attributes are used as part of the Policy + Variable (PV) definition."; + leaf name { + type string; + description + "A string to uniquely identify a Policy Variable (PV), either + globally for a global PV, or within the soope of ECA for a + local PV."; + } + choice type-choice { + description + "The type of a policy variable may be either a common + primative type like boolean or a type from existing + schema node referenced by an XPath string."; + case common { + leaf type { + type identityref { + base policy-variable-type; + } + description + "A common policy variable type, defined as an + identity."; + } + } + case xpath { + leaf xpath { + type string; + description + "A XPath string, referencing a schema node, whose + type is used as the type of the policy variable"; + } + } + } + anydata value { + description + "The value of the policy variable, in a format that is + determined by the policy type."; + } + } // policy-variable-attributes + + grouping policy-argument { + description + "Defining a policy argument, which can be used in a comparison + or an action."; + container policy-argument { + description + "Containing the attributes of a policy argument."; + leaf type { + type identityref { + base argument-type; + } + description + "Identifies the argument type."; + } + choice argument-choice { + description + "Argument formation options, depending on the policy + type."; + case policy-constant { + leaf constant { + type string; + description + "The constant value of the policy argument."; + } + } + case policy-variable { + leaf policy-variable { + type leafref { + path "/gnca/policy-variables/" + + "policy-variable/name"; + } + description + "A reference to a global policy variable, which + is shared by all ECA scripts."; + } + } + case local-policy-variable { + leaf local-policy-variable { + type leafref { + path "/gnca/ecas/eca/policy-variable/name"; + } + description + "A reference to a local policy variable, which + is kept within an ECA instance, and appears/ + disappears with start/stop of the ECA execution."; + } + } + case xpath { + leaf xpath { + type string; + description + "An XPath string, referencing the data in the + datastore."; + } + } + } + } + } // policy-argument + + grouping action-element-attributes { + description + "Grouping of action element attributes."; + leaf action-type { + type identityref { + base action-type; + } + description + "Identifies the action type."; + } + choice action-operation { + description + "The operation choices that an ECA Action can take."; + case action { + leaf action-name { + type leafref { + path "/gnca/actions/action/name"; + } + description + "The operation is to execute a configured ECA Action."; + } + } // action + case content-moving { + container content-moving { + description + "The operation is to move contents between two policy + arguments."; + leaf content-moving-type { + type identityref { + base content-moving-operation-type; + } + description + "The type of moving operation, which can be copy, + iterate (copy a list of elements one by one), or + insert."; + } + container src { + description + "The source policy argment."; + uses policy-argument; + } + container dst { + description + "The destination policy argument."; + uses policy-argument; + } + } + } // content-moving + case function-call { + container function-call { + description + "The operation is to call a function, which is of one of + a few basic predefined types, such as plus, minus, + multiply, devide, or remainder."; + leaf function-type { + type identityref { + base function-type; + } + description + "One of the predefined basic function types, such as + plus, minus, multiply, devide, or remainder."; + } + container src { + description + "The source policy argument."; + uses policy-argument; + } + container dst { + description + "The distination policy argument."; + uses policy-argument; + } + } + } // function-call + case rpc-operation { + container rpc-operation { + description + "The operation is to call an RPC, which is defined by + a YANG module supported by the server."; + leaf name { + type string; + description + "The name of the YANG RPC or YANG action to be + called."; + } + leaf nc-action-xpath { + type string; + description + "The location where the YANG action is defined. + This is used if and only if a YANG action is called. + This leaf is not set when a YANG RPC is called."; + } + list policy-variable { + key name; + description + "A list of policy arguments used as the input or output + parameters passed to the RPC."; + leaf name { + type string; + description + "A string name used as the list key to form a list + of policy arguments."; + } + uses policy-argument; + } + } + } // rpc-operation + case notify-operation { + container notify-operation { + description + "The operation is to send a YANG notification."; + leaf name { + type string; + description + "Name of the subscribed YANG notification."; + } + list policy-variable { + key name; + description + "A list of policy arguments carried in the notification + message."; + leaf name { + type string; + description + "A string name used as the list key to form a list + of policy arguments."; + } + uses policy-argument; + } + } + } // notify-operation + } + } // action-element-attributes + + /* + * Data nodes + */ + container gnca { + description + "Top level container for Generalized Network Control Automation + (GNCA)."; + + // policy-variables + container policy-variables { + description + "Container of global Policy Variables (PVs)."; + list policy-variable { + key name; + description + "A list of global Policy Variables (PVs), with a string + name as the entry key."; + uses policy-variable-attributes; + } + } // policy-variables + + container conditions { + description + "Container of ECA Conditions."; + list condition { + key name; + description + "A list of ECA Conditions."; + leaf name { + type string; + description + "A string name to uniquely identify an ECA Condition + globally."; + } + leaf logical-operation-type { + type identityref { + base logical-operation-type; + } + description + "The logical operation type used to combine the results + from the list comparison-operation and the list + sub-condition, defined below."; + } + list comparison-operation { + key name; + description + "A list of comparison oprations, each of them defines a + comparison in the form of , + where and are policy arguments, while + is the comparison-type, which can be + ==, !=, >, <, >=, <="; + leaf name { + type string; + description + "A string name to uniquely identify a comparison + operation."; + } + leaf comparision-type { + type identityref { + base comparison-type; + } + description + "The comparison operation applied to the two arguments + arg1 and arg2 defined blow."; + } + container arg1 { + description + "The policy argument used as the first parameter of + the comparison opration. + A policy argument represents either a constant, PV or + data store value pointed by XPath."; + uses policy-argument; + } + container arg2 { + description + "The policy argument used as the secone parameter of + the comparison opration. + A policy argument represents either a constant, PV or + data store value pointed by XPath."; + uses policy-argument; + } + } + list sub-condition { + key name; + description + "A list of sub conditions applied by the + logical-operation-type. This list of sub conditions + provides the capability of hierarchically combining + conditions."; + leaf name { + type leafref { + path "/gnca/conditions/condition/name"; + } + description + "A reference to a defined condition, which is used + as a sub-condition for the logical operation at this + hierarchy level."; + } + } // sub-condition + } // condition + } // conditions + + container actions { + description + "Container of ECA Actions."; + list action { + key name; + description + "A list of ECA Actions."; + leaf name { + type string; + description + "A string name to uniquely identify an ECA Action + globally."; + } + + list action-element { + key name; + description + "A list of elements contained in an ECA Action. "; + leaf name { + type string; + description + "A string name to uniquely identify the action element + within the scope of an ECA action."; + } + uses action-element-attributes; + } + + container time-schedule { + description + "Specifying the time schedule to execute this ECA + Action. + If not specified, the ECA Action is executed immediately + when it is called."; + leaf start { + type yang:date-and-time; + description + "The start time of the ECA Action. + If not specified, the ECA Action is executed + immediately when it is called."; + } + leaf repeat-interval { + type string { + pattern + '(R\d*/)?P(\d+Y)?(\d+M)?(\d+W)?(\d+D)?T(\d+H)?' + + '(\d+M)?(\d+S)?'; + } + description + "The repeat interval to execute this ECA Action. + The repeat interval is a string in ISO 8601 format, + representing a delay duration or a repeated delay + duration. + If not specified, the ECA Action is executed without + delay and without repetition."; + } + } // time-schedule + } + } // actions + + container ecas { + description + "Container of ECAs."; + list eca { + key name; + description + "A lis of ECAs"; + leaf name { + type string; + description + "A string name to uniquely identify an ECA globally."; + } + leaf event-name { + type string; + mandatory true; + description + "The name of an event that triggers the execution of + this ECA."; + } + + list policy-variable { + key name; + description + "A list of ECA local Policy Variables (PVs), with a + string name as the entry key."; + uses policy-variable-attributes; + leaf is-static { + type boolean; + description + "'true' if the PV is static; 'false' if the PV is + dynamic. + A dynamic PV appears/disappears with the start/stop + of the ECA execution; a static PV exists as long as + the ECA is configured."; + } + } + + list condition-action { + key name; + description + "A list of Condition-Actions, which are configured + conditions each with associated actions to be executed + if the condition is evaluated to TRUE"; + leaf name { + type string; + description + "A string name uniquely identify a Condition-Action + within this ECA."; + } + leaf condition { + type leafref { + path "/gnca/conditions/condition/name"; + } + description + "The reference to a configured condition."; + } + leaf action { + type leafref { + path "/gnca/actions/action/name"; + } + description + "The reference to a configured action."; + } + } // condition-action + + list cleanup-condition-action { + key name; + description + "A list of Condition-Actions, which are configured + conditions each with associated actions to be executed + if the condition is evaluated to TRUE. + This is the exception handler of this ECA, and is + evaluated and executed in case any Action from the + normal Condition-Action list was attempted and rejected + by the server."; + leaf name { + type string; + description + "A string name uniquely identify a Condition-Action + within this ECA."; + } + leaf condition { + type leafref { + path "/gnca/conditions/condition/name"; + } + description + "The reference to a configured condition."; + } + leaf action { + type leafref { + path "/gnca/actions/action/name"; + } + description + "The reference to a configured action."; + } + } // cleanup-condition-action + + action start { + description + "Start to execute this ECA."; + } + action stop { + description + "Stop the execution of this ECA."; + } + action pause { + description + "Pause the execution of this ECA."; + } + action resume { + description + "Resume the execution of this ECA."; + } + action next-action { + description + "Resume the execution of this ECA to complete the next + action."; + } + list execution { + key id; + config false; + description + "A list of executions that this ECA has completed, + are currently running, and will start in the scheduled + future."; + leaf id { + type uint32; + description + "The ID to uniquely identify an execution of the ECA."; + } + leaf oper-status { + type enumeration { + enum completed { + description "Completed with no error."; + } + enum running { + description "Currently with no error."; + } + enum sleeping { + description "Sleeping because of time schedule."; + } + enum paused { + description "Paused by the operator."; + } + enum stoped { + description "Stopped by the operator."; + } + enum failed { + description "Failed with errors."; + } + enum error-handling { + description + "Asking the operator to handle an error."; + } + } + description + "The running status of the execution."; + } + leaf start-time { + type yang:date-and-time; + description + "The time when the ECA started."; + } + leaf stop-time { + type yang:date-and-time; + description + "The time when the ECA completed or stopped."; + } + leaf next-scheduled-time { + type yang:date-and-time; + description + "The next time when the ECA is scheduled to resume."; + } + leaf last-condition-action { + type leafref { + path "../../condition-action/name"; + } + description + "The reference to a condition-action last executed + or being executed."; + } + leaf last-condition { + type leafref { + path "../../condition-action/condition"; + } + description + "The reference to a condition last executed or being + executed."; + } + leaf last-action { + type leafref { + path "../../condition-action/action"; + } + description + "The reference to aa action last executed or being + executed."; + } + leaf last-cleanup-condition-action { + type leafref { + path "../../cleanup-condition-action/name"; + } + description + "The reference to a cleanup-condition-action last + executed or being executed."; + } + } + } + } // ecas + + container eca-scripts { + description + "Container of ECA Scripts."; + list eca-script { + key script-name; + description + "A list of ECA Script."; + leaf script-name { + type string; + description + "A string name to uniquely identify an ECA Script."; + } + list eca { + key eca-name; + description + "A list of ECAs contained in this ECA Script."; + leaf eca-name { + type leafref { + path "/gnca/ecas/eca/name"; + } + description + "The reference to a configured ECA."; + } + } + } + } // eca-scripts + + leaf running-script { + type leafref { + path "/gnca/eca-scripts/eca-script/script-name"; + } + description + "The reference to the ECA script that is currently running."; + } + } +} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-l2vpn-svc@2018-02-05.yang b/experimental/ietf-extracted-YANG-modules/ietf-l2vpn-svc@2018-02-05.yang index 23af689a1..16a8a6300 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-l2vpn-svc@2018-02-05.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-l2vpn-svc@2018-02-05.yang @@ -25,10 +25,10 @@ module ietf-l2vpn-svc { revision 2018-02-05 { description - "Initial revision -04 version"; + "Initial revision"; reference - "draft-ietf-l2sm-l2vpn-service-model-05.txt - A YANG Data Model for L2VPN Service Delivery."; + "RFC xxxx: A YANG Data Model for L2VPN Service + Delivery."; } feature carrierscarrier { diff --git a/experimental/ietf-extracted-YANG-modules/ietf-multicast-model@2018-02-22.yang b/experimental/ietf-extracted-YANG-modules/ietf-multicast-model@2018-02-22.yang new file mode 100644 index 000000000..fedded344 --- /dev/null +++ b/experimental/ietf-extracted-YANG-modules/ietf-multicast-model@2018-02-22.yang @@ -0,0 +1,444 @@ +module ietf-multicast-model { + + yang-version 1.1; + + namespace "urn:ietf:params:xml:ns:yang:ietf-multicast-model"; + prefix multicast-model; + + import ietf-inet-types { + prefix "inet"; + reference "RFC6991"; + } + + import ietf-routing-types { + prefix rt-types; + reference "RFC8294"; + } + + import ietf-bier { + prefix bier; + } + + organization " IETF MBONED( MBONE Deployment ) Working Group"; + contact + "WG List: + + Editor: Zheng Zhang + + Editor: Cui Wang + + Editor: Ying Cheng + + "; + description + "The module defines the YANG definitions for multicast service + management. + + Copyright (c) 2018 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 has relationship with overall multicast + technologies, such as PIM(RFC7761), BIER(RFC8279), MVPN(RFC6513), and so + on; see the RFC itself for full legal notices."; + + revision 2018-02-22 { + description + "Initial revision."; + reference + "RFC XXXX: A YANG Data Model for multicast YANG. + RFC 7761: Protocol Independent Multicast - Sparse Mode (PIM-SM): + Protocol Specification (Revised). + RFC 8279: Multicast Using Bit Index Explicit Replication (BIER); + RFC 6513: Multicast in MPLS/BGP IP VPNs"; + } + +/*key*/ + + typedef ip-multicast-source-address { + type union { + type rt-types:ipv4-multicast-source-address; + type rt-types:ipv6-multicast-source-address; + } + description + "This type represents a version-neutral IP multicast source + address. The format of the textual representation implies + the IP version."; + reference + "RFC8294: Common YANG Data Types for the Routing Area."; + } + + typedef virtual-type { + type enumeration { + enum "vxlan" { + description "The vxlan type. See more detail in RFC7348."; + } + enum "virtual subnet" { + description "The nvgre type. See more detail in RFC7637."; + } + enum "vni" { + description "The geneve type. See more detail in [ietf-nvo3-geneve]."; + } + } + description "The collection of virtual network type."; + } + + grouping general-multicast-key { + description "The general multicast keys. They are used to distinguish different multicast service."; + leaf vpn-rd { + type rt-types:route-distinguisher; + description "A Route Distinguisher used to distinguish routes from different MVPNs (RFC 6513)."; + reference + "RFC8294: Common YANG Data Types for the Routing Area."; + } + leaf source-address { + type ip-multicast-source-address; + description "The IPv4/IPv6 source address of multicast flow. The value set to zero means that the receiver interests in all source that relevant to one given group."; + } + leaf group-address { + type rt-types:ip-multicast-group-address; + description "The IPv4/IPv6 group address of multicast flow. This type represents a version-neutral IP multicast group address. The format of the textual representation implies the IP version."; + reference + "RFC8294: Common YANG Data Types for the Routing Area."; + } + leaf vni-type { + type virtual-type; + description "The type of virtual network identifier. Includes the Vxlan, NVGRE and Geneve. This value and vni-value is used to indicate a specific virtual multicast service."; + } + leaf vni-value { + type uint32; + description "The value of Vxlan network identifier, virtual subnet ID or virtual net identifier. This value and vni-type is used to indicate a specific virtual multicast service."; + } + } + +/*overlay*/ + + grouping overlay-technology { + leaf overlay-tech-type { + type enumeration { + enum mld { + description "MLD technology is used for multicast overlay. See more detail in [draft-ietf-bier-mld]"; + } + enum mvpn { + description "MVPN technology is used for multicast overlay. See more detail in RFC6513."; + } + enum bgp { + description "BGP technology is used for multicast overlay. See more detail in RFC7716."; + } + enum mld-snooping { + description "MLD snooping technology is used for multicast overlay. See more detail in RFC4541."; + } + } + description "The possible overlay technologies for multicast service."; + } + description "The possible overlay technologies for multicast service."; + } + + grouping multicast-overlay { + description "The multicast overlay information, includes ingress node and egress nodes' information."; + container ingress-egress { + description "The ingress and egress nodes address collection."; + leaf ingress-node { + type inet:ip-address; + description "The ip address of ingress node for one or more multicast flow. + Or the ingress node of MVPN and BIER. In MVPN, this is the address of ingress + PE; in BIER, this is the BFR-prefix of ingress nodes."; + } + + list egress-nodes { + key "egress-node"; + description "The egress multicast nodes of multicast flow. + Or the egress node of MVPN and BIER. In MVPN, this is the + address of egress PE; in BIER, this is the BFR-prefix of + ingress nodes."; + + leaf egress-node { + type inet:ip-address; + description + "The ip-address of egress multicast nodes. See more details in RFC6513."; + } + } + } + + container bier-ids { + description "The BFR-ids of ingress and egress BIER nodes for one or more multicast flows."; + leaf sub-domain { + type bier:sub-domain-id; + description "The sub-domain that this multicast flow belongs to. See more details in RFC8279."; + } + leaf ingress-node { + type bier:bfr-id; + description "The ingress node of multicast flow. This is the + BFR-id of ingress nodes. See more details in RFC8279."; + } + list egress-nodes { + key "egress-node"; + description "This ID information of one adjacency. See more details in RFC8279."; + + leaf egress-node { + type bier:bfr-id; + description "The BFR-ids of egress multicast BIER nodes. See more details in RFC8279."; + } + } + } + + uses overlay-technology; + } + +/*transport*/ + + grouping transport-pim { + description "The requirement information of pim transportion. PIM protocol is defined in RFC7761."; + leaf graceful-restart { + type boolean; + description "If the graceful restart function should be supported."; + } + leaf bfd { + type boolean; + description "If the bfd function should be supported."; + } + } + + grouping multicast-transport { + description "The transport information of multicast service."; + container bier { + description "The transport technology is BIER. The BIER technology is introduced in RFC8279. The parameter is consistent with the definition in [ietf-bier-bier-yang]."; + leaf sub-domain { + type bier:sub-domain-id; + description "The subdomain id that the multicast flow belongs to. See more details in RFC8279."; + } + choice encap-type { + case mpls { + description "The BIER forwarding depends on mpls. See more details in RFC8296."; + } + case eth { + description "The BIER forwarding depends on ethernet. See more details in RFC8296."; + } + case ipv6 { + description "The BIER forwarding depends on IPv6."; + } + description "The encapsulation type in BIER."; + } + leaf bitstringlength { + type bier:bsl; + description "The bitstringlength used by BIER forwarding. See more details in RFC8279."; + } + leaf set-identifier { + type bier:si; + description "The set identifier used by the multicast flow. See more details in RFC8279."; + } + leaf ecmp { + type boolean; + description "The capability of ECMP. If this value is set to true, ecmp mechanism should be enabled. See more details in RFC8279."; + } + leaf frr { + type boolean; + description "The capability of fast re-route. If this value is set to true, fast re-route mechanism should be enabled. See more details in RFC8279."; + } + } + container bier-te { + description "The transport technology is BIER-TE. BIER-TE technology is introduced in [ietf-bier-te-arch]."; + leaf sub-domain { + type bier:sub-domain-id; + description "The subdomain id that the multicast flow belongs to. See more details in [ietf-bier-te-arch]."; + } + choice encap-type { + case mpls { + description "The BIER-TE forwarding depends on mpls. See more details in [ietf-bier-te-arch]."; + } + case non-mpls { + description "The BIER-TE forwarding depends on non-mpls. See more details in [ietf-bier-te-arch]."; + } + description "The encapsulation type in BIER-TE."; + } + leaf bitstringlength { + type bier:bsl; + description "The bitstringlength used by BIER-TE forwarding. See more details in [ietf-bier-te-arch]."; + } + leaf set-identifier { + type bier:si; + description "The set identifier used by the multicast flow, especially in BIER TE. See more details in [ietf-bier-te-arch]."; + } + leaf ecmp { + type boolean; + description "The capability of ECMP. If this value is set to true, ecmp mechanism should be enabled. See more details in [ietf-bier-te-arch]."; + } + leaf frr { + type boolean; + description "The capability of fast re-route. If this value is set to true, fast re-route mechanism should be enabled. See more details in [ietf-eckert-bier-te-frr]."; + } + } + container cisco-mode { + description "The transport technology is cisco-mode. The Cisco MDT multicast mechanism is defined in RFC6037."; + leaf p-group { + type rt-types:ip-multicast-group-address; + description "The address of p-group. It is used to encapsulate and forward flow according to multicast tree from ingress node to egress nodes."; + } + uses transport-pim; + } + container mpls { + description "The transport technology is mpls. MVPN overlay can use mpls tunnel technologies to build transport layer. The usage is introduced in RFC6513."; + choice mpls-tunnel-type { + case mldp { + description "The mldp tunnel. The protocol detail is defined in RFC6388."; + leaf mldp-tunnel-id { + type uint32; + description "The tunnel id that correspond this flow. The detail is defined in RFC6388."; + } + leaf mldp-frr { + type boolean; + description "If the fast re-route function should be supported. The detail is defined in RFC6388."; + } + leaf mldp-backup-tunnel { + type boolean; + description "If the backup tunnel function should be supported. The detail is defined in RFC6388."; + } + } + case p2mp-te { + description "The p2mp te tunnel. The protocol detail is defined in RFC4875."; + leaf te-tunnel-id { + type uint32; + description "The tunnel id that correspond this flow. The detail is defined in RFC4875."; + } + leaf te-frr { + type boolean; + description "If the fast re-route function should be supported. The detail is defined in RFC4875."; + } + leaf te-backup-tunnel { + type boolean; + description "If the backup tunnel function should be supported. The detail is defined in RFC4875."; + } + } + description "The collection types of mpls tunnels"; + } + } + container pim { + uses transport-pim; + description "The transport technology is PIM. PIM [RFC7761] is used commonly in traditional network."; + } + } + +/*underlay*/ + + grouping multicast-underlay { + description "The underlay information relevant multicast service. Underlay protocols are used to build transport layer. It is unnecessary in traditional network that use PIM [RFC7761] to build multicast tree. Diversity underlay protocols can be choosed to build BIER transport layer."; + leaf underlay-requirement { + type boolean; + description "If the underlay technology is required."; + } + container bgp { + description "The underlay technology is BGP. BGP protocol RFC4271 should be triggered to run if BGP is used as underlay protocol."; + } + container ospf { + description "The underlay technology is OSPF. OSPF protocol RFC2328 should be triggered to run if OSPF is used as underlay protocol."; + leaf topology-id { + type uint8; + description "The topology id of ospf instance. The topology id can be assigned In some situations. More details is defined in RFC2328."; + } + } + container isis { + description "The underlay technology is ISIS. ISIS protocol should be triggered to run if ISIS is used as underlay protocol. Details is defined in RFC1195."; + leaf topology-id { + type uint16; + description "The topology id of isis instance. The topology id can be assigned In some situations."; + } + } + container babel { + description "The underlay technology is Babel. Babel protocol should be triggered to run if Babel is used as underlay protocol."; + } + } + + container multicast-model { + description "The model of multicast YANG data. Include keys, overlay, transport and underlay."; + + list multicast-keys{ + key "vpn-rd source-address group-address vni-type vni-value"; + uses general-multicast-key; + + container multicast-overlay { + description "The overlay information of multicast service. Overlay technology is used to exchange multicast flows information. Overlay technology may not be used in SDN controlled completely situation, but it can be used in partial SDN controlled situation or non-SDN controlled situation. Different overlay technology can be choosed according to different deploy consideration."; + uses multicast-overlay; + } + container multicast-transport { + description "The transportion of multicast service. Transport protocol is responsible for delivering multicast flows from ingress nodes to egress nodes with or without specific encapsulation. Different transport technology can be choosed according to different deploy consideration. Once a transport technology is choosed, associated protocol should be triggered to run."; + uses multicast-transport; + } + container multicast-underlay { + description "The underlay of multicast service. Underlay protocol is used to build transport layer. Underlay protocol need not be assigned in ordinary network since existed underlay protocol fits well, but it can be assigned in particular networks for better controlling. Once a underlay technology is choosed, associated protocol should be triggered to run."; + uses multicast-underlay; + } + description "The model of multicast YANG data. Include keys, overlay, transport and underlay."; + } + } + +/*Notifications*/ + + notification head-end-event { + leaf event-type { + type enumeration { + enum down { + description "There is something wrong with head end node, and head end node can't work properlay."; + } + enum module-loaded { + description "Some new modules that can be used by multicast flows finish loading."; + } + enum module-unloaded { + description "Some new modules that can be used by multicast flows have been unloaded."; + } + } + description "Event type."; + } + container multicast-key { + uses general-multicast-key; + description "The associated multicast keys that are influenced by head end node failer."; + } + uses overlay-technology; + + leaf transport-tech { + type enumeration { + enum bier { + description "BIER(RFC8279) technology can be used to forward multicast flows."; + } + enum bier-te { + description "BIER-TE(draft-ietf-bier-te-arch) technology can be used to forward multicast flows."; + } + enum cisco-mode { + description "Cisco mode(RFC6037) technology can be used to forward multicast flows."; + } + enum mldp { + description "MLDP(RFC6388) technology can be used to forward multicast flows."; + } + enum p2mp-te { + description "P2MP TE(RFC4875) technology can be used to forward multicast flows."; + } + enum pim { + description "PIM(RFC7761) technology can be used to forward multicast flows."; + } + } + description "The modules can be used to forward multicast flows."; + } + leaf underlay-tech { + type enumeration { + enum bgp { + description "BGP protocol can be used to build multicast transport layer."; + } + enum ospf { + description "OSPF protocol can be used to build multicast transport layer."; + } + enum isis { + description "ISIS protocol can be used to build multicast transport layer."; + } + enum babel { + description "Babel protocol can be used to build multicast transport layer."; + } + } + description "The modules can be used to build multicast transport layer."; + } + description "Notification events for the head end nodes. Like head node failer, overlay/ transport/ underlay module loading/ unloading. And the potential failer about some multicast flows and associated overlay/ transport/ underlay technologies."; + } +} diff --git a/experimental/ietf-extracted-YANG-modules/ietf-nat@2018-02-06.yang b/experimental/ietf-extracted-YANG-modules/ietf-nat@2018-02-23.yang similarity index 96% rename from experimental/ietf-extracted-YANG-modules/ietf-nat@2018-02-06.yang rename to experimental/ietf-extracted-YANG-modules/ietf-nat@2018-02-23.yang index a6131f944..fae76288c 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-nat@2018-02-06.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-nat@2018-02-23.yang @@ -1,8 +1,6 @@ module ietf-nat { yang-version 1.1; namespace "urn:ietf:params:xml:ns:yang:ietf-nat"; - - //namespace to be assigned by IANA prefix "nat"; import ietf-inet-types { prefix inet; } @@ -19,12 +17,12 @@ module ietf-nat { Editor: Mohamed Boucadair - Editor: Senthil Sivakumar Editor: Christian Jacquenet + Editor: Suresh Vinapamula @@ -36,8 +34,9 @@ module ietf-nat { NAT44, Network Address and Protocol Translation from IPv6 Clients to IPv4 Servers (NAT64), Customer-side transLATor (CLAT), - Stateless IP/ICMP Translation (SIIT), and Explicit Address Mappings - for Stateless IP/ICMP Translation (SIIT EAM) are covered. + Stateless IP/ICMP Translation (SIIT), Explicit Address Mappings + for Stateless IP/ICMP Translation (SIIT EAM), IPv6 Network + Prefix Translation (NPTv6), and Destination NAT are covered. Copyright (c) 2018 IETF Trust and the persons identified as authors of the code. All rights reserved. @@ -52,12 +51,12 @@ module ietf-nat { This version of this YANG module is part of RFC XXXX; see the RFC itself for full legal notices."; - revision 2018-02-06 { + revision 2018-02-23 { description "Initial revision."; reference "RFC XXXX: A YANG Module for Network Address Translation - (NAT)"; + (NAT) and Network Prefix Translation (NPT)"; } /* @@ -162,6 +161,13 @@ module ietf-nat { "RFC 7757: Explicit Address Mappings for Stateless IP/ICMP Translation"; } + feature nptv6 { + description + "NPTv6 is a stateless transport-agnostic IPv6-to-IPv6 + prefix translation."; + reference + "RFC 6296: IPv6-to-IPv6 Network Prefix Translation"; + } /* * Identities @@ -231,6 +237,14 @@ module ietf-nat { Translation"; } + identity nptv6 { + base nat:nat-type; + description + "Identity for NPTv6 support."; + reference + "RFC 6296: IPv6-to-IPv6 Network Prefix Translation"; + } + /* * Grouping */ @@ -239,12 +253,12 @@ module ietf-nat { description "Individual port or a range of ports. When only start-port-number is present, - it represents a single port."; + it represents a single port number."; leaf start-port-number { type inet:port-number; description - "Begining of the port range."; + "Beginning of the port range."; reference "Section 3.2.9 of RFC 8045."; } @@ -361,6 +375,7 @@ module ietf-nat { description "This mapping is created implicitly as a side effect of processing a packet that requires a new mapping."; + } enum "dynamic-explicit" { @@ -482,7 +497,6 @@ module ietf-nat { TCP is completed) or the duration for maintaining an explicit mapping alive. The mapping entry will be removed by the NAT instance once this lifetime is expired. - When reported in a get operation, the lifetime indicates the remaining validity lifetime. @@ -793,6 +807,7 @@ module ietf-nat { "The NAT instance is able to associate a mapping with a layer-2 identifier."; } + enum "dslite" { description "The NAT instance is able to associate a mapping with @@ -818,7 +833,6 @@ module ietf-nat { list nat-pass-through { if-feature "basic-nat44 or napt44 or dst-nat"; key id; - description "IP prefix NAT pass through."; @@ -928,6 +942,41 @@ module ietf-nat { } } + list nptv6-prefixes { + if-feature nptv6; + key internal-ipv6-prefix ; + description + "Provides one or a list of (internal IPv6 prefix, + external IPv6 prefix) required for NPTv6. + + In its simplest form, NPTv6 interconnects two network + links, one of which is an 'internal' network link + attached to a leaf network within a single + administrative domain and the other of which is an + 'external' network with connectivity to the global + Internet."; + reference + "RFC 6296: IPv6-to-IPv6 Network Prefix Translation"; + + leaf internal-ipv6-prefix { + type inet:ipv6-prefix; + mandatory true; + description + "An IPv6 prefix used by an internal interface of NPTv6."; + reference + "RFC 6296: IPv6-to-IPv6 Network Prefix Translation"; + } + + leaf external-ipv6-prefix { + type inet:ipv6-prefix; + mandatory true; + description + "An IPv6 prefix used by the external interface of NPTv6."; + reference + "RFC 6296: IPv6-to-IPv6 Network Prefix Translation"; + } + } + list eam { if-feature eam; key ipv4-prefix; @@ -1552,7 +1601,6 @@ module ietf-nat { Ports in the hold down pool are not reassigned until hold-down-timeout expires. - The length of time and the maximum number of ports in this state must be configurable by the administrator. @@ -1705,6 +1753,7 @@ module ietf-nat { } } } + container mapping-limits { if-feature "napt44 or nat64"; description @@ -1723,7 +1772,7 @@ module ietf-nat { Network Address Translators (NATs)"; } - leaf limit-address-mapings { + leaf limit-address-mappings { type uint32; description "Maximum number of address mappings that can be @@ -1753,6 +1802,7 @@ module ietf-nat { list limit-per-protocol { if-feature "napt44 or nat64 or dst-nat"; key protocol-id; + description "Configure limits per transport protocol"; @@ -1801,6 +1851,7 @@ module ietf-nat { "Rate-limit the number of new mappings and sessions per instance."; } + list limit-per-protocol { if-feature "napt44 or nat64"; key protocol-id; @@ -1901,6 +1952,8 @@ module ietf-nat { } container mapping-table { + if-feature "basic-nat44 or napt44 " + + "or nat64 or clat or dst-nat"; description "NAT mapping table. Applicable for functions which maintain static and/or dynamic mappings, such as NAT44, Destination @@ -1932,7 +1985,6 @@ module ietf-nat { container traffic-statistics { description "Generic traffic statistics."; - leaf sent-packets { type yang:zero-based-counter64; description @@ -1945,6 +1997,7 @@ module ietf-nat { description "Counter for sent traffic in bytes."; } + leaf rcvd-packets { type yang:zero-based-counter64; description @@ -2028,7 +2081,6 @@ module ietf-nat { "Counter of dropped packets because a port limit is reached, in bytes."; } - leaf dropped-port-packets { if-feature "napt44 or nat64"; type yang:zero-based-counter64; @@ -2081,6 +2133,8 @@ module ietf-nat { } leaf total-address-mappings { + if-feature "basic-nat44 or napt44 " + + "or nat64 or clat or dst-nat"; type yang:gauge32; description "Total number of address mappings present at a given @@ -2267,7 +2321,6 @@ module ietf-nat { description "Pool Identifier."; } - leaf notify-pool-threshold { type percent; mandatory true; diff --git a/experimental/ietf-extracted-YANG-modules/ietf-nmda-compare@2017-10-30.yang b/experimental/ietf-extracted-YANG-modules/ietf-nmda-compare@2018-02-23.yang similarity index 91% rename from experimental/ietf-extracted-YANG-modules/ietf-nmda-compare@2017-10-30.yang rename to experimental/ietf-extracted-YANG-modules/ietf-nmda-compare@2018-02-23.yang index 520d767e5..f12fdcd8a 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-nmda-compare@2017-10-30.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-nmda-compare@2018-02-23.yang @@ -36,7 +36,7 @@ module ietf-nmda-compare { "The YANG data model defines a new operation, , that can be used to compare NMDA datastores."; - revision 2017-10-30 { + revision 2018-02-23 { description "Initial revision"; reference @@ -108,7 +108,10 @@ module ietf-nmda-compare { container differences { uses ypatch:yang-patch; description - "The list of differences, encoded per RFC8072."; + "The list of differences, encoded per RFC8072, with + a value for patch-id and values for edit-id generated + by the server. If there are no differences, an + empty container is returned."; } } } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-subscribed-notifications@2018-01-25.yang b/experimental/ietf-extracted-YANG-modules/ietf-subscribed-notifications@2018-02-23.yang similarity index 99% rename from experimental/ietf-extracted-YANG-modules/ietf-subscribed-notifications@2018-01-25.yang rename to experimental/ietf-extracted-YANG-modules/ietf-subscribed-notifications@2018-02-23.yang index ce3d8bf7c..ae11aa841 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-subscribed-notifications@2018-01-25.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-subscribed-notifications@2018-02-23.yang @@ -45,11 +45,11 @@ module ietf-subscribed-notifications { "Contains a YANG specification for subscribing to event records and receiving matching content within notification messages."; - revision 2018-01-25 { + revision 2018-02-23 { description "Initial version"; reference - "draft-ietf-netconf-subscribed-notifications-09"; + "draft-ietf-netconf-subscribed-notifications-10"; } /* @@ -458,9 +458,7 @@ module ietf-subscribed-notifications { description "Identifies the source of information against which a subscription is being applied, as well as specifics on the - subset of information desired from that source. This choice - exists so that additional filter types can be added via - augmentation."; + subset of information desired from that source."; case stream { choice stream-filter { description @@ -502,7 +500,7 @@ module ietf-subscribed-notifications { grouping subscription-policy-dynamic { description "This grouping describes information concerning a subscription - which can be passed over the RPCs defined in this model."; + which can just be passed over the RPCs defined in this model."; leaf encoding { type encoding; mandatory true; diff --git a/experimental/ietf-extracted-YANG-modules/ietf-syslog@2018-02-14.yang b/experimental/ietf-extracted-YANG-modules/ietf-syslog@2018-02-21.yang similarity index 98% rename from experimental/ietf-extracted-YANG-modules/ietf-syslog@2018-02-14.yang rename to experimental/ietf-extracted-YANG-modules/ietf-syslog@2018-02-21.yang index ed849e4aa..9b2318e9f 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-syslog@2018-02-14.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-syslog@2018-02-21.yang @@ -65,7 +65,7 @@ module ietf-syslog { (http://tools.ietf.org/html/rfczzzz); see the RFC itself for full legal notices."; - revision 2018-02-14 { + revision 2018-02-21 { description "Initial Revision"; reference @@ -629,11 +629,11 @@ module ietf-syslog { leaf retention { if-feature file-limit-duration; type uint32; - units "hours"; + units "minutes"; description "This leaf specifies the length of time that completed/closed log event files should be stored - in the file system before they are deleted."; + in the file system before they are removed."; } } } @@ -727,9 +727,7 @@ module ietf-syslog { description "This leaf sets the source interface to be used to send messages to the remote syslog server. If not - set, messages sent to a remote syslog server will - contain the IP address of the interface the syslog - message uses to exit the network element"; + set, messages can be sent on any interface."; } container signing { if-feature signed-messages; diff --git a/experimental/ietf-extracted-YANG-modules/ietf-te-service-mapping@2017-10-27.yang b/experimental/ietf-extracted-YANG-modules/ietf-te-service-mapping@2018-02-21.yang similarity index 58% rename from experimental/ietf-extracted-YANG-modules/ietf-te-service-mapping@2017-10-27.yang rename to experimental/ietf-extracted-YANG-modules/ietf-te-service-mapping@2018-02-21.yang index d76a41498..bf013b014 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-te-service-mapping@2017-10-27.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-te-service-mapping@2018-02-21.yang @@ -1,84 +1,82 @@ module ietf-te-service-mapping { - namespace "urn:ietf:params:xml:ns:yang:ietf-te-service-mapping"; - prefix "tm"; + namespace "urn:ietf:params:xml:ns:yang:ietf-te-service-mapping"; - import ietf-l3vpn-svc { - prefix "l3"; - } + prefix "tm"; - import ietf-l2vpn-svc { - prefix "l2"; - } - - import ietf-l1csm { - prefix "l1"; - } + import ietf-l3vpn-svc { + prefix "l3"; + } - import ietf-te { - prefix "te"; - } + import ietf-l2vpn-svc { + prefix "l2"; + } - import ietf-actn-vn { - prefix "vn"; - } + import ietf-l1csm { + prefix "l1"; + } - organization - "IETF Traffic Engineering Architecture and Signaling (TEAS) - Working Group"; + import ietf-actn-vn { + prefix "vn"; + } - contact - "Editor: Young Lee - Dhruv Dhody "; - description - "This module contains a YANG module for the mapping of - service (e.g. L3VPN) to the TE tunnels or ACTN VN."; + organization + "IETF Traffic Engineering Architecture and Signaling (TEAS) + Working Group"; - revision 2017-10-27 { - description - "initial version."; - reference - "TBD"; - } + contact + "Editor: Young Lee + Dhruv Dhody "; + description + "This module contains a YANG module for the mapping of + service (e.g. L3VPN) to the TE tunnels or ACTN VN."; - /* - * Identities - */ - identity service-type { - description - "Base identity from which specific service types are - derived."; - } + revision 2018-02-21 { + description + "initial version."; + reference + "TBD"; + } - identity l3vpn-service { - base service-type; - description - "L3VPN service type."; - } + /* + * Identities + */ + identity service-type { + description + "Base identity from which specific service types are + derived."; + } - identity l2vpn-service { - base service-type; - description - "L2VPN service type."; - } + identity l3vpn-service { + base service-type; + description + "L3VPN service type."; + } - identity l1vpn-service { - base service-type; - description - "L1VPN connectivity service type."; - } - /* - * Enum - */ - typedef map-type { - type enumeration { - enum "new" { - description - "The new VN/tunnels are binded to the service"; - } - enum "select" { - description - "The VPN service selects an existing tunnel with no + identity l2vpn-service { + base service-type; + description + "L2VPN service type."; + } + identity l1vpn-service { + base service-type; + description + "L1VPN connectivity service type."; + } + /* + * Enum + */ + typedef map-type { + type enumeration { + enum "new" { + description + "The new VN/tunnels are binded to the service. Customer +could request a VN with a new VN/Tunnel not shared with other existing +services. This is to meet VPN isolation requirement. "; + } + enum "select" { + description + "The VPN service selects an existing tunnel with no modification"; } enum "modify" { @@ -90,6 +88,7 @@ to modify the properties of the tunnel (e.g., b/w) "; description "The map-type"; } + /* * Groupings */ @@ -177,53 +176,28 @@ Model"; } } - grouping te-ref { + grouping actn-vn-ref { description - "The reference to TE."; - choice te { - description - "The TE"; - case actn-vn { - leaf actn-vn-ref { - type leafref { - path "/vn:actn/vn:vn/vn:vn-list/vn:vn-id"; - } - description - "The reference to ACTN VN"; - } - } - case te { - leaf-list te-tunnel-list { - type te:tunnel-ref; - description - "Reference to TE Tunnels"; - } - } - + "The reference to ACTN VN."; + leaf actn-vn-ref { + type leafref { + path "/vn:actn/vn:vn/vn:vn-list/vn:vn-id"; + } + description + "The reference to ACTN VN"; } - } - grouping te-endpoint-ref { + grouping actn-ap-ref { description - "The reference to TE endpoints."; - choice te { - description - "The TE"; - case actn-vn { - leaf actn-vn-ref { - type leafref { - path "/vn:actn/vn:ap/vn:access-point-list" + "The reference to ACTN endpoints (AP)."; + leaf actn-ap-ref { + type leafref { + path "/vn:actn/vn:ap/vn:access-point-list" + "/vn:access-point-id"; - } - description - "The reference to ACTN VN"; - } - } - case te { - /*should we refer to Te-topology or Te-tunnel's - endpoint(?)*/ - } + } + description + "The reference to ACTN AP"; } } @@ -250,18 +224,16 @@ Model"; } uses service-ref; - uses te-ref; + uses actn-vn-ref ; } } } grouping site-mapping { description - "Mapping between VPN access site and TE - endpoints or AP"; + "Mapping between VPN access site and ACTN AP"; container site-mapping { description - "Mapping between VPN access site and TE - endpoints or AP"; + "Mapping between VPN access site and ACTN AP"; list mapping-list { key "map-id"; description @@ -273,7 +245,7 @@ Model"; } uses site-ref; - uses te-endpoint-ref; + uses actn-ap-ref ; } } diff --git a/experimental/ietf-extracted-YANG-modules/ietf-te-topology@2018-02-08.yang b/experimental/ietf-extracted-YANG-modules/ietf-te-topology@2018-02-21.yang similarity index 99% rename from experimental/ietf-extracted-YANG-modules/ietf-te-topology@2018-02-08.yang rename to experimental/ietf-extracted-YANG-modules/ietf-te-topology@2018-02-21.yang index f5773b7a4..cae616a76 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-te-topology@2018-02-08.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-te-topology@2018-02-21.yang @@ -66,7 +66,7 @@ module ietf-te-topology { This version of this YANG module is part of RFC XXXX; see the RFC itself for full legal notices."; - revision "2018-02-08" { + revision "2018-02-21" { description "Initial revision"; reference "RFC XXXX: YANG Data Model for TE Topologies"; // RFC Ed.: replace XXXX with actual RFC number and remove @@ -369,7 +369,6 @@ module ietf-te-topology { "Statistics attributes per TE link."; leaf discontinuity-time { type yang:date-and-time; - mandatory true; description "The time on the most recent occasion at which any one or more of this interface's counters suffered a @@ -481,7 +480,6 @@ module ietf-te-topology { "Statistics attributes per TE node."; leaf discontinuity-time { type yang:date-and-time; - mandatory true; description "The time on the most recent occasion at which any one or more of this interface's counters suffered a @@ -565,7 +563,6 @@ module ietf-te-topology { "Statistics attributes per TE TTP (Tunnel Termination Point)."; leaf discontinuity-time { type yang:date-and-time; - mandatory true; description "The time on the most recent occasion at which any one or more of this interface's counters suffered a @@ -859,6 +856,7 @@ module ietf-te-topology { "RFC4202: Routing Extensions in Support of Generalized Multi-Protocol Label Switching (GMPLS)."; } + container max-link-bandwidth { uses te-types:te-bandwidth; description @@ -1230,7 +1228,6 @@ module ietf-te-topology { } uses te-node-config-attributes; } // te-node-config - grouping te-node-config-attributes { description "Configuration node attributes in a TE topology."; container te-node-attributes { @@ -1517,7 +1514,6 @@ module ietf-te-topology { reference "RFC6001: Generalized MPLS (GMPLS) Protocol Extensions for Multi-Layer and Multi-Region Networks (MLN/MRN)."; - leaf link-tp-ref { type leafref { path "../../../../../nt:termination-point/nt:tp-id"; diff --git a/experimental/ietf-extracted-YANG-modules/ietf-vrrp@2018-01-09.yang b/experimental/ietf-extracted-YANG-modules/ietf-vrrp@2018-01-09.yang index 7b3bd8fb6..050021535 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-vrrp@2018-01-09.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-vrrp@2018-01-09.yang @@ -727,7 +727,6 @@ module ietf-vrrp { "Calculated based on the priority and advertisement interval configuration command parameters. See RFC 3768."; } - leaf last-event { type identityref { base vrrp:vrrp-event-type; @@ -920,7 +919,6 @@ module ietf-vrrp { } } } // augment ipv4 - augment "/if:interfaces/if:interface/ip:ipv6" { description "Augment IPv6 interface."; diff --git a/experimental/ietf-extracted-YANG-modules/ietf-yang-push@2018-02-05.yang b/experimental/ietf-extracted-YANG-modules/ietf-yang-push@2018-02-23.yang similarity index 91% rename from experimental/ietf-extracted-YANG-modules/ietf-yang-push@2018-02-05.yang rename to experimental/ietf-extracted-YANG-modules/ietf-yang-push@2018-02-23.yang index 1b5f1942a..3f5a2ea37 100644 --- a/experimental/ietf-extracted-YANG-modules/ietf-yang-push@2018-02-05.yang +++ b/experimental/ietf-extracted-YANG-modules/ietf-yang-push@2018-02-23.yang @@ -45,11 +45,11 @@ module ietf-yang-push { description "This module contains YANG specifications for YANG push."; - revision 2018-02-05 { + revision 2018-02-23 { description "Initial revision."; reference - "draft-ietf-netconf-yang-push-13"; + "draft-ietf-netconf-yang-push-15"; } /* @@ -71,7 +71,7 @@ module ietf-yang-push { identity resynch-subscription-error { description "Problem found while attempting to fulfill an - 'resynch-subscription' rpc request. "; + 'resynch-subscription' RPC request. "; } identity cant-exclude { @@ -127,9 +127,8 @@ module ietf-yang-push { periodic and on-change subscriptions (with or without dampening.) - Hints suggesting an acceptable period setting may be returned - as supplemental information in a corresponding RPC error - response, as applicable."; + Hints suggesting alternative periods may be returned as + supplemental information when this expressed."; } identity result-too-big { @@ -137,12 +136,9 @@ module ietf-yang-push { base sn:modify-subscription-error; base sn:subscription-suspended-reason; description - "Periodic or on-change push update datatrees exceed a maximum - size limit. - - Hints on a parameter setting that would result in a reasonable - size may be returned as supplemental information in a - corresponding RPC error response, as applicable."; + "Periodic or on-change push update datatrees exceed a maximum size + limit. Hints on estimated size of what was too big may be + returned as supplemental information when this expressed."; } identity synchronization-size { @@ -154,9 +150,8 @@ module ietf-yang-push { "Synch-on-start or resynchronization datatree exceeds a maximum size limit. - Hints on a parameter setting that would result in a reasonable - size may be returned as supplemental information in a - corresponding RPC error response, as applicable."; + Where this identity is referenced as an 'error-app-tag' within an + RPC response, the response's 'error-info' may contain:"; } identity unchanging-selection { @@ -182,12 +177,12 @@ module ietf-yang-push { enum "create" { description "Create a new data resource if it does not already exist. If - it already exists, replace."; + it already exists, replace it."; } enum "delete" { description "Delete a data resource if it already exists. If it does not - exists, take no action."; + exist, take no action."; } enum "insert" { description @@ -250,7 +245,7 @@ module ietf-yang-push { grouping selection-filter-types { description - "This grouping defines a selector for objects from a + "This grouping defines the types of selectors for objects from a datastore."; choice filter-spec { description @@ -293,7 +288,7 @@ module ietf-yang-push { description "This grouping defines a selector for objects from a datastore."; - choice selected-content { + choice selection-filter { description "The source of the selection filter applied to the subscription. This will come either referenced from a global list, or be @@ -340,10 +335,7 @@ module ietf-yang-push { mandatory true; description "Duration of time which should occur between periodic - push updates. Where the anchor-time is - available, the push will include the objects and their - values which exist at an exact multiple of timeticks - aligning to this start-time anchor."; + push updates."; } leaf anchor-time { type yang:date-and-time; @@ -404,8 +396,7 @@ module ietf-yang-push { notifications are sent. When absent (default behavior), in order to facilitate a receiver's synchronization, a full update is sent when the subscription starts using a - push-update notification, just like in the case of a - periodic subscription. After that, push-change-update + push-update notification. After that, push-change-update notifications are exclusively sent unless the publisher chooses to resynch the subscription via a new push-update notification."; @@ -423,7 +414,7 @@ module ietf-yang-push { grouping hints { description - "Parameters associated with some error on for a subscription made + "Parameters associated with some error for a subscription made upon a datastore."; leaf period-hint { type yang:timeticks; @@ -477,10 +468,10 @@ module ietf-yang-push { if-feature "on-change"; description "This RPC allows a subscriber of an active on-change - subscription to request a full push of objects in there current - state. A successful result would be the set of YANG objects - equivalent to a Get using the existing selection criteria. This - request may only come from the same subscriber using the + subscription to request a full push of objects in their current + state. A successful result would invoke a push-update of all + datastore objects that the subscriber is permitted to access. + This request may only come from the same subscriber using the establish-subscription RPC."; input { leaf identifier { @@ -522,9 +513,8 @@ module ietf-yang-push { augment "/sn:establish-subscription/sn:input/sn:target" { description - "This augmentation adds the datastore as a valid parameter object - for the subscription to RPC input. This provides a target for - the filter."; + "This augmentation adds the datastore as a valid target + for the subscription to RPC input."; case datastore { description "Information specifying the parameters of an request for a @@ -564,9 +554,8 @@ module ietf-yang-push { augment "/sn:modify-subscription/sn:input/sn:target" { description - "This augmentation adds the datastore as a valid parameter object - for the subscription to RPC input. This provides a target for - the filter."; + "This augmentation adds the datastore as a valid target + for the subscription to RPC input."; case datastore { description "Information specifying the parameters of an request for a @@ -614,7 +603,7 @@ module ietf-yang-push { "This references the subscription which drove the notification to be sent."; } - leaf updates-not-sent { + leaf incomplete-update { type empty; description "This is a flag which indicates that not all datastore nodes @@ -647,7 +636,7 @@ module ietf-yang-push { "This references the subscription which drove the notification to be sent."; } - leaf updates-not-sent { + leaf incomplete-update { type empty; description "The presence of this object indicates not all changes which @@ -685,10 +674,10 @@ module ietf-yang-push { of the notification that a subscription has started."; case datastore { uses datastore-criteria { - refine "selected-content/within-subscription" { + refine "selection-filter/within-subscription" { description - "Specifies where the selection filter, and where came from - within the subscription and then populated within this + "Specifies where the selection filter, and where it came + from within the subscription and then populated within this notification. If the 'selection-filter-ref' is populated, the filter within the subscription came from the 'filters' container. Otherwise it is populated in-line as part of the @@ -710,10 +699,10 @@ module ietf-yang-push { of the notification that a subscription has been modified."; case datastore { uses datastore-criteria { - refine "selected-content/within-subscription" { + refine "selection-filter/within-subscription" { description - "Specifies where the selection filter, and where came from - within the subscription and then populated within this + "Specifies where the selection filter, and where it came + from within the subscription and then populated within this notification. If the 'selection-filter-ref' is populated, the filter within the subscription came from the 'filters' container. Otherwise it is populated in-line as part of the